Ejemplo n.º 1
0
 static function doInstallModule()
 {
     self::$error_message = "";
     self::$error = false;
     if ($_FILES['modulefile']['error'] > 0) {
         self::$error_message = "Couldn't upload the file, " . $_FILES['modulefile']['error'] . "";
     } else {
         $archive_ext = fs_director::GetFileExtension($_FILES['modulefile']['name']);
         $module_folder = fs_director::GetFileNameNoExtentsion($_FILES['modulefile']['name']);
         $module_dir = ctrl_options::GetSystemOption('sentora_root') . 'modules/' . $module_folder;
         if (!fs_director::CheckFolderExists($module_dir)) {
             if ($archive_ext != 'zpp') {
                 self::$error_message = "Package type was not detected as a .zpp (Sentora Package) archive.";
             } else {
                 if (fs_director::CreateDirectory($module_dir)) {
                     if (sys_archive::Unzip($_FILES['modulefile']['tmp_name'], $module_dir . '/')) {
                         if (!fs_director::CheckFileExists($module_dir . '/module.xml')) {
                             self::$error_message = "No module.xml file found in the unzipped archive.";
                         } else {
                             ui_module::ModuleInfoToDB($module_folder);
                             $extra_config = $module_dir . "/deploy/install.run";
                             if (fs_director::CheckFileExists($extra_config)) {
                                 exec(ctrl_options::GetSystemOption('php_exer') . " " . $extra_config . "");
                             }
                             self::$ok = true;
                         }
                     } else {
                         self::$error_message = "Couldn't unzip the archive (" . $_FILES['modulefile']['tmp_name'] . ") to " . $module_dir . '/';
                     }
                 } else {
                     self::$error_message = "Couldn't create module folder in " . $module_dir;
                 }
             }
         } else {
             self::$error_message = "The module " . $module_folder . " is already installed on this server!";
         }
     }
     return;
 }
Ejemplo n.º 2
0
 /**
  * This class scans the module directory and will return an array of new modules that are not yet in the database.
  * @author Bobby Allen (ballen@bobbyallen.me)
  * @global db_driver $zdbh The ZPX database handle.
  * @param boolean $init Upon finding modules that don't exist in the database, add them!
  * @return array List of all new modules.
  */
 static function ScanForNewModules($init = false)
 {
     global $zdbh;
     $new_module_list = array();
     $handle = @opendir(ctrl_options::GetSystemOption('zpanel_root') . "modules");
     $chkdir = ctrl_options::GetSystemOption('zpanel_root') . "modules/";
     if ($handle) {
         while ($file = readdir($handle)) {
             if ($file != "." && $file != "..") {
                 if (is_dir($chkdir . $file)) {
                     $sql = $zdbh->prepare("SELECT mo_id_pk FROM x_modules WHERE mo_folder_vc = :file");
                     $sql->bindParam(':file', $file);
                     $status = $sql->execute();
                     $match_module = $sql->fetch();
                     if (!$match_module) {
                         array_push($new_module_list, $file);
                     }
                 }
             }
         }
         closedir($handle);
     }
     if ($init == true) {
         foreach ($new_module_list as $modules_to_import) {
             ui_module::ModuleInfoToDB($modules_to_import);
         }
     }
     return $new_module_list;
 }