gforge-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gforge-commits] gforge/common/pm ProjectTask.class, 1.28, 1.29 ProjectT


From: tperdue
Subject: [Gforge-commits] gforge/common/pm ProjectTask.class, 1.28, 1.29 ProjectTaskFactory.class, 1.6, 1.7
Date: Sat, 27 Nov 2004 14:04:47 -0600

Update of /cvsroot/gforge/gforge/common/pm
In directory db.perdue.net:/home/tperdue/share/dev.gforge.org/common/pm

Modified Files:
        ProjectTask.class ProjectTaskFactory.class 
Log Message:
more new functionality and debugging in task mgr

Index: ProjectTask.class
===================================================================
RCS file: /cvsroot/gforge/gforge/common/pm/ProjectTask.class,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- ProjectTask.class   27 Nov 2004 20:00:01 -0000      1.28
+++ ProjectTask.class   27 Nov 2004 20:04:44 -0000      1.29
@@ -158,7 +158,6 @@
                        $this->setError($v->formErrorMsg("Must include "));
                        return false;
                }
-
                if (!$parent_id) {
                        $parent_id=0;
                }
@@ -193,7 +192,7 @@
 
                                $result=db_query($sql);
                                if (!$result || db_affected_rows($result) < 1) {
-                                       $this->setError('ProjectTask::create() 
Posting Failed '.db_error());
+                                       $this->setError('ProjectTask::create() 
Posting Failed '.db_error().$sql);
                                        db_rollback();
                                        return false;
                                } else {
@@ -221,7 +220,7 @@
                        WHERE project_task_id='$project_task_id'
                        AND group_project_id='". $this->ProjectGroup->getID() 
."'");
                if (!$res || db_numrows($res) < 1) {
-                       $this->setError('ProjectTask::fetchData() Invalid 
MessageID'.db_error());
+                       $this->setError('ProjectTask::fetchData() Invalid Task 
ID'.db_error());
                        return false;
                }
                $this->data_array =& db_fetch_array($res);
@@ -383,6 +382,28 @@
        }
 
        /**
+        *      setExternalID - set a row in project_task_external_order which 
stores 
+        *      an id, for example an ID generated by MS Project, which needs 
to be restored later
+        */
+       function setExternalID($id) {
+               $res=db_query("UPDATE project_task_external_order SET 
external_id='$id' 
+                       WHERE project_task_id='".$this->getID()."'");
+               if (db_affected_rows($res) < 1) {
+                       $res=db_query("INSERT INTO project_task_external_order 
(project_task_id,external_id) 
+                               VALUES ('".$this->getID()."','$id')");
+               }
+       }
+
+       /**
+        *      getExternalID - get the ID that MS Project uses to sort tasks
+        *
+        *      @return int     the id.
+        */
+       function getExternalID() {
+               return $this->data_array['external_id'];
+       }
+
+       /**
         *      getRelatedArtifacts - Return a result set of artifacts which 
are related to this task.
         *
         *      @returns Database result set.
@@ -407,9 +428,7 @@
         *      @return boolean success.
         */
        function addRelatedArtifacts($art_array) {
-               $perm =& $this->ProjectGroup->Group->getPermission( 
session_get_user() );
-
-               if (!$perm || !is_object($perm) || !$perm->isPMAdmin()) {
+               if (!$this->ProjectGroup->userIsAdmin()) {
                        $this->setPermissionDeniedError();
                        return false;
                }
@@ -439,9 +458,7 @@
         *      @return boolean success.
         */
        function removeRelatedArtifacts($art_array) {
-               $perm =& $this->ProjectGroup->Group->getPermission( 
session_get_user() );
-
-               if (!$perm || !is_object($perm) || !$perm->isPMAdmin()) {
+               if (!$this->ProjectGroup->userIsAdmin()) {
                        $this->setPermissionDeniedError();
                        return false;
                }
@@ -457,20 +474,51 @@
                }
                return true;
        }
-/*
-       function delete() {
-
-               $project_task_id=$this->getID();
 
-               $perm =& $this->ProjectGroup->Group->getPermission( 
session_get_user() );
+       function delete() {
 
-               if (!$perm || !is_object($perm) || !$perm->isPMAdmin()) {
+               if (!$this->ProjectGroup->userIsAdmin()) {
                        $this->setPermissionDeniedError();
                        return false;
                }
-
+               db_begin();
+               db_query("DELETE FROM project_assigned_to
+                       WHERE project_task_id='".$this->getID()."'");
+//echo '4'.db_error();
+               db_query("DELETE FROM project_dependencies
+                       WHERE project_task_id='".$this->getID()."'");
+//echo '5'.db_error();
+               db_query("DELETE FROM project_history
+                       WHERE project_task_id='".$this->getID()."'");
+//echo '6'.db_error();
+               db_query("DELETE FROM project_messages
+                       WHERE project_task_id='".$this->getID()."'");
+//echo '7'.db_error();
+               db_query("DELETE FROM project_task_artifact
+                       WHERE project_task_id='".$this->getID()."'");
+//echo '8'.db_error();
+               db_query("DELETE FROM rep_time_tracking
+                       WHERE project_task_id='".$this->getID()."'");
+//echo '9'.db_error();
+               db_query("DELETE FROM project_task
+                       WHERE project_task_id='".$this->getID()."'");
+//echo '11'.db_error();
+               if ($this->getStatusID() == 3) {
+                       //no need to update project_counts_agg
+               } else {
+                       if ($this->getStatusID() == 2) {
+                               db_query("UPDATE project_counts_agg
+                                       SET count=count-1
+                                       WHERE 
group_project_id='".$this->ProjectGroup->getID()."'");
+                       } else {
+                               db_query("UPDATE project_counts_agg
+                                       SET count=count-1, 
open_count=open_count-1
+                                       WHERE 
group_project_id='".$this->ProjectGroup->getID()."'");
+                               
+                       }
+               }
+               db_commit();
        }
-*/
 
        /**
         *      getOtherTasks - Return a result set of tasks in this subproject 
that do not equal
@@ -769,16 +817,14 @@
                        $this->setError($v->formErrorMsg("Must include "));
                        return false;
                }
-
                if (!$parent_id) {
                        $parent_id=0;
                }
                if (!$duration) {
                        $duration=0;
                }
-               $perm =& $this->ProjectGroup->Group->getPermission( 
session_get_user() );
 
-               if (!$perm || !is_object($perm) || !$perm->isPMAdmin()) {
+               if (!$this->ProjectGroup->userIsAdmin()) {
                        $this->setPermissionDeniedError();
                        return false;
                }

Index: ProjectTaskFactory.class
===================================================================
RCS file: /cvsroot/gforge/gforge/common/pm/ProjectTaskFactory.class,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- ProjectTaskFactory.class    18 Nov 2004 16:39:47 -0000      1.6
+++ ProjectTaskFactory.class    27 Nov 2004 20:04:44 -0000      1.7
@@ -185,15 +185,25 @@
                        $cat_str="AND 
project_task_vw.category_id='".$this->category."'";
                }
 
+               //
+               //      sort using an external ID useful only to something like 
MS Project
+               //
+               if ($this->order=='external_id') {
+                       $ext_str='natural left join 
project_task_external_order';
+                       $ext_fld_str=',project_task_external_order.external_id';
+               } else {
+                       $ext_str='';
+               }
+
 /*
 select project_task_vw.*,project_assigned_to.* FROM 
project_task_vw,project_assigned_to 
 WHERE project_assigned_to.project_task_id=project_task_vw.project_task_id;
 */
-               $sql="SELECT project_task_vw.*
-                       FROM project_task_vw $assigned_str2 
+               $sql="SELECT project_task_vw.* $ext_fld_str
+                       FROM project_task_vw $ext_str $assigned_str2 
                        WHERE $assigned_str3 
project_task_vw.group_project_id='". $this->ProjectGroup->getID() ."' 
                        $assigned_str $status_str $cat_str 
-                       ORDER BY 
project_task_vw.".$this->order.(($this->order=='priority') ? ' DESC ':' ');
+                       ORDER BY ".$this->order.(($this->order=='priority') ? ' 
DESC ':' ');
 
 //echo $sql;
        





reply via email to

[Prev in Thread] Current Thread [Next in Thread]