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;
}