public function __construct($message = null, $code = 0, Exception $previous = null) { if ($code == 0) { Package_Operation_Message::set($message, 'error', 'transaction'); } else { Package_Operation_Message::set($message, 'error', $code); } parent::__construct($message, $code); }
protected static function rollback($operation, $identifier, $step, $error) { Package_Message::log('error', 'Package operation ' . $operation . ' failed during ' . $step . ' on package ' . $identifier . ': ' . $error->getMessage()); if ($step == 'validate') { Package_Message::log('debug', 'No rollback action for ' . $operation . ' if we dont get past validate on package ' . $identifier); Package_Operation_Message::set($error->getMessage(), 'error', $identifier); return; } Package_Operation_Message::set($error->getMessage(), 'error', $identifier); switch ($operation) { case Package_Manager::OPERATION_INSTALL: try { Package_Message::log('debug', 'Trying to rollback install via uninstall on package ' . $identifier); Package_Operation_Message::ignoreLogLevels('success'); self::dispatch(Package_Manager::OPERATION_UNINSTALL, $identifier); Package_Operation_Message::acceptAllLogLevels(); } catch (Exception $e) { Package_Operation_Message::set('Error during rollback: ' . $e->getMessage(), 'alert', $identifier); } break; case Package_Manager::OPERATION_MIGRATE: try { if ($package = Package_Catalog::getPackageByIdentifier($identifier)) { if ($installed = Package_Catalog::getInstalledPackage($package['packageName'])) { Package_Message::log('debug', 'Trying to rollback migrate via repair on package ' . $installed['identifier']); Package_Operation_Message::ignoreLogLevels('success'); if (self::dispatch(Package_Manager::OPERATION_REPAIR, $installed['identifier'])) { Package_Operation_Message::set('Rollback of package ' . $installed['displayName'] . ' version ' . $installed['version'] . ' completed', 'info', $identifier); } Package_Operation_Message::acceptAllLogLevels(); } } } catch (Exception $e) { Package_Operation_Message::set('Error during rollback: ' . $e->getMessage(), 'alert', $identifier); } break; case Package_Manager::OPERATION_UNINSTALL: case Package_Manager::OPERATION_REPAIR: case Package_Manager::OPERATION_VERIFY: default: Package_Message::log('debug', 'No rollback action for ' . $operation . ' on package ' . $identifier); break; } }