Ejemplo n.º 1
0
function run_addon_core_install($args)
{
    try {
        if (!extension_loaded("mysql")) {
            if (strtoupper(substr(PHP_OS, 0, 3)) === "WIN") {
                dl("mysql.dll");
            } else {
                dl("mysql.so");
            }
        }
        ///////
        /*
        if (!CLI2) {
          $args = $opts;
        }
        */
        $workspace = $args[0];
        $storeId = $args[1];
        $addonName = $args[2];
        if (!defined("SYS_SYS")) {
            define("SYS_SYS", $workspace);
        }
        if (!defined("PATH_DATA_SITE")) {
            define("PATH_DATA_SITE", PATH_DATA . "sites/" . SYS_SYS . "/");
        }
        if (!defined("DB_ADAPTER")) {
            define("DB_ADAPTER", $args[3]);
        }
        ///////
        //***************** Plugins **************************
        G::LoadClass("plugin");
        //Here we are loading all plugins registered
        //the singleton has a list of enabled plugins
        $sSerializedFile = PATH_DATA_SITE . "plugin.singleton";
        $oPluginRegistry =& PMPluginRegistry::getSingleton();
        if (file_exists($sSerializedFile)) {
            $oPluginRegistry->unSerializeInstance(file_get_contents($sSerializedFile));
        }
        ///////
        //echo "** Installation starting... (workspace: $workspace, store: $storeId, id: $addonName)\n";
        $ws = new workspaceTools($workspace);
        $ws->initPropel(false);
        require_once PATH_CORE . 'methods' . PATH_SEP . 'enterprise' . PATH_SEP . 'enterprise.php';
        require_once PATH_CORE . 'classes' . PATH_SEP . 'model' . PATH_SEP . 'AddonsManagerPeer.php';
        $addon = AddonsManagerPeer::retrieveByPK($addonName, $storeId);
        if ($addon == null) {
            throw new Exception("Id {$addonName} not found in store {$storeId}");
        }
        //echo "Downloading...\n";
        $download = $addon->download();
        //echo "Installing...\n";
        $addon->install();
        if ($addon->isCore()) {
            $ws = new workspaceTools($workspace);
            $ws->initPropel(false);
            $addon->setState("install-finish");
        } else {
            $addon->setState();
        }
    } catch (Exception $e) {
        $addon->setState("error");
        //fwrite(STDERR, "\n[ERROR: {$e->getMessage()}]\n");
        //fwrite(STDOUT, "\n[ERROR: {$e->getMessage()}]\n");
    }
    //echo "** Installation finished\n";
}