2006-12-02 04:36:16 +00:00
< ? php
/*
2008-12-30 13:51:41 +00:00
* e107 website system
*
2013-03-24 13:07:15 +01:00
* Copyright ( C ) 2008 - 2013 e107 Inc ( e107 . org )
2008-12-30 13:51:41 +00:00
* Released under the terms and conditions of the
* GNU General Public License ( http :// www . gnu . org / licenses / gpl . txt )
*
* Administration - Database Utilities
*
2006-12-02 04:36:16 +00:00
*/
2008-12-30 13:51:41 +00:00
require_once ( " ../class2.php " );
2009-09-05 23:02:23 +00:00
$theme = e107 :: getPref ( 'sitetheme' );
define ( " EXPORT_PATH " , " { e_THEME} " . $theme . " /install/ " );
2008-12-30 13:51:41 +00:00
if ( ! getperms ( '0' ))
{
2006-12-02 04:36:16 +00:00
header ( 'location:' . e_BASE . 'index.php' );
2008-12-30 13:51:41 +00:00
exit ();
2006-12-02 04:36:16 +00:00
}
2008-12-30 13:51:41 +00:00
if ( isset ( $_POST [ 'back' ]))
{
header ( " location: " . e_SELF );
exit ();
}
2011-06-08 03:16:47 +00:00
include_lan ( e_LANGUAGEDIR . e_LANGUAGE . '/admin/lan_' . e_PAGE );
2009-08-28 16:11:02 +00:00
2009-11-13 07:14:57 +00:00
2011-06-08 03:16:47 +00:00
$e_sub_cat = 'database' ;
2009-11-13 07:14:57 +00:00
2011-06-08 03:16:47 +00:00
$frm = e107 :: getForm ();
$mes = e107 :: getMessage ();
2008-12-30 13:51:41 +00:00
2014-06-27 20:54:47 +03:00
if ( isset ( $_GET [ 'mode' ]))
{
$_GET [ 'mode' ] = preg_match ( '/[^\w-]/' , '' , $_GET [ 'mode' ]);
}
if ( isset ( $_GET [ 'type' ]))
{
$_GET [ 'type' ] = preg_replace ( '/[^\w-]/' , '' , $_GET [ 'type' ]);
}
2008-12-30 13:51:41 +00:00
/*
* Execute trigger
*/
2011-06-08 03:16:47 +00:00
if ( isset ( $_POST [ 'db_execute' ]))
2008-12-30 13:51:41 +00:00
{
2011-06-08 03:16:47 +00:00
$type = key ( $_POST [ 'db_execute' ]);
2008-12-30 13:51:41 +00:00
if ( ! varset ( $_POST [ 'db_execute' ]))
{
2011-06-08 03:16:47 +00:00
$mes -> add ( DBLAN_53 , E_MESSAGE_WARNING );
2008-12-30 13:51:41 +00:00
}
else
{
2011-06-08 03:16:47 +00:00
$_POST [ $type ] = true ;
2008-12-30 13:51:41 +00:00
}
}
2013-05-04 19:59:54 -07:00
2006-12-02 04:36:16 +00:00
2011-06-08 03:16:47 +00:00
2009-08-27 21:01:44 +00:00
if ( isset ( $_POST [ 'exportXmlFile' ]))
2009-08-22 00:28:55 +00:00
{
2009-09-06 01:02:01 +00:00
if ( exportXmlFile ( $_POST [ 'xml_prefs' ], $_POST [ 'xml_tables' ], $_POST [ 'package_images' ]))
2009-09-05 23:02:23 +00:00
{
2013-03-24 13:07:15 +01:00
$mes = e107 :: getMessage ();
2011-06-08 03:16:47 +00:00
$mes -> add ( LAN_SUCCESS , E_MESSAGE_SUCCESS );
2009-09-05 23:02:23 +00:00
}
2010-02-10 21:53:56 +00:00
2009-08-22 00:28:55 +00:00
}
2006-12-02 04:36:16 +00:00
2014-01-25 15:56:20 -08:00
if ( e_AJAX_REQUEST )
{
session_write_close ();
while ( @ ob_end_clean ());
if ( varset ( $_GET [ 'mode' ]) == 'backup' ) //FIXME - not displaying progress until complete. Use e-progress?
{
echo " Starting file backup...<br /> " ;
$data = array ();
$data [] = e_MEDIA ;
$data [] = e_LOG ;
$data [] = e_IMPORT ;
$data [] = e_TEMP ;
$data [] = e_SYSTEM . " filetypes.xml " ;
$data [] = e_THEME . e107 :: getPref ( 'sitetheme' );
$plugins = e107 :: getPlugin () -> getOtherPlugins ();
foreach ( $plugins as $dir )
{
$data [] = e_PLUGIN . $dir ;
}
$newFile = eHelper :: title2sef ( SITENAME ) . " _ " . date ( " Y-m-d-H-i-s " );
$zip = e107 :: getFile () -> zip ( $data , e_BACKUP . $newFile . " .zip " );
echo " File backup complete! <small>( " . $zip . " )</small><br /> " ;
echo " Starting database backup...<br /> " ;
2012-11-26 18:42:11 -08:00
2014-01-25 15:56:20 -08:00
$dbfile = e107 :: getDb () -> backup ( '*' , $newFile . " .sql " , array ( 'nologs' => 1 , 'droptable' => 1 ));
echo " Database backup complete! <small>( " . $dbfile . " )</small> " ;
e107 :: getAdminLog () -> addSuccess ( $zip . " " . $dbfile , false ) -> save ( 'Full site backup completed.' );
}
exit ;
}
2012-11-26 18:42:11 -08:00
2008-12-30 13:51:41 +00:00
require_once ( " auth.php " );
2011-06-08 03:16:47 +00:00
2009-11-13 07:14:57 +00:00
$st = new system_tools ;
2009-09-05 23:02:23 +00:00
2006-12-02 04:36:16 +00:00
2010-02-10 21:53:56 +00:00
/* No longer needed after XML feature added .
2006-12-02 04:36:16 +00:00
2009-08-29 15:30:41 +00:00
if ( isset ( $_POST [ 'backup_core' ]) || $_GET [ 'mode' ] == 'backup_core' )
2009-08-27 21:01:44 +00:00
{
2009-08-29 15:30:41 +00:00
backup_core ();
//message_handler("MESSAGE", DBLAN_1);
2012-11-30 03:08:15 -08:00
$mes -> add ( DBLAN_1 , E_MESSAGE_SUCCESS );
2009-08-27 21:01:44 +00:00
}
2009-08-29 15:30:41 +00:00
*/
2009-08-27 21:01:44 +00:00
2006-12-02 04:36:16 +00:00
2009-01-16 01:02:41 +00:00
2006-12-02 04:36:16 +00:00
2009-11-13 07:14:57 +00:00
2006-12-02 04:36:16 +00:00
2009-08-29 15:30:41 +00:00
require_once ( " footer.php " );
class system_tools
{
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
public $_options = array ();
2013-10-27 22:37:34 -07:00
private $_utf8_exclude = array ();
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
function __construct ()
{
global $mySQLdefaultdb ;
2013-10-27 22:37:34 -07:00
$this -> _utf8_exclude = array ( MPREFIX . " core " );
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$this -> _options = array (
" db_update " => array ( 'diz' => DBLAN_15 , 'label' => DBLAN_16 ),
" verify_sql " => array ( 'diz' => DBLAN_4 , 'label' => DBLAN_5 ),
'optimize_sql' => array ( 'diz' => DBLAN_6 , 'label' => DBLAN_7 ),
'plugin_scan' => array ( 'diz' => DBLAN_28 , 'label' => DBLAN_29 ),
'pref_editor' => array ( 'diz' => DBLAN_19 , 'label' => DBLAN_20 ),
// 'backup_core' => array('diz'=>DBLAN_8, 'label'=> DBLAN_9),
2013-05-04 19:59:54 -07:00
// 'verify_sql_record' => array('diz'=>DBLAN_35, 'label'=> DBLAN_36),
2009-08-29 15:30:41 +00:00
'importForm' => array ( 'diz' => DBLAN_59 , 'label' => DBLAN_59 ),
'exportForm' => array ( 'diz' => DBLAN_58 , 'label' => DBLAN_58 ),
2009-11-13 07:14:57 +00:00
'sc_override_scan' => array ( 'diz' => DBLAN_55 , 'label' => DBLAN_56 ),
2013-05-04 19:59:54 -07:00
'convert_to_utf8' => array ( 'diz' => 'Check Database Charset' , 'label' => 'Check Charset' ),
2014-01-25 15:56:20 -08:00
'correct_perms' => array ( 'diz' => 'Correct File and Directory permissions' , 'label' => 'Correct Perms' ),
'backup' => array ( 'diz' => 'Backup Database, Files and Folders' , 'label' => 'Backup Site' )
2009-08-29 15:30:41 +00:00
);
2013-07-14 09:45:01 -07:00
if ( vartrue ( $_SERVER [ 'E_DEV' ]))
{
$this -> _options [ 'multisite' ] = array ( 'diz' => '' , 'label' => 'Multi-Site' );
}
2009-08-29 18:07:42 +00:00
2013-03-06 14:53:20 -08:00
$this -> _options = multiarray_sort ( $this -> _options , 'label' );
2009-08-29 15:30:41 +00:00
if ( isset ( $_POST [ 'delplug' ]))
{
2010-02-10 21:53:56 +00:00
$this -> delete_plugin_entry ( $_POST [ 'pref_type' ]);
2009-08-29 15:30:41 +00:00
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
if ( isset ( $_POST [ 'upload' ]))
2010-02-10 21:53:56 +00:00
{
$this -> importXmlFile ();
2009-08-29 15:30:41 +00:00
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
if ( isset ( $_POST [ 'delpref' ]) || ( isset ( $_POST [ 'delpref_checked' ]) && isset ( $_POST [ 'delpref2' ])))
{
2009-09-26 18:08:14 +00:00
$this -> del_pref_val ( $_POST [ 'pref_type' ]);
2009-08-29 15:30:41 +00:00
}
2011-06-08 03:16:47 +00:00
if ( isset ( $_POST [ 'verify_sql' ]) || varset ( $_GET [ 'mode' ]) == 'verify_sql' )
{
require_once ( e_HANDLER . " db_verify_class.php " );
$dbv = new db_verify ;
2011-06-09 07:03:55 +00:00
$dbv -> backUrl = e_SELF . " ?mode=verify_sql " ;
$dbv -> verify ();
2011-06-08 03:16:47 +00:00
return ;
}
2014-01-25 15:56:20 -08:00
2013-05-04 19:59:54 -07:00
// if(isset($_POST['verify_sql_record']) || varset($_GET['mode'])=='verify_sql_record' || isset($_POST['check_verify_sql_record']) || isset($_POST['delete_verify_sql_record']))
// {
2011-06-08 03:16:47 +00:00
//$this->verify_sql_record(); // - currently performed in db_verify_class.php
2013-05-04 19:59:54 -07:00
// }
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
if ( isset ( $_POST [ 'importForm' ]) || $_GET [ 'mode' ] == 'importForm' )
{
2010-02-10 21:53:56 +00:00
$this -> importForm ();
2009-08-29 15:30:41 +00:00
}
2013-05-04 19:59:54 -07:00
if ( isset ( $_POST [ 'db_update' ]) || varset ( $_GET [ 'mode' ]) == 'db_update' ) // Requires further testing.
{
// header("location: ".e_ADMIN."e107_update.php");
require_once ( e_ADMIN . " update_routines.php " );
new e107Update ( $dbupdate );
return ;
}
2009-11-13 07:14:57 +00:00
if ( isset ( $_POST [ 'convert_to_utf8' ]) || $_GET [ 'mode' ] == 'convert_to_utf8' )
{
2010-02-10 21:53:56 +00:00
$this -> convertUTF8Form ();
2009-11-13 07:14:57 +00:00
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
if ( isset ( $_POST [ 'exportForm' ]) || $_GET [ 'mode' ] == 'exportForm' )
{
2010-02-10 21:53:56 +00:00
$this -> exportXmlForm ();
2009-08-29 15:30:41 +00:00
}
2009-08-22 00:28:55 +00:00
2009-08-29 15:30:41 +00:00
if ( isset ( $_POST [ 'optimize_sql' ]) || $_GET [ 'mode' ] == 'optimize_sql' )
{
$this -> optimizesql ( $mySQLdefaultdb );
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
if ( isset ( $_POST [ 'pref_editor' ]) || $_GET [ 'mode' ] == 'pref_editor' || isset ( $_POST [ 'delpref' ]) || isset ( $_POST [ 'delpref_checked' ]))
{
2009-09-10 12:49:47 +00:00
$type = isset ( $_GET [ 'type' ]) ? $_GET [ 'type' ] : " core " ;
$this -> pref_editor ( $type );
2009-08-29 15:30:41 +00:00
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
if ( isset ( $_POST [ 'sc_override_scan' ]) || $_GET [ 'mode' ] == 'sc_override_scan' )
{
$this -> scan_override ();
}
2010-02-10 21:53:56 +00:00
2009-09-10 10:23:12 +00:00
if ( isset ( $_POST [ 'plugin_scan' ]) || e_QUERY == " plugin " || isset ( $_POST [ 'delplug' ]) || $_GET [ 'mode' ] == 'plugin_scan' )
2009-08-29 15:30:41 +00:00
{
2012-12-23 15:00:15 +00:00
$this -> plugin_viewscan ( 'refresh' );
2009-08-29 15:30:41 +00:00
}
2013-07-14 09:45:01 -07:00
if ( isset ( $_POST [ 'create_multisite' ]))
{
$this -> multiSiteProcess ();
}
2010-02-10 21:53:56 +00:00
2009-11-13 07:14:57 +00:00
if ( vartrue ( $_POST [ 'perform_utf8_convert' ]))
{
$this -> perform_utf8_convert ();
2011-06-08 03:16:47 +00:00
return ;
2009-11-13 07:14:57 +00:00
}
2012-08-05 10:06:01 +00:00
if ( varset ( $_GET [ 'mode' ]) == 'correct_perms' )
{
$this -> correct_perms ();
return ;
}
2013-07-14 09:45:01 -07:00
if ( varset ( $_GET [ 'mode' ]) == 'multisite' )
{
$this -> multiSite ();
return ;
}
2014-01-25 15:56:20 -08:00
if ( varset ( $_GET [ 'mode' ]) == 'backup' )
{
$this -> backup ();
return ;
}
2010-02-10 21:53:56 +00:00
2011-06-08 03:16:47 +00:00
if ( ! vartrue ( $_GET [ 'mode' ]) && ! isset ( $_POST [ 'db_execute' ]))
2010-02-10 21:53:56 +00:00
{
2009-08-29 18:07:42 +00:00
$this -> render_options ();
}
2009-11-13 07:14:57 +00:00
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
}
2010-02-10 21:53:56 +00:00
2014-01-25 15:56:20 -08:00
private function backup ()
{
$mes = e107 :: getMessage ();
$message = " This will create a database dump and a zipped backup of all non-core plugins, your site theme, your media files and system logs " ;
$message .= " <br /><a class='e-ajax btn btn-success' data-loading-text='Please wait...' href='#backupstatus' data-src=' " . e_SELF . " ?mode=backup' > " . LAN_CREATE . " </a> " ;
$mes -> addInfo ( $message );
$text = " <div id='backupstatus' style='margin-top:20px'></div> " ;
e107 :: getRender () -> tablerender ( DBLAN_10 . SEP . " Backup " , $mes -> render () . $text );
}
2012-08-05 10:06:01 +00:00
/**
* Correct Folder and File permissions .
*/
function correct_perms ()
{
$mes = e107 :: getMessage ();
$fl = e107 :: getFile ();
ob_start ();
$fl -> chmod ( e_BASE );
$fl -> chmod ( e_BASE . " cron.php " , 0755 );
$errors = ob_get_clean ();
if ( $errors != '' )
{
$mes -> addError ( $errors );
}
else
{
$mes -> addSuccess ( " Folder and File permissions have been updated " );
}
2013-02-22 21:34:06 -08:00
e107 :: getRender () -> tablerender ( DBLAN_10 . SEP . " Correcting File and Directory Permissions " , $mes -> render ());
2012-08-05 10:06:01 +00:00
}
2013-07-14 09:45:01 -07:00
private function multiSiteProcess ()
{
$sql = e107 :: getDb ( 'new' );
$mes = e107 :: getMessage ();
$user = $_POST [ 'name' ];
$pass = $_POST [ 'password' ];
$server = e107 :: getMySQLConfig ( 'server' ); // $_POST['server'];
$database = $_POST [ 'db' ];
$prefix = $_POST [ 'prefix' ];
if ( $connect = $sql -> connect ( $server , $user , $pass , true ))
{
$mes -> addSuccess ( " Connecting to server " );
2013-07-24 05:45:17 -07:00
if ( vartrue ( $_POST [ 'createdb' ]))
2013-07-14 09:45:01 -07:00
{
2013-07-24 05:45:17 -07:00
if ( $sql -> gen ( " CREATE DATABASE " . $database . " CHARACTER SET `utf8` " ))
2013-07-14 09:45:01 -07:00
{
2013-07-24 05:45:17 -07:00
$mes -> addSuccess ( " Creating Database " );
// $sql->gen("CREATE USER ".$user."@'".$server."' IDENTIFIED BY '".$pass."';");
$sql -> gen ( " GRANT ALL ON ` " . $database . " `.* TO " . $user . " @' " . $server . " '; " );
$sql -> gen ( " FLUSH PRIVILEGES; " );
2013-07-14 09:45:01 -07:00
}
2013-07-24 05:45:17 -07:00
else
2013-07-14 09:45:01 -07:00
{
2013-07-24 05:45:17 -07:00
$mes -> addError ( " Creating Database " );
return ;
}
2013-07-14 09:45:01 -07:00
}
2013-07-24 05:45:17 -07:00
if ( ! $sql -> database ( $database ))
2013-07-14 09:45:01 -07:00
{
2013-07-24 05:45:17 -07:00
$mes -> addError ( " Selecting database " );
2013-07-14 09:45:01 -07:00
}
2013-07-24 05:45:17 -07:00
$mes -> addSuccess ( " Selecting database " );
if ( $this -> multiSiteCreateTables ( $sql , $prefix ))
{
$coreConfig = e_CORE . " xml/default_install.xml " ;
$ret = e107 :: getXml () -> e107Import ( $coreConfig , 'add' , true , false , $sql ); // Add core pref values
$mes -> addInfo ( print_a ( $ret , true ));
}
2013-07-14 09:45:01 -07:00
}
else
{
$mes -> addSuccess ( " Connecting to server " );
}
if ( $error = $sql -> getLastErrorText ())
{
$mes -> addError ( $error );
}
// print_a($_POST);
}
private function multiSiteCreateTables ( $sql , $prefix )
{
$mes = e107 :: getMessage ();
$sql_data = file_get_contents ( e_CORE . " sql/core_sql.php " );
$sql_data = preg_replace ( " # \ / \ *.*? \ * \ /#mis " , '' , $sql_data ); // Strip comments
if ( ! $sql_data )
{
$mes -> addError ( " Couldn't read core sql file " );
}
preg_match_all ( " /create(.*?)(?:myisam|innodb);/si " , $sql_data , $result );
$sql -> gen ( 'SET NAMES `utf8`' );
foreach ( $result [ 0 ] as $sql_table )
{
$sql_table = preg_replace ( " /create table \ s/si " , " CREATE TABLE " . $prefix , $sql_table );
if ( ! $sql -> gen ( $sql_table ))
{
$mes -> addError ( $sql -> getLastErrorText ());
return false ;
}
else
{
// $mes->addDebug($sql_table);
}
}
return true ;
}
private function multiSite ()
{
$mes = e107 :: getMessage ();
$frm = e107 :: getForm ();
e107 :: lan ( 'core' , 'installer' );
e107 :: getMySQLConfig ( 'user' ); // prefix|server|user|password|
if ( ! isset ( $POST [ 'create_multisite' ]))
{
$mes -> addInfo ( " This will create a fresh installation of e107 at the domain you specify. Using your server administration software (eg. cPanel) - park your other domain on top of " . e_DOMAIN );
}
$text = $frm -> open ( 'multisite' ) . "
< table class = 'table table-striped' >
< tr >
< td >< label for = 'server' > Parked Domain </ label ></ td >
< td >
< input class = 'tbox' type = 'text' placeholder = 'mydomain.com' id = 'domain' name = 'domain' autofocus size = '40' value = '' maxlength = '100' required = 'required' />
< span class = 'field-help' > The parked domain which will become a new e107 website .</ span >
</ td >
</ tr >
" ;
/*
$text .= "
< tr >
< td >< label for = 'server' > " .LANINS_024. " </ label ></ td >
< td >
< input class = 'tbox' type = 'text' id = 'server' name = 'server' autofocus size = '40' value = 'localhost' maxlength = '100' required = 'required' />
< span class = 'field-help' > " .LANINS_030. " </ span >
</ td >
</ tr > " ;
*/
$text .= "
< tr >
< td >< label for = 'name' > " .LANINS_025. " </ label ></ td >
< td >
< input class = 'tbox' type = 'text' name = 'name' id = 'name' size = '40' value = '".e107::getMySQLConfig(' user ')."' maxlength = '100' required = 'required' />
< span class = 'field-help' > " .LANINS_031. " </ span >
</ td >
</ tr >
< tr >
< td >< label for = 'password' > " .LANINS_026. " </ label ></ td >
< td >
< input class = 'tbox' type = 'password' name = 'password' size = '40' id = 'password' value = '".e107::getMySQLConfig(' password ')."' maxlength = '100' />
< span class = 'field-help' > " .LANINS_032. " </ span >
</ td >
</ tr >
" ;
$text .= "
< tr >
< td >< label for = 'db' > " .LANINS_027. " </ label ></ td >
< td class = 'input-inline' >
< input type = 'text' name = 'db' size = '20' id = 'db' value = '' maxlength = '100' required = 'required' />
< label class = 'checkbox inline' >< input type = 'checkbox' name = 'createdb' value = '1' /> " .LANINS_028. " </ label >
< span class = 'field-help' > " .LANINS_033. " </ span >
</ td >
</ tr > " ;
$text .= "
< tr >
< td >< label for = 'prefix' > " .LANINS_029. " </ label ></ td >
< td >
< input type = 'text' name = 'prefix' size = '20' id = 'prefix' value = 'e107_' pattern = '[a-z0-9]*_$' maxlength = '100' required = 'required' />
< span class = 'field-help' > " .LANINS_034. " </ span >
</ td >
</ tr >
\n " ;
$text .= "
< tr >
< td >< label for = 'u_name' > " .LANINS_072. " </ label ></ td >
< td >
< input class = 'tbox' type = 'text' autofocus name = 'u_name' id = 'u_name' placeholder = 'admin' size = '30' required = 'required' value = '".USERNAME."' maxlength = '60' />
< span class = 'field-help' > " .LANINS_073. " </ span >
</ td >
</ tr >
< tr >
< td >< label for = 'd_name' > " .LANINS_074. " </ label ></ td >
< td >
< input class = 'tbox' type = 'text' name = 'd_name' id = 'd_name' size = '30' placeholder = 'Administrator' value = '".USERNAME."' maxlength = '60' />
< span class = 'field-help' > " .LANINS_123. " </ span >
</ td >
</ tr >
< tr >
< td >< label for = 'pass1' > " .LANINS_076. " </ label ></ td >
< td >
< input type = 'password' name = 'pass1' size = '30' id = 'pass1' value = '' maxlength = '60' required = 'required' />
< span class = 'field-help' > " .LANINS_124. " </ span >
</ td >
</ tr >
< tr >
< td >< label for = 'pass2' > " .LANINS_078. " </ label ></ td >
< td >
< input type = 'password' name = 'pass2' size = '30' id = 'pass2' value = '' maxlength = '60' required = 'required' />
< span class = 'field-help' > " .LANINS_079. " </ span >
</ td >
</ tr >
< tr >
< td >< label for = 'email' > " .LANINS_080. " </ label ></ td >
< td >
< input type = 'text' name = 'email' size = '30' id = 'email' required = 'required' placeholder = 'admin@mysite.com' value = '".USEREMAIL."' maxlength = '100' />
< span class = 'field-help' > " .LANINS_081. " </ span >
</ td >
</ tr >
</ table >
< div class = 'buttons-bar text-center' >
" . $frm->admin_button ('create_multisite',1,'submit','Create New Site'). "
</ div >
\n " ;
$text .= $frm -> close ();
e107 :: getRender () -> tablerender ( DBLAN_10 . SEP . " Multi-Site " . SEP . $config [ 'mySQLdefaultdb' ], $mes -> render () . $text );
}
2012-08-05 10:06:01 +00:00
2009-11-14 00:56:57 +00:00
private function convertUTF8Form ()
2009-11-13 07:14:57 +00:00
{
2013-05-04 19:59:54 -07:00
$mes = e107 :: getMessage ();
$frm = e107 :: getForm ();
$config = e107 :: getMySQLConfig ();
$sql = e107 :: getDb ();
$sql -> gen ( 'SHOW TABLE STATUS WHERE Name LIKE "' . $config [ 'mySQLprefix' ] . '%" ' );
$text = " <table class='table adminlist'>
< colgroup >
< col style = 'width: auto' />
< col style = 'width: auto' />
< col style = 'width: auto' />
< col style = 'width: auto' />
</ colgroup >
< thead >
< tr >
< th > Table </ th >
< th > Engine </ th >
< th > Collation </ th >
< th > Status </ th >
</ tr >
</ thead >
< tbody > " ;
$invalidCollations = false ;
while ( $row = $sql -> fetch ())
{
2013-10-27 22:37:34 -07:00
if ( in_array ( $row [ 'Name' ], $this -> _utf8_exclude ))
{
continue ;
}
2013-05-04 19:59:54 -07:00
$text .= " <tr>
< td > " . $row['Name'] . " </ td >
< td > " . $row['Engine'] . " </ td >
< td > " . $row['Collation'] . " </ td >
< td > " .(( $row['Collation'] == 'utf8_general_ci') ? ADMIN_TRUE_ICON : ADMIN_FALSE_ICON). " </ td >
</ tr > " ;
// print_a($row);
if ( $row [ 'Collation' ] != 'utf8_general_ci' )
{
$invalidCollations = true ;
}
2009-11-13 07:14:57 +00:00
2013-05-04 19:59:54 -07:00
}
$text .= " </tbody></table> " ;
2010-02-10 21:53:56 +00:00
2013-05-04 19:59:54 -07:00
if ( $invalidCollations == true )
{
//TODO LAN
$message = '
This function will permanently modify all tables in your database . ( '.$config[' mySQLdefaultdb '].' ) < br />
It is < b > HIGHLY </ b > recommended that you first backup your database and switch your site into maintenance mode .
< br />
< br />
Please note :
< ul >
< li > The conversion process can take up to one minute or much much more depending on the size of your database .</ li >
< li > The conversion does not work with serialized arrays .</ li >
< li > Be sure that you have followed all steps of the upgrade process first .</ li >
2013-10-27 22:37:34 -07:00
< li > Core prefs are ignored during the conversion process due to possibility of corruption . </ li >
2013-05-04 19:59:54 -07:00
</ ul >
' ;
$mes -> add ( $message , E_MESSAGE_WARNING );
$text .= "
< form method = 'post' action = '".e_SELF."' id = 'linkform' >
< fieldset id = 'core-db-utf8-convert' >
< legend class = 'e-hideme' > " . " Convert Database " . " </ legend >
< div class = 'buttons-bar center' >
" . $frm->admin_button ('perform_utf8_convert', " Convert non - UTF8 Tables " ,false, " Convert non - UTF8 Tables " ,'class=btn-success&data-loading-text=Please wait...'). "
</ div >
</ fieldset >
</ form > " ;
}
else
{
$mes -> addSuccess ( " Your tables are using the correct character set. " );
}
e107 :: getRender () -> tablerender ( DBLAN_10 . SEP . " Check Charset " . SEP . $config [ 'mySQLdefaultdb' ], $mes -> render () . $text );
2010-02-10 21:53:56 +00:00
2009-11-13 07:14:57 +00:00
}
2010-02-10 21:53:56 +00:00
2009-11-14 00:56:57 +00:00
private function perform_utf8_convert ()
2009-11-13 07:14:57 +00:00
{
2013-05-04 19:59:54 -07:00
$config = e107 :: getMySQLConfig ();
$dbtable = $config [ 'mySQLdefaultdb' ];
2010-02-10 21:53:56 +00:00
//TODO Add a check to be sure the database is not already utf-8.
2009-11-14 04:28:04 +00:00
// yep, needs more methods - possibly a class in e107_handler
2010-02-10 21:53:56 +00:00
2013-05-04 19:59:54 -07:00
$sql = e107 :: getDb ( 'utf8-convert' );
2009-11-13 07:14:57 +00:00
$mes = e107 :: getMessage ();
2010-02-10 21:53:56 +00:00
2009-11-13 07:14:57 +00:00
$ERROR = FALSE ;
2010-02-10 21:53:56 +00:00
2013-05-04 19:59:54 -07:00
// if(!$sql->gen("USE information_schema;"))
// {
// $mes->add("Couldn't read information_schema", E_MESSAGE_ERROR);
// return;
// }
2010-02-10 21:53:56 +00:00
$queries = array ();
2013-05-04 19:59:54 -07:00
$queries [] = $this -> getQueries ( " SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY ', column_name, ' ', REPLACE(column_type, 'char', 'binary'), ';') FROM information_schema.columns WHERE TABLE_SCHEMA = ' " . $dbtable . " ' AND TABLE_NAME LIKE ' " . $config [ 'mySQLprefix' ] . " %' AND COLLATION_NAME != 'utf8_general_ci' and data_type LIKE '%char%'; " );
$queries [] = $this -> getQueries ( " SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY ', column_name, ' ', REPLACE(column_type, 'text', 'blob'), ';') FROM information_schema.columns WHERE TABLE_SCHEMA = ' " . $dbtable . " ' AND TABLE_NAME LIKE ' " . $config [ 'mySQLprefix' ] . " %' AND COLLATION_NAME != 'utf8_general_ci' and data_type LIKE '%text%'; " );
2010-02-10 21:53:56 +00:00
$queries2 = array ();
2013-05-04 19:59:54 -07:00
$queries2 [] = $this -> getQueries ( " SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM information_schema.columns WHERE TABLE_SCHEMA =' " . $dbtable . " ' AND TABLE_NAME LIKE ' " . $config [ 'mySQLprefix' ] . " %' AND COLLATION_NAME != 'utf8_general_ci' and data_type LIKE '%char%'; " );
$queries2 [] = $this -> getQueries ( " SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM information_schema.columns WHERE TABLE_SCHEMA = ' " . $dbtable . " ' AND TABLE_NAME LIKE ' " . $config [ 'mySQLprefix' ] . " %' AND COLLATION_NAME != 'utf8_general_ci' and data_type LIKE '%text%'; " );
2010-02-10 21:53:56 +00:00
2013-05-04 19:59:54 -07:00
// $sql->gen("USE ".$dbtable);
// print_a($queries2);
// echo $mes->render();
// return;
2010-02-10 21:53:56 +00:00
2013-05-04 19:59:54 -07:00
// Convert Text tables to Binary.
2009-11-13 07:14:57 +00:00
foreach ( $queries as $qry )
{
2013-05-04 19:59:54 -07:00
2009-11-13 07:14:57 +00:00
foreach ( $qry as $q )
{
if ( ! $sql -> db_Query ( $q ))
{
2013-05-04 19:59:54 -07:00
$mes -> addError ( $q );
2009-11-13 07:14:57 +00:00
$ERROR = TRUE ;
}
2013-05-04 19:59:54 -07:00
else
{
$mes -> addDebug ( $q );
}
2010-02-10 21:53:56 +00:00
}
2009-11-13 07:14:57 +00:00
}
2010-02-10 21:53:56 +00:00
2009-11-13 07:14:57 +00:00
//------------
2010-02-10 21:53:56 +00:00
2013-05-04 19:59:54 -07:00
// Convert Table Fields to utf8
$sql2 = e107 :: getDb ( 'sql2' );
$sql -> gen ( 'SHOW TABLE STATUS WHERE Collation != "utf8_general_ci" ' );
while ( $row = $sql -> fetch ())
2009-11-13 07:14:57 +00:00
{
2013-05-04 19:59:54 -07:00
$table = $row [ 'Name' ];
2013-10-27 22:37:34 -07:00
if ( in_array ( $row [ 'Name' ], $this -> _utf8_exclude ))
{
continue ;
}
2013-05-04 19:59:54 -07:00
$tab_query = " ALTER TABLE " . $table . " DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; " ;
//echo "TABQRT= ".$tab_query;
if ( ! $sql2 -> db_Query ( $tab_query ))
2009-11-13 07:14:57 +00:00
{
2013-05-04 19:59:54 -07:00
$mes -> addError ( $tab_query );
2010-02-10 21:53:56 +00:00
$ERROR = TRUE ;
2009-11-13 07:14:57 +00:00
}
2013-05-04 19:59:54 -07:00
else
{
$mes -> addDebug ( $tab_query );
}
2009-11-13 07:14:57 +00:00
}
2010-02-10 21:53:56 +00:00
2009-11-13 07:14:57 +00:00
// ---------------
2013-05-04 19:59:54 -07:00
// Convert Table Fields back to Text/varchar etc.
2009-11-13 07:14:57 +00:00
foreach ( $queries2 as $qry )
{
foreach ( $qry as $q )
{
if ( ! $sql -> db_Query ( $q ))
{
2013-05-04 19:59:54 -07:00
$mes -> addError ( $q );
2010-02-10 21:53:56 +00:00
$ERROR = TRUE ;
2009-11-13 07:14:57 +00:00
}
2013-05-04 19:59:54 -07:00
else
{
$mes -> addDebug ( $q );
}
2010-02-10 21:53:56 +00:00
}
2009-11-13 07:14:57 +00:00
}
//------------
2010-02-10 21:53:56 +00:00
2009-11-13 07:14:57 +00:00
$lastQry = " ALTER DATABASE ` " . $dbtable . " ` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; " ;
2010-02-10 21:53:56 +00:00
2009-11-13 07:14:57 +00:00
if ( ! $sql -> db_Query ( $lastQry ))
{
2010-02-10 21:53:56 +00:00
$mes -> add ( $lastQry , E_MESSAGE_ERROR );
2009-11-13 07:14:57 +00:00
}
elseif ( $ERROR != TRUE )
{
2013-05-04 19:59:54 -07:00
$message = " Database Converted successfully to UTF-8. " ;
//$message .= "<br />Please now add the following line to your e107_config.php file:<br /><b>\$mySQLcharset = 'utf8';</b>";
2010-02-10 21:53:56 +00:00
$mes -> add ( $message , E_MESSAGE_SUCCESS );
2013-11-18 16:53:52 -08:00
$mes -> addSuccess ( " Please make sure you have the following line in your e107_config.php file: " );
$mes -> addSuccess ( '$mySQLcharset = "utf8";' );
2009-11-13 07:14:57 +00:00
}
2010-02-10 21:53:56 +00:00
2013-05-04 19:59:54 -07:00
echo $mes -> render ();
2009-11-13 07:14:57 +00:00
}
2010-02-10 21:53:56 +00:00
2009-11-13 07:14:57 +00:00
function getQueries ( $query )
{
2013-05-04 19:59:54 -07:00
$mes = e107 :: getMessage ();
$sql = e107 :: getDb ( 'utf8-convert' );
if ( $sql -> gen ( $query ))
{
while ( $row = $sql -> fetch ( MYSQL_NUM ))
{
$qry [] = $row [ 0 ];
}
}
else
{
$mes -> addError ( $query );
}
return $qry ;
/*
2009-11-13 07:14:57 +00:00
if ( ! $result = mysql_query ( $query ))
{
2013-05-04 19:59:54 -07:00
$mes -> addError ( " Query Failed: " . $query );
2009-11-13 07:14:57 +00:00
return ;
}
while ( $row = mysql_fetch_array ( $result , MYSQL_NUM ))
{
2010-02-10 21:53:56 +00:00
$qry [] = $row [ 0 ];
2009-11-13 07:14:57 +00:00
}
2010-02-10 21:53:56 +00:00
return $qry ;
2013-05-04 19:59:54 -07:00
* */
2009-11-13 07:14:57 +00:00
}
2009-08-22 00:28:55 +00:00
2009-08-29 15:30:41 +00:00
/**
2010-02-10 21:53:56 +00:00
* Delete selected preferences .
2009-12-13 21:52:32 +00:00
* @ return none
2010-02-10 21:53:56 +00:00
*/
2009-09-26 18:08:14 +00:00
private function del_pref_val ( $mode = 'core' )
2009-08-29 15:30:41 +00:00
{
2012-11-30 03:08:15 -08:00
$mes = e107 :: getMessage ();
2010-02-10 21:53:56 +00:00
2009-09-26 18:08:14 +00:00
$deleted_list = " " ;
2010-02-10 21:53:56 +00:00
2009-09-28 07:17:52 +00:00
$config = ( $mode == 'core' || $mode = '' ) ? e107 :: getConfig ( 'core' ) : e107 :: getPlugConfig ( $mode );
2010-02-10 21:53:56 +00:00
2009-09-26 18:08:14 +00:00
// Single Pref Deletion using button
if ( varset ( $_POST [ 'delpref' ]))
2009-08-29 15:30:41 +00:00
{
2009-09-26 18:08:14 +00:00
$delpref = key ( $_POST [ 'delpref' ]);
if ( $config -> remove ( $delpref ))
{
2010-02-10 21:53:56 +00:00
$deleted_list .= " <li> " . $delpref . " </li> " ;
}
2009-08-29 15:30:41 +00:00
}
2010-02-10 21:53:56 +00:00
2009-09-26 18:08:14 +00:00
// Multiple Pref deletion using checkboxes
if ( varset ( $_POST [ 'delpref2' ]))
2010-02-10 21:53:56 +00:00
{
2009-08-29 15:30:41 +00:00
foreach ( $_POST [ 'delpref2' ] as $k => $v )
{
2009-09-26 18:08:14 +00:00
if ( $config -> remove ( $k ))
{
2010-02-10 21:53:56 +00:00
$deleted_list .= " <li> " . $k . " </li> " ;
}
2009-08-29 15:30:41 +00:00
}
2010-02-10 21:53:56 +00:00
}
2009-09-26 18:08:14 +00:00
if ( $deleted_list && $config -> save ())
2010-02-10 21:53:56 +00:00
{
2012-11-30 03:08:15 -08:00
$mes -> add ( LAN_DELETED . " <ul> " . $deleted_list . " </ul> " );
2009-09-26 18:08:14 +00:00
e107 :: getCache () -> clear ();
2009-09-10 12:49:47 +00:00
}
2009-09-26 18:08:14 +00:00
2009-08-29 15:30:41 +00:00
}
2006-12-02 04:36:16 +00:00
2009-08-29 15:30:41 +00:00
private function delete_plugin_entry ()
{
2012-11-30 03:08:15 -08:00
$mes = e107 :: getMessage ();
$sql = e107 :: getDb ();
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$del = array_keys ( $_POST [ 'delplug' ]);
2013-05-24 22:40:10 +03:00
if ( $sql -> db_Delete ( " plugin " , " plugin_id=' " . intval ( $del [ 0 ]) . " ' " ))
2009-08-29 15:30:41 +00:00
{
2012-11-30 03:08:15 -08:00
$mes -> add ( LAN_DELETED , E_MESSAGE_SUCCESS );
2009-08-29 15:30:41 +00:00
}
else
{
2012-11-30 03:08:15 -08:00
$mes -> add ( LAN_DELETED_FAILED , E_MESSAGE_WARNING );
2009-08-29 15:30:41 +00:00
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
}
2006-12-02 04:36:16 +00:00
2009-08-29 15:30:41 +00:00
/**
* Render Options
2009-12-13 21:52:32 +00:00
* @ return none
2010-02-10 21:53:56 +00:00
*/
2009-08-29 15:30:41 +00:00
private function render_options ()
{
2012-11-30 03:08:15 -08:00
$frm = e107 :: getForm ();
$mes = e107 :: getMessage ();
2009-08-29 15:30:41 +00:00
$text = "
< form method = 'post' action = '".e_SELF."' id = 'core-db-main-form' >
< fieldset id = 'core-db-plugin-scan' >
< legend class = 'e-hideme' > " .DBLAN_10. " </ legend >
2013-03-02 21:07:42 -08:00
< table class = 'table table-striped adminlist' >
2012-05-13 05:26:11 +00:00
< colgroup >
< col style = 'width: 60%' />
< col style = 'width: 40%' />
2009-08-29 15:30:41 +00:00
</ colgroup >
< tbody > " ;
2013-03-06 14:53:20 -08:00
$text = " <div> " ;
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
foreach ( $this -> _options as $key => $val )
{
2013-03-06 14:53:20 -08:00
$text .= " <div class='pull-left' style='width:50%;padding-bottom:10px'>
< a class = 'btn btn-large pull-left' style = 'margin-right:10px' href = '".e_SELF."?mode=".$key."' title = \ " " . $val [ 'label' ] . " \" > " . ADMIN_EXECUTE_ICON . " </a>
< h4 style = 'margin-bottom:3px' >< a href = '".e_SELF."?mode=".$key."' title = \ " " . $val [ 'label' ] . " \" > " . $val [ 'label' ] . " </a></h4><small> " . $val [ 'diz' ] . " </small>
</ div > " ;
2013-05-04 19:59:54 -07:00
2010-02-10 21:53:56 +00:00
}
2013-03-06 14:53:20 -08:00
/*
2009-08-29 15:30:41 +00:00
$text .= "
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
</ tbody >
2011-06-08 03:16:47 +00:00
</ table > " ;
// $text .= "<div class='buttons-bar center'>
// ".$frm->admin_button('trigger_db_execute', DBLAN_51, 'execute')."
// </div>";
$text .= "
2009-08-29 15:30:41 +00:00
</ fieldset >
</ form >
" ;
2013-03-06 14:53:20 -08:00
*/
2011-06-08 03:16:47 +00:00
e107 :: getRender () -> tablerender ( DBLAN_10 , $mes -> render () . $text );
2009-08-29 15:30:41 +00:00
}
2010-02-10 21:53:56 +00:00
2006-12-02 04:36:16 +00:00
2009-08-29 15:30:41 +00:00
/**
* Import XML Form
2009-12-13 21:52:32 +00:00
* @ return none
2010-02-10 21:53:56 +00:00
*/
2009-08-29 15:30:41 +00:00
private function importForm ()
{
// Get largest allowable file upload
2010-02-10 21:53:56 +00:00
2012-11-30 03:08:15 -08:00
$frm = e107 :: getSingleton ( 'e_form' );
2013-03-24 13:07:15 +01:00
$mes = e107 :: getMessage ();
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
require_once ( e_HANDLER . 'upload_handler.php' );
$max_file_size = get_user_max_upload ();
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$text = "
< form enctype = 'multipart/form-data' method = 'post' action = '".e_SELF."?mode=".$_GET[' mode ']."' >
2012-11-26 14:41:32 -08:00
< table class = 'table adminform' >
2012-05-13 05:26:11 +00:00
< colgroup >
2009-08-29 15:30:41 +00:00
< col class = 'col-label' />
< col class = 'col-control' />
</ colgroup >
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
< tbody >
< tr >
< td > " .LAN_UPLOAD. " </ td >
2008-12-30 13:51:41 +00:00
< td >
2009-08-29 15:30:41 +00:00
< input type = 'hidden' name = 'MAX_FILE_SIZE' value = '{$max_file_size}' />
< input type = 'hidden' name = 'ac' value = '".md5(ADMINPWCHANGE)."' />
< input class = 'tbox' type = 'file' name = 'file_userfile[]' accept = 'text/xml' size = '50' />
2008-12-30 13:51:41 +00:00
</ td >
2009-08-29 15:30:41 +00:00
</ tr >
</ tbody >
</ table >
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
< div class = 'center buttons-bar' > " ;
$text .= $frm -> admin_button ( 'upload' , LAN_UPLOAD , 'submit' , LAN_UPLOAD );
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$text .= "
</ div >
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
</ form > \n " ;
2010-02-10 21:53:56 +00:00
2012-11-30 03:08:15 -08:00
2013-02-22 21:34:06 -08:00
e107 :: getRender () -> tablerender ( DBLAN_10 . SEP . DBLAN_59 , $mes -> render () . $text );
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
}
2006-12-02 04:36:16 +00:00
2009-08-29 15:30:41 +00:00
/**
* Export XML Dump
2009-12-13 21:52:32 +00:00
* @ return none
2010-02-10 21:53:56 +00:00
*/
2009-08-29 15:30:41 +00:00
private function exportXmlForm ()
{
2013-03-24 13:07:15 +01:00
$mes = e107 :: getMessage ();
2009-08-29 15:30:41 +00:00
$frm = e107 :: getSingleton ( 'e_form' );
2010-02-10 21:53:56 +00:00
2009-09-02 17:27:29 +00:00
//TODO LANs
2010-02-10 21:53:56 +00:00
2009-09-05 23:02:23 +00:00
$text = " <form method='post' action=' " . e_SELF . " ? " . e_QUERY . " ' id='core-db-export-form'>
2009-08-29 15:30:41 +00:00
< fieldset id = 'core-db-export' >
< legend class = 'e-hideme' > Export Options </ legend >
2012-11-26 14:41:32 -08:00
< table class = 'table adminlist' >
2012-05-13 05:26:11 +00:00
< colgroup >
2012-05-13 05:56:35 +00:00
< col style = 'width: 80%' />
< col style = 'width: 20%' />
2010-02-10 21:53:56 +00:00
</ colgroup >
2009-08-29 15:30:41 +00:00
< thead >
2008-12-30 13:51:41 +00:00
< tr >
2009-09-02 17:27:29 +00:00
< th > " . $frm->checkbox_toggle ('check-all-verify', 'xml_prefs'). " Preferences </ th >
2009-08-29 15:30:41 +00:00
< th class = 'right' > Rows </ th >
2010-02-10 21:53:56 +00:00
</ tr >
2009-08-29 15:30:41 +00:00
</ thead >
< tbody >
2010-02-10 21:53:56 +00:00
2009-08-31 02:00:51 +00:00
" ;
2010-02-10 21:53:56 +00:00
2009-09-05 23:02:23 +00:00
$pref_types = e107 :: getConfig () -> aliases ;
2013-05-20 01:06:52 -07:00
unset ( $pref_types [ 'core_old' ], $pref_types [ 'core_backup' ]);
2009-09-05 23:02:23 +00:00
// $exclusions = array('core_old'=>1,'core_backup'=>1);
// $filteredprefs = array_diff($pref_types,$exclusions);
2010-02-10 21:53:56 +00:00
2009-08-31 02:00:51 +00:00
foreach ( $pref_types as $key => $description )
2009-08-29 15:30:41 +00:00
{
2012-12-08 13:52:05 +01:00
$checked = ( vartrue ( $_POST [ 'xml_prefs' ][ $key ]) == $key ) ? 1 : 0 ;
2009-09-05 23:02:23 +00:00
$text .= " <tr>
2009-08-31 02:00:51 +00:00
< td >
2013-05-20 01:06:52 -07:00
" . $frm->checkbox ( " xml_prefs [ " . $key . " ] " , $key , $checked , array('label'=>LAN_PREFS. " : " . $key )). "
</ td >
2009-08-31 02:00:51 +00:00
< td >& nbsp ; </ td >
2010-02-10 21:53:56 +00:00
2009-08-31 02:00:51 +00:00
</ tr > " ;
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
}
2009-09-02 17:27:29 +00:00
$text .= " </tbody>
</ table >
2012-11-26 14:41:32 -08:00
< table class = 'table adminlist' >
2012-05-13 05:26:11 +00:00
< colgroup >
< col style = 'width: 80%' />
< col style = 'width: 20%' />
2010-02-10 21:53:56 +00:00
</ colgroup >
2009-09-02 17:27:29 +00:00
< thead >
< tr >
< th > " . $frm->checkbox_toggle ('check-all-verify', 'xml_tables'). " Tables </ th >
< th class = 'right' > Rows </ th >
2010-02-10 21:53:56 +00:00
</ tr >
2009-09-02 17:27:29 +00:00
</ thead >
< tbody > \n " ;
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$tables = table_list ();
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
foreach ( $tables as $name => $count )
2010-02-10 21:53:56 +00:00
{
2012-12-08 13:52:05 +01:00
$checked = ( vartrue ( $_POST [ 'xml_tables' ][ $name ]) == $name ) ? 1 : 0 ;
2010-02-10 21:53:56 +00:00
$text .= " <tr>
2009-08-29 15:30:41 +00:00
< td >
2013-05-20 01:06:52 -07:00
" . $frm->checkbox ( " xml_tables [ " . $name . " ] " , $name , $checked , array('label'=> " Table Data : " . $name )).
" </td>
2009-08-29 15:30:41 +00:00
< td class = 'right' > $count </ td >
</ tr > " ;
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$text .= "
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
</ tbody >
</ table >
2010-02-10 21:53:56 +00:00
2012-11-26 14:41:32 -08:00
< table class = 'table adminlist' >
2012-05-13 05:26:11 +00:00
< colgroup >
< col style = 'width: 80%' />
< col style = 'width: 20%' />
2010-02-10 21:53:56 +00:00
</ colgroup >
2009-09-02 17:27:29 +00:00
< thead >
< tr >
< th colspan = '2' > " .LAN_OPTIONS. " </ th >
2010-02-10 21:53:56 +00:00
</ tr >
2009-09-02 17:27:29 +00:00
</ thead >
< tbody >
< tr >
2009-09-05 23:02:23 +00:00
< td colspan = '2' > " ;
2010-02-10 21:53:56 +00:00
$checked = ( vartrue ( $_POST [ 'package_images' ])) ? 1 : 0 ;
$text .= $frm -> checkbox ( " package_images " , 'package_images' , $checked ) . " Convert paths and package images and xml into: <i> " . e107 :: getParser () -> replaceConstants ( EXPORT_PATH ) . " </i>
2009-09-02 17:27:29 +00:00
</ td >
</ tr >
</ tbody >
</ table >
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
< div class = 'buttons-bar center' >
2012-12-16 16:02:13 -08:00
" . $frm->admin_button ('exportXmlFile', " Export File " , 'other'). "
2009-08-29 15:30:41 +00:00
</ div >
</ fieldset >
</ form > " ;
2010-02-10 21:53:56 +00:00
2013-02-22 21:34:06 -08:00
e107 :: getRender () -> tablerender ( DBLAN_10 . SEP . " Export Options " , $mes -> render () . $text );
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
}
2006-12-02 04:36:16 +00:00
2009-08-29 15:30:41 +00:00
/**
* Import XML Dump
2009-12-13 21:52:32 +00:00
* @ return none
2009-08-29 15:30:41 +00:00
*/
2009-08-31 02:00:51 +00:00
private function importXmlFile ()
2009-08-29 15:30:41 +00:00
{
2009-08-31 02:00:51 +00:00
$ret = e107 :: getSingleton ( 'xmlClass' ) -> e107Import ( $_FILES [ 'file_userfile' ][ 'tmp_name' ][ 0 ]);
2007-03-15 15:55:08 +00:00
2009-08-31 02:00:51 +00:00
foreach ( $ret [ 'success' ] as $table )
2009-08-29 15:30:41 +00:00
{
2013-03-24 13:07:15 +01:00
e107 :: getMessage () -> addSuccess ( " Inserted $table " );
2009-08-29 18:07:42 +00:00
}
2010-02-10 21:53:56 +00:00
2009-08-31 02:00:51 +00:00
foreach ( $ret [ 'failed' ] as $table )
2009-08-29 18:07:42 +00:00
{
2013-03-24 13:07:15 +01:00
e107 :: getMessage () -> addError ( " Failed to Insert $table " );
2010-02-10 21:53:56 +00:00
}
2009-08-29 15:30:41 +00:00
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
/**
* Optimize SQL
2009-12-13 21:52:32 +00:00
* @ return none
2009-08-29 15:30:41 +00:00
*/
2013-05-04 19:59:54 -07:00
private function optimizesql ( $mySQLdefaultdb ) //FIXME Use mysql class.
2009-08-29 15:30:41 +00:00
{
2012-11-30 03:08:15 -08:00
// global $mes;
2009-08-29 15:30:41 +00:00
$result = mysql_list_tables ( $mySQLdefaultdb );
while ( $row = mysql_fetch_row ( $result ))
{
mysql_query ( " OPTIMIZE TABLE " . $row [ 0 ]);
}
2010-02-10 21:53:56 +00:00
2012-11-30 03:08:15 -08:00
// $mes->add(DBLAN_11." $mySQLdefaultdb ".DBLAN_12, E_MESSAGE_SUCCESS);
2013-02-22 21:34:06 -08:00
e107 :: getRender () -> tablerender ( DBLAN_10 . SEP . DBLAN_7 , DBLAN_11 . " $mySQLdefaultdb " . DBLAN_12 );
2009-08-29 15:30:41 +00:00
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
/**
* Preferences Editor
2009-12-13 21:52:32 +00:00
* @ return string text for display
2009-08-29 15:30:41 +00:00
*/
2009-09-28 07:17:52 +00:00
private function pref_editor ( $type = 'core' )
2009-08-29 15:30:41 +00:00
{
2009-11-14 04:05:35 +00:00
//TODO Add drop-down for editing personal perfs also. ie. user pref of self. (admin)
2010-02-10 21:53:56 +00:00
2013-03-24 13:07:15 +01:00
global $e107 ;
2012-11-30 03:08:15 -08:00
$frm = e107 :: getForm ();
$mes = e107 :: getMessage ();
2013-03-24 13:07:15 +01:00
$tp = e107 :: getParser ();
$pref = e107 :: getPref ();
2010-02-10 21:53:56 +00:00
2009-09-26 18:08:14 +00:00
$config = ( $type == 'core' ) ? e107 :: getConfig ( 'core' ) : e107 :: getPlugConfig ( $type );
$spref = $config -> getPref ();
2010-02-10 21:53:56 +00:00
ksort ( $spref );
2009-08-29 15:30:41 +00:00
$text = "
2009-09-26 18:08:14 +00:00
< form method = 'post' action = '".e_ADMIN."db.php?mode=".$_GET[' mode ']."&type=".$type."' id = 'pref_edit' >
2009-08-29 15:30:41 +00:00
< fieldset id = 'core-db-pref-edit' >
2009-09-10 12:49:47 +00:00
< legend class = 'e-hideme' > " .DBLAN_20. " </ legend > " ;
2010-02-10 21:53:56 +00:00
2009-09-26 18:08:14 +00:00
$text .= " <select class='tbox' name='type_select' onchange='urljump(this.options[selectedIndex].value)' >
< option value = '".e_ADMIN."db.php?mode=".$_GET[' mode ']."&type=core' > Core </ option > \n " ;
2010-02-10 21:53:56 +00:00
2009-09-26 18:08:14 +00:00
// e107::getConfig($type)->aliases
2010-02-10 21:53:56 +00:00
2009-09-26 18:08:14 +00:00
e107 :: getDb () -> db_Select_gen ( " SELECT e107_name FROM #core WHERE e107_name LIKE ('plugin_%') ORDER BY e107_name " );
while ( $row = e107 :: getDb () -> db_Fetch ())
2009-09-10 12:49:47 +00:00
{
2009-09-26 18:08:14 +00:00
$key = str_replace ( " plugin_ " , " " , $row [ 'e107_name' ]);
2009-09-10 12:49:47 +00:00
$selected = ( varset ( $_GET [ 'type' ]) == $key ) ? " selected='selected' " : " " ;
2010-02-10 21:53:56 +00:00
$text .= " <option value=' " . e_ADMIN . " db.php?mode= " . $_GET [ 'mode' ] . " &type= " . $key . " ' { $selected } > " . ucwords ( $key ) . " </option> \n " ;
}
2009-09-10 12:49:47 +00:00
$text .= " </select></div>
2012-11-26 14:41:32 -08:00
< table class = 'table adminlist' >
2012-05-13 05:26:11 +00:00
< colgroup >
< col style = 'width: 5%' />
< col style = 'width: 20%' />
< col style = 'width: 70%' />
< col style = 'width: 5%' />
2009-08-29 15:30:41 +00:00
</ colgroup >
< thead >
< tr >
< th class = 'center' > " .LAN_DELETE. " </ th >
< th > " .DBLAN_17. " </ th >
< th > " .DBLAN_18. " </ th >
< th class = 'center last' > " .LAN_OPTIONS. " </ th >
</ tr >
</ thead >
< tbody >
" ;
2010-02-10 21:53:56 +00:00
2009-09-10 12:49:47 +00:00
foreach ( $spref as $key => $val )
2009-08-29 15:30:41 +00:00
{
$ptext = ( is_array ( $val )) ? " <pre> " . print_r ( $val , TRUE ) . " </pre> " : htmlspecialchars ( $val , ENT_QUOTES , 'utf-8' );
2013-03-24 13:07:15 +01:00
$ptext = $tp -> textclean ( $ptext , 80 );
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$text .= "
2009-08-22 00:28:55 +00:00
< tr >
2009-08-29 15:30:41 +00:00
< td class = 'center autocheck e-pointer' > " . $frm->checkbox ( " delpref2 [ $key ] " , 1). " </ td >
< td > { $key } </ td >
< td > { $ptext } </ td >
< td class = 'center' > " . $frm->submit_image ( " delpref [ $key ] " , LAN_DELETE, 'delete', LAN_CONFIRMDEL. " [ $key ] " ). " </ td >
2009-08-22 00:28:55 +00:00
</ tr >
2009-08-29 15:30:41 +00:00
" ;
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$text .= "
</ tbody >
</ table >
< div class = 'buttons-bar center' >
2009-11-08 09:14:39 +00:00
" . $frm->admin_button ('delpref_checked', LAN_DELCHECKED, 'delete'). "
" . $frm->admin_button ('back', LAN_BACK, 'back'). "
2009-09-28 07:17:52 +00:00
< input type = 'hidden' name = 'pref_type' value = '".$type."' />
2009-08-29 15:30:41 +00:00
</ div >
</ fieldset >
</ form > \n\n " ;
2010-02-10 21:53:56 +00:00
2013-02-22 21:34:06 -08:00
e107 :: getRender () -> tablerender ( DBLAN_10 . SEP . DBLAN_20 . SEP . ucwords ( $type ), $mes -> render () . $text );
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
return $text ;
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
/**
* Preferences Editor
2009-12-13 21:52:32 +00:00
* @ return none
2010-02-10 21:53:56 +00:00
*/
2009-08-29 15:30:41 +00:00
private function scan_override ()
{
2013-03-24 13:07:15 +01:00
$pref = e107 :: getPref ();
2012-11-30 03:08:15 -08:00
$mes = e107 :: getMessage ();
$f = e107 :: getFile ();
2013-02-08 16:49:57 +02:00
$config = e107 :: getConfig ();
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$scList = '' ;
2010-02-10 21:53:56 +00:00
2013-02-08 16:49:57 +02:00
$fList = $f -> get_files ( e_CORE . 'override/shortcodes/single' , '\.php$' );
2013-02-09 19:05:51 +02:00
$scList = array ();
2009-08-29 15:30:41 +00:00
if ( count ( $fList ))
{
foreach ( $fList as $file )
{
2013-02-09 19:05:51 +02:00
$scList [] = strtoupper ( substr ( $file [ 'fname' ], 0 , - 4 ));
2009-08-29 15:30:41 +00:00
}
2013-02-09 19:05:51 +02:00
$scList = implode ( ',' , $scList );
2009-08-29 15:30:41 +00:00
}
2013-02-08 16:49:57 +02:00
$config -> set ( 'sc_override' , $scList ) -> save ( false );
2013-02-09 19:05:51 +02:00
// core batch overrides
2013-02-08 16:49:57 +02:00
$fList = $f -> get_files ( e_CORE . 'override/shortcodes/batch' , '\.php$' );
2013-02-09 19:05:51 +02:00
$scList = array ();
2013-02-08 16:49:57 +02:00
if ( count ( $fList ))
{
foreach ( $fList as $file )
{
2013-02-09 19:05:51 +02:00
$scList [] = substr ( $file [ 'fname' ], 0 , - 4 );
2013-02-08 16:49:57 +02:00
}
2013-02-09 19:05:51 +02:00
$scList = implode ( ',' , $scList );
2013-02-08 16:49:57 +02:00
}
2013-02-09 19:05:51 +02:00
2013-02-08 16:49:57 +02:00
$config -> set ( 'sc_batch_override' , $scList ) -> save ( false );
//$pref['sc_override'] = $scList;
//save_prefs();
2012-11-30 03:08:15 -08:00
// $mes->add(DBLAN_57.':<br />'.$pref['sc_override'], E_MESSAGE_SUCCESS);
2013-02-08 16:49:57 +02:00
// FIXME lan
e107 :: getRender () -> tablerender (
2013-02-09 19:05:51 +02:00
'<strong>' . DBLAN_56 , DBLAN_57 . ':</strong> '
2013-02-08 16:49:57 +02:00
. ( $config -> get ( 'sc_override' ) ? '<br />' . $config -> get ( 'sc_override' ) : '(empty)' )
2013-02-09 19:05:51 +02:00
. '<br /><br /><strong>Batch shortcodes:</strong>'
2013-02-08 16:49:57 +02:00
. ( $config -> get ( 'sc_batch_override' ) ? '<br />' . $config -> get ( 'sc_batch_override' ) : '(empty)' )
);
2009-08-29 15:30:41 +00:00
}
2009-08-22 00:28:55 +00:00
2009-08-29 15:30:41 +00:00
/**
* Plugin Folder Scanner
2009-12-13 21:52:32 +00:00
* @ return none
2010-02-10 21:53:56 +00:00
*/
2012-12-23 15:00:15 +00:00
private function plugin_viewscan ( $mode = 'update' )
2009-08-29 15:30:41 +00:00
{
$error_messages = array ( 0 => DBLAN_31 , 1 => DBLAN_32 , 2 => DBLAN_33 , 3 => DBLAN_34 );
2013-05-04 15:42:55 -07:00
// $error_image = array("integrity_pass.png", "integrity_fail.png", "warning.png", "blank.png");
$error_glyph = array ( ADMIN_TRUE_ICON , ADMIN_FALSE_ICON , " <i class='S16 e-warning-16'></i> " , " <i style='display:inline-block;width:17px;height:16px;'> </i> " );
$error_type = array ( 'warning' => 2 , 'error' => 1 );
2010-02-10 21:53:56 +00:00
2009-10-26 01:04:06 +00:00
global $e107 ;
$sql = e107 :: getDb ();
$tp = e107 :: getParser ();
$frm = e107 :: getForm ();
2012-11-30 03:08:15 -08:00
$mes = e107 :: getMessage ();
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
require_once ( e_HANDLER . " plugin_class.php " );
$ep = new e107plugin ();
2012-12-23 15:00:15 +00:00
$ep -> update_plugins_table ( $mode ); // scan for e_xxx changes and save to plugin table.
$ep -> save_addon_prefs ( $mode ); // generate global e_xxx_list prefs from plugin table.
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
/* we all are awaiting for PHP5 only support - method chaining ...
2012-11-30 03:08:15 -08:00
$mes -> add ( DBLAN_22 . ' - ' . DBLAN_23 , E_MESSAGE_SUCCESS )
2009-11-08 09:14:39 +00:00
-> add ( " <a href=' " . e_SELF . " '> " . LAN_BACK . " </a> " , E_MESSAGE_SUCCESS )
2009-08-29 15:30:41 +00:00
-> add ( DBLAN_30 );
*/
2010-02-10 21:53:56 +00:00
2012-11-30 03:08:15 -08:00
$mes -> add ( DBLAN_23 , E_MESSAGE_SUCCESS );
$mes -> add ( " <a href=' " . e_SELF . " '> " . LAN_BACK . " </a> " , E_MESSAGE_SUCCESS );
$mes -> add ( DBLAN_30 );
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$text = "
< form method = 'post' action = '".e_ADMIN."db.php?mode=".$_GET[' mode ']."' id = 'plug_edit' >
< fieldset id = 'core-db-plugin-scan' >
< legend class = 'e-hideme' > " .ADLAN_CL_7. " </ legend >
2012-11-26 14:41:32 -08:00
< table class = 'table adminlist' >
2012-05-13 05:26:11 +00:00
< colgroup >
< col style = 'width: 20%' />
< col style = 'width: 20%' />
< col style = 'width: 35%' />
< col style = 'width: 25%' />
2009-08-29 15:30:41 +00:00
</ colgroup >
< thead >
< tr >
2013-03-21 13:39:11 +01:00
< th > " .LAN_NAME. " </ th >
2009-08-29 15:30:41 +00:00
< th > " .DBLAN_25. " </ th >
< th > " .DBLAN_26. " </ th >
< th class = 'center last' > " .DBLAN_27. " </ th >
</ tr >
</ thead >
< tbody >
" ;
2010-02-10 21:53:56 +00:00
2013-05-04 15:42:55 -07:00
$sql -> select ( " plugin " , " * " , " plugin_id !='' order by plugin_path ASC " ); // Must order by path to pick up duplicates. (plugin names may change).
2009-08-29 15:30:41 +00:00
$previous = '' ;
2013-05-04 15:42:55 -07:00
while ( $row = $sql -> fetch ())
2009-08-29 15:30:41 +00:00
{
2009-10-26 01:04:06 +00:00
e107 :: loadLanFiles ( $row [ 'plugin_path' ], 'admin' );
2013-05-04 15:42:55 -07:00
e107 :: plugLan ( $row [ 'plugin_path' ], 'global' , true );
2009-08-29 15:30:41 +00:00
$text .= "
< tr >
2013-03-24 13:07:15 +01:00
< td > " . $tp->toHtml ( $row['plugin_name'] , FALSE, " defs , emotes_off " ). " </ td >
2009-08-29 15:30:41 +00:00
< td > " . $row['plugin_path'] . " </ td >
< td > " ;
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
if ( trim ( $row [ 'plugin_addons' ]))
{
//XXX - $nl_code = ''; - OLD VAR?
foreach ( explode ( ',' , $row [ 'plugin_addons' ]) as $this_addon )
{
$ret_code = 3 ; // Default to 'not checked
2013-05-04 15:42:55 -07:00
if (( strpos ( $this_addon , 'e_' ) === 0 ) || ( substr ( $this_addon , - 4 , 4 ) == '_sql' ))
2009-08-29 15:30:41 +00:00
{
$ret_code = $ep -> checkAddon ( $row [ 'plugin_path' ], $this_addon ); // See whether spaces before opening tag or after closing tag
}
2013-02-11 14:25:59 +02:00
elseif ( strpos ( $this_addon , 'sc_' ) === 0 )
{
$this_addon = substr ( $this_addon , 3 ) . ' (sc)' ;
}
2013-05-04 15:42:55 -07:00
if ( ! is_numeric ( $ret_code ))
{
$errorMessage = $ret_code [ 'msg' ];
$ret_code = $error_type [ $ret_code [ 'type' ]];
}
else
{
$errorMessage = $error_messages [ $ret_code ];
}
$text .= " <span class='clear e-tip' style='cursor:pointer' title=' " . $errorMessage . " '> " ;
$text .= $error_glyph [ $ret_code ] . " " ;
// $text .= "<img class='icon action S16' src='".e_IMAGE_ABS."fileinspector/".$error_image[$ret_code]."' alt='".$error_messages[$ret_code]."' title='".$error_messages[$ret_code]."' />";
2009-08-29 15:30:41 +00:00
$text .= trim ( $this_addon ); // $ret_code - 0=OK, 1=content error, 2=access error
2013-05-04 15:42:55 -07:00
$text .= " </span><br /> " ;
2009-08-27 21:01:44 +00:00
}
2009-08-29 15:30:41 +00:00
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$text .= "
</ td >
< td class = 'center' >
" ;
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
if ( $previous == $row [ 'plugin_path' ])
{
$delid = $row [ 'plugin_id' ];
$delname = $row [ 'plugin_name' ];
//Admin delete button
$text .= $frm -> admin_button ( " delplug[ { $delid } ] " , DBLAN_52 , 'delete' , '' , array ( 'title' => LAN_CONFIRMDEL . " ID: { $delid } [ $delname ] " ));
//Or maybe image submit? -
//$text .= $frm->submit_image("delplug[{$delid}]", DBLAN_52, 'delete', LAN_CONFIRMDEL." ID:{$delid} [$delname]");
}
else
{
2013-05-04 15:42:55 -07:00
$text .= ( $row [ 'plugin_installflag' ] == 1 ) ? " <span class='label label-warning'> " . DBLAN_27 . " </span> " : " " ; // "Installed and not installed";
2009-08-29 15:30:41 +00:00
}
$text .= "
</ td >
</ tr >
" ;
$previous = $row [ 'plugin_path' ];
}
2010-02-10 21:53:56 +00:00
2009-08-29 15:30:41 +00:00
$text .= "
</ tbody >
</ table >
</ fieldset >
</ form >
" ;
2010-02-10 21:53:56 +00:00
2013-02-22 21:34:06 -08:00
e107 :: getRender () -> tablerender ( DBLAN_10 . SEP . DBLAN_22 , $mes -> render () . $text );
2009-08-29 15:30:41 +00:00
}
}
//XXX - what is this for (backup core)? <input type='hidden' name='sqltext' value='{$sqltext}' />
2012-11-26 18:42:11 -08:00
function db_adminmenu () //FIXME - has problems when navigation is on the LEFT instead of the right.
2009-08-29 15:30:41 +00:00
{
global $st ;
2010-02-10 21:53:56 +00:00
2012-11-26 18:42:11 -08:00
2009-08-29 15:30:41 +00:00
foreach ( $st -> _options as $key => $val )
{
$var [ $key ][ 'text' ] = $val [ 'label' ];
$var [ $key ][ 'link' ] = e_SELF . " ?mode= " . $key ;
}
2010-02-10 21:53:56 +00:00
2012-12-03 01:40:47 -08:00
e107 :: getNav () -> admin ( DBLAN_10 , $_GET [ 'mode' ], $var );
2009-08-27 21:01:44 +00:00
}
2009-08-22 00:28:55 +00:00
2009-08-27 21:01:44 +00:00
2009-09-06 01:02:01 +00:00
/**
* Export XML File and Copy Images .
* @ param object $prefs
* @ param object $tables
* @ param object $debug [ optional ]
2009-12-13 21:52:32 +00:00
* @ return none
2009-09-06 01:02:01 +00:00
*/
function exportXmlFile ( $prefs , $tables , $package = FALSE , $debug = FALSE )
2009-08-27 21:01:44 +00:00
{
2009-09-02 17:27:29 +00:00
$xml = e107 :: getSingleton ( 'xmlClass' );
2009-09-05 23:02:23 +00:00
$tp = e107 :: getParser ();
2013-03-24 13:07:15 +01:00
$mes = e107 :: getMessage ();
2010-02-10 21:53:56 +00:00
2009-09-06 01:02:01 +00:00
//TODO LANs
2010-02-10 21:53:56 +00:00
2009-09-06 01:02:01 +00:00
if ( vartrue ( $package ))
2009-09-02 17:27:29 +00:00
{
2010-02-10 21:53:56 +00:00
2009-09-05 23:02:23 +00:00
$xml -> convertFilePaths = TRUE ;
$xml -> filePathDestination = EXPORT_PATH ;
2009-09-10 09:49:01 +00:00
$xml -> filePathPrepend = array (
'news_thumbnail' => " { e_IMAGE}newspost_images/ "
);
2010-02-10 21:53:56 +00:00
2009-09-05 23:02:23 +00:00
$desinationFolder = $tp -> replaceConstants ( $xml -> filePathDestination );
2010-02-10 21:53:56 +00:00
2009-09-05 23:02:23 +00:00
if ( ! is_writable ( $desinationFolder ))
2010-02-10 21:53:56 +00:00
{
2012-11-30 03:08:15 -08:00
$mes -> add ( $desinationFolder . " is not writable " , E_MESSAGE_ERROR );
2009-09-05 23:02:23 +00:00
return ;
}
2009-09-02 17:27:29 +00:00
}
2010-02-10 21:53:56 +00:00
2009-09-06 01:02:01 +00:00
2009-09-05 23:02:23 +00:00
if ( $xml -> e107Export ( $prefs , $tables , $debug ))
{
2012-11-30 03:08:15 -08:00
$mes -> add ( " Created: " . $desinationFolder . " install.xml " , E_MESSAGE_SUCCESS );
2009-09-05 23:02:23 +00:00
if ( varset ( $xml -> fileConvertLog ))
{
foreach ( $xml -> fileConvertLog as $oldfile )
{
$file = basename ( $oldfile );
$newfile = $desinationFolder . $file ;
2009-09-06 01:02:01 +00:00
if ( $oldfile == $newfile || ( copy ( $oldfile , $newfile )))
2009-09-05 23:02:23 +00:00
{
2012-11-30 03:08:15 -08:00
$mes -> add ( " Copied: " . $newfile , E_MESSAGE_SUCCESS );
2009-09-05 23:02:23 +00:00
}
else
{
2012-11-30 03:08:15 -08:00
$mes -> add ( " Couldn't copy: " . $newfile , E_MESSAGE_ERROR );
2010-02-10 21:53:56 +00:00
}
2009-09-05 23:02:23 +00:00
}
}
}
2009-08-22 00:28:55 +00:00
}
2009-08-29 15:30:41 +00:00
2009-08-27 22:19:51 +00:00
2009-08-27 21:01:44 +00:00
function table_list ()
{
// grab default language lists.
2010-02-10 21:53:56 +00:00
//TODO - a similar function is in db_verify.php. Should probably all be moved to mysql_class.php.
2009-08-27 21:01:44 +00:00
$exclude = array ();
2009-08-29 15:30:41 +00:00
$exclude [] = " core " ;
2009-08-27 21:01:44 +00:00
$exclude [] = " rbinary " ;
$exclude [] = " parser " ;
$exclude [] = " tmp " ;
$exclude [] = " online " ;
$exclude [] = " upload " ;
$exclude [] = " user_extended_country " ;
2009-08-29 18:07:42 +00:00
$exclude [] = " plugin " ;
2010-02-10 21:53:56 +00:00
2009-09-05 23:02:23 +00:00
$coreTables = e107 :: getDb () -> db_TableList ( 'nolan' );
2009-08-29 18:07:42 +00:00
2009-09-05 23:02:23 +00:00
$tables = array_diff ( $coreTables , $exclude );
2010-02-10 21:53:56 +00:00
2009-09-05 23:02:23 +00:00
foreach ( $tables as $e107tab )
2010-02-10 21:53:56 +00:00
{
2009-09-05 23:02:23 +00:00
$count = e107 :: getDb () -> db_Select_gen ( " SELECT * FROM # " . $e107tab );
2010-02-10 21:53:56 +00:00
2009-09-05 23:02:23 +00:00
if ( $count )
2009-08-27 21:01:44 +00:00
{
2010-02-10 21:53:56 +00:00
$tabs [ $e107tab ] = $count ;
}
2009-08-27 21:01:44 +00:00
}
2009-08-22 00:28:55 +00:00
2009-08-27 21:01:44 +00:00
return $tabs ;
}
2009-09-05 23:02:23 +00:00
2009-08-29 15:30:41 +00:00
/* Still needed ?
2009-08-22 00:28:55 +00:00
2008-12-30 13:51:41 +00:00
function backup_core ()
{
2006-12-02 04:36:16 +00:00
global $pref , $sql ;
$tmp = base64_encode (( serialize ( $pref )));
2008-12-30 13:51:41 +00:00
if ( ! $sql -> db_Insert ( " core " , " 'pref_backup', ' { $tmp } ' " ))
{
2006-12-02 04:36:16 +00:00
$sql -> db_Update ( " core " , " e107_value=' { $tmp } ' WHERE e107_name='pref_backup' " );
}
}
2009-08-29 15:30:41 +00:00
*/
2008-12-30 13:51:41 +00:00
2013-05-04 19:59:54 -07:00
/*
2010-02-10 21:53:56 +00:00
function verify_sql_record () // deprecated by db_verify.php ( i think).
2008-12-30 13:51:41 +00:00
{
2012-11-30 03:08:15 -08:00
global $e107 ;
2007-03-15 15:55:08 +00:00
2009-07-23 15:21:41 +00:00
$sql = e107 :: getDb ();
$sql2 = e107 :: getDb ( 'sql2' );
$sql3 = e107 :: getDb ( 'sql3' );
2012-11-30 03:08:15 -08:00
$frm = e107 :: getForm ();
$tp = e107 :: getParser ();
$mes = e107 :: getMessage ();
2007-03-15 15:55:08 +00:00
$tables = array ();
$tables [] = 'rate' ;
$tables [] = 'comments' ;
2008-12-30 13:51:41 +00:00
if ( isset ( $_POST [ 'delete_verify_sql_record' ]))
{
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
if ( ! varset ( $_POST [ 'del_dbrec' ]))
{
2012-11-30 03:08:15 -08:00
$mes -> add ( 'Nothing to delete' , E_MESSAGE_DEBUG );
2008-12-30 13:51:41 +00:00
}
else
{
$msg = " ok, so you want to delete some records? not a problem at all!<br /> " ;
$msg .= " but, since this is still an experimental procedure, i won't actually delete anything<br /> " ;
$msg .= " instead, i will show you the queries that would be performed<br /> " ;
$text .= " <br /> " ;
2012-11-30 03:08:15 -08:00
$mes -> add ( $msg , E_MESSAGE_DEBUG );
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
foreach ( $_POST [ 'del_dbrec' ] as $k => $v )
{
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
if ( $k == 'rate' )
{
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
$keys = implode ( " , " , array_keys ( $v ));
$qry .= " DELETE * FROM rate WHERE rate_id IN ( " . $keys . " )<br /> " ;
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
}
elseif ( $k == 'comments' )
{
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
$keys = implode ( " , " , array_keys ( $v ));
$qry .= " DELETE * FROM comments WHERE comment_id IN ( " . $keys . " )<br /> " ;
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
}
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
}
2007-03-15 15:55:08 +00:00
2012-11-30 03:08:15 -08:00
$mes -> add ( $qry , E_MESSAGE_DEBUG );
$mes -> add ( " <a href=' " . e_SELF . " '> " . LAN_BACK . " </a> " , E_MESSAGE_DEBUG );
2008-12-30 13:51:41 +00:00
}
}
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
//Nothing selected
if ( isset ( $_POST [ 'check_verify_sql_record' ]) && ( ! isset ( $_POST [ 'table_rate' ]) && ! isset ( $_POST [ 'table_comments' ])))
{
$_POST [ 'check_verify_sql_record' ] = '' ;
unset ( $_POST [ 'check_verify_sql_record' ]);
2012-11-30 03:08:15 -08:00
$mes -> add ( DBLAN_53 , E_MESSAGE_WARNING );
2007-03-15 15:55:08 +00:00
}
2008-12-30 13:51:41 +00:00
if ( ! isset ( $_POST [ 'check_verify_sql_record' ]))
{
2007-03-15 15:55:08 +00:00
//select table to verify
$text = "
2008-12-30 13:51:41 +00:00
< form method = 'post' action = '".e_SELF."' >
< fieldset id = 'core-db-verify-sql-tables' >
< legend class = 'e-hideme' > " .DBLAN_39. " </ legend >
2012-11-26 14:41:32 -08:00
< table class = 'table adminlist' >
2012-05-13 05:26:11 +00:00
< colgroup >
< col style = 'width: 100%' />
2008-12-30 13:51:41 +00:00
</ colgroup >
< thead >
< tr >
< th class = 'last' > " .DBLAN_37. " </ th >
</ tr >
</ thead >
< tbody >
" ;
foreach ( $tables as $t )
{
2007-03-15 15:55:08 +00:00
$text .= "
2008-12-30 13:51:41 +00:00
< tr >
< td >
" . $frm->checkbox ('table_'. $t , $t ). $frm->label ( $t , 'table_'. $t , $t ). "
</ td >
</ tr >
" ;
}
$text .= "
</ tbody >
</ table >
< div class = 'buttons-bar center' >
" . $frm->admin_button ('check_verify_sql_record', DBLAN_38). "
2009-11-08 09:14:39 +00:00
" . $frm->admin_button ('back', LAN_BACK, 'back'). "
2008-12-30 13:51:41 +00:00
</ div >
</ fieldset >
</ form >
" ;
2013-03-24 13:07:15 +01:00
$ns -> tablerender ( DBLAN_10 . SEP . DBLAN_39 , $mes -> render () . $text );
2008-12-30 13:51:41 +00:00
}
else
{
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
//function to sort the results
function verify_sql_record_cmp ( $a , $b )
{
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
$orderby = array ( 'type' => 'asc' , 'itemid' => 'asc' );
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
$result = 0 ;
foreach ( $orderby as $key => $value )
{
if ( $a [ $key ] == $b [ $key ])
continue ;
$result = ( $a [ $key ] < $b [ $key ]) ? - 1 : 1 ;
if ( $value == 'desc' )
$result = - $result ;
2007-03-15 15:55:08 +00:00
break ;
}
return $result ;
}
//function to display the results
//$err holds the error data
//$ctype holds the tablename
2008-12-30 13:51:41 +00:00
function verify_sql_record_displayresult ( $err , $ctype )
{
global $frm ;
2007-03-15 15:55:08 +00:00
usort ( $err , 'verify_sql_record_cmp' );
2008-12-30 13:51:41 +00:00
$text = "
< fieldset id = 'core-core-db-verify-sql-records-{$ctype}' >
< legend > " .DBLAN_40. " " . $ctype . " </ legend >
2012-11-26 14:41:32 -08:00
< table class = 'table adminlist' >
2012-05-13 05:26:11 +00:00
< colgroup >
2012-05-13 05:56:35 +00:00
< col style = 'width: 20%' />
< col style = 'width: 10%' />
< col style = 'width: 50%' />
< col style = 'width: 20%' />
2008-12-30 13:51:41 +00:00
</ colgroup >
< thead >
< tr >
< th > " .DBLAN_41. " </ th >
< th > " .DBLAN_42. " </ th >
< th > " .DBLAN_43. " </ th >
2009-11-08 09:14:39 +00:00
< th class = 'center last' > " .LAN_OPTIONS. " </ th >
2008-12-30 13:51:41 +00:00
</ tr >
</ thead >
< tbody >
" ;
if ( is_array ( $err ) && ! empty ( $err ))
{
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
foreach ( $err as $k => $v )
{
2007-03-15 15:55:08 +00:00
$delkey = $v [ 'sqlid' ];
$text .= "
2008-12-30 13:51:41 +00:00
< tr >
< td > { $v [ 'type' ]} </ td >
< td > { $v [ 'itemid' ]} </ td >
< td > " .( $v['table_exist'] ? DBLAN_45 : DBLAN_46). " </ td >
< td class = 'center' >
2009-11-08 09:14:39 +00:00
" . $frm->checkbox ('del_dbrec['. $ctype .']['. $delkey .'][]', '1'). $frm->label (LAN_DELETE, 'del_dbrec['. $ctype .']['. $delkey .'][]', '1'). "
2008-12-30 13:51:41 +00:00
</ td >
</ tr >
" ;
2007-03-15 15:55:08 +00:00
}
2008-12-30 13:51:41 +00:00
}
else
{
2007-03-15 15:55:08 +00:00
$text .= "
2008-12-30 13:51:41 +00:00
< tr >
< td colspan = '4' > { $err } </ td >
</ tr >
" ;
2007-03-15 15:55:08 +00:00
}
2008-12-30 13:51:41 +00:00
$text .= "
</ tbody >
</ table >
</ fieldset >
" ;
2007-03-15 15:55:08 +00:00
return $text ;
}
2008-12-30 13:51:41 +00:00
function verify_sql_record_gettables ()
{
2012-11-30 03:08:15 -08:00
$sql2 = e107 :: getDb ( 'sql2' );
2007-03-15 15:55:08 +00:00
//array which will hold all db tables
$dbtables = array ();
//get all tables in the db
2008-12-30 13:51:41 +00:00
$sql2 -> db_Select_gen ( " SHOW TABLES " );
while ( $row2 = $sql2 -> db_Fetch ())
{
2007-03-15 15:55:08 +00:00
$dbtables [] = $row2 [ 0 ];
}
return $dbtables ;
}
2008-12-30 13:51:41 +00:00
$text = " <form method='post' action=' " . e_SELF . ( e_QUERY ? '?' . e_QUERY : '' ) . " '> " ;
2007-03-15 15:55:08 +00:00
//validate rate table records
2008-12-30 13:51:41 +00:00
if ( isset ( $_POST [ 'table_rate' ]))
{
2007-03-15 15:55:08 +00:00
$query = "
SELECT r .*
FROM #rate AS r
WHERE r . rate_id != ''
ORDER BY r . rate_table , r . rate_itemid " ;
2008-12-30 13:51:41 +00:00
$data = array ( 'type' => 'rate' , 'table' => 'rate_table' , 'itemid' => 'rate_itemid' , 'id' => 'rate_id' );
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
if ( ! $sql -> db_Select_gen ( $query ))
{
$text .= verify_sql_record_displayresult ( DBLAN_49 , $data [ 'type' ]);
}
else
{
2007-03-15 15:55:08 +00:00
//the master error array
2008-12-30 13:51:41 +00:00
$err = array ();
2007-03-15 15:55:08 +00:00
//array which will hold all db tables
$dbtables = verify_sql_record_gettables ();
2008-12-30 13:51:41 +00:00
while ( $row = $sql -> db_Fetch ())
{
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
$ctype = $data [ 'type' ];
$cid = $row [ $data [ 'id' ]];
$citemid = $row [ $data [ 'itemid' ]];
$ctable = $row [ $data [ 'table' ]];
2007-03-15 15:55:08 +00:00
//if the rate_table is an existing table, we need to do more validation
//else if the rate_table is not an existing table, this is an invalid reference
2008-12-30 13:51:41 +00:00
//FIXME Steve: table is never found without MPREFIX; Multi-language tables?
if ( in_array ( MPREFIX . $ctable , $dbtables ))
{
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
$sql3 -> db_Select_gen ( " SHOW COLUMNS FROM " . MPREFIX . $ctable );
while ( $row3 = $sql3 -> db_Fetch ())
{
2007-03-15 15:55:08 +00:00
//find the auto_increment field, since that's the most likely key used
2008-12-30 13:51:41 +00:00
if ( $row3 [ 'Extra' ] == 'auto_increment' )
{
2007-03-15 15:55:08 +00:00
$aif = $row3 [ 'Field' ];
break ;
}
}
//we need to check if the itemid (still) exists in this table
//if the record is not found, this could well be an obsolete record
//if the record is found, we need to keep this record since it's a valid reference
2008-12-30 13:51:41 +00:00
if ( ! $sql2 -> db_Select ( " { $ctable } " , " * " , " { $aif } =' { $citemid } ' ORDER BY { $aif } " ))
{
$err [] = array ( 'type' => $ctable , 'sqlid' => $cid , 'table' => $ctable , 'itemid' => $citemid , 'table_exist' => TRUE );
2007-03-15 15:55:08 +00:00
}
2008-12-30 13:51:41 +00:00
}
else
{
$err [] = array ( 'type' => $ctable , 'sqlid' => $cid , 'table' => $ctable , 'itemid' => $citemid , 'table_exist' => FALSE );
2007-03-15 15:55:08 +00:00
}
}
2008-12-30 13:51:41 +00:00
$text .= verify_sql_record_displayresult (( $err ? $err : DBLAN_54 ), $ctype );
2007-03-15 15:55:08 +00:00
}
}
//validate comments table records
2008-12-30 13:51:41 +00:00
if ( isset ( $_POST [ 'table_comments' ]))
{
2007-03-15 15:55:08 +00:00
$query = "
SELECT c .*
FROM #comments AS c
WHERE c . comment_id != ''
ORDER BY c . comment_type , c . comment_item_id " ;
2008-12-30 13:51:41 +00:00
$data = array ( 'type' => 'comments' , 'table' => 'comment_type' , 'itemid' => 'comment_item_id' , 'id' => 'comment_id' );
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
if ( ! $sql -> db_Select_gen ( $query ))
{
$text .= verify_sql_record_displayresult ( DBLAN_49 , $data [ 'type' ]);
}
else
{
2007-03-15 15:55:08 +00:00
//the master error array
2008-12-30 13:51:41 +00:00
$err = array ();
2007-03-15 15:55:08 +00:00
//array which will hold all db tables
$dbtables = verify_sql_record_gettables ();
//get all e_comment files and variables
2008-12-30 13:51:41 +00:00
require_once ( e_HANDLER . " comment_class.php " );
$cobj = new comment ();
2007-03-15 15:55:08 +00:00
$e_comment = $cobj -> get_e_comment ();
2008-12-30 13:51:41 +00:00
while ( $row = $sql -> db_Fetch ())
{
2007-03-15 15:55:08 +00:00
2008-12-30 13:51:41 +00:00
$ctype = $data [ 'type' ];
$cid = $row [ $data [ 'id' ]];
$citemid = $row [ $data [ 'itemid' ]];
$ctable = $row [ $data [ 'table' ]];
2007-03-15 15:55:08 +00:00
//for each comment we need to validate the referencing record exists
//we need to check if the itemid (still) exists in this table
//if the record is not found, this could well be an obsolete record
//if the record is found, we need to keep this record since it's a valid reference
2008-12-30 13:51:41 +00:00
2007-03-15 15:55:08 +00:00
// news
2008-12-30 13:51:41 +00:00
if ( $ctable == " 0 " )
{
if ( ! $sql2 -> db_Select ( " news " , " * " , " news_id=' { $citemid } ' " ))
{
$err [] = array ( 'type' => 'news' , 'sqlid' => $cid , 'table' => $ctable , 'itemid' => $citemid , 'table_exist' => TRUE );
2007-03-15 15:55:08 +00:00
}
2008-12-30 13:51:41 +00:00
// article, review or content page
}
elseif ( $ctable == " 1 " )
{
2007-03-15 15:55:08 +00:00
// downloads
2008-12-30 13:51:41 +00:00
}
elseif ( $ctable == " 2 " )
{
if ( ! $sql2 -> db_Select ( " download " , " * " , " download_id=' { $citemid } ' " ))
{
$err [] = array ( 'type' => 'download' , 'sqlid' => $cid , 'table' => $ctable , 'itemid' => $citemid , 'table_exist' => TRUE );
2007-03-15 15:55:08 +00:00
}
// poll
2008-12-30 13:51:41 +00:00
}
elseif ( $ctable == " 4 " )
{
if ( ! $sql2 -> db_Select ( " polls " , " * " , " poll_id=' { $citemid } ' " ))
{
$err [] = array ( 'type' => 'polls' , 'sqlid' => $cid , 'table' => $ctable , 'itemid' => $citemid , 'table_exist' => TRUE );
2007-03-15 15:55:08 +00:00
}
// userprofile
2008-12-30 13:51:41 +00:00
}
elseif ( $ctable == " profile " )
{
if ( ! $sql2 -> db_Select ( " user " , " * " , " user_id=' { $citemid } ' " ))
{
$err [] = array ( 'type' => 'user' , 'sqlid' => $cid , 'table' => $ctable , 'itemid' => $citemid , 'table_exist' => TRUE );
2007-03-15 15:55:08 +00:00
}
//else if this is a plugin comment
2008-12-30 13:51:41 +00:00
}
elseif ( isset ( $e_comment [ $ctable ]) && is_array ( $e_comment [ $ctable ]))
{
2007-03-15 15:55:08 +00:00
$var = $e_comment [ $ctable ];
2008-12-30 13:51:41 +00:00
$qryp = '' ;
2007-03-15 15:55:08 +00:00
//new method must use the 'qry' variable
2008-12-30 13:51:41 +00:00
if ( isset ( $var ) && $var [ 'qry' ] != '' )
{
if ( $installed = $sql2 -> db_Select ( " plugin " , " * " , " plugin_path = ' " . $var [ 'plugin_path' ] . " ' AND plugin_installflag = '1' " ))
{
2007-03-15 15:55:08 +00:00
$qryp = str_replace ( " { NID} " , $citemid , $var [ 'qry' ]);
2008-12-30 13:51:41 +00:00
if ( ! $sql2 -> db_Select_gen ( $qryp ))
{
$err [] = array ( 'type' => $ctable , 'sqlid' => $cid , 'table' => $ctable , 'itemid' => $citemid , 'table_exist' => TRUE );
2007-03-15 15:55:08 +00:00
}
}
2008-12-30 13:51:41 +00:00
//old method
}
else
{
if ( ! $sql2 -> db_Select ( $var [ 'db_table' ], $var [ 'db_title' ], $var [ 'db_id' ] . " = ' { $citemid } ' " ))
{
$err [] = array ( 'type' => $ctable , 'sqlid' => $cid , 'table' => $ctable , 'itemid' => $citemid , 'table_exist' => TRUE );
2007-03-15 15:55:08 +00:00
}
}
2008-12-30 13:51:41 +00:00
//in all other cases
}
else
{
$err [] = array ( 'type' => $ctable , 'sqlid' => $cid , 'table' => $ctable , 'itemid' => $citemid , 'table_exist' => FALSE );
2007-03-15 15:55:08 +00:00
}
}
2008-12-30 13:51:41 +00:00
$text .= verify_sql_record_displayresult (( $err ? $err : DBLAN_54 ), $ctype );
2007-03-15 15:55:08 +00:00
}
}
2008-12-30 13:51:41 +00:00
$text .= "
< div class = 'buttons-bar center' >
2009-11-08 09:14:39 +00:00
" . $frm->admin_button ('delete_verify_sql_record', LAN_DELCHECKED, 'delete'). "
" . $frm->admin_button ('verify_sql_record', LAN_BACK, 'back'). "
2008-12-30 13:51:41 +00:00
</ div >
</ form >
" ;
2013-03-24 13:07:15 +01:00
$ns -> tablerender ( DBLAN_10 . SEP . DBLAN_50 , $mes -> render () . $text );
2007-03-15 15:55:08 +00:00
}
}
2013-05-04 19:59:54 -07:00
*/
2009-08-29 15:30:41 +00:00
2007-03-15 15:55:08 +00:00
?>