Exemple #1
0
        /**
         * If the $appID is in the queue, then give the download status of it
         * If the updated value is less than 20 seconds ago, then restart the download
         */
        if (isset($appInstallQueue[$appID]) && $appInstallQueue[$appID]["updated"] > strtotime("-20 seconds")) {
            echo json_encode(array("statusID" => $appInstallQueue[$appID]["statusID"], "status" => $appInstallQueue[$appID]["status"]));
        } else {
            $appInfo = \Lobby\Server::store(array("get" => "app", "id" => $appID));
            /**
             * App doesn't exist on Lobby Store
             */
            if ($appInfo === "false") {
                echo json_encode(array("status" => "error", "error" => "App Doesn't Exist"));
            } else {
                $appName = $appInfo["name"];
                $Process = new Process(Process::getPHPExecutable(), array("arguments" => array(L_DIR . "/admin/ajax/install-app-bg.php", \Lobby::getLID(), base64_encode(serialize($_SERVER)), $appID)));
                /**
                 * Get the command used to execute install-app-bg.php
                 */
                $command = $Process->start(function () use($appID) {
                    /**
                     * This callback will close the connection between browser and server,
                     * http://stackoverflow.com/q/36968552/1372424
                     */
                    echo json_encode(array("statusID" => "download_intro", "status" => "Downloading <b>{$appID}</b>..."));
                });
                \Lobby::log("To install app '{$appID}', this command was executed : {$command}");
            }
        }
    }
}
Exemple #2
0
/**
 * Argument #1 should equal the Lobby Unique ID
 * Argument #2 is $_SERVER variable
 * Argument #3 is App ID to install
 */
if (isset($argv[2])) {
    $_SERVER = unserialize(base64_decode($argv[2]));
    require __DIR__ . "/../../load.php";
} else {
    exit;
}
use Lobby\Apps;
use Lobby\FS;
use Lobby\Update;
if ($argv[1] === \Lobby::getLID() && isset($argv[3])) {
    $appID = $argv[3];
    function sendStatusToLobby($statusID, $status)
    {
        global $appID;
        Lobby\DB::saveJSONOption("lobby_app_downloads", array($appID => array("statusID" => $statusID, "status" => $status, "updated" => time())));
    }
    /**
     * Record the last percentage of data downloaded
     * This to know whether download has progressed from previous state
     */
    $lastPercentage = 0;
    \Lobby\Update::$progress = function ($resource, $download_size, $downloaded, $upload_size, $uploaded = "") use($appID, $lastPercentage) {
        /**
         * On new versions of cURL, $resource parameter is not passed
         * So, swap vars if it doesn't exist
Exemple #3
0
 /**
  * Append Lobby Info to POST data
  */
 public static function makeData($data)
 {
     return array_replace_recursive(array("lobby" => array("lid" => \Lobby::getLID(), "version" => \Lobby::$version)), $data);
 }