Example #1
0
 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);
 }
Example #2
0
 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;
     }
 }