Server IP : 180.180.241.3 / Your IP : 216.73.216.252 Web Server : Microsoft-IIS/7.5 System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /AppServ/www/news/components/com_jevents/libraries/ |
Upload File : |
<?php /** * JEvents Component for Joomla 1.5.x * * @version $Id: datamodel.php 1465 2009-06-09 14:36:43Z geraint $ * @package JEvents * @copyright Copyright (C) 2008-2009 GWE Systems Ltd, 2006-2008 JEvents Project Group * @license GNU/GPLv2, see http://www.gnu.org/licenses/gpl-2.0.html * @link http://www.jevents.net */ // functions common to component and modules // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); class JEventsDataModel { var $myItemid = null; var $catidsOut = ""; var $catids = null; var $catidList = null; var $gid = null; var $aid = null; // flag to track if we should who all categories var $moduleAllCats = false; var $queryModel; function JEventsDataModel($dbmodel=null){ $cfg = & JEVConfig::getInstance(); $user =& JFactory::getUser(); $this->gid = intval( $user->gid); $this->aid = intval( $user->aid); if (is_null($dbmodel)){ $this->queryModel =& new JEventsDBModel($this); } else { include_once(JPATH_ADMINISTRATOR."/components/".JEV_COM_COMPONENT."/libraries/adminqueries.php"); $this->queryModel = new $dbmodel($this); } } function setupModuleCatids($modparams){ $this->myItemid = findAppropriateMenuID ($this->catidsOut, $this->catids, $this->catidList, $modparams->toObject(), $this->moduleAllCats); return $this->myItemid; } function setupComponentCatids(){ // if no catids from GET or POST default to the menu values // Note that module links must pass a non default value global $mainframe; $Itemid = JEVHelper::getItemid(); $this->myItemid = $Itemid; $menu =& JSite::getMenu(); $active = $menu->getActive(); if (!is_null($active) && $active->component==JEV_COM_COMPONENT){ $params =& JComponentHelper::getParams(JEV_COM_COMPONENT); } else { // If accessing this function from outside the component then I must load suitable parameters $params = $menu->getParams($this->myItemid); } $catidsIn = JRequest::getVar( 'catids', 'NONE' ) ; $this->catids = array(); if ($catidsIn == "NONE") { $this->catidList = ""; for ($c=0; $c < 999; $c++) { $nextCID = "catid$c"; // stop looking for more catids when you reach the last one! if (!$nextCatId = $params->get( $nextCID, null)) { break; } if ( !in_array( $nextCatId, $this->catids )){ $this->catids[] = $nextCatId; $this->catidList .= ( strlen( $this->catidList )>0 ? ',' : '' ) . $nextCatId; } } $this->catidsOut = str_replace( ',', '|', $this->catidList ); } else { $this->catids = explode( '|', $catidsIn ); // hardening! $this->catidList = JEVHelper::forceIntegerArray($this->catids,true); $this->catidsOut = str_replace(',', '|', $this->catidList); } // some functions e.g. JEventCal::viewDetailLink don't have access to a datamodel so set a global value // as a backup global $catidsOut; $catidsOut = $this->catidsOut; } /** * Gets appropriate Itemid part of URL * * @return string */ function getItemidLink($withAmp=true){ if (!is_null($this->myItemid)){ return ($withAmp?"&":"")."Itemid=".$this->myItemid; } else return ""; } /** * Gets appropriate category restriction part of URL * * @return string */ function getCatidsOutLink($withAmp=true){ $ret = ""; if ($this->catidsOut!=""){ $ret .= ($withAmp?"&":"")."catids=".$this->catidsOut; } return $ret; } /** * Gets calendar data for use in main calendar and module * * @param int $year * @param int $month * @param int $day * @param boolean $short - use true for module which only requires knowledge of if dat has an event * @param boolean $veryshort - use true for module which only requires dates and nothing about events * @return array - calendar data array */ function getCalendarData( $year, $month, $day , $short=false, $veryshort = false){ global $mainframe; $data = array(); $data['year']=$year; $data['month']=$month; $db =& JFactory::getDBO(); if (!isset($this->myItemid) || is_null($this->myItemid)) { $Itemid = JEVHelper::getItemid(); $this->myItemid = $Itemid; } include_once(JPATH_ADMINISTRATOR."/components/".JEV_COM_COMPONENT."/libraries/colorMap.php"); $cfg = & JEVConfig::getInstance(); if (!$veryshort){ //$rows = $this->queryModel->listEventsByMonthNEW( $year, $month, 'reccurtype ASC,publish_up'); $icalrows = $this->queryModel->listIcalEventsByMonth( $year, $month); // handy for developement in case I comment out part of the above if (!isset($rows)) $rows = array(); if (!isset($icalrows)) $icalrows = array(); $rows = array_merge($icalrows,$rows); } else { $rows = array(); } $rowcount = count( $rows ); if (strlen($this->catidsOut)>0) { $cat = "&catids=$this->catidsOut"; } else { $cat=""; } if( $month <= '9' & ereg( "(^[1-9]{1})", $month )) { $month = '0' . $month; } $fieldsetText = ""; $yearNow = date("Y"); $monthNow = date("m"); $dayNow = intval(date("d")); if (!$short){ if ($year==$yearNow && $month==$monthNow && $day==$dayNow){ $fieldsetText = JEventsHTML::getDateFormat( $year, $month, $day, 1 ); } else $fieldsetText = JEventsHTML::getDateFormat( $year, $month, "", 3 ); $data["fieldsetText"]=$fieldsetText; } $startday = $cfg->get('com_starday'); if(( !$startday ) || ( $startday > 1 )){ $startday = 0; } $data['startday']=$startday; if (!$short){ $data["daynames"]=array(); for( $i = 0; $i < 7; $i++ ) { $data["daynames"][$i]=JEventsHTML::getDayName(($i+$startday)%7, true ); } } $data["dates"]=array(); //Start days $start = (( date( 'w', mktime( 0, 0, 0, $month, 1, $year )) - $startday + 7 ) % 7 ); $base = date( 't', mktime( 0, 0, 0, $month, 0, $year )); $dayCount=0; $priorMonth = $month-1; $priorYear = $year; if ($priorMonth<=0) { $priorMonth+=12; $priorYear-=1; } for( $a = $start; $a > 0; $a-- ){ $d = $base - $a + 1; $data["dates"][$dayCount]=array(); $data["dates"][$dayCount]["monthType"]="prior"; $data["dates"][$dayCount]["month"]=$priorMonth; $data["dates"][$dayCount]["year"]=$priorYear; $data["dates"][$dayCount]['countDisplay']=0; if( $d <= '9' & ereg( '(^[1-9]{1})', $d )) { $do = '0' . $d; } else { $do = $d; } $data["dates"][$dayCount]['d']=$d; $data["dates"][$dayCount]['d0']=$do; if ($short){ $data["dates"][$dayCount]["events"]=false; } else { $data["dates"][$dayCount]["events"]=array(); } $cellDate = mktime (0, 0, 0, $priorMonth, $d, $priorYear); $data["dates"][$dayCount]['cellDate']=$cellDate; $data["dates"][$dayCount]["today"]=false; $link = JRoute::_( 'index.php?option=' . JEV_COM_COMPONENT . '&task=day.listevents&year=' . $priorYear . '&month=' . $priorMonth . '&day=' . $do .$cat. '&Itemid=' . $this->myItemid ); $data["dates"][$dayCount]["link"]=$link; $dayCount++; } sort($data["dates"]); //Current month $end = date( 't', mktime( 0, 0, 0,( $month + 1 ), 0, $year )); for( $d = 1; $d <= $end; $d++ ){ $data["dates"][$dayCount]=array(); // utility field used to keep track of events displayed in a day! $data["dates"][$dayCount]['countDisplay']=0; $data["dates"][$dayCount]["monthType"]="current"; $data["dates"][$dayCount]["month"]=$month; $data["dates"][$dayCount]["year"]=$year; if ($short){ $data["dates"][$dayCount]["events"]=false; } else { $data["dates"][$dayCount]["events"]=array(); } $t_datenow = JEVHelper::getNow(); $now_adjusted = $t_datenow->toUnix(true); if( $month == strftime( '%m', $now_adjusted) && $year == strftime( '%Y', $now_adjusted) && $d == strftime( '%d', $now_adjusted)) { $data["dates"][$dayCount]["today"]=true; }else{ $data["dates"][$dayCount]["today"]=false; } if( $d <= '9' & ereg( '(^[1-9]{1})', $d )) { $do = '0' . $d; } else { $do = $d; } $data["dates"][$dayCount]['d']=$d; $data["dates"][$dayCount]['d0']=$do; $link = JRoute::_( 'index.php?option=' . JEV_COM_COMPONENT . '&task=day.listevents&year=' . $year . '&month=' . $month . '&day=' . $do .$cat. '&Itemid=' . $this->myItemid ); $data["dates"][$dayCount]["link"]=$link; $cellDate = mktime (0, 0, 0, $month, $d, $year); $data["dates"][$dayCount]['cellDate']=$cellDate; //$data["dates"][$dayCount]['events'] = array(); if( $rowcount > 0 ){ foreach ($rows as $row) { if ($row->checkRepeatMonth($cellDate,$year,$month)) { if ($short){ $data["dates"][$dayCount]['events']=true; // I can skip testing all the events since checkRepeatMonth tests for multiday events to make xure they only appear // on secondary days if the multiday flag is set to 1 break; } else { $i=count($data["dates"][$dayCount]['events']); $data["dates"][$dayCount]['events'][$i] = $row; } } } } // sort events of this day by time if (is_array($data["dates"][$dayCount]['events'])) { usort($data["dates"][$dayCount]['events'],array("JEventsDataModel", "_sortEventsByTime")); } $dayCount++; } $days = ( 7 - date( 'w', mktime( 0, 0, 0, $month + 1, 1, $year )) + $startday ) %7; $d = 1; $followMonth = $month+1; $followYear = $year; if ($followMonth>12) { $followMonth-=12; $followYear+=1; } $data["followingMonth"]=array(); for( $d = 1; $d <= $days; $d++ ) { $data["dates"][$dayCount]=array(); $data["dates"][$dayCount]["monthType"]="following"; $data["dates"][$dayCount]["month"]=$followMonth; $data["dates"][$dayCount]["year"]=$followYear; $data["dates"][$dayCount]['countDisplay']=0; if( $d <= '9' & ereg( '(^[1-9]{1})', $d )) { $do = '0' . $d; } else { $do = $d; } $data["dates"][$dayCount]['d']=$d; $data["dates"][$dayCount]['d0']=$do; if ($short){ $data["dates"][$dayCount]["events"]=false; } else { $data["dates"][$dayCount]["events"]=array(); } $cellDate = mktime (0, 0, 0, $followMonth, $d, $followYear); $data["dates"][$dayCount]['cellDate']=$cellDate; $data["dates"][$dayCount]["today"]=false; $link = JRoute::_( 'index.php?option=' . JEV_COM_COMPONENT . '&task=day.listevents&year=' . $followYear . '&month=' . $followMonth . '&day=' . $do .$cat. '&Itemid=' . $this->myItemid ); $data["dates"][$dayCount]["link"]=$link; $dayCount++; } // Week data and links $data["weeks"]=array(); for ($w=0;$w<6 && $w*7<count($data["dates"]);$w++){ $date = $data["dates"][$w*7]['cellDate']; $day = $data["dates"][$w*7]["d"]; $month = $data["dates"][$w*7]["month"]; $year = $data["dates"][$w*7]["year"]; // get week number from second weekday to avoid confusion with week start sunday $week = intval(JEV_CommonFunctions::jev_strftime("%V",$date+86400)); $link = JRoute::_( 'index.php?option=' . JEV_COM_COMPONENT . '&task=week.listevents&year=' . $year . '&month=' . $month . '&day=' . $day .$cat. '&Itemid=' . $this->myItemid ); $data["weeks"][$week]=$link; } return $data; } function getYearData($year, $limit, $limitstart ) { global $mainframe; $data = array(); $data ["year"]=$year; $db =& JFactory::getDBO(); $cfg = & JEVConfig::getInstance(); include_once(JPATH_ADMINISTRATOR."/components/".JEV_COM_COMPONENT."/libraries/colorMap.php"); $data ["limit"] = $limit; if ($data ["limit"]>0){ $counter = $this->queryModel->countIcalEventsByYear( $year, $cfg->get('com_showrepeats')); $data["total"] = $counter ; if( $data["total"] <= $data ["limit"] ) { $limitstart = 0; } $data ["limitstart"]=$limitstart; } else { $data["total"]=0; $data ["limitstart"]=0; } $data["months"]=array(); $rows = $this->queryModel->listIcalEventsByYear( $year, $data ["limitstart"], $data ["limit"], $cfg->get('com_showrepeats')); $num_events = count( $rows ); for($month = 1; $month <= 12; $month++) { $data["months"][$month] = array(); $data["months"][$month]["rows"] = array(); for( $r = 0; $r < $num_events; $r++ ) { $row =& $rows[$r]; if ($month == $row->mup()){ $count = count($data["months"][$month]["rows"]); $data["months"][$month]["rows"][$count] = $row; } } } //global $mainframe; //include_once(JPATH_BASE."/components/".JEV_COM_COMPONENT."/libraries/iCalImport.php"); //iCalHelper::getHolidayDataForYear($data, "USHolidays.ics"); return $data; } /** * gets structured week data * * @param int $year * @param int $month * @param int $day * @param boolean $detailedDay when true gives hour by hour data for the day $day * @return unknown */ function getWeekData($year, $month, $day, $detailedDay=false) { global $mainframe; $Itemid = JEVHelper::getItemid(); $db =& JFactory::getDBO(); $cat = ""; if ($this->catidsOut != 0){ $cat = '&catids='.$this->catidsOut; } $cfg = & JEVConfig::getInstance(); include_once(JPATH_ADMINISTRATOR."/components/".JEV_COM_COMPONENT."/libraries/colorMap.php"); $data = array(); $indate = mktime( 0, 0, 0, $month, $day, $year) ; $startday = $cfg->get('com_starday', 0); $numday = (( date( 'w', $indate) - $startday + 7) %7 ); $week_start = mktime( 0, 0, 0, $month, ( $day - $numday ), $year ); $week_end = mktime( 0, 0, 0, $month, ( $day - $numday )+6, $year ); // + 6 for inclusinve week $rows = $this->queryModel->listEventsByWeekNEW(strftime("%Y-%m-%d",$week_start),strftime("%Y-%m-%d",$week_end)); $icalrows = $this->queryModel->listIcalEventsByWeek( $week_start, $week_end); $rows = array_merge($icalrows,$rows); $rowcount = count( $rows ); $data['startdate'] = JEventsHTML::getDateFormat( strftime("%Y",$week_start), strftime("%m",$week_start), strftime("%d",$week_start), 1 ); $data['enddate'] = JEventsHTML::getDateFormat( strftime("%Y",$week_end), strftime("%m",$week_end), strftime("%d",$week_end), 1 ); $data['days'] = array(); for( $d = 0; $d < 7; $d++ ){ $data['days'][$d] = array(); $data['days'][$d]['rows'] = array(); $this_currentdate = mktime( 0, 0, 0, $month, ( $day - $numday + $d ), $year ); $data['days'][$d]['week_day'] = strftime("%d",$this_currentdate); $data['days'][$d]['week_month'] = strftime("%m",$this_currentdate); $data['days'][$d]['week_year'] = strftime("%Y",$this_currentdate); // This is really view specific - remove it later $data['days'][$d]['link']= JRoute::_( 'index.php?option='.JEV_COM_COMPONENT.'&task=day.listevents&year='.$data['days'][$d]['week_year'].'&month='.$data['days'][$d]['week_month'].'&day='.$data['days'][$d]['week_day'].'&Itemid='.$Itemid . $cat); $t_datenow = JEVHelper::getNow(); $now_adjusted = $t_datenow->toUnix(true); if( strftime('%Y-%m-%d',$this_currentdate) == strftime('%Y-%m-%d', $now_adjusted )) { $data['days'][$d]['today']=true; $data['days']['today']=$d; } else { $data['days'][$d]['today']=false; } if ($detailedDay && ($this_currentdate==$indate)){ $this->_populateHourData($data, $rows, $indate); } $num_events = count( $rows ); $countprint = 0; for( $r = 0; $r < $num_events; $r++ ){ $row = $rows[$r]; if ($row->checkRepeatWeek($this_currentdate,$week_start,$week_end)) { $count = count($data['days'][$d]['rows']); $data['days'][$d]['rows'][$count] = $row; } } // sort events of this day by time usort($data['days'][$d]['rows'],array("JEventsDataModel", "_sortEventsByTime")); } return $data; } function _populateHourData(&$data, $rows, $target_date){ $num_events = count( $rows ); $data['hours']=array(); $data['hours']['timeless']=array(); $data['hours']['timeless']['events']=array(); // Timeless events for( $r = 0; $r < $num_events; $r++ ){ $row =& $rows[$r]; if ($row->checkRepeatDay($target_date)) { if ($row->alldayevent() || ($row->hup()==$row->hdn() && $row->minup()==$row->mindn() && $row->sup()==$row->sdn())){ $count = count($data['hours']['timeless']['events']); $data['hours']['timeless']['events'][$count]=$row; } } } for ($h=0;$h<24;$h++){ $data['hours'][$h]=array(); $data['hours'][$h]['hour_start'] = $target_date+($h*3600); $data['hours'][$h]['hour_end'] = $target_date+59+(59*60)+($h*3600); $data['hours'][$h]['events'] = array(); for( $r = 0; $r < $num_events; $r++ ){ $row =& $rows[$r]; if ($row->checkRepeatDay($target_date)) { if ($row->alldayevent() || ($row->hup()==$row->hdn() && $row->minup()==$row->mindn() && $row->sup()==$row->sdn())){ // Ignore timeless events } else if ($row->hup()==$h && $row->minup()<=59 && $row->sup()<=59){ $count = count($data['hours'][$h]['events']); $data['hours'][$h]['events'][$count]=$row; } } } // sort events of this day by time usort($data['hours'][$h]['events'],array("JEventsDataModel", "_sortEventsByTime")); } } function getDayData($year, $month, $day) { global $mainframe; include_once(JPATH_ADMINISTRATOR."/components/".JEV_COM_COMPONENT."/libraries/colorMap.php"); $data = array(); $target_date = mktime(0,0,0,$month,$day,$year); $rows = $this->queryModel->listEventsByDateNEW( strftime("%Y-%m-%d",$target_date )); $icalrows = $this->queryModel->listIcalEventsByDay($target_date); $rows = array_merge($icalrows,$rows); $this->_populateHourData($data, $rows, $target_date); return $data; } function getEventData( $evid, $jevtype, $year, $month, $day, $uid="" ) { $data = array(); global $mainframe; $pop = intval(JRequest::getVar( 'pop', 0 )); $Itemid = JEVHelper::getItemid(); $db =& JFactory::getDBO(); $cfg = & JEVConfig::getInstance(); $row = $this->queryModel->listEventsById ($evid, 1, $jevtype); // include unpublished events for publishers and above $num_row = count($row); // No matching rows - use uid as alternative if ($num_row==0 && strlen($uid)>0){ $rpid = $this->queryModel->findMatchingRepeat($uid, $year, $month, $day); if (isset($rpid) && $rpid>0){ $row = $this->queryModel->listEventsById ($rpid, 1, $jevtype); // include unpublished events for publishers and above $num_row = count($row); } } if( $num_row ){ // process the new plugins $dispatcher =& JDispatcher::getInstance(); $dispatcher->trigger('onGetEventData', array (& $row)); $params =& new JParameter(null); $row->contactlink = JEventsHTML::getUserMailtoLink( $row->id(), $row->created_by() ); $event_up = new JEventDate( $row->publish_up() ); $row->start_date = JEventsHTML::getDateFormat( $event_up->year, $event_up->month, $event_up->day, 0 ); $row->start_time = ( $cfg->get('com_calUseStdTime')== '1' ) ? $event_up->get12hrTime() : $event_up->get24hrTime(); $event_down = new JEventDate( $row->publish_down() ); $row->stop_date = JEventsHTML::getDateFormat( $event_down->year, $event_down->month, $event_down->day, 0 ); $row->stop_time = ( $cfg->get('com_calUseStdTime') == '1' ) ? $event_down->get12hrTime() : $event_down->get24hrTime(); // jul 8th/04 dmcd - kludge for overnite events, advance the displayed stop_date by 1 day // when an overniter is detected if( $row->stop_time < $row->start_time ) $event_down->addDays(1); // ******************* // ** This cloaking should be done by mambot/Joomla function // ******************* // Parse http and wrap in <a> tag // trigger content plugin $pattern = '[a-zA-Z0-9&?_.=%\-\/]'; // Adresse // don't convert address that already has a link tag if (strpos($row->location(),'<a href=')===false){ $row->location(preg_replace('#(http://)('.$pattern.'*)#i', '<a href="\\1\\2">\\1\\2</a>', $row->location())); } $tmprow = new stdClass(); $tmprow->text = $row->location(); $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $dispatcher->trigger( 'onPrepareContent', array( &$tmprow, &$params, 0 )); $row->location($tmprow->text); //Contact if (strpos($row->contact_info(),'<a href=')===false){ $row->contact_info(preg_replace('#(http://)('.$pattern.'*)#i', '<a href="\\1\\2">\\1\\2</a>', $row->contact_info())); } $tmprow = new stdClass(); $tmprow->text = $row->contact_info(); $dispatcher->trigger( 'onPrepareContent', array( &$tmprow, &$params, 0 )); $row->contact_info($tmprow->text); //Extra if (strpos($row->extra_info(),'<a href=')===false){ $row->extra_info(preg_replace('#(http://)('.$pattern.'*)#i', '<a href="\\1\\2">\\1\\2</a>', $row->extra_info())); } //$row->extra_info(eregi_replace('[^(href=|href="|href=\')](((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1', $row->extra_info())); $tmprow = new stdClass(); $tmprow->text = $row->extra_info(); $dispatcher->trigger( 'onPrepareContent', array( &$tmprow, &$params, 0 )); $row->extra_info($tmprow->text); $mask = $mainframe->getCfg( 'hideAuthor' ) ? MASK_HIDEAUTHOR : 0; $mask |= $mainframe->getCfg( 'hideCreateDate' ) ? MASK_HIDECREATEDATE : 0; $mask |= $mainframe->getCfg( 'hideModifyDate' ) ? MASK_HIDEMODIFYDATE : 0; $mask |= $mainframe->getCfg( 'hidePdf' ) ? MASK_HIDEPDF : 0; $mask |= $mainframe->getCfg( 'hidePrint' ) ? MASK_HIDEPRINT : 0; $mask |= $mainframe->getCfg( 'hideEmail' ) ? MASK_HIDEEMAIL : 0; //$mask |= $mainframe->getCfg( 'vote' ) ? MASK_VOTES : 0; $mask |= $mainframe->getCfg( 'vote' ) ? (MASK_VOTES|MASK_VOTEFORM) : 0; $mask |= $pop ? MASK_POPUP | MASK_IMAGES | MASK_BACKTOLIST : 0; // Do main mambot processing here // process bots //$row->text = $row->content; $params->set("image",1); $row->text = $row->content(); $dispatcher->trigger( 'onPrepareContent', array( &$row, &$params, 0 )); $row->content( $row->text ); $data['row']=$row; $data['mask']=$mask; $row->updateHits(); return $data; } else return null; } function accessibleCategoryList($aid=null, $catids=null, $catidList=null){ return $this->queryModel->accessibleCategoryList($aid, $catids, $catidList); } function getCatData( $catids, $showRepeats=true, $limit=0, $limitstart=0){ $data = array(); global $mainframe; $Itemid = JEVHelper::getItemid(); $db =& JFactory::getDBO(); include_once(JPATH_ADMINISTRATOR."/components/".JEV_COM_COMPONENT."/libraries/colorMap.php"); $cfg = & JEVConfig::getInstance(); $counter = $this->queryModel->countEventsByCat( $catids); $total = $this->queryModel->countIcalEventsByCat( $catids,$showRepeats); $counter += $total; $data ['total'] = $counter ; //$limit = $limit ? $limit : $cfg->get('com_calEventListRowsPpg'); if ( $data ['total'] <= $limit || $limitstart > $data ['total']) { $limitstart = 0; } $data['limit']=$limit; $data['limitstart']=$limitstart; $rows = $this->queryModel->listEventsByCat( $catids, $limitstart, $limit ); $icalrows = $this->queryModel->listIcalEventsByCat( $catids,$showRepeats,$total, $limitstart, $limit ); $rows = array_merge($icalrows,$rows); $num_events = count( $rows ); $catdesc = ""; if (count($this->catids)>0){ $catname = JText::_('JEV_EVENT_CHOOSE_CATEG'); } if( $num_events > 0 ){ $catname = $rows[0]->getCategoryName(); $catdesc = $rows[0]->getCategoryDescription(); foreach ($rows as $row) { if ($row->getCategoryName() != $catname){ $catname = JText::_('JEV_EVENT_CHOOSE_CATEG'); break; } } } else if( count($catids) == 0 ) { $catname = JText::_('JEV_EVENT_CHOOSE_CATEG'); } else { $catname = JText::_('JEV_EVENT_CHOOSE_CATEG'); } $data['catname']=$catname; $data['catdesc']=$catdesc; $data['catids']=$catids; if( $num_events > 0 ){ for( $r = 0; $r < $num_events; $r++ ){ $row =& $rows[$r]; $row->catname($catname); // for completeness of dataset } } $data['rows']=$rows; return $data; } function getKeywordData($keyword, $limit, $limitstart, $useRegX=true) { $data = array(); global $mainframe; $user =& JFactory::getUser(); $aid = intval( $user->aid ); $Itemid = JEVHelper::getItemid(); $db =& JFactory::getDBO(); $cfg = & JEVConfig::getInstance(); include_once(JPATH_ADMINISTRATOR."/components/".JEV_COM_COMPONENT."/libraries/colorMap.php"); $keyword = preg_replace( "/[[:space:]]+/", ' +', $keyword ); $keyword = trim( $keyword ); $keyword = preg_replace( "/\++/", '+', $keyword ); $keywordcheck = preg_replace( "/ |\+/", '', $keyword ); $searchisValid = false; $total = 0; if( empty( $keyword ) || JString::strlen( $keywordcheck ) < 3 || $keyword == '%%' || $keywordcheck == '' ) { $keyword = JText::_('JEV_KEYWORD_NOT_VALID'); $num_events = 0; $rows = array(); $data['total'] = 0; $data['limit']=0; $data['limitstart']=0; $data['num_events']=0; } else { $searchisValid = true; $rows = $this->queryModel->listEventsByKeyword( $keyword, 'publish_up,catid', $limit, $limitstart, $total, $useRegX ); $data['total'] = $total; $data['limit']=$limit; $data['limitstart']=$limitstart; $num_events = count( $rows ); $data['num_events']=$num_events; } $chdate = ''; $chcat = ''; if( $num_events > 0 ){ for( $r = 0; $r < $num_events; $r++ ){ $row =& $rows[$r]; $row->catname = $row->getCategoryName( ); $row->contactlink = JEventsHTML::getUserMailtoLink( $row->id(), $row->created_by() ); $row->bgcolor = JEV_CommonFunctions::setColor($row); $row->fgcolor = JevMapColor($row->bgcolor); $t_datenow = JEVHelper::getNow(); $now_adjusted = $t_datenow->toUnix(true); if( $row->mup() == strftime( '%m', $now_adjusted) && $row->yup() == strftime( '%Y', $now_adjusted )&& $row->dup() == strftime( '%d', $now_adjusted)) { $row->today=true; } else { $row->today=false; } } } $data['rows']=$rows; return $data; } function getDataForAdmin( $creator_id, $limit, $limitstart ){ $data= array(); $is_event_editor = JEVHelper::isEventCreator(); $user =& JFactory::getUser(); $aid = intval( $user->aid ); $Itemid = JEVHelper::getItemid(); $user =& JFactory::getUser(); $db =& JFactory::getDBO(); global $mainframe; $cfg = & JEVConfig::getInstance(); include_once(JPATH_ADMINISTRATOR."/components/".JEV_COM_COMPONENT."/libraries/colorMap.php"); $total = $this->queryModel->countEventsByCreator ($creator_id); $total += $this->queryModel->countIcalEventsByCreator ($creator_id); $data['total']=$total; $limit = $limit ? $limit : $cfg->get('com_calEventListRowsPpg'); if ( $total <= $limit ) { $limitstart = 0; } $data['limit']=$limit; $data['limitstart']=$limitstart; $rows = $this->queryModel->listEventsByCreator ($creator_id, $limitstart, $limit); // Note that these are the vevents not the repeats $icalrows = $this->queryModel->listIcalEventsByCreator ($creator_id, $limitstart, $limit); $rows = array_merge($rows,$icalrows); $adminView = true; $num_events = count( $rows ); if( $num_events > 0 ){ for( $r = 0; $r < $num_events; $r++ ) { $row =& $rows[$r]; $row->catname($row->getCategoryName()); $row->contactlink( JEventsHTML::getUserMailtoLink( $row->id(), $row->created_by(), true)); $row->bgcolor = JEV_CommonFunctions::setColor($row); $row->fgcolor = JevMapColor($row->bgcolor); } } $data['rows']=$rows; return $data; } function getAdjacentMonth($data, $direction=1) { $cfg = & JEVConfig::getInstance(); $monthResult = array(); $d1 = mktime(0,0,0,intval($data['month'])+$direction,1,$data['year']); $monthResult['day1'] = $d1; $monthResult['lastday'] = date("t",$d1); $year = strftime("%Y",$d1); $monthResult['year'] = $year; $month = strftime("%m",$d1); $monthResult['month'] = $month; $monthResult['name'] = JEVHelper::getMonthName($month); $task = JRequest::getString('jevtask'); $Itemid = JEVHelper::getItemid(); if (isset($Itemid)) $item= "&Itemid=$Itemid"; else $item=""; $monthResult['link'] = JRoute::_("index.php?option=".JEV_COM_COMPONENT."&task=$task$item&year=$year&month=$month"); return $monthResult; } function getPrecedingMonth($data) { return $this->getAdjacentMonth($data,-1); } function getFollowingMonth($data) { return $this->getAdjacentMonth($data,+1); } function getAdjacentWeek($year,$month,$day, $direction=1) { $d1 = mktime(0,0,0,$month,$day+$direction*7,$year); $day = strftime("%d",$d1); $year = strftime("%Y",$d1); $month = strftime("%m",$d1); $task = JRequest::getString('jevtask'); $Itemid = JEVHelper::getItemid(); if (isset($Itemid)) $item= "&Itemid=$Itemid"; else $item=""; return JRoute::_("index.php?option=".JEV_COM_COMPONENT."&task=$task$item&year=$year&month=$month&day=$day"); } function getPrecedingWeek($year,$month,$day) { return $this->getAdjacentWeek($year,$month,$day,-1); } function getFollowingWeek($year,$month,$day) { return $this->getAdjacentWeek($year,$month,$day,+1); } function getAdjacentDay($year,$month,$day, $direction=1) { $d1 = mktime(0,0,0,$month,$day+$direction,$year); $day = strftime("%d",$d1); $year = strftime("%Y",$d1); $month = strftime("%m",$d1); $task = JRequest::getString('jevtask'); $Itemid = JEVHelper::getItemid(); if (isset($Itemid)) $item= "&Itemid=$Itemid"; else $item=""; return JRoute::_("index.php?option=".JEV_COM_COMPONENT."&task=$task$item&year=$year&month=$month&day=$day"); } function getPrecedingDay($year,$month,$day) { return $this->getAdjacentDay($year,$month,$day,-1); } function getFollowingDay($year,$month,$day) { return $this->getAdjacentDay($year,$month,$day,+1); } /** * Sort Events by time, use only for events of the same day * * @static * @param object $a * @param object $b * @return boolean */ function _sortEventsByTime (&$a, &$b) { // this custom sort compare function compares the start times of events that are referenced by the a & b vars //if ($a->publish_up() == $b->publish_up()) return 0; list( $adate, $atime ) = split( ' ', $a->publish_up() ); list( $bdate, $btime ) = split( ' ', $b->publish_up() ); // allday events first, equal time sort by title $atime = $a->alldayevent() ? '00:00'.$a->title() : $atime.$a->title(); $btime = $b->alldayevent() ? '00:00'.$b->title() : $btime.$b->title(); return strcmp( $atime, $btime ); } }