diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index dbf95bebec8..ede2839aa09 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -41,7 +41,7 @@ if ($user->societe_id > 0) * View */ -$company=new Societe($db); +$socstatic=new Societe($db); $projectstatic=new Project($db); llxHeader("",$langs->trans("Projects"),"EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"); @@ -60,13 +60,10 @@ print_liste_field_titre($langs->trans("NbOpenTasks"),"","","","",'align="right"' print_liste_field_titre($langs->trans("Status"),"","","","",'align="right"',$sortfield,$sortorder); print "\n"; -$sql = "SELECT p.title, p.rowid, p.fk_statut, count(t.rowid) as nb"; +$sql = "SELECT p.rowid as projectid, p.ref, p.title, p.fk_user_creat, p.public, p.fk_statut, count(t.rowid) as nb"; $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; -$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on p.fk_soc = s.rowid"; -if (!$user->rights->societe->client->voir && !$socid) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task as t ON p.rowid = t.fk_projet"; $sql.= " WHERE p.entity = ".$conf->entity; -//if ($_REQUEST["mode"]=='mine') $sql.=' AND p.fk_user_resp='.$user->id; if ($socid) $sql.= " AND p.fk_soc = ".$socid; $sql.= " GROUP BY p.title, p.rowid"; @@ -79,14 +76,24 @@ if ( $resql ) while ($i < $num) { - $row = $db->fetch_object($resql); - $var=!$var; - print ""; - print ''.img_object($langs->trans("ShowProject"),"project")." ".$row->title.''; - print ''.$row->nb.''; - $projectstatic->statut=$row->fk_statut; - print ''.$projectstatic->getLibStatut(3).''; - print "\n"; + $objp = $db->fetch_object($resql); + + $projectstatic->id = $objp->projectid; + $projectstatic->user_author_id = $objp->fk_user_creat; + $projectstatic->public = $objp->public; + + $userAccess = $projectstatic->restrictedProjectArea($user,1); + + if ($userAccess >= 0) + { + $var=!$var; + print ""; + print ''.img_object($langs->trans("ShowProject"),"project")." ".$objp->title.''; + print ''.$objp->nb.''; + $projectstatic->statut = $objp->fk_statut; + print ''.$projectstatic->getLibStatut(3).''; + print "\n"; + } $i++; } @@ -108,12 +115,11 @@ print_liste_field_titre($langs->trans("Company"),"index.php","s.nom","","","",$s print_liste_field_titre($langs->trans("NbOfProjects"),"","","","",'align="right"',$sortfield,$sortorder); print "\n"; -$sql = "SELECT count(p.rowid) as nb, s.nom, s.rowid as socid"; +$sql = "SELECT count(p.rowid) as nb"; +$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"; -if (!$user->rights->societe->client->voir && !$socid) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; $sql.= " WHERE p.entity = ".$conf->entity; -//if ($_REQUEST["mode"]=='mine') $sql.=' AND p.fk_user_resp='.$user->id; if ($socid) $sql.= " AND s.rowid = ".$socid; $sql.= " GROUP BY s.nom, s.rowid"; //$sql .= " ORDER BY $sortfield $sortorder " . $db->plimit($conf->liste_limit, $offset); @@ -133,9 +139,9 @@ if ( $resql ) print ''; if ($obj->socid) { - $company->id=$obj->socid; - $company->nom=$obj->nom; - print $company->getNomUrl(1); + $socstatic->id=$obj->socid; + $socstatic->nom=$obj->nom; + print $socstatic->getNomUrl(1); } else { diff --git a/htdocs/projet/liste.php b/htdocs/projet/liste.php index ac6aa34fcc1..aecd4798af9 100644 --- a/htdocs/projet/liste.php +++ b/htdocs/projet/liste.php @@ -66,9 +66,9 @@ $pagenext = $page + 1; llxHeader("",$langs->trans("Projects"),"EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"); $projectstatic = new Project($db); -$staticsoc=new Societe($db); +$socstatic = new Societe($db); -$sql = "SELECT p.rowid as projectid, p.ref, p.title, p.fk_statut, p.public"; +$sql = "SELECT p.rowid as projectid, p.ref, p.title, p.fk_statut, p.public, p.fk_user_creat"; $sql.= ", p.datec as date_create, p.dateo as date_start, p.datee as date_end"; $sql.= ", s.nom, s.rowid as socid"; $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; @@ -128,46 +128,57 @@ if ($resql) while ($i < $num) { $objp = $db->fetch_object($resql); - $var=!$var; - print ""; - - print ""; - $projectstatic->id=$objp->projectid; - $projectstatic->ref=$objp->ref; - print $projectstatic->getNomUrl(1); - print ""; - - // Title - print ''; - print dol_trunc($objp->title,24); - print ''; - - // Company - print ''; - if ($objp->socid) + + $projectstatic->id = $objp->projectid; + $projectstatic->user_author_id = $objp->fk_user_creat; + $projectstatic->public = $objp->public; + + $userAccess = $projectstatic->restrictedProjectArea($user,1); + + if ($userAccess >= 0) { - $staticsoc->id=$objp->socid; - $staticsoc->nom=$objp->nom; - print $staticsoc->getNomUrl(1); + $var=!$var; + print ""; + + // Project url + print ""; + $projectstatic->ref = $objp->ref; + print $projectstatic->getNomUrl(1); + print ""; + + // Title + print ''; + print dol_trunc($objp->title,24); + print ''; + + // Company + print ''; + if ($objp->socid) + { + $socstatic->id=$objp->socid; + $socstatic->nom=$objp->nom; + print $socstatic->getNomUrl(1); + } + else + { + print ' '; + } + print ''; + + // Visibility + print ''; + if ($objp->public) print $langs->trans('SharedProject'); + else print $langs->trans('Private'); + print ''; + + // Status + $projectstatic->statut = $objp->fk_statut; + print ''.$projectstatic->getLibStatut(3).''; + + print "\n"; + } - else - { - print ' '; - } - print ''; - - // Visibility - print ''; - if ($objp->public) print $langs->trans('SharedProject'); - else print $langs->trans('Private'); - print ''; - - // Status - $projectstatic->statut=$objp->fk_statut; - print ''.$projectstatic->getLibStatut(3).''; - - print "\n"; - + $i++; } diff --git a/htdocs/projet/project.class.php b/htdocs/projet/project.class.php index 76d7e12fb86..239443d8c25 100644 --- a/htdocs/projet/project.class.php +++ b/htdocs/projet/project.class.php @@ -608,7 +608,7 @@ class Project extends CommonObject /** * \brief Check permissions */ - function restrictedProjectArea($user) + function restrictedProjectArea($user,$list=0) { // To verify role of users $userAccess = 0; @@ -635,7 +635,18 @@ class Project extends CommonObject } } - if (!$userAccess && !$this->public) accessforbidden('',0); + if (!$userAccess && !$this->public) + { + if (!$list) + { + accessforbidden('',0); + } + else + { + return -1; + } + + } return $userAccess; }