コード例 #1
0
 /**
  * put your comment there...
  * 
  */
 public function _checkInstallationState()
 {
     # Initialize
     $extensionClass = $this->extensionClass;
     $extension =& $this->extension;
     $extensionDeDoc =& $extension['defDoc'];
     $extensionState = new CJT_Framework_Extensions_Package_State_Extension($extensionDeDoc);
     # Upgrade and Install is the same both
     # required checking the packages inside
     # Package-Extension is a only a wrapper for packages inside!
     if ($extensionState->getState() != CJT_Framework_Extensions_Package_State_Extension::INSTALLED) {
         # Initialize
         $packageFileModel = CJTModel::getInstance('package-file');
         $packageModel = CJTModel::getInstance('package');
         $extensionDir = ABSPATH . PLUGINDIR . DIRECTORY_SEPARATOR . $extension['dir'];
         $packagesFolderPath = $extensionDir . DIRECTORY_SEPARATOR . (string) $extensionDeDoc->packages->attributes()->folder;
         # Getting packages state
         $extensionPackagesState = new CJT_Framework_Extensions_Package_State_Packages($extensionDeDoc);
         # Check packages
         foreach ($extensionPackagesState as $pckName => $package) {
             # Get state
             $pckState = $extensionPackagesState->getState();
             # If not yet installed or requied upgrade
             if ($pckState != CJT_Framework_Extensions_Package_State_Packages::INSTALLED) {
                 # Take action based on package installation state
                 switch ($pckState) {
                     case CJT_Framework_Extensions_Package_State_Packages::UPGRADE:
                         # Delete package
                         $packageModel->delete($package['id']);
                         break;
                 }
                 # Get package file info.
                 $packageFile = $packagesFolderPath . DIRECTORY_SEPARATOR . $package['file'];
                 # Add/Create Package
                 $packageCJTToken = $packageFileModel->parse(uniqid(), $packageFile);
                 $packageId = $packageFileModel->install($packageCJTToken);
                 # Mark as installed/created/added
                 $extensionPackagesState->packageInstalled($packageId);
             }
             # Remove from queue
             $extensionPackagesState->removeOld();
         }
         # Packages to delete!
         foreach ($extensionPackagesState->getDeletedPackages() as $name => $deletedPack) {
             # Delete package
             $packageModel->delete($deletedPack['id']);
         }
         # Upgrade packages state
         $extensionPackagesState->upgrade();
         # Upgrade extension state
         $extensionState->upgrade($extension['defFile']);
         # Register uninstaller
         register_uninstall_hook($extension['pluginFile'], array(__CLASS__, "uninstall_{$extensionClass}"));
     }
 }
コード例 #2
0
 /**
  * put your comment there...
  * 
  */
 public function &activate()
 {
     # Getting extension class
     $extensionClass = CJT_Framework_Extensions_Package_Extension::getPluginExtensionClass($this->extensionPluginObject);
     # No activation process until the Plugin is deactivated before
     # It must be installed first.
     if (CJT_Framework_Extensions_Package_State_Extension::isInstalled($extensionClass)) {
         # Initialize
         $stateExtension = CJT_Framework_Extensions_Package_State_Extension::create($extensionClass);
         $statePackage = new CJT_Framework_Extensions_Package_State_Packages($stateExtension->getExtensionDeDoc());
         $extBlocks = new CJT_Framework_Extensions_Package_Blocks($statePackage);
         # Enable all Blocks associated with extension packages
         $extBlocks->setState(CJT_Framework_Extensions_Package_Blocks::ACTIVE);
     }
     # Chain
     return $this;
 }