Пример #1
0
 public function export(array $arguments, array $params = array())
 {
     $c = new vcalendar();
     $c->setProperty('calscale', 'GREGORIAN');
     $c->setProperty('method', 'PUBLISH');
     // if no post id are specified do not export those properties
     // as they would create a new calendar in outlook.
     // a user reported this in AIOEC-982 and said this would fix it
     if (true === $arguments['do_not_export_as_calendar']) {
         $c->setProperty('X-WR-CALNAME', get_bloginfo('name'));
         $c->setProperty('X-WR-CALDESC', get_bloginfo('description'));
     }
     $c->setProperty('X-FROM-URL', home_url());
     // Timezone setup
     $tz = $this->_registry->get('date.timezone')->get_default_timezone();
     if ($tz) {
         $c->setProperty('X-WR-TIMEZONE', $tz);
         $tz_xprops = array('X-LIC-LOCATION' => $tz);
         iCalUtilityFunctions::createTimezone($c, $tz, $tz_xprops);
     }
     $this->_taxonomy_model = $this->_registry->get('model.taxonomy');
     $post_ids = array();
     foreach ($arguments['events'] as $event) {
         $post_ids[] = $event->get('post_id');
     }
     $this->_taxonomy_model->update_meta($post_ids);
     foreach ($arguments['events'] as $event) {
         $c = $this->_insert_event_in_calendar($event, $c, true, $params);
     }
     $str = ltrim($c->createCalendar());
     return $str;
 }
 /**
  * export_events function
  *
  * Export events
  *
  * @return void
  **/
 function export_events()
 {
     global $ai1ec_events_helper, $ai1ec_exporter_helper, $ai1ec_localization_helper;
     $ai1ec_cat_ids = !empty($_REQUEST['ai1ec_cat_ids']) ? $_REQUEST['ai1ec_cat_ids'] : false;
     $ai1ec_tag_ids = !empty($_REQUEST['ai1ec_tag_ids']) ? $_REQUEST['ai1ec_tag_ids'] : false;
     $ai1ec_post_ids = !empty($_REQUEST['ai1ec_post_ids']) ? $_REQUEST['ai1ec_post_ids'] : false;
     if (!empty($_REQUEST['lang'])) {
         $ai1ec_localization_helper->set_language($_REQUEST['lang']);
     }
     $filter = array();
     if ($ai1ec_cat_ids) {
         $filter['cat_ids'] = explode(',', $ai1ec_cat_ids);
     }
     if ($ai1ec_tag_ids) {
         $filter['tag_ids'] = explode(',', $ai1ec_tag_ids);
     }
     if ($ai1ec_post_ids) {
         $filter['post_ids'] = explode(',', $ai1ec_post_ids);
     }
     // when exporting events by post_id, do not look up the event's start/end date/time
     $start = $ai1ec_post_ids !== false ? false : Ai1ec_Time_Utility::current_time(true) - 24 * 60 * 60;
     // Include any events ending today
     $end = false;
     $c = new vcalendar();
     $c->setProperty('calscale', 'GREGORIAN');
     $c->setProperty('method', 'PUBLISH');
     $c->setProperty('X-WR-CALNAME', get_bloginfo('name'));
     $c->setProperty('X-WR-CALDESC', get_bloginfo('description'));
     $c->setProperty('X-FROM-URL', home_url());
     // Timezone setup
     $tz = Ai1ec_Meta::get_option('timezone_string');
     if ($tz) {
         $c->setProperty('X-WR-TIMEZONE', $tz);
         $tz_xprops = array('X-LIC-LOCATION' => $tz);
         iCalUtilityFunctions::createTimezone($c, $tz, $tz_xprops);
     }
     $events = $ai1ec_events_helper->get_matching_events($start, $end, $filter);
     foreach ($events as $event) {
         $ai1ec_exporter_helper->insert_event_in_calendar($event, $c, $export = true);
     }
     $str = ltrim($c->createCalendar());
     header('Content-type: text/calendar; charset=utf-8');
     echo $str;
     exit;
 }
 public function generate_ical()
 {
     $eventdata = $this->pdh->get('calendar_events', 'data', array($this->url_id));
     require $this->root_path . 'libraries/icalcreator/iCalcreator.class.php';
     $v = new vcalendar();
     $v->setConfig('unique_id', $this->config->get('server_name'));
     $v->setProperty('x-wr-calname', sprintf(registry::fetch('user')->lang('icalfeed_name'), registry::register('config')->get('guildtag')));
     $v->setProperty('X-WR-CALDESC', registry::fetch('user')->lang('icalfeed_description'));
     // set the timezone - required by some clients
     $timezone = registry::register('config')->get('timezone');
     $v->setProperty("X-WR-TIMEZONE", $timezone);
     iCalUtilityFunctions::createTimezone($v, $timezone, array("X-LIC-LOCATION" => $timezone));
     // Generate the vevents...
     $e = new vevent();
     $e->setProperty('dtstart', array("timestamp" => $eventdata['timestamp_start'] . 'Z'));
     $e->setProperty('dtend', array("timestamp" => $eventdata['timestamp_end'] . 'Z'));
     $e->setProperty('dtstamp', array("timestamp" => $this->time->time));
     $e->setProperty('summary', $this->pdh->get('event', 'name', array($eventdata['extension']['raid_eventid'])));
     $e->setProperty('description', $eventdata['notes']);
     $e->setProperty('class', 'PUBLIC');
     $e->setProperty('categories', 'PERSONAL');
     $v->setComponent($e);
     // Save or Output the ICS File..
     if ($icsfile == true) {
         $v->setConfig('filename', $icsfile);
         $v->saveCalendar();
     } else {
         header('Content-type: text/calendar; charset=utf-8;');
         header('Content-Disposition: filename=raidevent-' . $eventdata['timestamp_start'] . '.ics');
         echo $v->createCalendar();
         exit;
     }
 }
