phpgroupware-cvs
[Top][All Lists]
Advanced

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

[Phpgroupware-cvs] ged/inc class.ged_ui.inc.php class.ged_dm.inc.php


From: Pascal Vilarem
Subject: [Phpgroupware-cvs] ged/inc class.ged_ui.inc.php class.ged_dm.inc.php
Date: Fri, 20 Apr 2007 14:07:27 +0000

CVSROOT:        /sources/phpgroupware
Module name:    ged
Changes by:     Pascal Vilarem <maat>   07/04/20 14:07:27

Modified files:
        inc            : class.ged_ui.inc.php class.ged_dm.inc.php 

Log message:
        fix for project filtering
        db2 = clone db for acl functions

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/ged/inc/class.ged_ui.inc.php?cvsroot=phpgroupware&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/ged/inc/class.ged_dm.inc.php?cvsroot=phpgroupware&r1=1.25&r2=1.26

Patches:
Index: class.ged_ui.inc.php
===================================================================
RCS file: /sources/phpgroupware/ged/inc/class.ged_ui.inc.php,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- class.ged_ui.inc.php        10 Apr 2007 09:41:09 -0000      1.28
+++ class.ged_ui.inc.php        20 Apr 2007 14:07:27 -0000      1.29
@@ -1733,11 +1733,14 @@
                $name=get_var('name', array('GET', 'POST'));
                $description=get_var('description', array('GET', 'POST'));
                $referenceq=get_var('referenceq', array('GET', 'POST'));
+               $project_name=get_var('project_name', array('GET', 'POST'));
 
                $this->set_template_defaults();
 
                if ($parent_id=="")
