<?php 
use Lobby\Need; 
use Lobby\Update; 
?> 
<!DOCTYPE html> 
<html> 
  <head> 
    <?php 
    \Hooks::doAction("admin.head.begin"); 
    \Response::head("Update"); 
    ?> 
  </head> 
  <body> 
    <?php 
    \Hooks::doAction("admin.body.begin"); 
    ?> 
    <div id="workspace"> 
      <div class="contents"> 
        <h1>Update</h1> 
        <p>Lobby and apps can be updated automatically.</p> 
        <a class='btn blue' href='check-updates.php'>Check For Updates</a> 
        <a href="<?php echo L_SERVER;?>/docs/update" target="_blank" class="btn pink">Help</a> 
        <?php 
        $action = Request::postParam("action"); 
        $step = Request::get("step"); 
 
        if($action === null && $step === null){ 
          if(Update::isCoreAvailable()){ 
        ?> 
            <h2>Lobby</h2> 
            <p> 
              Welcome To The Lobby Update Page. A latest version is available for you to upgrade. 
            </p> 
            <blockquote> 
              Latest Version is <?php echo Lobby\DB::getOption("lobby_latest_version");?> released on <?php echo date( "jS F Y", strtotime(Lobby\DB::getOption("lobby_latest_version_release")) );?> 
            </blockquote> 
            <h4>Backup</h4> 
            <p style="margin: 10px 0;"> 
              Lobby will automatically download the latest version and install. In case something happens, Lobby will not be accessible anymore.<cl/> 
              So backup your database and Lobby installation before you do anything. 
            </p> 
            <div clear></div> 
            <a class="btn green" href="backup-db.php">Export Lobby Database</a> 
            <a class="btn blue" href="backup-dir.php">Export Lobby Folder</a> 
            <h4>Release Notes</h4> 
            <blockquote> 
              <?php echo htmlspecialchars_decode(Lobby\DB::getOption("lobby_latest_version_release_notes"));?> 
            </blockquote> 
          <?php 
            echo '<div style="margin-top: 10px;">'; 
              echo \Lobby::l("/admin/update.php?step=1" . CSRF::getParam(), "Start Lobby Update", "class='btn btn-large red'"); 
            echo '</div>'; 
          }else{ 
            echo "<h2>Lobby</h2>"; 
            echo sme("No Updates", "You are using the latest version of Lobby : <blockquote><b>". Lobby::getVersion(true) . "</b> released on <b>" . Lobby::$versionReleased ."</b></blockquote>"); 
          } 
        } 
        if($step !== null && CSRF::check()){ 
          $step = $step; 
          if($step === "1"){ 
            if(!is_writable(L_DIR)){ 
              echo ser("Lobby Directory Not Writable", "The Lobby directory (". L_DIR .") is not writable. Make the folder writable to update Lobby."); 
            } 
          ?> 
            <p> 
              Looks like everything is ok. Hope you backed up Lobby installation & Database. 
              <div clear></div> 
              You can update now. 
            </p> 
          <?php 
            echo \Lobby::l("/admin/update.php?step=2" . CSRF::getParam(), "Start Update", "clear class='btn green'"); 
          }elseif($step == 2){ 
            $version = Lobby\DB::getOption("lobby_latest_version"); 
            echo '<iframe src="'. L_URL . "/admin/download.php?type=lobby". CSRF::getParam() .'" style="border: 0;width: 100%;height: 200px;"></iframe>'; 
          } 
        } 
        $shouldUpdate = Request::postParam("updateApp"); 
 
        if($action === "updateApps" && is_array($shouldUpdate) && CSRF::check()){ 
          /** 
           * Prevent display of Apps' Update List 
           */ 
          $step = 1; 
 
          foreach($shouldUpdate as $appID){ 
            echo '<iframe src="'. L_URL . "/admin/download.php?type=app&app={$appID}&isUpdate=1". CSRF::getParam() .'" style="border: 0;width: 100%;height: 200px;"></iframe>'; 
          } 
        } 
 
        if($step === null){ 
          echo "<h2>Apps</h2>"; 
        } 
        $appUpdates = Update::getApps(); 
 
        if($step === null && empty($appUpdates)){ 
          echo sme("No Updates", "All apps installed are up to date"); 
        }else if($step === null && isset($appUpdates) && count($appUpdates)){ 
        ?> 
          <p>New versions of apps are available. Choose which apps to update from the following :</p> 
          <form method="POST" clear> 
            <?php echo CSRF::getInput();?> 
            <table> 
              <thead> 
                <tr> 
                  <td style='width: 5%;'>Update ?</td> 
                  <td style='width: 20%;'>App</td> 
                  <td style='width: 5%;'>Version</td> 
                  <td style='width: 10%;'>Latest Version</td> 
                  <td style='width: 40%;'>Requires</td> 
                </tr> 
              </thead> 
              <tbody> 
                <?php 
                $appUpdatesCount = count($appUpdates); 
 
                foreach($appUpdates as $appID => $latestAppInfo){ 
                  $App = new \Lobby\Apps($appID); 
 
                  if(Need::checkRequirements($latestAppInfo["require"], true)){ 
                    echo "<tr>"; 
                      echo '<td><label><input style="vertical-align:top;display:inline-block;" checked="checked" type="checkbox" name="updateApp[]" value="'. $appID .'" /><span></span></label></td>'; 
                  }else{ 
                    $appUpdatesCount--; 
 
                    echo "<tr title='Cannot update app because requirements are not satisfied'>"; 
                      echo '<td><label><input style="vertical-align:top;display:inline-block;" disabled="disabled" type="checkbox" name="updateApp[]" value="'. $appID .'" /><span></span></label></td>'; 
                  } 
 
                    echo '<td><span style="vertical-align:middle;display:inline-block;margin-left:5px;">'. $App->info["name"] .'</span></td>'; 
                    echo '<td>'. $App->info["version"] .'</td>'; 
                    echo '<td>'. $latestAppInfo["version"] .'</td>'; 
                    echo '<td>'; 
                      if(!empty($latestAppInfo["require"])){ 
                        $requirements = Need::checkRequirements($latestAppInfo["require"], false, true); 
 
                        echo "<ul class='collection'>"; 
                        foreach($requirements as $dependency => $depInfo){ 
                          if($depInfo["satisfy"]){ 
                            echo "<li class='collection-item'>$dependency {$depInfo['require']}</li>"; 
                          }else{ 
                            echo "<li class='collection-item red'>$dependency {$depInfo['require']}</li>"; 
                          } 
                        } 
                        echo "</ul>"; 
                      } 
                    echo '</td>'; 
                  echo '</tr>'; 
                } 
                ?> 
              </tbody> 
            </table> 
            <input type="hidden" name="action" value="updateApps" /> 
            <button class="btn red" <?php if($appUpdatesCount === 0) echo "disabled='disabled'"; ?> clear>Update Selected Apps</button> 
          </form> 
        <?php 
        } 
        ?> 
      </div> 
    </div> 
  </body> 
</html> 
 
 |