From 30e6ad4225d39313840e3926a3c929f900030995 Mon Sep 17 00:00:00 2001
From: CaMer0n <cameron@e107coders.org>
Date: Tue, 1 Sep 2009 02:00:56 +0000
Subject: [PATCH] Update Routines now checks default_install.xml for default
 core preferences. XML import function improvements and some PHP notice
 removal.

---
 e107_admin/update_routines.php | 56 +++++++++++++++++++---------------
 e107_files/default_install.xml | 32 +++++++++----------
 e107_handlers/xml_class.php    | 47 ++++++++++++++++++++++------
 install_.php                   |  8 +++--
 4 files changed, 90 insertions(+), 53 deletions(-)

diff --git a/e107_admin/update_routines.php b/e107_admin/update_routines.php
index 5e50bdbfc..7d194cbef 100644
--- a/e107_admin/update_routines.php
+++ b/e107_admin/update_routines.php
@@ -3,7 +3,7 @@
 + ----------------------------------------------------------------------------+
 |     e107 website system
 |
-|     �Steve Dunstan 2001-2002
+|     �Steve Dunstan 2001-2002
 |     http://e107.org
 |     jalist@e107.org
 |
@@ -11,8 +11,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $Source: /cvs_backup/e107_0.8/e107_admin/update_routines.php,v $
-|     $Revision: 1.44 $
-|     $Date: 2009-08-17 18:42:20 $
+|     $Revision: 1.45 $
+|     $Date: 2009-09-01 02:00:55 $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -31,7 +31,7 @@ require_once(e_HANDLER.'db_table_admin_class.php');
 // To do - how do we handle multi-language tables?
 
 // If following line uncommented, enables a test routine
-//define('TEST_UPDATE',TRUE);
+// define('TEST_UPDATE',TRUE);
 $update_debug = FALSE;			// TRUE gives extra messages in places
 //$update_debug = TRUE;			// TRUE gives extra messages in places
 if (defined('TEST_UPDATE')) $update_debug = TRUE;
@@ -178,8 +178,9 @@ function update_check()
 
 	require_once(e_HANDLER."e_upgrade_class.php");
 	$upg = new e_upgrade;
-	$upg->checkSiteTheme();
-	$upg->checkAllPlugins();
+	//TODO Enable this before release!!
+//	$upg->checkSiteTheme();
+ //	$upg->checkAllPlugins();
 
 
 //--------------------------------------------
@@ -284,28 +285,32 @@ function update_706_to_800($type='')
 	global $sysprefs, $eArrayStorage, $tp;
 	$notify_prefs = $sysprefs -> get('notify_prefs');
 	$notify_prefs = $eArrayStorage -> ReadArray($notify_prefs);
+
 	$nt_changed = 0;
-	foreach ($notify_prefs['event'] as $e => $d)
+	if(vartrue($notify_prefs['event']))
 	{
-		if (isset($d['type']))
+		foreach ($notify_prefs['event'] as $e => $d)
 		{
-			if ($just_check) return update_needed('Notify pref: '.$e.' outdated');
-			switch ($d['type'])
+			if (isset($d['type']))
 			{
-				case 'main' :
-					$notify_prefs['event'][$e]['class'] = e_UC_MAINADMIN;
-					break;
-				case 'class' :		// Should already have class defined
-					break;
-				case 'email' :
-					$notify_prefs['event'][$e]['class'] = 'email';
-					break;
-				case 'off' :		// Need to disable
-				default :
-					$notify_prefs['event'][$e]['class'] = e_UC_NOBODY;		// Just disable if we don't know what else to do
+				if ($just_check) return update_needed('Notify pref: '.$e.' outdated');
+				switch ($d['type'])
+				{
+					case 'main' :
+						$notify_prefs['event'][$e]['class'] = e_UC_MAINADMIN;
+						break;
+					case 'class' :		// Should already have class defined
+						break;
+					case 'email' :
+						$notify_prefs['event'][$e]['class'] = 'email';
+						break;
+					case 'off' :		// Need to disable
+					default :
+						$notify_prefs['event'][$e]['class'] = e_UC_NOBODY;		// Just disable if we don't know what else to do
+				}
+				$nt_changed++;
+				unset($notify_prefs['event'][$e]['type']);
 			}
-			$nt_changed++;
-			unset($notify_prefs['event'][$e]['type']);
 		}
 	}
 	if ($nt_changed)
@@ -953,8 +958,9 @@ function catch_error(&$target)
 
 function get_default_prefs()
 {
-  require(e_FILE."def_e107_prefs.php");
-  return $pref;
+	$xmlArray = e107::getSingleton('xmlClass')->loadXMLfile(e_FILE."default_install.xml",'advanced');
+	$pref = e107::getSingleton('xmlClass')->e107ImportPrefs($xmlArray,'core');
+	return $pref;
 }
 
 
diff --git a/e107_files/default_install.xml b/e107_files/default_install.xml
index 6d61890ed..4b8eab6ae 100644
--- a/e107_files/default_install.xml
+++ b/e107_files/default_install.xml
@@ -606,7 +606,7 @@ City, State, Country
 			<field name='menu_order'>1</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>login_menu</field>
