1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-08 15:46:44 +02:00

Update routine uses new combined admin logging and messaging API

This commit is contained in:
e107steved
2010-04-20 21:35:20 +00:00
parent 321adb9dc0
commit ee3e6ed9d9
4 changed files with 1629 additions and 1520 deletions

View File

@@ -200,10 +200,10 @@ require_once(e_HANDLER.'e_upgrade_class.php');
//-------------------------------------------- //--------------------------------------------
function update_core_prefs($type='') function update_core_prefs($type='')
{ {
global $pref, $admin_log, $e107info; global $pref, $e107info;
$admin_log = e107::getAdminLog();
$do_save = FALSE; $do_save = FALSE;
$should = get_default_prefs(); $should = get_default_prefs();
$accum = array();
$just_check = $type == 'do' ? FALSE : TRUE; // TRUE if we're just seeing if an update is needed $just_check = $type == 'do' ? FALSE : TRUE; // TRUE if we're just seeing if an update is needed
@@ -213,14 +213,16 @@ function update_core_prefs($type='')
{ {
if ($just_check) return update_needed('Missing pref: '.$k); if ($just_check) return update_needed('Missing pref: '.$k);
$pref[$k] = $v; $pref[$k] = $v;
$accum[] = $k; $admin_log->logMessage($k.' => '.$v, E_MESSAGE_NODISPLAY, E_MESSAGE_INFO);
$do_save = TRUE; $do_save = TRUE;
} }
} }
if ($do_save) if ($do_save)
{ {
save_prefs(); save_prefs();
$admin_log->log_event('UPDATE_03',LAN_UPDATE_14.$e107info['e107_version'].'[!br!]'.implode(', ',$accum),E_LOG_INFORMATIVE,''); // Log result of actual update $admin_log->logMessage(LAN_UPDATE_14.$e107info['e107_version'], E_MESSAGE_NODISPLAY, E_MESSAGE_INFO);
$admin_log->flushMessages('UPDATE_03',E_LOG_INFORMATIVE);
//$admin_log->log_event('UPDATE_03',LAN_UPDATE_14.$e107info['e107_version'].'[!br!]'.implode(', ',$accum),E_LOG_INFORMATIVE,''); // Log result of actual update
} }
return $just_check; return $just_check;
} }
@@ -255,8 +257,10 @@ if (defined('TEST_UPDATE'))
//-------------------------------------------- //--------------------------------------------
function update_706_to_800($type='') function update_706_to_800($type='')
{ {
global $sql,$ns, $pref, $admin_log, $e107info; global $sql,$ns, $pref, $e107info;
$mes = e107::getMessage(); //$mes = new messageLog; // Combined logging and message displaying handler
//$mes = e107::getMessage();
$mes = e107::getAdminLog(); // Used for combined logging and message displaying
// List of unwanted $pref values which can go // List of unwanted $pref values which can go
$obs_prefs = array('frontpage_type','rss_feeds', 'log_lvcount', 'zone', 'upload_allowedfiletype', 'real', 'forum_user_customtitle', $obs_prefs = array('frontpage_type','rss_feeds', 'log_lvcount', 'zone', 'upload_allowedfiletype', 'real', 'forum_user_customtitle',
@@ -335,11 +339,15 @@ function update_706_to_800($type='')
$db_parser = new db_table_admin; // Class to read table defs and process them $db_parser = new db_table_admin; // Class to read table defs and process them
$do_save = FALSE; // Set TRUE to update prefs when update complete $do_save = FALSE; // Set TRUE to update prefs when update complete
$updateMessages = array(); // Used to log actions for the admin log $updateMessages = array(); // Used to log actions for the admin log - TODO: will go once all converted to new class
$just_check = $type == 'do' ? FALSE : TRUE; // TRUE if we're just seeing whether an update is needed $just_check = $type == 'do' ? FALSE : TRUE; // TRUE if we're just seeing whether an update is needed
if (!$just_check)
{
$mes->logMessage(LAN_UPDATE_14.$e107info['e107_version'], E_MESSAGE_NODISPLAY);
}
// Check that custompages have been imported from current theme.php file // Check that custompages have been imported from current theme.php file
if(!array_key_exists('sitetheme_custompages',$pref)) if(!array_key_exists('sitetheme_custompages',$pref))
@@ -395,7 +403,7 @@ function update_706_to_800($type='')
// Could we use $sysprefs->set($s_prefs,'notify_prefs') instead - avoids caching problems ???? // Could we use $sysprefs->set($s_prefs,'notify_prefs') instead - avoids caching problems ????
$status = ($sql -> db_Update("core", "e107_value='".$s_prefs."' WHERE e107_name='notify_prefs'") === FALSE) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; $status = ($sql -> db_Update("core", "e107_value='".$s_prefs."' WHERE e107_name='notify_prefs'") === FALSE) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
$message = str_replace('--COUNT--',$nt_changed,LAN_UPDATE_20); $message = str_replace('--COUNT--',$nt_changed,LAN_UPDATE_20);
$mes->add($message, $status); $mes->logMessage($message, $status);
} }
@@ -406,7 +414,7 @@ function update_706_to_800($type='')
if ($just_check) return update_needed(); if ($just_check) return update_needed();
$pref['signup_option_customtitle'] = $pref['forum_user_customtitle']; $pref['signup_option_customtitle'] = $pref['forum_user_customtitle'];
unset($pref['forum_user_customtitle']); unset($pref['forum_user_customtitle']);
$mes->add(LAN_UPDATE_20.'customtitle', E_MESSAGE_SUCCESS); $mes->logMessage(LAN_UPDATE_20.'customtitle', E_MESSAGE_SUCCESS);
$do_save = TRUE; $do_save = TRUE;
} }
@@ -419,7 +427,7 @@ function update_706_to_800($type='')
while ($row = e107::getDb()->db_Fetch(MYSQL_ASSOC)) while ($row = e107::getDb()->db_Fetch(MYSQL_ASSOC))
{ {
$status = e107::getDb('sql2')->db_Update('core',"e107_value=\"".convert_serialized($row['e107_value'])."\" WHERE e107_name='".$row['e107_name']."'"); $status = e107::getDb('sql2')->db_Update('core',"e107_value=\"".convert_serialized($row['e107_value'])."\" WHERE e107_name='".$row['e107_name']."'");
$mes->add(LAN_UPDATE_22.$row['e107_name'], $status); $mes->logMessage(LAN_UPDATE_22.$row['e107_name'], $status);
} }
} }
@@ -465,8 +473,8 @@ function update_706_to_800($type='')
$status = E_MESSAGE_INFO; $status = E_MESSAGE_INFO;
} }
$result = $menuConfig->save(false, true, false); // Save updated menuprefs - without the counts $result = $menuConfig->save(false, true, false); // Save updated menuprefs - without the counts
$updateMessages[] = $statusTexts[$status].': '.$resultMessage; // Admin log message //$updateMessages[] = $statusTexts[$status].': '.$resultMessage; // Admin log message
$mes->add($resultMessage,$status); // User message $mes->logMessage($resultMessage,$status); // User message
} }
@@ -482,7 +490,7 @@ function update_706_to_800($type='')
if ($just_check) return update_needed('Menu path changed required: '.$val['menu'].' '); if ($just_check) return update_needed('Menu path changed required: '.$val['menu'].' ');
$updqry = "menu_path='".$val['newpath']."/' WHERE menu_name = '".$val['menu']."' AND (menu_path='".$val['oldpath']."' || menu_path='".$val['oldpath']."/' ) "; $updqry = "menu_path='".$val['newpath']."/' WHERE menu_name = '".$val['menu']."' AND (menu_path='".$val['oldpath']."' || menu_path='".$val['oldpath']."/' ) ";
$status = $sql->db_Update('menus', $updqry) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; $status = $sql->db_Update('menus', $updqry) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
$mes->add(LAN_UPDATE_23.'<b>'.$val['menu'].'</b> : '.$val['oldpath'].' => '.$val['newpath'], $status); // LAN_UPDATE_25; $mes->logMessage(LAN_UPDATE_23.'<b>'.$val['menu'].'</b> : '.$val['oldpath'].' => '.$val['newpath'], $status); // LAN_UPDATE_25;
// catch_error($sql); // catch_error($sql);
} }
} }
@@ -500,13 +508,13 @@ function update_706_to_800($type='')
if($row['menu_location']!=0) if($row['menu_location']!=0)
{ {
$status = $sql->db_Update('menus', "menu_name='online_menu', menu_path='online/' WHERE menu_path='online_extended_menu' || menu_path='online_extended_menu/' ") ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; $status = $sql->db_Update('menus', "menu_name='online_menu', menu_path='online/' WHERE menu_path='online_extended_menu' || menu_path='online_extended_menu/' ") ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
$mes->add(LAN_UPDATE_23."<b>online_menu</b> : online/", $status); $mes->logMessage(LAN_UPDATE_23."<b>online_menu</b> : online/", $status);
} }
else else
{ //else if the menu is not active { //else if the menu is not active
//we need to delete the online_extended menu row, and change the online_menu to online //we need to delete the online_extended menu row, and change the online_menu to online
$sql->db_Delete('menus', " menu_path='online_extended_menu' || menu_path='online_extended_menu/' "); $sql->db_Delete('menus', " menu_path='online_extended_menu' || menu_path='online_extended_menu/' ");
// $updateMessages[] = LAN_UPXXDATE_31; $mes->logMessage(LAN_UPDATE_31, E_MESSAGE_SUCCESS);
} }
catch_error($sql); catch_error($sql);
} }
@@ -517,7 +525,7 @@ function update_706_to_800($type='')
if ($just_check) return update_needed(); if ($just_check) return update_needed();
$status = $sql->db_Update('menus', "menu_path='online/' WHERE menu_path='online_menu' || menu_path='online_menu/' ") ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; $status = $sql->db_Update('menus', "menu_path='online/' WHERE menu_path='online_menu' || menu_path='online_menu/' ") ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
$mes->add(LAN_UPDATE_23."<b>online_menu</b> : online/", $status); $mes->logMessage(LAN_UPDATE_23."<b>online_menu</b> : online/", $status);
catch_error($sql); catch_error($sql);
} }
@@ -536,26 +544,26 @@ function update_706_to_800($type='')
{ {
// Flag error // Flag error
// $commentMessage = LAN_UPDAXXTE_34; // $commentMessage = LAN_UPDAXXTE_34;
$mes->add(LAN_UPDATE_21."comments", E_MESSAGE_ERROR); $mes->logMessage(LAN_UPDATE_21."comments", E_MESSAGE_ERROR);
} }
else else
{ {
if (FALSE ===$sql->db_Update('comments',"comment_author_id=SUBSTRING_INDEX(`comment_author`,'.',1), comment_author_name=SUBSTRING(`comment_author` FROM POSITION('.' IN `comment_author`)+1)")) if (FALSE ===$sql->db_Update('comments',"comment_author_id=SUBSTRING_INDEX(`comment_author`,'.',1), comment_author_name=SUBSTRING(`comment_author` FROM POSITION('.' IN `comment_author`)+1)"))
{ {
// Flag error // Flag error
$mes->add(LAN_UPDATE_21.'comments', E_MESSAGE_ERROR); $mes->logMessage(LAN_UPDATE_21.'comments', E_MESSAGE_ERROR);
} }
else else
{ // Delete superceded field - comment_author { // Delete superceded field - comment_author
if (!$sql->db_Select_gen("ALTER TABLE `#comments` DROP COLUMN `comment_author`")) if (!$sql->db_Select_gen("ALTER TABLE `#comments` DROP COLUMN `comment_author`"))
{ {
// Flag error // Flag error
$mes->add(LAN_UPDATE_24.'comments - comment_author', E_MESSAGE_ERROR); $mes->logMessage(LAN_UPDATE_24.'comments - comment_author', E_MESSAGE_ERROR);
} }
} }
} }
$mes->add(LAN_UPDATE_21.'comments', E_MESSAGE_SUCCESS); $mes->logMessage(LAN_UPDATE_21.'comments', E_MESSAGE_SUCCESS);
} }
@@ -594,7 +602,7 @@ function update_706_to_800($type='')
$pref['frontpage_force'] = array(e_UC_PUBLIC => ''); $pref['frontpage_force'] = array(e_UC_PUBLIC => '');
$pref['frontpage'] = array(e_UC_PUBLIC => 'news.php'); $pref['frontpage'] = array(e_UC_PUBLIC => 'news.php');
// $_pdateMessages[] = LAN_UPDATE_38; //FIXME // $_pdateMessages[] = LAN_UPDATE_38; //FIXME
$mes->add(LAN_UPDATE_20."frontpage",E_MESSAGE_SUCCESS); $mes->logMessage(LAN_UPDATE_20."frontpage",E_MESSAGE_SUCCESS);
$do_save = TRUE; $do_save = TRUE;
} }
@@ -608,8 +616,8 @@ function update_706_to_800($type='')
{ {
if ($just_check) return update_needed('Update newsfeed field definition'); if ($just_check) return update_needed('Update newsfeed field definition');
$status = $sql->db_Select_gen("ALTER TABLE `".MPREFIX."newsfeed` MODIFY `newsfeed_url` VARCHAR(250) NOT NULL DEFAULT '' ") ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; $status = $sql->db_Select_gen("ALTER TABLE `".MPREFIX."newsfeed` MODIFY `newsfeed_url` VARCHAR(250) NOT NULL DEFAULT '' ") ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
$updateMessages[] = LAN_UPDATE_40; //$updateMessages[] = LAN_UPDATE_40;
$mes->add(LAN_UPDATE_21."newsfeed",$status); $mes->logMessage(LAN_UPDATE_21."newsfeed",$status);
// catch_error($sql); // catch_error($sql);
} }
} }
@@ -626,7 +634,8 @@ function update_706_to_800($type='')
{ {
if ($just_check) return update_needed('Update download table field definition'); if ($just_check) return update_needed('Update download table field definition');
$sql->db_Select_gen("ALTER TABLE `#download` MODIFY `download_url` VARCHAR(255) NOT NULL DEFAULT '' "); $sql->db_Select_gen("ALTER TABLE `#download` MODIFY `download_url` VARCHAR(255) NOT NULL DEFAULT '' ");
$updateMessages[] = LAN_UPDATE_52; //FIXME //$updateMessages[] = LAN_UPDATE_52; //FIXME
$mes->logMessage(LAN_UPDATE_52, E_MESSAGE_SUCCESS);
catch_error($sql); catch_error($sql);
} }
} }
@@ -642,7 +651,8 @@ function update_706_to_800($type='')
{ {
if ($just_check) return update_needed('Update download mirror table field definition'); if ($just_check) return update_needed('Update download mirror table field definition');
$sql->db_Select_gen("ALTER TABLE `".MPREFIX."download_mirror` MODIFY `mirror_url` VARCHAR(255) NOT NULL DEFAULT '' "); $sql->db_Select_gen("ALTER TABLE `".MPREFIX."download_mirror` MODIFY `mirror_url` VARCHAR(255) NOT NULL DEFAULT '' ");
$updateMessages[] = LAN_UPDATE_53; //FIXME $mes->logMessage(LAN_UPDATE_53, E_MESSAGE_SUCCESS);
catch_error($sql); catch_error($sql);
} }
} }
@@ -657,10 +667,12 @@ function update_706_to_800($type='')
if ($just_check) return update_needed('Move user timezone info'); if ($just_check) return update_needed('Move user timezone info');
if (!copy_user_timezone()) if (!copy_user_timezone())
{ // Error doing the transfer { // Error doing the transfer
$updateMessages[] = LAN_UPDATE_42; //FIXME //$updateMessages[] = LAN_UPDATE_42;
$mes->logMessage(LAN_UPDATE_42, E_MESSAGE_ERROR);
return FALSE; return FALSE;
} }
$updateMessages[] = LAN_UPDATE_41; //$updateMessages[] = LAN_UPDATE_41;
$mes->logMessage(LAN_UPDATE_41);
} }
} }
@@ -672,7 +684,8 @@ function update_706_to_800($type='')
if ($just_check) return update_needed('Rename dblog to admin_log'); if ($just_check) return update_needed('Rename dblog to admin_log');
$sql->db_Select_gen('ALTER TABLE `'.MPREFIX.'dblog` RENAME `'.MPREFIX.'admin_log`'); $sql->db_Select_gen('ALTER TABLE `'.MPREFIX.'dblog` RENAME `'.MPREFIX.'admin_log`');
catch_error($sql); catch_error($sql);
$updateMessages[] = LAN_UPDATE_43; //FIXME //$updateMessages[] = LAN_UPDATE_43;
$mes->logMessage(LAN_UPDATE_43, E_MESSAGE_SUCCESS);
} }
@@ -681,7 +694,8 @@ function update_706_to_800($type='')
{ {
if ($just_check) return update_needed('Rename rl_history to dblog'); if ($just_check) return update_needed('Rename rl_history to dblog');
$sql->db_Select_gen('ALTER TABLE `'.MPREFIX.'rl_history` RENAME `'.MPREFIX.'dblog`'); $sql->db_Select_gen('ALTER TABLE `'.MPREFIX.'rl_history` RENAME `'.MPREFIX.'dblog`');
$updateMessages[] = LAN_UPDATE_44; //FIXME //$updateMessages[] = LAN_UPDATE_44;
$mes->logMessage(LAN_UPDATE_44, E_MESSAGE_SUCCESS);
catch_error($sql); catch_error($sql);
} }
@@ -697,12 +711,12 @@ function update_706_to_800($type='')
{ {
$status = $sql->db_Select_gen('CREATE TABLE `'.MPREFIX.$defs[0][1].'` ('.$defs[0][2].') TYPE='.$defs[0][3]) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; $status = $sql->db_Select_gen('CREATE TABLE `'.MPREFIX.$defs[0][1].'` ('.$defs[0][2].') TYPE='.$defs[0][3]) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
// $updateMessages[] = LAN_UPDATE_45.$defs[0][1]; // $updateMessages[] = LAN_UPDATE_45.$defs[0][1];
$mes->add(LAN_UPDATE_27.$defs[0][1], $status); //TODO - all update messages should work like this. But also need $updateMessages[] for admin log $mes->logMessage(LAN_UPDATE_27.$defs[0][1], $status);
// catch_error($sql); // catch_error($sql);
} }
else else
{ // error parsing defs file { // error parsing defs file
$mes->add(LAN_UPDATE_46.$defs[0][1], E_MESSAGE_ERROR); $mes->logMessage(LAN_UPDATE_46.$defs[0][1], E_MESSAGE_ERROR);
} }
unset($defs); unset($defs);
} }
@@ -718,12 +732,12 @@ function update_706_to_800($type='')
$req_fields = $db_parser->parse_field_defs($req_defs[0][2]); // Required definitions $req_fields = $db_parser->parse_field_defs($req_defs[0][2]); // Required definitions
if ($debugLevel) if ($debugLevel)
{ {
$mes->add("Required table structure: <br />".$db_parser->make_field_list($req_fields), E_MESSAGE_DEBUG); $mes->logMessage("Required table structure: <br />".$db_parser->make_field_list($req_fields), E_MESSAGE_DEBUG);
} }
if ((($actual_defs = $db_parser->get_current_table($ct)) === FALSE) || !is_array($actual_defs)) // Adds current default prefix if ((($actual_defs = $db_parser->get_current_table($ct)) === FALSE) || !is_array($actual_defs)) // Adds current default prefix
{ {
$mes->add("Couldn't get table structure: ".$ct, E_MESSAGE_DEBUG); $mes->logMessage("Couldn't get table structure: ".$ct, E_MESSAGE_DEBUG);
} }
else else
{ {
@@ -731,7 +745,7 @@ function update_706_to_800($type='')
$actual_fields = $db_parser->parse_field_defs($actual_defs[0][2]); $actual_fields = $db_parser->parse_field_defs($actual_defs[0][2]);
if ($debugLevel) if ($debugLevel)
{ {
$mes->add("Actual table structure: <br />".$db_parser->make_field_list($actual_fields), E_MESSAGE_DEBUG); $mes->logMessage("Actual table structure: <br />".$db_parser->make_field_list($actual_fields), E_MESSAGE_DEBUG);
} }
$diffs = $db_parser->compare_field_lists($req_fields,$actual_fields); $diffs = $db_parser->compare_field_lists($req_fields,$actual_fields);
@@ -742,18 +756,18 @@ function update_706_to_800($type='')
// Do the changes here // Do the changes here
if ($debugLevel) if ($debugLevel)
{ {
$mes->add("List of changes found:<br />".$db_parser->make_changes_list($diffs), E_MESSAGE_DEBUG); $mes->logMessage("List of changes found:<br />".$db_parser->make_changes_list($diffs), E_MESSAGE_DEBUG);
} }
$qry = 'ALTER TABLE '.MPREFIX.$ct.' '.implode(', ',$diffs[1]); $qry = 'ALTER TABLE '.MPREFIX.$ct.' '.implode(', ',$diffs[1]);
if ($debugLevel) if ($debugLevel)
{ {
$mes->add("Update Query used: ".$qry, E_MESSAGE_DEBUG); $mes->logMessage("Update Query used: ".$qry, E_MESSAGE_DEBUG);
} }
$status = $sql->db_Select_gen($qry) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; $status = $sql->db_Select_gen($qry) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
$mes->add(LAN_UPDATE_21.$ct, $status); $mes->logMessage(LAN_UPDATE_21.$ct, $status);
catch_error($sql); catch_error($sql);
} }
} }
@@ -766,7 +780,6 @@ function update_706_to_800($type='')
if (plugInstalled($plugName)) if (plugInstalled($plugName))
{ {
$ttc = explode(',',$plugList); $ttc = explode(',',$plugList);
$mes = e107::getMessage();
foreach ($ttc as $ct) foreach ($ttc as $ct)
{ {
$sqlDefs = e_PLUGIN.$plugName.'/'.str_replace('_menu','',$plugName).'_sql.php'; // Filename containing definitions $sqlDefs = e_PLUGIN.$plugName.'/'.str_replace('_menu','',$plugName).'_sql.php'; // Filename containing definitions
@@ -782,7 +795,7 @@ function update_706_to_800($type='')
{ {
$message = "Required plugin table structure: <br />".$db_parser->make_field_list($req_fields); $message = "Required plugin table structure: <br />".$db_parser->make_field_list($req_fields);
$mes->add($message, E_MESSAGE_DEBUG); $mes->logMessage($message, E_MESSAGE_DEBUG);
} }
@@ -797,7 +810,7 @@ function update_706_to_800($type='')
if (E107_DBG_SQLDETAILS) if (E107_DBG_SQLDETAILS)
{ {
$message= "Actual table structure: <br />".$db_parser->make_field_list($actual_fields); $message= "Actual table structure: <br />".$db_parser->make_field_list($actual_fields);
$mes->add($message, E_MESSAGE_DEBUG); $mes->logMessage($message, E_MESSAGE_DEBUG);
} }
$diffs = $db_parser->compare_field_lists($req_fields,$actual_fields); $diffs = $db_parser->compare_field_lists($req_fields,$actual_fields);
@@ -806,7 +819,7 @@ function update_706_to_800($type='')
if (E107_DBG_SQLDETAILS) if (E107_DBG_SQLDETAILS)
{ {
$message = "List of changes found:<br />".$db_parser->make_changes_list($diffs); $message = "List of changes found:<br />".$db_parser->make_changes_list($diffs);
$mes->add($message, E_MESSAGE_DEBUG); $mes->logMessage($message, E_MESSAGE_DEBUG);
} }
if ($just_check) return update_needed("Field changes rqd; plugin table: ".$ct); if ($just_check) return update_needed("Field changes rqd; plugin table: ".$ct);
// Do the changes here // Do the changes here
@@ -814,10 +827,11 @@ function update_706_to_800($type='')
if (E107_DBG_SQLDETAILS) if (E107_DBG_SQLDETAILS)
{ {
$message = "Update Query used: ".$qry."<br />"; $message = "Update Query used: ".$qry."<br />";
$mes->add($message, E_MESSAGE_DEBUG); $mes->logMessage($message, E_MESSAGE_DEBUG);
} }
$sql->db_Select_gen($qry); $sql->db_Select_gen($qry);
$updateMessages[] = LAN_UPDATE_51.$ct; //FIXME $updateMessages[] = LAN_UPDATE_51.$ct;
$mes->logMessage(LAN_UPDATE_51.$ct, E_MESSAGE_SUCCESS);
catch_error($sql); catch_error($sql);
} }
} }
@@ -844,7 +858,7 @@ function update_706_to_800($type='')
{ {
if ($just_check) return update_needed("Delete table: ".$ot); if ($just_check) return update_needed("Delete table: ".$ot);
$status = $sql->db_Select_gen('DROP TABLE `'.MPREFIX.$ot.'`') ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; $status = $sql->db_Select_gen('DROP TABLE `'.MPREFIX.$ot.'`') ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
$mes->add(LAN_UPDATE_25.$ot, $status); $mes->logMessage(LAN_UPDATE_25.$ot, $status);
} }
} }
@@ -861,7 +875,7 @@ function update_706_to_800($type='')
{ {
if ($just_check) return update_needed('Update IP address field '.$f.' in table '.$t); if ($just_check) return update_needed('Update IP address field '.$f.' in table '.$t);
$status = $sql->db_Select_gen("ALTER TABLE `".MPREFIX.$t."` MODIFY `{$f}` VARCHAR(45) NOT NULL DEFAULT '';") ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; $status = $sql->db_Select_gen("ALTER TABLE `".MPREFIX.$t."` MODIFY `{$f}` VARCHAR(45) NOT NULL DEFAULT '';") ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
$mes->add(LAN_UPDATE_26.$t.' - '.$f, $status); $mes->logMessage(LAN_UPDATE_26.$t.' - '.$f, $status);
// catch_error($sql); // catch_error($sql);
} }
} }
@@ -944,17 +958,68 @@ function update_706_to_800($type='')
if ($do_save) if ($do_save)
{ {
save_prefs(); save_prefs();
$mes->add(LAN_UPDATE_50); $mes->logMessage(LAN_UPDATE_50);
$updateMessages[] = LAN_UPDATE_50.implode(', ',$accum); // Note for admin log $mes->logMessage(implode(', ', $accum), E_MESSAGE_NODISPLAY);
//$updateMessages[] = LAN_UPDATE_50.implode(', ',$accum); // Note for admin log
} }
//FIXME grab message-stack from $mes for the log. //FIXME grab message-stack from $mes for the log.
if ($just_check) return TRUE; if ($just_check) return TRUE;
$admin_log->log_event('UPDATE_01',LAN_UPDATE_14.$e107info['e107_version'].'[!br!]'.implode('[!br!]',$updateMessages),E_LOG_INFORMATIVE,''); // Log result of actual update $mes->flushMessages('UPDATE_01'); // Write admin log entry, update message handler
//$admin_log->log_event('UPDATE_01',LAN_UPDATE_14.$e107info['e107_version'].'[!br!]'.implode('[!br!]',$updateMessages),E_LOG_INFORMATIVE,''); // Log result of actual update
return $just_check; return $just_check;
} }
function core_media_import($cat,$epath)
{
if(!vartrue($cat)){ return;}
if(!is_readable($epath))
{
return;
}
$fl = e107::getFile();
$tp = e107::getParser();
$sql = e107::getDb();
$mes = e107::getMessage();
$fl->setFileInfo('all');
$img_array = $fl->get_files($epath,'','',2);
if(!count($img_array)){ return;}
foreach($img_array as $f)
{
$fullpath = $tp->createConstants($f['path'].$f['fname'],1);
$insert = array(
'media_caption' => $f['fname'],
'media_description' => '',
'media_category' => $cat,
'media_datestamp' => $f['modified'],
'media_url' => $fullpath,
'media_userclass' => 0,
'media_name' => $f['fname'],
'media_author' => USERID,
'media_size' => $f['fsize'],
'media_dimensions' => $f['img-width']." x ".$f['img-height'],
'media_usedby' => '',
'media_tags' => '',
'media_type' => $f['mime']
);
if(!$sql->db_Select('core_media','media_url',"media_url = '".$fullpath."' LIMIT 1"))
{
if($sql->db_Insert("core_media",$insert))
{
$mes->add("Importing Media: ".$f['fname'], E_MESSAGE_SUCCESS);
}
}
}
}
function update_70x_to_706($type='') function update_70x_to_706($type='')
{ {
@@ -1095,7 +1160,12 @@ function mysql_table_exists($table)
*/ */
// Add index to a table. Returns FALSE if not required. Returns a message if required and just checking
/**
* Add index to a table. Returns FALSE if not required. Returns a message if required and just checking
*
* @todo - get rid of $updateMessages parameter once log/message display method finalised, call the relevant method
*/
function addIndexToTable($target, $indexSpec, $just_check, &$updateMessages, $optionalTable=FALSE) function addIndexToTable($target, $indexSpec, $just_check, &$updateMessages, $optionalTable=FALSE)
{ {
global $sql; global $sql;

View File

@@ -37,8 +37,8 @@ class e_admin_log
* @var array * @var array
*/ */
protected $_options = array('log_level'=>2, 'backtrace'=>false, ); protected $_options = array('log_level'=>2, 'backtrace'=>false, );
public $rldb = NULL; // Database used by logging routine
protected $rldb = NULL; // Database used by logging routine
/** /**
* Log messages * Log messages
* @var array * @var array
@@ -49,9 +49,9 @@ class e_admin_log
* Constructor. Sets up constants and overwrites default options where set. * Constructor. Sets up constants and overwrites default options where set.
* *
* @param array $options * @param array $options
* @return e_admin_log * @return none
*/ */
function __construct($options = array()) public function __construct($options = array())
{ {
foreach ($options as $key=>$val) foreach ($options as $key=>$val)
{ {
@@ -92,18 +92,25 @@ class e_admin_log
$this->_messages = array(); $this->_messages = array();
} }
/** /**
* Alternative admin log entry point - compatible with legacy calls, and a bit simpler to use than the generic entry point. * Alternative admin log entry point - compatible with legacy calls, and a bit simpler to use than the generic entry point.
* ($eventcode has been added - give it a reference to identify the source module, such as 'NEWS_12' or 'ECAL_03') * ($eventcode has been added - give it a reference to identify the source module, such as 'NEWS_12' or 'ECAL_03')
* We also log everything (unlike 0.7, where admin log and debug stuff were all mixed up together) * We also log everything (unlike 0.7, where admin log and debug stuff were all mixed up together)
* *
* For multi-lingual logging (where the event title is shown in the language of the current user), LAN defines may be used in the title
*
* For generic calls, leave $event_code as empty, and specify a constant string STRING_nn of less than 10 characters for the event title
* Typically the 'STRING' part of the name defines the area originating the log event, and the 'nn' is a numeric code
* This is stored as 'LAN_AL_STRING_NN', and must be defined in a language file which is loaded during log display.
*
* @param string $event_title * @param string $event_title
* @param mixed $event_detail * @param mixed $event_detail
* @param integer $event_type [optional] Log level * @param integer $event_type [optional] Log level
* @param unknown $event_code [optional] * @param unknown $event_code [optional]
* @return e_admin_log * @return e_admin_log
*/ */
function log_event($event_title, $event_detail, $event_type = E_LOG_INFORMATIVE , $event_code = '') public function log_event($event_title, $event_detail, $event_type = E_LOG_INFORMATIVE , $event_code = '')
{ {
if ($event_code == '') if ($event_code == '')
{ {
@@ -142,36 +149,39 @@ class e_admin_log
return $this; return $this;
} }
/* /**
Generic log entry point Generic log entry point
----------------------- -----------------------
Example call: (Deliberately pick separators that shouldn't be in file names) Example call: (Deliberately pick separators that shouldn't be in file names)
e_log_event(E_LOG_NOTICE,__FILE__."|".__FUNCTION__."@".__LINE__,"ECODE","Event Title","explanatory message",FALSE,LOG_TO_ADMIN); e_log_event(E_LOG_NOTICE,__FILE__."|".__FUNCTION__."@".__LINE__,"ECODE","Event Title","explanatory message",FALSE,LOG_TO_ADMIN);
or: or:
e_log_event(E_LOG_NOTICE,debug_backtrace(),"ECODE","Event Title","explanatory message",TRUE,LOG_TO_ROLLING); e_log_event(E_LOG_NOTICE,debug_backtrace(),"ECODE","Event Title","explanatory message",TRUE,LOG_TO_ROLLING);
*
* @param int $importance - importance of event - 0..4 or so
* @param mixed $source_call - either: string identifying calling file/routine
* or: a number 0..9 identifying info to log from debug_backtrace()
* or: empty string, in which case first entry from debug_backtrace() logged
* or: an array, assumed to be from passing debug_backtrace() as a parameter, in which case relevant
* information is extracted and the argument list from the first entry logged
* or: -1, in which case no information logged
* @param string $eventcode - abbreviation listing event type
* @param string $event_title - title of event - pass standard 'LAN_ERROR_nn' defines to allow language translation
* @param string $explain - detail of event
* @param bool $finished - if TRUE, aborts execution
* @param int $target_logs - flags indicating which logs to update - if entry to be posted in several logs, add (or 'OR') their defines:
* LOG_TO_ADMIN - admin log
* LOG_TO_AUDIT - audit log
* LOG_TO_ROLLING - rolling log
*
* @return none
Parameters: * @todo - check microtime() call
$importance - importance of event - 0..4 or so
$source_call - either: string identifying calling file/routine
or: a number 0..9 identifying info to log from debug_backtrace()
or: empty string, in which case first entry from debug_backtrace() logged
or: an array, assumed to be from passing debug_backtrace() as a parameter, in which case relevant
information is extracted and the argument list from the first entry logged
or: -1, in which case no information logged
$eventcode - abbreviation listing event type
$event_title - title of event - pass standard 'LAN_ERROR_nn' defines to allow language translation
$explain - detail of event
$finished - if TRUE, aborts execution
$target_logs - flags indicating which logs to update - if entry to be posted in several logs, add (or 'OR') their defines:
LOG_TO_ADMIN - admin log
LOG_TO_AUDIT - audit log
LOG_TO_ROLLING - rolling log
*/ */
function e_log_event($importance, $source_call, $eventcode = "GEN", $event_title = "Untitled", $explain = "", $finished = FALSE, $target_logs = LOG_TO_AUDIT ) public function e_log_event($importance, $source_call, $eventcode = "GEN", $event_title = "Untitled", $explain = "", $finished = FALSE, $target_logs = LOG_TO_AUDIT )
{ {
global $pref,$e107,$tp; global $pref,$e107,$tp;
list($time_usec, $time_sec) = explode(" ", microtime()); // Log event time immediately to minimise uncertainty list($time_usec, $time_sec) = explode(" ", microtime(FALSE)); // Log event time immediately to minimise uncertainty
$time_usec = $time_usec * 1000000; $time_usec = $time_usec * 1000000;
if ($this->rldb == NULL) if ($this->rldb == NULL)
@@ -280,12 +290,20 @@ class e_admin_log
exit; // Optional abort for all logs exit; // Optional abort for all logs
} }
//--------------------------------------
// USER AUDIT ENTRY
//-------------------------------------- /**--------------------------------------
// $event_code is a defined constant (see above) which specifies the event * USER AUDIT ENTRY
// $event_data is an array of data fields whose keys and values are logged (usually user data, but doesn't have to be - can add messages here) *--------------------------------------
// $id and $u_name are left blank except for admin edits and user login, where they specify the id and login name of the 'target' user * Log user-related events
* @param int $event_code is a defined constant (see above) which specifies the event
* @param array $event_data is an array of data fields whose keys and values are logged (usually user data, but doesn't have to be - can add messages here)
* @param int $id
* @param string $u_name
* both $id and $u_name are left blank except for admin edits and user login, where they specify the id and login name of the 'target' user
*
* @return none
*/
function user_audit($event_type, $event_data, $id = '', $u_name = '') function user_audit($event_type, $event_data, $id = '', $u_name = '')
{ {
global $e107,$tp,$pref; global $e107,$tp,$pref;
@@ -318,12 +336,17 @@ class e_admin_log
$this->rldb->db_Insert("audit_log", "0, ".intval($time_sec).', '.intval($time_usec).", '{$eventcode}', {$userid}, '{$userstring}', '{$userIP}', '{$title}', '{$detail}' "); $this->rldb->db_Insert("audit_log", "0, ".intval($time_sec).', '.intval($time_usec).", '{$eventcode}', {$userid}, '{$userstring}', '{$userIP}', '{$title}', '{$detail}' ");
} }
/* Legacy function probably not needed
function get_log_events($count = 15, $offset) function get_log_events($count = 15, $offset)
{ {
global $sql; global $sql;
$count = intval($count); $count = intval($count);
return "Not implemented yet"; return "Not implemented yet";
} }
*/
/** /**
* Removes all events older than $days, or truncates the table if $days == false * Removes all events older than $days, or truncates the table if $days == false
@@ -331,7 +354,7 @@ class e_admin_log
* @param integer|false $days * @param integer|false $days
* @return void * @return void
*/ */
function purge_log_events($days) public function purge_log_events($days)
{ {
global $sql; global $sql;
if ($days == false) if ($days == false)
@@ -350,10 +373,15 @@ class e_admin_log
//-------------------------------------- //--------------------------------------
// HELPER ROUTINES // HELPER ROUTINES
//-------------------------------------- //--------------------------------------
// Generic routine to log changes to an array. Only elements in $new are checked /**
// Returns true if changes, false otherwise. * Generic routine to log changes to an array. Only elements in $new are checked
// Only makes log entry if changes detected. *
// The $old array is updated with changes, but not saved anywhere * @param array $new - most recent data being saved
* @param array $old existing data - array is updated with changes, but not saved anywhere
* @param string $event - LAN define or string used as title in log
*
* @return bool true if changes found and logged, false otherwise.
*/
function logArrayDiffs(&$new, &$old, $event, $logNow = true) function logArrayDiffs(&$new, &$old, $event, $logNow = true)
{ {
$changes = array(); $changes = array();
@@ -375,11 +403,19 @@ class e_admin_log
return FALSE; return FALSE;
} }
// Logs an entry with all the data from an array, one field per line.
// If $extra is non-empty, it goes on the first line. /**
// Normally data is in the format keyname=>value, one per line. * Logs an entry with all the data from an array, one field per line.
// If the $niceName array exists and has a definition, the 'nice Name' is displayed instead of the key name *
function logArrayAll($event, $target, $extra = '', $niceNames = NULL) * @param string $event - LAN define or string used as title in log
* @param array $target - data to be logged
* @param string $extra - if non-empty, it goes on the first line.
* @param array $niceNames - Normally data is logged in the format keyname=>value, one per line.
* If the $niceName array exists and has a definition, the 'nice Name' is displayed instead of the key name
*
* @return none
*/
public function logArrayAll($event, $target, $extra = '', $niceNames = NULL)
{ {
$logString = ''; $logString = '';
if ($extra) if ($extra)
@@ -476,6 +512,7 @@ class e_admin_log
{ {
$logString .= $separator; $logString .= $separator;
if ($m['loglevel'] == LOG_MESSAGE_NODISPLAY) { $logString .= ' '; } // Indent supplementary messages if ($m['loglevel'] == LOG_MESSAGE_NODISPLAY) { $logString .= ' '; } // Indent supplementary messages
// Not sure about next line - might want to log the <br /> as text, rather than it forcing a newline
$logString .= strip_tags(str_replace(array('<br>', '<br/>', '<br />'), '[!br!]', $m['message'])); $logString .= strip_tags(str_replace(array('<br>', '<br/>', '<br />'), '[!br!]', $m['message']));
if (isset($resultTypes[$m['loglevel']])) if (isset($resultTypes[$m['loglevel']]))
{ {

View File

@@ -539,7 +539,7 @@ class e_pref extends e_admin_model
if(is_array($old)) // fix install problems - no old prefs available if(is_array($old)) // fix install problems - no old prefs available
{ {
$new = $this->getPref(); $new = $this->getPref();
$admin_log->logArrayDiffs($new, $old, 'LAN_FIXME', false); $admin_log->logArrayDiffs($new, $old, 'PREFS_02', false);
unset($new, $old); unset($new, $old);
} }
if(e107::getDb()->db_Select_gen("REPLACE INTO `#core` (e107_name,e107_value) values ('".$this->prefid."_Backup', '".addslashes($dbdata)."') ")) if(e107::getDb()->db_Select_gen("REPLACE INTO `#core` (e107_name,e107_value) values ('".$this->prefid."_Backup', '".addslashes($dbdata)."') "))
@@ -550,7 +550,7 @@ class e_pref extends e_admin_model
} }
$this->setPrefCache($this->toString(false), true); //reset pref cache - runtime & file $this->setPrefCache($this->toString(false), true); //reset pref cache - runtime & file
$admin_log->logSuccess('Settings successfully saved.', true, $session_messages)->flushMessages('LAN_FIXME'); $admin_log->logSuccess('Settings successfully saved.', true, $session_messages)->flushMessages('PREFS_01');
//BC //BC
if($this->alias === 'core') if($this->alias === 'core')
{ {
@@ -562,7 +562,7 @@ class e_pref extends e_admin_model
{ {
$admin_log->logError('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), true, $session_messages) $admin_log->logError('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), true, $session_messages)
->logError('Settings not saved.', true, $session_messages) ->logError('Settings not saved.', true, $session_messages)
->flushMessages('LAN_FIXME'); ->flushMessages('PREFS_03');
return false; return false;
} }
} }

View File

@@ -110,6 +110,8 @@ define('LAN_ROLL_LOG_11','Admin login fail');
// Prefs events // Prefs events
//------------- //-------------
define('LAN_AL_PREFS_01', 'Preferences changed'); define('LAN_AL_PREFS_01', 'Preferences changed');
define('LAN_AL_PREFS_02', 'New Preferences created');
define('LAN_AL_PREFS_03', 'Error saving prefs');
// Front Page events // Front Page events