PHP Classes

File: admin/ar/install-app.php

Recommend this page to a friend!
  Classes of Subin Siby   Lobby   admin/ar/install-app.php   Download  
File: admin/ar/install-app.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Lobby
Web OS to install and run Web applications
Author: By
Last change:
Date: 7 years ago
Size: 2,016 bytes
 

Contents

Class file image Download
<?php
use \Fr\Process;

$appID = \Request::postParam("id");

if(!
CSRF::check()){
  echo
json_encode(array(
   
"statusID" => "error",
   
"status" => "CSRF Token didn't match"
 
));
}else if(
$appID === null){
  echo
json_encode(array(
   
"statusID" => "error",
   
"status" => "Invalid App ID"
 
));
}else{
 
/**
   * A queue of App downloads
   */
 
$appInstallQueue = Lobby\DB::getJSONOption("lobby_app_downloads");

 
/**
   * 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]) && !isset($_POST["force-install"]) && $appInstallQueue[$appID]["updated"] > strtotime("-35 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/ar/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");
    }
  }
}