Пример #1
0
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 
}
Пример #2
0
 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;
 }
Пример #3
0
 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;
 }
Пример #4
0
 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;
 }
Пример #5
0
 protected function processMatch(&$content, $match, $dayEvent, $dateParm, $relDay)
 {
     $datenow = JEVHelper::getNow();
     $dispatcher = JDispatcher::getInstance();
     // get the title and start time
     $startDate = JevDate::strtotime($dayEvent->publish_up());
     if ($relDay > 0) {
         $eventDate = JevDate::strtotime($datenow->toFormat('%Y-%m-%d ') . JevDate::strftime('%H:%M', $startDate) . " +{$relDay} days");
     } else {
         $eventDate = JevDate::strtotime($datenow->toFormat('%Y-%m-%d ') . JevDate::strftime('%H:%M', $startDate) . " {$relDay} days");
     }
     $endDate = JevDate::strtotime($dayEvent->publish_down());
     list($st_year, $st_month, $st_day) = explode('-', JevDate::strftime('%Y-%m-%d', $startDate));
     list($ev_year, $ev_month, $ev_day) = explode('-', JevDate::strftime('%Y-%m-%d', $startDate));
     $task_events = 'icalrepeat.detail';
     switch ($match) {
         case 'endDate':
         case 'startDate':
         case 'eventDate':
             // Note we need to examine the date specifiers used to determine if language translation will be
             // necessary.  Do this later when script is debugged.
             if (!$this->disableDateStyle) {
                 $content .= '<span class="mod_events_latest_date">';
             }
             if (!$dayEvent->alldayevent() && $match == "endDate" && ($dayEvent->noendtime() && $dayEvent->getUnixStartDate() == $dayEvent->getUnixEndDate() || $dayEvent->getUnixStartTime() == $dayEvent->getUnixEndTime())) {
                 $time_fmt = "";
             } else {
                 if (!isset($dateParm) || $dateParm == '') {
                     if ($this->com_calUseStdTime) {
                         $time_fmt = $dayEvent->alldayevent() ? '' : IS_WIN ? ' @%I:%M%p' : ' @%l:%M%p';
                     } else {
                         $time_fmt = $dayEvent->alldayevent() ? '' : ' @%H:%M';
                     }
                     $dateFormat = $this->displayYear ? '%a %b %d, %Y' . $time_fmt : '%a %b %d' . $time_fmt;
                     $jmatch = new JevDate(${$match});
                     $content .= $jmatch->toFormat($dateFormat);
                     //$content .= JEV_CommonFunctions::jev_strftime($dateFormat, $$match);
                 } else {
                     // format endDate when midnight to show midnight!
                     if ($match == "endDate" && $dayEvent->sdn() == 59) {
                         $tempEndDate = $endDate + 1;
                         if ($dayEvent->alldayevent()) {
                             // if an all day event then we don't want to roll to the next day
                             $tempEndDate -= 86400;
                         }
                         $match = "tempEndDate";
                     }
                     // if a '%' sign detected in date format string, we assume JevDate::strftime() is to be used,
                     if (preg_match("/\\%/", $dateParm)) {
                         $jmatch = new JevDate(${$match});
                         $content .= $jmatch->toFormat($dateParm);
                     } else {
                         $content .= date($dateParm, ${$match});
                     }
                     if ($match == "tempDndDate") {
                         $match = "endDate";
                     }
                 }
             }
             if (!$this->disableDateStyle) {
                 $content .= "</span>";
             }
             break;
         case 'title':
             $title = $dayEvent->title();
             if (!empty($dateParm)) {
                 $parts = explode("|", $dateParm);
                 if (count($parts) > 0 && strlen($title) > intval($parts[0])) {
                     $title = substr($title, 0, intval($parts[0]));
                     if (count($parts) > 1) {
                         $title .= $parts[1];
                     }
                 }
             }
             if (!$this->disableTitleStyle) {
                 $content .= '<span class="mod_events_latest_content">';
             }
             if ($this->displayLinks) {
                 $link = $dayEvent->viewDetailLink($ev_year, $ev_month, $ev_day, false, $this->myItemid);
                 if ($this->modparams->get("ignorefiltermodule", 0)) {
                     $link = JRoute::_($link . $this->datamodel->getCatidsOutLink() . "&filter_reset=1");
                 } else {
                     $link = JRoute::_($link . $this->datamodel->getCatidsOutLink());
                 }
                 $content .= $this->_htmlLinkCloaking($link, JEventsHTML::special($title));
             } else {
                 $content .= JEventsHTML::special($title);
             }
             if (!$this->disableTitleStyle) {
                 $content .= '</span>';
             }
             break;
         case 'category':
             $catobj = $dayEvent->getCategoryName();
             $content .= JEventsHTML::special($catobj);
             break;
         case 'categoryimage':
             $catobj = $dayEvent->getCategoryImage();
             $content .= $catobj;
             break;
         case 'calendar':
             $catobj = $dayEvent->getCalendarName();
             $content .= JEventsHTML::special($catobj);
             break;
         case 'contact':
             // Also want to cloak contact details so
             $this->modparams->set("image", 1);
             $dayEvent->text = $dayEvent->contact_info();
             $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent, &$this->modparams, 0));
             $dayEvent->contact_info($dayEvent->text);
             $content .= $dayEvent->contact_info();
             break;
         case 'content':
             // Added by Kaz McCoy 1-10-2004
             $this->modparams->set("image", 1);
             $dayEvent->data->text = $dayEvent->content();
             $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             if (!empty($dateParm)) {
                 $parts = explode("|", $dateParm);
                 if (count($parts) > 0 && strlen(strip_tags($dayEvent->data->text)) > intval($parts[0])) {
                     $dayEvent->data->text = substr(strip_tags($dayEvent->data->text), 0, intval($parts[0]));
                     if (count($parts) > 1) {
                         $dayEvent->data->text .= $parts[1];
                     }
                 }
             }
             $dayEvent->content($dayEvent->data->text);
             //$content .= substr($dayEvent->content, 0, 150);
             $content .= $dayEvent->content();
             break;
         case 'addressInfo':
         case 'location':
             $this->modparams->set("image", 0);
             $dayEvent->data->text = $dayEvent->location();
             $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             $dayEvent->location($dayEvent->data->text);
             $content .= $dayEvent->location();
             break;
         case 'duration':
             $timedelta = $dayEvent->noendtime() || $dayEvent->alldayevent() ? "" : $dayEvent->getUnixEndTime() - $dayEvent->getUnixStartTime();
             if ($timedelta == "") {
                 break;
             }
             $fieldval = isset($dateParm) && $dateParm != '' ? $dateParm : JText::_("JEV_DURATION_FORMAT");
             $shownsign = false;
             // whole days!
             if (stripos($fieldval, "%wd") !== false) {
                 $days = intval($timedelta / (60 * 60 * 24));
                 $timedelta -= $days * 60 * 60 * 24;
                 if ($timedelta > 3610) {
                     //if more than 1 hour and 10 seconds over a day then round up the day output
                     $days += 1;
                 }
                 $fieldval = str_ireplace("%wd", $days, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%d") !== false) {
                 $days = intval($timedelta / (60 * 60 * 24));
                 $timedelta -= $days * 60 * 60 * 24;
                 /*
                  if ($timedelta>3610){
                  //if more than 1 hour and 10 seconds over a day then round up the day output
                  $days +=1;
                  }
                 */
                 $fieldval = str_ireplace("%d", $days, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%h") !== false) {
                 $hours = intval($timedelta / (60 * 60));
                 $timedelta -= $hours * 60 * 60;
                 if ($shownsign) {
                     $hours = abs($hours);
                 }
                 $hours = sprintf("%02d", $hours);
                 $fieldval = str_ireplace("%h", $hours, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%m") !== false) {
                 $mins = intval($timedelta / 60);
                 $timedelta -= $hours * 60;
                 if ($mins) {
                     $mins = abs($mins);
                 }
                 $mins = sprintf("%02d", $mins);
                 $fieldval = str_ireplace("%m", $mins, $fieldval);
             }
             $content .= $fieldval;
             break;
         case 'extraInfo':
             $this->modparams->set("image", 0);
             $dayEvent->data->text = $dayEvent->extra_info();
             $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             $dayEvent->extra_info($dayEvent->data->text);
             $content .= $dayEvent->extra_info();
             break;
         case 'countdown':
             $timedelta = $dayEvent->getUnixStartTime() - JevDate::mktime();
             $eventPassed = !($timedelta >= 0);
             $fieldval = $dateParm;
             $shownsign = false;
             if (stripos($fieldval, "%nopast") !== false) {
                 if (!$eventPassed) {
                     $fieldval = str_ireplace("%nopast", "", $fieldval);
                 } else {
                     $fieldval = JText::_('JEV_EVENT_FINISHED');
                 }
             }
             if (stripos($fieldval, "%d") !== false) {
                 $days = intval($timedelta / (60 * 60 * 24));
                 $timedelta -= $days * 60 * 60 * 24;
                 $fieldval = str_ireplace("%d", $days, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%h") !== false) {
                 $hours = intval($timedelta / (60 * 60));
                 $timedelta -= $hours * 60 * 60;
                 if ($shownsign) {
                     $hours = abs($hours);
                 }
                 $hours = sprintf("%02d", $hours);
                 $fieldval = str_ireplace("%h", $hours, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%m") !== false) {
                 $mins = intval($timedelta / 60);
                 $timedelta -= $hours * 60;
                 if ($mins) {
                     $mins = abs($mins);
                 }
                 $mins = sprintf("%02d", $mins);
                 $fieldval = str_ireplace("%m", $mins, $fieldval);
             }
             $content .= $fieldval;
             break;
         case 'createdByAlias':
             $content .= $dayEvent->created_by_alias();
             break;
         case 'createdByUserName':
             $catobj = JEVHelper::getUser($dayEvent->created_by());
             $content .= isset($catobj->username) ? $catobj->username : "";
             break;
         case 'createdByUserEmail':
             // Note that users email address will NOT be available if they don't want to receive email
             $catobj = JEVHelper::getUser($dayEvent->created_by());
             $content .= $catobj->sendEmail ? $catobj->email : '';
             break;
         case 'createdByUserEmailLink':
             // Note that users email address will NOT be available if they don't want to receive email
             $content .= JRoute::_("index.php?option=" . $compname . "&task=" . $task_events . "&agid=" . $dayEvent->id() . "&year=" . $st_year . "&month=" . $st_month . "&day=" . $st_day . "&Itemid=" . $this->myItemid . $this->catout);
             break;
         case 'color':
             $content .= $dayEvent->bgcolor();
             break;
         case 'eventDetailLink':
             $link = $dayEvent->viewDetailLink($st_year, $st_month, $st_day, false, $this->myItemid);
             $link = JRoute::_($link . $this->datamodel->getCatidsOutLink());
             $content .= $link;
             /*
              $content .= JRoute::_("index.php?option="
              . $compname
              . "&task=".$task_events
              . "&agid=".$dayEvent->id()
              . "&year=".$st_year
              . "&month=".$st_month
              . "&day=".$st_day
              . "&Itemid=".$this->myItemid . $this->catout);
             */
             break;
         default:
             try {
                 if (strpos($match, '${') !== false) {
                     $parts = explode('${', $match);
                     $tempstr = "";
                     foreach ($parts as $part) {
                         if (strpos($part, "}") !== false) {
                             // limit to 2 because we may be using joomla content plugins
                             $subparts = explode("}", $part, 2);
                             if (strpos($subparts[0], "#") > 0) {
                                 $formattedparts = explode("#", $subparts[0]);
                                 $subparts[0] = $formattedparts[0];
                             } else {
                                 $formattedparts = array($subparts[0], "%s", "");
                             }
                             $subpart = "_" . $subparts[0];
                             if (isset($dayEvent->{$subpart})) {
                                 $temp = $dayEvent->{$subpart};
                                 if ($temp != "") {
                                     $tempstr .= str_replace("%s", $temp, $formattedparts[1]);
                                 } else {
                                     if (isset($formattedparts[2])) {
                                         $tempstr .= str_replace("%s", $temp, $formattedparts[2]);
                                     }
                                 }
                             } else {
                                 if (isset($dayEvent->customfields[$subparts[0]]['value'])) {
                                     $temp = $dayEvent->customfields[$subparts[0]]['value'];
                                     if ($temp != "") {
                                         $tempstr .= str_replace("%s", $temp, $formattedparts[1]);
                                     } else {
                                         if (isset($formattedparts[2])) {
                                             $tempstr .= str_replace("%s", $temp, $formattedparts[2]);
                                         }
                                     }
                                 } else {
                                     $matchedByPlugin = false;
                                     $layout = "list";
                                     static $fieldNameArrays = array();
                                     $jevplugins = JPluginHelper::getPlugin("jevents");
                                     foreach ($jevplugins as $jevplugin) {
                                         $classname = "plgJevents" . ucfirst($jevplugin->name);
                                         if (is_callable(array($classname, "substitutefield"))) {
                                             if (!isset($fieldNameArrays[$classname])) {
                                                 $fieldNameArrays[$classname] = call_user_func(array($classname, "fieldNameArray"), $layout);
                                             }
                                             if (isset($fieldNameArrays[$classname]["values"])) {
                                                 if (in_array($subparts[0], $fieldNameArrays[$classname]["values"])) {
                                                     $matchedByPlugin = true;
                                                     // is the event detail hidden - if so then hide any custom fields too!
                                                     if (!isset($event->_privateevent) || $event->_privateevent != 3) {
                                                         $temp = call_user_func(array($classname, "substitutefield"), $dayEvent, $subparts[0]);
                                                         if ($temp != "") {
                                                             $tempstr .= str_replace("%s", $temp, $formattedparts[1]);
                                                         } else {
                                                             if (isset($formattedparts[2])) {
                                                                 $tempstr .= str_replace("%s", $temp, $formattedparts[2]);
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                     if (!$matchedByPlugin) {
                                         // Layout editor code
                                         include_once JEV_PATH . "/views/default/helpers/defaultloadedfromtemplate.php";
                                         ob_start();
                                         // false at the end to stop it running through the plugins
                                         $part = "{{Dummy Label:" . implode("#", $formattedparts) . "}}";
                                         DefaultLoadedFromTemplate(false, false, $dayEvent, 0, $part, false);
                                         $newpart = ob_get_clean();
                                         if ($newpart != $part) {
                                             $tempstr .= $newpart;
                                             $matchedByPlugin = true;
                                         }
                                     }
                                     // none of the plugins has replaced the output so we now replace the blank formatted part!
                                     if (!$matchedByPlugin && isset($formattedparts[2])) {
                                         $tempstr .= str_replace("%s", "", $formattedparts[2]);
                                     }
                                     //$dispatcher->trigger( 'onLatestEventsField', array( &$dayEvent, $subparts[0], &$tempstr));
                                 }
                             }
                             $tempstr .= $subparts[1];
                         } else {
                             $tempstr .= $part;
                         }
                     }
                     $content .= $tempstr;
                 } else {
                     if ($match) {
                         $content .= $match;
                     }
                 }
             } catch (Exception $e) {
                 if ($match) {
                     $content .= $match;
                 }
             }
             break;
     }
     // end of switch
 }
Пример #6
0
 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"]);
}
Пример #8
0
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>
			&nbsp;<?php 
    echo JText::_('JEV_BY');
    ?>
			&nbsp;<i><?php 
    echo $row->contactlink('', true);
    ?>
</i>
			&nbsp;&nbsp;<?php 
    echo $deletelink;
    ?>
			&nbsp;&nbsp;<?php 
    echo $modifylink;
    ?>
			&nbsp;&nbsp;<?php 
    echo $publishlink;
    ?>
		</li>
		<?php 
}
Пример #9
0
 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;
 }
Пример #10
0
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 . '&nbsp;-&nbsp;' . $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 . '&nbsp;-&nbsp;' . $stop_time_midnightFix . '&nbsp;';
                                    } else {
                                        $times = $start_time . '&nbsp;';
                                    }
                                } else {
                                    if ($row->alldayevent()) {
                                        $times = "";
                                    } else {
                                        $times = $start_time . '&nbsp;-&nbsp;' . $stop_time_midnightFix . '&nbsp;';
                                    }
                                }
                            }
                        }
                        $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') . "&nbsp;";
                    $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') . "&nbsp;";
                    $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 . '&nbsp;-&nbsp;' . $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 . '&nbsp;-&nbsp;' . $stop_time_midnightFix . '&nbsp;';
                        } else {
                            $times = $start_time . '&nbsp;';
                        }
                    } else {
                        $times = $start_time . '&nbsp;-&nbsp;' . $stop_time_midnightFix . '&nbsp;';
                    }
                }
            }
            $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') . "&nbsp;";
        $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') . "&nbsp;";
        $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;
}
Пример #12
0
 protected function processMatch(&$content, $match, $dayEvent, $dateParm, $relDay)
 {
     $datenow = JEVHelper::getNow();
     $dispatcher =& JDispatcher::getInstance();
     // get the title and start time
     $startDate = JevDate::strtotime($dayEvent->publish_up());
     if ($relDay > 0) {
         $eventDate = JevDate::strtotime($datenow->toFormat('%Y-%m-%d ') . JevDate::strftime('%H:%M', $startDate) . " +{$relDay} days");
     } else {
         $eventDate = JevDate::strtotime($datenow->toFormat('%Y-%m-%d ') . JevDate::strftime('%H:%M', $startDate) . " {$relDay} days");
     }
     $endDate = JevDate::strtotime($dayEvent->publish_down());
     list($st_year, $st_month, $st_day) = explode('-', JevDate::strftime('%Y-%m-%d', $startDate));
     list($ev_year, $ev_month, $ev_day) = explode('-', JevDate::strftime('%Y-%m-%d', $startDate));
     $task_events = 'icalrepeat.detail';
     switch ($match) {
         case 'endDate':
         case 'startDate':
         case 'eventDate':
             // Note we need to examine the date specifiers used to determine if language translation will be
             // necessary.  Do this later when script is debugged.
             if (!$this->disableDateStyle) {
                 $content .= '<span class="mod_events_latest_date">';
             }
             if (!$dayEvent->alldayevent() && $match == "endDate" && ($dayEvent->noendtime() || $dayEvent->getUnixStartTime() == $dayEvent->getUnixEndTime())) {
                 $time_fmt = "";
             } else {
                 if (!isset($dateParm) || $dateParm == '') {
                     if ($this->com_calUseStdTime) {
                         $time_fmt = $dayEvent->alldayevent() ? '' : ' @%l:%M%p';
                     } else {
                         $time_fmt = $dayEvent->alldayevent() ? '' : ' @%H:%M';
                     }
                     $dateFormat = $this->displayYear ? '%a %b %d, %Y' . $time_fmt : '<span class="eventDay">%a</span>  <span class="eventDate">%d<span class="eventMonth">%b</span></span>';
                     $jmatch = new JevDate(${$match});
                     $content .= $jmatch->toFormat($dateFormat);
                     //$content .= JEV_CommonFunctions::jev_strftime($dateFormat, $$match);
                 } else {
                     // format endDate when midnight to show midnight!
                     if ($match == "endDate" && $dayEvent->sdn() == 59) {
                         $tempEndDate = $endDate + 1;
                         if ($dayEvent->alldayevent()) {
                             // if an all day event then we don't want to roll to the next day
                             $tempEndDate -= 86400;
                         }
                         $match = "tempEndDate";
                     }
                     // if a '%' sign detected in date format string, we assume JevDate::strftime() is to be used,
                     if (preg_match("/\\%/", $dateParm)) {
                         $jmatch = new JevDate(${$match});
                         $content .= $jmatch->toFormat($dateParm);
                     } else {
                         $content .= date($dateParm, ${$match});
                     }
                     if ($match == "tempDndDate") {
                         $match = "endDate";
                     }
                 }
             }
             if (!$this->disableDateStyle) {
                 $content .= "</span>";
             }
             break;
         case 'title':
             $title = $dayEvent->title();
             if (!empty($dateParm)) {
                 $parts = explode("|", $dateParm);
                 if (count($parts) > 0 && strlen($title) > intval($parts[0])) {
                     $title = substr($title, 0, intval($parts[0]));
                     if (count($parts) > 1) {
                         $title .= $parts[1];
                     }
                 }
             }
             if (!$this->disableTitleStyle) {
                 $content .= '<span class="mod_events_latest_content">';
             }
             if ($this->displayLinks) {
                 $link = $dayEvent->viewDetailLink($ev_year, $ev_month, $ev_day, false, $this->myItemid);
                 $link = JRoute::_($link . $this->datamodel->getCatidsOutLink());
                 $content .= $this->_htmlLinkCloaking($link, JEventsHTML::special($title));
             } else {
                 $content .= JEventsHTML::special($title);
             }
             if (!$this->disableTitleStyle) {
                 $content .= '</span>';
             }
             break;
         case 'category':
             $catobj = $dayEvent->getCategoryName();
             $content .= JEventsHTML::special($catobj);
             break;
         case 'calendar':
             $catobj = $dayEvent->getCalendarName();
             $content .= JEventsHTML::special($catobj);
             break;
         case 'contact':
             // Also want to cloak contact details so
             $this->modparams->set("image", 1);
             $dayEvent->text = $dayEvent->contact_info();
             if (JVersion::isCompatible("1.6.0")) {
                 $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent, &$this->modparams, 0));
             } else {
                 $dispatcher->trigger('onPrepareContent', array(&$dayEvent, &$this->modparams, 0), true);
             }
             $dayEvent->contact_info($dayEvent->text);
             $content .= $dayEvent->contact_info();
             break;
         case 'content':
             // Added by Kaz McCoy 1-10-2004
             $this->modparams->set("image", 1);
             $dayEvent->data->text = $dayEvent->content();
             if (JVersion::isCompatible("1.6.0")) {
                 $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             } else {
                 $results = $dispatcher->trigger('onPrepareContent', array(&$dayEvent->data, &$this->modparams, 0), true);
             }
             if (!empty($dateParm)) {
                 $parts = explode("|", $dateParm);
                 if (count($parts) > 0 && strlen(strip_tags($dayEvent->data->text)) > intval($parts[0])) {
                     $dayEvent->data->text = substr(strip_tags($dayEvent->data->text), 0, intval($parts[0]));
                     if (count($parts) > 1) {
                         $dayEvent->data->text .= $parts[1];
                     }
                 }
             }
             $dayEvent->content($dayEvent->data->text);
             //$content .= substr($dayEvent->content, 0, 150);
             $content .= $dayEvent->content();
             break;
         case 'addressInfo':
         case 'location':
             $this->modparams->set("image", 0);
             $dayEvent->data->text = $dayEvent->location();
             if (JVersion::isCompatible("1.6.0")) {
                 $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             } else {
                 $results = $dispatcher->trigger('onPrepareContent', array(&$dayEvent->data, &$this->modparams, 0), true);
             }
             $dayEvent->location($dayEvent->data->text);
             $content .= $dayEvent->location();
             break;
         case 'extraInfo':
             $this->modparams->set("image", 0);
             $dayEvent->data->text = $dayEvent->extra_info();
             if (JVersion::isCompatible("1.6.0")) {
                 $dispatcher->trigger('onContentPrepare', array('com_jevents', &$dayEvent->data, &$this->modparams, 0));
             } else {
                 $results = $dispatcher->trigger('onPrepareContent', array(&$dayEvent->data, &$this->modparams, 0), true);
             }
             $dayEvent->extra_info($dayEvent->data->text);
             $content .= $dayEvent->extra_info();
             break;
         case 'countdown':
             $timedelta = $dayEvent->getUnixStartTime() - JevDate::mktime();
             $fieldval = $dateParm;
             $shownsign = false;
             if (stripos($fieldval, "%d") !== false) {
                 $days = intval($timedelta / (60 * 60 * 24));
                 $timedelta -= $days * 60 * 60 * 24;
                 $fieldval = str_ireplace("%d", $days, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%h") !== false) {
                 $hours = intval($timedelta / (60 * 60));
                 $timedelta -= $hours * 60 * 60;
                 if ($shownsign) {
                     $hours = abs($hours);
                 }
                 $hours = sprintf("%02d", $hours);
                 $fieldval = str_ireplace("%h", $hours, $fieldval);
                 $shownsign = true;
             }
             if (stripos($fieldval, "%m") !== false) {
                 $mins = intval($timedelta / 60);
                 $timedelta -= $hours * 60;
                 if ($mins) {
                     $mins = abs($mins);
                 }
                 $mins = sprintf("%02d", $mins);
                 $fieldval = str_ireplace("%m", $mins, $fieldval);
             }
             $content .= $fieldval;
             break;
         case 'createdByAlias':
             $content .= $dayEvent->created_by_alias();
             break;
         case 'createdByUserName':
             $catobj = JEVHelper::getUser($dayEvent->created_by());
             $content .= isset($catobj->username) ? $catobj->username : "";
             break;
         case 'createdByUserEmail':
             // Note that users email address will NOT be available if they don't want to receive email
             $catobj = JEVHelper::getUser($dayEvent->created_by());
             $content .= $catobj->sendEmail ? $catobj->email : '';
             break;
         case 'createdByUserEmailLink':
             // Note that users email address will NOT be available if they don't want to receive email
             $content .= JRoute::_("index.php?option=" . $compname . "&task=" . $task_events . "&agid=" . $dayEvent->id() . "&year=" . $st_year . "&month=" . $st_month . "&day=" . $st_day . "&Itemid=" . $this->myItemid . $this->catout);
             break;
         case 'color':
             $content .= $dayEvent->bgcolor();
             break;
         case 'eventDetailLink':
             $link = $dayEvent->viewDetailLink($st_year, $st_month, $st_day, false, $this->myItemid);
             $link = JRoute::_($link . $this->datamodel->getCatidsOutLink());
             $content .= $link;
             /*
              $content .= JRoute::_("index.php?option="
              . $compname
              . "&task=".$task_events
              . "&agid=".$dayEvent->id()
              . "&year=".$st_year
              . "&month=".$st_month
              . "&day=".$st_day
              . "&Itemid=".$this->myItemid . $this->catout);
             */
             break;
         default:
             try {
                 if (strpos($match, '${') !== false) {
                     $parts = explode('${', $match);
                     $tempstr = "";
                     foreach ($parts as $part) {
                         if (strpos($part, "}") !== false) {
                             $subparts = explode("}", $part);
                             //$part = str_replace("}","",$part);
                             $subpart = "_" . $subparts[0];
                             if (isset($dayEvent->{$subpart})) {
                                 $temp = $dayEvent->{$subpart};
                                 $tempstr .= $temp;
                             } else {
                                 if (isset($dayEvent->customfields[$subparts[0]]['value'])) {
                                     $temp = $dayEvent->customfields[$subparts[0]]['value'];
                                     $tempstr .= $temp;
                                 } else {
                                     $layout = "list";
                                     $jevplugins = JPluginHelper::getPlugin("jevents");
                                     foreach ($jevplugins as $jevplugin) {
                                         $classname = "plgJevents" . ucfirst($jevplugin->name);
                                         if (is_callable(array($classname, "substitutefield"))) {
                                             $fieldNameArray = call_user_func(array($classname, "fieldNameArray"), $layout);
                                             if (isset($fieldNameArray["values"])) {
                                                 if (in_array($subparts[0], $fieldNameArray["values"])) {
                                                     // is the event detail hidden - if so then hide any custom fields too!
                                                     if (!isset($event->_privateevent) || $event->_privateevent != 3) {
                                                         $tempstr .= call_user_func(array($classname, "substitutefield"), $dayEvent, $subparts[0]);
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                     //$dispatcher->trigger( 'onLatestEventsField', array( &$dayEvent, $subparts[0], &$tempstr));
                                 }
                             }
                             $tempstr .= $subparts[1];
                         } else {
                             $tempstr .= $part;
                         }
                     }
                     $content .= $tempstr;
                 } else {
                     if ($match) {
                         $content .= $match;
                     }
                 }
             } catch (Exception $e) {
                 if ($match) {
                     $content .= $match;
                 }
             }
             break;
     }
     // end of switch
 }
Пример #13
0
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 . '&nbsp;-&nbsp;' . $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 . '&nbsp;-&nbsp;' . $endtime . '&nbsp;';
                } else {
                    $times = $starttime . '&nbsp;';
                }
            } else {
                $times = $starttime . '&nbsp;-&nbsp;' . $endtime . '&nbsp;';
            }
        }
    }
    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') . '&nbsp;<i>' . $row->contactlink() . '</i>';
    }
    ?>
		<?php 
}