diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php
index 733a83a500f..efbaa78557e 100644
--- a/htdocs/core/lib/project.lib.php
+++ b/htdocs/core/lib/project.lib.php
@@ -344,13 +344,13 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
{
// Project ref
print "
";
- if ($showlineingray) print '';
+ //if ($showlineingray) print '';
$projectstatic->id=$lines[$i]->fk_project;
$projectstatic->ref=$lines[$i]->projectref;
$projectstatic->public=$lines[$i]->public;
if ($lines[$i]->public || in_array($lines[$i]->fk_project,$projectsArrayId) || ! empty($user->rights->projet->all->lire)) print $projectstatic->getNomUrl(1);
else print $projectstatic->getNomUrl(1,'nolink');
- if ($showlineingray) print '';
+ //if ($showlineingray) print '';
print " | ";
// Project status
diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php
index 0b490aff863..ca8ed73e10d 100644
--- a/htdocs/projet/class/task.class.php
+++ b/htdocs/projet/class/task.class.php
@@ -575,25 +575,60 @@ class Task extends CommonObject
if ($mode == 0)
{
$sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
+ if ($filteronprojuser > 0)
+ {
+ $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec";
+ $sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc";
+ }
$sql.= ", ".MAIN_DB_PREFIX."projet_task as t";
+ if ($filterontaskuser > 0)
+ {
+ $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec2";
+ $sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc2";
+ }
$sql.= " WHERE p.entity = ".$conf->entity;
$sql.= " AND t.fk_projet = p.rowid";
}
elseif ($mode == 1)
{
$sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
- $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task as t on t.fk_projet = p.rowid";
+ if ($filteronprojuser > 0)
+ {
+ $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec";
+ $sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc";
+ }
+ if ($filterontaskuser > 0)
+ {
+ $sql.= ", ".MAIN_DB_PREFIX."projet_task as t";
+ $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec2";
+ $sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc2";
+ }
+ else
+ {
+ $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task as t on t.fk_projet = p.rowid";
+ }
$sql.= " WHERE p.entity = ".$conf->entity;
}
else return 'BadValueForParameterMode';
if ($filteronprojuser > 0)
{
- // TODO
+ $sql.= " AND p.rowid = ec.element_id";
+ $sql.= " AND ctc.rowid = ec.fk_c_type_contact";
+ $sql.= " AND ctc.element = 'project'";
+ $sql.= " AND ec.fk_socpeople = ".$filteronprojuser;
+ $sql.= " AND ec.statut = 4";
+ $sql.= " AND ctc.source = 'internal'";
}
if ($filterontaskuser > 0)
{
- // TODO
+ $sql.= " AND t.fk_projet = p.rowid";
+ $sql.= " AND p.rowid = ec2.element_id";
+ $sql.= " AND ctc2.rowid = ec2.fk_c_type_contact";
+ $sql.= " AND ctc2.element = 'project_task'";
+ $sql.= " AND ec2.fk_socpeople = ".$filterontaskuser;
+ $sql.= " AND ec2.statut = 4";
+ $sql.= " AND ctc2.source = 'internal'";
}
if ($socid) $sql.= " AND p.fk_soc = ".$socid;
if ($projectid) $sql.= " AND p.rowid in (".$projectid.")";
diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php
index 3f9aea52444..2475074d941 100644
--- a/htdocs/projet/list.php
+++ b/htdocs/projet/list.php
@@ -318,7 +318,6 @@ if ($resql)
}
// If the user can view prospects other than his'
- if ($mine) $search_user=$user->id;
$moreforfilter.='';
$moreforfilter.=$langs->trans('ProjectsWithThisUserAsContact'). ': ';
$includeonly='';
diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php
index e3540afc1aa..d23617192b3 100644
--- a/htdocs/projet/tasks/list.php
+++ b/htdocs/projet/tasks/list.php
@@ -128,7 +128,7 @@ if ($search_all) $morewherefilter.=natural_search(array_keys($fieldstosea
if ($search_task_ref) $morewherefilter.=natural_search('t.ref', $search_task_ref);
if ($search_task_label) $morewherefilter.=natural_search('t.label', $search_task_label);
-$tasksarray=$taskstatic->getTasksArray(0, 0, $projectstatic->id, $socid, 0, $search_project, $search_status, $morewherefilter, $search_project_user, $search_task_user);
+$tasksarray=$taskstatic->getTasksArray(0, 0, $projectstatic->id, $socid, 0, $search_project, $search_status, $morewherefilter, $search_project_user, 0); // We don't use filter on task user. Because sometimes a task is assigned but not the parent one and we want to show also parent, so filtering is done during output
$tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0, ($tuser->id?$tuser:null), $projectstatic->id, 0, $search_status); // We load also tasks limited to a particular user
print '
';
// If the user can view users
-if ($mine) $search_task_user=$user->id;
$moreforfilter.='';
$moreforfilter.=$langs->trans('TasksWithThisUserAsContact'). ': ';
$includeonly='';