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 + -
显示快捷键?