| Server IP : 180.180.241.3 / Your IP : 216.73.216.35 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 : C:/AppServ/www/news/components/com_jevents/libraries/ |
Upload File : |
<?php
/**
* JEvents Component for Joomla 1.5.x
*
* @version $Id: jicaleventrepeat.php 1407 2009-04-05 13:46:02Z 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
*/
defined( '_JEXEC' ) or die( 'Restricted access' );
class jIcalEventRepeat extends jIcalEventDB{
private $_nextRepeat=null;
private $_prevRepeat=null;
function id() {
if (!isset($this->_rp_id)) return parent::id();
return $this->_rp_id;
}
function rp_id() {
return $this->_rp_id;
}
function ev_id() {
return parent::id();
}
function checkRepeatMonth($cellDate, $year, $month){
// builds and returns array
if (!isset($this->eventDaysMonth)){
$this->eventDaysMonth = array();
}
if (!array_key_exists($cellDate,$this->eventDaysMonth)){
if ($this->eventOnDate($cellDate)) {
$this->eventDaysMonth[$cellDate]=true;
}
/*
// I don't need to do this since eventOnDate checks the multiday condition
if ($this->eventOnDate($cellDate) && ($this->_multiday || !isset($this->_alreadyShown) || !$this->_alreadyShown)) {
$this->eventDaysMonth[$cellDate]=true;
$this->_alreadyShown = true;
}
*/
else {
$this->eventDaysMonth[$cellDate]=false;
}
}
return $this->eventDaysMonth[$cellDate];
}
function eventOnDate($testDate){
if (!isset($this->_startday)){
$this->_startday = mktime(0,0,0,$this->mup(),$this->dup(),$this->yup());
$this->_endday = mktime(0,0,0,$this->mdn(),$this->ddn(),$this->ydn());
}
if ($this->_startday<=$testDate && $this->_endday>=$testDate){
// don't show multiday suppressed events after the first day if multiday is not true
if (!$this->_multiday && $testDate>=($this->_startday+86400)){
return false;
}
return true;
}
else return false;
}
function isEditable(){
return true;
}
function hasrepetition(){
#if (isset($this->_rr_id) && $this->_rr_id>0 ) return true;
if (isset($this->_freq) && ($this->_freq != 'none')) return true;
else return false;
}
function editTask(){
// TODO add methods for editing specific repeats
return "icalrepeat.edit";
}
function detailTask(){
// TODO add methods for editing specific repeats
return "icalrepeat.detail";
}
function editLink($sef=false) {
$Itemid = JEVHelper::getItemid();
// rp_id is added for return via cancel only
// I pass in the rp_id so that I can return to the repeat I was viewing before editing
// I need $year,$month,$day So that I can return to an appropriate date after saving an event (the repetition ids have all changed so I can't go back there!!)
list($year,$month,$day) = JEVHelper::getYMD();
$link = "index.php?option=".JEV_COM_COMPONENT."&task=".parent::editTask().'&evid='. parent::id().'&Itemid='.$Itemid .'&rp_id='.$this->rp_id()."&year=$year&month=$month&day=$day";
//$link = $sef?JRoute::_( $link ,true ):$link;
$link = JRoute::_( $link ,true );
return $link;
}
function editCopyLink($sef=false) {
$Itemid = JEVHelper::getItemid();
// rp_id is added for return via cancel only
// I pass in the rp_id so that I can return to the repeat I was viewing before editing
// I need $year,$month,$day So that I can return to an appropriate date after saving an event (the repetition ids have all changed so I can't go back there!!)
list($year,$month,$day) = JEVHelper::getYMD();
$link = "index.php?option=".JEV_COM_COMPONENT."&task=".parent::editCopyTask().'&evid='. parent::id().'&Itemid='.$Itemid .'&rp_id='.$this->rp_id()."&year=$year&month=$month&day=$day";
//$link = $sef?JRoute::_( $link ,true ):$link;
$link = JRoute::_( $link ,true );
return $link;
}
function editRepeatLink($sef=false) {
$Itemid = JEVHelper::getItemid();
list($year,$month,$day) = JEVHelper::getYMD();
$link = "index.php?option=".JEV_COM_COMPONENT."&task=".$this->editTask().'&evid='. $this->id().'&Itemid='.$Itemid
."&year=$year&month=$month&day=$day";
//$link = $sef?JRoute::_( $link ,true ):$link;
$link = JRoute::_( $link ,true );
return $link;
}
function deleteLink($sef=false) {
$Itemid = JEVHelper::getItemid();
// I need $year,$month,$day So that I can return to an appropriate date after deleting a repetition!!!
list($year,$month,$day) = JEVHelper::getYMD();
$link = "index.php?option=".JEV_COM_COMPONENT."&task=".parent::deleteTask().'&evid='. parent::id().'&Itemid='.$Itemid."&year=$year&month=$month&day=$day" ;
//$link = $sef?JRoute::_( $link ,true ):$link;
$link = JRoute::_( $link ,true );
return $link;
}
function deleteRepeatLink($sef=false ){
$Itemid = JEVHelper::getItemid();
// I need $year,$month,$day So that I can return to an appropriate date after deleting a repetition!!!
list($year,$month,$day) = JEVHelper::getYMD();
$link ="index.php?option=".JEV_COM_COMPONENT."&task=".$this->deleteTask().'&cid[]='. $this->id().'&Itemid='.$Itemid."&year=$year&month=$month&day=$day" ;
//$link = $sef?JRoute::_( $link ,true ):$link;
$link = JRoute::_( $link ,true );
return $link;
}
function deleteFutureLink($sef=false ){
$Itemid = JEVHelper::getItemid();
// I need $year,$month,$day So that I can return to an appropriate date after deleting a repetition!!!
list($year,$month,$day) = JEVHelper::getYMD();
$link ="index.php?option=".JEV_COM_COMPONENT."&task=".$this->deleteFutureTask().'&cid[]='. $this->id().'&Itemid='.$Itemid."&year=$year&month=$month&day=$day" ;
//$link = $sef?JRoute::_( $link ,true ):$link;
$link = JRoute::_( $link ,true );
return $link;
}
function viewDetailLink($year,$month,$day,$sef=true, $Itemid=0){
$Itemid = $Itemid>0?$Itemid:JEVHelper::getItemid();
// uid = event series unique id i.e. the actual event
$link = "index.php?option=".JEV_COM_COMPONENT."&task=".$this->detailTask()."&evid=".$this->rp_id() .'&Itemid='.$Itemid
."&year=$year&month=$month&day=$day&uid=".urlencode($this->uid());
// SEF is applied later
$link = $sef?JRoute::_( $link ,true ):$link;
return $link;
}
function deleteTask(){
return "icalrepeat.delete";
}
function deleteFutureTask(){
return "icalrepeat.deletefuture";
}
function checkRepeatWeek($this_currentdate,$week_start,$week_end) {
//TODO fix this
//if ($this->vevent->eventOnDate($this_currentdate)) return true;
if ($this->eventOnDate($this_currentdate) && ($this->_multiday || !isset($this->_alreadyShown) || !$this->_alreadyShown)) {
$this->_alreadyShown = true;
return true;
}
return false;
}
function checkRepeatDay($this_currentdate){
//if ($this->vevent->eventOnDate($this_currentdate)) return true;
if ($this->eventOnDate($this_currentdate)) return true;
return false;
}
function repeatSummary() {
$result = parent::repeatSummary();
if ($this->_eventdetail_id!=$this->_detail_id){
$result .= "<div class='ev_repeatexception'>".JText::_('JEV_REPEATEXCEPTION')."</div>";
}
//$result .= "<div style='font-weight:bold;color:black;background-color:yellow'>Repeat Summary needs more work still!</div>";
return $result;
}
function previousnextLinks(){
$cfg = & JEVConfig::getInstance();
$result = parent::previousnextLinks();
if ($this->prevRepeat() || $this->nextRepeat()){
if ($this->prevRepeat()){
$result .= "<div class='ev_prevrepeat'>";
$result .= "<a href='".$this->prevRepeat()."' title='".JText::_('JEV_PREVIOUSREPEAT')."' class='".$cfg->get('com_navbarcolor')."'>".JText::_('JEV_PREVIOUSREPEAT')."</a>";
$result .= "</div>";
}
if ($this->nextRepeat()){
$result .= "<div class='ev_nextrepeat'>";
$result .= "<a href='".$this->nextRepeat()."' title='".JText::_('JEV_NEXTREPEAT')."' class='".$cfg->get('com_navbarcolor')."'>".JText::_('JEV_NEXTREPEAT')."</a>";
$result .= "</div>";
}
}
return $result;
}
function previousLink(){
$cfg = & JEVConfig::getInstance();
$result = parent::previousnextLinks();
if ($this->prevRepeat()){
$result .= "<div class='ev_prevrepeat'>";
$result .= "<a href='".$this->prevRepeat()."' title='".JText::_('JEV_PREVIOUSREPEAT')."' class='".$cfg->get('com_navbarcolor')."'>".JText::_('JEV_PREVIOUSREPEAT')."</a>";
$result .= "</div>";
}
return $result;
}
function nextLink(){
$cfg = & JEVConfig::getInstance();
$result = parent::previousnextLinks();
if ($this->nextRepeat()){
$result .= "<div class='ev_nextrepeat'>";
$result .= "<a href='".$this->nextRepeat()."' title='".JText::_('JEV_NEXTREPEAT')."' class='".$cfg->get('com_navbarcolor')."'>".JText::_('JEV_NEXTREPEAT')."</a>";
$result .= "</div>";
}
return $result;
}
function prevRepeat(){
if (is_null($this->_prevRepeat)){
$this->getAdjacentRepeats();
}
return $this->_prevRepeat;
}
function nextRepeat(){
if (is_null($this->_nextRepeat)){
$this->getAdjacentRepeats();
}
return $this->_nextRepeat;
}
private function getAdjacentRepeats(){
$Itemid = JEVHelper::getItemid();
list($year,$month,$day) = JEVHelper::getYMD();
$db =& JFactory::getDBO();
$sql = "SELECT * FROM #__jevents_repetition WHERE eventid=".$this->ev_id()." AND startrepeat<'".$this->_startrepeat."' ORDER BY startrepeat DESC limit 1";
$db->setQuery($sql);
$prior = $db->loadObject();
if (!is_null($prior)) {
$link = "index.php?option=".JEV_COM_COMPONENT."&task=".$this->detailTask()."&evid=".$prior->rp_id .'&Itemid='.$Itemid
."&year=$year&month=$month&day=$day&uid=".urlencode($this->uid());
$link = JRoute::_( $link );
$this->_prevRepeat = $link;
}
else {
$this->_prevRepeat = false;
}
$sql = "SELECT * FROM #__jevents_repetition WHERE eventid=".$this->ev_id()." AND startrepeat>'".$this->_startrepeat."' ORDER BY startrepeat ASC limit 1";
$db->setQuery($sql);
$post = $db->loadObject();
if (!is_null($post)) {
$link = "index.php?option=".JEV_COM_COMPONENT."&task=".$this->detailTask()."&evid=".$post->rp_id .'&Itemid='.$Itemid
."&year=$year&month=$month&day=$day&uid=".urlencode($this->uid());
$link = JRoute::_( $link );
$this->_nextRepeat = $link;
}
else {
$this->_nextRepeat = false;
}
}
}