+               {
                        $parent_id=0;
+               }
 
                if ($add_folder==lang('Add folder'))
                {
@@ -1746,6 +1749,7 @@
                        $new_folder['name']=$name;
                        $new_folder['referenceq']=$referenceq;
                        $new_folder['description']=$description;
+                       $new_folder['project_name']=$project_name;
 
                        $this->ged_dm->add_folder($new_folder);
 
@@ -1781,6 +1785,15 @@
                $this->t->set_var('description_value', $description);
                $this->t->set_var('lang_add_folder', lang('Add folder'));
                
+               $this->t->set_block('add_folder_tpl', 'project_block', 
'project_block_handle');
+               
+               if ( $parent_id == 0 || 
is_null($parent_element['project_root']) || $parent_element['project_root']=='' 
)
+               {
+                       $this->t->set_var('project_name_value', '');
+                       $this->t->fp('project_block_handle', 'project_block', 
True);
+               }
+               
+               
                
                $link_data=null;
                $link_data['menuaction']='ged.ged_ui.add_folder';
@@ -1873,7 +1886,7 @@
                
                $this->t->set_block('update_folder_tpl', 'project_block', 
'project_block_handle');
                
-               if ( $project_root == $focused_element['element_id'] || 
$project_root == null )
+               if ( $project_root == $focused_element['element_id'] || 
$project_root == null || $project_root == 0)
                {
                        $this->t->set_var('project_name_value', $project_name);
                        $this->t->fp('project_block_handle', 'project_block', 
True);

Index: class.ged_dm.inc.php
===================================================================
RCS file: /sources/phpgroupware/ged/inc/class.ged_dm.inc.php,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- class.ged_dm.inc.php        10 Apr 2007 10:03:04 -0000      1.25
+++ class.ged_dm.inc.php        20 Apr 2007 14:07:27 -0000      1.26
@@ -16,6 +16,7 @@
 class ged_dm
 {
        var $db;
+       var $db2;
        var $ged_config;
        var $owner;
        var $admin;
@@ -572,11 +573,28 @@
        {
                $parent=$this->get_element_info($new_folder['parent_id']);
                
+               if ( ! is_null($parent['project_root']==null) && ! 
$parent['project_root']==0 )
+               {
                $sql_model="INSERT INTO %s ( type, parent_id, name, reference, 
description, owner_id, creator_id, creation_date, project_name, project_root  ) 
VALUES ";
                $sql_model.=" ( '%s', %d, '%s', '%s', '%s', %d, %d, %d, '%s', 
%d) ";
 
                $sql=sprintf($sql_model, $this->tables['elements'], 'folder', 
$new_folder['parent_id'], $new_folder['name'], $new_folder['referenceq'], 
$new_folder['description'], $GLOBALS['phpgw_info']['user']['account_id'], 
$GLOBALS['phpgw_info']['user']['account_id'], 
time(),$parent['project_name'],$parent['project_root']);
 
+                       $set_project=false;
+               }
+               else
+               {
+                       $sql_model="INSERT INTO %s ( type, parent_id, name, 
reference, description, owner_id, creator_id, creation_date ) VALUES ";
+                       $sql_model.=" ( '%s', %d, '%s', '%s', '%s', %d, %d, %d) 
";
+
+                       $sql=sprintf($sql_model, $this->tables['elements'], 
'folder', $new_folder['parent_id'], $new_folder['name'], 
$new_folder['referenceq'], $new_folder['description'], 
$GLOBALS['phpgw_info']['user']['account_id'], 
$GLOBALS['phpgw_info']['user']['account_id'], time());
+                       
+                       if ( $new_folder['project_name']!='')
+                       {
+                               $set_project=true;      
+                       }
+               }
+
                //print ($sql);
 
                $this->db->query($sql, __LINE__, __FILE__);
@@ -585,6 +603,11 @@
 
                $this->db->unlock();
                
+               if ( $set_project )
+               {
+                       $this->set_project($new_element_id, 
$new_element_id['project_name']);
+               }
+               
                //TODO positionnement des droits.
                $this->set_default_acl($new_element_id);
 
@@ -1141,6 +1164,9 @@
        
        function can_read($element_id)
        {
+               // db2 neededbecause can_read can be called during a $this->db 
loop;            
+               $this->db2 = clone($this->db);
+               
                if ( $this->admin )
                {
                        $result=true;
@@ -1153,18 +1179,23 @@
                        $sql0.="AND 
".$this->tables['elements'].".element_id=".$element_id." ";
                        $sql0.="AND (".$this->sqlaclread.") ";
                        
-                       $this->db->query($sql0, __LINE__, __FILE__);
+                       $this->db2->query($sql0, __LINE__, __FILE__);
                        
-                       $result=($this->db->next_record() ||  $element_id==0);
+                       $result=($this->db2->next_record() ||  $element_id==0);
                        
-                       $this->db->unlock();
+                       $this->db2->unlock();
                }
                        
+               $this->db2->free(); 
+               unset($this->db2);
                        return ($result );      
        }
 
        function can_write($element_id)
        {
+               // db2 neededbecause can_read can be called during a $this->db 
loop;            
+               $this->db2 = clone($this->db);
+
                if ( $this->admin )
                {
                        $result=true;
@@ -1177,18 +1208,23 @@
                        $sql0.="AND 
".$this->tables['elements'].".element_id=".$element_id." ";
                        $sql0.="AND (".$this->sqlaclwrite.") ";
                        
-                       $this->db->query($sql0, __LINE__, __FILE__);
+                       $this->db2->query($sql0, __LINE__, __FILE__);
                        
-                       $result=($this->db->next_record());
+                       $result=($this->db2->next_record());
                        
-                       $this->db->unlock();
+                       $this->db2->unlock();
                }
                
+               $this->db2->free(); 
+               unset($this->db2);              
                return ($result );      
        }
        
        function can_change_acl($element_id)
        {
+               // db2 neededbecause can_read can be called during a $this->db 
loop;            
+               $this->db2 = clone($this->db);
+
                if ( $this->admin )
                {
                        $result=true;
@@ -1201,13 +1237,15 @@
                        $sql0.="AND 
".$this->tables['elements'].".element_id=".$element_id." ";
                        $sql0.="AND (".$this->sqlaclchangeacl.") ";
                        
-                       $this->db->query($sql0, __LINE__, __FILE__);
+                       $this->db-2>query($sql0, __LINE__, __FILE__);
                        
-                       $result=($this->db->next_record());
+                       $result=($this->db2->next_record());
                        
-                       $this->db->unlock();
+                       $this->db2->unlock();
                }
                
+               $this->db2->free(); 
+               unset($this->db2);              
                return ($result );      
        }
        
@@ -1423,7 +1461,8 @@
                }
 
                $this->db->unlock();
