File "event-hour.class.php"
Full Path: /home/londdqdw/public_html/06/wp-content/plugins/timetable/class/event-hour.class.php
File size: 10.09 KB
MIME-type: text/x-php
Charset: utf-8
<?php
class TT_Event_Hour
{
public $event_hours_id;
public $event_id;
public $weekday_id;
public $start;
public $end;
public $tooltip;
public $before_hour_text;
public $after_hour_text;
public $category;
public $available_places;
public $slots_per_user;
public $event_title;
public $event_name;
public $weekday_title;
public $weekday_name;
public $weekday;
public $event;
public function GetEvent()
{
if(is_null($this->event) && $this->event_id>0)
{
$this->event = TT_Event::FetchOneById($this->event_id);
}
return $this->event;
}
public function setEvent($event) { $this->event = $event; }
public function GetWeekday()
{
if(is_null($this->weekday) && $this->weekday_id>0)
{
$this->weekday = TT_Weekday::FetchOneById($this->weekday_id);
}
return $this->weekday;
}
public function SetWeekday($weekday) { $this->weekday = $weekday; }
public function __construct($data = array())
{
$this->SetDefaults();
$this->Set($data);
}
public function Set($data = array())
{
if(isset($data['event_hours_id']))
$this->event_hours_id = $data['event_hours_id'];
if(isset($data['event_id']))
$this->event_id = $data['event_id'];
if(isset($data['weekday_id']))
$this->weekday_id = $data['weekday_id'];
if(isset($data['start']))
$this->start = $data['start'];
if(isset($data['end']))
$this->end = $data['end'];
if(isset($data['tooltip']))
$this->tooltip = $data['tooltip'];
if(isset($data['before_hour_text']))
$this->before_hour_text = $data['before_hour_text'];
if(isset($data['after_hour_text']))
$this->after_hour_text = $data['after_hour_text'];
if(isset($data['category']))
$this->category = $data['category'];
if(isset($data['available_places']))
$this->available_places = $data['available_places'];
if(isset($data['slots_per_user']))
$this->slots_per_user = $data['slots_per_user'];
if(isset($data['event_title']))
$this->event_title = $data['event_title'];
if(isset($data['event_name']))
$this->event_name = $data['event_name'];
if(isset($data['weekday_title']))
$this->weekday_title = $data['weekday_title'];
if(isset($data['weekday_name']))
$this->weekday_name = $data['weekday_name'];
}
protected function SetDefaults()
{
$defaults = static::GetDefaults();
$this->event_hours_id = $defaults['event_hours_id'];
$this->event_id = $defaults['event_id'];
$this->weekday_id = $defaults['weekday_id'];
$this->start = $defaults['start'];
$this->end = $defaults['end'];
$this->tooltip = $defaults['tooltip'];
$this->before_hour_text = $defaults['before_hour_text'];
$this->after_hour_text = $defaults['after_hour_text'];
$this->category = $defaults['category'];
$this->available_places = $defaults['available_places'];
$this->slots_per_user = $defaults['slots_per_user'];
$this->event_title = $defaults['event_title'];
$this->event_name = $defaults['event_name'];
$this->weekday_title = $defaults['weekday_title'];
$this->weekday_name = $defaults['weekday_name'];
}
protected static function GetDefaults()
{
return array(
'event_hours_id' => 0,
'event_id' => 0,
'weekday_id' => 0,
'start' => '',
'end' => '',
'tooltip' => '',
'before_hour_text' => '',
'after_hour_text' => '',
'category' => '',
'available_places' => 0,
'slots_per_user' => 1,
'event_title' => '',
'event_name' => '',
'weekday_title' => '',
'weekday_name' => '',
);
}
public static function Fetch($args = array())
{
$defaults = static::GetDefaultFetchArgs();
$args = shortcode_atts($defaults, $args);
global $wpdb;
$query = '';
$queryArgs = array();
$query .=
'SELECT
event_hour.event_hours_id,
event_hour.event_id,
event_hour.weekday_id,
TIME_FORMAT(event_hour.start, "%H:%i") AS start,
TIME_FORMAT(event_hour.end, "%H:%i") AS end,
event_hour.tooltip,
event_hour.before_hour_text,
event_hour.after_hour_text,
event_hour.category,
event_hour.available_places,
event_hour.slots_per_user,
event.post_title AS event_title,
event.post_name as event_name,
weekday.post_title AS weekday_title,
weekday.post_name as weekday_name
FROM
' . $wpdb->prefix . 'event_hours AS event_hour
LEFT JOIN
' . $wpdb->posts . ' AS event ON(event_hour.event_id=event.ID)
LEFT JOIN
' . $wpdb->posts . ' AS weekday ON(event_hour.weekday_id=weekday.ID)
WHERE
1 = 1';
if($args['event_hour_id'])
{
$query .=
' AND event_hour.event_hours_id IN (';
$temp = array();
foreach($args['event_hour_id'] as $val)
{
$temp[] = '%d';
$queryArgs[] = (int)$val;
}
$query .= implode(',', $temp);
$query .= ')';
}
if($args['event'])
{
$query .=
' AND event.post_name IN (';
$temp = array();
foreach($args['event'] as $val)
{
$temp[] = '%s';
$queryArgs[] = $val;
}
$query .= implode(',', $temp);
$query .= ')';
}
if($args['weekday'])
{
$query .=
' AND weekday.post_name IN (';
$temp = array();
foreach($args['weekday'] as $val)
{
if($val=='')
continue;
$temp[] = '%s';
$queryArgs[] = $val;
}
$query .= implode(',', $temp);
$query .= ')';
}
$query = $wpdb->prepare($query, $queryArgs);
$result = $wpdb->get_results($query, 'ARRAY_A');
if(!$result)
return null;
$eventHours = array();
foreach($result as $key=>$val)
$eventHours[] = new static($val);
return $eventHours;
}
public static function FetchById($id)
{
$eventHours = static::Fetch(array('event_hour_id' => array($id)));
if(count($eventHours)==1)
return $eventHours[0];
else
return null;
}
public static function GetDefaultFetchArgs()
{
$defaults = array(
'event_hour_id' => array(),
'event' => array(),
'weekday' => array(),
);
return $defaults;
}
public static function Insert(TT_Event_Hour $eventHour)
{
global $wpdb;
$query = '';
$queryFieldsClause = array();
$queryValuesClause = array();
$queryArgs = array();
if($eventHour->event_id>0)
{
$queryFieldsClause[] = "event_id";
$queryValuesClause[] = "%s";
$queryArgs[] = $eventHour->event_id;
}
if($eventHour->weekday_id>0)
{
$queryFieldsClause[] = "weekday_id";
$queryValuesClause[] = "%s";
$queryArgs[] = $eventHour->weekday_id;
}
if($eventHour->start!='')
{
$queryFieldsClause[] = "start";
$queryValuesClause[] = "%s";
$queryArgs[] = $eventHour->start;
}
if($eventHour->end!='')
{
$queryFieldsClause[] = "end";
$queryValuesClause[] = "%s";
$queryArgs[] = $eventHour->end;
}
if($eventHour->tooltip!='')
{
$queryFieldsClause[] = "tooltip";
$queryValuesClause[] = "%s";
$queryArgs[] = $eventHour->tooltip;
}
if($eventHour->before_hour_text!='')
{
$queryFieldsClause[] = "before_hour_text";
$queryValuesClause[] = "%s";
$queryArgs[] = $eventHour->before_hour_text;
}
if($eventHour->after_hour_text!='')
{
$queryFieldsClause[] = "after_hour_text";
$queryValuesClause[] = "%s";
$queryArgs[] = $eventHour->after_hour_text;
}
if($eventHour->category!='')
{
$queryFieldsClause[] = "category";
$queryValuesClause[] = "%s";
$queryArgs[] = $eventHour->category;
}
if($eventHour->available_places>=0)
{
$queryFieldsClause[] = "available_places";
$queryValuesClause[] = "%s";
$queryArgs[] = $eventHour->available_places;
}
if($eventHour->slots_per_user>=0)
{
$queryFieldsClause[] = "slots_per_user";
$queryValuesClause[] = "%s";
$queryArgs[] = $eventHour->slots_per_user;
}
$queryFieldsClause = implode(", ", $queryFieldsClause);
$queryValuesClause = implode(", ", $queryValuesClause);
$query .= "INSERT INTO `" . $wpdb->prefix . "event_hours`
(" . $queryFieldsClause . ")
VALUES(" . $queryValuesClause . ")";
$query = $wpdb->prepare($query, $queryArgs);
$result = $wpdb->query($query);
if($result)
return $wpdb->insert_id;
else
false;
}
public static function Update(TT_Event_Hour $eventHour)
{
global $wpdb;
$query = '';
$querySetClause = array();
$queryArgs = array();
if($eventHour->event_id>0)
{
$querySetClause[] = "event_id = %s";
$queryArgs[] = $eventHour->event_id;
}
if($eventHour->weekday_id>0)
{
$querySetClause[] = "weekday_id = %s";
$queryArgs[] = $eventHour->weekday_id;
}
if($eventHour->start!='')
{
$querySetClause[] = "start = %s";
$queryArgs[] = $eventHour->start;
}
if($eventHour->end!='')
{
$querySetClause[] = "end = %s";
$queryArgs[] = $eventHour->end;
}
if($eventHour->tooltip!='')
{
$querySetClause[] = "tooltip = %s";
$queryArgs[] = $eventHour->tooltip;
}
if($eventHour->before_hour_text!='')
{
$querySetClause[] = "before_hour_text = %s";
$queryArgs[] = $eventHour->before_hour_text;
}
if($eventHour->after_hour_text!='')
{
$querySetClause[] = "after_hour_text = %s";
$queryArgs[] = $eventHour->after_hour_text;
}
if($eventHour->category!='')
{
$querySetClause[] = "category = %s";
$queryArgs[] = $eventHour->category;
}
if($eventHour->available_places>=0)
{
$querySetClause[] = "available_places = %s";
$queryArgs[] = $eventHour->available_places;
}
if($eventHour->slots_per_user>=0)
{
$querySetClause[] = "slots_per_user = %s";
$queryArgs[] = $eventHour->slots_per_user;
}
$querySetClause = implode(", ", $querySetClause);
$query .= "UPDATE `" . $wpdb->prefix . "event_hours`
SET " . $querySetClause . "
WHERE event_hours_id = %s";
$queryArgs[] = $eventHour->event_hours_id;
$query = $wpdb->prepare($query, $queryArgs);
$result = $wpdb->query($query);
return $result;
}
public static function Exists($Id)
{
global $wpdb;
$query = '';
$queryArgs = array();
$query .= "SELECT event_hours_id
FROM `" . $wpdb->prefix . "event_hours`
WHERE event_hours_id=%s ";
$queryArgs[] = $Id;
$query = $wpdb->prepare($query, $queryArgs);
$result = $wpdb->get_var($query);
return $result;
}
}