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

More file-system cleanup

This commit is contained in:
CaMer0n
2012-06-01 20:50:29 +00:00
parent 412d754983
commit 98117308f2
14 changed files with 23 additions and 317 deletions

View File

@@ -0,0 +1,206 @@
<?php
/*
* e107 website system
*
* Copyright (C) 2008-2009 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
* Database utilities - create arrays from SQL definition
*
* $Source: /cvs_backup/e107_0.8/e107_files/utilities/dbgen.php,v $
* $Revision$
* $Date$
* $Author$
*/
require('../../class2.php');
require_once(e_HANDLER.'db_table_admin_class.php');
if (!check_class(e_UC_MAINADMIN))
{
exit;
}
$dbAdm = new db_table_admin();
// Create an array of all tables
$tableStruct = $dbAdm->get_table_def('',e_ADMIN.'sql/core_sql.php');
$tableArray = array();
foreach ($tableStruct as $t)
{
$tableArray[$t[1]] = array('src' => e_ADMIN.'sql/core_sql.php', 'desc' => 'core:'.$t[1]);
}
// Now do the plugins
$sqlFiles = e107::getPref('e_sql_list');
foreach ($sqlFiles as $p => $f)
{
$targ = e_PLUGIN.$p.'/'.$f.'.php';
//echo $p.':'.$targ.'<br />';
$tableStruct = $dbAdm->get_table_def('',$targ);
foreach ($tableStruct as $t)
{
$tableArray[$t[1]] = array('src' => $targ, 'desc' => 'plug:'.$p.':'.$t[1]);
}
}
unset($tableStruct);
unset($sqlFiles);
function genFileSelect($tableDefs, $name,$fl)
{
$ret = "<select name='{$name}' class='tbox'>\n<option value=''>----</option>\n";
foreach ($tableDefs as $k => $f)
{
$ret .= "<option value='{$k}'>{$f['desc']}</option>\n";
}
$ret .= "</select>\n";
return $ret;
}
//$HEADER = '';
//$FOOTER = '';
require(HEADERF);
$message = '';
//========================================================
// ACTION
//========================================================
if (isset($_POST['do_conversion']))
{
if (varset($_POST['selected_plugin'],FALSE))
{
$table = $_POST['selected_plugin'];
if (!isset($tableArray[$table]))
{
$message = 'Bad table name specified';
$table = '';
}
}
else
{
$message = 'No table name specified';
}
}
if ($table)
{
$baseStruct = $dbAdm->get_table_def($table,$tableArray[$table]['src']);
$fieldDefs = $dbAdm->parse_field_defs($baseStruct[0][2]); // Required definitions
$outDefs = array();
foreach ($fieldDefs as $k => $v)
{
switch ($v['type'])
{
case 'field' :
if (vartrue($v['autoinc']))
{
if (isset($outDefs['WHERE']))
{
}
else
{
$outDefs['WHERE'] = "`{$v['name']}` = \$id";
}
break;
}
$baseType = preg_replace('#\(\d+?\)#', '', $v['fieldtype']); // Should strip any length
switch ($baseType)
{
case 'int' :
case 'shortint' :
case 'tinyint' :
$outDefs['_FIELD_TYPES'][$v['name']] = 'int';
break;
case 'char' :
case 'text' :
case 'varchar' :
$outDefs['_FIELD_TYPES'][$v['name']] = 'todb';
break;
}
if (isset($v['nulltype']) && !isset($v['default']))
{
$outDefs['_NOTNULL'][$v['name']] = '';
}
break;
case 'pkey' :
case 'ukey' :
case 'key' :
break; // Do nothing with keys for now
default :
echo "Unexpected field type: {$k} => {$v['type']}<br />";
}
}
$toSave = $eArrayStorage->WriteArray($outDefs, FALSE); // 2nd parameter to TRUE if needs to be written to DB
}
//========================================================
// FORM
//========================================================
$text =
"<div style='text-align:center; width:700px'>
<form method='post' action='".e_SELF."'>
<table style='width:95%' class='fborder'>
<colgroup>
<col style='width:30%' />
<col style='width:70%' />
</colgroup>";
$text .= "<tr>
<td colspan='2' class='forumheader3' style='text-align:center'>".'Table printout'."<br /><span class='smallblacktext'>".'(ready to copy and paste)'."</span></td>
</tr>";
if ($message)
{
$text .= "<tr>
<td class='forumheader3'>".'Error:'."</td>
<td class='forumheader3'>".$message."
</td>
</tr>";
}
if ($table)
{
$text .= "<tr>
<td class='forumheader3'>Table <b>{$table}</b></td>
<td class='forumheader3'><pre>".str_replace("\n", '<br />', $toSave)."</pre></td>
</tr>";
}
$text .= "
<tr>
<td class='forumheader3'>".'Choose table:'."</td>
<td class='forumheader3'>".genFileSelect($tableArray, 'selected_plugin',$pluginList)."
</td>
</tr>";
$text .= "
<tr>
<td class='forumheader3' colspan='2' style='text-align:center'>
<input class='button' type='submit' name='do_conversion' value='".'Parse Definition'."' />
</td>
</tr>";
$text .= "
</table>\n
</form>
</div><br />";
$ns->tablerender('SQL Definition Parser', $text);
require(FOOTERF);
?>

View File