-
+               $this->db2->free(); 
+               unset($this->db2);
                return $elements;
        
        }
@@ -2069,8 +2108,20 @@
                // List new suff
                
                $sql="SELECT ged_elements.*, ged_versions.* from ged_elements 
INNER JOIN ged_versions ON ged_elements.element_id=ged_versions.element_id ";
-               $sql.="WHERE ged_versions.status='current' AND ( 
ged_versions.validation_date >=$then ";
-               $sql.="OR ( ( ged_elements.validity_period > 0 OR 
ged_elements.validity_period IS NOT NULL) AND ged_versions.creation_date 
>=$then ))";
+               $sql.="WHERE ( ged_versions.status='current' AND ( 
ged_versions.validation_date >=$then ";
+               $sql.="OR ( ( ged_elements.validity_period > 0 OR 
ged_elements.validity_period IS NOT NULL) AND ged_versions.creation_date 
>=$then ))) ";
+               if (array_key_exists ('preferences', 
$GLOBALS['phpgw_info']['user']) &&  array_key_exists ('show_projects', 
$GLOBALS['phpgw_info']['user']['preferences']['ged']) && 
is_array($GLOBALS['phpgw_info']['user']['preferences']['ged']['show_projects']))
+               {
+                       $sql.="AND ( ";
+                       $vor="";
+                       
+                       foreach ( 
$GLOBALS['phpgw_info']['user']['preferences']['ged']['show_projects'] as $id => 
$project )
+                       {
+                               $sql.=$vor."ged_elements.project_root =".$id." 
";
+                               $vor="OR ";
+                       }
+                       $sql.=") ";
+               }
                
                $this->db->query($sql);
 
@@ -2152,12 +2203,23 @@
 
        function list_pending_documents ()
        {
-                                       
                $sql="SELECT ged_elements.*, ged_current_version.* ";
                $sql.="FROM ( ged_elements ";
                $sql.="INNER JOIN ged_versions as ged_current_version ";
                $sql.="ON 
ged_elements.element_id=ged_current_version.element_id ";
                $sql.="AND ( 
ged_current_version.status='pending_for_technical_review' or 
ged_current_version.status='pending_for_quality_review' or 
ged_current_version.status='pending_for_approval' or 
ged_current_version.status='ready_for_delivery' )) ";
+               if (array_key_exists ('preferences', 
$GLOBALS['phpgw_info']['user']) &&  array_key_exists ('show_projects', 
$GLOBALS['phpgw_info']['user']['preferences']['ged']) && 
is_array($GLOBALS['phpgw_info']['user']['preferences']['ged']['show_projects']))
+               {
+                       $sql.="WHERE ( ";
+                       $vor="";
+                       
+                       foreach ( 
$GLOBALS['phpgw_info']['user']['preferences']['ged']['show_projects'] as $id => 
$project )
+                       {
+                               $sql.=$vor."ged_elements.project_root =".$id." 
";
+                               $vor="OR ";
+                       }
+                       $sql.=") ";
+               }
                $sql.="GROUP BY ged_elements.element_id ";
                
                $this->db->query($sql);
@@ -2198,6 +2260,18 @@
                $sql.="INNER JOIN ged_versions as ged_current_version ";
                $sql.="ON 
ged_elements.element_id=ged_current_version.element_id ";
                $sql.="AND ( ged_current_version.status='working' )) ";
