} else {
                    throw new Exception($r->message);
                }
            } catch (Exception $e) {
                $response["message"] = $e->getMessage();
                $status = 0;
            }
            if ($status == 0) {
                $response["status"] = "ERROR";
            }
            echo G::json_encode($response);
            exit(0);
            break;
        case "addonslist":
            $type = isset($_REQUEST['type']) ? $_REQUEST['type'] : 'plugin';
            $result = AddonsStore::addonList($type);
            break;
            break;
        default:
            throw new Exception("Action \"{$action}\" is not valid");
    }
    if (!isset($result["success"])) {
        $result["success"] = true;
    }
    if (isset($result["addons"])) {
        $result["addons"] = array_values($result["addons"]);
    } else {
        $result["addons"] = array();
    }
    echo G::json_encode($result);
} catch (Exception $e) {
 public static function addonFeatureList()
 {
     $result = array();
     AddonsStore::checkLicenseStore();
     $licenseManager =& pmLicenseManager::getSingleton();
     //Getting the licenseManager
     $result["store_errors"] = array();
     list($stores, $errors) = AddonsStore::updateAll(false);
     foreach ($errors as $store_id => $store_error) {
         $result["store_errors"][] = array("id" => $store_id, "msg" => $store_error);
     }
     $result["addons"] = array();
     $result["errors"] = array();
     $criteria = new Criteria();
     $criteria->addAscendingOrderByColumn(AddonsManagerPeer::ADDON_TYPE);
     $criteria->addAscendingOrderByColumn(AddonsManagerPeer::ADDON_ID);
     $addons = AddonsManagerPeer::doSelect($criteria);
     foreach ($addons as $addon) {
         $status = $addon->getAddonStatus();
         $version = $addon->getAddonVersion();
         $enabled = null;
         if (!$addon->checkState()) {
             $result["errors"][] = array("addonId" => $addon->getAddonId(), "storeId" => $addon->getStoreId());
         }
         $sw = 1;
         $addonInLicense = in_array($addon->getAddonId(), $licenseManager->features);
         if ($sw == 1 && $addon->getAddonId() != "enterprise" && !$addonInLicense) {
             $sw = 0;
         }
         if ($sw == 1 && $addon->isInstalled()) {
             if ($addon->isEnabled()) {
                 $status = "installed";
             } else {
                 $status = "disabled";
             }
             $version = $addon->getInstalledVersion();
             if (version_compare($version . "", $addon->getAddonVersion() . "", "<")) {
                 $status = "upgrade";
             }
             $enabled = $addon->isEnabled();
             $sw = 0;
         }
         if ($sw == 1 && $addonInLicense) {
             $status = "ready";
             $sw = 0;
         }
         $state = $addon->getAddonState();
         $log = null;
         if ($state != null) {
             $status = $state;
             $log = $addon->getInstallLog();
         }
         if ($addon->getAddonId() == "enterprise" && $status == 'ready') {
             $status = 'installed';
         }
         if ($status == 'minus-circle') {
             $status = "available";
         }
         $result["addons"][$addon->getAddonId()] = array("id" => $addon->getAddonId(), "store" => $addon->getStoreId(), "name" => $addon->getAddonName(), "nick" => $addon->getAddonNick(), "version" => $version, "enabled" => $enabled, "latest_version" => $addon->getAddonVersion(), "type" => $addon->getAddonType(), "release_type" => $addon->getAddonReleaseType(), "url" => $addon->getAddonDownloadUrl(), "publisher" => $addon->getAddonPublisher(), "description" => $addon->getAddonDescription(), "status" => $status, "log" => $log, "progress" => round($addon->getAddonDownloadProgress()));
     }
     return $result;
 }
             }
             $pluginDetail = $pluginRegistry->getPluginDetails($sClassName . ".php");
             $pluginRegistry->installPlugin($pluginDetail->sNamespace);
             //error
         }
         file_put_contents(PATH_DATA_SITE . "plugin.singleton", $pluginRegistry->serializeInstance());
         $licfile = glob(PATH_PLUGINS . "*.dat");
         if (isset($licfile[0]) && is_file($licfile[0])) {
             $licfilename = basename($licfile[0]);
             @copy($licfile[0], PATH_DATA_SITE . $licfilename);
             @unlink($licfile[0]);
         }
         require_once 'classes/model/AddonsStore.php';
         AddonsStore::checkLicenseStore();
         $licenseManager =& pmLicenseManager::getSingleton();
         AddonsStore::updateAll(false);
         $message = G::loadTranslation('ID_ENTERPRISE_INSTALLED') . ' ' . G::loadTranslation('ID_LOG_AGAIN');
         G::SendMessageText($message, "INFO");
         $licenseManager =& pmLicenseManager::getSingleton();
         die('<script type="text/javascript">parent.parent.location = "../login/login";</script>');
     }
 }
 if (!$_FILES['form']['type']['PLUGIN_FILENAME'] == 'application/octet-stream') {
     $pluginFilename = $_FILES['form']['type']['PLUGIN_FILENAME'];
     throw new Exception(G::loadTranslation('ID_FILES_INVALID_PLUGIN_FILENAME', SYS_LANG, array("pluginFilename" => $pluginFilename)));
 }
 G::LoadThirdParty('pear/Archive', 'Tar');
 $tar = new Archive_Tar($path . $filename);
 $sFileName = substr($filename, 0, strrpos($filename, '.'));
 $sClassName = substr($filename, 0, strpos($filename, '-'));
 $sClassName = !empty($sClassName) ? $sClassName : $sFileName;
 public function enterpriseSystemUpdate($data)
 {
     if (count(glob(PATH_DATA_SITE . 'license/*.dat')) == 0) {
         return;
     }
     require_once "classes/model/Users.php";
     $user = $data;
     $criteria = new Criteria("workflow");
     //SELECT
     $criteria->addSelectColumn(UsersPeer::USR_UID);
     //FROM
     //WHERE
     $criteria->add(UsersPeer::USR_USERNAME, $user->lName);
     //$user->lPassword
     $criteria->add(UsersPeer::USR_ROLE, "PROCESSMAKER_ADMIN");
     //query
     $rsSQLUSR = UsersPeer::doSelectRS($criteria);
     $rsSQLUSR->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $sw = 0;
     if (UsersPeer::doCount($criteria) > 0) {
         //if ($rsSQLUSR->getRecordCount() > 0) {
         $sw = 1;
     }
     /*
     $cnn = Propel::getConnection("workflow");
     $stmt = $cnn->createStatement();
     
     $sql = "SELECT USR.USR_UID
             FROM   USERS AS USR
             WHERE  USR.USR_USERNAME = '******' AND USR.USR_ROLE = 'PROCESSMAKER_ADMIN'";
     $rsSQLUSR = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC);
     
     $sw = 0;
     
     if ($rsSQLUSR->getRecordCount() > 0) {
         $sw = 1;
     }
     */
     if ($sw == 1) {
         //Upgrade available
         $swUpgrade = 0;
         $addonList = AddonsStore::addonList();
         $addon = $addonList["addons"];
         if (count($addon) > 0) {
             $status = array("ready", "upgrade", "available");
             $pmVersion = EnterpriseUtils::pmVersion(PM_VERSION);
             foreach ($addon as $index => $value) {
                 if ($addon[$index]["id"] == "processmaker") {
                     if (version_compare($pmVersion . "", EnterpriseUtils::pmVersion($addon[$index]["version"]) . "", "<")) {
                         $swUpgrade = 1;
                         break;
                     }
                 } else {
                     if (in_array($addon[$index]["status"], $status)) {
                         $swUpgrade = 1;
                         break;
                     }
                 }
             }
         }
         if ($swUpgrade == 1) {
             $_SESSION["__ENTERPRISE_SYSTEM_UPDATE__"] = 1;
         }
     }
 }
 public function enable()
 {
     $this->setConfiguration();
     require_once PATH_CORE . 'classes/model/AddonsStore.php';
     AddonsStore::checkLicenseStore();
     $licenseManager =& pmLicenseManager::getSingleton();
     AddonsStore::updateAll(false);
 }