@@ -0,0 +1,126 @@
<?php
require('..\..\class2.php');
require_once(e_HANDLER.'user_handler.php');
$user_info = new userHandler;
define('LAN_PCALC_01','E107 Password Calculation Utility');
define('LAN_PCALC_02','Login Name');
define('LAN_PCALC_03','Desired password');
define('LAN_PCALC_04','Calculate');
define('LAN_PCALC_05','Invalid login name');
define('LAN_PCALC_06','Errors Found!!!');
define('LAN_PCALC_07','Calculated hash:');
define('LAN_PCALC_08','Password invalid');
define('LAN_PCALC_09','Confirm password');
define('LAN_PCALC_10','Passwords don\'t match!');
define('LAN_PCALC_11', 'Password Calculation');
$loginName = varset($_POST['calc_loginname'],'');
require(HEADERF);
$text =
"<div style='text-align:center'>
<form method='post' action='".e_SELF."'>
<table style='width:95%' class='fborder'>
<colgroup>
<col style='width:60%' />
<col style='width:40%' />
</colgroup>
<tr>
<td colspan='2' class='forumheader3' style='text-align:center'>".LAN_PCALC_01."
</td>
</tr>
<tr>
<td class='forumheader3'>".LAN_PCALC_02."</td>
<td class='forumheader3'>
<input class='tbox' type='text' size='60' maxlength='100' name='calc_loginname' value='{$loginName}' />
</td>
</tr>
<tr>
<td class='forumheader3'>".LAN_PCALC_03."</td>
<td class='forumheader3'>
<input class='tbox' type='password' size='60' maxlength='100' name='calc_password' value='' />
</td>
</tr>
<tr>
<td class='forumheader3'>".LAN_PCALC_09."</td>
<td class='forumheader3'>
<input class='tbox' type='password' size='60' maxlength='100' name='calc_password1' value='' />
</td>
</tr>";
$errorString = '';
if (isset($_POST['show_password']))
{
if ($_POST['calc_password'] != $_POST['calc_password1'])
{
$errorString = LAN_PCALC_10;
}
if (!$errorString)
{
$loginResult = $user_info->validateField('user_loginname',$loginName,FALSE);
$passwordResult = $user_info->validateField('user_password',trim($_POST['calc_password']),FALSE);
if ($passwordResult !== TRUE)
{
$errorString = LAN_PCALC_08;
}
elseif ($loginResult === TRUE)
{
$passwordHash = $user_info->HashPassword($_POST['calc_password'],$loginName);
}
else
{
$errorString = LAN_PCALC_05;
}
}
if (!$errorString)
{
$text .= "
<tr>
<td class='forumheader3'>".LAN_PCALC_07."</td>
<td class='forumheader3'>".$passwordHash."</td>
</tr>";
}
if ($errorString)
{
$text .= "
<tr>
<td class='forumheader3'>".LAN_PCALC_06."</td>
<td class='forumheader3'>".$errorString."</td>
</tr>";
}
}
$text .= "
<tr>
<td class='forumheader3' colspan='3' style='text-align:center'>
<input class='button' type='submit' name='show_password' value='".LAN_PCALC_04."' />
</td>
</tr>";
$text .= "
</table>\n
</form>
</div><br />";
$ns->tablerender(LAN_PCALC_11, $text);
require(FOOTERF);
?>

View File

