From e6b06fd6b431ca3b42ea3083dda5d9da25c897f8 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Thu, 4 Feb 2010 17:45:39 +0000 Subject: [PATCH] Fix: add function to sort project authorized for a user --- htdocs/projet/index.php | 5 +++-- htdocs/projet/project.class.php | 27 +++++++++++++++++++-------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index 4c1988a376b..e050f96042e 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -109,7 +109,8 @@ print ""; print ''; $projectsIdArray=array(); -$projectsListArray = $projectstatic->getProjectsAuthorizedForUser($user); +$mine = $_GET['mode']=='mine'?1:0; +$projectsListArray = $projectstatic->getProjectsAuthorizedForUser($user,$mine); foreach ($projectsListArray as $key => $value) { $projectsIdArray[] = $key; @@ -126,7 +127,7 @@ $sql.= ", s.nom, s.rowid as socid"; $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on p.fk_soc = s.rowid"; $sql.= " WHERE p.entity = ".$conf->entity; -$sql.= " AND p.rowid IN (".implode(',',$projectsIdArray).")"; +$sql.= " AND p.rowid IN (".(!empty($projectsIdArray) ? implode(',',$projectsIdArray) : 0).")"; if ($socid) $sql.= " AND s.rowid = ".$socid; $sql.= " GROUP BY s.nom, s.rowid"; diff --git a/htdocs/projet/project.class.php b/htdocs/projet/project.class.php index 17944f907e5..790011a9007 100644 --- a/htdocs/projet/project.class.php +++ b/htdocs/projet/project.class.php @@ -657,10 +657,10 @@ class Project extends CommonObject * @param unknown_type $user * @return unknown */ - function getProjectsAuthorizedForUser($user) + function getProjectsAuthorizedForUser($user,$mine=0) { global $conf; - + $projects = array(); $sql = "SELECT DISTINCT p.rowid, p.ref"; @@ -668,12 +668,23 @@ class Project extends CommonObject $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec"; $sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc"; $sql.= " WHERE p.entity = ".$conf->entity; - $sql.= " AND ( p.public = 1"; - $sql.= " OR p.fk_user_creat = ".$user->id; - $sql.= " OR ( ec.element_id = p.rowid"; - $sql.= " AND ctc.rowid = ec.fk_c_type_contact"; - $sql.= " AND ctc.element = '".$this->element."'"; - $sql.= " AND ec.fk_socpeople = ".$user->id." ) )"; + + if ($mine) + { + $sql.= " AND ec.element_id = p.rowid"; + $sql.= " AND ctc.rowid = ec.fk_c_type_contact"; + $sql.= " AND ctc.element = '".$this->element."'"; + $sql.= " AND ec.fk_socpeople = ".$user->id; + } + else + { + $sql.= " AND ( p.public = 1"; + $sql.= " OR p.fk_user_creat = ".$user->id; + $sql.= " OR ( ec.element_id = p.rowid"; + $sql.= " AND ctc.rowid = ec.fk_c_type_contact"; + $sql.= " AND ctc.element = '".$this->element."'"; + $sql.= " AND ec.fk_socpeople = ".$user->id." ) )"; + } $resql = $this->db->query($sql); if ($resql)