Exemplo n.º 1
0
function JEventsBuildRoute(&$query)
{
    $cfg =& JEVConfig::getInstance();
    $segments = array();
    // sometimes the task is not set but view and layout are so tackle this!
    if (!isset($query['task']) && isset($query['view']) && isset($query['layout'])) {
        $query['task'] = $query['view'] . "." . $query['layout'];
    }
    // We don't need the view - its only used to manipulate parameters
    if (isset($query['view'])) {
        unset($query['view']);
    }
    if (isset($query['layout'])) {
        unset($query['layout']);
    }
    $task = false;
    $task = false;
    if (!isset($query['task'])) {
        if (isset($query["Itemid"])) {
            $menu =& JSite::getMenu();
            $menuitem = $menu->getItem($query["Itemid"]);
            if (!is_null($menuitem) && isset($menuitem->query["task"])) {
                $task = $menuitem->query["task"];
                return $segments;
            } else {
                if (!is_null($menuitem) && isset($menuitem->query["layout"]) && isset($menuitem->query["view"])) {
                    $task = $menuitem->query["view"] . "." . $menuitem->query["layout"];
                }
            }
        }
        if (!$task) {
            $task = 'month.calendar';
        }
    } else {
        $task = $query['task'];
        unset($query['task']);
    }
    switch ($task) {
        case "year.listevents":
        case "month.calendar":
        case "week.listevents":
        case "day.listevents":
        case "cat.listevents":
        case "jevent.detail":
        case "icalevent.detail":
        case "icalrepeat.detail":
        case "search.form":
        case "search.results":
        case "admin.listevents":
            $segments[] = $task;
            $config =& JFactory::getConfig();
            $t_datenow = JEVHelper::getNow();
            // if no date in the query then use TODAY not the calendar date
            $nowyear = JevDate::strftime('%Y', $t_datenow->toUnix(true));
            $nowmonth = JevDate::strftime('%m', $t_datenow->toUnix(true));
            $nowday = JevDate::strftime('%d', $t_datenow->toUnix(true));
            /*
            $year	= intval( JRequest::getVar( 'year',	 $nowyear ));
            $month	= intval( JRequest::getVar( 'month', $nowmonth ));
            $day	= intval( JRequest::getVar( 'day',	 $nowday ));
            */
            if (isset($query['year'])) {
                $segments[] = $query['year'];
                unset($query['year']);
            } else {
                // if no date in the query then use TODAY not the calendar date
                $segments[] = $nowyear;
            }
            if (isset($query['month'])) {
                $segments[] = $query['month'];
                unset($query['month']);
            } else {
                // if no date in the query then use TODAY not the calendar date
                $segments[] = $nowmonth;
            }
            if (isset($query['day'])) {
                $segments[] = $query['day'];
                unset($query['day']);
            } else {
                // if no date in the query then use TODAY not the calendar date
                $segments[] = $nowday;
            }
            switch ($task) {
                case "jevent.detail":
                case "icalevent.detail":
                case "icalrepeat.detail":
                    if (isset($query['jevtype'])) {
                        unset($query['jevtype']);
                    }
                    if (isset($query['evid'])) {
                        $segments[] = $query['evid'];
                        unset($query['evid']);
                    } else {
                        $segments[] = "0";
                    }
                    /*
                    // Can we drop the use of uid?
                    if(isset($query['title'])) {
                    $segments[] = JFilterOutput::stringURLSafe($query['title']);
                    unset($query['title']);
                    }
                    else {
                    $segments[] = "-";
                    }
                    */
                    break;
                default:
                    break;
            }
            if (isset($query['catids']) && strlen($query['catids']) > 0) {
                $segments[] = $query['catids'];
                unset($query['catids']);
            } else {
                $segments[] = "-";
            }
            switch ($task) {
                case "icalrepeat.detail":
                    if (isset($query['uid'])) {
                        // Some remote UIDs have @ and other dodgy characters in them so encode them for safety
                        //$segments[] = base64_encode($query['uid']);
                        unset($query['uid']);
                    }
                    if (isset($query['title'])) {
                        $segments[] = substr(JFilterOutput::stringURLSafe($query['title']), 0, 150);
                        unset($query['title']);
                    } else {
                        $segments[] = "-";
                    }
                    break;
                default:
                    break;
            }
            break;
        case "jevent.edit":
        case "icalevent.edit":
        case "icalevent.publish":
        case "icalevent.unpublish":
        case "icalevent.editcopy":
        case "icalrepeat.edit":
        case "jevent.delete":
        case "icalevent.delete":
        case "icalrepeat.delete":
        case "icalrepeat.deletefuture":
            $segments[] = $task;
            if (isset($query['jevtype'])) {
                unset($query['jevtype']);
            }
            if (isset($query['evid'])) {
                $segments[] = $query['evid'];
                unset($query['evid']);
            } else {
                $segments[] = "0";
            }
            break;
        case "modlatest.rss":
            $segments[] = $task;
            // assume implicit feed document
            //unset($query['format']);
            // feed type
            if (isset($query['type'])) {
                $segments[] = $query['type'];
                unset($query['type']);
            } else {
                $segments[] = 'rss';
            }
            // modid
            if (isset($query['modid'])) {
                $segments[] = $query['modid'];
                unset($query['modid']);
            } else {
                $segments[] = "0";
            }
            break;
        case "icalrepeat.vcal":
        case "icalevent.vcal":
            $segments[] = $task;
            if (isset($query['evid'])) {
                $segments[] = $query['evid'];
                unset($query['evid']);
            } else {
                $segments[] = "0";
            }
            if (isset($query['catids'])) {
                $segments[] = $query['catids'];
                unset($query['catids']);
            } else {
                $segments[] = "0";
            }
            break;
        default:
            $segments[] = $task;
            $segments[] = "-";
            break;
    }
    return $segments;
}
Exemplo n.º 2
0
 function DefaultModCalView($params, $modid)
 {
     $this->_modid = $modid;
     $user =& JFactory::getUser();
     $cfg =& JEVConfig::getInstance();
     $jev_component_name = JEV_COM_COMPONENT;
     $db =& JFactory::getDBO();
     $this->datamodel = new JEventsDataModel();
     // component config object
     $jevents_config =& JEVConfig::getInstance();
     $this->modparams =& $params;
     $this->aid = $user->aid;
     $tmplang =& JFactory::getLanguage();
     // get params exclusive to module
     $this->inc_ec_css = $this->modparams->get('inc_ec_css', 1);
     $this->minical_showlink = $this->modparams->get('minical_showlink', 1);
     $this->minical_prevyear = $this->modparams->get('minical_prevyear', 1);
     $this->minical_prevmonth = $this->modparams->get('minical_prevmonth', 1);
     $this->minical_actmonth = $this->modparams->get('minical_actmonth', 1);
     $this->minical_actmonth = $this->modparams->get('minical_actmonth', 1);
     $this->minical_actyear = $this->modparams->get('minical_actyear', 1);
     $this->minical_nextmonth = $this->modparams->get('minical_nextmonth', 1);
     $this->minical_nextyear = $this->modparams->get('minical_nextyear', 1);
     // get params exclusive to component
     $this->com_starday = intval($jevents_config->get('com_starday', 0));
     // make config object (module or component) current
     if (intval($this->modparams->get('modcal_useLocalParam', 0)) == 1) {
         $myparam =& $this->modparams;
     } else {
         $myparam =& $jevents_config;
     }
     // get com_event config parameters for this module
     $this->displayLastMonth = $myparam->get('modcal_DispLastMonth', 'NO');
     $this->disp_lastMonthDays = $myparam->get('modcal_DispLastMonthDays', 0);
     $this->linkCloaking = $myparam->get('modcal_LinkCloaking', 0);
     $t_datenow = JEVHelper::getNow();
     $this->timeWithOffset = $t_datenow->toUnix(true);
     switch ($this->displayLastMonth) {
         case 'YES_stop':
             $this->disp_lastMonth = 1;
             break;
         case 'YES_stop_events':
             $this->disp_lastMonth = 2;
             break;
         case 'ALWAYS':
             $this->disp_lastMonthDays = 0;
             $this->disp_lastMonth = 1;
             break;
         case 'ALWAYS_events':
             $this->disp_lastMonthDays = 0;
             $this->disp_lastMonth = 2;
             break;
         case 'NO':
         default:
             $this->disp_lastMonthDays = 0;
             $this->disp_lastMonth = 0;
             break;
     }
     $this->displayNextMonth = $myparam->get('modcal_DispNextMonth', 'NO');
     $this->disp_nextMonthDays = $myparam->get('modcal_DispNextMonthDays', 0);
     switch ($this->displayNextMonth) {
         case 'YES_stop':
             $this->disp_nextMonth = 1;
             break;
         case 'YES_stop_events':
             $this->disp_nextMonth = 2;
             break;
         case 'ALWAYS':
             $this->disp_nextMonthDays = 0;
             $this->disp_nextMonth = 1;
             break;
         case 'ALWAYS_events':
             $this->disp_nextMonthDays = 0;
             $this->disp_nextMonth = 2;
             break;
         case 'NO':
         default:
             $this->disp_nextMonthDays = 0;
             $this->disp_nextMonth = 0;
             break;
     }
     // find appropriate Itemid and setup catids for datamodel
     $this->myItemid = $this->datamodel->setupModuleCatids($this->modparams);
     $this->cat = $this->datamodel->getCatidsOutLink(true);
     $this->linkpref = 'index.php?option=' . $jev_component_name . '&Itemid=' . $this->myItemid . $this->cat . '&task=';
 }
