Esempio n. 1
0
 public static function getPackageMessages($messages, $displayedIdentifier)
 {
     $html = '';
     if (!($package = Package_Catalog::getPackageByIdentifier($displayedIdentifier))) {
         return '';
     }
     $avaliable = Package_Catalog::getAvaliableVersions($package['packageName']);
     $avaliable[$displayedIdentifier] = $package['version'];
     foreach ($messages as $type => $messageList) {
         foreach ($avaliable as $identifier => $version) {
             if (empty($messageList[$identifier])) {
                 continue;
             }
             $html .= '<div id="' . strtolower($package['packageName'] . '_' . $type) . '"';
             $html .= ' class="';
             $html .= ' ' . $type . '_message';
             $html .= ' ' . $package['packageName'] . '_message packagemanager index module">';
             $html .= __(ucfirst($type));
             $html .= '<ul class="' . $type . '_list packagemanager index module">';
             foreach ($messageList[$identifier] as $message) {
                 $html .= '<li>' . __($message) . '</li>';
             }
             $html .= '</ul>';
             $html .= '</div>';
         }
     }
     return $html;
 }
Esempio n. 2
0
    public function finalize($identifier)
    {
        $package = &Package_Catalog::getPackageByIdentifier($identifier);
        
        $package['status'] = Package_Manager::STATUS_INSTALLED;

        Package_Catalog_Datastore::export($package);
    }
Esempio n. 3
0
 public function finalize($identifier)
 {
     $package =& Package_Catalog::getPackageByIdentifier($identifier);
     $package['status'] = Package_Manager::STATUS_INSTALLED;
     Package_Catalog_Datastore::export($package);
     Package_Catalog::buildCatalog();
     $configureInstance = Package_Catalog::getPackageConfigureInstance($identifier);
     $configureInstance->finalizeInstall($identifier);
 }
Esempio n. 4
0
 public static function checkTransaction($name, $operation = NULL)
 {
     $transaction = self::$instance->transaction;
     if (is_null($operation)) {
         $operation = Package_Manager::OPERATION_INSTALL;
     }
     if (empty($transaction[$operation])) {
         Package_Message::set('No packages queued for operation ' . $operation);
         throw new Package_Transaction_Exception('No packages queued for operation ' . $operation);
     }
     foreach ($transaction[$operation] as $identifier) {
         $package = Package_Catalog::getPackageByIdentifier($identifier);
         if ($package['packageName'] == $name) {
             return $package;
         }
     }
     throw new Package_Transaction_Exception('Transcation does not contain requested package ' . $name);
 }
Esempio n. 5
0
 public static function validateAbandon($identifier)
 {
     $package = Package_Catalog::getPackageByIdentifier($identifier);
     if (!empty($package['denyRemoval'])) {
         Package_Message::log('debug', 'denyRemoval flag set on package ' . $package['packageName']);
         Package_Message::set($package['displayName'] . ' is not eligible for removal', 'error', $identifier);
         throw new Package_Dependency_Exception('Package is not eligible for removal');
     }
     $dependents = self::listDependents($package['packageName']);
     $failures = array();
     foreach ($dependents as $dependent) {
         if ($dependentPackage = Package_Catalog::getInstalledPackage($dependent)) {
             Package_Message::log('debug', 'dependency restriction ' . $package['packageName'] . ' is being used by ' . $dependent . ' version ' . $dependentPackage['version']);
             Package_Message::set($package['displayName'] . ' is being used by ' . $dependentPackage['displayName'] . ' version ' . $dependentPackage['version'], 'error', $identifier);
             Package_Message::set($dependentPackage['displayName'] . ' is using ' . $package['displayName'], 'alert', $dependentPackage['identifier']);
             $failures['indispensable'][$dependent] = $dependentPackage['version'];
         }
     }
     if (!empty($failures)) {
         $dependencyException = new Package_Dependency_Exception('Package did not pass dependency validation');
         $dependencyException->loadFailures($failures);
         throw $dependencyException;
     }
 }
Esempio n. 6
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;
     }
 }
Esempio n. 7
0
 public function finalize($identifier)
 {
     $package =& Package_Catalog::getPackageByIdentifier($identifier);
     unset($package['datastore_id']);
     Package_Catalog_Datastore::export($package);
 }
Esempio n. 8
0
 public function repair($identifier)
 {
     $package = Package_Catalog::getPackageByIdentifier($identifier);
     if (!empty($package['models'])) {
         $loadedModels = Doctrine::loadModels($package['directory'] . '/models', Doctrine::MODEL_LOADING_CONSERVATIVE);
     }
     if (empty($loadedModels)) {
         return;
     }
     foreach ($loadedModels as $modelName) {
         if (get_parent_class($modelName) != 'Bluebox_Record' and get_parent_class($modelName) != 'Doctrine_Record') {
             continue;
         }
         $migrationDirectory = $package['directory'] . '/migrations/' . $modelName;
         kohana::log('debug', 'Looking for migrations in `' . $migrationDirectory . '`');
         if (is_dir($migrationDirectory)) {
             try {
                 kohana::log('debug', 'Setting ' . $modelName . ' to version 0 and walking migrations forward to ensure table schema');
                 $migration = new Bluebox_Migration($migrationDirectory, NULL, strtolower($modelName));
                 $migration->setCurrentVersion(0);
                 $migration->migrate();
             } catch (Exception $e) {
                 kohana::log('alert', 'Alerts during migration, this can USUALLY be ignored: ' . $e->getMessage());
                 foreach ($migration->getErrors() as $error) {
                     kohana::log('alert', $error->getMessage());
                 }
             }
         }
     }
 }
Esempio n. 9
0
 public function finalize($identifier)
 {
     $metadata =& Package_Catalog::getPackageByIdentifier($identifier);
     Package_Catalog_Datastore::remove($metadata);
 }