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

📄 projects.class.inc

📁 groupoffice
💻 INC
📖 第 1 页 / 共 2 页
字号:
		$projects->get_projects('name', 'ASC', $project_id);		while($projects->next_record())		{			$rel_projects = array_merge($rel_projects, $this->get_related_projects($projects->f('id')));		}		$rel_projects[] = $project_id;		return $rel_projects;	}		function get_total_hours($project_id)	{		$totals = array();		$sql = "SELECT user_id, start_time, end_time, break_time, ext_fee_value, ext_fee_time, int_fee_value, int_fee_time FROM pmHours WHERE project_id=$project_id";		$this->query($sql);		while($this->next_record())		{			if(!isset($totals[$this->f('user_id')]['time']))			{				$totals[$this->f('user_id')]['time'] =0;			}			if(!isset($totals[$this->f('user_id')]['int_fee']))			{				$totals[$this->f('user_id')]['int_fee'] =0;			}			if(!isset($totals[$this->f('user_id')]['ext_fee']))			{				$totals[$this->f('user_id')]['ext_fee'] =0;			}						$time = $this->f('end_time')-$this->f('start_time')-$this->f('break_time');			$totals[$this->f('user_id')]['time'] += $time;			$int_fee = $this->f('int_fee_time')> 0 ? ($this->f('int_fee_value')*$time/($this->f('int_fee_time')*60)) : 0;			$totals[$this->f('user_id')]['int_fee'] += $int_fee;			$ext_fee = $this->f('ext_fee_time')> 0 ? ($this->f('ext_fee_value')*$time/($this->f('ext_fee_time')*60)) : 0;			$totals[$this->f('user_id')]['ext_fee'] += $ext_fee;		}		return $totals;	}	function get_hours($start_time=0, $end_time=0, $user_id=0, $project_id=0, $links=array())	{			if ($start_time == 0 && $end_time == 0)		{			$sql = "SELECT pmHours.*, pmProjects.name, ".							"pmProjects.description, pmProjects.acl_read, pmProjects.acl_write ".							"FROM pmHours ".							"INNER JOIN pmProjects ON (pmProjects.id=pmHours.project_id)";			$where = false;		}else		{			$sql = "SELECT pmHours.*, pmProjects.name, ".				"pmProjects.description, pmProjects.acl_read, pmProjects.acl_write ".				"FROM pmHours INNER JOIN pmProjects ON (pmProjects.id=pmHours.project_id) ".				"WHERE ".				"pmHours.start_time >= '$start_time' AND pmHours.start_time < '$end_time'";							$where = true;		}		if ($user_id > 0)		{			if ($where)			{				$sql .= " AND";			}else			{				$sql .= " WHERE";				$where = true;			}			$sql .= " pmHours.user_id='$user_id'";		}				if ($project_id > 0)		{			if ($where)			{				$sql .= " AND";			}else			{				$sql .= " WHERE";				$where = true;			}			$sql .= " pmHours.project_id='$project_id'";		}		if (is_array($links))    {    	if(!count($links))    	{    		return 0;			}						if ($where)			{				$sql .= " AND";			}else			{				$sql .= " WHERE";				$where = true;			}      $sql .= " link_id IN (".implode(',', $links).")";    }		$sql .= " ORDER BY pmHours.start_time ASC";		$this->query($sql);		return $this->num_rows();	}	function delete_hours($hours_id)	{		if ($hours_id > 0)		{			$sql = "DELETE FROM pmHours WHERE id='$hours_id'";			return $this->query($sql);		}else		{			return false;		}	}	function get_project_hours($project_id, $start_time=0, $end_time=0)	{		if ($start_time == 0 && $end_time == 0)		{			$sql = "SELECT pmHours.*, pmFees.value AS fee_value, pmFees.time AS fee_time FROM pmHours INNER JOIN pmProjects ON (pmProjects.id=pmHours.project_id) LEFT JOIN pmFees ON (pmFees.id=pmProjects.fee_id) WHERE pmHours.project_id='$project_id' ORDER BY pmHours.start_time ASC";		}else		{			$sql = "SELECT pmHours.*, pmFees.value AS fee_value, pmFees.time AS fee_time FROM pmHours INNER JOIN pmProjects ON (pmProjects.id=pmHours.project_id) LEFT JOIN pmFees ON (pmFees.id=pmProjects.fee_id)  WHERE pmHours.project_id='$project_id' AND pmHours.start_time >= '$start_time' AND pmHours.start_time < '$end_time' ORDER BY pmHours.start_time ASC";		}		$this->query($sql);		return $this->num_rows();	}	function get_user_hours($user_id, $start_time=0, $end_time=0)	{		if ($start_time == 0 && $end_time == 0)		{			$sql = "SELECT pmHours.*, pmFees.value AS fee_value, pmFees.time AS fee_time, pmProjects.name AS project_name FROM pmHours LEFT JOIN pmProjects ON (pmHours.project_id = pmProjects.id) LEFT JOIN pmFees ON (pmFees.id=pmHours.fee_id)  WHERE pmHours.user_id='$user_id' ORDER BY start_time ASC";		}else		{			$sql = "SELECT pmHours.*, pmFees.value AS fee_value, pmFees.time AS fee_time, pmProjects.name AS project_name FROM pmHours LEFT JOIN pmProjects ON (pmHours.project_id = pmProjects.id) LEFT JOIN pmFees ON (pmFees.id=pmHours.fee_id)  WHERE pmHours.user_id='$user_id' AND pmHours.start_time >= '$start_time' AND pmHours.start_time < '$end_time' ORDER BY pmHours.start_time ASC";		}		$this->query($sql);		return $this->num_rows();	}	function get_fees()	{		$sql = "SELECT * FROM pmFees";		$this->query($sql);		return $this->num_rows();	}		function get_authorized_fees($user_id)	{		$sql = "SELECT DISTINCT pmFees.* ".				"FROM pmFees ".				"INNER JOIN acl ON pmFees.acl_id = 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_fee($fee_id)	{		$sql = "SELECT * FROM pmFees WHERE id='$fee_id'";		$this->query($sql);		if ($this->next_record())		{			return $this->Record;		}else		{			return false;		}	}	function add_fee($fee)	{		$fee['id'] = $this->nextid("pmFees");		if ($fee['id']  > 0 && $this->insert_row('pmFees', $fee))		{			return $fee['id'];		}		return false;	}	function delete_fee($fee_id)	{		if($fee = $this->get_fee($fee_id))		{			global $GO_SECURITY;			$GO_SECURITY->delete_acl($fee['acl_read']);			$GO_SECURITY->delete_acl($fee['acl_write']);						$sql = "DELETE FROM pmFees WHERE id='$fee_id'";			return $this->query($sql);		}		return false;	}	function update_fee($fee)	{		return $this->update_row('pmFees','id', $fee);	}		function copy_project($project_id)	{		global $GO_SECURITY;				if($src_project = $dst_project = $this->get_project($project_id))		{			unset($dst_project['id']);						$dst_project['name'].' ('.$GLOBALS['strCopy'].')';      $x = 1;      while($this->get_project_by_name($dst_project['name']))      {				$dst_project['name'] = $src_project['name'].' ('.$GLOBALS['strCopy'].' '.$x.')';        $x++;      }						$dst_project['acl_read'] = $GO_SECURITY->get_new_acl('project read');			$dst_project['acl_write'] = $GO_SECURITY->get_new_acl('project write');						$GO_SECURITY->copy_acl($src_project['acl_read'], $dst_project['acl_read']);			$GO_SECURITY->copy_acl($src_project['acl_write'], $dst_project['acl_write']);						$dst_project = array_map('addslashes', $dst_project);						return $this->_add_project($dst_project);		}		return false;	}				function add_template($template)	{		$template['id'] = $this->nextid("pm_templates");		if ($template['id'] > 0 && $this->insert_row('pm_templates', $template))		{			return $template['id'];			}		return false;	}		function update_template($template)	{		return $this->update_row('pm_templates','id', $template);	}	function get_template($template_id)	{		$sql = "SELECT * FROM pm_templates WHERE id='$template_id'";		$this->query($sql);		if ($this->next_record(MYSQL_ASSOC))		{			return $this->Record;		}else		{			return false;		}	}	function get_template_by_name($name)	{		$sql = "SELECT * FROM pm_templates WHERE name='$name'";		$this->query($sql);		if ($this->next_record())		{			return $this->Record;		}else		{			return false;		}	}	function delete_template($template_id)	{		global $GO_SECURITY;				if($template = $this->get_template($template_id))		{			$GO_SECURITY->delete_acl($template['acl_read']);			$GO_SECURITY->delete_acl($template['acl_write']);						$sql = "DELETE FROM pm_template_events WHERE template_id='$template_id'";			if ($this->query($sql))			{				$sql = "DELETE FROM pm_templates WHERE id='$template_id'";				return $this->query($sql);			}		}		return false;	}		function get_authorized_templates($user_id)	{				$sql = "SELECT DISTINCT pm_templates.* ".				"FROM pm_templates ".				"INNER JOIN acl ON pm_templates.acl_write = acl.acl_id OR pm_templates.acl_read=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 add_template_event($event)	{		$event['id'] = $this->nextid("pm_template_events");		if ($event['id'] > 0 && $this->insert_row('pm_template_events', $event))		{			return $event['id'];			}		return false;	}		function update_template_event($event)	{		return $this->update_row('pm_template_events','id', $event);	}		function get_template_event($template_event_id)	{		$sql = "SELECT * FROM pm_template_events WHERE id='$template_event_id'";		$this->query($sql);		if ($this->next_record(MYSQL_ASSOC))		{			return $this->Record;		}else		{			return false;		}	}			function delete_template_event($template_event_id)	{		return $this->query("DELETE FROM pm_template_events WHERE id='$template_event_id'");	}		function get_template_events($template_id)	{		$sql = "SELECT * FROM pm_template_events WHERE template_id='$template_id' ORDER BY time_offset ASC";		$this->query($sql);		return $this->num_rows();	}		function apply_template($template_id, $project_id, $calendar_id)	{		global $GO_MODULES, $GO_SECURITY, $GO_USERS, $GO_CONFIG, $GO_LINKS;				require_once($GO_MODULES->modules['calendar']['class_path'].'calendar.class.inc');		$cal = new calendar();				$project = $this->get_project($project_id);		if($project)		{					if(empty($project['link_id']))			{				$update_project['id'] = $project_id;				$update_project['link_id'] = $project['link_id'] = $GO_LINKS->get_link_id();				$this->update_project($update_project);			}					$this->get_template_events($template_id);			while($this->next_record(MYSQL_ASSOC))			{				$event = $this->Record;				$event['link_id']= $GO_LINKS->get_link_id();				$event['start_time']		= get_gmt_time($project['start_date']+$event['time_offset']);				$event['end_time'] = $event['start_time']+$event['duration'];				unset($event['duration'], $event['time_offset'], $event['template_id'], $event['id']);								$event['acl_read'] = $GO_SECURITY->get_new_acl('Project event');				$event['acl_write'] = $GO_SECURITY->get_new_acl('Project event');								$GO_SECURITY->add_user_to_acl($GO_SECURITY->user_id, $event['acl_write']);				$GO_SECURITY->add_group_to_acl($GO_CONFIG->group_everyone, $event['acl_read']);								$event_id = $cal->add_event($event);												$cal->subscribe_event($event_id, $calendar_id);								$calendar = $cal->get_calendar($calendar_id);				if ($calendar && $event['reminder'] > 0 && $next_recurrence_time = $cal->get_next_recurrence_time($event_id)) {					$remind_time = $next_recurrence_time - $event['reminder'];										$reminder['user_id'] = $cal->f('user_id');					$reminder['event_id'] = $event_id;					$reminder['remind_time'] = $remind_time;					$reminder['occurence_time'] = $next_recurrence_time;												$cal->add_reminder($reminder);				}								$GO_LINKS->add_link($event['link_id'],1, $project['link_id'], 5);			}			return true;		}		return false;	}		function delete_user($user_id)	{		$projects = new projects();		$this->get_user_projects($user_id);		while($this->next_record())		{			$projects->delete_project($this->f('id'));		}				$this->query("DELETE FROM pm_settings WHERE user_id='$user_id'");	}	}?>

⌨️ 快捷键说明

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