⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calendar.class.inc

📁 groupoffice
💻 INC
📖 第 1 页 / 共 4 页
字号:
			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=1, $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_holidays 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=1, $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))				{					$feedback = '<p class="Error">'.$strSaveError.'</p>';				}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)	{		$sql = "SELECT * FROM cal_calendars WHERE user_id='$user_id' ORDER BY name ASC";		$this->query($sql);		return $this->num_rows();	}	function get_calendars($group_id=0)	{		$sql = "SELECT * FROM cal_calendars";		if($group_id>0)		{			$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=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 > 0)		{			$sql .= " AND cal_calendars.group_id='$group_id'";		}		$sql .= "	ORDER BY cal_calendars.name ASC";		$this->query($sql);		return $this->num_rows();	}		function get_authorized_resources($user_id)	{		$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);		return $this->num_rows();	}		function get_writable_calendars($user_id, $group_id=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 > 0)		{			$sql .= " AND cal_calendars.group_id='$group_id'";		}		$sql .= "	ORDER BY cal_calendars.name ASC";		$this->query($sql);		return $this->num_rows();	}	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)	{		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';		}				$event['id'] = $this->nextid("cal_events");				if ($event['id'] > 0 &&  $this->insert_row('cal_events', $event))		{			return $event['id'];		}		return false;	}		function update_event($event)	{			if(!isset($event['mtime']) || $event['mtime'] == 0)		{			$event['mtime']  = get_gmt_time();		}					if(isset($event['completion_time']) && $event['completion_time'] > 0 && $this->copy_completed($event['id']))		{			$event['repeat_type'] = REPEAT_NONE;			$event['repeat_end_time'] = 0;		}							return $this->update_row('cal_events', 'id', $event);	}			function clear_subscriptions($event_id)	{		$sql = "DELETE FROM cal_events_calendars WHERE event_id='$event_id'";		return $this->query($sql);	}	function subscribe_event($event_id, $calendar_id)	{		$sql = "INSERT INTO cal_events_calendars (calendar_id, event_id) VALUES ('$calendar_id','$event_id')";		return $this->query($sql);	}	function unsubscribe_event($event_id, $calendar_id)	{				$sql = "DELETE FROM cal_events_calendars WHERE calendar_id='$calendar_id' AND event_id='$event_id'";		return $this->query($sql);	}	function event_is_subscribed($event_id, $calendar_id)	{		$sql = "SELECT * FROM cal_events_calendars WHERE event_id='$event_id' AND calendar_id='$calendar_id'";		$this->query($sql);		return $this->next_record();	}	function get_event_subscribtions($event_id)	{		$sql = "SELECT * FROM cal_events_calendars WHERE event_id='$event_id'";		$this->query($sql);		return $this->num_rows();	}	function get_calendars_from_event($event_id)	{		$sql = "SELECT name FROM cal_calendars INNER JOIN cal_events_calendars ".		"ON cal_events_calendars.calendar_id=cal_calendars.id ".		"WHERE cal_events_calendars.event_id='$event_id'";		$this->query($sql);		return $this->num_rows();	}		function get_remind_time($user_id, $event_id)	{		$sql = "SELECT remind_time FROM cal_reminders WHERE event_id='$event_id' AND user_id='$user_id'";		$this->query($sql);		if($this->next_record())		{			return $this->f('remind_time');		}		return false;	}	function add_reminder($reminder)	{		return $this->insert_row('cal_reminders', $reminder);	}	function update_reminder($user_id, $event_id, $remind_time)	{		return $this->query("UPDATE cal_reminders SET remind_time='$remind_time',email_sent='0' WHERE user_id='$user_id' AND event_id='$event_id'");	}		function reminder_mail_sent($user_id, $event_id)	{		return $this->query("UPDATE cal_reminders SET email_sent='1' WHERE user_id='$user_id' AND event_id='$event_id'");	}	function delete_reminder($user_id, $event_id)	{		return $this->query("DELETE FROM cal_reminders WHERE user_id='$user_id' AND event_id='$event_id'");	}	/*	returns next starting time of an event in GMT timezone	*/		function get_next_recurrence_time($event_id, $gmt_time=0, $event='')	{		if ($event == '')		{			if(!$event = $this->get_event($event_id))			{				return false;			}		}		if ($gmt_time == 0)		{			$gmt_time = get_gmt_time();		}				if($gmt_time<0)		{			$gmt_time=0;		}						if ($event['repeat_forever'] == '0' && ($event['repeat_end_time'] < $gmt_time && $event['repeat_type'] != REPEAT_NONE))		{			return 0;		}		$duration = 0;//$event['end_time']-$event['start_time'];		if ($event['start_time'] > $gmt_time && $event['repeat_type'] != REPEAT_NONE)		{			$start_time = $event['start_time']-$duration;					}else		{			$start_time = $gmt_time;		}		$original_tzo = get_timezone_offset($event['start_time']);				$year = date('Y', $start_time);		$month = date('n', $start_time);		$day = date('j', $start_time);				$event['start_year'] = date('Y', $event['start_time']);		$event['start_month'] = date('n', $event['start_time']);		$event['start_day'] = date('j', $event['start_time']);		$event['start_hour'] = date('G', $event['start_time']);		$event['start_min'] = date('i', $event['start_time']);		$day_db_field[0] = 'sun';		$day_db_field[1] = 'mon';		$day_db_field[2] = 'tue';		$day_db_field[3] = 'wed';		$day_db_field[4] = 'thu';		$day_db_field[5] = 'fri';		$day_db_field[6] = 'sat';		switch($event['repeat_type'])		{			case REPEAT_NONE:				if($event['start_time'] > $gmt_time)				{					return $event['start_time'];				}else				{					return 0;				}			break;			case REPEAT_WEEKLY:			if ($event['repeat_every'] > 1)			{				$interval = $start_time - $event['start_time'];				$interval_weeks = floor($interval/604800);				$devided = $interval_weeks/$event['repeat_every'];				$rounded = ceil($devided);				$last_repeat_week = $event['repeat_every']*$rounded*604800;				$last_occurence_week = $event['start_time']+$last_repeat_week;

⌨️ 快捷键说明

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