diff --git a/core/dbobject.class.php b/core/dbobject.class.php index ea19b54648..1dfbb44697 100644 --- a/core/dbobject.class.php +++ b/core/dbobject.class.php @@ -3201,19 +3201,14 @@ abstract class DBObject implements iDisplay // - TriggerOnObjectMention $this->ActivateOnMentionTriggers(false); - $bNeedReload = false; $aHierarchicalKeys = array(); $aDBChanges = array(); - foreach ($aChanges as $sAttCode => $valuecurr) + foreach ($aChanges as $sAttCode => $currentValue) { $oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttCode); - if ($oAttDef->IsExternalKey() || $oAttDef->IsLinkSet()) - { - $bNeedReload = true; - } if ($oAttDef->IsBasedOnDBColumns()) { - $aDBChanges[$sAttCode] = $aChanges[$sAttCode]; + $aDBChanges[$sAttCode] = $currentValue; } if ($oAttDef->IsHierarchicalKey()) { @@ -3366,18 +3361,11 @@ abstract class DBObject implements iDisplay $this->EventUpdateAfter(['changes' => $aChanges]); $this->AfterUpdate(); - // Reload to get the external attributes - if ($bNeedReload) { - $this->Reload(true /* AllowAllData */); - } else { - // Reset original values although the object has not been reloaded - foreach ($this->m_aLoadedAtt as $sAttCode => $bLoaded) - { - if ($bLoaded) - { - $value = $this->m_aCurrValues[$sAttCode]; - $this->m_aOrigValues[$sAttCode] = is_object($value) ? clone $value : $value; - } + // Reset original values although the object has not been reloaded + foreach ($this->m_aLoadedAtt as $sAttCode => $bLoaded) { + if ($bLoaded) { + $value = $this->m_aCurrValues[$sAttCode]; + $this->m_aOrigValues[$sAttCode] = is_object($value) ? clone $value : $value; } } @@ -3388,7 +3376,7 @@ abstract class DBObject implements iDisplay while ($oTrigger = $oSet->Fetch()) { /** @var \TriggerOnObjectUpdate $oTrigger */ try { - $oTrigger->DoActivate($this->ToArgs('this')); + $oTrigger->DoActivate($this->ToArgs()); } catch (Exception $e) { utils::EnrichRaisedException($oTrigger, $e); diff --git a/core/ormlinkset.class.inc.php b/core/ormlinkset.class.inc.php index 7971b981ec..0f83199f67 100644 --- a/core/ormlinkset.class.inc.php +++ b/core/ormlinkset.class.inc.php @@ -383,9 +383,8 @@ class ormLinkSet implements iDBObjectSetIterator, Iterator, SeekableIterator $iPreservedCount = count($this->aPreserved); if ($this->iCursor < $iPreservedCount) { - $iRet = current($this->aPreserved); - $this->oOriginalSet->Seek($iRet); - $oRet = $this->oOriginalSet->Fetch(); + $sId = key($this->aPreserved); + $oRet = MetaModel::GetObject($this->sClass, $sId); } else { diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php index b5df2da8b8..2b15a43a42 100644 --- a/lib/composer/autoload_classmap.php +++ b/lib/composer/autoload_classmap.php @@ -190,13 +190,13 @@ return array( 'Combodo\\iTop\\Application\\Branding' => $baseDir . '/sources/Application/Branding.php', 'Combodo\\iTop\\Application\\Helper\\Session' => $baseDir . '/sources/Application/Helper/Session.php', 'Combodo\\iTop\\Application\\Helper\\WebResourcesHelper' => $baseDir . '/sources/Application/Helper/WebResourcesHelper.php', - 'Combodo\\iTop\\Application\\Search\\AjaxSearchException' => $baseDir . '/sources/Application/search/ajaxsearchexception.class.inc.php', - 'Combodo\\iTop\\Application\\Search\\CriterionConversionAbstract' => $baseDir . '/sources/Application/search/criterionconversionabstract.class.inc.php', - 'Combodo\\iTop\\Application\\Search\\CriterionConversion\\CriterionToOQL' => $baseDir . '/sources/Application/search/criterionconversion/criteriontooql.class.inc.php', - 'Combodo\\iTop\\Application\\Search\\CriterionConversion\\CriterionToSearchForm' => $baseDir . '/sources/Application/search/criterionconversion/criteriontosearchform.class.inc.php', - 'Combodo\\iTop\\Application\\Search\\CriterionParser' => $baseDir . '/sources/Application/search/criterionparser.class.inc.php', - 'Combodo\\iTop\\Application\\Search\\SearchForm' => $baseDir . '/sources/Application/search/searchform.class.inc.php', - 'Combodo\\iTop\\Application\\Status\\Status' => $baseDir . '/sources/Application/status/Status.php', + 'Combodo\\iTop\\Application\\Search\\AjaxSearchException' => $baseDir . '/sources/Application/Search/ajaxsearchexception.class.inc.php', + 'Combodo\\iTop\\Application\\Search\\CriterionConversionAbstract' => $baseDir . '/sources/Application/Search/criterionconversionabstract.class.inc.php', + 'Combodo\\iTop\\Application\\Search\\CriterionConversion\\CriterionToOQL' => $baseDir . '/sources/Application/Search/CriterionConversion/criteriontooql.class.inc.php', + 'Combodo\\iTop\\Application\\Search\\CriterionConversion\\CriterionToSearchForm' => $baseDir . '/sources/Application/Search/CriterionConversion/criteriontosearchform.class.inc.php', + 'Combodo\\iTop\\Application\\Search\\CriterionParser' => $baseDir . '/sources/Application/Search/criterionparser.class.inc.php', + 'Combodo\\iTop\\Application\\Search\\SearchForm' => $baseDir . '/sources/Application/Search/searchform.class.inc.php', + 'Combodo\\iTop\\Application\\Status\\Status' => $baseDir . '/sources/Application/Status/Status.php', 'Combodo\\iTop\\Application\\TwigBase\\Controller\\Controller' => $baseDir . '/sources/Application/TwigBase/Controller/Controller.php', 'Combodo\\iTop\\Application\\TwigBase\\Controller\\PageNotFoundException' => $baseDir . '/application/exceptions/PageNotFoundException.php', 'Combodo\\iTop\\Application\\TwigBase\\Twig\\Extension' => $baseDir . '/sources/Application/TwigBase/Twig/Extension.php', diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php index 8a22f216f6..84624a0ba4 100644 --- a/lib/composer/autoload_static.php +++ b/lib/composer/autoload_static.php @@ -775,6 +775,9 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Combodo\\iTop\\Renderer\\FieldRenderer' => __DIR__ . '/../..' . '/sources/Renderer/FieldRenderer.php', 'Combodo\\iTop\\Renderer\\FormRenderer' => __DIR__ . '/../..' . '/sources/Renderer/FormRenderer.php', 'Combodo\\iTop\\Renderer\\RenderingOutput' => __DIR__ . '/../..' . '/sources/Renderer/RenderingOutput.php', + 'Combodo\\iTop\\Service\\EventData' => __DIR__ . '/../..' . '/sources/Application/Service/EventData.php', + 'Combodo\\iTop\\Service\\EventHelper' => __DIR__ . '/../..' . '/sources/Application/Service/EventHelper.php', + 'Combodo\\iTop\\Service\\EventService' => __DIR__ . '/../..' . '/sources/Application/Service/EventService.php', 'CompileCSSService' => __DIR__ . '/../..' . '/application/compilecssservice.class.inc.php', 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'Config' => __DIR__ . '/../..' . '/core/config.class.inc.php',