@@ -0,0 +1,296 @@
<?php
require('..\..\class2.php');
require_once(e_HANDLER.'user_handler.php');
if (!check_class(e_UC_MAINADMIN))
{
exit;
}
$user_info = new userHandler;
define('LAN_PCONV_01','E107 Password Conversion Utility');
define('LAN_PCONV_02','This utility converts all the passwords in your user database to current formats');
define('LAN_PCONV_03','Caution!!!! Back up your database first!!!!!');
define('LAN_PCONV_04','Proceed');
define('LAN_PCONV_05','Convert md5 passwords to salted passwords');
define('LAN_PCONV_06','Passwords for email address login');
define('LAN_PCONV_07','Create');
define('LAN_PCONV_08','Delete');
define('LAN_PCONV_09','Do nothing');
define('LAN_PCONV_10','Back up user database');
define('LAN_PCONV_11', 'Yes');
define('LAN_PCONV_12', 'Have you backed up your database?');
define('LAN_PCONV_13', 'Backing up database');
define('LAN_PCONV_14', 'Done');
define('LAN_PCONV_15', 'Creating email passwords');
define('LAN_PCONV_16', 'Deleting email passwords');
define('LAN_PCONV_17', 'Scanning database...');
define('LAN_PCONV_18', 'Cannot open user table');
define('LAN_PCONV_19', 'Creates a table called \'user_backup\' with the information about to be changed. If the table already exists, it is emptied first');
define('LAN_PCONV_20', 'Error creating backup table');
define('LAN_PCONV_21', 'Error copying to backup table');
define('LAN_PCONV_22', 'Total --TOTAL-- users checked');
define('LAN_PCONV_23', 'Total --TOTAL-- email passwords calculated');
define('LAN_PCONV_24', 'Total --TOTAL-- user passwords updated');
define('LAN_PCONV_25', 'Total --TOTAL-- users could not be updated');
define('LAN_PCONV_26', 'Create Backup');
define('LAN_PCONV_27', 'Restore backup');
define('LAN_PCONV_28', 'Restoring from backup....');
define('LAN_PCONV_29', 'Backup database table not found!');
define('LAN_PCONV_30', 'Cannot access backup table');
define('LAN_PCONV_31', '');
define('LAN_PCONV_32', '');
define('LAN_PCONV_33', '');
define('LAN_PCONV_34', '');
define('LAN_PCONV_35', '');
function multi_radio($name, $textsVals, $currentval = '')
{
$ret = '';
$gap = '';
foreach ($textsVals as $v => $t)
{
$sel = ($v == $currentval) ? " checked='checked'" : "";
$ret .= $gap."<input type='radio' name='{$name}' value='{$v}'{$sel} /> ".$t."\n";
// $gap = "&nbsp;&nbsp;";
$gap = "<br />";
}
return $ret;
}
$recordCount = 0;
$emailProcess = 0;
$saltProcess = 0;
$cantProcess = 0;
$cookieChange = '';
require(HEADERF);
$pc_db = new db;
if (isset($_POST['GetOnWithIt']))
{
$doBackup = varset($_POST['doDBBackup'],0);
$saltConvert = varset($_POST['convertToSalt'],0);
$emailGen = varset($_POST['EmailPasswords'],0);
if ($doBackup == 2)
{
$saltConvert = 0; // Don't do conversions if restoring database
$emailGen = 0;
}
$error = '';
if ($emailGen == 1)
{ // Scan DB for salted passwords
}
//-----------------------------------------
// Backup user DB (selected fields)
//-----------------------------------------
if (!$error && ($doBackup == 1))
{
echo LAN_PCONV_13;
if ($pc_db->db_Table_exists('user_backup'))
{ // Completely delete table - avoids problems with incorrect structure
$pc_db->db_Select_gen('DROP TABLE `#user_backup` ');
}
$qry = "CREATE TABLE `#user_backup` (
user_id int(10) unsigned NOT NULL,
user_name varchar(100) NOT NULL default '',
user_loginname varchar(100) NOT NULL default '',
user_password varchar(50) NOT NULL default '',
user_email varchar(100) NOT NULL default '',
user_prefs text NOT NULL,
PRIMARY KEY (user_id),
UNIQUE KEY user_name (user_name)
) ENGINE=MyISAM;"; // If not exists, of course
if (!$pc_db->db_Select_gen($qry))
{
$error = LAN_PCONV_20;
}
if (!$error)
{
$qry = "INSERT INTO `#user_backup` SELECT user_id, user_name, user_loginname, user_password, user_email, user_prefs FROM `#user` ";
if ($pc_db->db_Select_gen($qry) === FALSE)
{
$error = LAN_PCONV_21;
}
}
if (!$error) echo '...'.LAN_PCONV_14.'<br /><br />';
}
//--------------------------------------
// Restore from backup
//--------------------------------------
if (!$error && ($doBackup == 2))
{
echo LAN_PCONV_28;
if (!$pc_db->db_Table_exists('user_backup'))
{
$error = LAN_PCONV_28;
}
if (!$error && $pc_db->db_Select('user_backup','*'))
{
while ($row = $pc_db->db_Fetch(MYSQL_ASSOC))
{
$uid = $row['user_id'];
unset($row['user_id']);
$sql->db_UpdateArray('user',$row," WHERE `user_id`={$uid}"); // Intentionally use $sql here
if (USERID == $uid)
{
$cookieChange = $row['user_password'];
}
}
}
else
{
$error = LAN_PCONV_30;
}
if (!$error) echo '...'.LAN_PCONV_14.'<br /><br />';
}
//--------------------------------------
// Change passwords
//--------------------------------------
if (!$error && $emailGen || $saltConvert)
{ // Run through the DB doing conversions.
echo LAN_PCONV_17;
if ($pc_db->db_Select('user', 'user_id, user_name, user_loginname, user_password, user_email, user_prefs', '') === FALSE)
{
$error = LAN_PCONV_18;
}
if (!$error)
{
while ($row = $pc_db->db_Fetch())
{ // Do conversions
$recordCount++;
$newData = array();
$newPrefs = '';
$user_prefs = unserialize($row['user_prefs']);
if ($saltConvert)
{
if ($user_info->canConvert($row['user_password']))
{
$newData['user_password'] = $user_info->ConvertPassword($row['user_password'], $row['user_loginname']);
$saltProcess++;
if (USERID == $row['user_id'])
{
$cookieChange = $newData['user_password'];
}
}
else
{
$cantProcess++;
}
}
if (($emailGen == 1) && $user_info->canConvert($row['user_password']))
{
$user_prefs['email_password'] = $user_info->ConvertPassword($row['user_password'], $row['user_email']);
$emailProcess++;
}
elseif ($emailGen == 2)
{
unset($user_prefs['email_password']);
$emailProcess++;
}
if (count($user_prefs)) $newPrefs = serialize($user_prefs); else $newPrefs = '';
if($newPrefs != $user_prefs)
{
$newData['user_prefs'] = $newPrefs;
}
if (count($newData)) $sql->db_UpdateArray('user',$newData, " WHERE `user_id`={$row['user_id']}");
}
}
echo str_replace('--TOTAL--',$recordCount, LAN_PCONV_22).'<br />';
echo str_replace('--TOTAL--',$saltProcess, LAN_PCONV_24).'<br />';
echo str_replace('--TOTAL--',$emailProcess, LAN_PCONV_23).'<br />';
echo str_replace('--TOTAL--',$cantProcess, LAN_PCONV_25).'<br />';
echo '<br />';
}
if ($error)
{
echo '<br />'.$error.'<br /><br />';
require_once(FOOTERF);
exit;
}
if ($cookieChange)
{
// echo "Cookie Updated.<br /><br />";
$cookieval = USERID.".".md5($cookieChange); // Just changed admin password, and hence cookie
cookie($pref['cookie_name'], $cookieval);
}
}
$text =
"<div style='text-align:center'>
<form method='post' action='".e_SELF."' onsubmit=\"return jsconfirm('".LAN_PCONV_12."')\">
<table style='width:95%' class='fborder'>
<colgroup>
<col style='width:60%' />
<col style='width:40%' />
</colgroup>
<tr>
<td colspan='2' class='forumheader3' style='text-align:center'>".LAN_PCONV_01."
</td>
</tr>
<tr>
<td colspan='2' class='forumheader3' style='text-align:center'>".LAN_PCONV_02."<br />".LAN_PCONV_03."
</td>
</tr>
<tr>
<td class='forumheader3'>".LAN_PCONV_10."<br /><span class='smalltext'>".LAN_PCONV_19."</span></td>
<td class='forumheader3'>".multi_radio('doDBBackup',array('0' => LAN_PCONV_09, '1' => LAN_PCONV_26, '2' => LAN_PCONV_27),'')."
</td>
</tr>
<tr>
<td class='forumheader3'>".LAN_PCONV_05."</td>
<td class='forumheader3'>".multi_radio('convertToSalt',array('0' => LAN_PCONV_09, '1' => LAN_PCONV_11),'')."
</td>
</tr>
<tr>
<td class='forumheader3'>".LAN_PCONV_06."</td>
<td class='forumheader3'>".multi_radio('EmailPasswords',array('0' => LAN_PCONV_09, '1' => LAN_PCONV_07, '2' => LAN_PCONV_08),'')."
</td>
</tr>";
$text .= "
<tr>
<td class='forumheader3' colspan='3' style='text-align:center'>
<input class='button' type='submit' name='GetOnWithIt' value='".LAN_PCONV_04."' />
</td>
</tr>";
$text .= "
</table>\n
</form>
</div><br />";
$ns->tablerender(LAN_PCONV_01, $text);
require_once(FOOTERF);
?>

View File

