function DefaultViewEventCatRowNew($view, $row, $args = "") { // I choost not to use $row->fgcolor() $fgcolor = "inherit"; $router = JRouter::getInstance("site"); $vars = $router->getVars(); $vars["catids"] = $row->catid(); if (array_key_exists("Itemid", $vars) && is_null($vars["Itemid"])) { $vars["Itemid"] = JRequest::getInt("Itemid", 0); } $eventlink = "index.php?"; foreach ($vars as $key => $val) { $eventlink .= $key . "=" . $val . "&"; } $eventlink = substr($eventlink, 0, strlen($eventlink) - 1); $eventlink = JRoute::_($eventlink); ?> <a class="ev_link_cat" href="<?php echo $eventlink; ?> " style="color:<?php echo $fgcolor; ?> ;" title="<?php echo JEventsHTML::special($row->catname()); ?> "><?php echo $row->catname(); ?> </a> <?php }
function calendarCell(&$currentDay, $year, $month, $i, $slot = "") { // pass $data by reference in order to update countdisplay $cfg = JEVConfig::getInstance(); $Itemid = JEVHelper::getItemid(); $event_day = $this->event->dup(); $event_month = $this->event->mup(); $id = $this->event->id(); // this file controls the events component month calendar display cell output. It is separated from the // showCalendar function in the events.php file to allow users to customize this portion of the code easier. // The event information to be displayed within a month day on the calendar can be modified, as well as any // overlay window information printed with a javascript mouseover event. Each event prints as a separate table // row with a single column, within the month table's cell. // define start and end $cellStart = '<div'; $cellStyle = 'padding:0;'; $cellEnd = '</div>' . "\n"; $linkStyle = ""; // The title is printed as a link to the event's detail page $link = $this->event->viewDetailLink($year, $month, $currentDay['d0'], false); $link = JRoute::_($link . $this->_datamodel->getCatidsOutLink()); $title = $this->event->title(); // [mic] if title is too long, cut 'em for display $tmpTitle = $title; // set truncated title if (!isset($this->event->truncatedtitle)) { if (JString::strlen($title) >= $cfg->get('com_calCutTitle', 50)) { $tmpTitle = JString::substr($title, 0, $cfg->get('com_calCutTitle', 50)) . ' ...'; } $tmpTitle = JEventsHTML::special($tmpTitle); $this->event->truncatedtitle = $tmpTitle; } else { $tmpTitle = $this->event->truncatedtitle; } // [new mic] if amount of displaing events greater than defined, show only a scmall coloured icon // instead of full text - the image could also be "recurring dependig", which means // for each kind of event (one day, multi day, last day) another icon // in this case the dfinition must moved down to be more flexible! // [tstahl] add a graphic symbol for all day events? $tmp_start_time = $this->start_time == $this->stop_time && !$this->event->noendtime() || $this->event->alldayevent() ? '' : $this->start_time; $templatedcell = false; // set truncated title if (!isset($this->event->truncatedtitle)) { $this->event->_title = $tmpTitle; $this->event->truncatedtitle = true; } if ($currentDay['countDisplay'] < $cfg->get('com_calMaxDisplay', 5)) { ob_start(); $templatedcell = $this->loadedFromTemplate('month.calendar_cell', $this->event, 0); $res = ob_get_clean(); if ($templatedcell) { $templatedcell = $res; } else { if ($this->_view) { $this->_view->assignRef("link", $link); $this->_view->assignRef("linkStyle", $linkStyle); $this->_view->assignRef("tmp_start_time", $tmp_start_time); $this->_view->assignRef("tmpTitle", $tmpTitle); } $title_event_link = $this->loadOverride("cellcontent"); // allow fallback to old method if ($title_event_link == "") { $title_event_link = "\n" . '<a class="cal_titlelink" href="' . $link . '" ' . $linkStyle . '>' . ($cfg->get('com_calDisplayStarttime') ? $tmp_start_time : '') . ' ' . $tmpTitle . '</a>' . "\n"; } $cellStyle .= "border-left:8px solid " . $this->event->bgcolor() . ";padding-left:2px;"; } } else { $eventIMG = '<img align="left" src="' . JURI::root() . 'components/' . JEV_COM_COMPONENT . '/images/event.png" alt="" style="height:12px;width:8px;border:1px solid white;background-color:' . $this->event->bgcolor() . '" />'; $title_event_link = "\n" . '<a class="cal_titlelink" href="' . $link . '">' . $eventIMG . '</a>' . "\n"; $cellStyle .= ' float:left;width:10px;'; } $cellString = ''; // allow template overrides for cell popups // only try override if we have a view reference if ($this->_view) { $this->_view->assignRef("ecc", $this); $this->_view->assignRef("cellDate", $currentDay["cellDate"]); } if ($cfg->get("com_enableToolTip", 1)) { if ($cfg->get("tooltiptype", 'overlib') == 'overlib') { $tooltip = $this->loadOverride("overlib"); // allow fallback to old method if ($tooltip == "") { $tooltip = $this->calendarCell_popup($currentDay["cellDate"]); } $cellString .= $tooltip; } else { // TT background if ($cfg->get('com_calTTBackground', 1) == '1') { $bground = $this->event->bgcolor(); $fground = $this->event->fgcolor(); } else { $bground = "#000000"; $fground = "#ffffff"; } JevHtmlBootstrap::popover('.hasjevtip', array("trigger" => "hover focus", "placement" => "top", "container" => "#jevents_body", "delay" => array("hide" => 150))); //$toolTipArray = array('className' => 'jevtip'); //JHTML::_('behavior.tooltip', '.hasjevtip', $toolTipArray); $tooltip = $this->loadOverride("tooltip"); // allow fallback to old method if ($tooltip == "") { $tooltip = $this->calendarCell_tooltip($currentDay["cellDate"]); } if (strpos($tooltip, "templated") === 0) { $title = JString::substr($tooltip, 9); $cellString = ""; } else { $cellString .= '<div class="jevtt_text" >' . $tooltip . '</div>'; $title = '<div class="jevtt_title" style = "color:' . $fground . ';background-color:' . $bground . '">' . $this->title . '</div>'; } if ($templatedcell) { $templatedcell = str_replace("[[TOOLTIP]]", htmlspecialchars($title . $cellString, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPTITLE]]", htmlspecialchars($title, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPCONTENT]]", htmlspecialchars($cellString, ENT_QUOTES), $templatedcell); $time = $cfg->get('com_calDisplayStarttime') ? $tmp_start_time : ""; $templatedcell = str_replace("[[EVTTIME]]", $time, $templatedcell); return $templatedcell; } $html = $cellStart . ' style="' . $cellStyle . '">' . $this->tooltip($title, $cellString, $title_event_link) . $cellEnd; return $html; } } if ($templatedcell) { $templatedcell = str_replace("[[TOOLTIP]]", htmlspecialchars($title . $cellString, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPTITLE]]", htmlspecialchars($title, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPCONTENT]]", htmlspecialchars($cellString, ENT_QUOTES), $templatedcell); $time = $cfg->get('com_calDisplayStarttime') ? $tmp_start_time : ""; $templatedcell = str_replace("[[EVTTIME]]", $time, $templatedcell); return $templatedcell; } // return the whole thing return $cellStart . ' style="' . $cellStyle . '" ' . $cellString . ">\n" . $title_event_link . $cellEnd; }
function blockKids($row, $itm, $tsk, $availableCatsIds, $activeParent = false, $activeSubCat = 0) { $catclass = ""; if ($row->parent_id > 0) { $catclass = "childcat"; } if ($row->parent_id > 0 && isset($row->activeBranch)) { $catclass = "activechildcat"; } if ($row->parent_id > 0 && $activeParent) { $catclass = "activechildcat"; } if ($row->parent_id > 0 && $activeSubCat > 0 && $row->id != $activeSubCat && !isset($row->activeNode)) { $catclass = "childcat"; } $cat = $row->id > 0 ? "&catids={$row->id}" : ""; //$rowparams = new JRegistry(isset($row->params)?$row->params:null); //$image = $rowparams->get("image",false); //$image = $image? "<img src = '".JURI::root().$image."' class='catimage' alt='categoryimage' />" : ""; $content = '<div class="event_legend_item ' . $catclass . '" style="border-color:' . $row->color . '">'; $content .= '<div class="event_legend_name" style="border-color:' . $row->color . '">' . '<a href="' . JRoute::_("index.php?option=" . JEV_COM_COMPONENT . "{$cat}{$itm}{$tsk}") . '" title="' . JEventsHTML::special($row->name) . '">' . JEventsHTML::special($row->name) . '</a>'; $content .= '</div>' . "\n"; if (JString::strlen($row->description) > 0) { $content .= '<div class="event_legend_desc" style="border-color:' . $row->color . '">' . $row->description . '</div>'; } $content .= '</div>' . "\n"; if (isset($row->activeBranch) && isset($row->subcats)) { $activeSubCat = 0; foreach ($row->subcats as $subcatid => $subcat) { if (isset($subcat->activeBranch)) { $activeSubCat = $subcatid; } } foreach ($row->subcats as $subcatid => $subcat) { $content .= $this->blockKids($subcat, $itm, $tsk, $availableCatsIds, isset($row->activeNode), $activeSubCat); } } return $content; }
function calendarCell(&$currentDay, $year, $month, $i, $slot = "") { $cfg = JEVConfig::getInstance(); // define start and end $cellStart = '<div'; $cellClass = 'p0 '; $cellEnd = '</div>' . "\n"; // add the event color as the column background color $cellStyle = ' background-color:' . $this->event->bgcolor() . ';color:' . $this->event->fgcolor() . ';'; // MSIE ignores "inherit" color for links - stupid Microsoft!!! $linkStyle = 'style="color:' . $this->event->fgcolor() . ';"'; // The title is printed as a link to the event's detail page $link = $this->event->viewDetailLink($year, $month, $currentDay['d0'], false); $link = JRoute::_($link . $this->_datamodel->getCatidsOutLink()); $title = $this->event->title(); // [mic] if title is too long, cut 'em for display $tmpTitle = $title; // set truncated title if (!isset($this->event->truncatedtitle)) { if (JString::strlen($title) >= $cfg->get('com_calCutTitle', 50)) { $tmpTitle = JString::substr($title, 0, $cfg->get('com_calCutTitle', 50)) . ' ...'; } $tmpTitle = JEventsHTML::special($tmpTitle); $this->event->truncatedtitle = $tmpTitle; } else { $tmpTitle = $this->event->truncatedtitle; } // [new mic] if amount of displaing events greater than defined, show only a scmall coloured icon // instead of full text - the image could also be "recurring dependig", which means // for each kind of event (one day, multi day, last day) another icon // in this case the dfinition must moved down to be more flexible! // [tstahl] add a graphic symbol for all day events? $tmp_start_time = $this->start_time == $this->stop_time && !$this->event->noendtime() || $this->event->alldayevent() ? '' : $this->start_time; $templatedcell = false; if ($currentDay['countDisplay'] < $cfg->get('com_calMaxDisplay', 5)) { ob_start(); $templatedcell = $this->loadedFromTemplate('month.calendar_cell', $this->event, 0); $res = ob_get_clean(); if ($templatedcell) { $templatedcell = $res; } else { if ($this->_view) { $this->_view->assignRef("link", $link); $this->_view->assignRef("linkStyle", $linkStyle); $this->_view->assignRef("tmp_start_time", $tmp_start_time); $this->_view->assignRef("tmpTitle", $tmpTitle); } $title_event_link = $this->loadOverride("cellcontent"); // allow fallback to old method if ($title_event_link == "") { $title_event_link = '<a class="cal_titlelink" href="' . $link . '" ' . $linkStyle . '>' . ($cfg->get('com_calDisplayStarttime') ? $tmp_start_time : '') . ' ' . $tmpTitle . '</a>' . "\n"; } $cellClass .= 'w100'; } } else { $eventIMG = '<img align="left" class="b1sw" src="' . JURI::root() . 'components/' . JEV_COM_COMPONENT . '/images/event.png" class="h12px w8px" alt=""' . ' />'; $title_event_link = '<a class="cal_titlelink" href="' . $link . '">' . $eventIMG . '</a>' . "\n"; $cellClass .= ' fleft w10px'; } $cellString = ''; // allow template overrides for cell popups // only try override if we have a view reference if ($this->_view) { $this->_view->assignRef("ecc", $this); $this->_view->assignRef("cellDate", $currentDay["cellDate"]); } if ($cfg->get("com_enableToolTip", 1)) { if ($cfg->get("tooltiptype", 'joomla') == 'overlib') { $tooltip = $this->loadOverride("overlib"); // allow fallback to old method if ($tooltip == "") { $tooltip = $this->calendarCell_popup($currentDay["cellDate"]); } $cellString .= $tooltip; } else { JevHtmlBootstrap::popover('.hasjevtip', array("trigger" => "hover focus", "placement" => "top", "container" => "#jevents_body", "delay" => array("hide" => 150))); //$toolTipArray = array('className' => 'jevtip'); //JHTML::_('behavior.tooltip', '.hasjevtip', $toolTipArray); $tooltip = $this->loadOverride("tooltip"); // allow fallback to old method if ($tooltip == "") { $tooltip = $this->calendarCell_tooltip($currentDay["cellDate"]); } $tooltip = $this->correctTooltipLanguage($tooltip); if (strpos($tooltip, "templated") === 0) { $title = substr($tooltip, 9); $cellString = ""; } else { // TT background if ($cfg->get('com_calTTBackground', 1) == '1') { $bground = $this->event->bgcolor(); $fground = $this->event->fgcolor(); } else { $bground = "#000000"; $fground = "#ffffff"; } $cellString .= '<div class="jevtt_text" >' . $tooltip . '</div>'; $title = '<div class="jevtt_title" style = "color:' . $fground . ';background-color:' . $bground . '">' . $this->title . '</div>'; } if ($templatedcell) { $templatedcell = str_replace("[[TOOLTIP]]", htmlspecialchars($title . $cellString, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPTITLE]]", htmlspecialchars($title, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPCONTENT]]", htmlspecialchars($cellString, ENT_QUOTES), $templatedcell); $time = $cfg->get('com_calDisplayStarttime') ? $tmp_start_time : ""; $templatedcell = str_replace("[[EVTTIME]]", $time, $templatedcell); return $templatedcell; } $html = $cellStart . ' class="' . $cellClass . '" style="' . $cellStyle . '">' . $this->tooltip($title, $cellString, $title_event_link) . $cellEnd; return $html; } } if ($templatedcell) { $templatedcell = str_replace("[[TOOLTIP]]", htmlspecialchars($title . $cellString, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPTITLE]]", htmlspecialchars($title, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPCONTENT]]", htmlspecialchars($cellString, ENT_QUOTES), $templatedcell); $time = $cfg->get('com_calDisplayStarttime') ? $tmp_start_time : ""; $templatedcell = str_replace("[[EVTTIME]]", $time, $templatedcell); return $templatedcell; } // return the whole thing return $cellStart . ' class="' . $cellClass . '" style="' . $cellStyle . '" ' . $cellString . ">\n" . $title_event_link . $cellEnd; }
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 }
function calendarCell(&$currentDay, $year, $month, $i, $slot = "") { $cfg = JEVConfig::getInstance(); $event = $currentDay["events"][$i]; // Event publication infomation $event_up = new JEventDate($event->startDate()); $event_down = new JEventDate($event->endDate()); // BAR COLOR GENERATION $bgeventcolor = JEV_CommonFunctions::setColor($event); $start_publish = JevDate::mktime(0, 0, 0, $event->mup(), $event->dup(), $event->yup()); $stop_publish = JevDate::mktime(0, 0, 0, $event->mdn(), $event->ddn(), $event->ydn()); // this file controls the events component month calendar display cell output. It is separated from the // showCalendar function in the events.php file to allow users to customize this portion of the code easier. // The event information to be displayed within a month day on the calendar can be modified, as well as any // overlay window information printed with a javascript mouseover event. Each event prints as a separate table // row with a single column, within the month table's cell. // On mouse over date formats // Note that the date formats for the events can be easily changed by modifying the sprintf formatting // string below. These are used for the default overlay window. As well, the JevDate::strftime() function could // also be used instead to provide more powerful date formatting which supports locales if php function // set_locale() is being used. // define start and end $cellStart = '<div class="eventfull"><div class="eventstyle" '; $cellStyle = ''; $cellEnd = '</div></div>' . "\n"; // add the event color as the column background color include_once JPATH_ADMINISTRATOR . "/components/" . JEV_COM_COMPONENT . "/libraries/colorMap.php"; //$colStyle .= $bgeventcolor ? ' background-color:' . $bgeventcolor . ';' : ''; //$colStyle .= $bgeventcolor ? 'color:'.JevMapColor($bgeventcolor) . ';' : ''; // MSIE ignores "inherit" color for links - stupid Microsoft!!! //$linkStyle = $bgeventcolor ? 'style="color:'.JevMapColor($bgeventcolor) . ';"' : ''; $linkStyle = ""; // The title is printed as a link to the event's detail page $link = $this->event->viewDetailLink($year, $month, $currentDay['d0'], false); $link = JRoute::_($link . $this->_datamodel->getCatidsOutLink()); $title = $event->title(); // [mic] if title is too long, cut 'em for display $tmpTitle = $title; // set truncated title if (!isset($this->event->truncatedtitle)) { if (JString::strlen($title) >= $cfg->get('com_calCutTitle', 50)) { $tmpTitle = JString::substr($title, 0, $cfg->get('com_calCutTitle', 50)) . ' ...'; } $tmpTitle = JEventsHTML::special($tmpTitle); $this->event->truncatedtitle = $tmpTitle; } else { $tmpTitle = $this->event->truncatedtitle; } // [new mic] if amount of displaing events greater than defined, show only a scmall coloured icon // instead of full text - the image could also be "recurring dependig", which means // for each kind of event (one day, multi day, last day) another icon // in this case the dfinition must moved down to be more flexible! // [tstahl] add a graphic symbol for all day events? $tmp_start_time = $this->start_time == $this->stop_time && !$this->event->noendtime() || $this->event->alldayevent() ? '' : $this->start_time; $templatedcell = false; if ($currentDay['countDisplay'] < $cfg->get('com_calMaxDisplay', 5)) { ob_start(); $templatedcell = $this->loadedFromTemplate('month.calendar_cell', $this->event, 0); $res = ob_get_clean(); if ($templatedcell) { $templatedcell = $res; } else { if ($this->_view) { $this->_view->assignRef("link", $link); $this->_view->assignRef("linkStyle", $linkStyle); $this->_view->assignRef("tmp_start_time", $tmp_start_time); $this->_view->assignRef("tmpTitle", $tmpTitle); } $title_event_link = $this->loadOverride("cellcontent"); // allow fallback to old method if ($title_event_link == "") { $title_event_link = "\n" . '<a class="cal_titlelink" href="' . $link . '" ' . $linkStyle . '>' . ($cfg->get('com_calDisplayStarttime') ? $tmp_start_time : '') . ' ' . $tmpTitle . '</a>' . "\n"; } $cellStyle .= "border-width:0px 0px 1px 8px;border-color:{$bgeventcolor};padding:0px 0px 1px 2px;"; } } else { $eventIMG = '<img align="left" src="' . JURI::root() . 'components/' . JEV_COM_COMPONENT . '/images/event.png" alt="" style="height:12px;width:8px;border:1px solid white;background-color:' . $bgeventcolor . '" />'; $title_event_link = "\n" . '<a class="cal_titlelink" href="' . $link . '">' . $eventIMG . '</a>' . "\n"; $cellStyle .= ' float:left;width:10px;'; } $cellString = ''; // allow template overrides for cell popups // only try override if we have a view reference if ($this->_view) { $this->_view->assignRef("ecc", $this); $this->_view->assignRef("cellDate", $currentDay["cellDate"]); } if ($cfg->get("com_enableToolTip", 1)) { if ($cfg->get("tooltiptype", 'joomla') == 'overlib') { $tooltip = $this->loadOverride("overlib"); // allow fallback to old method if ($tooltip == "") { $tooltip = $this->calendarCell_popup($currentDay["cellDate"]); } $cellString .= $tooltip; } else { // TT background if ($cfg->get('com_calTTBackground', 1) == '1') { $bground = $this->event->bgcolor(); $fground = $this->event->fgcolor(); } else { $bground = "#000000"; $fground = "#ffffff"; } JevHtmlBootstrap::popover('.hasjevtip', array("trigger" => "hover focus", "placement" => "top", "container" => "#jevents_body", "delay" => array("hide" => 150))); //$toolTipArray = array('className'=>'jevtip'); //JHTML::_('behavior.tooltip', '.hasjevtip', $toolTipArray); $tooltip = $this->loadOverride("tooltip"); // allow fallback to old method if ($tooltip == "") { $tooltip = $this->calendarCell_tooltip($currentDay["cellDate"]); } if (strpos($tooltip, "templated") === 0) { $title = JString::substr($tooltip, 9); $cellString = ""; } else { $cellString .= '<div class="jevtt_text" >' . $tooltip . '</div>'; $title = '<div class="jevtt_title" style = "color:' . $fground . ';background-color:' . $bground . '">' . $this->title . '</div>'; } if ($templatedcell) { $templatedcell = str_replace("[[TOOLTIP]]", htmlspecialchars($title . $cellString, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPTITLE]]", htmlspecialchars($title, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPCONTENT]]", htmlspecialchars($cellString, ENT_QUOTES), $templatedcell); $time = $cfg->get('com_calDisplayStarttime') ? $tmp_start_time : ""; $templatedcell = str_replace("[[EVTTIME]]", $time, $templatedcell); return $templatedcell; } $html = $cellStart . ' style="' . $cellStyle . '">' . $this->tooltip($title, $cellString, $title_event_link) . $cellEnd; return $html; } } if ($templatedcell) { $templatedcell = str_replace("[[TOOLTIP]]", htmlspecialchars($title . $cellString, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPTITLE]]", htmlspecialchars($title, ENT_QUOTES), $templatedcell); $templatedcell = str_replace("[[TOOLTIPCONTENT]]", htmlspecialchars($cellString, ENT_QUOTES), $templatedcell); $time = $cfg->get('com_calDisplayStarttime') ? $tmp_start_time : ""; $templatedcell = str_replace("[[EVTTIME]]", $time, $templatedcell); return $templatedcell; } // return the whole thing return $cellStart . ' style="' . $cellStyle . '" ' . $cellString . ">\n" . $title_event_link . $cellEnd; }
<?php defined('_JEXEC') or die('Restricted access'); $data = $this->data; $Itemid = JEVHelper::getItemid(); $num_events = count($data['rows']); if ($num_events > 0) { for ($r = 0; $r < $num_events; $r++) { $row = $data['rows'][$r]; $rowlink = $row->viewDetailLink($row->yup(), $row->mup(), $row->dup(), true); ?> <a class="ev_link_row" href="<?php echo $rowlink; ?> " title="<?php echo JEventsHTML::special($row->title()); ?> "><?php echo $row->title(); ?> </a> <br/> <?php } } // Create the pagination object if ($data["total"] > $data["limit"]) { $this->paginationForm($data["total"], $data["limitstart"], $data["limit"]); }
function DefaultViewEventRowAdmin($view, $row, $manage = false) { $popup = false; $params = JComponentHelper::getParams(JEV_COM_COMPONENT); if ($params->get("editpopup", 0)) { JHTML::_('behavior.modal'); JEVHelper::script('editpopup.js', 'components/' . JEV_COM_COMPONENT . '/assets/js/'); $popup = true; $popupw = $params->get("popupw", 800); $popuph = $params->get("popuph", 600); } $editLink = $row->editLink(true); $editLink = $popup ? "javascript:jevEditPopup('" . $editLink . "',{$popupw}, {$popuph});" : $editLink; $modifylink = ""; if (!$manage && JEVHelper::canEditEvent($row)) { $modifylink = '<a href="' . $row->editlink(true) . '" title="' . JText::_('JEV_MODIFY') . '"><b>' . JText::_('JEV_MODIFY') . "</b></a>\n"; $modifylink = '<a href="' . $editLink . '" title="' . JText::_('JEV_MODIFY') . '"><b>' . JText::_('JEV_MODIFY') . "</b></a>\n"; } $deletelink = ""; if (!$manage && JEVHelper::canDeleteEvent($row)) { $deletelink = '<a href="' . $row->deletelink(false) . "&rettask=admin.listevents" . '" title="' . JText::_('JEV_DELETE') . '"><b>' . JText::_('JEV_DELETE') . "</b></a>\n"; } if (!$manage && JEVHelper::canPublishEvent($row)) { if ($row->published()) { $publishlink = '<a href="' . $row->unpublishlink(false) . "&rettask=admin.listevents" . '" title="' . JText::_('UNPUBLISH') . '"><b>' . JText::_('UNPUBLISH') . "</b></a>\n"; } else { $publishlink = '<a href="' . $row->publishlink(false) . "&rettask=admin.listevents" . '" title="' . JText::_('PUBLISH') . '"><b>' . JText::_('PUBLISH') . "</b></a>\n"; } } else { $publishlink = ""; } $eventlink = $row->viewDetailLink($row->yup(), $row->mup(), $row->dup(), false); $eventlink = JRoute::_($eventlink . $view->datamodel->getCatidsOutLink()); $border = "border-color:" . $row->bgcolor() . ";"; ?> <li class="ev_td_li" style="<?php echo $border; ?> "> <a class="<?php echo $row->state() ? 'ev_link_row' : 'ev_link_unpublished'; ?> " href="<?php echo $eventlink; ?> " title="<?php echo JEventsHTML::special($row->title()) . ($row->state() ? '' : JText::_('JEV_UNPUBLISHED')); ?> "><?php echo $row->title() . ($row->state() ? '' : JText::_('JEV_UNPUBLISHED')); ?> </a> <?php echo JText::_('JEV_BY'); ?> <i><?php echo $row->contactlink('', true); ?> </i> <?php echo $deletelink; ?> <?php echo $modifylink; ?> <?php echo $publishlink; ?> </li> <?php }
function blockKids($row, $itm, $tsk, $availableCatsIds, $activeParent = false, $activeSubCat = 0) { $catclass = ""; if ($row->parent_id > 0) { $catclass = "childcat"; } if ($row->parent_id > 0 && isset($row->activeBranch)) { $catclass = "activechildcat"; } if ($row->parent_id > 0 && $activeParent) { $catclass = "activechildcat"; } if ($row->parent_id > 0 && $activeSubCat > 0 && $row->id != $activeSubCat && !isset($row->activeNode)) { $catclass = "childcat"; } $cat = $row->id > 0 ? "&catids={$row->id}" : ""; $content = '<div class="event_legend_item ' . $catclass . '" style="border-color:' . $row->color . '">'; $content .= '<div class="event_legend_name" style="border-color:' . $row->color . '">' . '<a href="' . JRoute::_("index.php?option=" . JEV_COM_COMPONENT . "{$cat}{$itm}{$tsk}") . '" title="' . JEventsHTML::special($row->name) . '">' . JEventsHTML::special($row->name) . '</a>'; $content .= '</div>' . "\n"; if (strlen($row->description) > 0) { $content .= '<div class="event_legend_desc" style="border-color:' . $row->color . '">' . $row->description . '</div>'; } $content .= '</div>' . "\n"; if (isset($row->activeBranch) && isset($row->subcats)) { $activeSubCat = 0; foreach ($row->subcats as $subcatid => $subcat) { if (isset($subcat->activeBranch)) { $activeSubCat = $subcatid; } } foreach ($row->subcats as $subcatid => $subcat) { $content .= $this->blockKids($subcat, $itm, $tsk, $availableCatsIds, isset($row->activeNode), $activeSubCat); } } return $content; }
function DefaultLoadedFromTemplate($view, $template_name, $event, $mask, $template_value = false) { $db = JFactory::getDBO(); // find published template static $templates; static $fieldNameArray; if (!isset($templates)) { $templates = array(); $fieldNameArray = array(); $rawtemplates = array(); } $specialmodules = false; if (!$template_value) { if (!array_key_exists($template_name, $templates)) { $db->setQuery("SELECT * FROM #__jev_defaults WHERE state=1 AND name= " . $db->Quote($template_name) . " AND " . 'language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')'); $rawtemplates = $db->loadObjectList(); $templates[$template_name] = array(); if ($rawtemplates) { foreach ($rawtemplates as $rt) { if (!isset($templates[$template_name][$rt->language])) { $templates[$template_name][$rt->language] = array(); } $templates[$template_name][$rt->language][$rt->catid] = $rt; } } if (count($templates[$template_name]) == 0) { $templates[$template_name] = null; return false; } if (isset($templates[$template_name][JFactory::getLanguage()->getTag()])) { $templateArray = $templates[$template_name][JFactory::getLanguage()->getTag()]; // We have the most specific by language now fill in the gaps if (isset($templates[$template_name]["*"])) { foreach ($templates[$template_name]["*"] as $cat => $cattemplates) { if (!isset($templateArray[$cat])) { $templateArray[$cat] = $cattemplates; } } } $templates[$template_name] = $templateArray; } else { if (isset($templates[$template_name]["*"])) { $templates[$template_name] = $templates[$template_name]["*"]; } else { if (is_array($templates[$template_name]) && count($templates[$template_name]) == 0) { $templates[$template_name] = null; } else { if (is_array($templates[$template_name]) && count($templates[$template_name]) > 0) { $templates[$template_name] = current($templates[$template_name]); } else { $templates[$template_name] = null; } } } } $matched = false; foreach (array_keys($templates[$template_name]) as $catid) { if ($templates[$template_name][$catid]->value != "") { if (isset($templates[$template_name][$catid]->params)) { $templates[$template_name][$catid]->params = new JRegistry($templates[$template_name][$catid]->params); $specialmodules = $templates[$template_name][$catid]->params; } // Adjust template_value to include dynamic module output then strip it out afterwards if ($specialmodules) { $modids = $specialmodules->get("modid", array()); if (count($modids) > 0) { $modvals = $specialmodules->get("modval", array()); // not sure how this can arise :( if (is_object($modvals)) { $modvals = get_object_vars($modvals); } for ($count = 0; $count < count($modids) && $count < count($modvals) && trim($modids[$count]) != ""; $count++) { $templates[$template_name][$catid]->value .= "{{module start:MODULESTART#" . $modids[$count] . "}}"; // cleaned later! //$templates[$template_name][$catid]->value .= preg_replace_callback('|{{.*?}}|', 'cleanLabels', $modvals[$count]); $templates[$template_name][$catid]->value .= $modvals[$count]; $templates[$template_name][$catid]->value .= "{{module end:MODULEEND}}"; } } } // strip carriage returns other wise the preg replace doesn;y work - needed because wysiwyg editor may add the carriage return in the template field $templates[$template_name][$catid]->value = str_replace("\r", '', $templates[$template_name][$catid]->value); $templates[$template_name][$catid]->value = str_replace("\n", '', $templates[$template_name][$catid]->value); // non greedy replacement - because of the ? $templates[$template_name][$catid]->value = preg_replace_callback('|{{.*?}}|', 'cleanLabels', $templates[$template_name][$catid]->value); $matchesarray = array(); preg_match_all('|{{.*?}}|', $templates[$template_name][$catid]->value, $matchesarray); $templates[$template_name][$catid]->matchesarray = $matchesarray; } } } if (is_null($templates[$template_name])) { return false; } $catids = $event->catids() && count($event->catids()) ? $event->catids() : array($event->catid()); $catids[] = 0; // find the overlap $catids = array_intersect($catids, array_keys($templates[$template_name])); // At present must be an EXACT category match - no inheriting allowed! if (count($catids) == 0) { if (!isset($templates[$template_name][0]) || $templates[$template_name][0]->value == "") { return false; } } $template = false; foreach ($catids as $catid) { // use the first matching non-empty layout if ($templates[$template_name][$catid]->value != "") { $template = $templates[$template_name][$catid]; break; } } if (!$template) { return false; } $template_value = $template->value; $specialmodules = $template->params; $matchesarray = $template->matchesarray; } else { // This is a special scenario where we call this function externally e.g. from RSVP Pro messages // In this scenario we have not gone through the displaycustomfields plugin static $pluginscalled = array(); if (!isset($pluginscalled[$event->rp_id()])) { $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin("jevents"); $customresults = $dispatcher->trigger('onDisplayCustomFields', array(&$event)); $pluginscalled[$event->rp_id()] = $event; } else { $event = $pluginscalled[$event->rp_id()]; } // Adjust template_value to include dynamic module output then strip it out afterwards if ($specialmodules) { $modids = $specialmodules->get("modid", array()); if (count($modids) > 0) { $modvals = $specialmodules->get("modval", array()); // not sure how this can arise :( if (is_object($modvals)) { $modvals = get_object_vars($modvals); } for ($count = 0; $count < count($modids) && $count < count($modvals) && trim($modids[$count]) != ""; $count++) { $template_value .= "{{module start:MODULESTART#" . $modids[$count] . "}}"; // cleaned later! //$template_value .= preg_replace_callback('|{{.*?}}|', 'cleanLabels', $modvals[$count]); $template_value .= $modvals[$count]; $template_value .= "{{module end:MODULEEND}}"; } } } // strip carriage returns other wise the preg replace doesn;y work - needed because wysiwyg editor may add the carriage return in the template field $template_value = str_replace("\r", '', $template_value); $template_value = str_replace("\n", '', $template_value); // non greedy replacement - because of the ? $template_value = preg_replace_callback('|{{.*?}}|', 'cleanLabels', $template_value); $matchesarray = array(); preg_match_all('|{{.*?}}|', $template_value, $matchesarray); } if ($template_value == "") { return; } if (count($matchesarray) == 0) { return; } // now replace the fields $search = array(); $replace = array(); $blank = array(); $rawreplace = array(); $jevparams = JComponentHelper::getParams(JEV_COM_COMPONENT); for ($i = 0; $i < count($matchesarray[0]); $i++) { $strippedmatch = preg_replace('/(#|:|;)+[^}]*/', '', $matchesarray[0][$i]); if (in_array($strippedmatch, $search)) { continue; } // translation string if (strpos($strippedmatch, "{{_") === 0 && strpos($strippedmatch, " ") === false) { $search[] = $strippedmatch; $strippedmatch = substr($strippedmatch, 3, strlen($strippedmatch) - 5); $replace[] = JText::_($strippedmatch); $blank[] = ""; continue; } // Built in fields switch ($strippedmatch) { case "{{TITLE}}": $search[] = "{{TITLE}}"; $replace[] = $event->title(); $blank[] = ""; break; case "{{PRIORITY}}": $search[] = "{{PRIORITY}}"; $replace[] = $event->priority(); $blank[] = ""; break; case "{{LINK}}": case "{{LINKSTART}}": case "{{LINKEND}}": case "{{TITLE_LINK}}": if ($view) { // Title link $rowlink = $event->viewDetailLink($event->yup(), $event->mup(), $event->dup(), false); $rowlink = JRoute::_($rowlink . $view->datamodel->getCatidsOutLink()); ob_start(); ?> <a class="ev_link_row" href="<?php echo $rowlink; ?> " title="<?php echo JEventsHTML::special($event->title()); ?> "> <?php $linkstart = ob_get_clean(); } else { $rowlink = $linkstart = ""; } $search[] = "{{LINK}}"; $replace[] = $rowlink; $blank[] = ""; $search[] = "{{LINKSTART}}"; $replace[] = $linkstart; $blank[] = ""; $search[] = "{{LINKEND}}"; $replace[] = "</a>"; $blank[] = ""; $fulllink = $linkstart . $event->title() . '</a>'; $search[] = "{{TITLE_LINK}}"; $replace[] = $fulllink; $blank[] = ""; break; case "{{TRUNCTITLE}}": // for month calendar cell only if (isset($event->truncatedtitle)) { $search[] = "{{TRUNCTITLE}}"; $replace[] = $event->truncatedtitle; $blank[] = ""; } else { $search[] = "{{TRUNCTITLE}}"; $replace[] = $event->title(); $blank[] = ""; } break; case "{{URL}}": $search[] = "{{URL}}"; $replace[] = $event->url(); $blank[] = ""; break; case "{{TRUNCATED_DESC}}": $search[] = "{{TRUNCATED_DESC:.*?}}"; $replace[] = $event->content(); $blank[] = ""; // $search[]="|{{TRUNCATED_DESC:(.*)}}|";$replace[]=$event->content(); break; case "{{DESCRIPTION}}": $search[] = "{{DESCRIPTION}}"; $replace[] = $event->content(); $blank[] = ""; break; case "{{MANAGEMENT}}": $search[] = "{{MANAGEMENT}}"; if ($view) { ob_start(); $view->_viewNavAdminPanel(); $replace[] = ob_get_clean(); } else { $replace[] = ""; } $blank[] = ""; break; case "{{CATEGORY}}": $search[] = "{{CATEGORY}}"; $replace[] = $event->catname(); $blank[] = ""; break; case "{{ALLCATEGORIES}}": $search[] = "{{ALLCATEGORIES}}"; static $allcat_catids; if (!isset($allcat_catids)) { $db = JFactory::getDBO(); $arr_catids = array(); $catsql = "SELECT cat.id, cat.title as name FROM #__categories as cat WHERE cat.extension='com_jevents' "; $db->setQuery($catsql); $allcat_catids = $db->loadObjectList('id'); } $db = JFactory::getDbo(); $db->setQuery("Select catid from #__jevents_catmap WHERE evid = " . $event->ev_id()); $allcat_eventcats = $db->loadColumn(); $allcats = array(); foreach ($allcat_eventcats as $catid) { if (isset($allcat_catids[$catid])) { $allcats[] = $allcat_catids[$catid]->name; } } $replace[] = implode(", ", $allcats); $blank[] = ""; break; case "{{CALENDAR}}": $search[] = "{{CALENDAR}}"; $replace[] = $event->getCalendarName(); $blank[] = ""; break; case "{{COLOUR}}": case "{{colour}}": $bgcolor = $event->bgcolor(); $search[] = $strippedmatch; $replace[] = $bgcolor == "" ? "#ffffff" : $bgcolor; $blank[] = ""; break; case "{{FGCOLOUR}}": $search[] = "{{FGCOLOUR}}"; $replace[] = $event->fgcolor(); $blank[] = ""; break; case "{{TTTIME}}": $search[] = "{{TTTIME}}"; $replace[] = "[[TTTIME]]"; $blank[] = ""; break; case "{{EVTTIME}}": $search[] = "{{EVTTIME}}"; $replace[] = "[[EVTTIME]]"; $blank[] = ""; break; case "{{TOOLTIP}}": $search[] = "{{TOOLTIP}}"; $replace[] = "[[TOOLTIP]]"; $blank[] = ""; break; case "{{CATEGORYLNK}}": $router = JRouter::getInstance("site"); $catlinks = array(); if ($jevparams->get("multicategory", 0)) { $catids = $event->catids(); $catdata = $event->getCategoryData(); } else { $catids = array($event->catid()); $catdata = array($event->getCategoryData()); } $vars = $router->getVars(); foreach ($catids as $cat) { $vars["catids"] = $cat; $catname = "xxx"; foreach ($catdata as $cg) { if ($cat == $cg->id) { $catname = $cg->name; break; } } $eventlink = "index.php?"; foreach ($vars as $key => $val) { // this is only used in the latest events module so do not perpetuate it here if ($key == "filter_reset") { continue; } if ($key == "task" && ($val == "icalrepeat.detail" || $val == "icalevent.detail")) { $val = "week.listevents"; } $eventlink .= $key . "=" . $val . "&"; } $eventlink = substr($eventlink, 0, strlen($eventlink) - 1); $eventlink = JRoute::_($eventlink); $catlinks[] = '<a class="ev_link_cat" href="' . $eventlink . '" title="' . JEventsHTML::special($catname) . '">' . $catname . '</a>'; } $search[] = "{{CATEGORYLNK}}"; $replace[] = implode(", ", $catlinks); $blank[] = ""; break; case "{{CATEGORYIMG}}": $search[] = "{{CATEGORYIMG}}"; $replace[] = $event->getCategoryImage(); $blank[] = ""; break; case "{{CATEGORYIMGS}}": $search[] = "{{CATEGORYIMGS}}"; $replace[] = $event->getCategoryImage(true); $blank[] = ""; break; case "{{CATDESC}}": $search[] = "{{CATDESC}}"; $replace[] = $event->getCategoryDescription(); $blank[] = ""; break; case "{{CATID}}": $search[] = "{{CATID}}"; $replace[] = $event->catid(); $blank[] = ""; break; case "{{PARENT_CATEGORY}}": $search[] = "{{PARENT_CATEGORY}}"; $replace[] = $event->getParentCategory(); $blank[] = ""; break; case "{{ICALDIALOG}}": case "{{ICALBUTTON}}": case "{{EDITDIALOG}}": case "{{EDITBUTTON}}": static $styledone = false; if (!$styledone) { $document = JFactory::getDocument(); $document->addStyleDeclaration("div.jevdialogs {position:relative;margin-top:35px;text-align:left;}\n div.jevdialogs img{float:none!important;margin:0px}"); $styledone = true; } if ($jevparams->get("showicalicon", 0) && !$jevparams->get("disableicalexport", 0)) { JEVHelper::script('view_detail.js', 'components/' . JEV_COM_COMPONENT . "/assets/js/"); $cssloaded = true; ob_start(); ?> <a href="javascript:void(0)" onclick='clickIcalButton()' title="<?php echo JText::_('JEV_SAVEICAL'); ?> "> <img src="<?php echo JURI::root() . 'components/' . JEV_COM_COMPONENT . '/assets/images/jevents_event_sml.png'; ?> " name="image" alt="<?php echo JText::_('JEV_SAVEICAL'); ?> " class="jev_ev_sml nothumb"/> </a> <div class="jevdialogs"> <?php $search[] = "{{ICALDIALOG}}"; if ($view) { ob_start(); $view->eventIcalDialog($event, $mask); $dialog = ob_get_clean(); $replace[] = $dialog; } else { $replace[] = ""; } $blank[] = ""; echo $dialog; ?> </div> <?php $search[] = "{{ICALBUTTON}}"; $replace[] = ob_get_clean(); $blank[] = ""; } else { $search[] = "{{ICALBUTTON}}"; $replace[] = ""; $blank[] = ""; $search[] = "{{ICALDIALOG}}"; $replace[] = ""; $blank[] = ""; } if (JEVHelper::canEditEvent($event) || JEVHelper::canPublishEvent($event) || JEVHelper::canDeleteEvent($event)) { JEVHelper::script('view_detail.js', 'components/' . JEV_COM_COMPONENT . "/assets/js/"); ob_start(); ?> <a href="javascript:void(0)" onclick='clickEditButton()' title="<?php echo JText::_('JEV_E_EDIT'); ?> "> <?php echo JEVHelper::imagesite('edit.png', JText::_('JEV_E_EDIT')); ?> </a> <div class="jevdialogs"> <?php $search[] = "{{EDITDIALOG}}"; if ($view) { ob_start(); $view->eventManagementDialog($event, $mask); $dialog = ob_get_clean(); $replace[] = $dialog; } else { $replace[] = ""; } $blank[] = ""; echo $dialog; ?> </div> <?php $search[] = "{{EDITBUTTON}}"; $replace[] = ob_get_clean(); $blank[] = ""; } else { $search[] = "{{EDITBUTTON}}"; $replace[] = ""; $blank[] = ""; $search[] = "{{EDITDIALOG}}"; $replace[] = ""; $blank[] = ""; } break; case "{{CREATED}}": $compparams = JComponentHelper::getParams(JEV_COM_COMPONENT); $jtz = $compparams->get("icaltimezonelive", ""); if ($jtz == "") { $jtz = null; } $created = JevDate::getDate($event->created(), $jtz); $search[] = "{{CREATED}}"; $replace[] = $created->toFormat(JText::_("DATE_FORMAT_CREATED")); $blank[] = ""; break; case "{{ACCESS}}": $search[] = "{{ACCESS}}"; $replace[] = $event->getAccessName(); $blank[] = ""; break; case "{{REPEATSUMMARY}}": case "{{STARTDATE}}": case "{{ENDDATE}}": case "{{STARTTIME}}": case "{{ENDTIME}}": case "{{STARTTZ}}": case "{{ENDTZ}}": case "{{ISOSTART}}": case "{{ISOEND}}": case "{{DURATION}}": case "{{MULTIENDDATE}}": if ($template_name == "icalevent.detail_body") { $search[] = "{{REPEATSUMMARY}}"; $repeatsummary = $view->repeatSummary($event); if (!$repeatsummary) { $repeatsummary = $event->repeatSummary(); } $replace[] = $repeatsummary; //$replace[] = $event->repeatSummary(); $blank[] = ""; $row = $event; $start_date = JEventsHTML::getDateFormat($row->yup(), $row->mup(), $row->dup(), 0); $start_time = JEVHelper::getTime($row->getUnixStartTime(), $row->hup(), $row->minup()); $stop_date = JEventsHTML::getDateFormat($row->ydn(), $row->mdn(), $row->ddn(), 0); $stop_time = JEVHelper::getTime($row->getUnixEndTime(), $row->hdn(), $row->mindn()); $stop_time_midnightFix = $stop_time; $stop_date_midnightFix = $stop_date; if ($row->sdn() == 59 && $row->mindn() == 59) { $stop_time_midnightFix = JEVHelper::getTime($row->getUnixEndTime() + 1, 0, 0); $stop_date_midnightFix = JEventsHTML::getDateFormat($row->ydn(), $row->mdn(), $row->ddn() + 1, 0); } $search[] = "{{STARTDATE}}"; $replace[] = $start_date; $blank[] = ""; $search[] = "{{ENDDATE}}"; $replace[] = $stop_date; $blank[] = ""; $search[] = "{{STARTTIME}}"; $replace[] = $row->alldayevent() ? "" : $start_time; $blank[] = ""; $search[] = "{{ENDTIME}}"; $replace[] = $row->noendtime() || $row->alldayevent() ? "" : $stop_time_midnightFix; $blank[] = ""; $search[] = "{{STARTTZ}}"; $replace[] = $row->alldayevent() ? "" : $start_time; $blank[] = ""; $search[] = "{{ENDTZ}}"; $replace[] = $row->noendtime() || $row->alldayevent() ? "" : $stop_time_midnightFix; $blank[] = ""; $rawreplace["{{STARTDATE}}"] = $row->getUnixStartDate(); $rawreplace["{{ENDDATE}}"] = $row->getUnixEndDate(); $rawreplace["{{STARTTIME}}"] = $row->getUnixStartTime(); $rawreplace["{{ENDTIME}}"] = $row->getUnixEndTime(); $rawreplace["{{STARTTZ}}"] = $row->yup() . "-" . $row->mup() . "-" . $row->dup() . " " . $row->hup() . ":" . $row->minup() . ":" . $row->sup(); $rawreplace["{{ENDTZ}}"] = $row->ydn() . "-" . $row->mdn() . "-" . $row->ddn() . " " . $row->hdn() . ":" . $row->mindn() . ":" . $row->sdn(); $rawreplace["{{MULTIENDDATE}}"] = $row->endDate() > $row->startDate() ? $stop_date : ""; $search[] = "{{ISOSTART}}"; $replace[] = JEventsHTML::getDateFormat($row->yup(), $row->mup(), $row->dup(), "%Y-%m-%d") . "T" . sprintf('%02d:%02d:00', $row->hup(), $row->minup()); $blank[] = ""; $search[] = "{{ISOEND}}"; $replace[] = JEventsHTML::getDateFormat($row->ydn(), $row->mdn(), $row->ddn(), "%Y-%m-%d") . "T" . sprintf('%02d:%02d:00', $row->hdn(), $row->mindn()); $blank[] = ""; $search[] = "{{MULTIENDDATE}}"; $replace[] = $row->endDate() > $row->startDate() ? $row->getUnixEndDate() : ""; $blank[] = ""; } else { $row = $event; $start_date = JEventsHTML::getDateFormat($row->yup(), $row->mup(), $row->dup(), 0); $start_time = JEVHelper::getTime($row->getUnixStartTime(), $row->hup(), $row->minup()); $stop_date = JEventsHTML::getDateFormat($row->ydn(), $row->mdn(), $row->ddn(), 0); $stop_time = JEVHelper::getTime($row->getUnixEndTime(), $row->hdn(), $row->mindn()); $stop_time_midnightFix = $stop_time; $stop_date_midnightFix = $stop_date; if ($row->sdn() == 59 && $row->mindn() == 59) { $stop_time_midnightFix = JEVHelper::getTime($row->getUnixEndTime() + 1, 0, 0); $stop_date_midnightFix = JEventsHTML::getDateFormat($row->ydn(), $row->mdn(), $row->ddn() + 1, 0); } $search[] = "{{STARTDATE}}"; $replace[] = $start_date; $blank[] = ""; $search[] = "{{ENDDATE}}"; $replace[] = $stop_date; $blank[] = ""; $search[] = "{{STARTTIME}}"; $replace[] = $row->alldayevent() ? "" : $start_time; $blank[] = ""; $search[] = "{{ENDTIME}}"; $replace[] = $row->noendtime() || $row->alldayevent() ? "" : $stop_time_midnightFix; $blank[] = ""; $search[] = "{{MULTIENDDATE}}"; $replace[] = $row->endDate() > $row->startDate() ? $stop_date : ""; $blank[] = ""; $search[] = "{{STARTTZ}}"; $replace[] = $row->alldayevent() ? "" : $start_time; $blank[] = ""; $search[] = "{{ENDTZ}}"; $replace[] = $row->noendtime() || $row->alldayevent() ? "" : $stop_time_midnightFix; $blank[] = ""; $rawreplace["{{STARTDATE}}"] = $row->getUnixStartDate(); $rawreplace["{{ENDDATE}}"] = $row->getUnixEndDate(); $rawreplace["{{STARTTIME}}"] = $row->getUnixStartTime(); $rawreplace["{{ENDTIME}}"] = $row->getUnixEndTime(); $rawreplace["{{STARTTZ}}"] = $row->yup() . "-" . $row->mup() . "-" . $row->dup() . " " . $row->hup() . ":" . $row->minup() . ":" . $row->sup(); $rawreplace["{{ENDTZ}}"] = $row->ydn() . "-" . $row->mdn() . "-" . $row->ddn() . " " . $row->hdn() . ":" . $row->mindn() . ":" . $row->sdn(); $rawreplace["{{MULTIENDDATE}}"] = $row->endDate() > $row->startDate() ? $row->getUnixEndDate() : ""; if (strpos($template_value, "{{ISOSTART}}") !== false || strpos($template_value, "{{ISOEND}}") !== false) { $search[] = "{{ISOSTART}}"; $replace[] = JEventsHTML::getDateFormat($row->yup(), $row->mup(), $row->dup(), "%Y-%m-%d") . "T" . sprintf('%02d:%02d:00', $row->hup(), $row->minup()); $blank[] = ""; $search[] = "{{ISOEND}}"; $replace[] = JEventsHTML::getDateFormat($row->ydn(), $row->mdn(), $row->ddn(), "%Y-%m-%d") . "T" . sprintf('%02d:%02d:00', $row->hdn(), $row->mindn()); $blank[] = ""; } // these would slow things down if not needed in the list $dorepeatsummary = strpos($template_value, "{{REPEATSUMMARY}}") !== false; if ($dorepeatsummary) { $cfg = JEVConfig::getInstance(); $jevtask = JRequest::getString("jevtask"); $jevtask = str_replace(".listevents", "", $jevtask); $showyeardate = $cfg->get("showyeardate", 0); $row = $event; $times = ""; if ($showyeardate && $jevtask == "year" || $jevtask == "search.results" || $jevtask == "month.calendar" || $jevtask == "cat" || $jevtask == "range") { $start_publish = $row->getUnixStartDate(); $stop_publish = $row->getUnixEndDate(); if ($stop_publish == $start_publish) { if ($row->noendtime()) { $times = $start_time; } else { if ($row->alldayevent()) { $times = ""; } else { if ($start_time != $stop_time) { $times = $start_time . ' - ' . $stop_time_midnightFix; } else { $times = $start_time; } } } $times = $start_date . " " . $times . "<br/>"; } else { if ($row->noendtime()) { $times = $start_time; } else { if ($row->alldayevent()) { $times = ""; } else { if ($start_time != $stop_time && !$row->alldayevent()) { $times = $start_time . ' - ' . $stop_time_midnightFix; } } } $times = $start_date . ' - ' . $stop_date . " " . $times . "<br/>"; } } else { if (($jevtask == "day" || $jevtask == "week") && $row->starttime() != $row->endtime() && !$row->alldayevent()) { if ($row->noendtime()) { if ($showyeardate && $jevtask == "year") { $times = $start_time . ' - ' . $stop_time_midnightFix . ' '; } else { $times = $start_time . ' '; } } else { if ($row->alldayevent()) { $times = ""; } else { $times = $start_time . ' - ' . $stop_time_midnightFix . ' '; } } } } $search[] = "{{REPEATSUMMARY}}"; $replace[] = $times; $blank[] = ""; } } $search[] = "{{DURATION}}"; $timedelta = $row->noendtime() ? "" : $row->getUnixEndTime() - $row->getUnixStartTime(); if ($row->alldayevent()) { $timedelta = $row->getUnixEndDate() - $row->getUnixStartDate() + 60 * 60 * 24; } $fieldval = 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("%d", $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); } $replace[] = $fieldval; $blank[] = ""; break; case "{{PREVIOUSNEXT}}": static $doprevnext; if (!isset($doprevnext)) { $doprevnext = strpos($template_value, "{{PREVIOUSNEXT}}") !== false; } if ($doprevnext) { $search[] = "{{PREVIOUSNEXT}}"; $replace[] = $event->previousnextLinks(); $blank[] = ""; } break; case "{{PREVIOUSNEXTEVENT}}": static $doprevnextevent; if (!isset($doprevnextevent)) { $doprevnextevent = strpos($template_value, "{{PREVIOUSNEXTEVENT}}") !== false; } if ($doprevnextevent) { $search[] = "{{PREVIOUSNEXTEVENT}}"; $replace[] = $event->previousnextEventLinks(); $blank[] = ""; } break; case "{{FIRSTREPEAT}}": case "{{FIRSTREPEATSTART}}": static $dofirstrepeat; if (!isset($dofirstrepeat)) { $dofirstrepeat = strpos($template_value, "{{FIRSTREPEAT}}") !== false || strpos($template_value, "{{FIRSTREPEATSTART}}") !== false; } if ($dofirstrepeat) { $search[] = "{{FIRSTREPEAT}}"; $firstrepeat = $event->getFirstRepeat(); if ($firstrepeat->rp_id() == $event->rp_id()) { $replace[] = ""; } else { $replace[] = "<a class='ev_firstrepeat' href='" . $firstrepeat->viewDetailLink($firstrepeat->yup(), $firstrepeat->mup(), $firstrepeat->dup(), true) . "' title='" . JText::_('JEV_FIRSTREPEAT') . "' >" . JText::_('JEV_FIRSTREPEAT') . "</a>"; } $blank[] = ""; $search[] = "{{FIRSTREPEATSTART}}"; if ($firstrepeat->rp_id() == $event->rp_id()) { $replace[] = ""; } else { $replace[] = JEventsHTML::getDateFormat($firstrepeat->yup(), $firstrepeat->mup(), $firstrepeat->dup(), 0); $rawreplace[] = $firstrepeat->yup() . "-" . $firstrepeat->mup() . "-" . $firstrepeat->dup() . " " . $firstrepeat->hup() . ":" . $firstrepeat->minup() . ":" . $firstrepeat->sup(); } $blank[] = ""; } break; case "{{LASTREPEAT}}": case "{{LASTREPEATEND}}": static $dolastrepeat; if (!isset($dolastrepeat)) { $dolastrepeat = strpos($template_value, "{{LASTREPEAT}}") !== false || strpos($template_value, "{{LASTREPEATEND}}") !== false; } if ($dolastrepeat) { $search[] = "{{LASTREPEAT}}"; $lastrepeat = $event->getLastRepeat(); if ($lastrepeat->rp_id() == $event->rp_id()) { $replace[] = ""; } else { $replace[] = "<a class='ev_lastrepeat' href='" . $lastrepeat->viewDetailLink($lastrepeat->yup(), $lastrepeat->mup(), $lastrepeat->dup(), true) . "' title='" . JText::_('JEV_LASTREPEAT') . "' >" . JText::_('JEV_LASTREPEAT') . "</a>"; } $blank[] = ""; $search[] = "{{LASTREPEATEND}}"; if ($lastrepeat->rp_id() != $event->rp_id()) { $replace[] = JEventsHTML::getDateFormat($lastrepeat->ydn(), $lastrepeat->mdn(), $lastrepeat->ddn(), 0); $rawreplace[] = $lastrepeat->ydn() . "-" . $lastrepeat->mdn() . "-" . $lastrepeat->ddn() . " " . $lastrepeat->hdn() . ":" . $lastrepeat->mindn() . ":" . $lastrepeat->sdn(); } else { $replace[] = ""; } $blank[] = ""; } break; case "{{CREATOR_LABEL}}": $search[] = "{{CREATOR_LABEL}}"; $replace[] = JText::_('JEV_BY'); $blank[] = ""; break; case "{{CREATOR}}": $search[] = "{{CREATOR}}"; $replace[] = $event->contactlink(); $blank[] = ""; break; case "{{HITS}}": $search[] = "{{HITS}}"; $replace[] = "<span class='hitslabel'>" . JText::_('JEV_EVENT_HITS') . '</span> : ' . $event->hits(); $blank[] = ""; break; case "{{LOCATION_LABEL}}": case "{{LOCATION}}": if ($event->hasLocation()) { $search[] = "{{LOCATION_LABEL}}"; $replace[] = JText::_('JEV_EVENT_ADRESSE') . " "; $blank[] = ""; $search[] = "{{LOCATION}}"; $replace[] = $event->location(); $blank[] = ""; } else { $search[] = "{{LOCATION_LABEL}}"; $replace[] = ""; $blank[] = ""; $search[] = "{{LOCATION}}"; $replace[] = ""; $blank[] = ""; } break; case "{{CONTACT_LABEL}}": case "{{CONTACT}}": if ($event->hasContactInfo()) { if (strpos($event->contact_info(), '<script') === false) { $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); //Contact $pattern = '[a-zA-Z0-9&?_.,=%\\-\\/]'; if (strpos($event->contact_info(), '<a href=') === false && $event->contact_info() != "") { $event->contact_info(preg_replace('@(https?://)(' . $pattern . '*)@i', '<a href="\\1\\2">\\1\\2</a>', $event->contact_info())); } // NO need to call conContentPrepate since its called on the template value below here } $search[] = "{{CONTACT_LABEL}}"; $replace[] = JText::_('JEV_EVENT_CONTACT') . " "; $blank[] = ""; $search[] = "{{CONTACT}}"; $replace[] = $event->contact_info(); $blank[] = ""; } else { $search[] = "{{CONTACT_LABEL}}"; $replace[] = ""; $blank[] = ""; $search[] = "{{CONTACT}}"; $replace[] = ""; $blank[] = ""; } break; case "{{EXTRAINFO}}": //Extra if (strpos($event->extra_info(), '<script') === false && $event->extra_info() != "") { $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $pattern = '[a-zA-Z0-9&?_.,=%\\-\\/#]'; if (strpos($event->extra_info(), '<a href=') === false) { $event->extra_info(preg_replace('@(https?://)(' . $pattern . '*)@i', '<a href="\\1\\2">\\1\\2</a>', $event->extra_info())); } //$row->extra_info(eregi_replace('[^(href=|href="|href=\')](((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1', $row->extra_info())); // NO need to call conContentPrepate since its called on the template value below here } $search[] = "{{EXTRAINFO}}"; $replace[] = $event->extra_info(); $blank[] = ""; break; case "{{RPID}}": $search[] = "{{RPID}}"; $replace[] = $event->rp_id(); $blank[] = ""; break; default: $strippedmatch = str_replace(array("{", "}"), "", $strippedmatch); if (is_callable(array($event, $strippedmatch))) { $search[] = "{{" . $strippedmatch . "}}"; $replace[] = $event->{$strippedmatch}(); $blank[] = ""; } break; } } // Now do the plugins // get list of enabled plugins $layout = $template_name == "icalevent.list_row" || $template_name == "month.calendar_cell" || $template_name == "month.calendar_tip" ? "list" : "detail"; $jevplugins = JPluginHelper::getPlugin("jevents"); foreach ($jevplugins as $jevplugin) { $classname = "plgJevents" . ucfirst($jevplugin->name); if (is_callable(array($classname, "substitutefield"))) { if (!isset($fieldNameArray[$classname])) { $fieldNameArray[$classname] = array(); } if (!isset($fieldNameArray[$classname][$layout])) { //list($usec, $sec) = explode(" ", microtime()); //$starttime = (float) $usec + (float) $sec; $fieldNameArray[$classname][$layout] = call_user_func(array($classname, "fieldNameArray"), $layout); //list ($usec, $sec) = explode(" ", microtime()); //$time_end = (float) $usec + (float) $sec; //echo "$classname::fieldNameArray = ".round($time_end - $starttime, 4)."<br/>"; } if (isset($fieldNameArray[$classname][$layout]["values"])) { foreach ($fieldNameArray[$classname][$layout]["values"] as $fieldname) { if (!strpos($template_value, $fieldname) !== false) { continue; } $search[] = "{{" . $fieldname . "}}"; // is the event detail hidden - if so then hide any custom fields too! if (!isset($event->_privateevent) || $event->_privateevent != 3) { $replace[] = call_user_func(array($classname, "substitutefield"), $event, $fieldname); if (is_callable(array($classname, "blankfield"))) { $blank[] = call_user_func(array($classname, "blankfield"), $event, $fieldname); } else { $blank[] = ""; } } else { $blank[] = ""; $replace[] = ""; } } } } } // word counts etc. for ($s = 0; $s < count($search); $s++) { if (strpos($search[$s], "TRUNCATED_DESC:") > 0) { global $tempreplace, $tempevent, $tempsearch; $tempreplace = $replace[$s]; $tempsearch = $search[$s]; $tempevent = $event; $template_value = preg_replace_callback("|{$tempsearch}|", 'jevSpecialHandling', $template_value); } } // Date/time formats etc. for ($s = 0; $s < count($search); $s++) { if (strpos($search[$s], "STARTDATE") > 0 || strpos($search[$s], "STARTTIME") > 0 || strpos($search[$s], "ENDDATE") > 0 || strpos($search[$s], "ENDTIME") > 0 || strpos($search[$s], "ENDTZ") > 0 || strpos($search[$s], "STARTTZ") > 0 || strpos($search[$s], "MULTIENDDATE") > 0 || strpos($search[$s], "FIRSTREPEATSTART") > 0 || strpos($search[$s], "LASTREPEATEND") > 0) { if (!isset($rawreplace[$search[$s]]) || !$rawreplace[$search[$s]]) { continue; } global $tempreplace, $tempevent, $tempsearch; $tempreplace = $rawreplace[$search[$s]]; $tempsearch = str_replace("}}", ";.*?}}", $search[$s]); $tempevent = $event; $template_value = preg_replace_callback("|{$tempsearch}|", 'jevSpecialDateFormatting', $template_value); } } for ($s = 0; $s < count($search); $s++) { global $tempreplace, $tempevent, $tempsearch, $tempblank; $tempreplace = $replace[$s]; $tempblank = $blank[$s]; $tempsearch = str_replace("}}", "#", $search[$s]); $tempevent = $event; $template_value = preg_replace_callback("|{$tempsearch}(.+?)}}|", 'jevSpecialHandling2', $template_value); } $template_value = str_replace($search, $replace, $template_value); if ($specialmodules) { $reg = JRegistry::getInstance("com_jevents"); $parts = explode("{{MODULESTART#", $template_value); $dynamicmodules = array(); foreach ($parts as $part) { $currentdynamicmodules = $reg->get("dynamicmodules", false); if (strpos($part, "{{MODULEEND}}") === false) { // strip out BAD HTML tags left by WYSIWYG editors if (substr($part, strlen($part) - 3) == "<p>") { $template_value = substr($part, 0, strlen($part) - 3); } else { $template_value = $part; } continue; } // start with module name $modname = substr($part, 0, strpos($part, "}}")); $modulecontent = substr($part, strpos($part, "}}") + 2); $modulecontent = substr($modulecontent, 0, strpos($modulecontent, "{{MODULEEND}}")); // strip out BAD HTML tags left by WYSIWYG editors if (strpos($modulecontent, "</p>") === 0) { $modulecontent = "<p>x@#" . $modulecontent; } if (substr($modulecontent, strlen($modulecontent) - 3) == "<p>") { $modulecontent .= "x@#</p>"; } $modulecontent = str_replace("<p>x@#</p>", "", $modulecontent); if (isset($currentdynamicmodules[$modname])) { if (!is_array($currentdynamicmodules[$modname])) { $currentdynamicmodules[$modname] = array($currentdynamicmodules[$modname]); } $currentdynamicmodules[$modname][] = $modulecontent; $dynamicmodules[$modname] = $currentdynamicmodules[$modname]; } else { $dynamicmodules[$modname] = $modulecontent; } } $reg->set("dynamicmodules", $dynamicmodules); } // non greedy replacement - because of the ? $template_value = preg_replace_callback('|{{.*?}}|', 'cleanUnpublished', $template_value); // replace [[ with { to that other content plugins can work ok - but not for calendar cell or tooltip since we use [[ there already! if ($template_name != "month.calendar_cell" && $template_name != "month.calendar_tip") { $template_value = str_replace(array("[[", "]]"), array("{", "}"), $template_value); } //We add new line characters again to avoid being marked as SPAM when using tempalte in emails // do this before content plugins incase they insert javascript etc. $template_value = preg_replace("@(<\\s*(br)*\\s*\\/\\s*(p|td|tr|table|div|ul|li|ol|dd|dl|dt)*\\s*>)+?@i", "\$1\n", $template_value); // Call content plugins - BUT because emailcloak doesn't identify emails in input fields to a text substitution $template_value = str_replace("@", "@£@", $template_value); $params = new JRegistry(null); $tmprow = new stdClass(); $tmprow->text = $template_value; $tmprow->event = $event; $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $dispatcher->trigger('onContentPrepare', array('com_jevents', &$tmprow, &$params, 0)); $template_value = $tmprow->text; $template_value = str_replace("@£@", "@", $template_value); echo $template_value; return true; }
function DefaultLoadedFromTemplate($view, $template_name, $event, $mask) { $db = JFactory::getDBO(); // find published template static $templates; if (!isset($templates)) { $templates = array(); } if (!array_key_exists($template_name, $templates)) { $db->setQuery("SELECT * FROM #__jev_defaults WHERE state=1 AND name= " . $db->Quote($template_name)); $templates[$template_name] = $db->loadObject(); } if (is_null($templates[$template_name]) || $templates[$template_name]->value == "") { return false; } $template = $templates[$template_name]; // now replace the fields $search = array(); $replace = array(); $blank = array(); $jevparams = JComponentHelper::getParams(JEV_COM_COMPONENT); // Built in fields $search[] = "{{TITLE}}"; $replace[] = $event->title(); $blank[] = ""; // Title link $rowlink = $event->viewDetailLink($event->yup(), $event->mup(), $event->dup(), false); $rowlink = JRoute::_($rowlink . $view->datamodel->getCatidsOutLink()); ob_start(); ?> <a class="ev_link_row" href="<?php echo $rowlink; ?> " style="font-weight:bold;" title="<?php echo JEventsHTML::special($event->title()); ?> "> <?php $linkstart = ob_get_clean(); $search[] = "{{LINK}}"; $replace[] = $rowlink; $blank[] = ""; $search[] = "{{LINKSTART}}"; $replace[] = $linkstart; $blank[] = ""; $search[] = "{{LINKEND}}"; $replace[] = "</a>"; $blank[] = ""; $fulllink = $linkstart . $event->title() . '</a>'; $search[] = "{{TITLE_LINK}}"; $replace[] = $fulllink; $blank[] = ""; $search[] = "{{URL}}"; $replace[] = $event->url(); $blank[] = ""; $search[] = "{{TRUNCATED_DESC:.*}}"; $replace[] = $event->content(); $blank[] = ""; // $search[]="|{{TRUNCATED_DESC:(.*)}}|";$replace[]=$event->content(); $search[] = "{{DESCRIPTION}}"; $replace[] = $event->content(); $blank[] = ""; $search[] = "{{MANAGEMENT}}"; ob_start(); $view->_viewNavAdminPanel(); $replace[] = ob_get_clean(); $blank[] = ""; $search[] = "{{CATEGORY}}"; $replace[] = $event->catname(); $blank[] = ""; $bgcolor = $event->bgcolor(); $search[] = "{{COLOUR}}"; $replace[] = $bgcolor == "" ? "#ffffff" : $bgcolor; $blank[] = ""; $search[] = "{{FGCOLOUR}}"; $replace[] = $event->fgcolor(); $blank[] = ""; $search[] = "{{TTTIME}}"; $replace[] = "[[TTTIME]]"; $blank[] = ""; $search[] = "{{EVTTIME}}"; $replace[] = "[[EVTTIME]]"; $blank[] = ""; $search[] = "{{TOOLTIP}}"; $replace[] = "[[TOOLTIP]]"; $blank[] = ""; $router = JRouter::getInstance("site"); $vars = $router->getVars(); $vars["catids"] = $event->catid(); $eventlink = "index.php?"; foreach ($vars as $key => $val) { $eventlink .= $key . "=" . $val . "&"; } $eventlink = substr($eventlink, 0, strlen($eventlink) - 1); $eventlink = JRoute::_($eventlink); $catlink = '<a class="ev_link_cat" href="' . $eventlink . '" title="' . JEventsHTML::special($event->catname()) . '">' . $event->catname() . '</a>'; $search[] = "{{CATEGORYLNK}}"; $replace[] = $catlink; $blank[] = ""; $search[] = "{{CATEGORYIMG}}"; $replace[] = $event->getCategoryImage(); $blank[] = ""; static $styledone = false; if (!$styledone) { $document = JFactory::getDocument(); $document->addStyleDeclaration("div.jevdialogs {position:relative;margin-top:35px;text-align:left;}\n div.jevdialogs img{float:none!important;margin:0px}"); $styledone = true; } if ($jevparams->get("showicalicon", 0) && !$jevparams->get("disableicalexport", 0)) { JEVHelper::script('view_detail.js', 'components/' . JEV_COM_COMPONENT . "/assets/js/"); $cssloaded = true; ob_start(); ?> <a href="javascript:void(0)" onclick='clickIcalButton()' title="<?php echo JText::_('JEV_SAVEICAL'); ?> "> <img src="<?php echo JURI::root() . 'administrator/components/' . JEV_COM_COMPONENT . '/assets/images/jevents_event_sml.png'; ?> " align="middle" name="image" alt="<?php echo JText::_('JEV_SAVEICAL'); ?> " style="height:24px;"/> </a> <div class="jevdialogs"> <?php $search[] = "{{ICALDIALOG}}"; ob_start(); $view->eventIcalDialog($event, $mask); $dialog = ob_get_clean(); $replace[] = $dialog; $blank[] = ""; echo $dialog; ?> </div> <?php $search[] = "{{ICALBUTTON}}"; $replace[] = ob_get_clean(); $blank[] = ""; } else { $search[] = "{{ICALBUTTON}}"; $replace[] = ""; $blank[] = ""; $search[] = "{{ICALDIALOG}}"; $replace[] = ""; $blank[] = ""; } if ((JEVHelper::canEditEvent($event) || JEVHelper::canPublishEvent($event) || JEVHelper::canDeleteEvent($event)) && !($mask & MASK_POPUP)) { JEVHelper::script('view_detail.js', 'components/' . JEV_COM_COMPONENT . "/assets/js/"); ob_start(); ?> <a href="javascript:void(0)" onclick='clickEditButton()' title="<?php echo JText::_('JEV_E_EDIT'); ?> "> <?php echo JEVHelper::imagesite('edit.png', JText::_('JEV_E_EDIT')); ?> </a> <div class="jevdialogs"> <?php $search[] = "{{EDITDIALOG}}"; ob_start(); $view->eventManagementDialog($event, $mask); $dialog = ob_get_clean(); $replace[] = $dialog; $blank[] = ""; echo $dialog; ?> </div> <?php $search[] = "{{EDITBUTTON}}"; $replace[] = ob_get_clean(); $blank[] = ""; } else { $search[] = "{{EDITBUTTON}}"; $replace[] = ""; $blank[] = ""; $search[] = "{{EDITDIALOG}}"; $replace[] = ""; $blank[] = ""; } $created = JevDate::getDate($event->created()); $search[] = "{{CREATED}}"; $replace[] = $created->toFormat(JText::_("DATE_FORMAT_CREATED")); $blank[] = ""; if ($template_name == "icalevent.detail_body") { $search[] = "{{REPEATSUMMARY}}"; $replace[] = $event->repeatSummary(); $blank[] = ""; $row = $event; $start_date = JEventsHTML::getDateFormat($row->yup(), $row->mup(), $row->dup(), 0); $start_time = JEVHelper::getTime($row->getUnixStartTime(), $row->hup(), $row->minup()); $stop_date = JEventsHTML::getDateFormat($row->ydn(), $row->mdn(), $row->ddn(), 0); $stop_time = JEVHelper::getTime($row->getUnixEndTime(), $row->hdn(), $row->mindn()); $stop_time_midnightFix = $stop_time; $stop_date_midnightFix = $stop_date; if ($row->sdn() == 59 && $row->mindn() == 59) { $stop_time_midnightFix = JEVHelper::getTime($row->getUnixEndTime() + 1, 0, 0); $stop_date_midnightFix = JEventsHTML::getDateFormat($row->ydn(), $row->mdn(), $row->ddn() + 1, 0); } $search[] = "{{STARTDATE}}"; $replace[] = $start_date; $blank[] = ""; $search[] = "{{ENDDATE}}"; $replace[] = $stop_date; $blank[] = ""; $search[] = "{{STARTTIME}}"; $replace[] = $start_time; $blank[] = ""; $search[] = "{{ENDTIME}}"; $replace[] = $stop_time_midnightFix; $blank[] = ""; } else { $row = $event; $start_date = JEventsHTML::getDateFormat($row->yup(), $row->mup(), $row->dup(), 0); $start_time = JEVHelper::getTime($row->getUnixStartTime(), $row->hup(), $row->minup()); $stop_date = JEventsHTML::getDateFormat($row->ydn(), $row->mdn(), $row->ddn(), 0); $stop_time = JEVHelper::getTime($row->getUnixEndTime(), $row->hdn(), $row->mindn()); $stop_time_midnightFix = $stop_time; $stop_date_midnightFix = $stop_date; if ($row->sdn() == 59 && $row->mindn() == 59) { $stop_time_midnightFix = JEVHelper::getTime($row->getUnixEndTime() + 1, 0, 0); $stop_date_midnightFix = JEventsHTML::getDateFormat($row->ydn(), $row->mdn(), $row->ddn() + 1, 0); } $search[] = "{{STARTDATE}}"; $replace[] = $start_date; $blank[] = ""; $search[] = "{{ENDDATE}}"; $replace[] = $stop_date; $blank[] = ""; $search[] = "{{STARTTIME}}"; $replace[] = $start_time; $blank[] = ""; $search[] = "{{ENDTIME}}"; $replace[] = $stop_time_midnightFix; $blank[] = ""; // these would slow things down if not needed in the list static $dorepeatsummary; if (!isset($dorepeatsummary)) { $dorepeatsummary = strpos($template->value, ":REPEATSUMMARY}}") !== false; } if ($dorepeatsummary) { $cfg =& JEVConfig::getInstance(); $jevtask = JRequest::getString("jevtask"); $jevtask = str_replace(".listevents", "", $jevtask); $showyeardate = $cfg->get("showyeardate", 0); $row = $event; $times = ""; if ($showyeardate && $jevtask == "year" || $jevtask == "search.results" || $jevtask == "cat" || $jevtask == "range") { $start_publish = $row->getUnixStartDate(); $stop_publish = $row->getUnixEndDate(); if ($stop_publish == $start_publish) { if ($row->noendtime()) { $times = $start_time; } else { if ($row->alldayevent()) { $times = ""; } else { if ($start_time != $stop_time) { $times = $start_time . ' - ' . $stop_time_midnightFix; } else { $times = $start_time; } } } $times = $start_date . " " . $times . "<br/>"; } else { if ($row->noendtime()) { $times = $start_time; } else { if ($start_time != $stop_time && !$row->alldayevent()) { $times = $start_time . ' - ' . $stop_time_midnightFix; } } $times = $start_date . ' - ' . $stop_date . " " . $times . "<br/>"; } } else { if (($jevtask == "day" || $jevtask == "week") && $row->starttime() != $row->endtime() && !$row->alldayevent()) { if ($row->noendtime()) { if ($showyeardate && $jevtask == "year") { $times = $start_time . ' - ' . $stop_time_midnightFix . ' '; } else { $times = $start_time . ' '; } } else { $times = $start_time . ' - ' . $stop_time_midnightFix . ' '; } } } $search[] = "{{REPEATSUMMARY}}"; $replace[] = $times; $blank[] = ""; } } static $doprevnext; if (!isset($doprevnext)) { $doprevnext = strpos($template->value, ":PREVIOUSNEXT}}") !== false; } if ($doprevnext) { $search[] = "{{PREVIOUSNEXT}}"; $replace[] = $event->previousnextLinks(); $blank[] = ""; } $search[] = "{{CREATOR_LABEL}}"; $replace[] = JText::_('JEV_BY'); $blank[] = ""; $search[] = "{{CREATOR}}"; $replace[] = $event->contactlink(); $blank[] = ""; $search[] = "{{HITS}}"; $replace[] = "<span class='hitslabel'>" . JText::_('JEV_EVENT_HITS') . '</span> : ' . $event->hits(); $blank[] = ""; if ($event->hasLocation()) { $search[] = "{{LOCATION_LABEL}}"; $replace[] = JText::_('JEV_EVENT_ADRESSE') . " "; $blank[] = ""; $search[] = "{{LOCATION}}"; $replace[] = $event->location(); $blank[] = ""; } else { $search[] = "{{LOCATION_LABEL}}"; $replace[] = ""; $blank[] = ""; $search[] = "{{LOCATION}}"; $replace[] = ""; $blank[] = ""; } if ($event->hasContactInfo()) { $search[] = "{{CONTACT_LABEL}}"; $replace[] = JText::_('JEV_EVENT_CONTACT') . " "; $blank[] = ""; $search[] = "{{CONTACT}}"; $replace[] = $event->contact_info(); $blank[] = ""; } else { $search[] = "{{CONTACT_LABEL}}"; $replace[] = ""; $blank[] = ""; $search[] = "{{CONTACT}}"; $replace[] = ""; $blank[] = ""; } $search[] = "{{EXTRAINFO}}"; $replace[] = $event->extra_info(); $blank[] = ""; // Now do the plugins // get list of enabled plugins $layout = $template_name == "icalevent.list_row" || $template_name == "month.calendar_cell" || $template_name == "month.calendar_tip" ? "list" : "detail"; $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"])) { foreach ($fieldNameArray["values"] as $fieldname) { $search[] = "{{" . $fieldname . "}}"; // is the event detail hidden - if so then hide any custom fields too! if (!isset($event->_privateevent) || $event->_privateevent != 3) { $replace[] = call_user_func(array($classname, "substitutefield"), $event, $fieldname); if (is_callable(array($classname, "blankfield"))) { $blank[] = call_user_func(array($classname, "blankfield"), $event, $fieldname); } else { $blank[] = ""; } } else { $blank[] = ""; $replace[] = ""; } } } } } $template_value = $template->value; // strip carriage returns other wise the preg replace doesn;y work - needed because wysiwyg editor may add the carriage return in the template field $template_value = str_replace("\r", '', $template_value); $template_value = str_replace("\n", '', $template_value); // non greedy replacement - because of the ? $template_value = preg_replace_callback('|{{.*?}}|', 'cleanLabels', $template_value); // word counts etc. for ($s = 0; $s < count($search); $s++) { if (strpos($search[$s], "TRUNCATED_DESC:") > 0) { global $tempreplace, $tempevent, $tempsearch; $tempreplace = $replace[$s]; $tempsearch = $search[$s]; $tempevent = $event; $template_value = preg_replace_callback("|{$tempsearch}|", 'jevSpecialHandling', $template_value); } } for ($s = 0; $s < count($search); $s++) { global $tempreplace, $tempevent, $tempsearch, $tempblank; $tempreplace = $replace[$s]; $tempblank = $blank[$s]; $tempsearch = str_replace("}}", "#", $search[$s]); $tempevent = $event; $template_value = preg_replace_callback("|{$tempsearch}(.+?)}}|", 'jevSpecialHandling2', $template_value); } $template_value = str_replace($search, $replace, $template_value); // non greedy replacement - because of the ? $template_value = preg_replace_callback('|{{.*?}}|', 'cleanUnpublished', $template_value); echo $template_value; return true; }
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 }
function DefaultViewEventRowNew($view, $row, $args = "") { $cfg = JEVConfig::getInstance(); $rowlink = $row->viewDetailLink($row->yup(), $row->mup(), $row->dup(), false); $rowlink = JRoute::_($rowlink . $view->datamodel->getCatidsOutLink()); // I choost not to use $row->fgcolor $fgcolor = "inherit"; $tmpTitle = $row->title(); /* // [mic] if title is too long, cut 'em for display if( JString::strlen( $row->title() ) >= 50 ){ $tmpTitle = JString::substr( $row->title(), 0, 50 ) . ' ...'; } */ $jevtask = JRequest::getString("jevtask"); $jevtask = str_replace(".listevents", "", $jevtask); $showyeardate = $cfg->get("showyeardate", 0); $times = ""; if ($showyeardate && $jevtask == "year" || $jevtask == "search.results" || $jevtask == "cat" || $jevtask == "range") { $start_publish = $row->getUnixStartDate(); $stop_publish = $row->getUnixEndDate(); $start_date = JEventsHTML::getDateFormat($row->yup(), $row->mup(), $row->dup(), 0); $start_time = JEVHelper::getTime($row->getUnixStartTime(), $row->hup(), $row->minup()); $stop_date = JEventsHTML::getDateFormat($row->ydn(), $row->mdn(), $row->ddn(), 0); $stop_time = JEVHelper::getTime($row->getUnixEndTime(), $row->hdn(), $row->mindn()); if ($stop_publish == $start_publish) { if ($row->noendtime()) { $times = $start_time; } else { if ($row->alldayevent()) { $times = ""; } else { if ($start_time != $stop_time) { $times = $start_time . ' - ' . $stop_time; } else { $times = $start_time; } } } $times = $start_date . " " . $times . "<br/>"; } else { if ($row->noendtime()) { $times = $start_time; } else { if ($start_time != $stop_time && !$row->alldayevent()) { $times = $start_time . ' - ' . $stop_time; } } $times = $start_date . ' - ' . $stop_date . " " . $times . "<br/>"; } } else { if (($jevtask == "day" || $jevtask == "week") && $row->starttime() != $row->endtime() && !$row->alldayevent()) { $starttime = JEVHelper::getTime($row->getUnixStartTime(), $row->hup(), $row->minup()); $endtime = JEVHelper::getTime($row->getUnixEndTime(), $row->hdn(), $row->mindn()); if ($row->noendtime()) { if ($showyeardate && $jevtask == "year") { $times = $starttime . ' - ' . $endtime . ' '; } else { $times = $starttime . ' '; } } else { $times = $starttime . ' - ' . $endtime . ' '; } } } echo $times; ?> <a class="ev_link_row" href="<?php echo $rowlink; ?> " <?php echo $args; ?> style="color:<?php echo $fgcolor; ?> ;" title="<?php echo JEventsHTML::special($row->title()); ?> "><?php echo $tmpTitle; ?> </a> <?php if ($cfg->get('com_byview') == '1') { echo JText::_('JEV_BY') . ' <i>' . $row->contactlink() . '</i>'; } ?> <?php }