From 2455d8fe5202fd040f9a522d6056dc3fab95a0f7 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Mon, 4 Apr 2022 14:31:48 +0200 Subject: [PATCH] avoid fetch_objectlinked for each page of the document --- htdocs/core/class/commonobject.class.php | 8 ++++++++ htdocs/core/lib/pdf.lib.php | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 232aa6b5789..f7eb6a67263 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -123,6 +123,11 @@ abstract class CommonObject */ public $linkedObjects; + /** + * @var boolean is linkedObjects full loaded. Loaded by ->fetchObjectLinked + */ + public $linkedObjectsFullLoaded = false; + /** * @var Object To store a cloned copy of object before to edit it and keep track of old properties */ @@ -3834,6 +3839,9 @@ abstract class CommonObject } else { $sql .= "(fk_source = ".((int) $sourceid)." AND sourcetype = '".$this->db->escape($sourcetype)."')"; $sql .= " ".$clause." (fk_target = ".((int) $targetid)." AND targettype = '".$this->db->escape($targettype)."')"; + if ($sourceid == $this->id && $sourcetype == $this->element && $targetid == $this->id && $targettype == $this->element && $clause == 'OR') { + $this->linkedObjectsFullLoaded = true; + } } $sql .= " ORDER BY ".$orderby; diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index ea8c6c2ce23..b273f93b69f 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -2282,7 +2282,9 @@ function pdf_getLinkedObjects(&$object, $outputlangs) $linkedobjects = array(); - $object->fetchObjectLinked(); + if (empty($object->linkedObjectsFullLoaded)) { + $object->fetchObjectLinked(); + } foreach ($object->linkedObjects as $objecttype => $objects) { if ($objecttype == 'facture') {