@@ -0,0 +1,496 @@
<?php
/*
+ ----------------------------------------------------------------------------+
| e107 website system - Converter for plugin.php to plugin.xml
|
| $Source: /cvs_backup/e107_0.8/e107_files/utilities/pluginxmlgen.php,v $
| $Revision$
| $Date$
| $Author$
+----------------------------------------------------------------------------+
*/
/*
Doesn't (can't) do everything, but sorts what it can.
Intended to be run from e107_files/utilities directory.
Usage: Just browse to this file and follow the prompts.
*/
require('../../class2.php');
require_once(e_HANDLER."file_class.php");
if (!check_class(e_UC_MAINADMIN))
{
exit;
}
$fl = new e_file;
if ($pluginList = $fl->get_files(e_PLUGIN, "^plugin\.php$", "standard", 1))
{
sort($pluginList);
}
foreach ($pluginList as $k => $p)
{
$pluginList[$k]['shortpath'] = substr(str_replace(e_PLUGIN,"",$p['path']),0,-1);
}
function genFileSelect($name,$fl)
{
$ret = "<select name='{$name}' class='tbox'>\n<option value=''>----</option>\n";
foreach ($fl as $k => $f)
{
$ret .= "<option value='{$f['shortpath']}'>{$f['shortpath']}</option>\n";
}
$ret .= "</select>\n";
return $ret;
}
define('TAB_CHAR',chr(9));
define('LAN_XMLGEN_01','Create a plugin.xml file from a plugin.php file');
define('LAN_XMLGEN_02','plugin.xml creation');
define('LAN_XMLGEN_03','Convert');
define('LAN_XMLGEN_04','Select plugin');
define('LAN_XMLGEN_05','No plugin selected - nothing changed');
define('LAN_XMLGEN_06','Processing directory: ');
define('LAN_XMLGEN_07','Conversion successful');
define('LAN_XMLGEN_08','Cannot write to file: ');
define('LAN_XMLGEN_09','Cannot open file for writing: ');
define('LAN_XMLGEN_10','Cannot read ');
define('LAN_XMLGEN_11','Copyright ');
define('LAN_XMLGEN_12','URL to check for updates ');
define('LAN_XMLGEN_13','(optional)');
define('LAN_XMLGEN_14','(Any existing plugin.xml file will be renamed to plugin.bak)');
define('LAN_XMLGEN_15','Cannot rename existing plugin.xml to plugin.bak');
define('LAN_XMLGEN_16','Cannot delete existing plugin.bak');
define('LAN_XMLGEN_17','Installation');
define('LAN_XMLGEN_18','Upgrade');
define('LAN_XMLGEN_19','Uninstallation');
define('LAN_XMLGEN_20','Installation Management');
define('LAN_XMLGEN_21','Installation required');
define('LAN_XMLGEN_22','(Not used if no installation required)');
define('LAN_XMLGEN_23','Yes');
define('LAN_XMLGEN_24','No');
define('LAN_XMLGEN_25','Type');
define('LAN_XMLGEN_26','Function');
define('LAN_XMLGEN_27','Class');
define('LAN_XMLGEN_28','File name');
define('LAN_XMLGEN_29','Function/method name');
define('LAN_XMLGEN_30','When');
define('LAN_XMLGEN_31','Pre');
define('LAN_XMLGEN_32','Post');
define('LAN_XMLGEN_33','Specify file name only - will default to \'.php\' if no extension specified');
define('LAN_XMLGEN_34','Class name');
define('LAN_XMLGEN_35','If specifying a function, leave the class name blank');
define('LAN_XMLGEN_36','');
define('LAN_XMLGEN_37','');
define('LAN_XMLGEN_38','');
$managementOptions = array(
'headings' => array('rowname' => '&nbsp;', 'when' => LAN_XMLGEN_30, 'type' => LAN_XMLGEN_25, 'file' => LAN_XMLGEN_28, 'class' => LAN_XMLGEN_34, 'function' => LAN_XMLGEN_29),
'install' => array('rowname' => LAN_XMLGEN_17, 'when' => TRUE, 'type' => TRUE, 'file' => TRUE, 'class' => TRUE, 'function' => TRUE),
'uninstall' => array('rowname' => LAN_XMLGEN_19, 'when' => TRUE, 'type' => TRUE, 'file' => TRUE, 'class' => TRUE, 'function' => TRUE),
'upgrade' => array('rowname' => LAN_XMLGEN_18, 'when' => TRUE, 'type' => TRUE, 'file' => TRUE, 'class' => TRUE, 'function' => TRUE),
'help' => array('rowname' => '&nbsp;', 'when' => '&nbsp;', 'type' => '&nbsp;', 'file' => LAN_XMLGEN_33, 'class' => LAN_XMLGEN_35, 'function' => '&nbsp;')
);
$selectOptions = array(
'when' => array('pre' => LAN_XMLGEN_31, 'post' => LAN_XMLGEN_32),
'type' => array('fileFunction' => LAN_XMLGEN_26, 'classFunction' => LAN_XMLGEN_27)
);
// Writes a single value within open tag and close tag
function writeTag($tag,$value,$level=1)
{
if (!$value) return '';
return str_repeat(TAB_CHAR,$level)."<{$tag}>{$value}</{$tag}>\n";
}
// Writes a tag with some attributes
function writeTagList($tag,$values,$closeTag = TRUE,$level=1)
{
if (!count($values)) return '';
$ret = str_repeat(TAB_CHAR,$level).'<'.$tag;
foreach ($values as $aname => $aval)
{
if ($aval)
{
$ret .= ' '.$aname.'="'.$aval.'"';
}
}
if ($closeTag) { $ret .= ' /'; }
$ret .= ">\n";
return $ret;
}
function listPrefs($prefList, $arrayPrefList)
{
if (!is_array($prefList)) return '';
$text = '';
foreach ($prefList as $k => $v)
{
if (is_array($v))
{
$text .= TAB_CHAR.TAB_CHAR.'<pref name="'.$k.'" type="array">'."\n";
foreach ($v as $sk => $sv)
{
$text .= str_repeat(TAB_CHAR,3).' <key name="'.$sk.'" value="'.$sv.'" />'."\n";
}
$text .= TAB_CHAR.TAB_CHAR."</pref>\n";
}
else
{
$text .= TAB_CHAR.TAB_CHAR.'<pref name="'.$k.'" value="'.$v.'" />'."\n";
}
}
if (!is_array($arrayPrefList)) return $text;
foreach ($arrayPrefList as $k => $v)
{
$text .= TAB_CHAR.TAB_CHAR.'<listPref name="'.$k.'" value="'.$v.'" />'."\n";
}
return $text;
}
function makeXML($pluginDir, $extras=array())
{
if (substr($pluginDir,-1,1) != '/') $pluginDir .= '/';
$sourceFile = $pluginDir.'plugin.php';
$destFile = $pluginDir.'plugin.xml';
$backFile = $pluginDir.'plugin.bak';
$baseFolder = substr($pluginDir,0,-1);
// echo $baseFolder;
$baseFolder = substr($baseFolder,strrpos($baseFolder,'/')+1);
// echo "Transcribing from {$sourceFile} to {$destFile}...<br />";
$adminText = '';
$mainPrefText = '';
$manageText = '';
$fileText = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n\n";
$fileText .= '<!-- $'.'Id: plugin.xml,v 0.0 2008/06/26 20:44:10 e107steved Exp '.'$ -'."->\n\n"; // Split it to stop message getting edited when this file committed!
if (!is_readable($sourceFile))
{
return LAN_XMLGEN_10.$sourceFile."<br />";
}
include_once($sourceFile);
// Transcribe variables
$fileText .= writeTagList('e107Plugin',
array('name' => $eplug_name,
'version' => $eplug_version,
'compatibility' => '0.8',
'installRequired' => $extras['installationrequired'] ? 'true' : 'false'
), FALSE);
$fileText .= writeTagList('author',
array('name' => $eplug_author,
'url' => $eplug_url,
'email' => $eplug_email
), TRUE);
$fileText .= writeTag('description',$eplug_description);
$fileText .= writeTag('readMe',$eplug_readme);
$fileText .= writeTag('folder',$baseFolder);
if (isset($eplug_comment_ids) && is_array($eplug_comment_ids))
{
foreach ($eplug_comment_ids as $cid)
{
if (is_numeric($cid)) $cid = '***'.$baseFolder.$cid.'***'; // Should be text - so draw attention to it
$fileText .= writeTag('commentID', $cid);
}
}
foreach ($extras as $k => $v)
{
if (in_array($k,array('copyright','update_url'))) $fileText .= writeTag($k,$v);
}
if (!varsettrue($extras['copyright']))
{
$fileText .= writeTag('copyright','Copyright e107 Inc e107.org, Licensed under GPL (http://www.gnu.org/licenses/gpl.txt)');
}
$baseFolder .= '/';
// 'commentID' tags needed
$adminText .= writeTag('configFile',$eplug_conffile,2);
$adminText .= writeTag('icon',str_replace($baseFolder,'',$eplug_icon),2);
$adminText .= writeTag('iconSmall',str_replace($baseFolder,'',$eplug_icon_small),2);
$adminText .= writeTag('caption',$eplug_caption,2);
$adminText .= writeTag('installDone',$eplug_done,2);
$fileText .= writeTag('administration',"\n".$adminText.TAB_CHAR);
if (varsettrue($eplug_link) && varsettrue($eplug_link_name) && varsettrue($eplug_link_url))
{
$fileText .= TAB_CHAR.'<menuLink name="'.$eplug_link_name.'" url="'.str_replace(e_PLUGIN,'',$eplug_link_url).'" />'."\n";
}
// Could add more menuLink options
$fileText .= writeTag('mainPrefs',"\n".listPrefs($eplug_prefs, varset($eplug_array_pref,'')).TAB_CHAR);
// Could add userclasses
// Management section
$temp = '';
foreach ($extras as $k => $v)
{
if (in_array($k,array('install','uninstall', 'upgrade')))
{
$temp1 = '';
foreach (array('when','type','file','class','function') as $t)
{
if (isset($v[$t])) $temp1 .= ' '.$t.'="'.$v[$t].'"';
}
if ($temp1)
{
$temp .= TAB_CHAR.TAB_CHAR.'<'.$k.$temp1.' />'."\n";
}
}
}
if ($temp)
{ // Only add management section if something to add
$fileText .= TAB_CHAR."<management>\n".$temp.TAB_CHAR."</management>\n";
}
$fileText .= "</e107Plugin>";
// All assembled - write file
if (is_readable($backFile))
{ // Delete any existing backup
if (!unlink($backFile))
{
return LAN_XMLGEN_16;
}
}
if (is_readable($destFile))
{ // Rename existing plugin.xml
if (!rename($destFile,$backFile))
{
return LAN_XMLGEN_15;
}
}
if (($fh = fopen($destFile,'wt')) === FALSE)
{
return LAN_XMLGEN_09.$destFile."<br />";
}
if (fwrite($fh,$fileText) == FALSE)
{
return LAN_XMLGEN_08.$destFile."<br />";
}
fclose($handle);
return LAN_XMLGEN_07; // Return success
}
$HEADER = '';
$FOOTER = '';
require(HEADERF);
$message = '';
//========================================================
// ACTION
//========================================================
if (isset($_POST['do_conversion']))
{
if (varset($_POST['selected_plugin'],FALSE))
{
$extras['copyright'] = varset($_POST['copyright'],'');
$extras['update_url'] = varset($_POST['update_url'],'');
$extras['installationrequired'] = varset($_POST['installationrequired'],1);
// Calculate the array of management features
foreach ($managementOptions as $k => $v)
{
if ($k == 'headings') continue;
foreach ($v as $r => $s)
{
$el_name = $k.'_'.$r;
if (varset($_POST[$el_name]))
{
switch ($r)
{
case 'rowname' : // Shouldn't happen - but allow for it in case
case 'help' :
break;
case 'when' :
$extras[$k][$r] = $_POST[$el_name];
break;
case 'type' :
$extras[$k][$r] = $_POST[$el_name];
break;
case 'file' :
$extras[$k][$r] = $_POST[$el_name];
if (strtolower(substr($extras[$k][$r],-4)) != '.php') $extras[$k][$r].= '.php';
break;
case 'function' :
case 'class' :
$extras[$k][$r] = $_POST[$el_name];
// switch ($extras[$k]['type'])
break;
}
}
}
if (!isset($extras[$k]['file']) || (!isset($extras[$k]['function'])) || (isset($extras[$k]['type']) && ($extras[$k]['type'] == 'classFunction') && !isset($extras[$k]['class'])))
{
unset($extras[$k]); // Incomplete definition
}
}
$message = LAN_XMLGEN_06.e_PLUGIN.$_POST['selected_plugin']."<br />";
$message .= makeXML(e_PLUGIN.$_POST['selected_plugin'], $extras);
}
else
{
$message = LAN_XMLGEN_05;
}
}
//========================================================
// FORM
//========================================================
$text =
"<div style='text-align:center; width:700px'>
<form method='post' action='".e_SELF."'>
<table style='width:95%' class='fborder'>
<colgroup>
<col style='width:60%' />
<col style='width:40%' />
</colgroup>";
if ($message)
{
$text .= "<tr>
<td colspan='2' class='forumheader3' style='text-align:center'>".$message."
</td>
</tr>";
}
$text .= "<tr>
<td colspan='2' class='forumheader3' style='text-align:center'>".LAN_XMLGEN_01."<br /><span class='smallblacktext'>".LAN_XMLGEN_14."</span></td>
</tr>
<tr>
<td class='forumheader3'>".LAN_XMLGEN_04."</td>
<td class='forumheader3'>".genFileSelect('selected_plugin',$pluginList)."
</td>
</tr>
<tr>
<td class='forumheader3'>".LAN_XMLGEN_11."<br /><span class='smallblacktext'>".LAN_XMLGEN_13."</span></td>
<td class='forumheader3'>
<input class='tbox' type='text' size='60' maxlength='100' name='copyright' value='' />
</td>
</tr>
<tr>
<td class='forumheader3'>".LAN_XMLGEN_12."<br /><span class='smallblacktext'>".LAN_XMLGEN_13."</span></td>
<td class='forumheader3'>
<input class='tbox' type='text' size='60' maxlength='150' name='update_url' value='' />
</td>
</tr>
<tr>
<td class='forumheader3'>".LAN_XMLGEN_21."</td>
<td class='forumheader3'>
<select name='installationrequired'>\n
<option value='1' selected='selected'>".LAN_XMLGEN_23."</option>\n
<option value='0'>".LAN_XMLGEN_24."</option>\n
</select>
</td>
</tr>
<tr><td class='forumheader3'>".LAN_XMLGEN_20."<br /><span class='smallblacktext'>".LAN_XMLGEN_22."</span></td><td class='forumheader3'>
<table>";
foreach ($managementOptions as $k => $v)
{
$text .= "<tr>";
foreach ($v as $r => $s)
{
if ($k == 'headings')
{
$text .= '<td>'.$s.'</td>';
}
elseif ($k == 'help')
{
$text .= "<td><span class='smallblacktext'>".$s.'</span></td>';
}
else
{
$el_name = $k.'_'.$r;
switch ($r)
{
case 'rowname' :
$text .= '<td>'.$s.'</td>';
break;
case 'when' :
case 'type' :
if (!$s)
{
$text .= '<td>&nbsp;</td>';
break;
}
$text .= "<td><select name='{$el_name}' class='tbox'>\n";
foreach ($selectOptions[$r] as $o => $t)
{
$text .= "<option value='{$o}'>{$t}</option>\n";
}
$text .= "</select>\n</td>";
break;
case 'file' :
case 'function' :
case 'class' :
$text .= "<td>
<input class='tbox' type='text' size='30' maxlength='60' name='{$el_name}' value='' />
</td>";
break;
}
}
}
$text .= "</tr>";
}
$text .= "</table></td></tr>
";
$text .= "
<tr>
<td class='forumheader3' colspan='3' style='text-align:center'>
<input class='button' type='submit' name='do_conversion' value='".LAN_XMLGEN_03."' />
</td>
</tr>";
$text .= "
</table>\n
</form>
</div><br />";
$ns->tablerender(LAN_XMLGEN_02, $text);
require(FOOTERF);
?>

