$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))
'$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;
$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
//
$contact_id = 0;
$owner_uid = $a->data['user']['uid'];
+ $nick = $a->data['user']['nickname'];
if(is_array($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $v) {
return;
}
- $sql_extra = item_permissions_sql($owner_uid,$remote_contact,$groups);
+ // get the permissions
+ $sql_perms = item_permissions_sql($owner_uid,$remote_contact,$groups);
+ // we only want to have the events of the profile owner
+ $sql_extra = " AND `event`.`cid` = 0 " . $sql_perms;
// get the tab navigation bar
$tabs .= profile_tabs($a,false, $a->data['user']['nickname']);
return $o;
}
+
+ if($mode == 'export') {
+ if(! (intval($owner_uid))) {
+ notice( t('User not found'));
+ return;
+ }
+
+ // Test permissions
+ // Respect the export feature setting for all other /cal pages if it's not the own profile
+ if( ((local_user() !== intval($owner_uid))) && ! feature_enabled($owner_uid, "export_calendar")) {
+ notice( t('Permission denied.') . EOL);
+ goaway('cal/' . $nick);
+ }
+
+ // Get the export data by uid
+ $evexport = event_export($owner_uid, $format);
+
+ if (!$evexport["success"]) {
+ if($evexport["content"])
+ notice( t('This calendar format is not supported') );
+ else
+ notice( t('No exportable data found'));
+
+ // If it the own calendar return to the events page
+ // otherwise to the profile calendar page
+ if (local_user() === intval($owner_uid))
+ $return_path = "events";
+ else
+ $returnpath = "cal/".$nick;
+
+ goaway($return_path);
+ }
+
+ // If nothing went wrong we can echo the export content
+ if ($evexport["success"]) {
+ header('Content-type: text/calendar');
+ header('content-disposition: attachment; filename="' . t('calendar') . '-' . $nick . '.' . $evexport["extension"] . '"' );
+ echo $evexport["content"];
+ killme();
+ }
+
+ return;
+ }
}