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

📄 projects.class.inc

📁 groupoffice
💻 INC
📖 第 1 页 / 共 2 页
字号:
<?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 + -