View File

@@ -0,0 +1,350 @@
<?php
/*
+ ----------------------------------------------------------------------------+
| e107 website system
|
| Copyright (C) 2008-2009 e107 Inc
| http://e107.org/
|
| Standalone page aimed to reset core preferences
|
| Released under the terms and conditions of the
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_files/utilities/resetcore.php,v $
| $Revision$
| $Date$
| $Author$
+----------------------------------------------------------------------------+
*/
/* ####################################################
To use this file, you must edit the following line, removing the // so it reads:
define("ACTIVE", true);
If you don't, the script will not be usable.
When you have finished with resetcore you should swap true for false so it can't be used by
people it shouldn't be used by.
*/
define("ACTIVE", false);
//FIXME build e_CACHE from e107_config.php - resetcore.php is a stand alone page
define('e_CACHE', '../cache/');
/* #################################################### */
$register_globals = true;
if(function_exists('ini_get'))
{
$register_globals = ini_get('register_globals');
}
if($register_globals == true)
{
while (list($global) = each($GLOBALS))
{
if (!preg_match('/^(_POST|_GET|_COOKIE|_SERVER|_FILES|GLOBALS|HTTP.*|_REQUEST|eTimingStart)$/', $global))
{
unset($$global);
}
}
unset($global);
}
require_once("../../e107_config.php");
//TODO build e_CACHE from e107_config.php - resetcore.php is a stand alone page
mysql_connect($mySQLserver, $mySQLuser, $mySQLpassword);
mysql_select_db($mySQLdefaultdb);
define("MAGIC_QUOTES_GPC", (ini_get('magic_quotes_gpc') ? TRUE : FALSE));
define("e107_INIT", TRUE);
require_once('../../'.$HANDLERS_DIRECTORY.'arraystorage_class.php');
$eArrayStorage = new ArrayData();
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>e107 resetcore</title>
<link rel="stylesheet" href="style.css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="content-style-type" content="text/css" />
</head>
<body>
<div class='mainbox'>
<a href="http://e107.org"><img src="../../<?php echo($IMAGES_DIRECTORY); ?>logo_template_large.png" alt="Logo" style="border: 0px; vertical-align: middle;" /></a> <span class='headertext'>e107 Reset Core Utility</span>
<br />
<br />
<br />
<br />
<?php
if(ACTIVE !== true) {
echo "<span class='headertext2'>Currently disabled. To enable please open this file in a text editor and follow the instructions to activate.</span>";
exit;
}
if (isset($_POST['usubmit'])) {
if (($row = e_verify()) !== FALSE) {
extract($row);
$result = mysql_query("SELECT * FROM ".$mySQLprefix."core WHERE e107_name='pref_backup' ");
$bu_exist = ($row = mysql_fetch_array($result) ? TRUE : FALSE);
$admin_directory = "e107_admin";
// <input type='radio' name='mode' value='1' /> <span class='headertext2'>Manually edit core values</span><br />
echo "<span class='headertext2'><b>Please select which method you want to use, then click the button to proceed ...</b></span><br /><br /><br /><br />
<table style='width: auto; margin-left:auto; margin-right: auto;'>
<tr>
<td>
<form method='post' action='".$_SERVER['PHP_SELF']."'>
<input type='radio' name='mode' value='2' /> <span class='headertext2'>Reset core to default values</span><br />". ($bu_exist ? "<input type='radio' name='mode' value='3' /> <span class='headertext2'>Restore core backup</span>" : "<br />( There is no backed-up core - unable to offer option to restore backup )")."<br /><br /><input class='button' type='submit' name='reset_core_sub' value='Select method then click here to continue' />
<input type='hidden' name='a_name' value='".$_POST['a_name']."' />
<input type='hidden' name='a_password' value='".$_POST['a_password']."' />
</form>
</td>
</tr>
</table>
";
$END = TRUE;
} else {
$message = "<b>Administrator not found in database / incorrect password / insufficient permissions - aborting.</b><br />";
$END = TRUE;
}
}
if (isset($_POST['reset_core_sub']) && $_POST['mode'] == 2)
{
if (($at = e_verify()) === FALSE) {
exit;
}
$tmpr = substr(str_replace($_SERVER['DOCUMENT_ROOT'], "", $_SERVER['SCRIPT_FILENAME']), 1);
$root = "/".substr($tmpr, 0, strpos($tmpr, "/"))."/";
$e_HTTP = $root;
$admin_directory = "e107_admin";
$url_prefix = substr($_SERVER['PHP_SELF'], strlen($e_HTTP), strrpos($_SERVER['PHP_SELF'], "/")+1-strlen($e_HTTP));
$num_levels = substr_count($url_prefix, "/");
$link_prefix = '';
for($i = 1; $i <= $num_levels; $i++) {
$link_prefix .= "../";
}
define("e_ADMIN", $e_HTTP.$admin_directory."/");
define("e_SELF", "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
define("e_QUERY", preg_replace("#&|/?PHPSESSID.*#i", "", $_SERVER['QUERY_STRING']));
define('e_BASE', $link_prefix);
$e_path = (!strpos($_SERVER['SCRIPT_FILENAME'], ".php") ? $_SERVER['PATH_TRANSLATED'] : $_SERVER['SCRIPT_FILENAME']);
define("e_PATH", $e_path);
$pref_language = "English";
include_once("../../".$LANGUAGES_DIRECTORY."English/lan_prefs.php");
require_once("../../".$FILES_DIRECTORY."def_e107_prefs.php");
$PrefOutput = $eArrayStorage->WriteArray($pref);
mysql_query("DELETE FROM ".$mySQLprefix."core WHERE e107_name='SitePrefs' OR e107_name='SitePrefs_Backup'");
if (!mysql_query("INSERT INTO ".$mySQLprefix."core VALUES ('SitePrefs', '{$PrefOutput}')")) {
$message = "Rebuild failed ...";
$END = TRUE;
} else {
mysql_query("INSERT INTO ".$mySQLprefix."core VALUES ('SitePrefs_Backup', '{$PrefOutput}')");
$message = "Core reset. <br /><br /><a href='../../index.php'>Click here to continue</a>";
$END = TRUE;
}
}
function recurse_pref($ppost) {
$search = array("\"", "'", "\\", '\"', "\'", "$", "?");
$replace = array("&quot;", "&#39;", "&#92;", "&quot;", "&#39;", "&#036;", "&copy;");
foreach ($ppost as $key => $value) {
if(!is_array($value)){
$ret[$key] = str_replace($search, $replace, $text);
} else {
$ret[$key] = recurse_pref($value);
}
}
return $ret;
}
if (isset($_POST['coreedit_sub']))
{
if (($at = e_verify()) === FALSE) {
exit;
}
$pref = recurse_pref($_POST);
$PrefOutput = $eArrayStorage->WriteArray($pref);
mysql_query("DELETE FROM ".$mySQLprefix."core WHERE e107_name='SitePrefs' OR e107_name='SitePrefs_Backup'");
mysql_query("INSERT INTO ".$mySQLprefix."core VALUES ('SitePrefs', '{$PrefOutput}')");
mysql_query("INSERT INTO ".$mySQLprefix."core VALUES ('SitePrefs_Backup', '{$PrefOutput}')");
$message = "Core settings successfully updated. <br /><br /><a href='../../index.php'>Click here to continue</a>";
$END = TRUE;
}
if (isset($_POST['reset_core_sub']) && $_POST['mode'] == 3) {
if (($at = e_verify()) === FALSE) {
exit;
}
$result = mysql_query("SELECT * FROM ".$mySQLprefix."core WHERE e107_name='pref_backup'");
$row = mysql_fetch_array($result);
$pref = unserialize(base64_decode($row['e107_value']));
$PrefOutput = $eArrayStorage->WriteArray($pref);
mysql_query("DELETE FROM ".$mySQLprefix."core WHERE `e107_name` = 'SitePrefs' OR `e107_name` = 'SitePrefs_Backup'");
mysql_query("INSERT INTO ".$mySQLprefix."core VALUES ('SitePrefs', '{$PrefOutput}')");
mysql_query("INSERT INTO ".$mySQLprefix."core VALUES ('SitePrefs_Backup', '{$PrefOutput}')");
$message = "Core backup successfully restored. <br /><br /><a href='../../index.php'>Click here to continue</a>";
$END = TRUE;
}
if (isset($_POST['reset_core_sub']) && $_POST['mode'] == 1)
{
if (($at = e_verify()) === FALSE) {
exit;
}
$result = @mysql_query("SELECT * FROM ".$mySQLprefix."core WHERE e107_name='SitePrefs'");
$row = @mysql_fetch_array($result);
$pref = $eArrayStorage->ReadArray($row['e107_value']);
echo "
<span class='headertext2'><b>Edit your individual core items and click the button to save - <span class='headertext'>use this script with caution</span>.</b></span><br /><br />
<form method='post' action='".$_SERVER['PHP_SELF']."'>
<table style='width:95%'>\n";
while (list($key, $prefr) = each($pref)) {
if (is_array($prefr)) {
foreach ($prefr as $akey => $apref) {
echo "<tr><td class='headertext2' style='width:50%; text-align:right;'>{$key}[{$akey}]&nbsp;&nbsp;</td>
<td style='width:50%'><input type='text' name='{$key}[{$akey}]' value='{$apref}' size='50' maxlength='100' /></td></tr>\n";
}
} else {
echo "<tr><td class='headertext2' style='width:50%; text-align:right;'>{$key}&nbsp;&nbsp;</td>
<td style='width:50%'><input type='text' name='{$key}' value='{$prefr}' size='50' maxlength='100' /></td></tr>\n";
}
}
echo "
<tr>
<td colspan='2' style='text-align:center'><br /><input class='button' type='submit' name='coreedit_sub' value='Save Core Settings' /></td>
</tr>
</table>
<input type='hidden' name='a_name' value='".$_POST['a_name']."' />
<input type='hidden' name='a_password' value='".preg_replace("/\W/", '', $_POST['a_password'])."' />
</form>";
$END = TRUE;
}
if (isset($message)) {
echo "<br /><br /><div style='text-align:center'><span class='headertext2'>{$message}</span></div><br />";
}
if (isset($END)) {
echo "<br /></div></body></html>";
exit;
}
echo "<span class='headertext2'>
This is the e107 resetcore utility. It allows you to completely rebuild your core if it becomes corrupt, or to restore a backup. <br />It won't affect your actual content (news posts, forum posts, articles etc).<br />
<b>Only run this utility if your site is failing to load due to a critical core error, or if you need to change a setting and can't log into your admin area.</b></span><br /><br /><br /><br />
<span class='headertext'>Please enter your main administrator username and password to continue ...</span><br /><br />
<form method='post' action='".$_SERVER['PHP_SELF']."'>
<table style='width:95%'>
<tr>
<td style='width:50%; text-align:right;' class='mediumtext'>Main administrator name:</td>
<td style='width:50%'>
<input class='tbox' type='text' name='a_name' size='30' value='' maxlength='100' />
</td>
</tr>
<tr>
<td style='width:50%; text-align:right;' class='mediumtext'>Main administrator Password:</td>
<td style='width:50%'>
<input class='tbox' type='password' name='a_password' size='30' value='' maxlength='100' />
</td>
</tr>
<tr>
<td colspan='2' style='text-align:center'>
<br />
<input class='button' type='submit' name='usubmit' value='Continue' />
</td>
</tr>
</table>
<br />
</div>
</body>
</html>";
function e_verify() {
global $mySQLprefix;
if (ACTIVE !== TRUE) {
exit;
}
if (MAGIC_QUOTES_GPC == FALSE) {
$a_name = addslashes($_POST['a_name']);
}
else
{
$a_name = $_POST['a_name'];
}
$a_name = str_replace('/*', '', $a_name);
$result = mysql_query("SELECT * FROM ".$mySQLprefix."user WHERE user_name='".$a_name."'");
$row = mysql_fetch_array($result);
if (($row['user_password'] === md5($_POST['a_password'])) && ($row['user_perms'] === '0') && (ACTIVE === TRUE)) {
clear_cache();
return $row;
} else {
return FALSE;
}
}
function clear_cache() {
// $dir = "../cache/";
$dir = e_CACHE;
$pattern = "*.cache.php";
$deleted = false;
$pattern = str_replace(array("\*", "\?"), array(".*", "."), preg_quote($pattern));
if (substr($dir, -1) != "/") {
$dir .= "/";
}
if (is_dir($dir)) {
$d = opendir($dir);
while ($file = readdir($d)) {
if (is_file($dir.$file) && preg_match("/^{$pattern}$/", $file)) {
if (unlink($dir.$file)) {
$deleted[] = $file;
}
}
}
closedir($d);
return true;
} else {
return false;
}
}
?>

View File

@@ -0,0 +1,58 @@
body {
color: #000;
font: 11px verdana, tahoma, arial, sans-serif;
background-color: #D1CFCF;
}
a {
color: #035479;
text-decoration: none;
}
a:hover {
color: #DC6504;
text-decoration: none;
}
.mainbox {
border: 1px solid #879397;
background-color: #fff;
color: #000;
padding: 10px;
}
.smalltext {
color: #000;
font: 12px verdana, tahoma, arial, sans-serif;
}
.headertext {
color: #DC6504;
font: 16px verdana, tahoma, arial, sans-serif;
font-weight: bold;
}
.headertext2 {
color: #000;
font: 12px verdana, tahoma, arial, sans-serif;
font-weight: bold;
}
.indent {
border: 1px solid #D1CFCF;
background-color: #efefef;
color: #000;
padding: 10px;
}
.tbox {
background-color: #fff;
border: #b7b5b5 1px solid;
color: #000000;
font: 10px verdana, tahoma, arial, helvetica, sans-serif;
}
.button {
border: 1px solid #000;
color: #000;
font: 7pt verdana, tahoma, arial, helvetica, sans-serif;
text-align:center;
}