Пример #4
0
 /**
  *  Generate ical file content
  *
  * @param $who             user ID
  * @param $who_group       group ID
  * @param $limititemtype   itemtype only display this itemtype (default '')
  *
  * @return icalendar string
  **/
 static function generateIcal($who, $who_group, $limititemtype = '')
 {
     global $CFG_GLPI;
     if ($who === 0 && $who_group === 0) {
         return false;
     }
     include_once GLPI_ROOT . "/lib/icalcreator/iCalcreator.class.php";
     $v = new vcalendar();
     if (!empty($CFG_GLPI["version"])) {
         $v->setConfig('unique_id', "GLPI-Planning-" . trim($CFG_GLPI["version"]));
     } else {
         $v->setConfig('unique_id', "GLPI-Planning-UnknownVersion");
     }
     $tz = date_default_timezone_get();
     $v->setConfig('TZID', $tz);
     $v->setProperty("method", "PUBLISH");
     $v->setProperty("version", "2.0");
     $v->setProperty("X-WR-TIMEZONE", $tz);
     $xprops = array("X-LIC-LOCATION" => $tz);
     iCalUtilityFunctions::createTimezone($v, $tz, $xprops);
     $v->setProperty("x-wr-calname", "GLPI-" . $who . "-" . $who_group);
     $v->setProperty("calscale", "GREGORIAN");
     $interv = array();
     $begin = time() - MONTH_TIMESTAMP * 12;
     $end = time() + MONTH_TIMESTAMP * 12;
     $begin = date("Y-m-d H:i:s", $begin);
     $end = date("Y-m-d H:i:s", $end);
     $params = array('who' => $who, 'who_group' => $who_group, 'begin' => $begin, 'end' => $end);
     $interv = array();
     if (empty($limititemtype)) {
         foreach ($CFG_GLPI['planning_types'] as $itemtype) {
             $interv = array_merge($interv, $itemtype::populatePlanning($params));
         }
     } else {
         $interv = $limititemtype::populatePlanning($params);
     }
     if (count($interv) > 0) {
         foreach ($interv as $key => $val) {
             $vevent = new vevent();
             //initiate EVENT
             if (isset($val['itemtype'])) {
                 if (isset($val[getForeignKeyFieldForItemType($val['itemtype'])])) {
                     $vevent->setProperty("uid", $val['itemtype'] . "#" . $val[getForeignKeyFieldForItemType($val['itemtype'])]);
                 } else {
                     $vevent->setProperty("uid", "Other#" . $key);
                 }
             } else {
                 $vevent->setProperty("uid", "Other#" . $key);
             }
             $vevent->setProperty("dstamp", $val["begin"]);
             $vevent->setProperty("dtstart", $val["begin"]);
             $vevent->setProperty("dtend", $val["end"]);
             if (isset($val["tickets_id"])) {
                 $vevent->setProperty("summary", sprintf(__('Ticket #%1$s %2$s'), $val["tickets_id"], $val["name"]));
             } else {
                 if (isset($val["name"])) {
                     $vevent->setProperty("summary", $val["name"]);
                 }
             }
             if (isset($val["content"])) {
                 $text = $val["content"];
                 // be sure to replace nl by \r\n
                 $text = preg_replace("/<br( [^>]*)?" . ">/i", "\r\n", $text);
                 $text = Html::clean($text);
                 $vevent->setProperty("description", $text);
             } else {
                 if (isset($val["name"])) {
                     $text = $val["name"];
                     // be sure to replace nl by \r\n
                     $text = preg_replace("/<br( [^>]*)?" . ">/i", "\r\n", $text);
                     $text = Html::clean($text);
                     $vevent->setProperty("description", $text);
                 }
             }
             if (isset($val["url"])) {
                 $vevent->setProperty("url", $val["url"]);
             }
             $v->setComponent($vevent);
         }
     }
     $v->sort();
     //       $v->parse();
     return $v->returnCalendar();
 }
