public function getAppInfo($app_id)
 {
     $app = Mysql::getInstance()->from('apps')->where(array('id' => $app_id))->get()->first();
     if (empty($app)) {
         return false;
     }
     $repo = new GitHub($app['url']);
     $info = $repo->getFileContent('package.json');
     $app['name'] = isset($info['name']) ? $info['name'] : '';
     $app['alias'] = empty($info['alias']) ? AppsManager::safeFilename($info['name']) : $info['alias'];
     $app['available_version'] = isset($info['version']) ? $info['version'] : '';
     $app['description'] = isset($info['description']) ? $info['description'] : '';
     $option_values = json_decode($app['options'], true);
     if (empty($option_values)) {
         $option_values = array();
     }
     unset($app['options']);
     if ($app['current_version']) {
         $app['installed'] = is_dir(realpath(PROJECT_PATH . '/../../' . Config::getSafe('apps_path', 'stalker_apps/') . $app['alias'] . '/' . $app['current_version']));
     } else {
         $app['installed'] = false;
     }
     $app['app_url'] = 'http' . (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ? 's' : '') . '://' . $_SERVER['HTTP_HOST'] . '/' . Config::getSafe('apps_path', 'stalker_apps/') . $app['alias'] . '/' . $app['current_version'];
     $releases = $repo->getReleases(50);
     if (is_array($releases)) {
         $releases = array_map(function ($release) use($app, $option_values) {
             $repo = new GitHub($app['url']);
             $repo->setRelease($release['tag_name']);
             $info = $repo->getFileContent('package.json');
             $option_list = isset($info['options']) ? $info['options'] : array();
             $option_list = array_map(function ($option) use($option_values) {
                 if (isset($option_values[$option['name']])) {
                     $option['value'] = $option_values[$option['name']];
                 } elseif (!isset($option['value'])) {
                     $option['value'] = null;
                 }
                 if (isset($option['info'])) {
                     $option['desc'] = $option['info'];
                 }
                 return $option;
             }, $option_list);
             return array('version' => $release['tag_name'], 'name' => $release['name'], 'published' => $release['published_at'], 'description' => $release['body'], 'installed' => is_dir(realpath(PROJECT_PATH . '/../../' . Config::getSafe('apps_path', 'stalker_apps/') . $app['alias'] . '/' . $release['tag_name'])), 'current' => $release['tag_name'] == $app['current_version'], 'options' => $option_list);
         }, $releases);
     }
     $app['versions'] = $releases;
     return $app;
 }