From b90d404ff530be3d773b221af81ba88493fe3dfe Mon Sep 17 00:00:00 2001 From: reliberate Date: Wed, 30 Mar 2016 15:42:25 -0600 Subject: [PATCH] Dashboard: Corrected app_defaults to create missing Dashboard entries in Default Settings. --- core/user_settings/app_defaults.php | 82 +++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 21 deletions(-) diff --git a/core/user_settings/app_defaults.php b/core/user_settings/app_defaults.php index 3fe45e4d73..2d08f51e4d 100644 --- a/core/user_settings/app_defaults.php +++ b/core/user_settings/app_defaults.php @@ -10,7 +10,34 @@ if ($domains_processed == 1) { $array[$x]['default_setting_value'] = generate_password('20', '4'); $array[$x]['default_setting_enabled'] = 'false'; $array[$x]['default_setting_description'] = 'Reset Password link visible on login page when populated and enabled.'; - $x++; + + //iterate and add each, if necessary + foreach ($array as $index => $default_settings) { + + //add theme default settings + $sql = "select count(*) as num_rows from v_default_settings "; + $sql .= "where default_setting_category = '".$default_settings['default_setting_category']."' "; + $sql .= "and default_setting_subcategory = '".$default_settings['default_setting_subcategory']."' "; + $sql .= "and default_setting_name = '".$default_settings['default_setting_name']."' "; + $prep_statement = $db->prepare($sql); + if ($prep_statement) { + $prep_statement->execute(); + $row = $prep_statement->fetch(PDO::FETCH_ASSOC); + unset($prep_statement); + if ($row['num_rows'] == 0) { + $orm = new orm; + $orm->name('default_settings'); + $orm->save($array[$index]); + $message = $orm->message; + //print_r($message); + } + unset($row); + } + + } + + //define array of dashboard settings + $x = 0; $array[$x]['default_setting_category'] = 'dashboard'; $array[$x]['default_setting_subcategory'] = 'admin'; $array[$x]['default_setting_name'] = 'array'; @@ -130,31 +157,44 @@ if ($domains_processed == 1) { $array[$x]['default_setting_enabled'] = 'true'; $array[$x]['default_setting_description'] = 'Enable Dashboard Recent Calls block for users in the users group.'; - //iterate and add each, if necessary - foreach ($array as $index => $default_settings) { + //get an array of the default settings + $sql = "select * from v_default_settings "; + $sql .= "where default_setting_category = 'dashboard' "; + $prep_statement = $db->prepare($sql); + $prep_statement->execute(); + $default_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED); + unset ($prep_statement, $sql); - //add theme default settings - $sql = "select count(*) as num_rows from v_default_settings "; - $sql .= "where default_setting_category = '".$default_settings['default_setting_category']."' "; - $sql .= "and default_setting_subcategory = '".$default_settings['default_setting_subcategory']."' "; - $sql .= "and default_setting_name = '".$default_settings['default_setting_name']."' "; - $prep_statement = $db->prepare($sql); - if ($prep_statement) { - $prep_statement->execute(); - $row = $prep_statement->fetch(PDO::FETCH_ASSOC); - unset($prep_statement); - if ($row['num_rows'] == 0) { - $orm = new orm; - $orm->name('default_settings'); - $orm->save($array[$index]); - $message = $orm->message; - //print_r($message); + //find the missing default settings + $x = 0; + foreach ($array as $setting) { + $found = false; + $missing[$x] = $setting; + foreach ($default_settings as $row) { + if (trim($row['default_setting_subcategory']) == trim($setting['default_setting_subcategory'])) { + $found = true; + //remove items from the array that were found + unset($missing[$x]); } - unset($row); } - + $x++; } + //add the missing default settings + foreach ($missing as $row) { + //add the default settings + $orm = new orm; + $orm->name('default_settings'); + $orm->save($row); + $message = $orm->message; + unset($orm); + //print_r($message); + } + unset($missing); + + //unset the array variable + unset($array); + } ?> \ No newline at end of file