Esempio n. 1
0
 public static function show($console, $result, $data)
 {
     $pluginFiles = array();
     if ($handle = @opendir(dirname(__FILE__) . '/../../Plugins')) {
         while (false !== ($file = readdir($handle))) {
             if (substr($file, -5) != '.json' || $file == '.' || $file == '..') {
                 continue;
             }
             if (is_dir(dirname(__FILE__) . '/../../Plugins/' . $file)) {
                 continue;
             }
             $pluginFiles[] = $file;
         }
         closedir($handle);
     }
     $text = '';
     $text .= Design::erstelleBeschreibung($console, Language::Get('packages', 'description'));
     if (self::$onEvents['install']['enabledInstall']) {
         $text .= Design::erstelleZeile($console, Language::Get('packages', 'installSelected'), 'e', '', 'v', Design::erstelleSubmitButton(self::$onEvents['install']['event'][0], Language::Get('main', 'install')), 'h');
     }
     if (self::$onEvents['uninstall']['enabledInstall']) {
         $text .= Design::erstelleZeile($console, Language::Get('packages', 'uninstallSelected'), 'e', '', 'v', Design::erstelleSubmitButton(self::$onEvents['uninstall']['event'][0], Language::Get('main', 'uninstall')), 'h');
     }
     if (self::$onEvents['validateFiles']['enabledInstall']) {
         $text .= Design::erstelleZeile($console, Language::Get('packages', 'validateFilesDesc'), 'e', '', 'v', Design::erstelleSubmitButton(self::$onEvents['validateFiles']['event'][0], Language::Get('packages', 'validateFiles')), 'h');
     }
     $validateFiles = false;
     if (isset($result[self::$onEvents['validateFiles']['name']])) {
         $validateFiles = true;
     }
     if (isset($result[self::$onEvents['check']['name']]) && $result[self::$onEvents['check']['name']] != null) {
         $result = $result[self::$onEvents['check']['name']];
     } else {
         $result = array('content' => null, 'fail' => false, 'errno' => null, 'error' => null);
     }
     $installedPlugins = $result['content'];
     // hier die möglichen Erweiterungen ausgeben, zudem noch die Daten dieser Erweiterungen
     foreach ($pluginFiles as $plug) {
         $dat = file_get_contents(dirname(__FILE__) . '/../../Plugins/' . $plug);
         $dat = json_decode($dat, true);
         $name = $dat['name'];
         $version = $dat['version'];
         $voraussetzungen = $dat['requirements'];
         if (!is_array($voraussetzungen)) {
             $voraussetzungen = array($voraussetzungen);
         }
         $text .= Design::erstelleZeile($console, "{$name} v{$dat['version']}", 'e', self::$onEvents['install']['enabledInstall'] || self::$onEvents['uninstall']['enabledInstall'] ? Design::erstelleAuswahl($console, $data['PLUG']['plug_install_' . $name], 'data[PLUG][plug_install_' . $name . ']', $plug, null, true) : '', 'v');
         $isInstalled = false;
         if (isset($installedPlugins)) {
             foreach ($installedPlugins as $instPlug) {
                 if ($name == $instPlug['name']) {
                     if (isset($instPlug['version'])) {
                         $text .= Design::erstelleZeile($console, Language::Get('packages', 'currentVersion'), 'v', 'v' . $instPlug['version'], 'v');
                     } else {
                         $text .= Design::erstelleZeile($console, Language::Get('packages', 'currentVersion'), 'v', '???', 'v');
                     }
                     $isInstalled = true;
                     break;
                 }
             }
         }
         if (!$isInstalled) {
             $text .= Design::erstelleZeile($console, Language::Get('packages', 'currentVersion'), 'v', '---', 'v');
         }
         $vorText = '';
         foreach ($voraussetzungen as $vor) {
             $vorText .= "{$vor['name']} v{$vor['version']}, ";
         }
         if ($vorText == '') {
             $vorText = '---';
         } else {
             $vorText = substr($vorText, 0, -2);
         }
         $text .= Design::erstelleZeile($console, Language::Get('packages', 'requirements'), 'v', $vorText, 'v');
         $file = dirname(__FILE__) . '/../../Plugins/' . $plug;
         $fileCount = 0;
         $fileSize = 0;
         $componentCount = 0;
         if (file_exists($file) && is_readable($file)) {
             $input = file_get_contents($file);
             $input = json_decode($input, true);
             if ($input == null) {
                 $fail = true;
                 break;
             }
             $fileList = array();
             $fileListAddress = array();
             $componentFiles = array();
             self::gibPluginDateien($input, $fileList, $fileListAddress, $componentFiles);
             $fileCount = count($fileList);
             foreach ($fileList as $f) {
                 if (is_readable($f)) {
                     $fileSize += filesize($f);
                     if ($validateFiles) {
                         if ($fileSize > 0 && strtolower(substr($f, -5)) === '.json') {
                             // validiere die json Datei
                             $cont = file_get_contents($f);
                             if (trim($cont) != '') {
                                 $val = @json_decode(file_get_contents($f));
                                 if ($val === null) {
                                     $text .= Design::erstelleZeileShort($console, realpath($f), 'break v', Language::Get('packages', 'jsonInvalid'), 'v error_light break');
                                 }
                             }
                         }
                         if ($fileSize > 0 && strtolower(substr($f, -4)) === '.php') {
                             // validiere die php Datei
                             $output = null;
                             $result = null;
                             exec('(php -l -d error_reporting=E_ALL -d display_errors=on -d log_errors=off -f ' . realpath($f) . ') 2>&1', $output, $result);
                             if ($result != 0) {
                                 $text .= Design::erstelleZeileShort($console, realpath($f), 'break v', implode('<br>', $output), 'v error_light break');
                             }
                         }
                     }
                 }
             }
             $componentCount = count($componentFiles);
         }
         $text .= Design::erstelleZeile($console, Language::Get('packages', 'numberComponents'), 'v', $componentCount, 'v');
         $text .= Design::erstelleZeile($console, Language::Get('packages', 'numberFiles'), 'v', $fileCount, 'v');
         $text .= Design::erstelleZeile($console, Language::Get('packages', 'size'), 'v', Design::formatBytes($fileSize), 'v');
     }
     /*if ($installPlugins){
           if ($installPluginsResult !=null)
               foreach ($installPluginsResult as $component){
                  // $text .= "<tr><td class='e' rowspan='1'>{$component}</td><td class='v'></td><td class='e'><div align ='center'>".((isset($dat['status']) && $dat['status']===201) ? Language::Get('main','ok') : "<font color='red'>".Language::Get('main','fail')." ({$dat['status']})</font>")."</align></td></tr>";
               }
           $text .= Design::erstelleInstallationszeile($console, $fail, $errno, $error);
       }
       
       if ($uninstallPlugins){
           if ($uninstallPluginsResult !=null)
               foreach ($uninstallPluginsResult as $component){
                  // $text .= "<tr><td class='e' rowspan='1'>{$component}</td><td class='v'></td><td class='e'><div align ='center'>".((isset($dat['status']) && $dat['status']===201) ? Language::Get('main','ok') : "<font color='red'>".Language::Get('main','fail')." ({$dat['status']})</font>")."</align></td></tr>";
               }
               
           $text .= Design::erstelleInstallationszeile($console, $fail, $errno, $error);
       }*/
     echo Design::erstelleBlock($console, Language::Get('packages', 'title'), $text);
     return null;
 }