亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? projecttask.class

?? GForge 3.0 協作開發平臺 支持CVS, mailing lists, bug tracking, message boards/forums, task management, perman
?? CLASS
?? 第 1 頁 / 共 2 頁
字號:
		$project_task_id=$this->getID();		$perm =& $this->ProjectGroup->Group->getPermission( session_get_user() );		if (!$perm || !is_object($perm) || !$perm->isPMAdmin()) {			$this->setPermissionDeniedError();			return false;		}	}*/	/**	 *	getOtherTasks - Return a result set of tasks in this subproject that do not equal	 *	the current task_id.	 *	 *	@returns Database result set.	 */	function getOtherTasks () {		//		//	May not yet have an ID, if we are creating a NEW task		//		if ($this->getID()) {			$addstr=" AND project_task_id <> '". $this->getID() ."' ";		}		$sql="SELECT project_task_id,summary 		FROM project_task 		WHERE group_project_id='". $this->ProjectGroup->getID() ."' 		$addstr ORDER BY project_task_id DESC";		return db_query($sql);	}	/**	 *  getHistory - returns a result set of audit trail for this ProjectTask.	 *	 *  @return database result set.	 */	function getHistory() {		$sql="SELECT * 		FROM project_history_user_vw 		WHERE project_task_id='". $this->getID() ."' 		ORDER BY mod_date DESC";		return db_query($sql);	}	/**	 *  getMessages - get the list of messages attached to this ProjectTask.	 *	 *  @return database result set.	 */	function getMessages() {		$sql="select * 			FROM project_message_user_vw 			WHERE project_task_id='". $this->getID() ."' ORDER BY postdate DESC";		return db_query($sql);	}	/**	 * addMessage - Handle the addition of a followup message to this task.	 *	 * @param	   string  The message.	 * @returns	boolean	success.	 */	function addMessage($message) {		$sql="INSERT INTO project_messages (project_task_id,body,posted_by,postdate) 			VALUES ('". $this->getID() ."','". htmlspecialchars($message) ."','".user_getid()."','". time() ."')";		$res=db_query($sql);		if (!$res || db_affected_rows($res) < 1) {			$this->setError('AddMessage():: '.db_error());			return false;		} else {			return true;		}	}	/**	 * addHistory - Handle the insertion of history for these parameters.	 *	 * @param	string  The field name.	 * @param	string  The old value.	 * @returns	boolean	success.	 */	function addHistory ($field_name,$old_value) {		$sql="insert into project_history(project_task_id,field_name,old_value,mod_by,mod_date) 			VALUES ('". $this->getID() ."','$field_name','$old_value','".user_getid()."','".time()."')";		$result=db_query($sql);		if (!$result) {			$this->setError('ERROR IN AUDIT TRAIL - '.db_error());			return false;		} else {			return true;		}	}	/**	 * checkCircular - recursive function calls itself to look at all tasks you are dependent on.	 *	 * @param	int	The project_task_id you are dependent on.	 * @param	int	The project_task_id you are checking circular dependencies for.	 * @returns	boolean	success.	 */	function checkCircular($depend_on_id, $original_id) {		global $Language;		if ($depend_on_id == $original_id) {			$this->setError($Language->getText('pm_projecttask','circular_dependency'));	 		return false;		}		$res=db_query("SELECT is_dependent_on_task_id AS id 			FROM project_dependencies 			WHERE project_task_id='$depend_on_id'");		$rows=db_numrows($res);		for ($i=0; $i<$rows; $i++) {			if (!$this->checkCircular(db_result($res,$i,'id'), $original_id)) {				return false;			}		}		return true;	}	/**	 * setDependentOn - takes an array of project_task_id's and builds dependencies.	 *	 * @param	array	The array of project_task_id's.	 * @returns	boolean	success.	 */	function setDependentOn(&$arr) {////	IMPORTANT - MUST VERIFY NO CIRCULAR DEPENDENCY!! //		//get existing dependencies to diff against		$arr2 =& $this->getDependentOn();		$this->dependon =& $arr2;		if (count($arr) || count($arr2)) {			$add_arr = array_diff ($arr, $arr2);			$del_arr = array_diff ($arr2, $arr);			for ($i=0; $i<count($del_arr); $i++) {				db_query("DELETE FROM project_dependencies 					WHERE project_task_id='".$this->getID()."'					AND is_dependent_on_task_id='". $del_arr[$i] ."'");				if (db_error()) {					$this->setError('setDependentOn()-1:: '.db_error());					return false;				}			}			for ($i=0; $i<count($add_arr); $i++) {				//				//	Check task for circular dependencies				//				if (!$this->checkCircular($add_arr[$i],$this->getID())) {					return false;				}				db_query("INSERT INTO project_dependencies (project_task_id,is_dependent_on_task_id) 					VALUES ('".$this->getID()."','". $add_arr[$i] ."')");				if (db_error()) {					$this->setError('setDependentOn()-2:: '.db_error());					return false;				}			}			return true;		} else {			return true;		}	}	/**	 *	getDependentOn - get an array of project_task_id's that you are dependent on.	 *	 *	@return	array	The array of project_task_id's.	 */	function &getDependentOn() {		if (!$this->getID()) {			return array();		}		if (!$this->dependon) {			$this->dependon =& util_result_column_to_array(db_query("SELECT is_dependent_on_task_id 				FROM project_dependencies 				WHERE project_task_id='".$this->getID()."'"));		}		return $this->dependon;	}	/**	 * setAssignedTo - takes an array of user_id's and builds assignments.	 *	 * @param	array	The array of user_id's.	 * @returns	boolean	success.	 */	function setAssignedTo(&$arr) {		$arr2 =& $this->getAssignedTo();		$this->assignedto =& $arr2;		//If no one is assigned, then assign it to "100" - NOBODY		if (count($arr) < 1 || ((count($arr)==1) && ($arr[0]==''))) {			$arr=array('100');		}		if (count($arr) || count($arr2)) {			$add_arr = array_diff ($arr, $arr2);			$del_arr = array_diff ($arr2, $arr);			for ($i=0; $i<count($del_arr); $i++) {				db_query("DELETE FROM project_assigned_to					WHERE project_task_id='".$this->getID()."'					AND assigned_to_id='". $del_arr[$i] ."'");				if (db_error()) {					$this->setError('setAssignedTo()-1:: '.db_error());					return false;				}			}			for ($i=0; $i<count($add_arr); $i++) {				db_query("INSERT INTO project_assigned_to (project_task_id,assigned_to_id) 					VALUES ('".$this->getID()."','". $add_arr[$i] ."')");				if (db_error()) {					$this->setError('setAssignedTo()-2:: '.db_error());					return false;				}			}			return true;		} else {			return true;		}	}	/**	 *	getAssignedTo - get an array of user_id's that you are assigned to.	 *	 *	@return	array	The array of user_id's.	 */	function &getAssignedTo() {		if (!$this->getID()) {			return array();		}		if (!$this->assignedto) {			$this->assignedto =& util_result_column_to_array(db_query("SELECT assigned_to_id 				FROM project_assigned_to 				WHERE project_task_id='".$this->getID()."'"));		}		return $this->assignedto;	}	/**	 *	update - update this ProjectTask in the database.	 *	 *	@param	string	The summary of this task.	 *	@param	string	The detailed description of this task.	 *	@param	int	The Priority of this task.	 *	@param	int	The Hours estimated to complete this task.	 *	@param	int	The (unix) start date of this task.	 *	@param	int	The (unix) end date of this task.	 *	@param	int	The status_id of this task.	 *	@param	int	The category_id of this task.	 *	@param	int	The percentage of completion in integer format of this task.	 *	@param	array	An array of user_id's that are assigned this task.	 *	@param	array	An array of project_task_id's that this task depends on.	 *	@return	boolean success.	 */	function update($summary,$details,$priority,$hours,$start_date,$end_date,		$status_id,$category_id,$percent_complete,&$assigned_arr,&$depend_arr) {                $v = new Validator();                $v->check($summary, "summary");                $v->check($priority, "priority");                $v->check($hours, "hours");                $v->check($start_date, "start date");                $v->check($end_date, "end date");                $v->check($status_id, "status");                $v->check($category_id, "category");                if (!$v->isClean()) {                        $this->setError($v->formErrorMsg("Must include "));                        return false;                }		$perm =& $this->ProjectGroup->Group->getPermission( session_get_user() );		if (!$perm || !is_object($perm) || !$perm->isPMAdmin()) {			$this->setPermissionDeniedError();			return false;		}		db_begin();		if ($details) {			if (!$this->addMessage($details)) {				db_rollback();				return false;			}		}		if ($this->getStatusID() != $status_id)			{ $this->addHistory ('status_id',$this->getStatusID());  }		if ($this->getCategoryID() != $category_id)			{ $this->addHistory ('category_id',$this->getCategoryID());  }		if ($this->getPriority() != $priority)			{ $this->addHistory ('priority',$this->getPriority());  }		if ($this->getSummary() != htmlspecialchars(stripslashes($summary)))			{ $this->addHistory ('summary',addslashes($this->getSummary()));  }		if ($this->getPercentComplete() != $percent_complete)			{ $this->addHistory ('percent_complete',$this->getPercentComplete()); }		if ($this->getHours() != $hours)			{ $this->addHistory ('hours',$this->getHours());  }		if ($this->getStartDate() != $start_date)			{ $this->addHistory ('start_date',$this->getStartDate());  }		if ($this->getEndDate() != $end_date)			{ $this->addHistory ('end_date',$this->getEndDate());  }		if (!$this->setDependentOn($depend_arr)) {			db_rollback();			return false;		} elseif (!$this->setAssignedTo($assigned_arr)) {			db_rollback();			return false;		} else {			$sql="UPDATE project_task SET				summary='".htmlspecialchars($summary)."',				priority='$priority',				hours='$hours',				start_date='$start_date',				end_date='$end_date',				status_id='$status_id',				percent_complete='$percent_complete',				category_id='$category_id'				WHERE group_project_id='".$this->ProjectGroup->getID()."'				AND project_task_id='".$this->getID()."'";			$res=db_query($sql);			if (!$res || db_affected_rows($res) < 1) {				$this->setError('Error On Update: '.db_error());				db_rollback();				return false;			} else {				if (!$this->fetchData($this->getID())) {					return false;				} else {					$this->sendNotice();					db_commit();					return true;				}			}		}	}	/**	 *	sendNotice - contains the logic for sending email/jabber updates.	 *	 *	@return	boolean	success.	 */	function sendNotice($first=false) {		$ids =& $this->getAssignedTo();		//		//	See if there is anyone to send messages to		//		if (count($ids) < 1 && !$this->ProjectGroup->getSendAllPostsTo()) {			return true;		}		$body = "Task #". $this->getID() ." has been updated. ".			"\n\nProject: ". $this->ProjectGroup->Group->getPublicName() .			"\nSubproject: ". $this->ProjectGroup->getName() .			"\nSummary: ".util_unconvert_htmlspecialchars( $this->getSummary() ).			"\nComplete: ". $this->getPercentComplete() ."%".			"\nStatus: ". $this->getStatusName() .			"\n\nDescription: ". util_unconvert_htmlspecialchars( $this->getDetails() );		/*			Now get the followups to this task		*/		$result2=$this->getMessages();		$rows=db_numrows($result2);		if ($result2 && $rows > 0) {			$body .= "\n\nFollow-Ups:";			for ($i=0; $i<$rows;$i++) {				$body .= "\n\n-------------------------------------------------------";				$body .= "\nDate: ". date($GLOBALS['sys_datefmt'],db_result($result2,$i,'postdate'));				$body .= "\nBy: ".db_result($result2,$i,'user_name');				$body .= "\n\nComment:\n".util_unconvert_htmlspecialchars(db_result($result2,$i,'body'));			}		}		$body .= "\n\n-------------------------------------------------------".			"\nFor more info, visit:".			"\n\nhttp://$GLOBALS[sys_default_domain]/pm/task.php?func=detailtask&project_task_id=".				$this->getID() ."&group_id=".				$this->ProjectGroup->Group->getID() ."&group_project_id=". $this->ProjectGroup->getID();		$subject="[Task #". $this->getID() .'] '.			util_unconvert_htmlspecialchars( $this->getSummary() );		util_handle_message(array_unique($ids),$subject,$body,$this->ProjectGroup->getSendAllPostsTo());		return true;	}}?>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人bangbros| 亚洲综合成人网| 亚洲欧美日韩久久| 青草国产精品久久久久久| 丰满亚洲少妇av| 7777女厕盗摄久久久| 伊人婷婷欧美激情| 国产风韵犹存在线视精品| 9191久久久久久久久久久| 日韩理论片一区二区| 国产乱淫av一区二区三区| 3d动漫精品啪啪一区二区竹菊 | 亚洲一区在线电影| 国产乱理伦片在线观看夜一区| 欧美日韩精品专区| 国产精品传媒视频| 国产一区中文字幕| 日韩视频在线一区二区| 婷婷中文字幕综合| 欧美日韩一区二区在线视频| 亚洲色图欧洲色图婷婷| av在线不卡免费看| 国产精品丝袜91| 成人av电影在线观看| 国产欧美一区二区在线| 国产激情视频一区二区三区欧美| 精品日韩在线一区| 另类小说欧美激情| 精品国产免费人成电影在线观看四季| 天堂va蜜桃一区二区三区漫画版| 欧美三级日本三级少妇99| 亚洲综合激情网| 欧美色图激情小说| 午夜国产精品一区| 日韩欧美电影在线| 久久超碰97中文字幕| 久久综合九色综合97婷婷女人| 精东粉嫩av免费一区二区三区| 精品少妇一区二区三区免费观看 | 欧美天天综合网| 一区二区三区.www| 欧美丰满高潮xxxx喷水动漫| 日韩精品亚洲一区二区三区免费| 欧美一级高清片在线观看| 玖玖九九国产精品| 亚洲国产精品精华液ab| 91美女蜜桃在线| 视频在线观看91| 26uuu精品一区二区三区四区在线| 国内精品在线播放| 中文字幕中文乱码欧美一区二区 | 亚洲一级二级三级| 欧美日韩在线电影| 久久精品久久99精品久久| 26uuu亚洲| aaa国产一区| 亚洲mv在线观看| 精品国产青草久久久久福利| 国产**成人网毛片九色| 亚洲欧美日韩久久| 日韩免费一区二区| 99精品在线观看视频| 天天综合色天天综合| 久久久亚洲午夜电影| 97成人超碰视| 久久av中文字幕片| 亚洲视频免费在线观看| 欧美一卡二卡在线| 99久久精品免费看国产| 五月婷婷久久丁香| 日本一区二区动态图| 91麻豆精品91久久久久同性| 国产成人综合网| 午夜影院在线观看欧美| 国产色产综合产在线视频| 欧美揉bbbbb揉bbbbb| 国产精品99久久久久久宅男| 亚洲永久免费av| 国产欧美一区二区精品性色超碰| 日本精品一区二区三区四区的功能| 午夜精品久久久久久久久久| 国产女主播一区| 日韩欧美你懂的| 欧美亚一区二区| 粉嫩久久99精品久久久久久夜| 日本vs亚洲vs韩国一区三区二区| 国产精品久久久久四虎| 亚洲精品一区二区三区福利| 精品视频在线免费| 91在线视频免费91| 国产精品一品二品| 麻豆成人免费电影| 亚洲一区二区三区中文字幕 | 国产亚洲一区字幕| 久久亚洲精精品中文字幕早川悠里| 91麻豆高清视频| 成人在线一区二区三区| 九九在线精品视频| 男女性色大片免费观看一区二区 | 亚洲高清免费观看高清完整版在线观看| 亚洲精品一区二区三区99| 欧美一三区三区四区免费在线看 | 国产精品网站在线播放| 亚洲精品一区二区三区精华液| 91精品啪在线观看国产60岁| 欧美日本精品一区二区三区| 欧美影视一区在线| 色狠狠色狠狠综合| 91天堂素人约啪| eeuss鲁片一区二区三区在线看| 国产精品一级二级三级| 国内成+人亚洲+欧美+综合在线| 日韩精品电影在线观看| 日韩va亚洲va欧美va久久| 亚洲一级在线观看| 同产精品九九九| 天天色图综合网| 日韩电影在线一区二区三区| 日韩精品电影在线| 日本 国产 欧美色综合| 美女在线视频一区| 久久99精品国产麻豆不卡| 国产老女人精品毛片久久| 国产成人鲁色资源国产91色综| 国产成人av影院| 成人性生交大片免费看中文 | 在线不卡a资源高清| 91麻豆精品国产自产在线观看一区| 欧美精品粉嫩高潮一区二区| 欧美一区二区三区在线观看视频| 欧美xxxxx裸体时装秀| 久久久91精品国产一区二区精品| 中文字幕av一区 二区| 中文字幕一区二区三区在线不卡 | 日本中文字幕一区二区有限公司| 麻豆一区二区三| 国产成人精品网址| 精品女同一区二区| 2020国产精品| 亚洲欧洲日韩在线| 偷拍一区二区三区四区| 国内精品国产三级国产a久久| a级精品国产片在线观看| 欧美日韩一区二区三区高清 | 欧美天天综合网| 精品少妇一区二区三区 | 免费看日韩a级影片| 国产一区二区三区免费观看| 91香蕉视频黄| 欧美一级生活片| 中文字幕日韩一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产成人av影院| 91精品国产一区二区三区香蕉| 久久亚洲一区二区三区明星换脸 | 中文字幕av一区二区三区| 亚洲尤物视频在线| 成人综合婷婷国产精品久久蜜臀| 欧美在线free| 中文字幕免费在线观看视频一区| 一区二区三区高清在线| 国内精品视频666| 欧美精品1区2区| 欧美激情一区在线| 日韩成人精品在线| 91浏览器打开| 欧美国产乱子伦| 麻豆国产精品官网| 欧美日韩精品欧美日韩精品一| 国产精品久久久久久妇女6080| 蜜臀精品久久久久久蜜臀| 欧美亚洲日本一区| 中文字幕色av一区二区三区| 国产伦精品一区二区三区在线观看| 欧美三电影在线| 亚洲免费高清视频在线| www.日韩av| 国产女人aaa级久久久级| 久久99精品国产.久久久久久| 欧美日本在线播放| 亚洲国产精品久久不卡毛片 | 成人影视亚洲图片在线| 日韩午夜三级在线| 亚洲成人你懂的| 色一区在线观看| 亚洲欧洲精品成人久久奇米网| 国产一区二区三区日韩| 欧美精品一区二| 自拍偷拍亚洲欧美日韩| 欧美一卡二卡三卡| 国产suv一区二区三区88区| 欧美日韩一区不卡| 一区二区三区四区中文字幕| 国产激情精品久久久第一区二区 | 成人av在线资源网站| 亚洲精品在线三区| 看电视剧不卡顿的网站| 精品久久久久久无| 国内精品伊人久久久久av影院| 26uuu精品一区二区|