[Fusionforge-commits] r9711 - trunk/gforge/common/pm
Roland Mas
lolando at libremir.placard.fr.eu.org
Mon May 10 17:01:55 CEST 2010
Author: lolando
Date: 2010-05-10 17:01:55 +0200 (Mon, 10 May 2010)
New Revision: 9711
Added:
trunk/gforge/common/pm/ProjectTaskSqlQueries.php
Log:
Copied ProjectTaskSqlQueries.php from Evolvis
Added: trunk/gforge/common/pm/ProjectTaskSqlQueries.php
===================================================================
--- trunk/gforge/common/pm/ProjectTaskSqlQueries.php (rev 0)
+++ trunk/gforge/common/pm/ProjectTaskSqlQueries.php 2010-05-10 15:01:55 UTC (rev 9711)
@@ -0,0 +1,177 @@
+<?php
+/**
+ * @author: Patrick Apel, tarent GmbH
+ */
+
+
+/**
+ * Retrieve group_project_id and group_id for a specific project_task_id,
+ * for URI construction and similar things.
+ *
+ * in: int project_task_id
+ * out: false, or an associative array with
+ * - int project_task_id (copy)
+ * - int group_project_id
+ * - int group_id
+ */
+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) {
+ return false;
+ }
+
+ while ($arr = db_fetch_array($res)) {
+ $arrResult = array(
+ 'project_task_id' => (int)$project_task_id,
+ 'group_project_id' => (int)$arr[0],
+ 'group_id' => (int)$arr[1]
+ );
+ }
+
+ return $arrResult;
+}
+
+
+/**
+ * Check if the task behind project_task_id is considered public.
+ *
+ * in: int project_task_id
+ * out: true, if it is; false otherwise
+ */
+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) {
+ return false;
+ }
+
+ return true;
+}
+
+
+/**
+ * Check whether the user has access to the project task by
+ * means of common group membership.
+ *
+ * in: int project_task_id
+ * str user_name (Unix user name)
+ * out: true, if he has; false otherwise
+ */
+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) {
+ return false;
+ }
+
+ return true;
+}
+
+/*-
+ * Query for controlling the result. It gives back all user_names and
+ * project_task_ids that matches the groups above:
+ *
+ * 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_names that
+ * does not match a group above:
+ *
+ * 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;
+ */
+
+
+/**
+ * Retrieve extended information about a project task.
+ *
+ * in: int project_task_id
+ * out: false (if an error occured) or an associative array with
+ * - int project_task_id (copy)
+ * - int group_project_id (for URI construction)
+ * - int group_id (for URI construction)
+ * - str group_name
+ * - str summary (of the task)
+ * - int priority
+ * - int created_by (user ID)
+ * - str created_by_name (Unix user name)
+ * - int status_id
+ * - str status_name
+ * - int category_id
+ * - str category_name (of the per-group category the task is in)
+ * - str project_name (of the per-group subproject the task is in)
+ */
+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, ' .
+ 'groups.group_id, ' .
+ '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) {
+ return false;
+ }
+
+ while ($arr = db_fetch_array($res)) {
+ $arrResult = array(
+ 'project_task_id' => (int)$arr[0],
+ 'group_project_id' => (int)$arr[1],
+ 'group_id' => (int)$arr[11],
+ 'summary' => $arr[2],
+ 'priority' => (int)$arr[3],
+ 'created_by' => (int)$arr[4],
+ 'status_id' => (int)$arr[5],
+ 'category_id' => (int)$arr[6],
+ 'created_by_name' => $arr[7],
+ 'category_name' => $arr[8],
+ 'project_name' => $arr[9],
+ 'group_name' => $arr[10],
+ 'status_name' => $arr[12]
+ );
+ }
+
+ return $arrResult;
+}
+
+?>
More information about the Fusionforge-commits
mailing list