<?php

require_once PATH_CORE . 'classes' . PATH_SEP . 'class.pmLicenseManager.php';
require_once PATH_CORE . "classes" . PATH_SEP . "model" . PATH_SEP . "AddonsStore.php";
require_once PATH_CORE . "classes" . PATH_SEP . "class.enterpriseUtils.php";
AddonsStore::checkLicenseStore();
$licenseManager =& pmLicenseManager::getSingleton();
$oHeadPublisher =& headPublisher::getSingleton();
if (isset($licenseManager->date) && is_array($licenseManager->date)) {
    G::LoadClass("configuration");
    $conf = new Configurations();
    if (defined('SYS_SYS') && $conf->exists("ENVIRONMENT_SETTINGS")) {
        $licenseManager->date['START'] = date("Y-m-d H:i:s", strtotime($licenseManager->date['HUMAN']['START']));
        $licenseManager->date['END'] = date("Y-m-d H:i:s", strtotime($licenseManager->date['HUMAN']['END']));
        $licenseManager->date['START'] = $conf->getSystemDate($licenseManager->date['START']);
        $licenseManager->date['END'] = $conf->getSystemDate($licenseManager->date['END']);
    } else {
        $licenseManager->date['START'] = date("Y-m-d H:i:s", strtotime($licenseManager->date['HUMAN']['START']));
        $licenseManager->date['END'] = date("Y-m-d H:i:s", strtotime($licenseManager->date['HUMAN']['END']));
        $licenseManager->date['START'] = G::getformatedDate($licenseManager->date['START'], 'M d, yyyy', SYS_LANG);
        $licenseManager->date['END'] = G::getformatedDate($licenseManager->date['END'], 'M d, yyyy', SYS_LANG);
    }
}
if (isset($licenseManager->result) && $licenseManager->result == "OK") {
    $oHeadPublisher->assign("license_start_date", $licenseManager->date["START"]);
    $oHeadPublisher->assign("license_end_date", $licenseManager->expireIn != "NEVER" ? $licenseManager->date["END"] : "NA");
    $oHeadPublisher->assign("license_user", $licenseManager->info["FIRST_NAME"] . " " . $licenseManager->info["LAST_NAME"] . " (" . $licenseManager->info["DOMAIN_WORKSPACE"] . ")");
    $oHeadPublisher->assign("license_span", $licenseManager->expireIn != "NEVER" ? ceil($licenseManager->date["SPAN"] / 60 / 60 / 24) : "~");
    $oHeadPublisher->assign("license_name", $licenseManager->type);
    $oHeadPublisher->assign("license_server", $licenseManager->server);
    $oHeadPublisher->assign("license_expires", $licenseManager->expireIn);