require_once('include/event.php');
require_once('include/redir.php');
-function cal_init(&$a) {
+function cal_init(App &$a) {
if($a->argc > 1)
auto_redir($a, $a->argv[1]);
$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))
- $account_type = t('Forum');
- else
- $account_type = "";
+ $account_type = account_type($profile);
$tpl = get_markup_template("vcard-widget.tpl");
'$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;
}
-function cal_content(&$a) {
+function cal_content(App &$a) {
nav_set_selected('events');
$editselect = 'none';
$htpl = get_markup_template('event_head.tpl');
$a->page['htmlhead'] .= replace_macros($htpl,array(
- '$baseurl' => $a->get_baseurl(),
+ '$baseurl' => App::get_baseurl(),
'$module_url' => '/cal/' . $a->data['user']['nickname'],
'$modparams' => 2,
'$i18n' => $i18n,
$etpl = get_markup_template('event_end.tpl');
$a->page['end'] .= replace_macros($etpl,array(
- '$baseurl' => $a->get_baseurl(),
+ '$baseurl' => App::get_baseurl(),
'$editselect' => $editselect
));
$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) {
intval($contact_id),
intval($a->profile['profile_uid'])
);
- if(count($r)) {
+ if (dbm::is_result($r)) {
$contact = $r[0];
$remote_contact = true;
}
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']);
if ($a->argv[2] === 'json'){
- if (x($_GET,'start')) $start = date("Y-m-d h:i:s", $_GET['start']);
- if (x($_GET,'end')) $finish = date("Y-m-d h:i:s", $_GET['end']);
+ if (x($_GET,'start')) $start = $_GET['start'];
+ if (x($_GET,'end')) $finish = $_GET['end'];
}
$start = datetime_convert('UTC','UTC',$start);
$links = array();
- if(count($r)) {
+ if (dbm::is_result($r)) {
$r = sort_by_date($r);
foreach($r as $rr) {
$j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'j') : datetime_convert('UTC','UTC',$rr['start'],'j'));
- if(! x($links,$j))
- $links[$j] = $a->get_baseurl() . '/' . $a->cmd . '#link-' . $j;
+ if(! x($links,$j)) {
+ $links[$j] = App::get_baseurl() . '/' . $a->cmd . '#link-' . $j;
+ }
}
}
$events=array();
// transform the event in a usable array
- if(count($r))
+ if (dbm::is_result($r))
$r = sort_by_date($r);
$events = process_events($r);
$tpl = get_markup_template("event.tpl");
} else {
// if (get_config('experimentals','new_calendar')==1){
- $tpl = get_markup_template("events-js.tpl");
+ $tpl = get_markup_template("events_js.tpl");
// } else {
// $tpl = get_markup_template("events.tpl");
// }
}
$o = replace_macros($tpl, array(
- '$baseurl' => $a->get_baseurl(),
+ '$baseurl' => App::get_baseurl(),
'$tabs' => $tabs,
'$title' => t('Events'),
'$view' => t('View'),
- '$previus' => array($a->get_baseurl()."/events/$prevyear/$prevmonth",t('Previous'),'',''),
- '$next' => array($a->get_baseurl()."/events/$nextyear/$nextmonth",t('Next'),'',''),
+ '$previus' => array(App::get_baseurl()."/events/$prevyear/$prevmonth",t('Previous'),'',''),
+ '$next' => array(App::get_baseurl()."/events/$nextyear/$nextmonth",t('Next'),'',''),
'$calendar' => cal($y,$m,$links, ' eventcal'),
'$events' => $events,
"month" => t("month"),
"week" => t("week"),
"day" => t("day"),
-
-
+ "list" => t("list"),
));
if (x($_GET,'id')){ echo $o; killme(); }
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;
+ }
}