+               if (array_key_exists ('preferences', 
$GLOBALS['phpgw_info']['user']) &&  array_key_exists ('show_projects', 
$GLOBALS['phpgw_info']['user']['preferences']['ged']) && 
is_array($GLOBALS['phpgw_info']['user']['preferences']['ged']['show_projects']))
+               {
+                       $sql.="WHERE ( ";
+                       $vor="";
+                       
+                       foreach ( 
$GLOBALS['phpgw_info']['user']['preferences']['ged']['show_projects'] as $id => 
$project )
+                       {
+                               $sql.=$vor."ged_elements.project_root =".$id." 
";
+                               $vor="OR ";
+                       }
+                       $sql.=") ";
+               }
                $sql.="GROUP BY ged_elements.element_id ";
                
                $this->db->query($sql);
@@ -2238,6 +2312,18 @@
                $sql.="INNER JOIN ged_versions as ged_current_version ";
                $sql.="ON 
ged_elements.element_id=ged_current_version.element_id ";
                $sql.="AND ( ged_current_version.status='alert' )) ";
+               if (array_key_exists ('preferences', 
$GLOBALS['phpgw_info']['user']) &&  array_key_exists ('show_projects', 
$GLOBALS['phpgw_info']['user']['preferences']['ged']) && 
is_array($GLOBALS['phpgw_info']['user']['preferences']['ged']['show_projects']))
+               {
+                       $sql.="WHERE ( ";
+                       $vor="";
+                       
+                       foreach ( 
$GLOBALS['phpgw_info']['user']['preferences']['ged']['show_projects'] as $id => 
$project )
+                       {
+                               $sql.=$vor."ged_elements.project_root =".$id." 
";
+                               $vor="OR ";
+                       }
+                       $sql.=") ";
+               }
                $sql.="GROUP BY ged_elements.element_id ";
                
                $this->db->query($sql);
@@ -2280,6 +2366,18 @@
                $sql.="AND ( ged_current_version.status='rejected' )) ";
                $sql.="INNER JOIN ged_versions as ged_last_version ";
                $sql.="ON ged_elements.element_id=ged_last_version.element_id ";
+               if (array_key_exists ('preferences', 
$GLOBALS['phpgw_info']['user']) &&  array_key_exists ('show_projects', 
$GLOBALS['phpgw_info']['user']['preferences']['ged']) && 
is_array($GLOBALS['phpgw_info']['user']['preferences']['ged']['show_projects']))
+               {
+                       $sql.="WHERE ( ";
+                       $vor="";
+                       
+                       foreach ( 
$GLOBALS['phpgw_info']['user']['preferences']['ged']['show_projects'] as $id => 
$project )
+                       {
+                               $sql.=$vor."ged_elements.project_root =".$id." 
";
+                               $vor="OR ";
+                       }
+                       $sql.=") ";
+               }
                $sql.="GROUP BY ged_elements.element_id ";
                $sql.="HAVING last_version_id=ged_current_version.version_id ";
                
@@ -2313,6 +2411,47 @@
        
        }
 
+       // Project filtering
+       function list_available_projects()
+       {
+
+               if ( $this->admin )
+               {
+                       $sql="SELECT * FROM ".$this->tables['elements']." ";
+                       $sql.="WHERE project_root=element_id ";
+                       
+                       $this->db->query($sql, __LINE__, __FILE__);
+               }
+               else
+               {
+                       $sql="SELECT DISTINCT ".$this->tables['elements'].".* ";
+                       $sql.="FROM ".$this->tables['elements'].", 
".$this->tables['acl']." ";
+                       $sql.="WHERE project_root=element_id ";
+                       $sql.="AND 
".$this->tables['elements'].".element_id=".$this->tables['acl'].".element_id ";
+                       $sql.="AND (".$this->sqlaclread.") ";
+                       
+                       $sql.="ORDER by type desc, element_id asc";
+                       
+                       $this->db->query($sql, __LINE__, __FILE__);
+               }
+               //print ( $sql );
+
+               $projects=Array();
+
+               while ($this->db->next_record())
+               {
+                       $i=$this->db->f('element_id');
+                       
+                       $projects[$i]=$this->db->f('name');
+               }
+
+               $this->db->unlock();
+
+               return $projects;
+
+       }
+       
+       
        // History
        function get_history ( $element_id)
        {




reply via email to

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