/** * Loads plugin * * @param Plugin $oPlugin plugin instance * @param string $sName plugin name * @throws Exception * @return void */ public function loadPlugin(DataObject $oPlugin, $sName) { if ($oPlugin->getOwner() != $this) { throw new Exception('I\'m not the plugin owner'); } $this->_aPlugins[$sName] = $oPlugin; }
/** * (non-PHPdoc) * @see DataObject\Factory::update() */ public function update(DataObject $oModel) { if ($oModel->isSaved()) { parent::update($oModel); } else { $this->create($oModel); } }
/** * @return array */ public function getRawData() { return parent::getData(); }
/** * Updates * * @param DataObject $oModel DataObject instance to save * @return void */ public function update(DataObject $oModel) { if (!$oModel->hasModifiedFields()) { return; } $this->_update($oModel->getPrimaryField(), $oModel->getModifiedFields()); }
/** * Loads plugins into given model * * @param Pluginable $oModel pluginable model instance * @param array $aData plugins data * @return Pluginable */ protected function loadInto(DataObject $oModel, array $aData) { foreach ($aData as $sPlugin => $aFields) { $sPlugin = ltrim($sPlugin, '_'); if (!isset(self::$aPlugins[$sPlugin])) { continue; } if (empty($this->aCurrentPlugins[$sPlugin])) { throw new Exception('Plugin "' . $sPlugin . '" is not loaded'); } $oFactory = $this->aCurrentPlugins[$sPlugin]; $oModel->loadPlugin($oFactory->getPluginObject($aFields, $oModel), $sPlugin); } return $oModel; }