WBCE CMS – Way Better Content Editing.
Du bist nicht angemeldet.
In der upgrade.php sorgt mysql_error() für einen Abbruch des Scripts und damit auch des Upgrade-Scripts für WBCE 1.1.8ff.
Mein Ansatz ist, das mysql_error durch mysqli_error zu ersetzen. Da mysqli_error allerdings als Parameter die mysqli-DB-Verbindung benötigt, und ich leider nicht weiß, ob und wie man da elegant rankommt, habe ich noch eine solche ergänzt.
Alt:
global $database;
global $admin;
$mod_dir = basename(dirname(__FILE__));
$tablename = $mod_dir;
$query = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_".$mod_dir);
$fetch = $query->fetchRow();
// Add field groups_id
if(!isset($fetch['groups_id'])){
if($database->query("ALTER TABLE `".TABLE_PREFIX."mod_".$mod_dir."` ADD `groups_id` VARCHAR(255) NOT NULL DEFAULT ''")) {
echo '<span class="good">Database Field groups_id added successfully</span><br />';
}
echo '<span class="bad">'.mysql_error().'</span><br />';
} else {
echo '<span class="ok">Database Field groups_id exists, update not needed</span><br />';
}
$query = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_".$mod_dir.'_comments');
$fetch = $query->fetchRow();
// Add field commentextra
if(!isset($fetch['commentextra'])){
if($database->query("ALTER TABLE `".TABLE_PREFIX."mod_".$mod_dir."_comments` ADD `commentextra` VARCHAR(255) NOT NULL DEFAULT ''")) {
echo '<span class="good">Database Field commentextra added successfully</span><br />';
}
echo '<span class="bad">'.mysql_error().'</span><br />';
} else {
echo '<span class="ok">Database Field commentextra exists, update not needed</span><br />';
}
Neu:
global $database;
global $admin;
if (defined('DB_PORT')) {
$port = DB_PORT;
} else {
$port = ini_get('mysqli.default_port');
}
$checkmysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME, $port);
$mod_dir = basename(dirname(__FILE__));
$tablename = $mod_dir;
$query = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_".$mod_dir);
$fetch = $query->fetchRow();
// Add field groups_id
if(!isset($fetch['groups_id'])){
if($database->query("ALTER TABLE `".TABLE_PREFIX."mod_".$mod_dir."` ADD `groups_id` VARCHAR(255) NOT NULL DEFAULT ''")) {
echo '<span class="good">Database Field groups_id added successfully</span><br />';
}
echo '<span class="bad">'.mysqli_error($checkmysqli).'</span><br />';
} else {
echo '<span class="ok">Database Field groups_id exists, update not needed</span><br />';
}
$query = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_".$mod_dir.'_comments');
$fetch = $query->fetchRow();
// Add field commentextra
if(!isset($fetch['commentextra'])){
if($database->query("ALTER TABLE `".TABLE_PREFIX."mod_".$mod_dir."_comments` ADD `commentextra` VARCHAR(255) NOT NULL DEFAULT ''")) {
echo '<span class="good">Database Field commentextra added successfully</span><br />';
}
echo '<span class="bad">'.mysqli_error($checkmysqli).'</span><br />';
} else {
echo '<span class="ok">Database Field commentextra exists, update not needed</span><br />';
}
Damit läuft das Upgrade zumindest durch.
Ist das richtig so? Kann man das auch eleganter lösen? Muss die DB-Verbindung noch irgendwie wieder geschlossen werden?
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Ich hab die Zeilen mit mysql_error() einfach entfernt.
Wenn diese alten Felder immer noch nicht da sind, hats sowieso was gröberes.
Offline
florian, thanks
Ich habe im AOR eine aktualisierte Version hochgeladen, in der das Problem mit mysql_error nicht mehr auftritt.
http://addons.wbce.org/?do=item&item=8
Code allein macht nicht glücklich. Jetzt spenden!
Offline