[Top][All Lists]
[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)
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Phpgroupware-cvs] ged/inc class.ged_ui.inc.php class.ged_dm.inc.php,
Pascal Vilarem <=