Exemplo n.º 3
0
function JEventsBuildRouteNew(&$query, $task)
{
    $transtask = translatetask($task);
    $params = JComponentHelper::getParams("com_jevents");
    // get a menu item based on Itemid or currently active
    $app = JFactory::getApplication();
    $menu = $app->getMenu();
    // we need a menu item.  Either the one specified in the query, or the current active one if none specified
    if (empty($query['Itemid'])) {
        $menuItem = $menu->getActive();
        $menuItemGiven = false;
    } else {
        $menuItem = $menu->getItem($query['Itemid']);
        $menuItemGiven = true;
    }
    $cfg = JEVConfig::getInstance();
    $segments = array();
    if (count($query) == 2 && isset($query['Itemid']) && isset($query['option'])) {
        // special case where we do not need any information since its a menu item
        // as long as the task matches up!
        $menu = JFactory::getApplication()->getMenu();
        $menuitem = $menu->getItem($query["Itemid"]);
        if (!is_null($menuitem) && (isset($menuitem->query["task"]) || isset($menuitem->query["view"]) && isset($menuitem->query["layout"]))) {
            if (isset($menuitem->query["task"]) && $task == $menuitem->query["task"]) {
                return $segments;
            } else {
                if (isset($menuitem->query["view"]) && isset($menuitem->query["layout"]) && $task == $menuitem->query["view"] . "." . $menuitem->query["layout"]) {
                    return $segments;
                } else {
                    $segments[] = $transtask;
                }
            }
        }
    }
    switch ($task) {
        case "year.listevents":
        case "month.calendar":
        case "week.listevents":
        case "day.listevents":
        case "cat.listevents":
        case "jevent.detail":
        case "icalevent.detail":
        case "icalrepeat.detail":
        case "search.form":
        case "search.results":
        case "admin.listevents":
            if (!in_array($transtask, $segments)) {
                $segments[] = $transtask;
            }
            $config = JFactory::getConfig();
            $t_datenow = JEVHelper::getNow();
            // if no date in the query then use TODAY not the calendar date
            $nowyear = JevDate::strftime('%Y', $t_datenow->toUnix(true));
            $nowmonth = JevDate::strftime('%m', $t_datenow->toUnix(true));
            $nowday = JevDate::strftime('%d', $t_datenow->toUnix(true));
            if (isset($query['year'])) {
                $year = $query['year'] == "YYYYyyyy" ? "YYYYyyyy" : intval($query['year']);
                unset($query['year']);
            } else {
                $year = $nowyear;
            }
            if (isset($query['month'])) {
                $month = $query['month'] == "MMMMmmmm" ? "MMMMmmmm" : intval($query['month']);
                unset($query['month']);
            } else {
                $month = $nowmonth;
            }
            if (isset($query['day'])) {
                $day = intval($query['day']);
                unset($query['day']);
            } else {
                // if no date in the query then use TODAY not the calendar date
                $day = $nowday;
            }
            // for week data always go to the start of the week
            if ($task == "week.listevents" && is_int($month)) {
                $startday = $cfg->get('com_starday');
                if (!$startday) {
                    $startday = 0;
                }
                $date = mktime(5, 5, 5, $month, $day, $year);
                $currentday = strftime("%w", $date);
                if ($currentday > $startday) {
                    $date -= ($currentday - $startday) * 86400;
                    list($year, $month, $day) = explode("-", strftime("%Y-%m-%d", $date));
                } else {
                    if ($currentday < $startday) {
                        $date -= (7 + $currentday - $startday) * 86400;
                        list($year, $month, $day) = explode("-", strftime("%Y-%m-%d", $date));
                    }
                }
            }
            // only include the year in the date and list views
            if (in_array($task, array("year.listevents", "month.calendar", "week.listevents", "day.listevents"))) {
                $segments[] = $year;
            }
            // only include the month in the date and list views (excluding year)
            if (in_array($task, array("month.calendar", "week.listevents", "day.listevents"))) {
                $segments[] = $month;
            }
            // only include the day in the week and day views (excluding year and month)
            if (in_array($task, array("week.listevents", "day.listevents"))) {
                $segments[] = $day;
            }
            switch ($task) {
                case "jevent.detail":
                case "icalevent.detail":
                case "icalrepeat.detail":
                    if (isset($query['jevtype'])) {
                        unset($query['jevtype']);
                    }
                    if ($transtask != "") {
                        if (isset($query['evid'])) {
                            $segments[] = $query['evid'];
                            unset($query['evid']);
                        } else {
                            $segments[] = "0";
                        }
                    }
                    break;
                default:
                    break;
            }
            if (isset($query['catids']) && strlen($query['catids']) > 0) {
                $segments[] = $query['catids'];
                unset($query['catids']);
            } else {
                if ($transtask != "") {
                    $segments[] = "-";
                }
            }
            switch ($task) {
                case "icalrepeat.detail":
                    if (isset($query['uid'])) {
                        // Some remote UIDs have @ and other dodgy characters in them so encode them for safety
                        //$segments[] = base64_encode($query['uid']);
                        unset($query['uid']);
                    }
                    if (isset($query['title'])) {
                        $segments[] = substr(JApplication::stringURLSafe($query['title']), 0, 150);
                        unset($query['title']);
                    } else {
                        $segments[] = "-";
                    }
                    if ($transtask == "") {
                        if (isset($query['evid'])) {
                            $segments[] = $query['evid'];
                            unset($query['evid']);
                        } else {
                            $segments[] = "0";
                        }
                    }
                    break;
                default:
                    break;
            }
            break;
        case "jevent.edit":
        case "icalevent.edit":
        case "icalevent.publish":
        case "icalevent.unpublish":
        case "icalevent.editcopy":
        case "icalrepeat.edit":
        case "jevent.delete":
        case "icalevent.delete":
        case "icalrepeat.delete":
        case "icalrepeat.deletefuture":
            $segments[] = $transtask;
            if (isset($query['jevtype'])) {
                unset($query['jevtype']);
            }
            if (isset($query['evid'])) {
                $segments[] = $query['evid'];
                unset($query['evid']);
            } else {
                $segments[] = "0";
            }
            break;
        case "modlatest.rss":
            $segments[] = $transtask;
            // assume implicit feed document
            //unset($query['format']);
            // feed type
            if (isset($query['type'])) {
                $segments[] = $query['type'];
                unset($query['type']);
            } else {
                $segments[] = 'rss';
            }
            // modid
            if (isset($query['modid'])) {
                $segments[] = $query['modid'];
                unset($query['modid']);
            } else {
                $segments[] = "0";
            }
            break;
        case "icalrepeat.vcal":
        case "icalevent.vcal":
            $segments[] = $transtask;
            if (isset($query['evid'])) {
                $segments[] = $query['evid'];
                unset($query['evid']);
            } else {
                $segments[] = "0";
            }
            if (isset($query['catids'])) {
                $segments[] = $query['catids'];
                unset($query['catids']);
            } else {
                $segments[] = "0";
            }
            break;
        default:
            $segments[] = $transtask;
            $segments[] = "-";
            break;
    }
    return $segments;
}
Exemplo n.º 4
0
 protected function processMatch(&$content, $match, $dayEvent, $dateParm, $relDay)
 {
     $datenow = JEVHelper::getNow();
     $dispatcher = JDispatcher::getInstance();
     // get the title and start time
     $startDate = JevDate::strtotime($dayEvent->publish_up());
     if ($relDay > 0) {
         $eventDate = JevDate::strtotime($datenow->toFormat('%Y-%m-%d ') . JevDate::strftime('%H:%M', $startDate) . " +{$relDay} days");
     } else {
         $eventDate = JevDate::strtotime($datenow->toFormat('%Y-%m-%d ') . JevDate::strftime('%H:%M', $startDate) . " {$relDay} days");
     }
     $endDate = JevDate::strtotime($dayEvent->publish_down());
     list($st_year, $st_month, $st_day) = explode('-', JevDate::strftime('%Y-%m-%d', $startDate));
     list($ev_year, $ev_month, $ev_day) = explode('-', JevDate::strftime('%Y-%m-%d', $startDate));
     $task_events = 'icalrepeat.detail';
     switch ($match) {
         case 'endDate':
         case 'startDate':
         case 'eventDate':
             // Note we need to examine the date specifiers used to determine if language translation will be
             // necessary.  Do this later when script is debugged.
             if (!$this->disableDateStyle) {
                 $content .= '<span class="mod_events_latest_date">';
             }
             if (!$dayEvent->alldayevent() && $match == "endDate" && ($dayEvent->noendtime() && $dayEvent->getUnixStartDate() == $dayEvent->getUnixEndDate() || $dayEvent->getUnixStartTime() == $dayEvent->getUnixEndTime())) {
                 $time_fmt = "";
             } else {
                 if (!isset($dateParm) || $dateParm == '') {
                     if ($this->com_calUseStdTime) {
                         $time_fmt = $dayEvent->alldayevent() ? '' : IS_WIN ? ' @%I:%M%p' : ' @%l:%M%p';
                     } else {
                         $time_fmt = $dayEvent->alldayevent() ? '' : ' @%H:%M';
                     }
                     $dateFormat = $this->displayYear ? '%a %b %d, %Y' . $time_fmt : '%a %b %d' . $time_fmt;
                     $jmatch = new JevDate(${$match});
                     $content .= $jmatch->toFormat($dateFormat);
                     //$content .= JEV_CommonFunctions::jev_strftime($dateFormat, $$match);
                 } else {
                     // format endDate when midnight to show midnight!
                     if ($match == "endDate" && $dayEvent->sdn() == 59) {
                         $tempEndDate = $endDate + 1;
                         if ($dayEvent->alldayevent()) {
                             // if an all day event then we don't want to roll to the next day
                             $tempEndDate -= 86400;
                         }
                         $match = "tempEndDate";
                     }
                     // if a '%' sign detected in date format string, we assume JevDate::strftime() is to be used,
                     if (preg_match("/\\%/", $dateParm)) {
                         $jmatch = new JevDate(${$match});
                         $content .= $jmatch->toFormat($dateParm);
                     } else {
                         $content .= date($dateParm, ${$match});
                     }
                     if ($match == "tempDndDate") {
                         $match = "endDate";
                     }
                 }
             }
             if (!$this->disableDateStyle) {
                 $content .= "</span>";
             }
             break;
         case 'title':
             $title = $dayEvent->title();
             if (!empty($dateParm)) {
                 $parts = explode("|", $dateParm);
                 if (count($parts) > 0 && strlen($title) > intval($parts[0])) {
                     $title = substr($title, 0, intval($parts[0]));
                     if (count($parts) > 1) {
                         $title .= $parts[1];
                     }
                 }
             }
             if (!$this->disableTitleStyle) {
                 $content .= '<span class="mod_events_latest_content">';
             }
             if ($this->displayLinks) {
                 $link = $dayEvent->viewDetailLink($ev_year, $ev_month, $ev_day, false, $this->myItemid);
                 if ($this->modparams->get("ignorefiltermodule", 0)) {
                     $link = JRoute::_($link . $this->datamodel->getCatidsOutLink() . "&filter_reset=1");
                 } else {
                     $link = JRoute::_($link . $this->datamodel->getCatidsOutLink());
                 }
                 $content .= $this->_htmlLinkCloaking($link, JEventsHTML::special($title));
             } else {
                 $content .= JEventsHTML::special($title);
             }
             if (!$this->disableTitleStyle) {
                 $content .= '</span>';
             }
             break;
         case 'category':
             $catobj = $dayEvent->getCategoryName();
             $content .= JEventsHTML::special($catobj);
             break;
         case 'categoryimage':
             $catobj = $dayEvent->getCategoryImage();
             $content .= $catobj;
             break;
         case 'calendar':
             $catobj = $dayEvent->getCalendarName();
             $content .= JEventsHTML::special($catobj);
             break;
         case 'contact':
             // Also want to cloak contact details so
             $this->modparams->set("image", 1);
             $dayEvent->text = $dayEvent->contact_info();
             $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent, &$this->modparams, 0));
             $dayEvent->contact_info($dayEvent->text);
             $content .= $dayEvent->contact_info();
             break;
         case 'content':
             // Added by Kaz McCoy 1-10-2004
             $this->modparams->set("image", 1);
             $dayEvent->data->text = $dayEvent->content();
             $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             if (!empty($dateParm)) {
                 $parts = explode("|", $dateParm);
                 if (count($parts) > 0 && strlen(strip_tags($dayEvent->data->text)) > intval($parts[0])) {
                     $dayEvent->data->text = substr(strip_tags($dayEvent->data->text), 0, intval($parts[0]));
                     if (count($parts) > 1) {
                         $dayEvent->data->text .= $parts[1];
                     }
                 }
             }
             $dayEvent->content($dayEvent->data->text);
             //$content .= substr($dayEvent->content, 0, 150);
             $content .= $dayEvent->content();
             break;
         case 'addressInfo':
         case 'location':
             $this->modparams->set("image", 0);
             $dayEvent->data->text = $dayEvent->location();
             $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             $dayEvent->location($dayEvent->data->text);
             $content .= $dayEvent->location();
             break;
         case 'duration':
             $timedelta = $dayEvent->noendtime() || $dayEvent->alldayevent() ? "" : $dayEvent->getUnixEndTime() - $dayEvent->getUnixStartTime();
             if ($timedelta == "") {
                 break;
             }
             $fieldval = isset($dateParm) && $dateParm != '' ? $dateParm : JText::_("JEV_DURATION_FORMAT");
             $shownsign = false;
             // whole days!
             if (stripos($fieldval, "%wd") !== false) {
                 $days = intval($timedelta / (60 * 60 * 24));
                 $timedelta -= $days * 60 * 60 * 24;
                 if ($timedelta > 3610) {
                     //if more than 1 hour and 10 seconds over a day then round up the day output
                     $days += 1;
                 }
                 $fieldval = str_ireplace("%wd", $days, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%d") !== false) {
                 $days = intval($timedelta / (60 * 60 * 24));
                 $timedelta -= $days * 60 * 60 * 24;
                 /*
                  if ($timedelta>3610){
                  //if more than 1 hour and 10 seconds over a day then round up the day output
                  $days +=1;
                  }
                 */
                 $fieldval = str_ireplace("%d", $days, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%h") !== false) {
                 $hours = intval($timedelta / (60 * 60));
                 $timedelta -= $hours * 60 * 60;
                 if ($shownsign) {
                     $hours = abs($hours);
                 }
                 $hours = sprintf("%02d", $hours);
                 $fieldval = str_ireplace("%h", $hours, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%m") !== false) {
                 $mins = intval($timedelta / 60);
                 $timedelta -= $hours * 60;
                 if ($mins) {
                     $mins = abs($mins);
                 }
                 $mins = sprintf("%02d", $mins);
                 $fieldval = str_ireplace("%m", $mins, $fieldval);
             }
             $content .= $fieldval;
             break;
         case 'extraInfo':
             $this->modparams->set("image", 0);
             $dayEvent->data->text = $dayEvent->extra_info();
             $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             $dayEvent->extra_info($dayEvent->data->text);
             $content .= $dayEvent->extra_info();
             break;
         case 'countdown':
             $timedelta = $dayEvent->getUnixStartTime() - JevDate::mktime();
             $eventPassed = !($timedelta >= 0);
             $fieldval = $dateParm;
             $shownsign = false;
             if (stripos($fieldval, "%nopast") !== false) {
                 if (!$eventPassed) {
                     $fieldval = str_ireplace("%nopast", "", $fieldval);
                 } else {
                     $fieldval = JText::_('JEV_EVENT_FINISHED');
                 }
             }
             if (stripos($fieldval, "%d") !== false) {
                 $days = intval($timedelta / (60 * 60 * 24));
                 $timedelta -= $days * 60 * 60 * 24;
                 $fieldval = str_ireplace("%d", $days, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%h") !== false) {
                 $hours = intval($timedelta / (60 * 60));
                 $timedelta -= $hours * 60 * 60;
                 if ($shownsign) {
                     $hours = abs($hours);
                 }
                 $hours = sprintf("%02d", $hours);
                 $fieldval = str_ireplace("%h", $hours, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%m") !== false) {
                 $mins = intval($timedelta / 60);
                 $timedelta -= $hours * 60;
                 if ($mins) {
                     $mins = abs($mins);
                 }
                 $mins = sprintf("%02d", $mins);
                 $fieldval = str_ireplace("%m", $mins, $fieldval);
             }
             $content .= $fieldval;
             break;
         case 'createdByAlias':
             $content .= $dayEvent->created_by_alias();
             break;
         case 'createdByUserName':
             $catobj = JEVHelper::getUser($dayEvent->created_by());
             $content .= isset($catobj->username) ? $catobj->username : "";
             break;
         case 'createdByUserEmail':
             // Note that users email address will NOT be available if they don't want to receive email
             $catobj = JEVHelper::getUser($dayEvent->created_by());
             $content .= $catobj->sendEmail ? $catobj->email : '';
             break;
         case 'createdByUserEmailLink':
             // Note that users email address will NOT be available if they don't want to receive email
             $content .= JRoute::_("index.php?option=" . $compname . "&task=" . $task_events . "&agid=" . $dayEvent->id() . "&year=" . $st_year . "&month=" . $st_month . "&day=" . $st_day . "&Itemid=" . $this->myItemid . $this->catout);
             break;
         case 'color':
             $content .= $dayEvent->bgcolor();
             break;
         case 'eventDetailLink':
             $link = $dayEvent->viewDetailLink($st_year, $st_month, $st_day, false, $this->myItemid);
             $link = JRoute::_($link . $this->datamodel->getCatidsOutLink());
             $content .= $link;
             /*
              $content .= JRoute::_("index.php?option="
              . $compname
              . "&task=".$task_events
              . "&agid=".$dayEvent->id()
              . "&year=".$st_year
              . "&month=".$st_month
              . "&day=".$st_day
              . "&Itemid=".$this->myItemid . $this->catout);
             */
             break;
         default:
             try {
                 if (strpos($match, '${') !== false) {
                     $parts = explode('${', $match);
                     $tempstr = "";
                     foreach ($parts as $part) {
                         if (strpos($part, "}") !== false) {
                             // limit to 2 because we may be using joomla content plugins
                             $subparts = explode("}", $part, 2);
                             if (strpos($subparts[0], "#") > 0) {
                                 $formattedparts = explode("#", $subparts[0]);
                                 $subparts[0] = $formattedparts[0];
                             } else {
                                 $formattedparts = array($subparts[0], "%s", "");
                             }
                             $subpart = "_" . $subparts[0];
                             if (isset($dayEvent->{$subpart})) {
                                 $temp = $dayEvent->{$subpart};
                                 if ($temp != "") {
                                     $tempstr .= str_replace("%s", $temp, $formattedparts[1]);
                                 } else {
                                     if (isset($formattedparts[2])) {
                                         $tempstr .= str_replace("%s", $temp, $formattedparts[2]);
                                     }
                                 }
                             } else {
                                 if (isset($dayEvent->customfields[$subparts[0]]['value'])) {
                                     $temp = $dayEvent->customfields[$subparts[0]]['value'];
                                     if ($temp != "") {
                                         $tempstr .= str_replace("%s", $temp, $formattedparts[1]);
                                     } else {
                                         if (isset($formattedparts[2])) {
                                             $tempstr .= str_replace("%s", $temp, $formattedparts[2]);
                                         }
                                     }
                                 } else {
                                     $matchedByPlugin = false;
                                     $layout = "list";
                                     static $fieldNameArrays = array();
                                     $jevplugins = JPluginHelper::getPlugin("jevents");
                                     foreach ($jevplugins as $jevplugin) {
                                         $classname = "plgJevents" . ucfirst($jevplugin->name);
                                         if (is_callable(array($classname, "substitutefield"))) {
                                             if (!isset($fieldNameArrays[$classname])) {
                                                 $fieldNameArrays[$classname] = call_user_func(array($classname, "fieldNameArray"), $layout);
                                             }
                                             if (isset($fieldNameArrays[$classname]["values"])) {
                                                 if (in_array($subparts[0], $fieldNameArrays[$classname]["values"])) {
                                                     $matchedByPlugin = true;
                                                     // is the event detail hidden - if so then hide any custom fields too!
                                                     if (!isset($event->_privateevent) || $event->_privateevent != 3) {
                                                         $temp = call_user_func(array($classname, "substitutefield"), $dayEvent, $subparts[0]);
                                                         if ($temp != "") {
                                                             $tempstr .= str_replace("%s", $temp, $formattedparts[1]);
                                                         } else {
                                                             if (isset($formattedparts[2])) {
                                                                 $tempstr .= str_replace("%s", $temp, $formattedparts[2]);
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                     if (!$matchedByPlugin) {
                                         // Layout editor code
                                         include_once JEV_PATH . "/views/default/helpers/defaultloadedfromtemplate.php";
                                         ob_start();
                                         // false at the end to stop it running through the plugins
                                         $part = "{{Dummy Label:" . implode("#", $formattedparts) . "}}";
                                         DefaultLoadedFromTemplate(false, false, $dayEvent, 0, $part, false);
                                         $newpart = ob_get_clean();
                                         if ($newpart != $part) {
                                             $tempstr .= $newpart;
                                             $matchedByPlugin = true;
                                         }
                                     }
                                     // none of the plugins has replaced the output so we now replace the blank formatted part!
                                     if (!$matchedByPlugin && isset($formattedparts[2])) {
                                         $tempstr .= str_replace("%s", "", $formattedparts[2]);
                                     }
                                     //$dispatcher->trigger( 'onLatestEventsField', array( &$dayEvent, $subparts[0], &$tempstr));
                                 }
                             }
                             $tempstr .= $subparts[1];
                         } else {
                             $tempstr .= $part;
                         }
                     }
                     $content .= $tempstr;
                 } else {
                     if ($match) {
                         $content .= $match;
                     }
                 }
             } catch (Exception $e) {
                 if ($match) {
                     $content .= $match;
                 }
             }
             break;
     }
     // end of switch
 }
Exemplo n.º 5
0
 /**
  * Get array Year, Month, Day from current Request, fallback to current date
  *
  * @return array
  */
 public static function getYMD()
 {
     static $data;
     if (!isset($data)) {
         $datenow = JEVHelper::getNow();
         list($yearnow, $monthnow, $daynow) = explode('-', $datenow->toFormat('%Y-%m-%d'));
         $year = min(2100, abs(intval(JRequest::getVar('year', $yearnow))));
         $month = min(99, abs(intval(JRequest::getVar('month', $monthnow))));
         $day = min(3650, abs(intval(JRequest::getVar('day', $daynow))));
         if ($day <= 0) {
             $day = $daynow;
         }
         if ($month <= 0) {
             $month = $monthnow;
         }
         if ($year <= 0) {
             $year = $yearnow;
         }
         if ($day <= '9') {
             $day = '0' . $day;
         }
         if ($month <= '9') {
             $month = '0' . $month;
         }
         // Make sure $day is not outside the month
         $lastDayOfMonth = intval(strftime("%d", mktime(6, 0, 0, $month + 1, 1, $year) - 86400));
         $day = $lastDayOfMonth < $day ? $lastDayOfMonth : $day;
         $data = array();
         $data[] = $year;
         $data[] = $month;
         $data[] = $day;
     }
     return $data;
 }
Exemplo n.º 6
0
 function displayLatestEvents()
 {
     // this will get the viewname based on which classes have been implemented
     $viewname = $this->getTheme();
     $cfg =& JEVConfig::getInstance();
     $compname = JEV_COM_COMPONENT;
     $viewpath = "components/" . JEV_COM_COMPONENT . "/views/" . $viewname . "/assets/css/";
     $dispatcher =& JDispatcher::getInstance();
     $datenow = JEVHelper::getNow();
     $this->getLatestEventsData();
     $content = "";
     $content .= '<table class="mod_events_latest_table" width="100%" border="0" cellspacing="0" cellpadding="0" align="center">';
     if (isset($this->eventsByRelDay) && count($this->eventsByRelDay)) {
         // Now to display these events, we just start at the smallest index of the $this->eventsByRelDay array
         // and work our way up.
         $firstTime = true;
         // initialize name of com_jevents module and task defined to view
         // event detail.  Note that these could change in future com_event
         // component revisions!!  Note that the '$this->itemId' can be left out in
         // the link parameters for event details below since the event.php
         // component handler will fetch its own id from the db menu table
         // anyways as far as I understand it.
         $this->processFormatString();
         foreach ($this->eventsByRelDay as $relDay => $daysEvents) {
             reset($daysEvents);
             // get all of the events for this day
             foreach ($daysEvents as $dayEvent) {
                 if ($firstTime) {
                     $content .= '<tr><td class="mod_events_latest_first">';
                 } else {
                     $content .= '<tr><td class="mod_events_latest">';
                 }
                 // generate output according custom string
                 foreach ($this->splitCustomFormat as $condtoken) {
                     if (isset($condtoken['cond'])) {
                         if ($condtoken['cond'] == 'a' && !$dayEvent->alldayevent()) {
                             continue;
                         } else {
                             if ($condtoken['cond'] == '!a' && $dayEvent->alldayevent()) {
                                 continue;
                             } else {
                                 if ($condtoken['cond'] == 'e' && !($dayEvent->noendtime() || $dayEvent->alldayevent())) {
                                     continue;
                                 } else {
                                     if ($condtoken['cond'] == '!e' && ($dayEvent->noendtime() || $dayEvent->alldayevent())) {
                                         continue;
                                     } else {
                                         if ($condtoken['cond'] == '!m' && $dayEvent->getUnixStartDate() != $dayEvent->getUnixEndDate()) {
                                             continue;
                                         } else {
                                             if ($condtoken['cond'] == 'm' && $dayEvent->getUnixStartDate() == $dayEvent->getUnixEndDate()) {
                                                 continue;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     foreach ($condtoken['data'] as $token) {
                         unset($match);
                         unset($dateParm);
                         $dateParm = "";
                         $match = '';
                         if (is_array($token)) {
                             $match = $token['keyword'];
                             $dateParm = isset($token['dateParm']) ? trim($token['dateParm']) : "";
                         } else {
                             if (strpos($token, '${') !== false) {
                                 $match = $token;
                             } else {
                                 $content .= $token;
                                 continue;
                             }
                         }
                         $this->processMatch($content, $match, $dayEvent, $dateParm, $relDay);
                     }
                     // end of foreach
                 }
                 // end of foreach
                 $content .= "</td></tr>\n";
                 $firstTime = false;
             }
             // end of foreach
         }
         // end of foreach
     } else {
         $content .= '<tr><td class="mod_events_latest_noevents">' . JText::_('JEV_NO_EVENTS') . '</td></tr>' . "\n";
     }
     $content .= "</table>\n";
     $callink_HTML = '<div class="mod_events_latest_callink">' . $this->getCalendarLink() . '</div>';
     if ($this->linkToCal == 1) {
         $content = $callink_HTML . $content;
     }
     if ($this->linkToCal == 2) {
         $content .= $callink_HTML;
     }
     if ($this->displayRSS) {
         if (JVersion::isCompatible("1.6.0")) {
             $rssimg = JURI::root() . "media/system/images/livemarks.png";
         } else {
             $rssimg = JURI::root() . "images/M_images/livemarks.png";
         }
         $callink_HTML = '<div class="mod_events_latest_rsslink">' . '<a href="' . $this->rsslink . '" title="' . JText::_("RSS Feed") . '"  target="_blank">' . '<img src="' . $rssimg . '" alt="' . JText::_("RSS Feed") . '" />' . JText::_("Subscribe to RSS Feed") . '</a>' . '</div>';
         $content .= $callink_HTML;
     }
     return $content;
 }
Exemplo n.º 7
0
 function displayLatestEvents()
 {
     $cfg = JEVConfig::getInstance();
     $compname = JEV_COM_COMPONENT;
     $dispatcher = JDispatcher::getInstance();
     $datenow = JEVHelper::getNow();
     $this->getLatestEventsData();
     $content = "";
     if (isset($this->eventsByRelDay) && count($this->eventsByRelDay)) {
         $content .= $this->modparams->get("modlatest_templatetop") ? $this->modparams->get("modlatest_templatetop") : '<table class="mod_events_latest_table jevbootstrap" width="100%" border="0" cellspacing="0" cellpadding="0" align="center">';
         // Now to display these events, we just start at the smallest index of the $this->eventsByRelDay array
         // and work our way up.
         $firstTime = true;
         // initialize name of com_jevents module and task defined to view
         // event detail.  Note that these could change in future com_event
         // component revisions!!  Note that the '$this->itemId' can be left out in
         // the link parameters for event details below since the event.php
         // component handler will fetch its own id from the db menu table
         // anyways as far as I understand it.
         $task_events = 'icalrepeat.detail';
         $this->processFormatString();
         foreach ($this->eventsByRelDay as $relDay => $daysEvents) {
             reset($daysEvents);
             // get all of the events for this day
             foreach ($daysEvents as $dayEvent) {
                 $eventcontent = "";
                 // generate output according custom string
                 foreach ($this->splitCustomFormat as $condtoken) {
                     if (isset($condtoken['cond'])) {
                         if ($condtoken['cond'] == 'a' && !$dayEvent->alldayevent()) {
                             continue;
                         } else {
                             if ($condtoken['cond'] == '!a' && $dayEvent->alldayevent()) {
                                 continue;
                             } else {
                                 if ($condtoken['cond'] == 'e' && !($dayEvent->noendtime() || $dayEvent->alldayevent())) {
                                     continue;
                                 } else {
                                     if ($condtoken['cond'] == '!e' && ($dayEvent->noendtime() || $dayEvent->alldayevent())) {
                                         continue;
                                     } else {
                                         if ($condtoken['cond'] == '!m' && $dayEvent->getUnixStartDate() != $dayEvent->getUnixEndDate()) {
                                             continue;
                                         } else {
                                             if ($condtoken['cond'] == 'm' && $dayEvent->getUnixStartDate() == $dayEvent->getUnixEndDate()) {
                                                 continue;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     foreach ($condtoken['data'] as $token) {
                         unset($match);
                         unset($dateParm);
                         $dateParm = "";
                         $match = '';
                         if (is_array($token)) {
                             $match = $token['keyword'];
                             $dateParm = isset($token['dateParm']) ? trim($token['dateParm']) : "";
                         } else {
                             if (strpos($token, '${') !== false) {
                                 $match = $token;
                             } else {
                                 $eventcontent .= $token;
                                 continue;
                             }
                         }
                         $this->processMatch($eventcontent, $match, $dayEvent, $dateParm, $relDay);
                     }
                     // end of foreach
                 }
                 // end of foreach
                 $dst = "border-color:" . $dayEvent->bgcolor();
                 if ($firstTime) {
                     $eventrow = '<tr><td class="mod_events_latest_first" style="' . $dst . '">%s' . "</td></tr>\n";
                 } else {
                     $eventrow = '<tr><td class="mod_events_latest" style="' . $dst . '">%s' . "</td></tr>\n";
                 }
                 $templaterow = $this->modparams->get("modlatest_templaterow") ? $this->modparams->get("modlatest_templaterow") : $eventrow;
                 $content .= str_replace("%s", $eventcontent, $templaterow);
                 $firstTime = false;
             }
             // end of foreach
         }
         // end of foreach
         $content .= $this->modparams->get("modlatest_templatebottom") ? $this->modparams->get("modlatest_templatebottom") : "</table>\n";
     } else {
         if ($this->modparams->get("modlatest_NoEvents", 1)) {
             $content .= $this->modparams->get("modlatest_templatetop") ? $this->modparams->get("modlatest_templatetop") : '<table class="mod_events_latest_table jevbootstrap" width="100%" border="0" cellspacing="0" cellpadding="0" align="center">';
             $templaterow = $this->modparams->get("modlatest_templaterow") ? $this->modparams->get("modlatest_templaterow") : '<tr><td class="mod_events_latest_noevents">%s</td></tr>' . "\n";
             $content .= str_replace("%s", JText::_('JEV_NO_EVENTS'), $templaterow);
             $content .= $this->modparams->get("modlatest_templatebottom") ? $this->modparams->get("modlatest_templatebottom") : "</table>\n";
         }
     }
     $callink_HTML = '<div class="mod_events_latest_callink">' . $this->getCalendarLink() . '</div>';
     if ($this->linkToCal == 1) {
         $content = $callink_HTML . $content;
     }
     if ($this->linkToCal == 2) {
         $content .= $callink_HTML;
     }
     if ($this->displayRSS) {
         $rssimg = JURI::root() . "media/system/images/livemarks.png";
         $callink_HTML = '<div class="mod_events_latest_rsslink">' . '<a href="' . $this->rsslink . '" title="' . JText::_("RSS_FEED") . '" target="_blank">' . '<img src="' . $rssimg . '" alt="' . JText::_("RSS_FEED") . '" />' . JText::_("SUBSCRIBE_TO_RSS_FEED") . '</a>' . '</div>';
         $content .= $callink_HTML;
     }
     if ($this->modparams->get("contentplugins", 0)) {
         $dispatcher = JDispatcher::getInstance();
         $eventdata = new stdClass();
         //$eventdata->text = str_replace("{/toggle","{/toggle}",$content);
         $eventdata->text = $content;
         $dispatcher->trigger('onContentPrepare', array('com_jevents', &$eventdata, &$this->modparams, 0));
         $content = $eventdata->text;
     }
     return $content;
 }
Exemplo n.º 8
0
 function getKeywordData($keyword, $limit, $limitstart, $useRegX = true)
 {
     $data = array();
     $user =& JFactory::getUser();
     $Itemid = JEVHelper::getItemid();
     $db =& JFactory::getDBO();
     $cfg =& JEVConfig::getInstance();
     include_once JPATH_ADMINISTRATOR . "/components/" . JEV_COM_COMPONENT . "/libraries/colorMap.php";
     $keyword = preg_replace("/[[:space:]]+/", ' +', $keyword);
     $keyword = trim($keyword);
     $keyword = preg_replace("/\\++/", '+', $keyword);
     $keywordcheck = preg_replace("/ |\\+/", '', $keyword);
     $searchisValid = false;
     $total = 0;
     if (empty($keyword) || JString::strlen($keywordcheck) < 3 || $keyword == '%%' || $keywordcheck == '') {
         $keyword = JText::_('JEV_KEYWORD_NOT_VALID');
         $num_events = 0;
         $rows = array();
         $data['total'] = 0;
         $data['limit'] = 0;
         $data['limitstart'] = 0;
         $data['num_events'] = 0;
     } else {
         $searchisValid = true;
         $rows = $this->queryModel->listEventsByKeyword($keyword, 'publish_up,catid', $limit, $limitstart, $total, $useRegX);
         $data['total'] = $total;
         $data['limit'] = $limit;
         $data['limitstart'] = $limitstart;
         $num_events = count($rows);
         $data['num_events'] = $num_events;
     }
     $chdate = '';
     $chcat = '';
     if ($num_events > 0) {
         for ($r = 0; $r < $num_events; $r++) {
             $row =& $rows[$r];
             $row->catname = $row->getCategoryName();
             $row->contactlink = JEventsHTML::getUserMailtoLink($row->id(), $row->created_by());
             $row->bgcolor = JEV_CommonFunctions::setColor($row);
             $row->fgcolor = JevMapColor($row->bgcolor);
             $t_datenow = JEVHelper::getNow();
             $now_adjusted = $t_datenow->toUnix(true);
             if ($row->mup() == JevDate::strftime('%m', $now_adjusted) && $row->yup() == JevDate::strftime('%Y', $now_adjusted) && $row->dup() == JevDate::strftime('%d', $now_adjusted)) {
                 $row->today = true;
             } else {
                 $row->today = false;
             }
         }
     }
     $data['rows'] = $rows;
     return $data;
 }
 function getNextRepeat($allowexceptions = true)
 {
     $t_datenow = JEVHelper::getNow();
     $now = $t_datenow->toMysql();
     $db =& JFactory::getDBO();
     $query = "SELECT ev.*, rpt.*, rr.*, det.* " . "\n , YEAR(rpt.startrepeat) as yup, MONTH(rpt.startrepeat ) as mup, DAYOFMONTH(rpt.startrepeat ) as dup" . "\n , YEAR(rpt.endrepeat  ) as ydn, MONTH(rpt.endrepeat   ) as mdn, DAYOFMONTH(rpt.endrepeat   ) as ddn" . "\n , HOUR(rpt.startrepeat) as hup, MINUTE(rpt.startrepeat ) as minup, SECOND(rpt.startrepeat ) as sup" . "\n , HOUR(rpt.endrepeat  ) as hdn, MINUTE(rpt.endrepeat   ) as mindn, SECOND(rpt.endrepeat   ) as sdn" . "\n FROM #__jevents_vevent as ev " . "\n LEFT JOIN #__jevents_repetition as rpt ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = ev.ev_id" . (!$allowexceptions ? "\n LEFT JOIN #__jevents_exception as exc ON exc.rp_id=rpt.rp_id" : "") . "\n WHERE ev.ev_id = '" . $this->ev_id() . "' " . (!$allowexceptions ? "\n AND exc.rp_id IS NULL" : "") . "\n AND  rpt.startrepeat >= '" . $now . "' " . "\n ORDER BY rpt.startrepeat asc LIMIT 1";
     $db->setQuery($query);
     $rows = $db->loadObjectList();
     if (!$rows || count($rows) == 0) {
         // Look backwards as fallback
         $query = "SELECT ev.*, rpt.*, rr.*, det.* " . "\n , YEAR(rpt.startrepeat) as yup, MONTH(rpt.startrepeat ) as mup, DAYOFMONTH(rpt.startrepeat ) as dup" . "\n , YEAR(rpt.endrepeat  ) as ydn, MONTH(rpt.endrepeat   ) as mdn, DAYOFMONTH(rpt.endrepeat   ) as ddn" . "\n , HOUR(rpt.startrepeat) as hup, MINUTE(rpt.startrepeat ) as minup, SECOND(rpt.startrepeat ) as sup" . "\n , HOUR(rpt.endrepeat  ) as hdn, MINUTE(rpt.endrepeat   ) as mindn, SECOND(rpt.endrepeat   ) as sdn" . "\n FROM #__jevents_vevent as ev " . "\n LEFT JOIN #__jevents_repetition as rpt ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = ev.ev_id" . (!$allowexceptions ? "\n LEFT JOIN #__jevents_exception as exc ON exc.rp_id=rpt.rp_id" : "") . "\n WHERE ev.ev_id = '" . $this->ev_id() . "' " . (!$allowexceptions ? "\n AND exc.rp_id IS NULL" : "") . "\n AND  rpt.startrepeat <= '" . $now . "' " . "\n ORDER BY rpt.startrepeat desc LIMIT 1";
         $db->setQuery($query);
         $rows = $db->loadObjectList();
     }
     $row = null;
     // iCal agid uses GUID or UUID as identifier
     if ($rows) {
         $row = new jIcalEventRepeat($rows[0]);
     }
     return $row;
 }
function DefaultViewHelperShowNavTableBar($view)
{
    // this, previous and next date handling
    $cfg =& JEVConfig::getInstance();
    // Optionally display no nav bar
    if ($cfg->get('com_calUseIconic', 1) == -1) {
        return "";
    }
    $t_datenow = JEVHelper::getNow();
    $datetime = JevDate::strftime('%Y-%m-%d %H:%M:%S', $t_datenow->toUnix(true));
    preg_match("#([0-9]{4})-([0-9]{2})-([0-9]{2})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})#", $datetime, $regs);
    $this_date = new JEventDate();
    $this_date->setDate($view->year, $view->month, $view->day);
    $today_date = clone $this_date;
    $today_date->setDate($regs[1], $regs[2], $regs[3]);
    $task = JRequest::getString("jevtask");
    $view->loadModules("jevpretoolbar");
    $view->loadModules("jevpretoolbar_" . $task);
    $prev_year = clone $this_date;
    $prev_year->addMonths(-12);
    $next_year = clone $this_date;
    $next_year->addMonths(+12);
    $prev_month = clone $this_date;
    $prev_month->addMonths(-1);
    $next_month = clone $this_date;
    $next_month->addMonths(+1);
    $prev_week = clone $this_date;
    $prev_week->addDays(-7);
    $next_week = clone $this_date;
    $next_week->addDays(+7);
    $prev_day = clone $this_date;
    $prev_day->addDays(-1);
    $next_day = clone $this_date;
    $next_day->addDays(+1);
    switch ($task) {
        case 'year.listevents':
            $dates['prev2'] = $prev_year;
            $dates['prev1'] = $prev_year;
            $dates['next1'] = $next_year;
            $dates['next2'] = $next_year;
            $alts['prev2'] = JText::_('JEV_PREVIOUSYEAR');
            $alts['prev1'] = JText::_('JEV_PREVIOUSYEAR');
            $alts['next1'] = JText::_('JEV_NEXTYEAR');
            $alts['next2'] = JText::_('JEV_NEXTYEAR');
            // Show
            if ($cfg->get('com_calUseIconic', 1) == 1 || $cfg->get('com_calUseIconic', 1) == 2) {
                $view->viewNavTableBarIconic($today_date, $this_date, $dates, $alts, JEV_COM_COMPONENT, $task, $view->Itemid);
            } else {
                $view->viewNavTableBar($today_date, $this_date, $dates, $alts, JEV_COM_COMPONENT, $task, $view->Itemid);
            }
            break;
        case 'month.calendar':
            $dates['prev2'] = $prev_year;
            $dates['prev1'] = $prev_month;
            $dates['next1'] = $next_month;
            $dates['next2'] = $next_year;
            $alts['prev2'] = JText::_('JEV_PREVIOUSYEAR');
            $alts['prev1'] = JText::_('JEV_PREVIOUSMONTH');
            $alts['next1'] = JText::_('JEV_NEXTMONTH');
            $alts['next2'] = JText::_('JEV_NEXTYEAR');
            // Show
            if ($cfg->get('com_calUseIconic', 1) == 1 || $cfg->get('com_calUseIconic', 1) == 2) {
                $view->viewNavTableBarIconic($today_date, $this_date, $dates, $alts, JEV_COM_COMPONENT, $task, $view->Itemid);
            } else {
                $view->viewNavTableBar($today_date, $this_date, $dates, $alts, JEV_COM_COMPONENT, $task, $view->Itemid);
            }
            break;
        case 'week.listevents':
            $dates['prev2'] = $prev_month;
            $dates['prev1'] = $prev_week;
            $dates['next1'] = $next_week;
            $dates['next2'] = $next_month;
            $alts['prev2'] = JText::_('JEV_PREVIOUSMONTH');
            $alts['prev1'] = JText::_('JEV_PREVIOUSWEEK');
            $alts['next1'] = JText::_('JEV_NEXTWEEK');
            $alts['next2'] = JText::_('JEV_NEXTMONTH');
            // Show
            if ($cfg->get('com_calUseIconic', 1) == 1 || $cfg->get('com_calUseIconic', 1) == 2) {
                $view->viewNavTableBarIconic($today_date, $this_date, $dates, $alts, JEV_COM_COMPONENT, $task, $view->Itemid);
            } else {
                $view->viewNavTableBar($today_date, $this_date, $dates, $alts, JEV_COM_COMPONENT, $task, $view->Itemid);
            }
            break;
        case 'day.listevents':
        default:
            $dates['prev2'] = $prev_month;
            $dates['prev1'] = $prev_day;
            $dates['next1'] = $next_day;
            $dates['next2'] = $next_month;
            $alts['prev2'] = JText::_('JEV_PREVIOUSMONTH');
            $alts['prev1'] = JText::_('JEV_PREVIOUSDAY');
            $alts['next1'] = JText::_('JEV_NEXTDAY');
            $alts['next2'] = JText::_('JEV_NEXTMONTH');
            // Show
            if ($cfg->get('com_calUseIconic', 1) == 1 || $cfg->get('com_calUseIconic', 1) == 2) {
                $view->viewNavTableBarIconic($today_date, $this_date, $dates, $alts, JEV_COM_COMPONENT, $task, $view->Itemid);
            } else {
                $view->viewNavTableBar($today_date, $this_date, $dates, $alts, JEV_COM_COMPONENT, "day.listevents", $view->Itemid);
            }
            break;
    }
    $view->loadModules("jevposttoolbar");
    $view->loadModules("jevposttoolbar_" . $task);
}
Exemplo n.º 11
0
$docimage = new JFeedImage();
$docimage->description = $this->info['description'];
$docimage->title = $this->info['title'];
$docimage->url = $this->info['image_url'];
$docimage->link = $this->info['imagelink'];
$doc->image = $docimage;
foreach ($this->eventsByRelDay as $relDay => $ebrd) {
    foreach ($ebrd as $row) {
        // title for particular item
        $item_title = htmlspecialchars($row->title());
        $item_title = html_entity_decode($item_title);
        // url link to article
        $startDate = $row->publish_up();
        //$eventDate = JevDate::mktime(JString::substr($startDate,11,2),JString::substr($startDate,14,2), JString::substr($startDate,17,2),$this->jeventCalObject->now_m,$this->jeventCalObject->now_d + $relDay,$this->jeventCalObject->now_Y);
        $eventDate = JevDate::strtotime($startDate);
        $datenow = JEVHelper::getNow();
        if ($relDay > 0) {
            $eventDate = JevDate::strtotime($datenow->toFormat('%Y-%m-%d ') . JevDate::strftime('%H:%M', $eventDate) . " +{$relDay} days");
        } else {
            $eventDate = JevDate::strtotime($datenow->toFormat('%Y-%m-%d ') . JevDate::strftime('%H:%M', $eventDate) . " {$relDay} days");
        }
        $targetid = $this->modparams->get("target_itemid", 0);
        $link = $row->viewDetailLink(date("Y", $eventDate), date("m", $eventDate), date("d", $eventDate), false, $targetid);
        $link = str_replace("&tmpl=component", "", $link);
        $item_link = JRoute::_($link . $this->jeventCalObject->datamodel->getCatidsOutLink());
        // removes all formating from the intro text for the description text
        $item_description = $row->content();
        // remove dodgy border e.g. "diamond/question mark"
        $item_description = preg_replace('#border=[\\"\'][^0-9]*[\\"\']#i', '', $item_description);
        if ($this->info['limit_text']) {
            if ($this->info['text_length']) {
Exemplo n.º 12
0
 function listLatestIcalEvents($startdate, $enddate, $limit = 10, $noRepeats = 0, $multidayTreatment = 0)
 {
     $user = JFactory::getUser();
     $lang =& JFactory::getLanguage();
     $langtag = $lang->getTag();
     if (strpos($startdate, "-") === false) {
         $startdate = JevDate::strftime('%Y-%m-%d 00:00:00', $startdate);
         $enddate = JevDate::strftime('%Y-%m-%d 23:59:59', $enddate);
     }
     // process the new plugins
     // get extra data and conditionality from plugins
     $extrawhere = array();
     $extrajoin = array();
     $rptwhere = array();
     $extrafields = "";
     // must have comma prefix
     $extratables = "";
     // must have comma prefix
     $needsgroup = false;
     $filterarray = array("published", "justmine", "category", "search");
     // If there are extra filters from the module then apply them now
     $reg =& JFactory::getConfig();
     $modparams = $reg->getValue("jev.modparams", false);
     if ($modparams && $modparams->getValue("extrafilters", false)) {
         $filterarray = array_merge($filterarray, explode(",", $modparams->getValue("extrafilters", false)));
     }
     $filters = jevFilterProcessing::getInstance($filterarray);
     $filters->setWhereJoin($extrawhere, $extrajoin);
     $needsgroup = $filters->needsGroupBy();
     $dispatcher =& JDispatcher::getInstance();
     $dispatcher->trigger('onListIcalEvents', array(&$extrafields, &$extratables, &$extrawhere, &$extrajoin, &$needsgroup, &$rptwhere));
     // What if join multiplies the rows?
     // Useful MySQL link http://forums.mysql.com/read.php?10,228378,228492#msg-228492
     // concat with group
     // http://www.mysqlperformanceblog.com/2006/09/04/group_concat-useful-group-by-extension/
     // did any of the plugins adjust the range of dateds allowed eg. timelimit plugin - is so then we need to use this information otherwise we  get problems
     $regex = "#(rpt.endrepeat>='[0-9:\\- ]*' AND rpt.startrepeat<='[0-9:\\- ]*')#";
     foreach ($extrawhere as $exwhere) {
         if (preg_match($regex, $exwhere)) {
             $rptwhere[] = str_replace("rpt.", "rpt2.", $exwhere);
         }
     }
     $rptwhere = count($rptwhere) ? ' AND ' . implode(' AND ', $rptwhere) : '';
     $catwhere = "\n WHERE ev.catid IN(" . $this->accessibleCategoryList() . ")";
     $params = JComponentHelper::getParams("com_jevents");
     if ($params->get("multicategory", 0)) {
         $extrajoin[] = "\n #__jevents_catmap as catmap ON catmap.evid = rpt.eventid";
         $extrajoin[] = "\n #__categories AS catmapcat ON catmap.catid = catmapcat.id";
         $extrafields .= ", GROUP_CONCAT(DISTINCT catmap.catid SEPARATOR ',') as catids";
         $extrawhere[] = " catmapcat.access " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user));
         $extrawhere[] = " catmap.catid IN(" . $this->accessibleCategoryList() . ")";
         $needsgroup = true;
         $catwhere = "\n WHERE 1 ";
     }
     $extrajoin = count($extrajoin) ? " \n LEFT JOIN " . implode(" \n LEFT JOIN ", $extrajoin) : '';
     $extrawhere = count($extrawhere) ? ' AND ' . implode(' AND ', $extrawhere) : '';
     // get the event ids first - split into 2 queries to pick up the ones after now and the ones before
     $t_datenow = JEVHelper::getNow();
     $t_datenowSQL = $t_datenow->toMysql();
     // multiday condition
     if ($multidayTreatment == 3) {
         // We only show events once regardless of multiday setting of event so we allow them all through here!
         $multiday = "";
         $multiday2 = "";
     } else {
         if ($multidayTreatment == 2) {
             // We only show events on their first day only regardless of multiday setting of event so we allow them all through here!
             $multiday = "";
             $multiday2 = "";
         } else {
             if ($multidayTreatment == 1) {
                 // We only show events on all days regardless of multiday setting of event so we allow them all through here!
                 $multiday = "";
                 $multiday2 = "";
             } else {
                 // We only show events on their first day if they are not to be shown on multiple days so also add this condition
                 // i.e. the event settings are used
                 // This is the true version of these conditions
                 //$multiday = "\n AND ((rpt.startrepeat >= '$startdate' AND det.multiday=0) OR  det.multiday=1)";
                 //$multiday2 = "\n AND ((rpt.startrepeat <= '$startdate' AND det.multiday=0) OR  det.multiday=1)";
                 // BUT this is logically equivalent and appears much faster  on some databases
                 $multiday = "\n AND (rpt.startrepeat >= '{$startdate}' OR  det.multiday=1)";
                 $multiday2 = "\n AND (rpt.startrepeat <= '{$startdate}'OR  det.multiday=1)";
             }
         }
     }
     if ($noRepeats) {
         // Display a repeating event ONCE we group by event id selecting the most appropriate repeat for each one
         // Find the ones after now (only if not past only)
         $rows1 = array();
         if ($enddate >= $t_datenowSQL && $modparams->get("pastonly", 0) != 1) {
             $query = "SELECT rpt.*, ev.*, rr.*, det.*, ev.state as published, ev.created as created {$extrafields}" . "\n , YEAR(rpt.startrepeat) as yup, MONTH(rpt.startrepeat ) as mup, DAYOFMONTH(rpt.startrepeat ) as dup" . "\n , YEAR(rpt.endrepeat  ) as ydn, MONTH(rpt.endrepeat   ) as mdn, DAYOFMONTH(rpt.endrepeat   ) as ddn" . "\n , HOUR(rpt.startrepeat) as hup, MINUTE(rpt.startrepeat ) as minup, SECOND(rpt.startrepeat ) as sup" . "\n , HOUR(rpt.endrepeat  ) as hdn, MINUTE(rpt.endrepeat   ) as mindn, SECOND(rpt.endrepeat   ) as sdn" . "\n FROM #__jevents_repetition as rpt" . "\n LEFT JOIN #__jevents_vevent as ev ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_icsfile as icsf ON icsf.ics_id=ev.icsid " . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = rpt.eventid" . $extrajoin . $catwhere . "\n AND rpt.endrepeat >= '{$t_datenowSQL}' AND rpt.startrepeat <= '{$enddate}'" . $multiday . $extrawhere . "\n AND ev.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "  AND icsf.state=1 " . "\n AND icsf.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "\n AND rpt.startrepeat=(\n\t\t\t\tSELECT MIN(startrepeat) FROM #__jevents_repetition as rpt2\n\t\t\t\tWHERE rpt2.eventid=rpt.eventid\n\t\t\t\tAND  (\n\t\t\t\t\t(rpt2.startrepeat >= '{$t_datenowSQL}' AND rpt2.startrepeat <= '{$enddate}')\n\t\t\t\t\tOR (rpt2.startrepeat <= '{$t_datenowSQL}' AND rpt2.endrepeat  > '{$t_datenowSQL}'  AND det.multiday=1)\n\t\t\t\t\t)\n\t\t\t\t{$rptwhere}\n\t\t\t) \n\t\t\tGROUP BY ev.ev_id\n\t\t\tORDER BY rpt.startrepeat";
             // This limit will always be enough
             $query .= " LIMIT " . $limit;
             $cache =& JFactory::getCache(JEV_COM_COMPONENT);
             list($usec, $sec) = explode(" ", microtime());
             $dbstart = (double) $usec + (double) $sec;
             $rows1 = $cache->call('JEventsDBModel::_cachedlistIcalEvents', $query, $langtag);
             list($usec, $sec) = explode(" ", microtime());
             $dbend = (double) $usec + (double) $sec;
             //echo "query ". round($dbend - $dbstart,4)."<br/>";
         }
         // Before now (only if not past only == future events)
         $rows2 = array();
         if ($startdate <= $t_datenowSQL && $modparams->get("pastonly", 0) < 2) {
             // note the order is the ones nearest today
             $query = "SELECT rpt.*, ev.*, rr.*, det.*, ev.state as published, ev.created as created {$extrafields}" . "\n , YEAR(rpt.startrepeat) as yup, MONTH(rpt.startrepeat ) as mup, DAYOFMONTH(rpt.startrepeat ) as dup" . "\n , YEAR(rpt.endrepeat  ) as ydn, MONTH(rpt.endrepeat   ) as mdn, DAYOFMONTH(rpt.endrepeat   ) as ddn" . "\n , HOUR(rpt.startrepeat) as hup, MINUTE(rpt.startrepeat ) as minup, SECOND(rpt.startrepeat ) as sup" . "\n , HOUR(rpt.endrepeat  ) as hdn, MINUTE(rpt.endrepeat   ) as mindn, SECOND(rpt.endrepeat   ) as sdn" . "\n FROM #__jevents_repetition as rpt" . "\n LEFT JOIN #__jevents_vevent as ev ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_icsfile as icsf ON icsf.ics_id=ev.icsid " . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = rpt.eventid" . $extrajoin . $catwhere . "\n AND rpt.endrepeat >= '{$startdate}' AND rpt.startrepeat <= '{$t_datenowSQL}'" . $multiday . $extrawhere . "\n AND ev.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "  AND icsf.state=1 " . "\n AND icsf.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "\n AND rpt.startrepeat=(\n\t\t\t\t\tSELECT MAX(startrepeat) FROM #__jevents_repetition as rpt2\n\t\t\t\t\t WHERE rpt2.eventid=rpt.eventid\n\t\t\t\t\tAND rpt2.startrepeat <= '{$t_datenowSQL}' AND rpt2.startrepeat >= '{$startdate}'\n\t\t\t\t\t{$rptwhere}\n\t\t\t\t)\n\t\t\t\tGROUP BY ev.ev_id\n\t\t\t\tORDER BY rpt.startrepeat desc";
             // This limit will always be enough
             $query .= " LIMIT " . $limit;
             $cache =& JFactory::getCache(JEV_COM_COMPONENT);
             list($usec, $sec) = explode(" ", microtime());
             $dbstart = (double) $usec + (double) $sec;
             $rows2 = $cache->call('JEventsDBModel::_cachedlistIcalEvents', $query, $langtag);
             list($usec, $sec) = explode(" ", microtime());
             $dbend = (double) $usec + (double) $sec;
             //echo "query ". round($dbend - $dbstart,4)."<br/>";
         }
         $rows3 = array();
         if ($multidayTreatment != 2 && $multidayTreatment != 3) {
             // Mutli day events
             $query = "SELECT rpt.*, ev.*, rr.*, det.*, ev.state as published, ev.created as created {$extrafields}" . "\n , YEAR(rpt.startrepeat) as yup, MONTH(rpt.startrepeat ) as mup, DAYOFMONTH(rpt.startrepeat ) as dup" . "\n , YEAR(rpt.endrepeat  ) as ydn, MONTH(rpt.endrepeat   ) as mdn, DAYOFMONTH(rpt.endrepeat   ) as ddn" . "\n , HOUR(rpt.startrepeat) as hup, MINUTE(rpt.startrepeat ) as minup, SECOND(rpt.startrepeat ) as sup" . "\n , HOUR(rpt.endrepeat  ) as hdn, MINUTE(rpt.endrepeat   ) as mindn, SECOND(rpt.endrepeat   ) as sdn" . "\n FROM #__jevents_repetition as rpt" . "\n LEFT JOIN #__jevents_vevent as ev ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_icsfile as icsf ON icsf.ics_id=ev.icsid " . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = rpt.eventid" . $extrajoin . $catwhere . "\n AND rpt.endrepeat >= '{$startdate}' AND rpt.startrepeat <= '{$t_datenowSQL}'" . $multiday2 . $extrawhere . "\n AND ev.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "  AND icsf.state=1 " . "\n AND icsf.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "\n AND rpt.startrepeat <= '{$t_datenowSQL}' AND rpt.endrepeat >= '{$t_datenowSQL}'" . " \n GROUP BY ev.ev_id\n\t\t\t\t\t\tORDER BY rpt.startrepeat";
             // This limit will always be enough
             $query .= " LIMIT " . $limit;
             $cache =& JFactory::getCache(JEV_COM_COMPONENT);
             list($usec, $sec) = explode(" ", microtime());
             $dbstart = (double) $usec + (double) $sec;
             $rows3 = $cache->call('JEventsDBModel::_cachedlistIcalEvents', $query, $langtag);
             list($usec, $sec) = explode(" ", microtime());
             $dbend = (double) $usec + (double) $sec;
             //echo "query ". round($dbend - $dbstart,4)."<br/>";
         }
         // ensure specific event is not used more than once
         $events = array();
         $rows = array();
         // future events
         foreach ($rows1 as $val) {
             if (!in_array($val->ev_id(), $events)) {
                 //echo $val->_startrepeat." ".$val->ev_id()." ".$val->title()."<br/>";
                 $events[] = $val->ev_id();
                 $rows[] = $val;
             }
         }
         // straddling multi-day event
         foreach ($rows3 as $val) {
             if (!in_array($val->ev_id(), $events)) {
                 //echo $val->_startrepeat." ".$val->ev_id()." ".$val->title()."<br/>";
                 $events[] = $val->ev_id();
                 $rows[] = $val;
             }
         }
         // past events
         foreach ($rows2 as $val) {
             if (!in_array($val->ev_id(), $events)) {
                 //echo $val->_startrepeat." ".$val->ev_id()." ".$val->title()."<br/>";
                 $events[] = $val->ev_id();
                 $rows[] = $val;
             }
         }
         //echo "count rows ".count($rows1)." ".count($rows2)." ".count($rows3)." ".count($rows)."<br/>";
         unset($rows1);
         unset($rows2);
         unset($rows3);
     } else {
         // Display a repeating event for EACH repeat
         // We therefore fetch 3 sets of possible repeats if necessary i.e. not over the limit!
         // Find the ones after now (only if not past only)
         $rows1 = array();
         if ($enddate >= $t_datenowSQL && $modparams->get("pastonly", 0) != 1) {
             $query = "SELECT rpt.*, ev.*, rr.*, det.*, ev.state as published, ev.created as created {$extrafields}" . "\n , YEAR(rpt.startrepeat) as yup, MONTH(rpt.startrepeat ) as mup, DAYOFMONTH(rpt.startrepeat ) as dup" . "\n , YEAR(rpt.endrepeat  ) as ydn, MONTH(rpt.endrepeat   ) as mdn, DAYOFMONTH(rpt.endrepeat   ) as ddn" . "\n , HOUR(rpt.startrepeat) as hup, MINUTE(rpt.startrepeat ) as minup, SECOND(rpt.startrepeat ) as sup" . "\n , HOUR(rpt.endrepeat  ) as hdn, MINUTE(rpt.endrepeat   ) as mindn, SECOND(rpt.endrepeat   ) as sdn" . "\n FROM #__jevents_repetition as rpt" . "\n LEFT JOIN #__jevents_vevent as ev ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_icsfile as icsf ON icsf.ics_id=ev.icsid " . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = rpt.eventid" . $extrajoin . $catwhere . "\n AND rpt.endrepeat >= '{$t_datenowSQL}' AND rpt.startrepeat <= '{$enddate}'" . $multiday . $extrawhere . "\n AND ev.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "  AND icsf.state=1 " . "\n AND icsf.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "\n GROUP BY rpt.rp_id\n\t\t\t\t\tORDER BY rpt.startrepeat ASC";
             // This limit will always be enough
             $query .= " LIMIT " . $limit;
             $cache =& JFactory::getCache(JEV_COM_COMPONENT);
             list($usec, $sec) = explode(" ", microtime());
             $dbstart = (double) $usec + (double) $sec;
             $rows1 = $cache->call('JEventsDBModel::_cachedlistIcalEvents', $query, $langtag);
             list($usec, $sec) = explode(" ", microtime());
             $dbend = (double) $usec + (double) $sec;
             //echo "query ". round($dbend - $dbstart,4)."<br/>";
         }
         // Before now (only if not past only == future events)
         $rows2 = array();
         if ($startdate <= $t_datenowSQL && $modparams->get("pastonly", 0) < 2) {
             // note the order is the ones nearest today
             $query = "SELECT rpt.*, ev.*, rr.*, det.*, ev.state as published, ev.created as created {$extrafields}" . "\n , YEAR(rpt.startrepeat) as yup, MONTH(rpt.startrepeat ) as mup, DAYOFMONTH(rpt.startrepeat ) as dup" . "\n , YEAR(rpt.endrepeat  ) as ydn, MONTH(rpt.endrepeat   ) as mdn, DAYOFMONTH(rpt.endrepeat   ) as ddn" . "\n , HOUR(rpt.startrepeat) as hup, MINUTE(rpt.startrepeat ) as minup, SECOND(rpt.startrepeat ) as sup" . "\n , HOUR(rpt.endrepeat  ) as hdn, MINUTE(rpt.endrepeat   ) as mindn, SECOND(rpt.endrepeat   ) as sdn" . "\n FROM #__jevents_repetition as rpt" . "\n LEFT JOIN #__jevents_vevent as ev ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_icsfile as icsf ON icsf.ics_id=ev.icsid " . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = rpt.eventid" . $extrajoin . $catwhere . "\n AND rpt.endrepeat >= '{$startdate}' AND rpt.startrepeat <= '{$t_datenowSQL}'" . $multiday . $extrawhere . "\n AND ev.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "  AND icsf.state=1 " . "\n AND icsf.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "\n GROUP BY rpt.rp_id\n\t\t\t\t\t\tORDER BY rpt.startrepeat desc";
             // This limit will always be enough
             $query .= " LIMIT " . $limit;
             $cache =& JFactory::getCache(JEV_COM_COMPONENT);
             list($usec, $sec) = explode(" ", microtime());
             $dbstart = (double) $usec + (double) $sec;
             $rows2 = $cache->call('JEventsDBModel::_cachedlistIcalEvents', $query, $langtag);
             list($usec, $sec) = explode(" ", microtime());
             $dbend = (double) $usec + (double) $sec;
             //echo "query ". round($dbend - $dbstart,4)."<br/>";
         }
         $rows3 = array();
         if ($multidayTreatment != 2 && $multidayTreatment != 3) {
             // Mutli day events
             $query = "SELECT rpt.*, ev.*, rr.*, det.*, ev.state as published, ev.created as created {$extrafields}" . "\n , YEAR(rpt.startrepeat) as yup, MONTH(rpt.startrepeat ) as mup, DAYOFMONTH(rpt.startrepeat ) as dup" . "\n , YEAR(rpt.endrepeat  ) as ydn, MONTH(rpt.endrepeat   ) as mdn, DAYOFMONTH(rpt.endrepeat   ) as ddn" . "\n , HOUR(rpt.startrepeat) as hup, MINUTE(rpt.startrepeat ) as minup, SECOND(rpt.startrepeat ) as sup" . "\n , HOUR(rpt.endrepeat  ) as hdn, MINUTE(rpt.endrepeat   ) as mindn, SECOND(rpt.endrepeat   ) as sdn" . "\n FROM #__jevents_repetition as rpt" . "\n LEFT JOIN #__jevents_vevent as ev ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_icsfile as icsf ON icsf.ics_id=ev.icsid " . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = rpt.eventid" . $extrajoin . $catwhere . "\n AND rpt.endrepeat >= '{$startdate}' AND rpt.startrepeat <= '{$t_datenowSQL}'" . $multiday2 . $extrawhere . "\n AND ev.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "  AND icsf.state=1 " . "\n AND icsf.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "\n GROUP BY rpt.rp_id\n\t\t\t\t\t\tORDER BY rpt.startrepeat asc";
             // This limit will always be enough
             $query .= " LIMIT " . $limit;
             $cache =& JFactory::getCache(JEV_COM_COMPONENT);
             list($usec, $sec) = explode(" ", microtime());
             $dbstart = (double) $usec + (double) $sec;
             $rows3 = $cache->call('JEventsDBModel::_cachedlistIcalEvents', $query, $langtag);
             list($usec, $sec) = explode(" ", microtime());
             $dbend = (double) $usec + (double) $sec;
             //echo "query ". round($dbend - $dbstart,4)."<br/>";
         }
         // ensure specific repeat is not used more than once
         $repeats = array();
         $rows = array();
         // future events
         foreach ($rows1 as $val) {
             if (!in_array($val->rp_id(), $repeats)) {
                 $repeats[] = $val->rp_id();
                 $rows[] = $val;
             }
         }
         // straddling multi-day event
         foreach ($rows3 as $val) {
             if (!in_array($val->rp_id(), $repeats)) {
                 $repeats[] = $val->rp_id();
                 $rows[] = $val;
             }
         }
         // past events
         foreach ($rows2 as $val) {
             if (!in_array($val->rp_id(), $repeats)) {
                 $repeats[] = $val->rp_id();
                 $rows[] = $val;
             }
         }
         //echo "count rows ".count($rows1)." ".count($rows2)." ".count($rows3)." ".count($rows)."<br/>";
         unset($rows1);
         unset($rows2);
         unset($rows3);
     }
     //echo "count rows = ".count($rows)."<Br/>";
     $dispatcher =& JDispatcher::getInstance();
     $dispatcher->trigger('onDisplayCustomFieldsMultiRowUncached', array(&$rows));
     //die();
     return $rows;
 }
Exemplo n.º 13
0
 /**
  * Get array Year, Month, Day from current Request, fallback to current date
  *
  * @return array
  */
 function getYMD()
 {
     static $data;
     if (!isset($data)) {
         $datenow = JEVHelper::getNow();
         list($yearnow, $monthnow, $daynow) = explode('-', $datenow->toFormat('%Y-%m-%d'));
         $year = min(2100, abs(intval(JRequest::getVar('year', $yearnow))));
         $month = min(99, abs(intval(JRequest::getVar('month', $monthnow))));
         $day = min(3650, abs(intval(JRequest::getVar('day', $daynow))));
         if ($day <= 0) {
             $day = $daynow;
         }
         if ($month <= 0) {
             $month = $monthnow;
         }
         if ($year <= 0) {
             $year = $yearnow;
         }
         if ($day <= '9') {
             $day = '0' . $day;
         }
         if ($month <= '9') {
             $month = '0' . $month;
         }
         $data = array();
         $data[] = $year;
         $data[] = $month;
         $data[] = $day;
     }
     return $data;
 }
Exemplo n.º 14
0
 function listLatestIcalEvents($startdate, $enddate, $limit = 10, $noRepeats = 0, $multidayTreatment = 0)
 {
     $user =& JFactory::getUser();
     $db =& JFactory::getDBO();
     $lang =& JFactory::getLanguage();
     $langtag = $lang->getTag();
     if (strpos($startdate, "-") === false) {
         $startdate = JevDate::strftime('%Y-%m-%d 00:00:00', $startdate);
         $enddate = JevDate::strftime('%Y-%m-%d 23:59:59', $enddate);
     }
     // process the new plugins
     // get extra data and conditionality from plugins
     $extrawhere = array();
     $extrajoin = array();
     $extrafields = "";
     // must have comma prefix
     $extratables = "";
     // must have comma prefix
     $needsgroup = false;
     $filterarray = array("published", "justmine", "category", "search");
     // If there are extra filters from the module then apply them now
     $reg =& JFactory::getConfig();
     $modparams = $reg->getValue("jev.modparams", false);
     if ($modparams && $modparams->getValue("extrafilters", false)) {
         $filterarray = array_merge($filterarray, explode(",", $modparams->getValue("extrafilters", false)));
     }
     $filters = jevFilterProcessing::getInstance($filterarray);
     $filters->setWhereJoin($extrawhere, $extrajoin);
     $needsgroup = $filters->needsGroupBy();
     $dispatcher =& JDispatcher::getInstance();
     $dispatcher->trigger('onListIcalEvents', array(&$extrafields, &$extratables, &$extrawhere, &$extrajoin, &$needsgroup));
     // What if join multiplies the rows?
     // Useful MySQL link http://forums.mysql.com/read.php?10,228378,228492#msg-228492
     // concat with group
     // http://www.mysqlperformanceblog.com/2006/09/04/group_concat-useful-group-by-extension/
     // did any of the plugins adjust the range of dateds allowed eg. timelimit plugin - is so then we need to use this information otherwise we  get problems
     $regex = "#(rpt.endrepeat>='[0-9:\\- ]*' AND rpt.startrepeat<='[0-9:\\- ]*')#";
     $rptwhere = array();
     foreach ($extrawhere as $exwhere) {
         if (preg_match($regex, $exwhere)) {
             $rptwhere[] = str_replace("rpt.", "rpt2.", $exwhere);
         }
     }
     $rptwhere = count($rptwhere) ? ' AND ' . implode(' AND ', $rptwhere) : '';
     $extrajoin = count($extrajoin) ? " \n LEFT JOIN " . implode(" \n LEFT JOIN ", $extrajoin) : '';
     $extrawhere = count($extrawhere) ? ' AND ' . implode(' AND ', $extrawhere) : '';
     // get the event ids first - split into 2 queries to pick up the ones after now and the ones before
     $t_datenow = JEVHelper::getNow();
     $t_datenowSQL = $t_datenow->toMysql();
     // multiday condition
     if ($multidayTreatment == 3) {
         // We only show events once regardless of multiday setting of event so we allow them all through here!
         $multiday = "";
         $multiday2 = "";
     } else {
         if ($multidayTreatment == 2) {
             // We only show events on their first day only regardless of multiday setting of event so we allow them all through here!
             $multiday = "";
             $multiday2 = "";
         } else {
             if ($multidayTreatment == 1) {
                 // We only show events on all days regardless of multiday setting of event so we allow them all through here!
                 $multiday = "";
                 $multiday2 = "";
             } else {
                 // We only show events on their first day if they are not to be shown on multiple days so also add this condition
                 // i.e. the event settings are used
                 $multiday = "\n AND ((rpt.startrepeat >= '{$startdate}' AND det.multiday=0) OR  det.multiday=1)";
                 $multiday2 = "\n AND ((rpt.startrepeat <= '{$startdate}' AND det.multiday=0) OR  det.multiday=1)";
             }
         }
     }
     // Find the ones after now (only if not past only)
     if ($modparams->get("pastonly", 0) != 1) {
         $query = "SELECT DISTINCT rpt.eventid FROM #__jevents_repetition as rpt" . "\n LEFT JOIN #__jevents_vevent as ev ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_icsfile as icsf ON icsf.ics_id=ev.icsid " . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = rpt.eventid" . $extrajoin . "\n WHERE ev.catid IN(" . $this->accessibleCategoryList() . ")" . "\n AND rpt.endrepeat >= '{$t_datenowSQL}' AND rpt.startrepeat <= '{$enddate}'" . $multiday . $extrawhere . "\n AND ev.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "  AND icsf.state=1 " . "\n AND icsf.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "\n AND rpt.startrepeat=(\n\t\t\t\tSELECT MIN(startrepeat) FROM #__jevents_repetition as rpt2\n\t\t\t\tWHERE rpt2.eventid=rpt.eventid\n\t\t\t\tAND  rpt2.startrepeat >= '{$t_datenowSQL}' AND rpt2.endrepeat <= '{$enddate}'\n\t\t\t\t{$rptwhere}\n\t\t\t)" . "\n ORDER BY rpt.startrepeat ASC";
         // This limit will always be enough
         $query .= " LIMIT " . $limit;
         $db = JFactory::getDBO();
         $db->setQuery($query);
         //$query = $db->replacePrefix($db->getQuery());
         //echo $db->replacePrefix($db->getQuery())."<br/>";
         $ids1 = $db->loadResultArray();
     } else {
         $ids1 = array();
     }
     // Before now (only if not past only == future events)
     if ($startdate < $t_datenowSQL && $modparams->get("pastonly", 0) < 2) {
         $query = "SELECT rpt.eventid  FROM #__jevents_repetition as rpt" . "\n LEFT JOIN #__jevents_vevent as ev ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_icsfile as icsf ON icsf.ics_id=ev.icsid " . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = rpt.eventid" . $extrajoin . "\n WHERE ev.catid IN(" . $this->accessibleCategoryList() . ")" . "\n AND rpt.endrepeat >= '{$startdate}' AND rpt.startrepeat <= '{$t_datenowSQL}'" . $multiday . $extrawhere . "\n AND ev.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "  AND icsf.state=1 " . "\n AND icsf.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "\n AND rpt.startrepeat=(\n\t\t\t\t\tSELECT MAX(startrepeat) FROM #__jevents_repetition as rpt2\n\t\t\t\t\t WHERE rpt2.eventid=rpt.eventid\n\t\t\t\t\tAND rpt2.startrepeat <= '{$t_datenowSQL}' AND rpt2.startrepeat >= '{$startdate}'\n\t\t\t\t\t{$rptwhere}\n\t\t\t\t)" . "\n GROUP BY rpt.eventid " . "\n ORDER BY rpt.startrepeat DESC";
         // This limit will always be enough
         $query .= " LIMIT " . $limit;
         $db = JFactory::getDBO();
         $db->setQuery($query);
         //$query = $db->replacePrefix($db->getQuery());
         //echo $db->explain();die();
         //echo $db->replacePrefix($db->getQuery())."<br/>";
         $ids2 = $db->loadResultArray();
     } else {
         $ids2 = array();
     }
     $ids3 = array();
     if ($multidayTreatment != 2 && $multidayTreatment != 3) {
         // Mutli day events
         $query = "SELECT rpt.eventid  FROM #__jevents_repetition as rpt" . "\n LEFT JOIN #__jevents_vevent as ev ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_icsfile as icsf ON icsf.ics_id=ev.icsid " . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = rpt.eventid" . $extrajoin . "\n WHERE ev.catid IN(" . $this->accessibleCategoryList() . ")" . "\n AND rpt.endrepeat >= '{$startdate}' AND rpt.startrepeat <= '{$t_datenowSQL}'" . $multiday2 . $extrawhere . "\n AND ev.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "  AND icsf.state=1 " . "\n AND icsf.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "\n AND rpt.startrepeat=(\n\t\t\t\tSELECT MAX(startrepeat) FROM #__jevents_repetition as rpt2\n\t\t\t\t WHERE rpt2.eventid=rpt.eventid\n\t\t\t\tAND rpt2.startrepeat <= '{$t_datenowSQL}' AND rpt2.endrepeat >= '{$t_datenowSQL}'\n\t\t\t\t{$rptwhere}\n\t\t\t)" . "\n GROUP BY rpt.eventid " . "\n ORDER BY rpt.startrepeat DESC";
         // This limit will always be enough
         $query .= " LIMIT " . $limit;
         $db = JFactory::getDBO();
         $db->setQuery($query);
         //$query = $db->replacePrefix($db->getQuery());
         //echo $db->explain();die();
         //echo $db->replacePrefix($db->getQuery())."<br/>";
         $ids3 = $db->loadResultArray();
     }
     $ids = array_merge($ids1, $ids2, $ids3);
     array_push($ids, 0);
     $ids = array_unique($ids);
     // As an alternative to avoid the temporary table  we could use php array_unique and array_slice to get the list of ids - with no memory issues.
     $ids = implode(",", $ids);
     $groupby = "\n GROUP BY rpt.rp_id";
     if ($noRepeats) {
         $groupby = "\n GROUP BY ev.ev_id";
     }
     // This version picks the details from the details table
     // ideally we should check if the event is a repeat but this involves extra queries unfortunately
     $query = "SELECT rpt.*, ev.*, rr.*, det.*, ev.state as published, ev.created as created {$extrafields}" . "\n , YEAR(rpt.startrepeat) as yup, MONTH(rpt.startrepeat ) as mup, DAYOFMONTH(rpt.startrepeat ) as dup" . "\n , YEAR(rpt.endrepeat  ) as ydn, MONTH(rpt.endrepeat   ) as mdn, DAYOFMONTH(rpt.endrepeat   ) as ddn" . "\n , HOUR(rpt.startrepeat) as hup, MINUTE(rpt.startrepeat ) as minup, SECOND(rpt.startrepeat ) as sup" . "\n , HOUR(rpt.endrepeat  ) as hdn, MINUTE(rpt.endrepeat   ) as mindn, SECOND(rpt.endrepeat   ) as sdn" . "\n FROM #__jevents_repetition as rpt" . "\n LEFT JOIN #__jevents_vevent as ev ON rpt.eventid = ev.ev_id" . "\n LEFT JOIN #__jevents_icsfile as icsf ON icsf.ics_id=ev.icsid " . "\n LEFT JOIN #__jevents_vevdetail as det ON det.evdet_id = rpt.eventdetail_id" . "\n LEFT JOIN #__jevents_rrule as rr ON rr.eventid = rpt.eventid" . $extrajoin . "\n WHERE ev.catid IN(" . $this->accessibleCategoryList() . ")" . "\n AND rpt.endrepeat >= '{$startdate}' AND rpt.startrepeat <= '{$enddate}'" . $extrawhere . "\n AND ev.access  " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "  AND icsf.state=1 AND icsf.access " . (version_compare(JVERSION, '1.6.0', '>=') ? ' IN (' . JEVHelper::getAid($user) . ')' : ' <=  ' . JEVHelper::getAid($user)) . "  AND ev.ev_id IN (" . $ids . ")" . ($needsgroup ? $groupby : "");
     $cache =& JFactory::getCache(JEV_COM_COMPONENT);
     $rows = $cache->call('JEventsDBModel::_cachedlistIcalEvents', $query, $langtag);
     $dispatcher =& JDispatcher::getInstance();
     $dispatcher->trigger('onDisplayCustomFieldsMultiRowUncached', array(&$rows));
     //die();
     return $rows;
 }
Exemplo n.º 15
0
 protected function processMatch(&$content, $match, $dayEvent, $dateParm, $relDay)
 {
     $datenow = JEVHelper::getNow();
     $dispatcher =& JDispatcher::getInstance();
     // get the title and start time
     $startDate = JevDate::strtotime($dayEvent->publish_up());
     if ($relDay > 0) {
         $eventDate = JevDate::strtotime($datenow->toFormat('%Y-%m-%d ') . JevDate::strftime('%H:%M', $startDate) . " +{$relDay} days");
     } else {
         $eventDate = JevDate::strtotime($datenow->toFormat('%Y-%m-%d ') . JevDate::strftime('%H:%M', $startDate) . " {$relDay} days");
     }
     $endDate = JevDate::strtotime($dayEvent->publish_down());
     list($st_year, $st_month, $st_day) = explode('-', JevDate::strftime('%Y-%m-%d', $startDate));
     list($ev_year, $ev_month, $ev_day) = explode('-', JevDate::strftime('%Y-%m-%d', $startDate));
     $task_events = 'icalrepeat.detail';
     switch ($match) {
         case 'endDate':
         case 'startDate':
         case 'eventDate':
             // Note we need to examine the date specifiers used to determine if language translation will be
             // necessary.  Do this later when script is debugged.
             if (!$this->disableDateStyle) {
                 $content .= '<span class="mod_events_latest_date">';
             }
             if (!$dayEvent->alldayevent() && $match == "endDate" && ($dayEvent->noendtime() || $dayEvent->getUnixStartTime() == $dayEvent->getUnixEndTime())) {
                 $time_fmt = "";
             } else {
                 if (!isset($dateParm) || $dateParm == '') {
                     if ($this->com_calUseStdTime) {
                         $time_fmt = $dayEvent->alldayevent() ? '' : ' @%l:%M%p';
                     } else {
                         $time_fmt = $dayEvent->alldayevent() ? '' : ' @%H:%M';
                     }
                     $dateFormat = $this->displayYear ? '%a %b %d, %Y' . $time_fmt : '<span class="eventDay">%a</span>  <span class="eventDate">%d<span class="eventMonth">%b</span></span>';
                     $jmatch = new JevDate(${$match});
                     $content .= $jmatch->toFormat($dateFormat);
                     //$content .= JEV_CommonFunctions::jev_strftime($dateFormat, $$match);
                 } else {
                     // format endDate when midnight to show midnight!
                     if ($match == "endDate" && $dayEvent->sdn() == 59) {
                         $tempEndDate = $endDate + 1;
                         if ($dayEvent->alldayevent()) {
                             // if an all day event then we don't want to roll to the next day
                             $tempEndDate -= 86400;
                         }
                         $match = "tempEndDate";
                     }
                     // if a '%' sign detected in date format string, we assume JevDate::strftime() is to be used,
                     if (preg_match("/\\%/", $dateParm)) {
                         $jmatch = new JevDate(${$match});
                         $content .= $jmatch->toFormat($dateParm);
                     } else {
                         $content .= date($dateParm, ${$match});
                     }
                     if ($match == "tempDndDate") {
                         $match = "endDate";
                     }
                 }
             }
             if (!$this->disableDateStyle) {
                 $content .= "</span>";
             }
             break;
         case 'title':
             $title = $dayEvent->title();
             if (!empty($dateParm)) {
                 $parts = explode("|", $dateParm);
                 if (count($parts) > 0 && strlen($title) > intval($parts[0])) {
                     $title = substr($title, 0, intval($parts[0]));
                     if (count($parts) > 1) {
                         $title .= $parts[1];
                     }
                 }
             }
             if (!$this->disableTitleStyle) {
                 $content .= '<span class="mod_events_latest_content">';
             }
             if ($this->displayLinks) {
                 $link = $dayEvent->viewDetailLink($ev_year, $ev_month, $ev_day, false, $this->myItemid);
                 $link = JRoute::_($link . $this->datamodel->getCatidsOutLink());
                 $content .= $this->_htmlLinkCloaking($link, JEventsHTML::special($title));
             } else {
                 $content .= JEventsHTML::special($title);
             }
             if (!$this->disableTitleStyle) {
                 $content .= '</span>';
             }
             break;
         case 'category':
             $catobj = $dayEvent->getCategoryName();
             $content .= JEventsHTML::special($catobj);
             break;
         case 'calendar':
             $catobj = $dayEvent->getCalendarName();
             $content .= JEventsHTML::special($catobj);
             break;
         case 'contact':
             // Also want to cloak contact details so
             $this->modparams->set("image", 1);
             $dayEvent->text = $dayEvent->contact_info();
             if (JVersion::isCompatible("1.6.0")) {
                 $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent, &$this->modparams, 0));
             } else {
                 $dispatcher->trigger('onPrepareContent', array(&$dayEvent, &$this->modparams, 0), true);
             }
             $dayEvent->contact_info($dayEvent->text);
             $content .= $dayEvent->contact_info();
             break;
         case 'content':
             // Added by Kaz McCoy 1-10-2004
             $this->modparams->set("image", 1);
             $dayEvent->data->text = $dayEvent->content();
             if (JVersion::isCompatible("1.6.0")) {
                 $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             } else {
                 $results = $dispatcher->trigger('onPrepareContent', array(&$dayEvent->data, &$this->modparams, 0), true);
             }
             if (!empty($dateParm)) {
                 $parts = explode("|", $dateParm);
                 if (count($parts) > 0 && strlen(strip_tags($dayEvent->data->text)) > intval($parts[0])) {
                     $dayEvent->data->text = substr(strip_tags($dayEvent->data->text), 0, intval($parts[0]));
                     if (count($parts) > 1) {
                         $dayEvent->data->text .= $parts[1];
                     }
                 }
             }
             $dayEvent->content($dayEvent->data->text);
             //$content .= substr($dayEvent->content, 0, 150);
             $content .= $dayEvent->content();
             break;
         case 'addressInfo':
         case 'location':
             $this->modparams->set("image", 0);
             $dayEvent->data->text = $dayEvent->location();
             if (JVersion::isCompatible("1.6.0")) {
                 $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             } else {
                 $results = $dispatcher->trigger('onPrepareContent', array(&$dayEvent->data, &$this->modparams, 0), true);
             }
             $dayEvent->location($dayEvent->data->text);
             $content .= $dayEvent->location();
             break;
         case 'extraInfo':
             $this->modparams->set("image", 0);
             $dayEvent->data->text = $dayEvent->extra_info();
             if (JVersion::isCompatible("1.6.0")) {
                 $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             } else {
                 $results = $dispatcher->trigger('onPrepareContent', array(&$dayEvent->data, &$this->modparams, 0), true);
             }
             $dayEvent->extra_info($dayEvent->data->text);
             $content .= $dayEvent->extra_info();
             break;
         case 'countdown':
             $timedelta = $dayEvent->getUnixStartTime() - JevDate::mktime();
             $fieldval = $dateParm;
             $shownsign = false;
             if (stripos($fieldval, "%d") !== false) {
                 $days = intval($timedelta / (60 * 60 * 24));
                 $timedelta -= $days * 60 * 60 * 24;
                 $fieldval = str_ireplace("%d", $days, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%h") !== false) {
                 $hours = intval($timedelta / (60 * 60));
                 $timedelta -= $hours * 60 * 60;
                 if ($shownsign) {
                     $hours = abs($hours);
                 }
                 $hours = sprintf("%02d", $hours);
                 $fieldval = str_ireplace("%h", $hours, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%m") !== false) {
                 $mins = intval($timedelta / 60);
                 $timedelta -= $hours * 60;
                 if ($mins) {
                     $mins = abs($mins);
                 }
                 $mins = sprintf("%02d", $mins);
                 $fieldval = str_ireplace("%m", $mins, $fieldval);
             }
             $content .= $fieldval;
             break;
         case 'createdByAlias':
             $content .= $dayEvent->created_by_alias();
             break;
         case 'createdByUserName':
             $catobj = JEVHelper::getUser($dayEvent->created_by());
             $content .= isset($catobj->username) ? $catobj->username : "";
             break;
         case 'createdByUserEmail':
             // Note that users email address will NOT be available if they don't want to receive email
             $catobj = JEVHelper::getUser($dayEvent->created_by());
             $content .= $catobj->sendEmail ? $catobj->email : '';
             break;
         case 'createdByUserEmailLink':
             // Note that users email address will NOT be available if they don't want to receive email
             $content .= JRoute::_("index.php?option=" . $compname . "&task=" . $task_events . "&agid=" . $dayEvent->id() . "&year=" . $st_year . "&month=" . $st_month . "&day=" . $st_day . "&Itemid=" . $this->myItemid . $this->catout);
             break;
         case 'color':
             $content .= $dayEvent->bgcolor();
             break;
         case 'eventDetailLink':
             $link = $dayEvent->viewDetailLink($st_year, $st_month, $st_day, false, $this->myItemid);
             $link = JRoute::_($link . $this->datamodel->getCatidsOutLink());
             $content .= $link;
             /*
              $content .= JRoute::_("index.php?option="
              . $compname
              . "&task=".$task_events
              . "&agid=".$dayEvent->id()
              . "&year=".$st_year
              . "&month=".$st_month
              . "&day=".$st_day
              . "&Itemid=".$this->myItemid . $this->catout);
             */
             break;
         default:
             try {
                 if (strpos($match, '${') !== false) {
                     $parts = explode('${', $match);
                     $tempstr = "";
                     foreach ($parts as $part) {
                         if (strpos($part, "}") !== false) {
                             $subparts = explode("}", $part);
                             //$part = str_replace("}","",$part);
                             $subpart = "_" . $subparts[0];
                             if (isset($dayEvent->{$subpart})) {
                                 $temp = $dayEvent->{$subpart};
                                 $tempstr .= $temp;
                             } else {
                                 if (isset($dayEvent->customfields[$subparts[0]]['value'])) {
                                     $temp = $dayEvent->customfields[$subparts[0]]['value'];
                                     $tempstr .= $temp;
                                 } else {
                                     $layout = "list";
                                     $jevplugins = JPluginHelper::getPlugin("jevents");
                                     foreach ($jevplugins as $jevplugin) {
                                         $classname = "plgJevents" . ucfirst($jevplugin->name);
                                         if (is_callable(array($classname, "substitutefield"))) {
                                             $fieldNameArray = call_user_func(array($classname, "fieldNameArray"), $layout);
                                             if (isset($fieldNameArray["values"])) {
                                                 if (in_array($subparts[0], $fieldNameArray["values"])) {
                                                     // is the event detail hidden - if so then hide any custom fields too!
                                                     if (!isset($event->_privateevent) || $event->_privateevent != 3) {
                                                         $tempstr .= call_user_func(array($classname, "substitutefield"), $dayEvent, $subparts[0]);
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                     //$dispatcher->trigger( 'onLatestEventsField', array( &$dayEvent, $subparts[0], &$tempstr));
                                 }
                             }
                             $tempstr .= $subparts[1];
                         } else {
                             $tempstr .= $part;
                         }
                     }
                     $content .= $tempstr;
                 } else {
                     if ($match) {
                         $content .= $match;
                     }
                 }
             } catch (Exception $e) {
                 if ($match) {
                     $content .= $match;
                 }
             }
             break;
     }
     // end of switch
 }