Jelajahi Sumber

Dashboard: Corrected app_defaults to create missing Dashboard entries in Default Settings.

reliberate 9 tahun lalu
induk
melakukan
776716dedf
1 mengubah file dengan 60 tambahan dan 20 penghapusan
  1. 60 20
      core/user_settings/app_defaults.php

+ 60 - 20
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,30 +157,43 @@ 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);
 
 }