2006-12-02 04:36:16 +00:00
< ? php
/*
+ ----------------------------------------------------------------------------+
| e107 website system
|
2009-11-18 01:06:08 +00:00
| Copyright ( C ) 2008 - 2009 e107 Inc ( e107 . org )
2006-12-02 04:36:16 +00:00
| http :// e107 . org
2009-11-18 01:06:08 +00:00
|
2006-12-02 04:36:16 +00:00
|
| Released under the terms and conditions of the
| GNU General Public License ( http :// gnu . org ) .
|
| $Source : / cvs_backup / e107_0 . 8 / e107_admin / update_routines . php , v $
2009-12-15 11:05:17 +00:00
| $Revision : 1.71 $
| $Date : 2009 - 12 - 15 11 : 05 : 16 $
| $Author : e107coders $
2006-12-02 04:36:16 +00:00
+----------------------------------------------------------------------------+
*/
2008-06-16 20:08:10 +00:00
// [debug=8] shows the operations on major table update
2008-05-24 12:45:34 +00:00
2009-12-01 20:05:54 +00:00
require_once ( '../class2.php' );
2007-12-08 15:11:50 +00:00
require_once ( e_HANDLER . 'db_table_admin_class.php' );
2009-12-01 20:05:54 +00:00
include_lan ( e_LANGUAGEDIR . e_LANGUAGE . '/admin/lan_e107_update.php' );
2007-05-21 21:42:48 +00:00
// Modified update routine - combines checking and update code into one block per function
// - reduces code size typically 30%.
// - keeping check and update code together should improve clarity/reduce mis-types etc
2009-12-01 20:05:54 +00:00
// TODO: how do we handle update of multi-language tables?
2007-05-21 21:42:48 +00:00
2008-05-24 12:45:34 +00:00
// If following line uncommented, enables a test routine
2009-09-01 02:00:56 +00:00
// define('TEST_UPDATE',TRUE);
2008-01-12 16:51:43 +00:00
$update_debug = FALSE ; // TRUE gives extra messages in places
//$update_debug = TRUE; // TRUE gives extra messages in places
2008-08-23 09:08:57 +00:00
if ( defined ( 'TEST_UPDATE' )) $update_debug = TRUE ;
2007-05-21 21:42:48 +00:00
2006-12-02 04:36:16 +00:00
2009-12-01 20:05:54 +00:00
if ( ! defined ( 'LAN_UPDATE_8' )) { define ( 'LAN_UPDATE_8' , '' ); }
if ( ! defined ( 'LAN_UPDATE_9' )) { define ( 'LAN_UPDATE_9' , '' ); }
2006-12-02 04:36:16 +00:00
2007-05-21 21:42:48 +00:00
// Determine which installed plugins have an update file - save the path and the installed version in an array
2007-06-24 16:18:53 +00:00
$dbupdateplugs = array (); // Array of paths to installed plugins which have a checking routine
2009-12-01 20:05:54 +00:00
$dbupdatep = array (); // Array of plugin upgrade actions (similar to $dbupdate)
$dbupdate = array (); // Array of core upgrade actions
2007-06-24 16:18:53 +00:00
global $e107cache ;
2009-12-01 20:05:54 +00:00
if ( is_readable ( e_ADMIN . 'ver.php' ))
2007-06-24 16:18:53 +00:00
{
2009-12-01 20:05:54 +00:00
include ( e_ADMIN . 'ver.php' );
2007-06-24 16:18:53 +00:00
}
// If $dont_check_update is both defined and TRUE on entry, a check for update is done only once per 24 hours.
$dont_check_update = varset ( $dont_check_update , FALSE );
if ( $dont_check_update === TRUE )
{
2009-12-01 20:05:54 +00:00
$dont_check_update = FALSE ;
if ( $tempData = $e107cache -> retrieve_sys ( 'nq_admin_updatecheck' , 3600 , TRUE ))
{ // See when we last checked for an admin update
list ( $last_time , $dont_check_update , $last_ver ) = explode ( ',' , $tempData );
if ( $last_ver != $e107info [ 'e107_version' ])
{
$dont_check_update = FALSE ; // Do proper check on version change
}
2007-06-24 16:18:53 +00:00
}
}
if ( ! $dont_check_update )
2008-12-30 15:56:12 +00:00
{
2009-12-01 20:05:54 +00:00
if ( $sql -> db_Select ( 'plugin' , 'plugin_version, plugin_path' , 'plugin_installflag=1' ))
2007-05-21 21:42:48 +00:00
{
2009-12-01 20:05:54 +00:00
while ( $row = $sql -> db_Fetch ())
{ // Mark plugins for update which have a specific update file, or a plugin.php file to check
if ( is_readable ( e_PLUGIN . $row [ 'plugin_path' ] . '/' . $row [ 'plugin_path' ] . '_update_check.php' ) || is_readable ( e_PLUGIN . $row [ 'plugin_path' ] . '/plugin.php' ))
{
$dbupdateplugs [ $row [ 'plugin_path' ]] = $row [ 'plugin_version' ];
}
}
2007-05-21 21:42:48 +00:00
}
2009-12-01 20:05:54 +00:00
// Read in each update file - this will add an entry to the $dbupdatep array if a potential update exists
foreach ( $dbupdateplugs as $path => $ver )
{
$fname = e_PLUGIN . $path . '/' . $path . '_update_check.php' ;
if ( is_readable ( $fname )) include_once ( $fname );
}
2007-05-21 21:42:48 +00:00
2009-12-01 20:05:54 +00:00
// List of potential updates
if ( defined ( 'TEST_UPDATE' ))
{
$dbupdate [ 'test_code' ] = 'Test update routine' ;
}
$dbupdate [ 'core_prefs' ] = LAN_UPDATE_13 ; // Prefs check
$dbupdate [ '706_to_800' ] = LAN_UPDATE_8 . ' .706 ' . LAN_UPDATE_9 . ' .8' ;
$dbupdate [ '70x_to_706' ] = LAN_UPDATE_8 . ' .70x ' . LAN_UPDATE_9 . ' .706' ;
2007-06-24 16:18:53 +00:00
} // End if (!$dont_check_update)
2007-05-21 21:42:48 +00:00
2009-12-01 20:05:54 +00:00
/**
* Master routine to call to check for updates
*/
2008-12-30 15:56:12 +00:00
function update_check ()
2007-05-21 21:42:48 +00:00
{
2007-06-24 16:18:53 +00:00
global $ns , $dont_check_update , $e107info ;
2008-12-30 15:56:12 +00:00
2009-08-17 12:48:52 +00:00
2009-12-01 20:05:54 +00:00
$update_needed = FALSE ;
2009-08-17 12:48:52 +00:00
2009-12-01 20:05:54 +00:00
if ( $dont_check_update === FALSE )
2007-05-21 21:42:48 +00:00
{
2009-12-01 20:05:54 +00:00
global $dbupdate , $dbupdatep , $e107cache ;
// See which core functions need update
foreach ( $dbupdate as $func => $rmks )
2007-06-24 16:18:53 +00:00
{
2009-12-01 20:05:54 +00:00
if ( function_exists ( 'update_' . $func ))
{
if ( ! call_user_func ( 'update_' . $func , FALSE ))
{
$update_needed = TRUE ;
continue ;
}
}
2007-06-24 16:18:53 +00:00
}
2006-12-02 04:36:16 +00:00
2009-08-17 12:48:52 +00:00
2009-12-01 20:05:54 +00:00
// Now check plugins
foreach ( $dbupdatep as $func => $rmks )
2007-06-24 16:18:53 +00:00
{
2009-12-01 20:05:54 +00:00
if ( function_exists ( 'update_' . $func ))
{
if ( ! call_user_func ( 'update_' . $func , FALSE ))
{
$update_needed = TRUE ;
continue ;
}
}
2007-06-24 16:18:53 +00:00
}
2006-12-02 04:36:16 +00:00
2009-12-01 20:05:54 +00:00
$e107cache -> set_sys ( 'nq_admin_updatecheck' , time () . ',' . ( $update_needed ? '2,' : '1,' ) . $e107info [ 'e107_version' ], TRUE );
}
else
{
$update_needed = ( $dont_check_update == '2' );
}
2008-12-30 15:56:12 +00:00
2009-12-01 20:05:54 +00:00
if ( $update_needed === TRUE )
{
require_once ( e_HANDLER . 'form_handler.php' );
$frm = new e_form ();
$txt = "
< form method = 'post' action = '".e_ADMIN_ABS."e107_update.php' >
< div >
" .ADLAN_120. "
" . $frm->admin_button ('e107_system_update', LAN_UPDATE, 'update'). "
</ div >
</ form >
" ;
require_once ( e_HANDLER . 'message_handler.php' );
$emessage = & eMessage :: getInstance ();
$emessage -> add ( $txt );
}
2006-12-02 04:36:16 +00:00
}
2009-08-17 12:48:52 +00:00
2009-12-01 20:05:54 +00:00
require_once ( e_HANDLER . 'e_upgrade_class.php' );
2009-09-08 23:53:13 +00:00
// $upg = new e_upgrade;
2009-09-01 02:00:56 +00:00
//TODO Enable this before release!!
// $upg->checkSiteTheme();
2009-09-08 23:53:13 +00:00
// $upg->checkAllPlugins();
2009-08-17 12:48:52 +00:00
2006-12-02 04:36:16 +00:00
2007-05-21 21:42:48 +00:00
//--------------------------------------------
// Check current prefs against latest list
//--------------------------------------------
2007-06-24 16:18:53 +00:00
function update_core_prefs ( $type = '' )
2007-05-21 21:42:48 +00:00
{
2009-12-01 20:05:54 +00:00
global $pref , $admin_log , $e107info ;
$do_save = FALSE ;
$should = get_default_prefs ();
$accum = array ();
2007-05-21 21:42:48 +00:00
2009-12-01 20:05:54 +00:00
$just_check = $type == 'do' ? FALSE : TRUE ; // TRUE if we're just seeing if an update is needed
2009-11-04 03:37:56 +00:00
2009-12-01 20:05:54 +00:00
foreach ( $should as $k => $v )
2007-05-21 21:42:48 +00:00
{
2009-12-01 20:05:54 +00:00
if ( $k && ! array_key_exists ( $k , $pref ))
{
if ( $just_check ) return update_needed ( 'Missing pref: ' . $k );
$pref [ $k ] = $v ;
$accum [] = $k ;
$do_save = TRUE ;
}
2007-05-21 21:42:48 +00:00
}
2009-12-01 20:05:54 +00:00
if ( $do_save )
{
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
}
return $just_check ;
2006-12-02 04:36:16 +00:00
}
2007-03-23 22:42:41 +00:00
2009-12-01 20:05:54 +00:00
2008-05-24 12:45:34 +00:00
if ( defined ( 'TEST_UPDATE' ))
{
//--------------------------------------------
// Test routine - to activate, define TEST_UPDATE
//--------------------------------------------
2009-12-01 20:05:54 +00:00
function update_test_code ( $type = '' )
{
global $sql , $ns , $pref ;
$just_check = $type == 'do' ? FALSE : TRUE ; // TRUE if we're just seeing whether an update is needed
//--------------**************---------------
// Add your test code in here
//--------------**************---------------
//--------------**************---------------
// End of test code
//--------------**************---------------
return $just_check ;
}
2008-08-24 09:57:08 +00:00
} // End of test routine
2009-12-01 20:05:54 +00:00
2008-08-24 09:57:08 +00:00
//--------------------------------------------
// Upgrade later versions of 0.7.x to 0.8
//--------------------------------------------
2008-12-30 15:56:12 +00:00
function update_706_to_800 ( $type = '' )
2008-08-24 09:57:08 +00:00
{
2008-10-19 20:31:57 +00:00
global $sql , $ns , $pref , $admin_log , $e107info ;
2009-10-24 07:53:30 +00:00
$mes = e107 :: getMessage ();
2008-12-30 15:56:12 +00:00
2008-08-24 09:57:08 +00:00
// List of unwanted $pref values which can go
$obs_prefs = array ( 'frontpage_type' , 'rss_feeds' , 'log_lvcount' , 'zone' , 'upload_allowedfiletype' , 'real' , 'forum_user_customtitle' ,
'utf-compatmode' , 'frontpage_method' , 'standards_mode' , 'image_owner' , 'im_quality' , 'signup_option_timezone' ,
2008-12-07 13:08:54 +00:00
'modules' , 'plug_sc' , 'plug_bb' , 'plug_status' , 'plug_latest' , 'subnews_hide_news'
2008-10-11 11:55:18 +00:00
);
2008-08-24 09:57:08 +00:00
// List of DB tables not required (includes a few from 0.6xx)
$obs_tables = array ( 'flood' , 'headlines' , 'stat_info' , 'stat_counter' , 'stat_last' );
2008-12-30 15:56:12 +00:00
2008-08-24 09:57:08 +00:00
// List of DB tables newly required (defined in core_sql.php) (The existing dblog table gets renamed)
2009-11-16 20:40:39 +00:00
$new_tables = array ( 'admin_log' , 'audit_log' , 'dblog' , 'news_rewrite' , 'core_media' , 'mail_recipients' , 'mail_content' );
2009-09-01 20:09:36 +00:00
// List of core prefs that need to be converted from serialized to e107ArrayStorage.
$serialized_prefs = array ( " 'emote' " , " 'menu_pref' " , " 'search_prefs' " , " 'emote_default' " );
2008-08-24 09:57:08 +00:00
2008-12-30 15:56:12 +00:00
// List of changed DB tables (defined in core_sql.php)
2008-08-24 09:57:08 +00:00
// (primarily those which have changed significantly; for the odd field write some explicit code - it'll run faster)
2009-11-04 03:37:56 +00:00
$changed_tables = array ( 'user' , 'dblog' , 'admin_log' , 'userclass_classes' , 'banlist' , 'menus' ,
2009-12-10 21:26:53 +00:00
'plugin' , 'news' , 'news_category' , 'online' , 'page' , 'links' , 'comments' );
2008-08-24 09:57:08 +00:00
2008-12-30 15:56:12 +00:00
2008-11-09 20:14:22 +00:00
// List of changed DB tables from core plugins (defined in pluginname_sql.php file)
2009-09-13 20:22:39 +00:00
// key = plugin directory name. Data = comma-separated list of tables to check
2008-11-09 20:14:22 +00:00
// (primarily those which have changed significantly; for the odd field write some explicit code - it'll run faster)
2009-09-19 19:05:16 +00:00
$pluginChangedTables = array ( 'linkwords' => 'linkwords' ,
'featurebox' => 'featurebox' ,
'links_page' => 'links_page' ,
2009-09-21 19:52:38 +00:00
'poll' => 'polls'
2009-09-19 19:05:16 +00:00
);
2009-11-19 10:07:32 +00:00
$setCorePrefs = array ( //modified prefs during upgrade.
'adminstyle' => 'infopanel' ,
'admintheme' => 'jayya'
);
$do_save = TRUE ;
foreach ( $setCorePrefs as $k => $v )
{
$pref [ $k ] = $v ;
}
2009-10-24 07:53:30 +00:00
// List of changed menu locations.
$changeMenuPaths = array (
array ( 'oldpath' => 'siteinfo_menu' , 'newpath' => 'siteinfo' , 'menu' => 'sitebutton_menu' ),
array ( 'oldpath' => 'siteinfo_menu' , 'newpath' => 'siteinfo' , 'menu' => 'compliance_menu' ),
array ( 'oldpath' => 'siteinfo_menu' , 'newpath' => 'siteinfo' , 'menu' => 'powered_by_menu' ),
array ( 'oldpath' => 'siteinfo_menu' , 'newpath' => 'siteinfo' , 'menu' => 'sitebutton_menu' ),
array ( 'oldpath' => 'siteinfo_menu' , 'newpath' => 'siteinfo' , 'menu' => 'counter_menu' ),
array ( 'oldpath' => 'siteinfo_menu' , 'newpath' => 'siteinfo' , 'menu' => 'latestnews_menu' ),
array ( 'oldpath' => 'compliance_menu' , 'newpath' => 'siteinfo' , 'menu' => 'compliance_menu' ),
array ( 'oldpath' => 'powered_by_menu' , 'newpath' => 'siteinfo' , 'menu' => 'powered_by_menu' ),
array ( 'oldpath' => 'sitebutton_menu' , 'newpath' => 'siteinfo' , 'menu' => 'sitebutton_menu' ),
array ( 'oldpath' => 'counter_menu' , 'newpath' => 'siteinfo' , 'menu' => 'counter_menu' ),
array ( 'oldpath' => 'usertheme_menu' , 'newpath' => 'user_menu' , 'menu' => 'usertheme_menu' ),
array ( 'oldpath' => 'userlanguage_menu' , 'newpath' => 'user_menu' , 'menu' => 'userlanguage_menu' ),
array ( 'oldpath' => 'lastseen_menu' , 'newpath' => 'online' , 'menu' => 'lastseen_menu' )
);
2008-11-09 20:14:22 +00:00
2008-12-30 15:56:12 +00:00
2008-08-24 09:57:08 +00:00
// List of DB tables (key) and field (value) which need changing to accommodate IPV6 addresses
2009-12-10 21:26:53 +00:00
$ip_upgrade = array ( 'download_requests' => 'download_request_ip' ,
2008-08-24 09:57:08 +00:00
'submitnews' => 'submitnews_ip' ,
'tmp' => 'tmp_ip' ,
'chatbox' => 'cb_ip'
);
$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
2009-11-20 22:23:02 +00:00
$updateMessages = array (); // Used to log actions for the admin log
2008-08-24 09:57:08 +00:00
$just_check = $type == 'do' ? FALSE : TRUE ; // TRUE if we're just seeing whether an update is needed
2009-11-19 10:07:32 +00:00
// Check that custompages have been imported from current theme.php file
2009-11-20 05:01:51 +00:00
if ( ! array_key_exists ( 'sitetheme_custompages' , $pref ))
2009-11-19 10:07:32 +00:00
{
$th = e107 :: getSingleton ( 'themeHandler' );
$tmp = $th -> getThemeInfo ( $pref [ 'sitetheme' ]);
if ( is_array ( $tmp [ 'custompages' ]))
{
if ( $just_check ) return update_needed ();
$pref [ 'sitetheme_custompages' ] = $tmp [ 'custompages' ];
$do_save = TRUE ;
}
}
2008-08-23 09:08:57 +00:00
// Check notify prefs
global $sysprefs , $eArrayStorage , $tp ;
$notify_prefs = $sysprefs -> get ( 'notify_prefs' );
$notify_prefs = $eArrayStorage -> ReadArray ( $notify_prefs );
2009-09-01 02:00:56 +00:00
2008-08-23 09:08:57 +00:00
$nt_changed = 0 ;
2009-09-01 02:00:56 +00:00
if ( vartrue ( $notify_prefs [ 'event' ]))
2008-08-23 09:08:57 +00:00
{
2009-09-01 02:00:56 +00:00
foreach ( $notify_prefs [ 'event' ] as $e => $d )
2008-08-23 09:08:57 +00:00
{
2009-09-01 02:00:56 +00:00
if ( isset ( $d [ 'type' ]))
2008-08-23 09:08:57 +00:00
{
2009-09-01 02:00:56 +00:00
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' ]);
2008-08-23 09:08:57 +00:00
}
}
}
if ( $nt_changed )
{
$s_prefs = $tp -> toDB ( $notify_prefs );
$s_prefs = $eArrayStorage -> WriteArray ( $s_prefs );
// Could we use $sysprefs->set($s_prefs,'notify_prefs') instead - avoids caching problems ????
2009-11-07 11:20:34 +00:00
$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 );
$mes -> add ( $message , $status );
2008-08-23 09:08:57 +00:00
}
2008-05-24 12:45:34 +00:00
2008-01-06 21:16:37 +00:00
if ( isset ( $pref [ 'forum_user_customtitle' ]) && ! isset ( $pref [ 'signup_option_customtitle' ]))
{
2008-10-19 20:31:57 +00:00
if ( $just_check ) return update_needed ();
$pref [ 'signup_option_customtitle' ] = $pref [ 'forum_user_customtitle' ];
unset ( $pref [ 'forum_user_customtitle' ]);
2009-11-07 11:20:34 +00:00
$mes -> add ( LAN_UPDATE_20 . 'customtitle' , E_MESSAGE_SUCCESS );
2008-10-19 20:31:57 +00:00
$do_save = TRUE ;
2008-01-06 21:16:37 +00:00
}
2009-09-01 20:09:36 +00:00
// convert all serialized core prefs to e107 ArrayStorage;
$serialz_qry = " SUBSTRING( e107_value,1,5)!='array' AND e107_value !='' " ;
2009-09-10 09:26:54 +00:00
$serialz_qry .= " AND e107_name IN ( " . implode ( " , " , $serialized_prefs ) . " ) " ;
2009-09-01 20:09:36 +00:00
if ( e107 :: getDb () -> db_Select ( " core " , " * " , $serialz_qry ))
{
if ( $just_check ) return update_needed ();
while ( $row = e107 :: getDb () -> db_Fetch ( MYSQL_ASSOC ))
{
2009-11-07 11:20:34 +00:00
$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 );
2009-09-01 20:09:36 +00:00
}
}
//TODO de-serialize the user_prefs also.
2009-10-24 07:53:30 +00:00
// ++++++++ Modify Menu Paths +++++++.
if ( varset ( $changeMenuPaths ))
{
foreach ( $changeMenuPaths as $val )
{
2009-12-01 20:05:54 +00:00
$qry = " SELECT menu_path FROM `#menus` WHERE menu_name = ' " . $val [ 'menu' ] . " ' AND (menu_path=' " . $val [ 'oldpath' ] . " ' || menu_path=' " . $val [ 'oldpath' ] . " /' ) LIMIT 1 " ;
2009-10-24 07:53:30 +00:00
if ( $sql -> db_Select_gen ( $qry ))
{
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' ] . " /' ) " ;
2009-12-01 20:05:54 +00:00
$status = $sql -> db_Update ( 'menus' , $updqry ) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR ;
2009-11-07 11:20:34 +00:00
$mes -> add ( LAN_UPDATE_23 . '<b>' . $val [ 'menu' ] . '</b> : ' . $val [ 'oldpath' ] . ' => ' . $val [ 'newpath' ], $status ); // LAN_UPDATE_25;
2009-12-01 20:05:54 +00:00
// catch_error($sql);
2009-10-24 07:53:30 +00:00
}
}
2007-05-21 21:42:48 +00:00
}
2006-12-02 04:36:16 +00:00
2009-10-24 07:53:30 +00:00
// Leave this one here.. just in case..
2007-05-21 21:42:48 +00:00
//delete record for online_extended_menu (now only using one online menu)
2009-12-01 20:05:54 +00:00
if ( $sql -> db_Select ( 'menus' , '*' , " menu_path='online_extended_menu' || menu_path='online_extended_menu/' " ))
2006-12-02 04:36:16 +00:00
{
2009-12-01 20:05:54 +00:00
if ( $just_check ) return update_needed ();
2007-05-21 21:42:48 +00:00
2009-12-01 20:05:54 +00:00
$row = $sql -> db_Fetch ();
2008-12-30 15:56:12 +00:00
2009-12-01 20:05:54 +00:00
//if online_extended is activated, we need to activate the new 'online' menu, and delete this record
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 ;
$mes -> add ( LAN_UPDATE_23 . " <b>online_menu</b> : online/ " , $status );
}
else
{ //else if the menu is not active
//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/' " );
// $updateMessages[] = LAN_UPXXDATE_31;
}
catch_error ( $sql );
2007-05-21 21:42:48 +00:00
}
2006-12-02 04:36:16 +00:00
2007-05-21 21:42:48 +00:00
//change menu_path for online_menu (if it still exists)
2009-12-01 20:05:54 +00:00
if ( $sql -> db_Select ( 'menus' , 'menu_path' , " menu_path='online_menu' || menu_path='online_menu/' " ))
2007-05-21 21:42:48 +00:00
{
2009-12-01 20:05:54 +00:00
if ( $just_check ) return update_needed ();
2009-11-07 11:20:34 +00:00
$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 );
2009-12-01 20:05:54 +00:00
catch_error ( $sql );
2007-05-21 21:42:48 +00:00
}
2006-12-02 04:36:16 +00:00
2008-05-24 12:45:34 +00:00
//---------------------------------------------------------
// Comments - split user field
//---------------------------------------------------------
2009-11-16 20:40:39 +00:00
if ( $sql -> db_Field ( 'comments' , 'comment_author' ))
2008-05-24 12:45:34 +00:00
{
2009-12-01 20:05:54 +00:00
if ( $just_check ) return update_needed ( 'Comment table author field update' );
2009-11-07 11:20:34 +00:00
2009-12-01 20:05:54 +00:00
if (( ! $sql -> db_Field ( 'comments' , 'comment_author_id' )) // Check to see whether new fields already added - maybe data copy failed part way through
&& ( ! $sql -> db_Select_gen ( " ALTER TABLE `#comments`
ADD COLUMN comment_author_id int ( 10 ) unsigned NOT NULL default '0' AFTER `comment_author` ,
ADD COLUMN comment_author_name varchar ( 100 ) NOT NULL default '' AFTER `comment_author_id` " )))
2008-05-24 12:45:34 +00:00
{
// Flag error
2009-12-01 20:05:54 +00:00
// $commentMessage = LAN_UPDAXXTE_34;
$mes -> add ( LAN_UPDATE_21 . " comments " , E_MESSAGE_ERROR );
2008-05-24 12:45:34 +00:00
}
else
2009-12-01 20:05:54 +00:00
{
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
$mes -> add ( LAN_UPDATE_21 . 'comments' , E_MESSAGE_ERROR );
}
else
{ // Delete superceded field - comment_author
if ( ! $sql -> db_Select_gen ( " ALTER TABLE `#comments` DROP COLUMN `comment_author` " ))
{
// Flag error
$mes -> add ( LAN_UPDATE_24 . 'comments - comment_author' , E_MESSAGE_ERROR );
}
}
2008-05-24 12:45:34 +00:00
}
2009-11-07 11:20:34 +00:00
2009-12-01 20:05:54 +00:00
$mes -> add ( LAN_UPDATE_21 . 'comments' , E_MESSAGE_SUCCESS );
2008-05-24 12:45:34 +00:00
}
2008-11-18 21:29:43 +00:00
// Add index to download history
2008-12-10 21:46:40 +00:00
if ( FALSE !== ( $temp = addIndexToTable ( 'download_requests' , 'download_request_datestamp' , $just_check , $updateMessages )))
2008-01-11 22:13:43 +00:00
{
2008-11-18 21:29:43 +00:00
if ( $just_check )
2008-01-11 22:13:43 +00:00
{
2008-11-18 21:29:43 +00:00
return update_needed ( $temp );
2008-01-11 22:13:43 +00:00
}
}
2008-11-18 21:29:43 +00:00
// Extra index to tmp table
2008-12-10 21:46:40 +00:00
if ( FALSE !== ( $temp = addIndexToTable ( 'tmp' , 'tmp_time' , $just_check , $updateMessages )))
2008-11-18 21:29:43 +00:00
{
if ( $just_check )
{
return update_needed ( $temp );
}
}
2008-01-11 22:13:43 +00:00
2008-12-17 21:02:30 +00:00
// Extra index to rss table (if used)
if ( FALSE !== ( $temp = addIndexToTable ( 'rss' , 'rss_name' , $just_check , $updateMessages , TRUE )))
{
if ( $just_check )
{
return update_needed ( $temp );
}
}
2007-06-24 16:18:53 +00:00
// Front page prefs (logic has changed)
if ( ! isset ( $pref [ 'frontpage_force' ]))
{ // Just set basic options; no real method of converting the existing
2009-12-01 20:05:54 +00:00
if ( $just_check ) return update_needed ( 'Change front page prefs' );
$pref [ 'frontpage_force' ] = array ( e_UC_PUBLIC => '' );
$pref [ 'frontpage' ] = array ( e_UC_PUBLIC => 'news.php' );
2009-11-07 11:20:34 +00:00
// $_pdateMessages[] = LAN_UPDATE_38; //FIXME
$mes -> add ( LAN_UPDATE_20 . " frontpage " , E_MESSAGE_SUCCESS );
2009-12-01 20:05:54 +00:00
$do_save = TRUE ;
2007-06-24 16:18:53 +00:00
}
2009-05-24 15:34:37 +00:00
if ( $sql -> db_Table_exists ( 'newsfeed' ))
2008-04-29 19:44:26 +00:00
{ // Need to extend field newsfeed_url varchar(250) NOT NULL default ''
2009-12-01 20:05:54 +00:00
if ( $sql -> db_Query ( " SHOW FIELDS FROM " . MPREFIX . " newsfeed LIKE 'newsfeed_url' " ))
2008-04-29 19:44:26 +00:00
{
2009-12-01 20:05:54 +00:00
$row = $sql -> db_Fetch ();
if ( str_replace ( 'varchar' , 'char' , strtolower ( $row [ 'Type' ])) != 'char(250)' )
{
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 ;
$updateMessages [] = LAN_UPDATE_40 ; //FIXME
$mes -> add ( LAN_UPDATE_21 . " newsfeed " , $status );
// catch_error($sql);
}
2008-04-29 19:44:26 +00:00
}
}
2009-12-01 20:05:54 +00:00
2009-11-07 11:20:34 +00:00
//TODO use generic function for this update.
2009-05-24 15:34:37 +00:00
if ( $sql -> db_Table_exists ( 'download' ))
2008-12-06 15:48:26 +00:00
{ // Need to extend field download_url varchar(255) NOT NULL default ''
2009-12-01 20:05:54 +00:00
if ( $sql -> db_Query ( " SHOW FIELDS FROM " . MPREFIX . " download LIKE 'download_url' " ))
2008-12-06 15:48:26 +00:00
{
2009-12-01 20:05:54 +00:00
$row = $sql -> db_Fetch ();
if ( str_replace ( 'varchar' , 'char' , strtolower ( $row [ 'Type' ])) != 'char(255)' )
{
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 '' " );
$updateMessages [] = LAN_UPDATE_52 ; //FIXME
catch_error ( $sql );
}
2008-12-06 15:48:26 +00:00
}
}
2009-11-07 11:20:34 +00:00
//TODO use generic function for this update.
2009-05-24 15:34:37 +00:00
if ( $sql -> db_Table_exists ( 'download_mirror' ))
2008-12-06 15:48:26 +00:00
{ // Need to extend field download_url varchar(255) NOT NULL default ''
2009-12-01 20:05:54 +00:00
if ( $sql -> db_Select_gen ( " SHOW FIELDS FROM " . MPREFIX . " download_mirror LIKE 'mirror_url' " ))
2008-12-06 15:48:26 +00:00
{
2009-12-01 20:05:54 +00:00
$row = $sql -> db_Fetch ();
if ( str_replace ( 'varchar' , 'char' , strtolower ( $row [ 'Type' ])) != 'char(255)' )
{
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 '' " );
$updateMessages [] = LAN_UPDATE_53 ; //FIXME
catch_error ( $sql );
}
2008-12-06 15:48:26 +00:00
}
}
2008-01-15 21:57:53 +00:00
// Check need for user timezone before we delete the field
if ( varsettrue ( $pref [ 'signup_option_timezone' ]))
{
2009-12-01 20:05:54 +00:00
if ( $sql -> db_Field ( 'user' , 'user_timezone' , '' , TRUE ) && ! $sql -> db_Field ( 'user_extended' , 'user_timezone' , '' , TRUE ))
{
if ( $just_check ) return update_needed ( 'Move user timezone info' );
if ( ! copy_user_timezone ())
{ // Error doing the transfer
$updateMessages [] = LAN_UPDATE_42 ; //FIXME
return FALSE ;
}
$updateMessages [] = LAN_UPDATE_41 ;
2008-01-15 21:57:53 +00:00
}
}
2008-05-24 12:45:34 +00:00
2007-12-08 15:11:50 +00:00
// Tables defined in core_sql.php
//---------------------------------
2009-05-24 15:34:37 +00:00
if ( $sql -> db_Table_exists ( 'dblog' ) && ! $sql -> db_Table_exists ( 'admin_log' ))
2007-12-18 20:57:37 +00:00
{
2008-10-19 20:31:57 +00:00
if ( $just_check ) return update_needed ( 'Rename dblog to admin_log' );
$sql -> db_Select_gen ( 'ALTER TABLE `' . MPREFIX . 'dblog` RENAME `' . MPREFIX . 'admin_log`' );
2009-12-01 20:05:54 +00:00
catch_error ( $sql );
2009-11-07 11:20:34 +00:00
$updateMessages [] = LAN_UPDATE_43 ; //FIXME
2007-12-18 20:57:37 +00:00
}
2009-11-07 11:20:34 +00:00
2007-12-18 20:57:37 +00:00
// Next bit will be needed only by the brave souls who used an early CVS - probably delete before release
2009-05-24 15:34:37 +00:00
if ( $sql -> db_Table_exists ( 'rl_history' ) && ! $sql -> db_Table_exists ( 'dblog' ))
2007-12-18 20:57:37 +00:00
{
2008-10-19 20:31:57 +00:00
if ( $just_check ) return update_needed ( 'Rename rl_history to dblog' );
$sql -> db_Select_gen ( 'ALTER TABLE `' . MPREFIX . 'rl_history` RENAME `' . MPREFIX . 'dblog`' );
2009-11-07 11:20:34 +00:00
$updateMessages [] = LAN_UPDATE_44 ; //FIXME
2009-12-01 20:05:54 +00:00
catch_error ( $sql );
2007-12-18 20:57:37 +00:00
}
2009-11-07 11:20:34 +00:00
2007-12-08 15:11:50 +00:00
// New tables required (list at top. Definitions in core_sql.php)
foreach ( $new_tables as $nt )
{
2009-12-01 20:05:54 +00:00
if ( ! $sql -> db_Table_exists ( $nt ))
{
if ( $just_check ) return update_needed ( 'Add table: ' . $nt );
// Get the definition
$defs = $db_parser -> get_table_def ( $nt , e_ADMIN . 'sql/core_sql.php' );
if ( count ( $defs )) // **** Add in table here
{
$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];
$mes -> add ( LAN_UPDATE_27 . $defs [ 0 ][ 1 ], $status ); //TODO - all update messages should work like this. But also need $updateMessages[] for admin log
// catch_error($sql);
}
else
{ // error parsing defs file
$mes -> add ( LAN_UPDATE_46 . $defs [ 0 ][ 1 ], E_MESSAGE_ERROR );
}
unset ( $defs );
2007-12-08 15:11:50 +00:00
}
}
// Tables whose definition needs changing significantly
2009-08-17 15:45:20 +00:00
$debugLevel = E107_DBG_SQLDETAILS ;
2007-12-08 15:11:50 +00:00
foreach ( $changed_tables as $ct )
{
$req_defs = $db_parser -> get_table_def ( $ct , e_ADMIN . " sql/core_sql.php " );
$req_fields = $db_parser -> parse_field_defs ( $req_defs [ 0 ][ 2 ]); // Required definitions
2009-11-07 11:20:34 +00:00
if ( $debugLevel )
{
$mes -> add ( " Required table structure: <br /> " . $db_parser -> make_field_list ( $req_fields ), E_MESSAGE_DEBUG );
}
2007-12-08 15:11:50 +00:00
if ((( $actual_defs = $db_parser -> get_current_table ( $ct )) === FALSE ) || ! is_array ( $actual_defs )) // Adds current default prefix
{
2009-11-07 11:20:34 +00:00
$mes -> add ( " Couldn't get table structure: " . $ct , E_MESSAGE_DEBUG );
2007-12-08 15:11:50 +00:00
}
else
{
// echo $db_parser->make_table_list($actual_defs);
$actual_fields = $db_parser -> parse_field_defs ( $actual_defs [ 0 ][ 2 ]);
2009-11-07 11:20:34 +00:00
if ( $debugLevel )
{
$mes -> add ( " Actual table structure: <br /> " . $db_parser -> make_field_list ( $actual_fields ), E_MESSAGE_DEBUG );
}
2008-12-30 15:56:12 +00:00
2007-12-08 15:11:50 +00:00
$diffs = $db_parser -> compare_field_lists ( $req_fields , $actual_fields );
if ( count ( $diffs [ 0 ]))
{ // Changes needed
2009-11-07 11:20:34 +00:00
if ( $just_check ) return update_needed ( " Field changes rqd; table: " . $ct );
// Do the changes here
if ( $debugLevel )
{
$mes -> add ( " List of changes found:<br /> " . $db_parser -> make_changes_list ( $diffs ), E_MESSAGE_DEBUG );
}
$qry = 'ALTER TABLE ' . MPREFIX . $ct . ' ' . implode ( ', ' , $diffs [ 1 ]);
if ( $debugLevel )
{
$mes -> add ( " Update Query used: " . $qry , E_MESSAGE_DEBUG );
}
$status = $sql -> db_Select_gen ( $qry ) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR ;
$mes -> add ( LAN_UPDATE_21 . $ct , $status );
2009-12-01 20:05:54 +00:00
catch_error ( $sql );
2007-12-08 15:11:50 +00:00
}
}
}
2008-11-09 20:14:22 +00:00
// Plugin tables whose definition needs changing significantly
foreach ( $pluginChangedTables as $plugName => $plugList )
{
if ( plugInstalled ( $plugName ))
{
$ttc = explode ( ',' , $plugList );
2009-10-22 14:31:28 +00:00
$mes = e107 :: getMessage ();
2008-11-09 20:14:22 +00:00
foreach ( $ttc as $ct )
{
2009-11-20 22:23:02 +00:00
$sqlDefs = e_PLUGIN . $plugName . '/' . str_replace ( '_menu' , '' , $plugName ) . '_sql.php' ; // Filename containing definitions
2008-11-09 20:14:22 +00:00
// echo "Looking at file: {$sqlDefs}, table {$ct}<br />";
$req_defs = $db_parser -> get_table_def ( $ct , $sqlDefs );
if ( ! is_array ( $req_defs ))
{
echo " Couldn't get definitions from file { $sqlDefs } <br /> " ;
continue ;
}
$req_fields = $db_parser -> parse_field_defs ( $req_defs [ 0 ][ 2 ]); // Required definitions
2009-10-22 14:31:28 +00:00
if ( E107_DBG_SQLDETAILS )
{
$message = " Required plugin table structure: <br /> " . $db_parser -> make_field_list ( $req_fields );
$mes -> add ( $message , E_MESSAGE_DEBUG );
}
2008-11-09 20:14:22 +00:00
if ((( $actual_defs = $db_parser -> get_current_table ( $ct )) === FALSE ) || ! is_array ( $actual_defs )) // Adds current default prefix
{
// echo "Couldn't get table structure: {$ct}<br />";
}
else
{
// echo $db_parser->make_table_list($actual_defs);
$actual_fields = $db_parser -> parse_field_defs ( $actual_defs [ 0 ][ 2 ]);
2009-10-22 14:31:28 +00:00
if ( E107_DBG_SQLDETAILS )
{
$message = " Actual table structure: <br /> " . $db_parser -> make_field_list ( $actual_fields );
$mes -> add ( $message , E_MESSAGE_DEBUG );
}
2008-12-30 15:56:12 +00:00
2008-11-09 20:14:22 +00:00
$diffs = $db_parser -> compare_field_lists ( $req_fields , $actual_fields );
if ( count ( $diffs [ 0 ]))
{ // Changes needed
2009-10-22 14:31:28 +00:00
if ( E107_DBG_SQLDETAILS )
{
$message = " List of changes found:<br /> " . $db_parser -> make_changes_list ( $diffs );
$mes -> add ( $message , E_MESSAGE_DEBUG );
}
2008-11-09 20:14:22 +00:00
if ( $just_check ) return update_needed ( " Field changes rqd; plugin table: " . $ct );
2008-12-30 15:56:12 +00:00
// Do the changes here
2008-11-09 20:14:22 +00:00
$qry = 'ALTER TABLE ' . MPREFIX . $ct . ' ' . implode ( ', ' , $diffs [ 1 ]);
2009-10-22 14:31:28 +00:00
if ( E107_DBG_SQLDETAILS )
{
$message = " Update Query used: " . $qry . " <br /> " ;
$mes -> add ( $message , E_MESSAGE_DEBUG );
}
2009-05-24 15:34:37 +00:00
$sql -> db_Select_gen ( $qry );
2009-11-07 11:20:34 +00:00
$updateMessages [] = LAN_UPDATE_51 . $ct ; //FIXME
2009-12-01 20:05:54 +00:00
catch_error ( $sql );
2008-11-09 20:14:22 +00:00
}
}
}
}
}
2009-07-09 21:39:31 +00:00
// This has to be done after the table is upgraded
2009-11-20 22:23:02 +00:00
if ( $sql -> db_Select ( 'plugin' , 'plugin_category' , " plugin_category = '' " ))
2009-07-09 21:39:31 +00:00
{
2009-11-20 22:23:02 +00:00
if ( $just_check ) return update_needed ( 'Update plugin table' );
require_once ( e_HANDLER . 'plugin_class.php' );
2009-07-09 21:39:31 +00:00
$ep = new e107plugin ;
$ep -> update_plugins_table ();
2009-11-07 11:20:34 +00:00
// $_pdateMessages[] = LAN_UPDATE_XX24;
2009-12-01 20:05:54 +00:00
// catch_error($sql);
2009-07-09 21:39:31 +00:00
}
2007-09-22 20:32:31 +00:00
// Obsolete tables (list at top)
foreach ( $obs_tables as $ot )
2007-05-21 21:42:48 +00:00
{
2009-05-24 15:34:37 +00:00
if ( $sql -> db_Table_exists ( $ot ))
2008-10-19 20:31:57 +00:00
{
if ( $just_check ) return update_needed ( " Delete table: " . $ot );
2009-11-07 11:20:34 +00:00
$status = $sql -> db_Select_gen ( 'DROP TABLE `' . MPREFIX . $ot . '`' ) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR ;
$mes -> add ( LAN_UPDATE_25 . $ot , $status );
2008-10-19 20:31:57 +00:00
}
2006-12-02 04:36:16 +00:00
}
2008-12-30 15:56:12 +00:00
2007-09-22 21:46:23 +00:00
// Tables where IP address field needs updating to accommodate IPV6
// Set to varchar(45) - just in case something uses the IPV4 subnet (see http://en.wikipedia.org/wiki/IPV6#Notation)
foreach ( $ip_upgrade as $t => $f )
{
2009-05-24 15:34:37 +00:00
if ( $sql -> db_Table_exists ( $t ))
2007-09-22 21:46:23 +00:00
{ // Check for table - might add some core plugin tables in here
if ( $field_info = ( $sql -> db_Field ( $t , $f , '' , TRUE )))
{
if ( strtolower ( $field_info [ 'Type' ]) != 'varchar(45)' )
{
2008-05-24 12:45:34 +00:00
if ( $just_check ) return update_needed ( 'Update IP address field ' . $f . ' in table ' . $t );
2009-11-07 11:20:34 +00:00
$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 );
2009-12-01 20:05:54 +00:00
// catch_error($sql);
2007-09-22 21:46:23 +00:00
}
}
else
{
// Got a strange error here
}
}
}
2006-12-02 04:36:16 +00:00
2008-01-15 21:57:53 +00:00
// Obsolete prefs (list at top)
// Intentionally do this last - we may check some of them during the update
2008-10-19 20:31:57 +00:00
$accum = array ();
2008-01-15 21:57:53 +00:00
foreach ( $obs_prefs as $p )
{
if ( isset ( $pref [ $p ]))
{
if ( $just_check ) return update_needed ( 'Remove obsolete prefs' );
unset ( $pref [ $p ]);
$do_save = TRUE ;
2008-10-19 20:31:57 +00:00
$accum [] = $p ;
2008-01-15 21:57:53 +00:00
}
}
2009-12-02 10:03:53 +00:00
//-- Media-manger import --------------------------------------------------
$fl = e107 :: getFile ();
$fl -> setFileInfo ( 'all' );
$newspost_img = $fl -> get_files ( e_IMAGE . 'newspost_images' , '' , '' , 2 );
$custom_img = $fl -> get_files ( e_IMAGE . 'custom' , '' , '' , 2 );
$mes = e107 :: getMessage ();
foreach ( $newspost_img as $f )
{
$insert = array (
'media_caption' => $f [ 'fname' ],
'media_description' => '' ,
'media_category' => 'news' ,
'media_datestamp' => $f [ 'modified' ],
'media_url' => '{e_IMAGE}newspost_images/' . $f [ 'fname' ],
'media_userclass' => 0 ,
'media_name' => $f [ 'fname' ],
'media_author' => USERID ,
'media_size' => $f [ 'fsize' ],
2009-12-04 11:42:04 +00:00
'media_dimensions' => $f [ 'img-width' ] . " x " . $f [ 'img-height' ],
2009-12-02 10:03:53 +00:00
'media_usedby' => '' ,
'media_tags' => '' ,
'media_type' => $f [ 'mime' ]
);
2009-12-15 11:05:17 +00:00
if ( ! $sql -> db_Select ( 'core_media' , 'media_url' , " media_url = ' { e_IMAGE}newspost_images/ " . $f [ 'fname' ] . " ' LIMIT 1 " ))
2009-12-02 10:03:53 +00:00
{
2009-12-15 11:05:17 +00:00
if ( $sql -> db_Insert ( " core_media " , $insert ))
{
$mes -> add ( " Importing Media: " . $f [ 'fname' ], E_MESSAGE_SUCCESS );
}
}
2009-12-02 10:03:53 +00:00
}
foreach ( $custom_img as $f )
{
$insert = array (
'media_caption' => $f [ 'fname' ],
'media_description' => '' ,
'media_category' => 'page' ,
'media_datestamp' => $f [ 'modified' ],
'media_url' => '{e_IMAGE}custom/' . $f [ 'fname' ],
'media_userclass' => 0 ,
'media_name' => $f [ 'fname' ],
'media_author' => USERID ,
'media_size' => $f [ 'fsize' ],
2009-12-04 11:42:04 +00:00
'media_dimensions' => $f [ 'img-width' ] . " x " . $f [ 'img-height' ],
2009-12-02 10:03:53 +00:00
'media_usedby' => '' ,
'media_tags' => '' ,
'media_type' => $f [ 'mime' ]
);
2009-12-15 11:05:17 +00:00
if ( ! $sql -> db_Select ( 'core_media' , 'media_url' , " media_url = ' { e_IMAGE}custom/ " . $f [ 'fname' ] . " ' LIMIT 1 " ))
2009-12-02 10:03:53 +00:00
{
2009-12-15 11:05:17 +00:00
if ( $sql -> db_Insert ( " core_media " , $insert ))
{
$mes -> add ( " Importing Media: " . $f [ 'fname' ], E_MESSAGE_SUCCESS );
}
}
2009-12-02 10:03:53 +00:00
}
// ------------------------------------------------------------------
2008-01-15 21:57:53 +00:00
2006-12-02 04:36:16 +00:00
2008-12-30 15:56:12 +00:00
if ( $do_save )
2008-10-19 20:31:57 +00:00
{
save_prefs ();
2009-11-20 22:23:02 +00:00
$mes -> add ( LAN_UPDATE_50 );
$updateMessages [] = LAN_UPDATE_50 . implode ( ', ' , $accum ); // Note for admin log
2008-10-19 20:31:57 +00:00
}
2009-11-07 11:20:34 +00:00
//FIXME grab message-stack from $mes for the log.
2008-12-30 15:56:12 +00:00
2008-10-19 20:31:57 +00:00
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
2007-05-21 21:42:48 +00:00
return $just_check ;
2006-12-02 04:36:16 +00:00
}
2008-12-30 15:56:12 +00:00
function update_70x_to_706 ( $type = '' )
2007-05-21 21:42:48 +00:00
{
2008-12-30 15:56:12 +00:00
global $sql , $ns , $pref , $e107info , $admin_log , $emessage ;
2006-12-02 04:36:16 +00:00
2007-05-21 21:42:48 +00:00
$just_check = $type == 'do' ? FALSE : TRUE ;
if ( ! $sql -> db_Field ( " plugin " , 5 )) // not plugin_rss so just add the new one.
{
if ( $just_check ) return update_needed ();
2009-05-24 15:34:37 +00:00
$sql -> db_Select_gen ( " ALTER TABLE ` " . MPREFIX . " plugin` ADD `plugin_addons` TEXT NOT NULL ; " );
2009-12-01 20:05:54 +00:00
catch_error ( $sql );
2006-12-02 04:36:16 +00:00
}
2008-12-30 15:56:12 +00:00
2007-05-21 21:42:48 +00:00
//rename plugin_rss field
if ( $sql -> db_Field ( " plugin " , 5 ) == " plugin_rss " )
{
if ( $just_check ) return update_needed ();
2009-05-24 15:34:37 +00:00
$sql -> db_Select_gen ( " ALTER TABLE ` " . MPREFIX . " plugin` CHANGE `plugin_rss` `plugin_addons` TEXT NOT NULL; " );
2009-12-01 20:05:54 +00:00
catch_error ( $sql );
2006-12-02 04:36:16 +00:00
}
2007-05-21 21:42:48 +00:00
if ( $sql -> db_Field ( " dblog " , 5 ) == " dblog_query " )
{
if ( $just_check ) return update_needed ();
2009-05-24 15:34:37 +00:00
$sql -> db_Select_gen ( " ALTER TABLE ` " . MPREFIX . " dblog` CHANGE `dblog_query` `dblog_title` VARCHAR( 255 ) NOT NULL DEFAULT ''; " );
catch_error ( $sql );
$sql -> db_Select_gen ( " ALTER TABLE ` " . MPREFIX . " dblog` CHANGE `dblog_remarks` `dblog_remarks` TEXT NOT NULL; " );
catch_error ( $sql );
2007-05-21 21:42:48 +00:00
}
2006-12-02 04:36:16 +00:00
2007-05-21 21:42:48 +00:00
if ( ! $sql -> db_Field ( " plugin " , " plugin_path " , " UNIQUE " ))
{
if ( $just_check ) return update_needed ();
2009-05-24 15:34:37 +00:00
if ( ! $sql -> db_Select_gen ( " ALTER TABLE ` " . MPREFIX . " plugin` ADD UNIQUE (`plugin_path`); " ))
2007-05-21 21:42:48 +00:00
{
2008-12-30 15:56:12 +00:00
$mes = LAN_UPDATE_12 . " : <a href=' " . e_ADMIN . " db.php?plugin'> " . ADLAN_145 . " </a>. " ;
//$ns -> tablerender(LAN_ERROR,$mes);
$emessage -> add ( $mes , E_MESSAGE_ERROR );
2009-12-01 20:05:54 +00:00
catch_error ( $sql );
2007-05-21 21:42:48 +00:00
}
}
2006-12-02 04:36:16 +00:00
2007-05-21 21:42:48 +00:00
if ( ! $sql -> db_Field ( " online " , 6 )) // online_active field
{
if ( $just_check ) return update_needed ();
2009-05-24 15:34:37 +00:00
$sql -> db_Select_gen ( " ALTER TABLE " . MPREFIX . " online ADD online_active INT(10) UNSIGNED NOT NULL DEFAULT '0' " );
2009-12-01 20:05:54 +00:00
catch_error ( $sql );
2007-05-21 21:42:48 +00:00
}
2008-12-30 15:56:12 +00:00
if ( $sql -> db_Query ( " SHOW INDEX FROM " . MPREFIX . " tmp " ))
2007-05-21 21:42:48 +00:00
{
$row = $sql -> db_Fetch ();
2008-12-30 15:56:12 +00:00
if ( ! in_array ( 'tmp_ip' , $row ))
2007-05-21 21:42:48 +00:00
{
if ( $just_check ) return update_needed ();
2009-05-24 15:34:37 +00:00
$sql -> db_Select_gen ( " ALTER TABLE ` " . MPREFIX . " tmp` ADD INDEX `tmp_ip` (`tmp_ip`); " );
$sql -> db_Select_gen ( " ALTER TABLE ` " . MPREFIX . " upload` ADD INDEX `upload_active` (`upload_active`); " );
$sql -> db_Select_gen ( " ALTER TABLE ` " . MPREFIX . " generic` ADD INDEX `gen_type` (`gen_type`); " );
2007-05-21 21:42:48 +00:00
}
2006-12-02 04:36:16 +00:00
}
2007-05-21 21:42:48 +00:00
if ( ! $just_check )
{
// update new fields
require_once ( e_HANDLER . " plugin_class.php " );
$ep = new e107plugin ;
$ep -> update_plugins_table ();
$ep -> save_addon_prefs ();
2006-12-02 04:36:16 +00:00
}
2007-05-21 21:42:48 +00:00
if ( ! isset ( $pref [ 'displayname_maxlength' ]))
{
if ( $just_check ) return update_needed ();
$pref [ 'displayname_maxlength' ] = 15 ;
save_prefs ();
2006-12-02 04:36:16 +00:00
}
2008-12-30 15:56:12 +00:00
2007-05-21 21:42:48 +00:00
// If we get to here, in checking mode no updates are required. In update mode, all done.
2008-10-19 20:31:57 +00:00
if ( $just_check ) return TRUE ;
$admin_log -> log_event ( 'UPDATE_02' , LAN_UPDATE_14 . $e107info [ 'e107_version' ], E_LOG_INFORMATIVE , '' ); // Log result of actual update
2007-05-21 21:42:48 +00:00
return $just_check ; // TRUE if no updates needed, FALSE if updates needed and completed
2006-12-02 04:36:16 +00:00
}
2007-05-21 21:42:48 +00:00
2008-01-15 21:57:53 +00:00
// Carries out the copy of timezone data from the user record to an extended user field
// Return TRUE on success, FALSE on failure
function copy_user_timezone ()
{
global $sql , $sql2 , $tp ;
require_once ( e_HANDLER . 'user_extended_class.php' );
$ue = new e107_user_extended ;
$tmp = $ue -> parse_extended_xml ( 'getfile' );
$tmp [ 'timezone' ][ 'parms' ] = $tp -> toDB ( $tmp [ 'timezone' ][ 'parms' ]);
if ( ! $ue -> user_extended_add ( $tmp [ 'timezone' ]))
{
return FALSE ;
}
// Created the field - now copy existing data
if ( $sql -> db_Select ( 'user' , 'user_id, user_timezone' ))
{
while ( $row = $sql -> db_Fetch ())
{
$sql2 -> db_Update ( 'user_extended' , " `user_timezone`=' { $row [ 'user_timezone' ] } ' WHERE `user_extended_id`= { $row [ 'user_id' ] } " );
}
}
return TRUE ; // All done!
}
2007-09-22 21:46:23 +00:00
function update_needed ( $message = '' )
2006-12-02 04:36:16 +00:00
{
2007-09-22 21:46:23 +00:00
global $ns , $update_debug ;
2009-10-24 07:53:30 +00:00
$emessage = e107 :: getMessage ();
2008-12-30 15:56:12 +00:00
if ( $update_debug ) $emessage -> add ( " Update: " . $message , E_MESSAGE_DEBUG );
2006-12-02 04:36:16 +00:00
if ( E107_DEBUG_LEVEL )
{
$tmp = debug_backtrace ();
2008-12-30 15:56:12 +00:00
//$ns->tablerender("", "<div style='text-align:center'>Update required in ".basename(__FILE__)." on line ".$tmp[0]['line']."</div>");
2009-09-17 01:47:20 +00:00
$emessage -> add ( " Update required in " . basename ( __FILE__ ) . " on line " . $tmp [ 0 ][ 'line' ] . " ( " . $message . " ) " , E_MESSAGE_DEBUG );
2006-12-02 04:36:16 +00:00
}
return FALSE ;
}
2007-09-22 21:46:23 +00:00
2009-05-24 15:34:37 +00:00
/*
2007-09-22 20:32:31 +00:00
function mysql_table_exists ( $table )
{
$exists = mysql_query ( " SELECT 1 FROM " . MPREFIX . " $table LIMIT 0 " );
if ( $exists ) return TRUE ;
return FALSE ;
2006-12-02 04:36:16 +00:00
}
2009-05-24 15:34:37 +00:00
*/
2006-12-02 04:36:16 +00:00
2008-11-18 21:29:43 +00:00
// Add index to a table. Returns FALSE if not required. Returns a message if required and just checking
2008-12-17 21:02:30 +00:00
function addIndexToTable ( $target , $indexSpec , $just_check , & $updateMessages , $optionalTable = FALSE )
2008-11-18 21:29:43 +00:00
{
global $sql ;
2009-05-24 15:34:37 +00:00
if ( ! $sql -> db_Table_exists ( $target ))
2008-12-17 21:02:30 +00:00
{
if ( $optionalTable )
{
return ! $just_check ; // Nothing to do it table is optional and not there
}
$updateMessages [] = str_replace ( array ( '--TABLE--' , '--INDEX--' ), array ( $target , $indexSpec ), LAN_UPDATE_54 );
return ! $just_check ; // No point carrying on - return 'nothing to do'
}
2009-05-24 15:34:37 +00:00
if ( $sql -> db_Select_gen ( " SHOW INDEX FROM " . MPREFIX . $target ))
2008-11-18 21:29:43 +00:00
{
$found = FALSE ;
while ( $row = $sql -> db_Fetch ())
{ // One index per field
2008-12-30 15:56:12 +00:00
if ( in_array ( $indexSpec , $row ))
2008-11-18 21:29:43 +00:00
{
return ! $just_check ; // Found - nothing to do
}
}
// Index not found here
if ( $just_check )
{
return 'Required to add index to ' . $target ;
}
2009-05-24 15:34:37 +00:00
$sql -> db_Select_gen ( " ALTER TABLE ` " . MPREFIX . $target . " ` ADD INDEX ` " . $indexSpec . " ` (` " . $indexSpec . " `); " );
2008-11-18 21:29:43 +00:00
$updateMessages [] = str_replace ( array ( '--TABLE--' , '--INDEX--' ), array ( $target , $indexSpec ), LAN_UPDATE_37 );
}
return FALSE ;
}
2009-12-01 20:05:54 +00:00
/** Check for database access errors
* @ param reference $target - pointer to db object
* @ return none
*/
2009-05-24 15:34:37 +00:00
function catch_error ( & $target )
2007-09-22 20:32:31 +00:00
{
2009-12-11 20:12:44 +00:00
if ( vartrue ( $target -> getLastErrorText ()) && E107_DEBUG_LEVEL != 0 )
2009-05-24 15:34:37 +00:00
{
$tmp2 = debug_backtrace ();
2009-12-11 20:12:44 +00:00
$tmp = $target -> getLastErrorText ();
2009-05-24 15:34:37 +00:00
echo $tmp . " [ " . basename ( __FILE__ ) . " on line " . $tmp2 [ 0 ][ 'line' ] . " ] <br /> " ;
}
return ;
2006-12-02 04:36:16 +00:00
}
2007-05-21 21:42:48 +00:00
function get_default_prefs ()
{
2009-09-01 02:00:56 +00:00
$xmlArray = e107 :: getSingleton ( 'xmlClass' ) -> loadXMLfile ( e_FILE . " default_install.xml " , 'advanced' );
$pref = e107 :: getSingleton ( 'xmlClass' ) -> e107ImportPrefs ( $xmlArray , 'core' );
return $pref ;
2007-05-21 21:42:48 +00:00
}
2009-09-01 20:09:36 +00:00
function convert_serialized ( $serializedData )
{
$arrayData = unserialize ( $serializedData );
return e107 :: getArrayStorage () -> WriteArray ( $arrayData , FALSE );
}
2007-05-21 21:42:48 +00:00
2006-12-02 04:36:16 +00:00
?>