| <?php
use \Lobby\Apps;
use \Lobby\FS;
use \Lobby\Need;
$appID = Request::get("app");
$action = Request::get("action");
$quick = Request::get("quick") !== null;
/**
* Whether the app info should be shown
*/
$showAppInfo = true;
/**
* Whether this is a request to show a message
*/
$show = Request::get("show") !== null;
if($appID != null){
  $App = new Apps($appID);
  if(!$App->exists)
    Response::showError("Error", "I checked all over, but the app does not exist");
  $appIDEscaped = htmlspecialchars($appID);
  if(!$show && $action !== null && CSRF::check()){
    if($action === "disable"){
      if($App->disableApp())
        Response::redirect("/admin/apps.php?app=$appID&action=disable&show" . CSRF::getParam());
      else
        Response::redirect("/admin/apps.php?app=$appID&action=disable-fail&show" . CSRF::getParam());
    }else if($action === "enable"){
      if($App->enableApp())
        Response::redirect("/admin/apps.php?app=$appID&action=enable&show" . CSRF::getParam());
      else
        Response::redirect("/admin/apps.php?app=$appID&action=enable-fail&show" . CSRF::getParam());
    }
  }
}
?>
<html>
  <head>
    <?php
    \Assets::js("admin.apps.js", "/admin/js/apps.js");
    \Assets::css("apps-grid", "/admin/css/apps-grid.css");
    \Assets::css("apps", "/admin/css/apps.css");
    \Hooks::doAction("admin.head.begin");
    \Response::head("App Manager");
    ?>
  </head>
  <body>
    <?php
    \Hooks::doAction("admin.body.begin");
    ?>
    <div id="workspace">
      <div class="contents">
        <?php
        if($appID !== null && !$quick){
        ?>
          <h2><?php echo "<a href='". Lobby::u("/admin/apps.php?app={$App->info['id']}") ."'>". $App->info['name'] ."</a>";?></h2>
          <div id="appNav">
            <p class="chip"><?php echo $App->info['short_description'];?></p>
          </div>
          <?php
          if($action !== null && $show && CSRF::check()){
            switch($action){
              case "disable":
                echo sss("Disabled", "The App <strong>$appIDEscaped</strong> has been disabled.");
                break;
              case "disable-fail":
                echo ser("Error", "The App <strong>$appIDEscaped</strong> couldn't be disabled. Try again.");
                break;
              case "enable":
                echo sss("Enabled", "The App <strong>$appIDEscaped</strong> has been enabled.");
                break;
              case "enable-fail":
                echo ser("Error", "The App couldn't be enabled. Try again.", false);
                break;
            }
          }else if($action !== null && CSRF::check()){
            if($action === "remove"){
              /**
               * Do not show app info during confirmation
               */
              $showAppInfo = false;
              echo sme("Confirm", "<p>Are you sure you want to remove the app <b>$appIDEscaped</b> ? This cannot be undone.</p>" . Lobby::l("/admin/install-app.php?action=remove&app=$appID" . CSRF::getParam(), "Yes, I'm sure", "class='btn red'") . Lobby::l("/admin/apps.php?app=$appID" . CSRF::getParam(), "No, I'm not", "class='btn blue' id='cancel'"));
            }else if($action === "clear-data"){
              $showAppInfo = false;
              echo sme("Confirm", "<p>Are you sure you want to clear the data of app <b>$appIDEscaped</b> ? This cannot be undone.</p>" . Lobby::l("/admin/install-app.php?action=clear-data&app=$appID" . CSRF::getParam(), "Yes, I'm sure", "class='btn red'") . Lobby::l("/admin/apps.php?app=$appID" . CSRF::getParam(), "No, I'm not", "class='btn blue' id='cancel'"));
            }
          }
          if($showAppInfo){
          ?>
            <div class="row">
              <div class="col m3" id="leftpane" style="text-align: center;">
                <img src="<?php echo \Lobby::u("admin/image/clear.gif");?>" height="200" width="200" />
                <script>
                  $(window).load(function(){
                    var image = $("#leftpane img");
                    var downloadingImage = new Image();
                    downloadingImage.onload = function(){
                      image.attr("src", this.src);
                    };
                    downloadingImage.src = "<?php echo $App->info["logo"];?>";
                  });
                </script>
                <?php
                $App = new Apps($appID);
                $requires = $App->info['require'];
                if($App->hasUpdate()){
                  /**
                   * New version of app is available
                   */
                  echo \Lobby::l("/admin/check-updates.php", "Update App", "class='btn red'");
                }else if($App->enabled){
                  echo \Lobby::l($App->info['url'], "Open App", "class='btn green'");
                  echo \Lobby::l("/admin/apps.php?app=$appID&action=disable" . CSRF::getParam(), "Disable", "class='btn'");
                }else{
                  /**
                   * App is Disabled. Show button to enable it
                   */
                  echo \Lobby::l("/admin/apps.php?action=enable&redirect=1&app=". $appID . CSRF::getParam(), "Enable", "class='btn green'");
                }
                echo \Lobby::l("/admin/apps.php?app=$appID&action=remove" . CSRF::getParam(), "Remove", "class='btn red'");
                ?>
              </div>
              <div class="col m9">
                <ul class="tabs">
                  <li class="tab"><a href="#app-info">Info</a></li>
                  <li class="tab"><a href="#app-data">Memory</a></li>
                </ul>
                <div id="app-info" class="tab-contents">
                  <div class="chip">Version : <?php echo $App->info['version'];?></div><cl/>
                  <div class="chip">Developed By <a href="<?php echo $App->info['author_page'];?>" target="_blank"><?php echo $App->info['author'];?></a></div><cl/>
                  <div class="chip"><a href="<?php echo $App->info['app_page'];?>" target="_blank">App's Webpage</a></div><cl/>
                  <?php
                  if(!empty($App->info["require"])){
                    $requirements = Need::checkRequirements($App->info["require"], false, true);
                    echo "<div class='chip'>Requirements :</div><ul>";
                    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>";
                  }
                  ?>
              </div>
              <div id="app-data" class="tab-contents">
                <table>
                  <tbody>
                    <tr>
                      <td>Installed in</td>
                      <td><?php echo $App->dir;?></td>
                    </tr>
                    <tr>
                      <td>Folder</td>
                      <td><h6><?php $folderSize = FS::getSize($App->dir);echo FS::normalizeSize($folderSize);?></h6></td>
                    </tr>
                    <tr>
                      <td title="Size occupied in database">App Data</td>
                      <td>
                        <h6>
                        <?php $dbSize = $App->getDBSize();echo FS::normalizeSize($dbSize);?>
                        <a class="btn red" href="<?php echo \Lobby::u("/admin/apps.php?app=$appID&action=clear-data" . CSRF::getParam());?>">Clear Data</a>
                        </h6>
                      </td>
                    </tr>
                  </tbody>
                  <tfoot>
                    <tr>
                      <td>Total size</td>
                      <td><h5><?php echo FS::normalizeSize($folderSize + $dbSize);?></h5></td>
                    </tr>
                  </tfoot>
                </table>
              </div>
            </div>
            <style>
            .tab-contents{
              padding: 10px 0;
            }
            </style>
        <?php
          }
        }else{
        ?>
          <h2>Apps</h2>
          <p>Manage <b>installed apps</b>. You can find and install more Apps from <a href="<?php echo L_URL;?>/admin/lobby-store.php">Lobby Store</a>.</p>
        <?php
          if($action !== null){
            switch($action){
              case "disable":
                echo sss("Disabled", "The App <strong>$appIDEscaped</strong> has been disabled.");
                break;
              case "disable-fail":
                echo ser("Error", "The App <strong>$appIDEscaped</strong> couldn't be disabled. Try again.");
                break;
              case "enable":
                echo sss("Enabled", "The App <strong>$appIDEscaped</strong> has been enabled.");
                break;
              case "enable-fail":
                echo ser("Error", "The App couldn't be enabled. Try again.", false);
                break;
            }
          }
          $apps = Apps::getApps();
          if(empty($apps)){
            echo ser("No Apps", "You haven't installed any apps. <br/>Get great Apps from " . \Lobby::l("/admin/lobby-store.php", "Lobby Store"));
          }else{
            echo '<div class="apps row">';
            foreach($apps as $app){
              $App = new Apps($app);
            ?>
              <div class="app col s12 m4 l3 <?php if($App->hasUpdate()) echo "red"; ?>">
                <div class="app-inner card row">
                  <div class="lpane col s5 m5 l5">
                    <a href="<?php echo \Lobby::u("/admin/apps.php?app=$app");?>">
                      <img src="<?php echo $App->info["logo"];?>" />
                    </a>
                  </div>
                  <div class="rpane col s7 m6 l7">
                    <a href="<?php echo \Lobby::u("/admin/apps.php?app=$app");?>" class="name truncate" title="<?php echo $App->info["name"];?>"><?php echo $App->info["name"];?></a>
                    <div class="actions">
                      <?php
                      echo "<div class='switch col s6 m12 l6'>";
                        if($App->enabled){
                          echo "<a href='". Lobby::u("/admin/apps.php?app=$app&action=disable" . CSRF::getParam()) ."'>";
                            echo "<label>";
                              echo "<input type='checkbox' data-appID='$app' checked='checked' />";
                              echo "<span class='lever' title='Disable app'></span>";
                            echo "</label>";
                          echo "</a>";
                        }else{
                          echo "<a href='". Lobby::u("/admin/apps.php?app=$app&action=enable" . CSRF::getParam()) ."'>";
                            echo "<label>";
                              echo "<input type='checkbox' data-appID='$app' />";
                              echo "<span class='lever' title='Enable app'></span>";
                            echo "</label>";
                          echo "</a>";
                        }
                      echo "</div>";
                      echo "<div class='col s6 m12 l6'>" . Lobby::l("/admin/apps.php?app=$app&action=remove" . CSRF::getParam(), "<i id='delete' class='small' title='Delete app'></i>") . "</div>";
                      ?>
                    </div>
                  </div>
                </div>
              </div>
            <?php
            }
            echo '</div>';
          }
        }
        ?>
      </div>
    </div>
  </body>
</html>
 |