From 9f42438714ad5773bd131b96cdd2156733c176aa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Nov 2011 18:52:59 +0100 Subject: [PATCH] New: Add hidden option PROJECT_HIDE_UNSELECTABLES --- ChangeLog | 1 + htdocs/core/lib/project.lib.php | 964 ++++++++++++++++---------------- 2 files changed, 490 insertions(+), 475 deletions(-) diff --git a/ChangeLog b/ChangeLog index 91ceabcc950..2260686f30d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24,6 +24,7 @@ For users: - New: Can search on part of barcode into POS module. - New: Cheques into cheques receipts are ordered by operation date. - New: Add hidden option MAIN_DISABLE_PDF_AUTOUPDATE to avoid generating pdf each time data change. +- New: Add hidden option PROJECT_HIDE_UNSELECTABLES to hide project you can't select into combo list. - Fix: Can use POS module with several concurrent users. For developers: diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index d60163cac45..f72620ce790 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -1,22 +1,22 @@ * Copyright (C) 2010 Regis Houssin - * Copyright (C) 2011 Juanjo Menent - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * or see http://www.gnu.org/ - */ +* Copyright (C) 2011 Juanjo Menent +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* or see http://www.gnu.org/ +*/ /** * \file htdocs/core/lib/project.lib.php @@ -28,28 +28,28 @@ require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php"); function project_prepare_head($object) { - global $langs, $conf, $user; - $h = 0; - $head = array(); + global $langs, $conf, $user; + $h = 0; + $head = array(); - $head[$h][0] = DOL_URL_ROOT.'/projet/fiche.php?id='.$object->id; - $head[$h][1] = $langs->trans("Project"); + $head[$h][0] = DOL_URL_ROOT.'/projet/fiche.php?id='.$object->id; + $head[$h][1] = $langs->trans("Project"); $head[$h][2] = 'project'; - $h++; + $h++; $head[$h][0] = DOL_URL_ROOT.'/projet/contact.php?id='.$object->id; $head[$h][1] = $langs->trans("ProjectContact"); $head[$h][2] = 'contact'; $h++; - if ($conf->fournisseur->enabled || $conf->propal->enabled || $conf->commande->enabled || $conf->facture->enabled || $conf->contrat->enabled - || $conf->ficheinter->enabled || $conf->agenda->enabled || $conf->deplacement->enabled) - { - $head[$h][0] = DOL_URL_ROOT.'/projet/element.php?id='.$object->id; - $head[$h][1] = $langs->trans("Referers"); - $head[$h][2] = 'element'; - $h++; - } + if ($conf->fournisseur->enabled || $conf->propal->enabled || $conf->commande->enabled || $conf->facture->enabled || $conf->contrat->enabled + || $conf->ficheinter->enabled || $conf->agenda->enabled || $conf->deplacement->enabled) + { + $head[$h][0] = DOL_URL_ROOT.'/projet/element.php?id='.$object->id; + $head[$h][1] = $langs->trans("Referers"); + $head[$h][2] = 'element'; + $h++; + } // Show more tabs from modules // Entries must be declared in modules descriptor with line @@ -58,38 +58,38 @@ function project_prepare_head($object) complete_head_from_modules($conf,$langs,$object,$head,$h,'project'); $head[$h][0] = DOL_URL_ROOT.'/projet/document.php?id='.$object->id; - /*$filesdir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->ref); - include_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'); - $listoffiles=dol_dir_list($filesdir,'files',1); - $head[$h][1] = (count($listoffiles)?$langs->trans('DocumentsNb',count($listoffiles)):$langs->trans('Documents'));*/ - $head[$h][1] = $langs->trans('Documents'); - $head[$h][2] = 'document'; - $h++; + /*$filesdir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->ref); + include_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'); + $listoffiles=dol_dir_list($filesdir,'files',1); + $head[$h][1] = (count($listoffiles)?$langs->trans('DocumentsNb',count($listoffiles)):$langs->trans('Documents'));*/ + $head[$h][1] = $langs->trans('Documents'); + $head[$h][2] = 'document'; + $h++; - $head[$h][0] = DOL_URL_ROOT.'/projet/note.php?id='.$object->id; - $head[$h][1] = $langs->trans('Notes'); - $head[$h][2] = 'note'; - $h++; + $head[$h][0] = DOL_URL_ROOT.'/projet/note.php?id='.$object->id; + $head[$h][1] = $langs->trans('Notes'); + $head[$h][2] = 'note'; + $h++; // Then tab for sub level of projet, i mean tasks - $head[$h][0] = DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id; - $head[$h][1] = $langs->trans("Tasks"); + $head[$h][0] = DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id; + $head[$h][1] = $langs->trans("Tasks"); $head[$h][2] = 'tasks'; - $h++; + $h++; - /* Now this is a filter in the Task tab. - $head[$h][0] = DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id.'&mode=mine'; - $head[$h][1] = $langs->trans("MyTasks"); + /* Now this is a filter in the Task tab. + $head[$h][0] = DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id.'&mode=mine'; + $head[$h][1] = $langs->trans("MyTasks"); $head[$h][2] = 'mytasks'; - $h++; - */ + $h++; + */ - $head[$h][0] = DOL_URL_ROOT.'/projet/ganttview.php?id='.$object->id; - $head[$h][1] = $langs->trans("Gantt"); + $head[$h][0] = DOL_URL_ROOT.'/projet/ganttview.php?id='.$object->id; + $head[$h][1] = $langs->trans("Gantt"); $head[$h][2] = 'gantt'; $h++; - return $head; + return $head; } @@ -100,24 +100,24 @@ function project_prepare_head($object) */ function task_prepare_head($object) { - global $langs, $conf, $user; - $h = 0; - $head = array(); + global $langs, $conf, $user; + $h = 0; + $head = array(); - $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/task.php?id='.$object->id; - $head[$h][1] = $langs->trans("Card"); - $head[$h][2] = 'task'; - $h++; + $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/task.php?id='.$object->id; + $head[$h][1] = $langs->trans("Card"); + $head[$h][2] = 'task'; + $h++; - $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/contact.php?id='.$object->id; - $head[$h][1] = $langs->trans("TaskRessourceLinks"); - $head[$h][2] = 'contact'; - $h++; + $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/contact.php?id='.$object->id; + $head[$h][1] = $langs->trans("TaskRessourceLinks"); + $head[$h][2] = 'contact'; + $h++; - $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/time.php?id='.$object->id; - $head[$h][1] = $langs->trans("TimeSpent"); - $head[$h][2] = 'time'; - $h++; + $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/time.php?id='.$object->id; + $head[$h][1] = $langs->trans("TimeSpent"); + $head[$h][2] = 'time'; + $h++; // Show more tabs from modules // Entries must be declared in modules descriptor with line @@ -126,113 +126,127 @@ function task_prepare_head($object) complete_head_from_modules($conf,$langs,$object,$head,$h,'task'); $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/document.php?id='.$object->id; - /*$filesdir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->ref); - include_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'); - $listoffiles=dol_dir_list($filesdir,'files',1); - $head[$h][1] = (count($listoffiles)?$langs->trans('DocumentsNb',count($listoffiles)):$langs->trans('Documents'));*/ - $head[$h][1] = $langs->trans('Documents'); - $head[$h][2] = 'document'; - $h++; + /*$filesdir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->ref); + include_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'); + $listoffiles=dol_dir_list($filesdir,'files',1); + $head[$h][1] = (count($listoffiles)?$langs->trans('DocumentsNb',count($listoffiles)):$langs->trans('Documents'));*/ + $head[$h][1] = $langs->trans('Documents'); + $head[$h][2] = 'document'; + $h++; - $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/note.php?id='.$object->id; - $head[$h][1] = $langs->trans('Notes'); - $head[$h][2] = 'note'; - $h++; + $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/note.php?id='.$object->id; + $head[$h][1] = $langs->trans('Notes'); + $head[$h][2] = 'note'; + $h++; - return $head; + return $head; } /** - * \brief Show a combo list with projects qualified for a third party - * \param socid Id third party (-1=all, 0=only projects not linked to a third party, id=projects not linked or linked to third party id) - * \param selected Id project preselected - * \param htmlname Nom de la zone html - * \return int Nbre of project if OK, <0 if KO + * Show a combo list with projects qualified for a third party + * + * @param int $socid Id third party (-1=all, 0=only projects not linked to a third party, id=projects not linked or linked to third party id) + * @param int $selected Id project preselected + * @param string $htmlname Nom de la zone html + * @return int Nbre of project if OK, <0 if KO */ function select_projects($socid=-1, $selected='', $htmlname='projectid') { - global $db,$user,$conf,$langs; + global $db,$user,$conf,$langs; - $projectstatic=new Project($db); - $projectsListId = ''; - if (empty($user->rights->projet->all->lire)) - { - $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1); - } + $hideunselectables = false; + if (! empty($conf->global->PROJECT_HIDE_UNSELECTABLES)) $hideunselectables = true; - // On recherche les projets - $sql = 'SELECT p.rowid, p.ref, p.title, p.fk_soc, p.fk_statut, p.public'; - $sql.= ' FROM '.MAIN_DB_PREFIX .'projet as p'; - $sql.= " WHERE p.entity = ".$conf->entity; - if ($projectsListId) $sql.= " AND p.rowid in (".$projectsListId.")"; - if ($socid == 0) $sql.= " AND (p.fk_soc=0 OR p.fk_soc IS NULL)"; - //if ($socid > 0) $sql.= " AND (p.fk_soc=".$socid." OR p.fk_soc='0' OR p.fk_soc IS NULL)"; // We will filter later - $sql.= " ORDER BY p.title ASC"; + $projectstatic=new Project($db); + $projectsListId = ''; + if (empty($user->rights->projet->all->lire)) + { + $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1); + } - //print $sql; - //var_dump($user->rights); - dol_syslog("project.lib::select_projects sql=".$sql); - $resql=$db->query($sql); - if ($resql) - { - print ''; - $db->free($resql); - return $num; - } - else - { - dol_print_error($db); - return -1; - } + // On recherche les projets + $sql = 'SELECT p.rowid, p.ref, p.title, p.fk_soc, p.fk_statut, p.public'; + $sql.= ' FROM '.MAIN_DB_PREFIX .'projet as p'; + $sql.= " WHERE p.entity = ".$conf->entity; + if ($projectsListId) $sql.= " AND p.rowid in (".$projectsListId.")"; + if ($socid == 0) $sql.= " AND (p.fk_soc=0 OR p.fk_soc IS NULL)"; + //if ($socid > 0) $sql.= " AND (p.fk_soc=".$socid." OR p.fk_soc='0' OR p.fk_soc IS NULL)"; // We will filter later + $sql.= " ORDER BY p.title ASC"; + + //print $sql; + //var_dump($user->rights); + dol_syslog("project.lib::select_projects sql=".$sql); + $resql=$db->query($sql); + if ($resql) + { + print ''; + $db->free($resql); + return $num; + } + else + { + dol_print_error($db); + return -1; + } } @@ -249,104 +263,104 @@ function select_projects($socid=-1, $selected='', $htmlname='projectid') */ function PLinesb(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mytask=0) { - global $user, $bc, $langs; - global $form; + global $user, $bc, $langs; + global $form; - $lastprojectid=0; + $lastprojectid=0; - $projectstatic = new Project($db); - $taskstatic = new Task($db); + $projectstatic = new Project($db); + $taskstatic = new Task($db); - $var=true; + $var=true; - $numlines=count($lines); - for ($i = 0 ; $i < $numlines ; $i++) - { - if ($parent == 0) $level = 0; + $numlines=count($lines); + for ($i = 0 ; $i < $numlines ; $i++) + { + if ($parent == 0) $level = 0; - if ($lines[$i]->fk_parent == $parent) - { - // Break on a new project - if ($parent == 0 && $lines[$i]->fk_project != $lastprojectid) - { - $var = !$var; - $lastprojectid=$lines[$i]->fk_project; - } + if ($lines[$i]->fk_parent == $parent) + { + // Break on a new project + if ($parent == 0 && $lines[$i]->fk_project != $lastprojectid) + { + $var = !$var; + $lastprojectid=$lines[$i]->fk_project; + } - print "\n"; + print "\n"; - // Project - print ""; - $projectstatic->id=$lines[$i]->fk_project; - $projectstatic->ref=$lines[$i]->projectref; - $projectstatic->public=$lines[$i]->public; - $projectstatic->label=$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project]; - print $projectstatic->getNomUrl(1); - print ""; + // Project + print ""; + $projectstatic->id=$lines[$i]->fk_project; + $projectstatic->ref=$lines[$i]->projectref; + $projectstatic->public=$lines[$i]->public; + $projectstatic->label=$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project]; + print $projectstatic->getNomUrl(1); + print ""; - // Ref - print ''; - $taskstatic->id=$lines[$i]->id; - $taskstatic->ref=$lines[$i]->id; - print $taskstatic->getNomUrl(1); - print ''; + // Ref + print ''; + $taskstatic->id=$lines[$i]->id; + $taskstatic->ref=$lines[$i]->id; + print $taskstatic->getNomUrl(1); + print ''; - // Label task - print ""; + // Label task + print ""; - for ($k = 0 ; $k < $level ; $k++) - { - print "   "; - } - print $lines[$i]->label; - print "\n"; + for ($k = 0 ; $k < $level ; $k++) + { + print "   "; + } + print $lines[$i]->label; + print "\n"; - // Time spent - print ''; - if ($lines[$i]->duration) print ConvertSecondToTime($lines[$i]->duration,'all'); - else print '--:--'; - print "\n"; + // Time spent + print ''; + if ($lines[$i]->duration) print ConvertSecondToTime($lines[$i]->duration,'all'); + else print '--:--'; + print "\n"; - $disabledproject=1;$disabledtask=1; - //print "x".$lines[$i]->fk_project; - //var_dump($lines[$i]); - //var_dump($projectsrole[$lines[$i]->fk_project]); - // If at least one role for project - if ($lines[$i]->public || ! empty($projectsrole[$lines[$i]->fk_project]) || $user->rights->projet->all->creer) - { - $disabledproject=0; + $disabledproject=1;$disabledtask=1; + //print "x".$lines[$i]->fk_project; + //var_dump($lines[$i]); + //var_dump($projectsrole[$lines[$i]->fk_project]); + // If at least one role for project + if ($lines[$i]->public || ! empty($projectsrole[$lines[$i]->fk_project]) || $user->rights->projet->all->creer) + { + $disabledproject=0; $disabledtask=0; - } + } // If mytask and no role on task if ($mytask && empty($tasksrole[$lines[$i]->id])) { $disabledtask=1; } - print ''; - print $form->select_date('',$lines[$i]->id,'','','',"addtime",1,0,1,$disabledtask); - print '   '; - print $form->select_duration($lines[$i]->id,'',$disabledtask); - print ' '; + print ''; + print $form->select_date('',$lines[$i]->id,'','','',"addtime",1,0,1,$disabledtask); + print '   '; + print $form->select_duration($lines[$i]->id,'',$disabledtask); + print ' '; if ($disabledtask) print '('.$langs->trans("TaskIsNotAffectedToYou").')'; - if ((! $lines[$i]->public) && $disabledproject) print '('.$langs->trans("YouAreNotContactOfProject").')'; - print ''; - print " "; - print ''; + if ((! $lines[$i]->public) && $disabledproject) print '('.$langs->trans("YouAreNotContactOfProject").')'; + print ''; + print " "; + print ''; - print "\n"; - $inc++; - $level++; - if ($lines[$i]->id) PLinesb($inc, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mytask); - $level--; - } - else - { - //$level--; - } - } + print "\n"; + $inc++; + $level++; + if ($lines[$i]->id) PLinesb($inc, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mytask); + $level--; + } + else + { + //$level--; + } + } - return $inc; + return $inc; } @@ -363,147 +377,147 @@ function PLinesb(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $ */ function PLines(&$inc, $parent, &$lines, &$level, $var, $showproject, &$taskrole, $projectsListId='') { - global $user, $bc, $langs; + global $user, $bc, $langs; - $lastprojectid=0; + $lastprojectid=0; - $projectstatic = new Project($db); - $taskstatic = new Task($db); + $projectstatic = new Project($db); + $taskstatic = new Task($db); - $projectsArrayId=explode(',',$projectsListId); + $projectsArrayId=explode(',',$projectsListId); - $numlines=count($lines); + $numlines=count($lines); - $total=0; + $total=0; - for ($i = 0 ; $i < $numlines ; $i++) - { - if ($parent == 0) $level = 0; + for ($i = 0 ; $i < $numlines ; $i++) + { + if ($parent == 0) $level = 0; - // Process line - // print "i:".$i."-".$lines[$i]->fk_project.'
'; + // Process line + // print "i:".$i."-".$lines[$i]->fk_project.'
'; - if ($lines[$i]->fk_parent == $parent) - { - // Show task line. - $showline=1; - $showlineingray=0; + if ($lines[$i]->fk_parent == $parent) + { + // Show task line. + $showline=1; + $showlineingray=0; - // If there is filters to use - if (is_array($taskrole)) - { - // If task not legitimate to show, search if a legitimate task exists later in tree - if (! isset($taskrole[$lines[$i]->id]) && $lines[$i]->id != $lines[$i]->fk_parent) - { - // So search if task has a subtask legitimate to show - $foundtaskforuserdeeper=0; - SearchTaskInChild($foundtaskforuserdeeper,$lines[$i]->id,$lines,$taskrole); - //print '$foundtaskforuserpeeper='.$foundtaskforuserdeeper.'
'; - if ($foundtaskforuserdeeper > 0) - { - $showlineingray=1; // We will show line but in gray - } - else - { - $showline=0; // No reason to show line - } - } - } + // If there is filters to use + if (is_array($taskrole)) + { + // If task not legitimate to show, search if a legitimate task exists later in tree + if (! isset($taskrole[$lines[$i]->id]) && $lines[$i]->id != $lines[$i]->fk_parent) + { + // So search if task has a subtask legitimate to show + $foundtaskforuserdeeper=0; + SearchTaskInChild($foundtaskforuserdeeper,$lines[$i]->id,$lines,$taskrole); + //print '$foundtaskforuserpeeper='.$foundtaskforuserdeeper.'
'; + if ($foundtaskforuserdeeper > 0) + { + $showlineingray=1; // We will show line but in gray + } + else + { + $showline=0; // No reason to show line + } + } + } - if ($showline) - { - // Break on a new project - if ($parent == 0 && $lines[$i]->fk_project != $lastprojectid) - { - $var = !$var; - $lastprojectid=$lines[$i]->fk_project; - } + if ($showline) + { + // Break on a new project + if ($parent == 0 && $lines[$i]->fk_project != $lastprojectid) + { + $var = !$var; + $lastprojectid=$lines[$i]->fk_project; + } - print "\n"; + print "\n"; - // Project - if ($showproject) - { - print ""; - //var_dump($taskrole); - 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)) print $projectstatic->getNomUrl(1); - else print $projectstatic->getNomUrl(1,'nolink'); - if ($showlineingray) print ''; - print ""; - } + // Project + if ($showproject) + { + print ""; + //var_dump($taskrole); + 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)) print $projectstatic->getNomUrl(1); + else print $projectstatic->getNomUrl(1,'nolink'); + if ($showlineingray) print ''; + print ""; + } - // Ref of task - print ''; - if ($showlineingray) - { - print ''.img_object('','projecttask').' '.$lines[$i]->id.''; - } - else - { - $taskstatic->id=$lines[$i]->id; - $taskstatic->ref=$lines[$i]->id; - $taskstatic->label=($taskrole[$lines[$i]->id]?$langs->trans("YourRole").': '.$taskrole[$lines[$i]->id]:''); - print $taskstatic->getNomUrl(1); - } - print ''; + // Ref of task + print ''; + if ($showlineingray) + { + print ''.img_object('','projecttask').' '.$lines[$i]->id.''; + } + else + { + $taskstatic->id=$lines[$i]->id; + $taskstatic->ref=$lines[$i]->id; + $taskstatic->label=($taskrole[$lines[$i]->id]?$langs->trans("YourRole").': '.$taskrole[$lines[$i]->id]:''); + print $taskstatic->getNomUrl(1); + } + print ''; - // Title of task - print ""; - if ($showlineingray) print ''; - else print ''; - for ($k = 0 ; $k < $level ; $k++) - { - print "     "; - } - print $lines[$i]->label; - if ($showlineingray) print ''; - else print ''; - print "\n"; + // Title of task + print ""; + if ($showlineingray) print ''; + else print ''; + for ($k = 0 ; $k < $level ; $k++) + { + print "     "; + } + print $lines[$i]->label; + if ($showlineingray) print ''; + else print ''; + print "\n"; - // Progress - print ''; - print $lines[$i]->progress.' %'; - print ''; + // Progress + print ''; + print $lines[$i]->progress.' %'; + print ''; - // Time spent - print ''; - if ($showlineingray) print ''; - else print ''; - if ($lines[$i]->duration) print ConvertSecondToTime($lines[$i]->duration,'all'); - else print '--:--'; - if ($showlineingray) print ''; - else print ''; - print ''; + // Time spent + print ''; + if ($showlineingray) print ''; + else print ''; + if ($lines[$i]->duration) print ConvertSecondToTime($lines[$i]->duration,'all'); + else print '--:--'; + if ($showlineingray) print ''; + else print ''; + print ''; - print "\n"; + print "\n"; - if (! $showlineingray) $inc++; + if (! $showlineingray) $inc++; - $level++; - if ($lines[$i]->id) PLines($inc, $lines[$i]->id, $lines, $level, $var, $showproject, $taskrole, $projectsListId); - $level--; - $total += $lines[$i]->duration; - } - } - else - { - //$level--; - } - } + $level++; + if ($lines[$i]->id) PLines($inc, $lines[$i]->id, $lines, $level, $var, $showproject, $taskrole, $projectsListId); + $level--; + $total += $lines[$i]->duration; + } + } + else + { + //$level--; + } + } - if ($total>0) - { - print ''.$langs->trans("Total").''; - print ''; - print ''; - print ''.ConvertSecondToTime($total).''; - } + if ($total>0) + { + print ''.$langs->trans("Total").''; + print ''; + print ''; + print ''.ConvertSecondToTime($total).''; + } - return $inc; + return $inc; } @@ -517,29 +531,29 @@ function PLines(&$inc, $parent, &$lines, &$level, $var, $showproject, &$taskrole */ function SearchTaskInChild(&$inc, $parent, &$lines, &$taskrole) { - //print 'Search in line with parent id = '.$parent.'
'; - $numlines=count($lines); + //print 'Search in line with parent id = '.$parent.'
'; + $numlines=count($lines); for ($i = 0 ; $i < $numlines ; $i++) - { - // Process line $lines[$i] - if ($lines[$i]->fk_parent == $parent && $lines[$i]->id != $lines[$i]->fk_parent) - { - // If task is legitimate to show, no more need to search deeper - if (isset($taskrole[$lines[$i]->id])) - { - //print 'Found a legitimate task id='.$lines[$i]->id.'
'; - $inc++; - return $inc; - } + { + // Process line $lines[$i] + if ($lines[$i]->fk_parent == $parent && $lines[$i]->id != $lines[$i]->fk_parent) + { + // If task is legitimate to show, no more need to search deeper + if (isset($taskrole[$lines[$i]->id])) + { + //print 'Found a legitimate task id='.$lines[$i]->id.'
'; + $inc++; + return $inc; + } - SearchTaskInChild($inc, $lines[$i]->id, $lines, $taskrole); - //print 'Found inc='.$inc.'
'; + SearchTaskInChild($inc, $lines[$i]->id, $lines, $taskrole); + //print 'Found inc='.$inc.'
'; - if ($inc > 0) return $inc; - } - } + if ($inc > 0) return $inc; + } + } - return $inc; + return $inc; } @@ -550,52 +564,52 @@ function SearchTaskInChild(&$inc, $parent, &$lines, &$taskrole) */ function clean_orphelins($db) { - $nb=0; + $nb=0; - // There is orphelins. We clean that - $listofid=array(); + // There is orphelins. We clean that + $listofid=array(); - // Get list of id in array listofid - $sql='SELECT rowid FROM '.MAIN_DB_PREFIX.'projet_task'; - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; - while ($i < $num && $i < 100) - { - $obj = $db->fetch_object($resql); - $listofid[]=$obj->rowid; - $i++; - } - } - else - { - dol_print_error($db); - } + // Get list of id in array listofid + $sql='SELECT rowid FROM '.MAIN_DB_PREFIX.'projet_task'; + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + $i = 0; + while ($i < $num && $i < 100) + { + $obj = $db->fetch_object($resql); + $listofid[]=$obj->rowid; + $i++; + } + } + else + { + dol_print_error($db); + } - if (count($listofid)) - { - // Removed orphelins records - print 'Some orphelins were found and restored to be parents so records are visible again: '; - print join(',',$listofid); + if (count($listofid)) + { + // Removed orphelins records + print 'Some orphelins were found and restored to be parents so records are visible again: '; + print join(',',$listofid); - $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task"; - $sql.= " SET fk_task_parent = 0"; - $sql.= " WHERE fk_task_parent NOT IN (".join(',',$listofid).")"; + $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task"; + $sql.= " SET fk_task_parent = 0"; + $sql.= " WHERE fk_task_parent NOT IN (".join(',',$listofid).")"; - $resql = $db->query($sql); - if ($resql) - { - $nb=$db->affected_rows($sql); + $resql = $db->query($sql); + if ($resql) + { + $nb=$db->affected_rows($sql); - return $nb; - } - else - { - return -1; - } - } + return $nb; + } + else + { + return -1; + } + } } @@ -609,35 +623,35 @@ function clean_orphelins($db) */ function print_projecttasks_array($db, $socid, $projectsListId, $mytasks=0) { - global $langs,$conf,$user,$bc; + global $langs,$conf,$user,$bc; - require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php"); + require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php"); - $projectstatic=new Project($db); + $projectstatic=new Project($db); - $sortfield=''; - $sortorder=''; + $sortfield=''; + $sortorder=''; - print ''; - print ''; - print_liste_field_titre($langs->trans("Project"),"index.php","","","","",$sortfield,$sortorder); - print_liste_field_titre($langs->trans("NbOpenTasks"),"","","","",'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Status"),"","","","",'align="right"',$sortfield,$sortorder); - print "\n"; + print '
'; + print ''; + print_liste_field_titre($langs->trans("Project"),"index.php","","","","",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("NbOpenTasks"),"","","","",'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Status"),"","","","",'align="right"',$sortfield,$sortorder); + print "\n"; - $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"; - if ($mytasks) - { + $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"; + if ($mytasks) + { $sql.= ", ".MAIN_DB_PREFIX."projet_task as t"; - $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec"; + $sql.= ", ".MAIN_DB_PREFIX."element_contact as ec"; $sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc"; - } - else - { + } + else + { $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task as t ON p.rowid = t.fk_projet"; - } - $sql.= " WHERE p.entity = ".$conf->entity; + } + $sql.= " WHERE p.entity = ".$conf->entity; $sql.= " AND p.rowid IN (".$projectsListId.")"; if ($socid) $sql.= " AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".$socid.")"; if ($mytasks) @@ -649,49 +663,49 @@ function print_projecttasks_array($db, $socid, $projectsListId, $mytasks=0) $sql.= " AND ec.fk_socpeople = ".$user->id; } $sql.= " GROUP BY p.rowid, p.ref, p.title, p.fk_user_creat, p.public, p.fk_statut"; - $sql.= " ORDER BY p.title, p.ref"; - - $var=true; - $resql = $db->query($sql); - if ( $resql ) - { - $num = $db->num_rows($resql); - $i = 0; + $sql.= " ORDER BY p.title, p.ref"; - while ($i < $num) - { - $objp = $db->fetch_object($resql); + $var=true; + $resql = $db->query($sql); + if ( $resql ) + { + $num = $db->num_rows($resql); + $i = 0; - $projectstatic->id = $objp->projectid; - $projectstatic->user_author_id = $objp->fk_user_creat; - $projectstatic->public = $objp->public; + while ($i < $num) + { + $objp = $db->fetch_object($resql); - // Check is user has read permission on project - $userAccess = $projectstatic->restrictedProjectArea($user,1); - if ($userAccess >= 0) - { - $var=!$var; - print ""; - print ''; - print ''; - $projectstatic->statut = $objp->fk_statut; - print ''; - print "\n"; - } + $projectstatic->id = $objp->projectid; + $projectstatic->user_author_id = $objp->fk_user_creat; + $projectstatic->public = $objp->public; - $i++; - } + // Check is user has read permission on project + $userAccess = $projectstatic->restrictedProjectArea($user,1); + if ($userAccess >= 0) + { + $var=!$var; + print ""; + print ''; + print ''; + $projectstatic->statut = $objp->fk_statut; + print ''; + print "\n"; + } - $db->free($resql); - } - else - { - dol_print_error($db); - } - print "
'; - $projectstatic->ref=$objp->ref; - print $projectstatic->getNomUrl(1); - print ' - '.$objp->title.''.$objp->nb.''.$projectstatic->getLibStatut(3).'
'; + $projectstatic->ref=$objp->ref; + print $projectstatic->getNomUrl(1); + print ' - '.$objp->title.''.$objp->nb.''.$projectstatic->getLibStatut(3).'
"; + $i++; + } + + $db->free($resql); + } + else + { + dol_print_error($db); + } + print ""; } ?> \ No newline at end of file