From 9379e28a94bd0874bb2a5f2d63a0ba7a6a048f8f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 18 Sep 2014 09:59:29 +0200 Subject: [PATCH] Perf: Avoid duplicate load of project --- htdocs/projet/contact.php | 142 +++++++++++++++++------------------- htdocs/projet/document.php | 8 +- htdocs/projet/element.php | 15 ++-- htdocs/projet/fiche.php | 5 +- htdocs/projet/ganttview.php | 11 +-- htdocs/projet/note.php | 127 ++++++++++++++++---------------- htdocs/projet/tasks.php | 14 ++-- 7 files changed, 153 insertions(+), 169 deletions(-) diff --git a/htdocs/projet/contact.php b/htdocs/projet/contact.php index f4815c936f9..f359f789c3f 100644 --- a/htdocs/projet/contact.php +++ b/htdocs/projet/contact.php @@ -41,9 +41,10 @@ $mine = GETPOST('mode')=='mine' ? 1 : 0; //if (! $user->rights->projet->all->lire) $mine=1; // Special for projects $object = new Project($db); -if ($ref) +if ($id > 0 || ! empty($ref)) { - $object->fetch(0,$ref); + $object->fetch($id,$ref); + $object->fetch_thirdparty(); $id=$object->id; } @@ -140,82 +141,73 @@ $userstatic=new User($db); if ($id > 0 || ! empty($ref)) { - if ( $object->fetch($id,$ref) > 0) + // To verify role of users + //$userAccess = $object->restrictedProjectArea($user,'read'); + $userWrite = $object->restrictedProjectArea($user,'write'); + //$userDelete = $object->restrictedProjectArea($user,'delete'); + //print "userAccess=".$userAccess." userWrite=".$userWrite." userDelete=".$userDelete; + + $head = project_prepare_head($object); + dol_fiche_head($head, 'contact', $langs->trans("Project"), 0, ($object->public?'projectpub':'project')); + + + /* + * Projet synthese pour rappel + */ + print ''; + + $linkback = ''.$langs->trans("BackToList").''; + + // Ref + print ''; + + // Label + print ''; + + // Customer + print ""; + print ''; + + // Visibility + print ''; + + // Statut + print ''; + + // Date start + print ''; + + // Date end + print ''; + + print "
'.$langs->trans('Ref').''; + // Define a complementary filter for search of next/prev ref. + if (! $user->rights->projet->all->lire) { - if ($object->societe->id > 0) $result=$object->societe->fetch($object->societe->id); - - // To verify role of users - //$userAccess = $object->restrictedProjectArea($user,'read'); - $userWrite = $object->restrictedProjectArea($user,'write'); - //$userDelete = $object->restrictedProjectArea($user,'delete'); - //print "userAccess=".$userAccess." userWrite=".$userWrite." userDelete=".$userDelete; - - $head = project_prepare_head($object); - dol_fiche_head($head, 'contact', $langs->trans("Project"), 0, ($object->public?'projectpub':'project')); - - - /* - * Projet synthese pour rappel - */ - print ''; - - $linkback = ''.$langs->trans("BackToList").''; - - // Ref - print ''; - - // Label - print ''; - - // Customer - print ""; - print ''; - - // Visibility - print ''; - - // Statut - print ''; - - // Date start - print ''; - - // Date end - print ''; - - print "
'.$langs->trans('Ref').''; - // Define a complementary filter for search of next/prev ref. - if (! $user->rights->projet->all->lire) - { - $objectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); - $object->next_prev_filter=" rowid in (".(count($objectsListId)?join(',',array_keys($objectsListId)):'0').")"; - } - print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); - print '
'.$langs->trans("Label").''.$object->title.'
".$langs->trans("ThirdParty")."'; - if ($object->societe->id > 0) print $object->societe->getNomUrl(1); - else print ' '; - print '
'.$langs->trans("Visibility").''; - if ($object->public) print $langs->trans('SharedProject'); - else print $langs->trans('PrivateProject'); - print '
'.$langs->trans("Status").''.$object->getLibStatut(4).'
'.$langs->trans("DateStart").''; - print dol_print_date($object->date_start,'day'); - print '
'.$langs->trans("DateEnd").''; - print dol_print_date($object->date_end,'day'); - print '
"; - - print ''; - - // Contacts lines (modules that overwrite templates must declare this into descriptor) - $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); - foreach($dirtpls as $reldir) - { - $res=@include dol_buildpath($reldir.'/contacts.tpl.php'); - if ($res) break; - } + $objectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); + $object->next_prev_filter=" rowid in (".(count($objectsListId)?join(',',array_keys($objectsListId)):'0').")"; } - else + print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); + print '
'.$langs->trans("Label").''.$object->title.'
".$langs->trans("ThirdParty")."'; + if ($object->thirdparty->id > 0) print $object->thirdparty->getNomUrl(1); + else print ' '; + print '
'.$langs->trans("Visibility").''; + if ($object->public) print $langs->trans('SharedProject'); + else print $langs->trans('PrivateProject'); + print '
'.$langs->trans("Status").''.$object->getLibStatut(4).'
'.$langs->trans("DateStart").''; + print dol_print_date($object->date_start,'day'); + print '
'.$langs->trans("DateEnd").''; + print dol_print_date($object->date_end,'day'); + print '
"; + + print ''; + + // Contacts lines (modules that overwrite templates must declare this into descriptor) + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) { - print "ErrorRecordNotFound"; + $res=@include dol_buildpath($reldir.'/contacts.tpl.php'); + if ($res) break; } } diff --git a/htdocs/projet/document.php b/htdocs/projet/document.php index d40682d7ce6..611fc314481 100644 --- a/htdocs/projet/document.php +++ b/htdocs/projet/document.php @@ -46,9 +46,9 @@ if ($user->societe_id > 0) $socid=$user->societe_id; $result=restrictedArea($user,'projet',$id,''); $object = new Project($db); -$object->fetch($id,$ref); -if ($object->id > 0) +if ($id > 0 || ! empty($ref)) { + $object->fetch($id,$ref); $object->fetch_thirdparty(); $upload_dir = $conf->projet->dir_output . "/" . dol_sanitizeFileName($object->ref); } @@ -85,8 +85,6 @@ if ($object->id > 0) { $upload_dir = $conf->projet->dir_output.'/'.dol_sanitizeFileName($object->ref); - if ($object->societe->id > 0) $result=$object->societe->fetch($object->societe->id); - // To verify role of users //$userAccess = $object->restrictedProjectArea($user,'read'); $userWrite = $object->restrictedProjectArea($user,'write'); @@ -124,7 +122,7 @@ if ($object->id > 0) // Company print ''.$langs->trans("ThirdParty").''; - if (! empty($object->societe->id)) print $object->societe->getNomUrl(1); + if (! empty($object->thirdparty->id)) print $object->thirdparty->getNomUrl(1); else print ' '; print ''; diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index abdf6f81b5b..b5a1d089c96 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -61,12 +61,17 @@ $mine = $_REQUEST['mode']=='mine' ? 1 : 0; //if (! $user->rights->projet->all->lire) $mine=1; // Special for projects $project = new Project($db); -if ($ref) +if ($id > 0 || ! empty($ref)) { - $project->fetch(0,$ref); + $project->fetch($id,$ref); + $project->fetch_thirdparty(); $projectid=$project->id; -}else { +} +else +{ $project->fetch($projectid); + $project->fetch_thirdparty(); + $projectid=$project->id; } // Security check @@ -87,10 +92,6 @@ $formproject=new FormProjets($db); $userstatic=new User($db); -$project = new Project($db); -$project->fetch($projectid,$ref); -$project->fetch_thirdparty(); - // To verify role of users $userAccess = $project->restrictedProjectArea($user); diff --git a/htdocs/projet/fiche.php b/htdocs/projet/fiche.php index 0da67881a09..1fe3d91346d 100644 --- a/htdocs/projet/fiche.php +++ b/htdocs/projet/fiche.php @@ -49,10 +49,11 @@ $hookmanager->initHooks(array('projectcard')); $object = new Project($db); $extrafields = new ExtraFields($db); -$object->fetch($id,$ref); -if ($object->id > 0) +if ($id > 0 || ! empty($ref)) { + $object->fetch($id,$ref); $object->fetch_thirdparty(); + $id=$object->id; } // Security check diff --git a/htdocs/projet/ganttview.php b/htdocs/projet/ganttview.php index 79d302addd3..0c06c30ba57 100644 --- a/htdocs/projet/ganttview.php +++ b/htdocs/projet/ganttview.php @@ -38,9 +38,10 @@ $mine = ($mode == 'mine' ? 1 : 0); //if (! $user->rights->projet->all->lire) $mine=1; // Special for projects $object = new Project($db); -if ($ref) +if ($id > 0 || ! empty($ref)) { - $object->fetch(0,$ref); + $object->fetch($id,$ref); + $object->fetch_thirdparty(); $id=$object->id; } @@ -69,7 +70,6 @@ $formother=new FormOther($db); $userstatic=new User($db); $companystatic=new Societe($db); $task = new Task($db); -$object = new Project($db); $arrayofcss=array('/includes/jsgantt/jsgantt.css'); @@ -86,9 +86,6 @@ llxHeader("",$langs->trans("Tasks"),$help_url,'',0,0,$arrayofjs,$arrayofcss); if ($id > 0 || ! empty($ref)) { - $object->fetch($id,$ref); - if ($object->societe->id > 0) $result=$object->societe->fetch($object->societe->id); - // To verify role of users //$userAccess = $object->restrictedProjectArea($user,'read'); $userWrite = $object->restrictedProjectArea($user,'write'); @@ -123,7 +120,7 @@ if ($id > 0 || ! empty($ref)) print ''.$langs->trans("Label").''.$object->title.''; print ''.$langs->trans("ThirdParty").''; - if (! empty($object->societe->id)) print $object->societe->getNomUrl(1); + if (! empty($object->thirdparty->id)) print $object->thirdparty->getNomUrl(1); else print ' '; print ''; print ''; diff --git a/htdocs/projet/note.php b/htdocs/projet/note.php index 493141cbe95..a086f632a36 100644 --- a/htdocs/projet/note.php +++ b/htdocs/projet/note.php @@ -36,9 +36,10 @@ $mine = $_REQUEST['mode']=='mine' ? 1 : 0; //if (! $user->rights->projet->all->lire) $mine=1; // Special for projects $object = new Project($db); -if ($ref) +if ($id > 0 || ! empty($ref)) { - $object->fetch(0,$ref); + $object->fetch($id,$ref); + $object->fetch_thirdparty(); $id=$object->id; } @@ -66,77 +67,71 @@ llxHeader("",$langs->trans("Project"),$help_url); $form = new Form($db); $userstatic=new User($db); -$object = new Project($db); $now=dol_now(); if ($id > 0 || ! empty($ref)) { - if ($object->fetch($id, $ref)) + // To verify role of users + //$userAccess = $object->restrictedProjectArea($user,'read'); + $userWrite = $object->restrictedProjectArea($user,'write'); + //$userDelete = $object->restrictedProjectArea($user,'delete'); + //print "userAccess=".$userAccess." userWrite=".$userWrite." userDelete=".$userDelete; + + $head = project_prepare_head($object); + dol_fiche_head($head, 'notes', $langs->trans('Project'), 0, ($object->public?'projectpub':'project')); + + print ''; + + $linkback = ''.$langs->trans("BackToList").''; + + // Ref + print ''; + + // Label + print ''; + + // Third party + print ''; + + // Visibility + print ''; + + // Statut + print ''; + + // Date start + print ''; + + // Date end + print ''; + + print "
'.$langs->trans("Ref").''; + // Define a complementary filter for search of next/prev ref. + if (! $user->rights->projet->all->lire) { - if ($object->societe->id > 0) $result=$object->societe->fetch($object->societe->id); - - // To verify role of users - //$userAccess = $object->restrictedProjectArea($user,'read'); - $userWrite = $object->restrictedProjectArea($user,'write'); - //$userDelete = $object->restrictedProjectArea($user,'delete'); - //print "userAccess=".$userAccess." userWrite=".$userWrite." userDelete=".$userDelete; - - $head = project_prepare_head($object); - dol_fiche_head($head, 'notes', $langs->trans('Project'), 0, ($object->public?'projectpub':'project')); - - print ''; - - $linkback = ''.$langs->trans("BackToList").''; - - // Ref - print ''; - - // Label - print ''; - - // Third party - print ''; - - // Visibility - print ''; - - // Statut - print ''; - - // Date start - print ''; - - // Date end - print ''; - - print "
'.$langs->trans("Ref").''; - // Define a complementary filter for search of next/prev ref. - if (! $user->rights->projet->all->lire) - { - $projectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); - $object->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; - } - print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref'); - print '
'.$langs->trans("Label").''.$object->title.'
'.$langs->trans("ThirdParty").''; - if ($object->societe->id > 0) print $object->societe->getNomUrl(1); - else print' '; - print '
'.$langs->trans("Visibility").''; - if ($object->public) print $langs->trans('SharedProject'); - else print $langs->trans('PrivateProject'); - print '
'.$langs->trans("Status").''.$object->getLibStatut(4).'
'.$langs->trans("DateStart").''; - print dol_print_date($object->date_start,'day'); - print '
'.$langs->trans("DateEnd").''; - print dol_print_date($object->date_end,'day'); - print '
"; - - print '
'; - - $colwidth=30; - include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; - - dol_fiche_end();; + $projectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); + $object->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; } + print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref'); + print '
'.$langs->trans("Label").''.$object->title.'
'.$langs->trans("ThirdParty").''; + if ($object->thirdparty->id > 0) print $object->thirdparty->getNomUrl(1); + else print' '; + print '
'.$langs->trans("Visibility").''; + if ($object->public) print $langs->trans('SharedProject'); + else print $langs->trans('PrivateProject'); + print '
'.$langs->trans("Status").''.$object->getLibStatut(4).'
'.$langs->trans("DateStart").''; + print dol_print_date($object->date_start,'day'); + print '
'.$langs->trans("DateEnd").''; + print dol_print_date($object->date_end,'day'); + print '
"; + + print '
'; + + $colwidth=30; + include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; + + dol_fiche_end();; } llxFooter(); diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index f72b8c6963d..994779fcac9 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -47,7 +47,7 @@ $object = new Project($db); $taskstatic = new Task($db); $extrafields_project = new ExtraFields($db); $extrafields_task = new ExtraFields($db); -if ($id > 0 || $ref) +if ($id > 0 || ! empty($ref)) { $object->fetch($id,$ref); $id=$object->id; @@ -130,8 +130,8 @@ if ($action == 'createtask' && $user->rights->projet->creer) if ($taskid > 0) { $result = $task->add_contact($_POST["userid"], 'TASKEXECUTIVE', 'internal'); - } - else + } + else { setEventMessage($task->error,'errors'); setEventMessage($task->errors,'errors'); @@ -183,7 +183,7 @@ llxHeader("",$langs->trans("Tasks"),$help_url); if ($id > 0 || ! empty($ref)) { $object->fetch($id, $ref); - if ($object->societe->id > 0) $result=$object->societe->fetch($object->societe->id); + $object->fetch_thirdparty(); $res=$object->fetch_optionals($object->id,$extralabels_projet); @@ -198,7 +198,7 @@ if ($id > 0 || ! empty($ref)) $head=project_prepare_head($object); dol_fiche_head($head, $tab, $langs->trans("Project"),0,($object->public?'projectpub':'project')); - + $param=($mode=='mine'?'&mode=mine':''); print ''; @@ -221,7 +221,7 @@ if ($id > 0 || ! empty($ref)) print ''; print ''; print ''; @@ -259,7 +259,7 @@ if ($id > 0 || ! empty($ref)) } -if ($action == 'create' && $user->rights->projet->creer && (empty($object->societe->id) || $userWrite > 0)) +if ($action == 'create' && $user->rights->projet->creer && (empty($object->thirdparty->id) || $userWrite > 0)) { if ($id > 0 || ! empty($ref)) print '
';
'.$langs->trans("Label").''.$object->title.'
'.$langs->trans("ThirdParty").''; - if (! empty($object->societe->id)) print $object->societe->getNomUrl(1); + if (! empty($object->thirdparty->id)) print $object->thirdparty->getNomUrl(1); else print ' '; print '