_aTranscoders); if ($this->_bUpdateTimeline && BxDolRequest::serviceExists('timeline', 'add_handlers')) BxDolService::call('timeline', 'add_handlers', array($this->_aConfig['home_uri'])); if ($this->_aMenuTriggers) { bx_import('BxDolMenu'); foreach ($this->_aMenuTriggers as $sMenuTriggerName) BxDolMenu::processMenuTrigger($sMenuTriggerName); } return $aResult; } function disable($aParams) { if ($this->_bUpdateTimeline && BxDolRequest::serviceExists('timeline', 'delete_handlers')) BxDolService::call('timeline', 'delete_handlers', array($this->_aConfig['home_uri'])); BxDolImageTranscoder::unregisterHandlersArray($this->_aTranscoders); BxDolImageTranscoder::cleanupObjectsArray($this->_aTranscoders); $aResult = parent::disable($aParams); if (!$aResult['result']) // we need to register it back if disabling failed BxDolImageTranscoder::registerHandlersArray($this->_aTranscoders); return $aResult; } function install($aParams, $bEnable = false) { return parent::install($aParams, $bEnable); } function uninstall($aParams, $bDisable = false) { // check if module is already waiting while files are deleting bx_import('BxDolInstallerUtils'); if (BxDolInstallerUtils::isModulePendingUninstall($this->_aConfig['home_uri'])) return array( 'message' => _t('_adm_err_modules_pending_uninstall_already'), 'result' => false, ); // queue for deletion storage files $bSetModulePendingUninstall = false; foreach ($this->_aStorages as $s) { if (($o = BxDolStorage::getObjectInstance($s)) && $o->queueFilesForDeletionFromObject()) $bSetModulePendingUninstall = true; } // delete comments and queue for deletion comments attachments bx_import('BxDolCmts'); $iFiles = 0; BxDolCmts::onModuleUninstall ($this->_aConfig['name'], $iFiles); if ($iFiles) $bSetModulePendingUninstall = true; // if some files were added to the queue, set module as pending uninstall if ($bSetModulePendingUninstall) { BxDolInstallerUtils::setModulePendingUninstall($this->_aConfig['home_uri']); return array( 'message' => _t('_adm_err_modules_pending_uninstall'), 'result' => false, ); } // delete associated connections if ($this->_aConnections) { bx_import('BxDolConnection'); foreach ($this->_aConnections as $sObjectConnections => $a) { $o = BxDolConnection::getObjectInstance($sObjectConnections); if (!$o) continue; $sFuncSuffix = 'DeleteInitiatorAndContent'; if (isset($a['conn']) && 'initiator' == $a['conn']) $sFuncSuffix = 'DeleteInitiator'; elseif (isset($a['conn']) && 'content' == $a['conn']) $sFuncSuffix = 'DeleteContent'; if (isset($a['type']) && 'profiles' == $a['type']) { $sFunc = 'onModuleProfile' . $sFuncSuffix; $o->$sFunc($this->_aConfig['name']); } else { $sFunc = 'onModule' . $sFuncSuffix; $o->$sFunc($a['table'], $a['field_id']); } } } return parent::uninstall($aParams, $bDisable); } } /** @} */