📄 projects.class.inc
字号:
<?php/** * @copyright Intermesh 2003 * @author Merijn Schering <mschering@intermesh.nl> * @version $Revision: 1.41 $ $Date: 2006/04/10 13:21:11 $ * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */
class projects extends db{ function projects() { $this->db(); } function get_project_users() { $users = array(); $sql = "SELECT DISTINCT pmHours.user_id FROM pmHours"; $this->query($sql); while($this->next_record()) { $users[]=$this->f('user_id'); } return $users; } function get_settings($user_id) { $this->query("SELECT * FROM pm_settings WHERE user_id='$user_id'"); if ($this->next_record()) { return $this->Record; }else { $this->query("INSERT INTO pm_settings ". "(user_id, show_projects) VALUES ". "('$user_id', '1')"); return $this->get_settings($user_id); } } function get_statuses() { $sql = "SELECT * FROM pmStatuses ORDER BY id ASC"; $this->query($sql); return $this->num_rows(); } function get_status($status_id) { $sql = "SELECT * FROM pmStatuses WHERE id='$status_id'"; $this->query($sql); if($this->next_record()) { return $this->Record; } return false; } function set_sorting($user_id, $sort_field, $sort_order) { $sql = "UPDATE pm_settings SET sort_field='$sort_field' , ". "sort_order='$sort_order' WHERE user_id='$user_id'"; return $this->query($sql); } function set_show_projects($user_id, $show_projects) { $sql = "UPDATE pm_settings SET show_projects='$show_projects' WHERE user_id='$user_id'"; return $this->query($sql); } function set_registration_method($user_id, $registration_method, $unit_value=false, $int_fee_value=false, $int_fee_time=false, $ext_fee_value=false, $ext_fee_time=false) { $sql = "UPDATE pm_settings SET registration_method='$registration_method'"; if($unit_value !==false) { $sql .= ", unit_value='$unit_value'"; } if($int_fee_value !== false) { $sql .= ", int_fee_value='$int_fee_value', int_fee_time='$int_fee_time'"; $sql .= ", ext_fee_value='$ext_fee_value', ext_fee_time='$ext_fee_time'"; } $sql .= " WHERE user_id='$user_id'"; return $this->query($sql); } function start_timer($user_id, $project_id) { $sql = "INSERT INTO pmTimers (user_id, start_time, project_id) ". "VALUES ('$user_id', '".get_gmt_time()."', '$project_id')"; return $this->query($sql); } function stop_timer($user_id) { $sql = "DELETE FROM pmTimers WHERE user_id='$user_id'"; return $this->query($sql); } function get_timer($user_id) { $sql = "SELECT start_time, project_id FROM pmTimers WHERE user_id='$user_id'"; $this->query($sql); if($this->next_record()) { return $this->Record; } return false; } function _add_project($project) { $project['id'] = $this->nextid('pmProjects'); if($project['id']>0) { $this->insert_row('pmProjects', $project); return $project['id']; } return false; } function _update_project($project) { return $this->update_row('pmProjects', 'id', $project); } function add_project($project) { $project['id'] = $this->nextid("pmProjects"); $project['ctime'] = $project['mtime'] = get_gmt_time(); if ($project['id'] > 0 && $this->insert_row('pmProjects', $project)) { return $project['id']; } return false; } function update_project($project, $shift_events=false) { if($shift_events) { global $GO_MODULES; $old_project = $this->get_project($project['id']); $offset = $project['start_date'] - $old_project['start_date']; require_once($GO_MODULES->modules['calendar']['class_path'].'calendar.class.inc'); $cal = new calendar(); $cal2 = new calendar(); $cal->get_events(1, 1, 1, 0, 0, 0, 0, 0, $project['id'], 0, 0); while($cal->next_record()) { $event['id'] = $cal->f('id'); $event['start_time'] = $cal->f('start_time') + $offset; $event['end_time'] = $cal->f('end_time') + $offset; $event['repeat_end_time'] = $cal->f('repeat_end_time') + $offset; $cal2->update_event($event); } } $project['mtime'] = get_gmt_time(); return $this->update_row('pmProjects','id', $project); } function get_project($project_id) { $sql = "SELECT * FROM pmProjects WHERE id='$project_id'"; $this->query($sql); if ($this->next_record(MYSQL_ASSOC)) { return $this->Record; }else { return false; } } function get_project_by_name($name) { $sql = "SELECT * FROM pmProjects WHERE name='$name'"; $this->query($sql); if ($this->next_record()) { return $this->Record; }else { return false; } } function delete_project($project_id) { global $GO_SECURITY, $GO_CONFIG; require_once($GO_CONFIG->class_path.'filesystem.class.inc'); $fs = new filesystem(true); if($project = $this->get_project($project_id)) { $fs->delete($GO_CONFIG->file_storage_path.'projects/'.$project_id); $GO_SECURITY->delete_acl($project['acl_read']); $GO_SECURITY->delete_acl($project['acl_write']); $sql = "DELETE FROM pmHours WHERE project_id='$project_id'"; if ($this->query($sql)) { $sql = "DELETE FROM pmProjects WHERE id='$project_id'"; return $this->query($sql); } } return false; } function get_projects($sort='name', $direction='ASC', $project_id=0) { $sql = "SELECT * FROM pmProjects"; if($project_id > 0) { $sql .= " WHERE project_id='$project_id'"; } $sql .= " ORDER BY $sort $direction"; $this->query($sql); return $this->num_rows(); } function get_projects_for_period($user_id, $start_time, $end_time) { $sql = "SELECT DISTINCT pmProjects.*, pmStatuses.name AS status_name FROM pmProjects ". "INNER JOIN pmStatuses ON pmStatuses.id=pmProjects.status ". "INNER JOIN acl ON (pmProjects.acl_read = acl.acl_id OR pmProjects.acl_write = acl.acl_id) ". "LEFT JOIN users_groups ON (acl.group_id = users_groups.group_id) WHERE ((". "users_groups.user_id = ".$user_id.") OR (". "acl.user_id = ".$user_id.")) AND pmProjects.start_date<$end_time AND pmProjects.end_date>$start_time"; $this->query($sql); return $this->num_rows(); } function get_authorized_projects($user_id, $links=false, $sort='name', $direction='ASC', $start=0, $offset=0, $filter='', $search_field='', $search_keyword='', $start_time=0, $end_time=0) { $sql = "SELECT DISTINCT pmProjects.*, pmStatuses.name AS status_name FROM pmProjects ". "LEFT JOIN pmStatuses ON pmStatuses.id=pmProjects.status ". "INNER JOIN acl ON (pmProjects.acl_read = acl.acl_id OR pmProjects.acl_write = acl.acl_id) ". "LEFT JOIN users_groups ON (acl.group_id = users_groups.group_id) WHERE ((". "users_groups.user_id = ".$user_id.") OR (". "acl.user_id = ".$user_id."))"; if ($filter != '') { if ($filter == '0') { $sql .= " AND status > -1 AND status < 100"; }else { $sql .= " AND status='$filter'"; } } if (is_array($links)) { if(!count($links)) { return 0; } $sql .= " AND link_id IN (".implode(',', $links).")"; } if($search_field != '' && $search_keyword != '') { $sql .= " AND $search_field LIKE '$search_keyword'"; } if($start_time>0) { $sql .= " AND start_date>=$start_time"; } if($end_time>0) { $sql .= " AND end_date<$end_time"; } $sql .= " GROUP BY pmProjects.id ORDER BY $sort $direction"; if ($offset > 0) { $sql2 = $sql ." LIMIT $start, $offset"; $this->query($sql); $count = $this->num_rows(); if ($count > 0) { $this->query($sql2); } return $count; }else { $this->query($sql); return $this->num_rows(); } } function get_writable_projects($user_id) { /*$sql = "SELECT DISTINCT pmProjects.* FROM pmProjects, acl, users_groups WHERE (". "pmProjects.acl_write = acl.acl_id". ") AND ( ( acl.group_id = users_groups.group_id AND users_groups.user_id = ".$user_id." AND acl.user_id = 0 ) OR (". "acl.group_id = 0 AND acl.user_id = ".$user_id." ))";*/ $sql = "SELECT DISTINCT pmProjects.* ". "FROM pmProjects ". "INNER JOIN acl ON pmProjects.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"; $this->query($sql); return $this->num_rows(); } function get_user_projects($user_id) { $this->query("SELECT * FROM pmProjects WHERE user_id='$user_id'"); return $this->num_rows(); } function get_client_projects($contact_id) { $this->query("SELECT * FROM pmProjects WHERE contact_id='$contact_id'"); return $this->num_rows(); } function add_booking($project_id, $user_id, $start_time, $end_time, $break_time, $unit_value, $comments, $int_fee_value, $int_fee_time, $ext_fee_value, $ext_fee_time) { $id = $this->nextid("pmHours"); if ($id > 0) { $sql = "INSERT INTO pmHours (id, user_id, project_id, start_time, end_time, ". "break_time, unit_value, comments, int_fee_value, int_fee_time, ext_fee_value, ". "ext_fee_time) ". "VALUES ('$id', '$user_id', '$project_id', '$start_time', '$end_time', '$break_time', ". "'$unit_value', '$comments', '".$int_fee_value."', '".$int_fee_time."', '". $ext_fee_value."', '".$ext_fee_time."')"; return $this->query($sql); } return false; } function update_booking($booking_id, $project_id, $user_id, $start_time, $end_time, $break_time, $unit_value, $comments, $int_fee_value, $int_fee_time, $ext_fee_value, $ext_fee_time) { $sql = "UPDATE pmHours SET user_id='$user_id', project_id='$project_id', ". "start_time='$start_time', end_time='$end_time', break_time='$break_time'". ", unit_value='$unit_value', comments='$comments' , ". "int_fee_value='".$int_fee_value."', int_fee_time='".$int_fee_time."', ". "ext_fee_value='".$ext_fee_value."', ext_fee_time='".$ext_fee_time."' ". "WHERE id='$booking_id'"; return $this->query($sql); } function get_booking($booking_id) { $sql = "SELECT * FROM pmHours WHERE id='$booking_id'"; $this->query($sql); if($this->next_record()) { return $this->Record; } return false; } function get_working_hours($working_hours_id) { $sql = "SELECT * FROM pmHours WHERE id='$working_hours_id'"; $this->query($sql); if ($this->next_record()) { return $this->Record; } return false; } function check_hours($user_id, $start_time, $end_time) { $sql = "SELECT id FROM pmHours WHERE user_id='$user_id' AND (". "(start_time <= '$start_time' AND end_time > '$start_time') OR ". "(start_time < '$end_time' AND end_time > '$end_time'))"; $this->query($sql); if ($this->next_record()) { return $this->f('id'); } return false; } function get_related_projects($project_id) { $rel_projects = array(); $projects = new projects();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -