[evolvis-commits] r6501: - Added class for getting informations about tasks.
papel at evolvis.org
papel at evolvis.org
Thu Apr 1 09:33:38 CEST 2010
Author: papel
Date: 2010-04-01 07:33:37 +0000 (Thu, 01 Apr 2010)
New Revision: 6501
Added:
trunk/gforge_base/gforge-4.8.1+evolvis/common/pm/ProjectTaskSqlQueries.class.php
Log:
- Added class for getting informations about tasks.
Added: trunk/gforge_base/gforge-4.8.1+evolvis/common/pm/ProjectTaskSqlQueries.class.php
===================================================================
--- trunk/gforge_base/gforge-4.8.1+evolvis/common/pm/ProjectTaskSqlQueries.class.php (rev 0)
+++ trunk/gforge_base/gforge-4.8.1+evolvis/common/pm/ProjectTaskSqlQueries.class.php 2010-04-01 07:33:37 UTC (rev 6501)
@@ -0,0 +1,141 @@
+<?php
+/**
+ * @author: Patrick Apel, tarent GmbH
+ */
+
+require_once $gfcommon.'include/Error.class.php';
+class ProjectTaskSqlQueries extends Error {
+
+function getGroupProjectIdGroupId($project_task_id) {
+
+$res = db_query_params('SELECT project_task.group_project_id, project_group_list.group_id FROM project_task ' .
+ 'INNER JOIN project_group_list ON project_task.group_project_id = project_group_list.group_project_id ' .
+ 'WHERE project_task.project_task_id = $1', array($project_task_id));
+
+if (!$res || db_numrows($res) < 1) {
+ $this->setError(_('No group project id and group id were found'));
+ return false;
+} else {
+
+ while($arr = db_fetch_array($res)) {
+ $arrResult = array($arr[0],$arr[1]);
+ }
+
+ return $arrResult; // returns $arrResult[0] with group_project_id and $arrResult[1] with group_id
+}
+
+}
+
+
+function isProjectTaskInfoPublic($project_task_id){
+
+$res = db_query_params('SELECT * FROM project_task ' .
+ 'INNER JOIN project_group_list ON ' .
+ 'project_task.group_project_id = project_group_list.group_project_id ' .
+ 'INNER JOIN groups ON ' .
+ 'project_group_list.group_id = groups.group_id ' .
+ 'WHERE project_task.project_task_id = $1 ' .
+ 'AND project_group_list.is_public = $2 AND groups.is_public = $3', array($project_task_id, 1, 1));
+
+if (!$res || db_numrows($res) < 1) {
+ $this->setError(_('The information to the project task is not public'));
+ /* Maybe this function should not throw an error with the error class?
+ * Maybe there is a class that just gives back
+ * an information message?
+ * $this->setInformation('...') */
+ return false;
+} else {
+ return true;
+}
+}
+
+
+function isUserAndTaskinSameGroup($project_task_id, $user_name) {
+
+$res = db_query_params('SELECT * FROM user_group ' .
+ 'INNER JOIN users ON ' .
+ 'users.user_id = user_group.user_id ' .
+ 'INNER JOIN project_group_list ON ' .
+ 'project_group_list.group_id = user_group.group_id ' .
+ 'INNER JOIN project_task ON ' .
+ 'project_group_list.group_project_id = project_task.group_project_id ' .
+ 'WHERE project_task.project_task_id = $1 AND users.user_name = $2', array($project_task_id, $user_name));
+
+if (!$res || db_numrows($res) < 1) {
+ $this->setError(_('The user is not in an user group that matches to the project group of the project task'));
+ return false;
+} else {
+ return true;
+}
+
+/* Query for controlling the result. It gives back all user_name and project_task_id that
+ * matches above the groups:
+ *
+ * SELECT users.user_name, project_task.project_task_id FROM users
+ * INNER JOIN user_group ON users.user_id = user_group.user_id INNER JOIN project_group_list ON
+ * user_group.group_id = project_group_list.group_id INNER JOIN project_task ON
+ * project_group_list.group_project_id = project_task.group_project_id;
+ *
+ * Query for controlling the result. It gives back all user_name that does not match a group
+ * above the JOINs:
+ *
+ * SELECT users.user_name, project_task.project_task_id FROM users
+ * LEFT JOIN user_group ON users.user_id = user_group.user_id LEFT JOIN project_group_list ON
+ * user_group.group_id = project_group_list.group_id LEFT JOIN project_task ON
+ * project_group_list.group_project_id = project_task.group_project_id WHERE project_task_id isNull;
+ *
+ */
+}
+
+
+function getAllFromProjectTask($project_task_id) {
+
+$res = db_query_params('SELECT ' .
+ 'project_task.project_task_id, project_task.group_project_id, project_task.summary, project_task.priority, ' .
+ 'project_task.created_by, project_task.status_id, project_task.category_id, ' .
+ 'users.user_name, ' .
+ 'project_category.category_name, ' .
+ 'project_group_list.project_name, ' .
+ 'groups.group_name, ' .
+ 'project_status.status_name ' .
+ 'FROM project_status ' .
+ 'INNER JOIN project_task ON ' .
+ 'project_task.status_id = project_status.status_id ' .
+ 'INNER JOIN users ON ' .
+ 'users.user_id = project_task.created_by ' .
+ 'INNER JOIN project_category ON ' .
+ 'project_category.category_id = project_task.category_id ' .
+ 'INNER JOIN project_group_list ON ' .
+ 'project_group_list.group_project_id = project_task.group_project_id ' .
+ 'INNER JOIN groups ON ' .
+ 'groups.group_id = project_group_list.group_id ' .
+ 'WHERE project_task.project_task_id = $1', array($project_task_id));
+
+if (!$res || db_numrows($res) < 1) {
+ $this->setError(_('No data were found related to the project task'));
+ return false;
+} else {
+
+ while($arr = db_fetch_array($res)) {
+ $arrResult = array('project_task_id'=>$arr[0],
+ 'group_project_id'=>$arr[1],
+ 'summary'=>$arr[2],
+ 'priority'=>$arr[3],
+ 'created_by'=>$arr[4],
+ 'status_id'=>$arr[5],
+ 'category_id'=>$arr[6],
+ 'created_by_name'=>$arr[7],
+ 'category_name'=>$arr[8],
+ 'project_name'=>$arr[9],
+ 'group_name'=>$arr[10],
+ 'status_name'=>$arr[11]);
+ }
+
+ return $arrResult;
+}
+
+}
+
+}
+
+?>
More information about the evolvis-commits
mailing list