Пример #5
0
if (version_compare(JVERSION, '3.0', 'ge')) {
    $offset = $config->get('offset');
} else {
    $offset = $config->getValue('config.offset');
}
$dateTimeZone = new DateTimeZone($offset);
$dateTime = new DateTime("now", $dateTimeZone);
$timeOffset = $dateTimeZone->getOffset($dateTime);
$timezone = $timeOffset / 3600;
$tz = 'UTC';
$v->setProperty('method', 'PUBLISH');
$v->setProperty('X-WR-CALDESC', '');
$v->setProperty('X-WR-TIMEZONE', $tz);
$xprops = array('X-LIC-LOCATION' => $tz);
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
    iCalUtilityFunctions::createTimezone($v, $tz, $xprops);
}
$stamp = $this->data;
$get_date = '';
$href = '#';
$start_Datetime = '';
$start_Date = '';
$end_Datetime = '';
$end_Date = '';
foreach ($stamp->items as $item) {
    $s_dates = $item->dates;
    $single_dates = unserialize($s_dates);
    if (JRequest::getVar('date', '')) {
        $var_one_date = JRequest::getVar('date');
        $one_ex = explode('-', $var_one_date);
        $get_one_date = $one_ex['0'] . '-' . $one_ex['1'] . '-' . $one_ex['2'] . ' ' . $one_ex['3'] . ':' . $one_ex['4'] . ':00';
Пример #6
0
 case 'icalfeed':
     // the permissions for the single modules
     $permissions = array('calendar' => 'po_calendarevent');
     $modulename = registry::register('input')->get('module', '');
     // check for permission
     $userid = registry::fetch('user')->getUserIDfromExchangeKey(registry::register('input')->get('key', ''));
     if (isset($permissions[$modulename]) && registry::fetch('user')->check_auth($permissions[$modulename], false, $userid)) {
         require $eqdkp_root_path . 'libraries/icalcreator/iCalcreator.class.php';
         $v = new vcalendar();
         $v->setConfig('unique_id', registry::register('config')->get('server_name'));
         $v->setProperty('x-wr-calname', sprintf(registry::fetch('user')->lang('icalfeed_name'), registry::register('config')->get('guildtag')));
         $v->setProperty('X-WR-CALDESC', registry::fetch('user')->lang('icalfeed_description'));
         // set the timezone - required by some clients
         $timezone = registry::register('config')->get('timezone');
         $v->setProperty("X-WR-TIMEZONE", $timezone);
         iCalUtilityFunctions::createTimezone($v, $timezone, array("X-LIC-LOCATION" => $timezone));
         switch ($modulename) {
             case 'calendar':
                 $eventtypes = registry::register('input')->get('type', 'raids');
                 switch ($eventtypes) {
                     case 'raids':
                         $eventsfilter = true;
                         break;
                     case 'all':
                         $eventsfilter = false;
                         break;
                     case 'appointments':
                         $eventsfilter = 'appointments';
                         break;
                 }
                 $caleventids = registry::register('plus_datahandler')->get('calendar_events', 'id_list', array($eventsfilter, registry::register('time')->createRepeatableEvents(registry::register('time')->time, -30)));
Пример #7
0
 /**
  * Create calendar
  * Adds timezone component, when not already done
  *
  * @see http://kigkonsult.se/iCalcreator/docs/using.html#createTimezone
  *
  * @return string
  */
 public function createCalendar()
 {
     // add timezone component
     if ($this->timezone && $this->getComponent('VTIMEZONE') === false) {
         $xprops = array('X-LIC-LOCATION' => $this->timezone);
         \iCalUtilityFunctions::createTimezone($this, $this->timezone, $xprops);
     }
     return parent::createCalendar();
 }
Пример #8
0
 /**
  * Add a VTIMEZONE using the specified TZID
  * If VTIMEZONE was already added, do nothing
  *
  * @param   iCalcomponent
  * @param   string  Timezone id to add
  * @param   array   (Optional) result from get_timezones()
  * @return  Used TZID, even when it was not added
  */
 function add_vtimezone(&$resource, $tzid, $timezones = array())
 {
     if ($tzid != 'UTC' && !isset($timezones[$tzid])) {
         $res = iCalUtilityFunctions::createTimezone($resource, $tzid, array('X-LIC-LOCATION' => $tzid));
         if ($res === FALSE) {
             $this->CI->extended_logs->message('ERROR', "Couldn't create vtimezone with tzid=" . $tzid . ' Defaulting to UTC');
             $tzid = 'UTC';
         }
     }
     return $tzid;
 }
Пример #9
0
 function display($tpl = null)
 {
     // Get a reference of the page instance in joomla
     $document = JFactory::getDocument();
     $model = $this->getModel();
     $project = $model->getProject();
     //$config		= $model->getTemplateConfig($this->getName());
     if (isset($project)) {
         $this->project = $project;
     }
     $this->overallconfig = $model->getOverallConfig();
     $this->config = $this->overallconfig;
     $this->matches = $model->getMatches();
     $this->teams = $model->getTeamsFromMatches($this->matches);
     // load a class that handles ical formats.
     require_once JLG_PATH_SITE . DS . 'helpers' . DS . 'iCalcreator.class.php';
     // create a new calendar instance
     $v = new vcalendar();
     foreach ($this->matches as $match) {
         $hometeam = $this->teams[$match->team1];
         $home = sprintf('%s', $hometeam->name);
         $guestteam = $this->teams[$match->team2];
         $guest = sprintf('%s', $guestteam->name);
         $summary = $match->project_name . ': ' . $home . ' - ' . $guest;
         //  check if match gots a date, if not it will not be included in ical
         if ($match->match_date) {
             $totalMatchTime = isset($project) ? $project->halftime * ($project->game_parts - 1) + $project->game_regular_time : 90;
             $start = JoomleagueHelper::getMatchStartTimestamp($match, 'Y-m-d H:i:s');
             $end = JoomleagueHelper::getMatchEndTimestamp($match, $totalMatchTime, 'Y-m-d H:i:s');
             // check if exist a playground in match or team or club
             $stringlocation = '';
             $stringname = '';
             if (!empty($match->playground_id)) {
                 $stringlocation = $match->playground_address . ", " . $match->playground_zipcode . " " . $match->playground_city;
                 $stringname = $match->playground_name;
             } elseif (!empty($match->team_playground_id)) {
                 $stringlocation = $match->team_playground_address . ", " . $match->team_playground_zipcode . " " . $match->team_playground_city;
                 $stringname = $match->team_playground_name;
             } elseif (!empty($match->club_playground_id)) {
                 $stringlocation = $match->club_playground_address . ", " . $match->club_playground_zipcode . " " . $match->club_playground_city;
                 $stringname = $match->club_playground_name;
             }
             $location = $stringlocation;
             //if someone want to insert more in description here is the place
             $description = $stringname;
             // create an event and insert it in calendar
             $vevent = new vevent();
             $timezone = JoomleagueHelper::getMatchTimezone($match);
             $vevent->setProperty("dtstart", $start, array("TZID" => $timezone));
             $vevent->setProperty("dtend", $end, array("TZID" => $timezone));
             $vevent->setProperty('LOCATION', $location);
             $vevent->setProperty('summary', $summary);
             $vevent->setProperty('description', $description);
             $v->setComponent($vevent);
         }
     }
     $v->setProperty("X-WR-TIMEZONE", $timezone);
     $xprops = array("X-LIC-LOCATION" => $timezone);
     iCalUtilityFunctions::createTimezone($v, $timezone, $xprops);
     $v->returnCalendar();
     //$debugstr = $v->createCalendar();
     //echo "<pre>";
     //echo $debugstr;
     // exit before display
     //		parent::display( $tpl );
 }
Пример #10
0
}
if (!$events) {
    register_error(elgg_echo('event_calendar:no_events_found'));
    forward(REFERER);
}
$events = event_calendar_flatten_event_structure($events);
$timezone = date_default_timezone_get();
//get_plugin_setting('timezone', 'event_connector');
$config = array('UNIQUE_ID' => elgg_get_site_url(), 'FILENAME' => 'Calendar.ics', 'TZID' => $timezone);
$v = new vcalendar($config);
$v->setProperty('method', 'PUBLISH');
$v->setProperty("X-WR-TIMEZONE", date_default_timezone_get());
$v->setProperty("calscale", "GREGORIAN");
$v->setProperty("version", "2.0");
$v->setProperty("X-WR-CALNAME", elgg_get_logged_in_user_entity()->username . "Calendar");
iCalUtilityFunctions::createTimezone($v, $timezone);
foreach ($events as $event) {
    //set default beginning and ending time
    $hb = 8;
    $he = 18;
    $mb = $me = $sb = $se = 0;
    if ($event->start_time) {
        $hb = (int) ($event->start_time / 60);
        $mb = $event->start_time % 60;
    }
    if ($event->end_time) {
        $he = (int) ($event->end_time / 60);
        $me = $event->end_time % 60;
    }
    $vevent = $v->newComponent('vevent');
    if (!isset($event->end_date)) {
 public function ical_feed()
 {
     global $wp_query;
     if (!have_posts()) {
         $wp_query->set_404();
         $wp_query->max_num_pages = 0;
         header('Content-Type: text/html; charset=' . get_option('blog_charset'), true);
         locate_template('404.php', true);
         die;
     }
     $display_format = '';
     if (isset($_GET['format'])) {
         $display_format = strtolower($_GET['format']);
     }
     if ($display_format == 'xml') {
         nocache_headers();
         header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
     }
     if ($display_format == 'json') {
         nocache_headers();
         header('Content-Type: application/json; charset=' . get_option('blog_charset'), true);
     }
     //TODO: Add filters for these things
     $calendar_name = get_bloginfo('name') . ' Events';
     $calendar_description = 'Events found on ' . get_site_url();
     $timezone = get_option('timezone_string');
     // define time zone
     $args = array('unique_id' => get_site_url(), 'TZID' => $timezone);
     $v = new vcalendar($args);
     // create a new calendar instance
     $v->setProperty('method', 'PUBLISH');
     // required of some calendar software
     $v->setProperty('x-wr-calname', $calendar_name);
     // required of some calendar software
     $v->setProperty('X-WR-CALDESC', $calendar_description);
     // required of some calendar software
     $v->setProperty('X-WR-TIMEZONE', $timezone);
     // required of some calendar software
     $xprops = array('X-LIC-LOCATION' => $timezone);
     // required of some calendar software
     iCalUtilityFunctions::createTimezone($v, $timezone, $xprops);
     // create timezone component(-s) opt. 1 based on present date
     while (have_posts()) {
         the_post();
         $event_id = get_the_ID();
         $event = get_post($event_id);
         $event_date = sc_get_event_date($event_id);
         $event_time = sc_get_event_time($event_id);
         $event_start = strtotime($event_date . ' ' . $event_time['start']);
         $event_end = strtotime($event_date . ' ' . $event_time['end']);
         $event_location = '';
         if (function_exists('sc_get_event_address')) {
             $event_location = sc_get_event_address();
         }
         $event_description = apply_filters('sc_ical_event_description', get_the_content(), $event);
         $event_description = sc_html2plain($event_description);
         $vevent =& $v->newComponent('vevent');
         // create an event calendar component
         $start = array('year' => date('Y', $event_start), 'month' => date('n', $event_start), 'day' => date('j', $event_start), 'hour' => date('G', $event_start), 'min' => date('i', $event_start), 'sec' => date('s', $event_start));
         $vevent->setProperty('dtstart', $start);
         $end = array('year' => date('Y', $event_end), 'month' => date('n', $event_end), 'day' => date('j', $event_end), 'hour' => date('G', $event_end), 'min' => date('i', $event_end), 'sec' => date('s', $event_end));
         $vevent->setProperty('dtend', $end);
         $vevent->setProperty('LOCATION', $event_location);
         // property name - case independent
         if (function_exists('sc_get_the_organizer')) {
             $organizer_details = sc_get_the_organizer($event_id);
             $organizer_details = array_filter($organizer_details);
             if (isset($organizer_details['name']) && isset($organizer_details['email'])) {
                 $organizer_args = array('CN' => $organizer_details['name']);
                 $x_params = array('Phone', 'Website');
                 foreach ($x_params as $param) {
                     $lowercase_param = strtolower($param);
                     if (isset($organizer_details[$lowercase_param])) {
                         $arg_key = 'X-' . $param;
                         $val = $organizer_details[$lowercase_param];
                         $organizer_args[$arg_key] = $val;
                     }
                 }
                 $vevent->setProperty('organizer', $organizer_details['email'], $organizer_args);
             }
         }
         $vevent->setProperty('summary', $event->post_title);
         $vevent->setProperty('description', $event_description);
     }
     // all calendar components are described in rfc5545
     // a complete method list in iCalcreator manual
     iCalUtilityFunctions::createTimezone($v, $timezone, $xprops);
     // create timezone component(-s) opt. 2
     // based on all start dates in events (i.e. dtstart)
     if ($display_format == 'xml') {
         echo iCal2XML($v);
         exit;
     }
     if ($display_format == 'json') {
         $xml = simplexml_load_string(iCal2XML($v));
         echo json_encode($xml);
         exit;
     }
     $v->returnCalendar();
     // redirect calendar file to browser
     exit;
 }
Пример #12
0
 /**
  * return initialized calendar tool class for ics export
  *
  * @return object
  */
 static function getCalendarTool()
 {
     require_once JPATH_SITE . '/components/com_jem/classes/iCalcreator.class.php';
     $timezone_name = JemHelper::getTimeZoneName();
     $config = JFactory::getConfig();
     $sitename = $config->get('sitename');
     $config = array("unique_id" => $sitename, "TZID" => $timezone_name);
     $vcal = new vcalendar($config);
     if (!file_exists(JPATH_SITE . '/cache/com_jem')) {
         jimport('joomla.filesystem.folder');
         JFolder::create(JPATH_SITE . '/cache/com_jem');
     }
     $vcal->setConfig('directory', JPATH_SITE . '/cache/com_jem');
     $vcal->setProperty("calscale", "GREGORIAN");
     $vcal->setProperty('method', 'PUBLISH');
     $vcal->setProperty("X-WR-TIMEZONE", $timezone_name);
     $vcal->setProperty("x-wr-calname", "Calendar");
     $vcal->setProperty("X-WR-CALDESC", "Calendar Description");
     $xprops = array("X-LIC-LOCATION" => $timezone_name);
     if ($timezone_name != 'UTC') {
         iCalUtilityFunctions::createTimezone($vcal, $timezone_name, $xprops);
     }
     return $vcal;
 }