Ich habe gerade in meiner 4.5.3er Beta CVS versucht, mehr als 1 Plugin zu installieren, was so aber nicht funktionierte.
Verwendeter Installer:
Code: Alles auswählen
/* PLUGIN INSTALLER
* Version 0.5
* Für Contenido 4.4.4 and up 4.5.x
* Autor: Martin Horwath (horwath@dayside.net)
* Datum: 26.09.2004
* Modifiziert: 30.03.2005
*/
1. Der Installer löschte immer die con_plugin table beim installieren, da in der install.php in der Klasse DB_Upgrade die Variable $checktablestatus auf true stand.
Auszug:
Code: Alles auswählen
class DB_Upgrade extends DB_Contenido {
}
$cfg["debug"]["installer"] = true;
$checktablestatus = true;
/* Instanzen der DB_Contenido */
$db = new DB_Contenido;
$db2 = new DB_Contenido;
$db_str = new DB_Contenido;
$cfg["debug"]["backend_exectime"]["start"] = getmicrotime();
/* con_sequence update */
updateSequence();
if ($checktablestatus) {
$required_fields = Array( "idplugin",
"name",
"version",
"author",
"idinternal",
"url",
"status",
"description",
"install",
"uninstall",
"date");
$required_table = "DROP TABLE ".$cfg['tab']['plugins'].";
CREATE TABLE ".$cfg['tab']['plugins']." (
idplugin INT(10) NOT NULL default '0',
name VARCHAR(60) default NULL,
version VARCHAR(10) NOT NULL default '0',
author VARCHAR(60) default NULL,
idinternal VARCHAR(32) NOT NULL default '0',
url TEXT,
status INT(10) NOT NULL default '0',
description TEXT,
install TEXT,
uninstall TEXT,
date DATETIME NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (idplugin)
) TYPE=MyISAM;";
// now we check if the plugin table has the right format...
msg( "Checking status ". $cfg['tab']['plugins']);
$ptable = $db->metadata($cfg['tab']['plugins']);
foreach ($ptable as $key) {
if (!in_array($key['name'], $required_fields)) {
msg( $key['name']." (this key can be deleted)", "unused key");
} else {
$availableKeys[] = $key['name'];
}
$foundkeys[] = $key['name'];
}
foreach ($required_fields as $key) {
if (!in_array($key, $foundkeys)) {
msg( $key." (this key must be added)", "missing key");
$missingKeys[] = $key;
}
}
unset ($foundkeys, $key);
// available elements in table are stored in array -> $availableKeys;
// missing elements in table are stored in array -> $missingKeys;
// this is a possible way to handle new versions of plugin installer
// since this is initial release the table will be dropped and recreated
// when a missing element is found.
if (count($missingKeys) > 0) {
$sql_data = remove_remarks($required_table);
$sql_pieces = split_sql_file($sql_data, ';');
msg(count($sql_pieces)." queries", "Executing:");
foreach ($sql_pieces as $sqlinit) {
$db->query($sqlinit);
msg($sqlinit);
}
} else {
msg("ok");
}
}

2. Der Installer vergibt immer die gleiche idplugin in der con_plugin, dadurch stimmt auch der automatisch berechnete Wert der !PID! nicht.
Somit können alle Einträge in der Datenbank für Files, Menüs etc. nicht geschrieben werden, wenn sie schon existent sind, was ja nach dem 1. Plugin der Fall ist. Es funktioniert also immer nur das 1. Plugin

Diese ID wird ab Zeile 195 im script generiert
Code: Alles auswählen
} else {
$mode = "install";
$message .= "No plugin with this internal id exists in table.<br>\n";
$pluginid = getSequenceId($cfg["tab"]["plugins"]);
}
Dann wäre es auch möglich mehr als 1 Plugin einzubinden:
@emergence
ich habe in einem anderen Posting in plugin-interface für 4.5.2 von dir gefunden. Meine Frage, brauch ich das noch 4.5.3 und was genau macht es. Zum installieren von Plugins ist es ja anscheinend nicht gedacht.
@timo
In der Tabelle con_plugin gibt es noch Felder url, status, description, idclient, path, installed und active.
Werden diese Felder schon verwendet, bzw. von Contenido irgendwo abgefragt?
Welche Verwendung ist/war für die Felder angedacht?
Wird zum Beispiel wenn bei idclient eine Mandantennummer eingetragen wird, das Plugin nur bei diesem Mandanten angezeigt?
Huch, is ja doch mehr geworden als ich tippen wollt

Dann mal lieber schluß für jetzt

Gruß aus Franken
Ortwin