move the cal addon (exporting calendars) to core

This commit is contained in:
rabuzarus 2016-06-20 23:31:49 +02:00
commit 71c9f562ae
5 changed files with 298 additions and 2 deletions

View file

@ -33,6 +33,11 @@ function cal_init(&$a) {
$a->data['user'] = $user[0];
$a->profile_uid = $user[0]['uid'];
// if it's a json request abort here becaus we don't
// need the widget data
if ($a->argv[2] === 'json')
return;
$profile = get_profiledata_by_nick($nick, $a->profile_uid);
if((intval($profile['page-flags']) == PAGE_COMMUNITY) || (intval($profile['page-flags']) == PAGE_PRVGROUP))
@ -50,10 +55,13 @@ function cal_init(&$a) {
'$pdesc' => (($profile['pdesc'] != "") ? $profile['pdesc'] : ""),
));
$cal_widget = widget_events();
if(! x($a->page,'aside'))
$a->page['aside'] = '';
$a->page['aside'] .= $vcard_widget;
$a->page['aside'] .= $cal_widget;
}
return;
@ -95,6 +103,13 @@ function cal_content(&$a) {
$m = 0;
$ignored = ((x($_REQUEST,'ignored')) ? intval($_REQUEST['ignored']) : 0);
if($a->argc == 4) {
if($a->argv[2] == 'export') {
$mode = 'export';
$format = $a->argv[3];
}
}
//
// Setup permissions structures
//
@ -104,6 +119,7 @@ function cal_content(&$a) {
$contact_id = 0;
$owner_uid = $a->data['user']['uid'];
$nick = $a->data['user']['nickname'];
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $v) {
@ -276,4 +292,38 @@ function cal_content(&$a) {
return $o;
}
if($mode == 'export') {
if(! (intval($owner_uid))) {
notice( t('User not found'));
return;
}
if(! (feature_enabled($owner_uid, "export_calendar"))) {
notice( t('Permission denied.') . EOL);
return;
}
// Get the export data by uid
$evexport = event_export($owner_uid, $format);
if ($evexport["success"] == false ) {
if($evexport["content"])
notice( t('This calendar format is not supported') );
else
notice( t('No exportable data found'));
return;
}
// If nothing went wrong we can echo the export content
if ($evexport["success"] == true ) {
header('Content-type: text/calendar');
header('content-disposition: attachment; filename="' . t('calendar') . '-' . $nick . '.' . $evexport["extension"] . '"' );
echo $evexport["content"];
killme();
}
return;
}
}

View file

@ -8,6 +8,27 @@ require_once('include/datetime.php');
require_once('include/event.php');
require_once('include/items.php');
function events_init(&$a) {
if(! local_user())
return;
if($a->argc == 1) {
// if it's a json request abort here becaus we don't
// need the widget data
if($a->argv[1] !== 'json')
return;
$cal_widget = widget_events();
if(! x($a->page,'aside'))
$a->page['aside'] = '';
$a->page['aside'] .= $cal_widget;
}
return;
}
function events_post(&$a) {
logger('post: ' . print_r($_REQUEST,true));