Social Media
Foren
Datenbankrevision
Noch nen Bug, denn ich zwar vor ner halben Ewigkeit schon gefixt habe, der aber immer noch im Release drin ist:
Der EventManager.
Die Datei "system/classes/eventmanager.php" muss so aussehen:
Der EventManager.
Die Datei "system/classes/eventmanager.php" muss so aussehen:
PHP-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
<?PHP
class EventManager {
private static $handler = null;
/**
*
* @return array;
*/
public static function GetAllHandler(){
$res = self::$handler;
if($res == null){
if(Cache::contains("eventmanager", "handler")){
$res = Cache::getData("eventmanager", "handler");
}
else{
/*$rows = DataBase::Current()->ReadRows("SELECT * FROM {'dbprefix'}events");
foreach($rows as $handler){ print_r($handler);
if(!isset($item[$handler->event])){
$res[$handler->event] = array();
}
$res[$handler->event][] = $handler->file;
}*/
$rows = DataBase::Current()->ReadRows("SELECT * FROM {'dbprefix'}events");
foreach ($rows as $handler) {
if(!isset($res[$handler->event])){
$res[$handler->event] = array();
}
$res[$handler->event][] = $handler->file;
}
//print_r($res);
Cache::setData("eventmanager", "handler", $res);
self::$handler = $res;
}
}
return $res;
}
/**
*
* @param string $file
* @param strung $event
* @return mixed
*/
public static function addHandler($file, $event){
$file = DataBase::Current()->EscapeString($file);
$event = DataBase::Current()->EscapeString($event);
Cache::clear("eventmanager", "handler");
return DataBase::Current()->Execute("INSERT INTO {'dbprefix'}events (event, file) VALUES ('".$event."','".$file."')");
}
/**
*
* @param string $file
* @param string $event
* @return mixed
*/
public static function removeHandler($file, $event){
$file = DataBase::Current()->EscapeString($file);
$event = DataBase::Current()->EscapeString($event);
Cache::clear("eventmanager", "handler");
return DataBase::Current()->Execute("DELETE FROM {'dbprefix'}events WHERE event = '".$event."' AND file = '".$file."'");
}
/**
*
* @param string $name
* @param array $args
*/
public static function RaiseEvent($name,$args){
$handler = self::getHandler($name);
if($handler){
foreach($handler as $file){
include_once(Settings::getValue("root").$file);
}
}
}
/**
*
* @param string $name
* @return array
*/
public static function getHandler($name){
$handler = self::GetAllHandler();
if(isset($handler[$name]))
{
return $handler[$name];
}
}
}
?>
|
|
So, jetzt mal wieder was zum eigentlichen Thema.
Das Ganze soll ja als Basis für den neuen Installer und auch für den Updater werden. Ich bin jetzt die Revisionen allte durchgegangen und habe alle Änderungen in Tabellenform gespeichert.
Aufbau:
table (aktuell 48 einträge)
- name
- repository
- revision
- engine
- charset
- auto_increment
columns (aktuell 164 einträge)
- table
- column
- repository
- revision
- type
- allow_null
- auto_increment
- deleted
- default
- on_update
primarykeys (aktuell 60 einträge)
- table
- column
- repository
- revision
- index
indizies (aktuell 4 einträge)
- name
- tabke
- column
- repository
- revision
- type
- index
Im nächsten Schritt müssen wir ein Script basteln, was aus den einzelnen Änderungen Create-Statements für den Installer und ALERT, CREATE und DROP-Statements für den Updater erstellt. Ich muss das auch noch für die einzelnen Plugins nachtragen. Wer Lust hat so ein Script zu bauen einfach Bescheid geben, ich geb ihm dann die Creates für meine Tabellen.
BTW: An einigen Stellen müssen wir den Datenbankaufbau noch anpassen, dass hab ich damals als noch unwissender Entwickler nicht so toll gemacht. Mehr daz in einem neuen Topic.
Das Ganze soll ja als Basis für den neuen Installer und auch für den Updater werden. Ich bin jetzt die Revisionen allte durchgegangen und habe alle Änderungen in Tabellenform gespeichert.
Aufbau:
table (aktuell 48 einträge)
- name
- repository
- revision
- engine
- charset
- auto_increment
columns (aktuell 164 einträge)
- table
- column
- repository
- revision
- type
- allow_null
- auto_increment
- deleted
- default
- on_update
primarykeys (aktuell 60 einträge)
- table
- column
- repository
- revision
- index
indizies (aktuell 4 einträge)
- name
- tabke
- column
- repository
- revision
- type
- index
Im nächsten Schritt müssen wir ein Script basteln, was aus den einzelnen Änderungen Create-Statements für den Installer und ALERT, CREATE und DROP-Statements für den Updater erstellt. Ich muss das auch noch für die einzelnen Plugins nachtragen. Wer Lust hat so ein Script zu bauen einfach Bescheid geben, ich geb ihm dann die Creates für meine Tabellen.
BTW: An einigen Stellen müssen wir den Datenbankaufbau noch anpassen, dass hab ich damals als noch unwissender Entwickler nicht so toll gemacht. Mehr daz in einem neuen Topic.