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: iCalEventDetail.php 1400 2009-03-30 08:45:17Z 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 */ // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); class iCalEventDetail extends JTable { /** @var int Primary key */ var $evdet_id = null; var $dtstart = null; var $dtstartraw = null; var $duration = null; var $durationraw = null; var $dtend = null; var $dtendraw = null; var $dtstamp = null; var $class = null; var $categories = null; var $description = null; var $geolon = null; var $geolat = null; var $location = null; var $priority = null; var $status = null; var $summary = null; var $contact = null; var $organizer = null; var $url = null; var $created = null; var $sequence = null; var $extra_info = null; var $color = null; var $multiday=null; var $noendtime=null; var $_customFields = null; /** * This holds the raw data as an array * * @var array */ var $_data; /** * Null Constructor */ function iCalEventDetail( &$db ) { parent::__construct( '#__jevents_vevdetail', 'evdet_id', $db ); } /** * override store function to force rrule to save too! * * @param unknown_type $updateNulls */ function store($updateNulls=false ) { if (parent::store($updateNulls)){ // I also need to store custom data $dispatcher =& JDispatcher::getInstance(); // just incase we don't have jevents plugins registered yet JPluginHelper::importPlugin("jevents"); $res = $dispatcher->trigger( 'onStoreCustomDetails' , array(&$this)); } else { JError::raiseError("Problem saving event ".$this->_db->getErrorMsg()); } return $this->evdet_id; } /** * Pseudo Constructor * * @param iCal Event parsed from ICS file as an array $ice * @return n/a */ function iCalEventDetailFromData($ice){ $db =& JFactory::getDBO(); $temp = new iCalEventDetail($db); $temp->_data = $ice; $temp->convertData(); return $temp; } /** * Pseudo Constructor * * @param iCal Event parsed from ICS file as an array $ice * @return n/a */ function iCalEventDetailFromDB($icalrowAsArray){ $db =& JFactory::getDBO(); $temp = new iCalEventDetail($db); $temp->_data = $icalrowAsArray; $temp->convertData(); return $temp; } /** * private function * * @param string $field */ function processField($field,$default,$targetFieldName=""){ if ($targetFieldName==""){ $targetfield = str_replace("-","_",$field); } else { $targetfield = $targetFieldName; } $this->$targetfield = array_key_exists(strtoupper($field),$this->_data)?$this->_data[strtoupper($field)]:$default; } function processCustom(){ if (!isset($this->_customFields)){ $this->_customFields = array(); } foreach ($this->_data as $key=>$value) { if (strpos($key,"custom_")===0){ $field = substr($key,7); $this->_customFields[$field]=$value; } } } /** * Converts $data into class values * */ function convertData(){ $this->_rawdata = serialize($this->_data); $this->processField("dtstart",0); $this->processField("dtstartraw",""); $this->processField("duration",0); $this->processField("durationraw",""); $this->processField("dtend",0); $this->processField("dtendraw",""); $this->processField("dtstamp",""); $this->processField("class",""); $this->processField("categories",""); $this->processField("description",""); if (strpos($this->description,"##migration##")===0 ){ $this->description = substr($this->description,strlen("##migration##")); $this->description = base64_decode($this->description); } else { $this->description = str_replace('\n', "<br/>", $this->description); $this->description = stripslashes($this->description); } $this->processField("geolon",""); $this->processField("geolat",""); $this->processField("location",""); $this->processField("priority",""); $this->processField("status",""); $this->processField("summary",""); $this->processField("contact",""); $this->processField("organizer",""); $this->processField("url",""); $this->processField("created",""); $this->processField("sequence",""); $this->processField("multiday",1); $this->processField("noendtime",0); $this->processField("x-extrainfo","", "extra_info"); $this->processField("x-color","", "color"); // To make DB searches easier I set the dtend regardless if ($this->dtend==0 && $this->duration>0){ $this->dtend=$this->dtstart+$this->duration; } // Process any custom fields $this->processCustom(); } function isCancelled() { return $this->status=="CANCELLED"; } function dumpData(){ echo "starting : ".$this->dtstart."<br/>"; echo "ending : ".$this->dtend."<br/>"; if (isset($this->rrule)){ $this->rrule->dumpData(); } print_r($this->_data); echo "<hr/>"; } }