PHP Classes

File: admin/ar/install-app-bg.php

Recommend this page to a friend!
  Classes of Subin Siby   Lobby   admin/ar/install-app-bg.php   Download  
File: admin/ar/install-app-bg.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,803 bytes
 

Contents

Class file image Download
<?php
/**
 * 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
     */
   
if(!is_resource($resource)){
     
$uploaded = $upload_size;
     
$upload_size = $downloaded;
     
$downloaded = $download_size;
     
$download_size = $resource;
    }

    if(
$download_size > 1000 && $downloaded > 0){
     
$percent = round($downloaded / $download_size * 100, 0);
    }else{
     
$percent = 1;
    }

    if(
$lastPercentage !== $percent || isset($GLOBALS['non_percent'])){
     
$lastPercentage = $percent;

      if(
$download_size > 0){
       
$readable_size = FS::normalizeSize($download_size);
       
sendStatusToLobby("download_status", "Downloaded $percent% of $readable_size");
      }else{
       
/**
         * We couldn't find the percentage
         */
       
$GLOBALS['non_percent'] = 1;

       
$downloaded = FS::normalizeSize($downloaded);
       
sendStatusToLobby("download_status", "Downloaded $downloaded");
      }

     
/**
       * Show Install message when download is completed
       */
     
if($percent == 100 && !isset($GLOBALS['install-msg-printed'])){
       
$GLOBALS['install-msg-printed'] = 1;
       
$downloaded = FS::normalizeSize($downloaded);
       
sendStatusToLobby("download_status", "Downloaded 100% of $downloaded");
       
sleep(2);
       
sendStatusToLobby("install_status", "Installing <b>$appID</b>...");
       
sleep(2);
      }
    }
  };

  try{
   
/**
     * Update::app() will only return TRUE if download is completed
     */
   
if(Update::app($appID)){
     
$App = new Apps($appID);
     
$App->enableApp();

     
sendStatusToLobby("install_finished", "Installed <b>$appID</b>.<cl/><a href='". $App->info["url"] ."' class='btn green'>Open App</a>");
    }
  }catch(\
Exception $e){
   
sendStatusToLobby("error", $e->getMessage());
  }
}