function OnAppvCD_ConfigOptions() { $data = new stdClass(); $data->errors = $data->warnings = new stdClass(); $module = new OnAppvCDModule(); $data->lang = $module->loadLang()->Admin; if (!file_exists(ONAPP_WRAPPER_INIT)) { $data->error = $data->lang->WrapperNotFound . ' ' . ROOTDIR . '/includes/wrapper'; goto end; } $serverGroup = $GLOBALS['servergroup']; /** @var WHMCS_OnApp_Server[] $servers */ $servers = Capsule::table('tblservers AS srv')->leftJoin('tblservergroupsrel AS rel', 'srv.id', '=', 'rel.serverid')->leftJoin('tblservergroups AS grp', 'grp.id', '=', 'rel.groupid')->where('srv.type', OnAppvCDModule::MODULE_NAME)->where('grp.id', $serverGroup)->where('srv.disabled', 0)->select('srv.id', 'srv.name', 'srv.ipaddress', 'srv.secure', 'srv.hostname', 'srv.username', 'srv.password')->get(); if (empty($servers)) { $data->error = $data->lang->ServersNone; } else { $data->servers = new stdClass(); foreach ($servers as $serverConfig) { # error if server IP or hostname are not set if (empty($serverConfig->ipaddress) && empty($serverConfig->hostname)) { $data->error .= $serverConfig->name . ': ' . $data->lang->HostAddressNotFound . PHP_EOL; continue; } $serverConfig->password = decrypt($serverConfig->password); $module = new OnAppvCDModule($serverConfig); //compare wrapper version with API $compareResult = $module->checkWrapperVersion(); if (!$compareResult['status']) { $data->error = $data->lang->WrapperUpdate . ' (wrapper version: ' . $compareResult['wrapperVersion'] . '; ' . 'api version: ' . $compareResult['apiVersion'] . ')'; goto end; } $data->servers->{$serverConfig->id} = $module->getData(); $data->servers->{$serverConfig->id}->Name = $serverConfig->name; } if ($data->servers) { # get additional data $data->TimeZones = file_get_contents(__DIR__ . '/includes/php/tzs.json'); $data->TimeZones = json_decode($data->TimeZones); $data->productOptions = initConfigOptionfromDB(); if (!(empty($data->productOptions[1]) || empty($data->productOptions[24]))) { $data->productSettings = json_decode($data->productOptions[24])->{$data->productOptions[1]}; $data->productSettingsJSON = htmlspecialchars($data->productOptions[24]); } } } end: return ['' => ['Description' => $module->buildHTML($data)]]; }