+			<field name='menu_path'>login_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -617,7 +617,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>online</field>
+			<field name='menu_path'>online/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -628,7 +628,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>blogcalendar_menu</field>
+			<field name='menu_path'>blogcalendar_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -639,7 +639,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>tree_menu</field>
+			<field name='menu_path'>tree_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -650,7 +650,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>search_menu</field>
+			<field name='menu_path'>search_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -661,7 +661,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>siteinfo_menu</field>
+			<field name='menu_path'>siteinfo_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -672,7 +672,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>user_menu</field>
+			<field name='menu_path'>user_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -683,7 +683,7 @@ City, State, Country
 			<field name='menu_order'>2</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>siteinfo_menu</field>
+			<field name='menu_path'>siteinfo_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -694,7 +694,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>banner_menu</field>
+			<field name='menu_path'>banner_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -705,7 +705,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>clock_menu</field>
+			<field name='menu_path'>clock_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -716,7 +716,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>siteinfo_menu</field>
+			<field name='menu_path'>siteinfo_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -727,7 +727,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>comment_menu</field>
+			<field name='menu_path'>comment_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -738,7 +738,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>online</field>
+			<field name='menu_path'>online/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -749,7 +749,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>other_news_menu</field>
+			<field name='menu_path'>other_news_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -760,7 +760,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>other_news_menu</field>
+			<field name='menu_path'>other_news_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
@@ -771,7 +771,7 @@ City, State, Country
 			<field name='menu_order'>0</field>
 			<field name='menu_class'>0</field>
 			<field name='menu_pages'></field>
-			<field name='menu_path'>admin_menu</field>
+			<field name='menu_path'>admin_menu/</field>
 			<field name='menu_layout'></field>
 			<field name='menu_parms'></field>
 		</item>
diff --git a/e107_handlers/xml_class.php b/e107_handlers/xml_class.php
index db891ad70..0bc64cd1c 100644
--- a/e107_handlers/xml_class.php
+++ b/e107_handlers/xml_class.php
@@ -9,8 +9,8 @@
  * Simple XML Parser
  *
  * $Source: /cvs_backup/e107_0.8/e107_handlers/xml_class.php,v $
- * $Revision: 1.19 $
- * $Date: 2009-08-31 13:12:03 $
+ * $Revision: 1.20 $
+ * $Date: 2009-09-01 02:00:56 $
  * $Author: e107coders $
 */
 
@@ -617,6 +617,34 @@ class xmlClass
 		}
 	}
 	
+	/**
+	 * Return an Array of core preferences from e107 XML Dump data
+	 * @param object $XMLData Raw XML e107 Export Data
+	 * @param object $prefType [optional] the type of core pref: core|emote|ipool|menu etc. 
+	 * @return preference array equivalent to the old $pref global;
+	 */
+	public function e107ImportPrefs($XMLData,$prefType='core')
+	{
+		if(!vartrue($XMLData['prefs'][$prefType]))
+		{
+			return;
+		} 
+		
+		$pref = array();
+		foreach($XMLData['prefs'][$prefType] as $val)
+		{
+			$value = (substr($val['@value'],0,7) == "array (") ? e107::getArrayStorage()->ReadArray($val['@value']) : $val['@value'];
+			$name = $val['@attributes']['name'];
+			$pref[$name] = $value;									
+		}	
+		
+		return $pref;	
+	}
+	
+	
+	
+	
+	
 	/**
 	 * Import an e107 XML file into site preferences and DB tables
 	 * @param path $file - e107 XML file path
@@ -642,14 +670,13 @@ class xmlClass
 		{
 			foreach($xmlArray['prefs'] as $type=>$array)
 			{
-				foreach ($array as $val)
+				$pArray = $this->e107ImportPrefs($xmlArray,$type);
+				e107::getConfig($type)->setPref($pArray);
+
+				if($debug == FALSE)
 				{
-				 	$value = (substr($val['@value'],0,7) == "array (") ? e107::getArrayStorage()->ReadArray($val['@value']) : $val['@value'];
-					e107::getConfig($type)->set($val['@attributes']['name'], $value);
-					
-				}
-			
-			  	e107::getConfig($type)->save(FALSE);
+					 e107::getConfig($type)->save(FALSE,TRUE);	
+				}			  	
 			}
 		}
 		
@@ -683,6 +710,8 @@ class xmlClass
 		
 		return $ret;				
 	}
+	
+	
 
 
 }
diff --git a/install_.php b/install_.php
index 34f2862a8..1cdd3a041 100644
--- a/install_.php
+++ b/install_.php
@@ -9,8 +9,8 @@
 * Installation file
 *
 * $Source: /cvs_backup/e107_0.8/install_.php,v $
-* $Revision: 1.31 $
-* $Date: 2009-08-31 14:37:24 $
+* $Revision: 1.32 $
+* $Date: 2009-09-01 02:00:56 $
 * $Author: e107coders $
 *
 */
@@ -965,8 +965,10 @@ class e_install
 		
 		$this->previous_steps['prefs']['replyto_name']		= $this->previous_steps['admin']['display'];
 		$this->previous_steps['prefs']['replyto_email']		= $this->previous_steps['admin']['email'];
-		    	
 		
+		$cookiename 										= str_replace(" ","_",$this->previous_steps['prefs']['sitename']);
+		$this->previous_steps['prefs']['cookie_name']		= substr($cookiename,0,5)."cookie";
+		    			
 		foreach($this->previous_steps['prefs'] as $key=>$val)
 		{
 			// e107::getConfig('core')->set($key, $val); //FIXME - pref class issues.