diff --git a/resources/classes/domains.php b/resources/classes/domains.php index 11f1275d25..3f331f2e47 100644 --- a/resources/classes/domains.php +++ b/resources/classes/domains.php @@ -263,6 +263,7 @@ if (!class_exists('domains')) { $database_default_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED); unset($prep_statement); + //get the domain_uuid foreach($domains as $row) { if (count($domains) == 1) { @@ -363,7 +364,107 @@ if (!class_exists('domains')) { unset($_SESSION['domain']); unset($_SESSION['switch']); - } + } //end upgrade method + + public function settings() { + + //connect to the database if not connected + if (!$this->db) { + require_once "resources/classes/database.php"; + $database = new database; + $database->connect(); + $this->db = $database->db; + } + + //get the list of installed apps from the core and mod directories + $config_list = glob($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH . "/*/*/app_config.php"); + $x=0; + foreach ($config_list as $config_path) { + include($config_path); + $x++; + } + $x = 0; + foreach ($apps as $app) { + if (is_array($app['default_settings'])) { + foreach ($app['default_settings'] as $setting) { + $array[$x] = ($setting); + $array[$x]['app_uuid'] = $app['uuid']; + $x++; + } + } + } + + //get an array of the default settings + $sql = "select * from v_default_settings "; + $prep_statement = $this->db->prepare($sql); + $prep_statement->execute(); + $default_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED); + unset ($prep_statement, $sql); + + //find the missing default settings + $x = 0; + foreach ($array as $setting) { + foreach ($default_settings as $row) { + if (trim($row['default_setting_category']) == trim($setting['default_setting_category']) + && trim($row['default_setting_subcategory']) == trim($setting['default_setting_subcategory']) + && trim($row['default_setting_name']) == trim($setting['default_setting_name']) + && trim($row['default_setting_value']) == trim($setting['default_setting_value'])) { + + //update matching settings + if ($row['default_setting_uuid'] != $setting['default_setting_uuid']) { + $sql = "update v_default_settings "; + $sql .= "set default_setting_uuid = '".$setting['default_setting_uuid']."', "; + $sql .= "app_uuid = '".$setting['app_uuid']."', "; + $sql .= "where default_setting_uuid = '".$row['default_setting_uuid']."';"; + echo $sql."\n"; + // $this->db->exec(check_sql($sql)); + } + + //remove settings from the array that were found + unset($array[$x]); + } + } + $x++; + } + unset($default_settings); + + //get the missing count + $i = 0; + foreach ($array as $row) { $i++; } + $array_count = $i; + + //add the missing default settings + if (is_array($array)) { + $sql = "insert into v_default_settings ("; + $sql .= "default_setting_uuid, "; + $sql .= "default_setting_category, "; + $sql .= "default_setting_subcategory, "; + $sql .= "default_setting_name, "; + $sql .= "default_setting_value, "; + $sql .= "default_setting_enabled, "; + $sql .= "default_setting_description "; + $sql .= ") values \n"; + $i = 1; + foreach ($array as $row) { + $sql .= "("; + $sql .= "'".check_str($row['default_setting_uuid'])."', "; + $sql .= "'".check_str($row['default_setting_category'])."', "; + $sql .= "'".check_str($row['default_setting_subcategory'])."', "; + $sql .= "'".check_str($row['default_setting_name'])."', "; + $sql .= "'".check_str($row['default_setting_value'])."', "; + $sql .= "'".check_str($row['default_setting_enabled'])."', "; + $sql .= "'".check_str($row['default_setting_description'])."' "; + $sql .= ")"; + if ($array_count != $i) { + $sql .= ",\n"; + } + $i++; + } + echo $sql; + // $this->db->exec(check_sql($sql)); + unset($array); + } + } //end settings method } }