calendar.class.inc

来自「国外很不错的一个开源OA系统Group-Office」· INC 代码 · 共 2,387 行 · 第 1/5 页

INC
2,387
字号
	 	$sql = "DELETE FROM cal_views_calendars WHERE calendar_id='$calendar_id' AND view_id='$view_id'";	 	return $this->query($sql);	 }	 function remove_calendars_from_view($view_id)	 {	 	$sql = "DELETE FROM cal_views_calendars WHERE view_id='$view_id'";	 	return $this->query($sql);	 }	 function get_view_calendar($calendar_id, $view_id)	 {	 	$sql = "SELECT * FROM cal_views_calendars WHERE calendar_id='$calendar_id' AND view_id='$view_id'";	 	$this->query($sql);	 	if($this->next_record())	 	{	 		return $this->Record;	 	}	 	return false;	 }	 function get_view_by_name($user_id, $name)	 {	 	$sql = "SELECT * FROM cal_views WHERE user_id='$user_id' AND name='$name'";	 	$this->query($sql);	 	if($this->next_record())	 	{	 		return $this->Record;	 	}	 	return false;	 }	 function user_has_calendar($user_id)	 {	 	$sql = "SELECT id FROM cal_calendars WHERE user_id='$user_id'";	 	$this->query($sql);	 	return $this->next_record();	 }	 function add_participant($event_id, $name, $email, $user_id = 0)	 {	 	$id = $this->nextid("cal_participants");	 	if ($id > 0)	 	{	 		$sql = 	"INSERT INTO cal_participants (id, event_id, user_id, name, email) ".	 		"VALUES ('$id', '$event_id', '$user_id',  '$name', '$email')";	 		if ($this->query($sql))	 		{	 			return $id;	 		}else	 		{	 			return -1;	 		}	 	}else	 	{	 		return -1;	 	}	 }	 function delete_participant($event_id, $email)	 {	 	$sql = "DELETE FROM cal_participants WHERE event_id='$event_id' AND email='$email'";	 	return $this->query($sql);	 }	 function remove_participants($event_id)	 {	 	$sql = "DELETE FROM cal_participants WHERE event_id='$event_id'";	 	return $this->query($sql);	 }	 function is_participant($event_id, $email)	 {	 	$sql = "SELECT id FROM cal_participants WHERE event_id='$event_id' AND email='$email'";	 	$this->query($sql);	 	return $this->next_record();	 }	 function get_participants($event_id)	 {	 	$sql = "SELECT * FROM cal_participants WHERE event_id='$event_id' ORDER BY email ASC" ;	 	$this->query($sql);	 	return $this->num_rows();	 }	 function set_default_calendar($user_id, $calendar_id)	 {	 	$sql = "UPDATE cal_settings SET default_cal_id='$calendar_id' WHERE user_id='$user_id'";	 	return $this->query($sql);	 }	 function set_default_view($user_id, $calendar_id, $view_id, $merged_view = '')	 {	 	$sql = "UPDATE cal_settings SET default_cal_id='$calendar_id', default_view_id='$view_id' ";	 	if($merged_view != '')	 	{	 		$sql .= ",merged_view='$merged_view' ";	 	}	 	$sql .= "WHERE user_id='$user_id'";	 	return $this->query($sql);	 }	 function get_settings($user_id)	 {	 	$this->query("SELECT * FROM cal_settings WHERE user_id='$user_id'");	 	if ($this->next_record(MYSQL_ASSOC))	 	{	 		return $this->Record;	 	}else	 	{	 		$this->query("INSERT INTO cal_settings (user_id) VALUES ('$user_id')");	 		return $this->get_settings($user_id);	 	}	 }	 function update_settings($settings)	 {	 	if(!isset($settings['user_id']))	 	{	 		global $GO_SECURITY;	 		$settings['user_id'] = $GO_SECURITY->user_id;	 	}	 	return $this->update_row('cal_settings', 'user_id', $settings);	 }	 function add_calendar($user_id, $name, $start_hour, $end_hour, $background='FFFFCC',  $group_id=0, $time_interval=1800)	 {	 	global $GO_SECURITY;	 	$acl_read = $GO_SECURITY->get_new_acl('calendar read: '.$name, $user_id);	 	$acl_write = $GO_SECURITY->get_new_acl('calendar write: '.$name, $user_id);	 	if ($acl_read > 0 && $acl_write > 0)	 	{	 		$calendar_id = $this->nextid("cal_calendars");	 		if ($calendar_id > 0)	 		{	 			$sql  = "INSERT INTO cal_calendars (id, user_id, name, acl_read, acl_write, start_hour, end_hour, background, group_id, time_interval) ";	 			$sql .= "VALUES ('$calendar_id', '$user_id', '$name', '$acl_read', '$acl_write', '$start_hour', '$end_hour', '$background', '$group_id', '$time_interval')";	 			if ($this->query($sql))	 			{	 				$GO_SECURITY->add_user_to_acl($user_id,$acl_write);	 				return $calendar_id;	 			}	 		}else	 		{	 			$GO_SECURITY->delete_acl($acl_read);	 			$GO_SECURITY->delete_acl($acl_write);	 		}	 	}	 	return false;	 }	 function delete_calendar($calendar_id)	 {	 	global $GO_SECURITY;	 	$delete = new calendar;	 	if($calendar = $this->get_calendar($calendar_id))	 	{	 		$sql = "SELECT * FROM cal_events_calendars WHERE calendar_id='$calendar_id'";	 		$this->query($sql);	 		while ($this->next_record())	 		{	 			$sql = "SELECT * FROM cal_events_calendars WHERE event_id='".$this->f("event_id")." '";	 			$delete->query($sql);	 			if ($delete->num_rows() < 2)	 			{	 				$delete->delete_event($this->f('event_id'));	 			}	 		}	 		$sql = "DELETE FROM cal_events_calendars WHERE calendar_id='$calendar_id'";	 		$this->query($sql);	 		$sql = "DELETE FROM cal_views_calendars WHERE calendar_id='$calendar_id'";	 		$this->query($sql);	 		$sql= "DELETE FROM cal_calendars WHERE id='$calendar_id'";	 		$this->query($sql);	 		$GO_SECURITY->delete_acl($calendar['acl_read']);	 		$GO_SECURITY->delete_acl($calendar['acl_write']);	 		return true;	 	}	 	return false;	 }	 function update_calendar($calendar_id, $user_id,  $name, $start_hour, $end_hour, $background, $group_id=0, $time_interval=1800)	 {	 	$sql = "UPDATE cal_calendars SET background='$background', user_id='$user_id',".	 	"name='$name', start_hour='$start_hour', end_hour='$end_hour', group_id='$group_id', time_interval='$time_interval' WHERE id='$calendar_id'";	 	return $this->query($sql);	 }	 function get_calendar($calendar_id=0)	 {	 	if($calendar_id > 0)	 	{	 		$sql = "SELECT * FROM cal_calendars WHERE id='$calendar_id'";	 		$this->query($sql);	 		if ($this->next_record())	 		{	 			return $this->Record;	 		}else	 		{	 			return $this->get_calendar();	 		}	 	}else	 	{	 		global $GO_SECURITY;	 		$this->get_user_calendars($GO_SECURITY->user_id);	 		if ($this->next_record())	 		{	 			return $this->Record;	 		}else	 		{	 			global $GO_USERS;	 			$user = $GO_USERS->get_user($GO_SECURITY->user_id);	 			$calendar_name = format_name($user['last_name'], $user['first_name'], $user['middle_name'], 'last_name');	 			$new_calendar_name = $calendar_name;	 			$x = 1;	 			while($this->get_calendar_by_name(addslashes($new_calendar_name)))	 			{	 				$new_calendar_name = $calendar_name.' ('.$x.')';	 				$x++;	 			}	 			if (!$calendar_id = $this->add_calendar($GO_SECURITY->user_id, addslashes($new_calendar_name), 7, 20))	 			{	 				return false;	 			}else	 			{	 				return $this->get_calendar($calendar_id);	 			}	 		}	 	}	 }	 function get_calendar_by_name($name, $user_id=0)	 {	 	$sql = "SELECT * FROM cal_calendars WHERE name='$name'";	 	if($user_id>0)	 	{	 		$sql .= " AND user_id=$user_id";	 	}	 	$this->query($sql);	 	if ($this->next_record())	 	{	 		return $this->Record;	 	}else	 	{	 		return false;	 	}	 }	 function get_user_calendars($user_id, $group_id=-1)	 {	 	$sql = "SELECT * FROM cal_calendars WHERE user_id='$user_id'";	 	if($group_id>-1)	 	{	 		$sql .= " AND group_id=$group_id";	 	}	 	$sql .=" ORDER BY name ASC";	 	$this->query($sql);	 	return $this->num_rows();	 }	 function get_calendars($group_id=-1)	 {	 	$sql = "SELECT * FROM cal_calendars";	 	if($group_id>-1)	 	{	 		$sql .= " WHERE group_id='$group_id'";	 	}	 	$sql .= " ORDER BY name ASC";	 	$this->query($sql);	 	return $this->num_rows();	 }	 function get_authorized_calendars($user_id, $group_id=-1, $start=0, $offset=0)	 {	 	$sql = "SELECT DISTINCT cal_calendars. * ".	 	"FROM cal_calendars ".	 	"	INNER JOIN acl ON ( cal_calendars.acl_read = acl.acl_id ".	 	"OR cal_calendars.acl_write = acl.acl_id ) ".	 	"LEFT JOIN users_groups ON acl.group_id = users_groups.group_id ".	 	"WHERE (acl.user_id=$user_id ".	 	"OR users_groups.user_id=$user_id)";	 	if($group_id > -1)	 	{	 		$sql .= " AND cal_calendars.group_id='$group_id'";	 	}	 	$sql .= "	ORDER BY cal_calendars.name ASC";	 	$this->query($sql);	 	$count= $this->num_rows();	 	if($offset>0)	 	{	 		$sql .= " LIMIT $start, $offset";	 		$this->query($sql);	 	}	 	return $count;	 }	 function get_authorized_resources($user_id, $start=0, $offset=0)	 {	 	$sql = "SELECT DISTINCT cal_calendars . * ".	 	"FROM cal_calendars ".	 	"	INNER JOIN acl ON ( cal_calendars.acl_read = acl.acl_id ".	 	"OR cal_calendars.acl_write = acl.acl_id ) ".	 	"LEFT JOIN users_groups ON acl.group_id = users_groups.group_id ".	 	"WHERE (acl.user_id=$user_id ".	 	"OR users_groups.user_id=$user_id) AND cal_calendars.group_id!='1'";	 	$this->query($sql);	 	$count= $this->num_rows();	 	if($offset>0)	 	{	 		$sql .= " LIMIT $start, $offset";	 		$this->query($sql);	 	}	 	return $count;	 }	 function get_writable_calendars($user_id, $group_id=-1, $start=0, $offset=0)	 {	 	$sql = "SELECT DISTINCT cal_calendars . * ".	 	"FROM cal_calendars ".	 	"INNER JOIN acl ON cal_calendars.acl_write = acl.acl_id ".	 	"LEFT JOIN users_groups ON acl.group_id = users_groups.group_id ".	 	"WHERE (acl.user_id=$user_id ".	 	"OR users_groups.user_id=$user_id)";	 	if($group_id > -1)	 	{	 		$sql .= " AND cal_calendars.group_id='$group_id'";	 	}	 	$sql .= "	ORDER BY cal_calendars.name ASC";	 	$this->query($sql);	 	$count= $this->num_rows();	 	if($offset>0)	 	{	 		$sql .= " LIMIT $start, $offset";	 		$this->query($sql);	 	}	 	return $count;	 }	 function set_event_status($event_id, $status, $email)	 {	 	$sql = "UPDATE cal_participants SET status='$status' WHERE email='$email' AND event_id='$event_id'";	 	return $this->query($sql);	 }	 function get_event_status($event_id, $email)	 {	 	$sql = "SELECT status FROM cal_participants WHERE email='$email' AND event_id='$event_id'";	 	if($this->query($sql))	 	{	 		if($this->next_record())	 		{	 			return $this->f('status');	 		}	 	}	 	return false;	 }	 /*	  Times in GMT!	  */	  function add_event($event)	  {	  	unset($event['read_permission'], $event['write_permission']);	  	if (!isset($event['user_id']) || $event['user_id'] == 0) {	  		global $GO_SECURITY;	  		$event['user_id'] = $GO_SECURITY->user_id;	  	}	  	if(!isset($event['ctime']) || $event['ctime'] == 0)	  	{	  		$event['ctime']  =  get_gmt_time();	  	}	  	if(!isset($event['mtime']) || $event['mtime'] == 0)	  	{	  		$event['mtime']  =  $event['ctime'];	  	}	  	if(!isset($event['background']) || $event['background'] == '')	  	{	  		$event['background']  =  'FFFFCC';	  	}	  	if(!isset($event['todo']) || $event['todo'] != '1')	  	{	  		$event['todo']='0';	  	}	  	if(!isset($event['timezone']))	  	{	  		$event['timezone']=$_SESSION['GO_SESSION']['timezone'];	  	}	  	if(!isset($event['DST']))	  	{	  		$event['DST']=$_SESSION['GO_SESSION']['DST'];	  	}	  	if(!isset($event['status_id']))	  	{	  		$event['status_id'] = $event['todo'] == '1' ? 6 : 1;	  	}	  	if(!isset($event['link_id']))	  	{	  		global $GO_LINKS;	  		$event['link_id'] = $GO_LINKS->get_link_id();	  	}	  	if(!isset($event['start_time']))	  	{	  		$local_start_time = get_time();	  		$year = date('Y', $local_start_time );	  		$month = date('n', $local_start_time );	  		$day = date('j', $local_start_time );	  		$event['start_time'] = local_to_gmt_time(adodb_mktime(0,0,0,$month, $day, $year));	  		$event['all_day_event']='1';	  	}	  	if(!isset($event['end_time']) || $event['end_time']<$event['start_time'])	  	{	  		$event['end_time']=$event['start_time']+3600;	  	}	  	$event['id'] = $this->nextid("cal_events");	  	$exceptions = isset($event['exceptions']) ? $event['exceptions'] : array();	  	unset($event['exceptions']);	  	if ($event['id'] > 0 &&  $this->insert_row('cal_events', $event))	  	{	  		foreach($exceptions as $exception_time)	  		{	  			if($exception_time!==false)	  			{	  				$exception['event_id']=$event['id'];	  				$exception['time']=$exception_time;	  				$this->add_exception($exception);	  			}	  		}	  		return $event['id'];	  	}	  	return false;	  }	  function is_duplicate_event($event, $calendar_id)	  {	  	unset($event['exceptions']);	  	$record = array_map('addslashes', $event);	  	$sql = "SELECT id FROM cal_events INNER JOIN cal_events_calendars ON cal_events.id=cal_events_calendars.event_id WHERE ".	  	"name='".$record['name']."' AND ".	  	"start_time='".$record['start_time']."' AND ".	  	"end_time='".$record['end_time']."' AND ".	  	"calendar_id='".$calendar_id."' AND ".	  	"user_id='".$record['user_id']."'";

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?