Pour ma part, j'aimerai simplement ajouter une colonne sur une table
déjà existante.
J'ai donc un fichier xml du genre:
<database>
<action id="categories" label="Update table %s"
string="{{PREFIX}}categories">
<test eq="neq" value="{{PREFIX}}categories" label="Column %s
exists" string="{{PREFIX}}categories">
SHOW COLUMNS FROM '{{PREFIX}}categories' LIKE
'category_position'
</test>
ALTER TABLE `{{PREFIX}}categories` ADD `category_position`
INT( 10 ) NOT NULL AFTER `category_parentid`;
</action>
</database>
Comme je m'inspire librement du plug-in "link", j'ai repris la même
structure du fichier installdb.php
Seulement mon fichier ne génère pas la mise à jour attendu.
J'ai donc 2 questions:
1. Comment structurer mon fichier XML pour qu'il soit valide pour
faire une mise à jour de table ?
2. Comment structurer une class spécifique pour exécuter la mise à
jour de la base ? Car je préfère passer par une classe personnelle
pour faire tout ça, plutôt que par un simple fichier "dbupdate.php"
P.S: comme vous pouvez le remarquer, ce plug-in permet de gérer la
position des catégories, ce qui devrai aider plus d'un utilisateur
dans la création des menus ;)
mais je suis très loin d'avoir fini, alors si des personnes veulent
participer, you're welcome :)
function installECM()
{
$sql = 'ALTER TABLE \''.$this->table.'\' ADD \''.$this->column.'\'
INT( 10 ) NOT NULL AFTER \'category_parentid\'';
$rs = $this->con->execute($sql);
if($rs->isEmpty())
return false;
return true;
}
Seulement lorsque j'execute ce morceau de code, une erreur apparaît:
Fatal error: Call to a member function isEmpty() on a non-object in /
Users/moriame/Sites/plume/manager/tools/ecm/class.ecm.php on line 68
Si quelqu'un a une piste je suis preneur :)
P.S: je vais aller voir du côté du dossier d'installation tien, j'ai
pas pensé à zieuter par là bas encore....
execute ne retourne pas un resultset mais simple true/false il me semble.
> P.S: je vais aller voir du côté du dossier d'installation tien, j'ai
> pas pensé à zieuter par là bas encore....
Bonne pioche :) Tu trouveras la manière dont le fichier XML est utilisé.
a+
loïc
Donc.... dans certains dossiers de plug-ins il y a un ficheir
"register.php".
Prenant exemple sur "link", ce dernier charge le ficheri functions.php
dans ce fichier.
Mais tous les plug-ins n'ont pas forcément ce fichier "register.php".
Quels sont les fichiers nécessaires dans la création d'un nouveau plug-
in ?
A part desc.xml, je sais pas ;)
Perso, voilà à quoi ressemble celui que je fais en ce moment:
/ecm
/db
update.php
update.xml
/locale
/fr
ecm.lang
/themes
/default
/images
icon.png
class.ecm.php
desc.xml
functions.php
index.php
register.php
Si je regarde l'ensemble des plug-ins, je dirai que seul desc.xml et
index.php sont obligatoires (et encore, dans certains cas y a rien à
part register.php).
J'ai bien vus que la doc. est un peu light côté créa. plug' et il me
semble que Cilia a d mal à la rédiger par manque de compétences.
Moi je veux bien l'aider à combler ce vide, mais j'ai besoin d'aide
avant :)
Et puis avec ce thread ça devrai tout de même l'aider ^^
On 3 mai, 12:20, Loic d'Anterroches <t...@users.sourceforge.net>
wrote:
register.php: Ce fichier est inclu "include_once 'register.php';" au
moment du chargement de Plume. Cela permet d'enregistrer des
hooks/events/etc...
index.php: Nécessaire pour avoir une interaction dans le manageur. Par
exemple il n'est pas utilisé par le plugin antispam.
desc.xml: Pour la description dans la page tools.php
a+
loïc
J'avais pas bien compris l'utilité de register.php, alors si d'autre
personne comme moi cherchent de la doc. sur la création de plug'
Plume, voici ce que je peux ajouter pour mieux comprendre la structure
des plug'.
Le fichier register.php contenu dans les dossiers des plug' permet au
lancement de Plume, d'inclure tous les fichiers "register.php" présent
dans ces dossiers de plug'.
Ainsi, en mettant un seul ligne du genre
"include_once('functions.monPlug.php');", on pourra avoir accès aux
fonctions (ou class au choix) de notre plug'
Par exemple pour celui que je suis en train de mettre en place, je
charge le fichier functions.ecm.php qui contient les class "public"
qui seront utilisées au seins des gabarits (j'ai mis public entre
guillemets pour ne pas trop mélanger avec les concepts fondamentaux de
la P.O.O.).
J'ai un autre fichier au même niveau que ce fichier de fonctions
"public" : class.ecm.php.
Celui-ci contient toutes les classes utilisées uniquement pour la
gestion du plug' (au niveau du manager, partie "outils". Bien
évidemment, mon fichier de fonctions dites public peut tout à fait
réutiliser les class de mon plug, mais les utilisateurs n'auront accès
qu'aux fonctions "light" (entendez par là, simplifiée) de mon plug-
in : un appel de fonction avec le minimum de paramètre, tout en
permettant un maximum de personnalisation.
Le mieux que je vous conseille pour mieux comprendre la structure des
plug-ins est encore de vous plonger dedans, de regarder comment c'est
fait et d'essayer d'en faire un (le bon vieux 'Hello World' est tjs
d'actualité).
Vu que tu es en plein dans les plugins et que... moi aussi :-), j'ose
poser mes question ici ?
J'essaie ( j'ai bien dit j'essaie !) de faire un plugin gérant des
métadonnées ajoutées aux ressources (en me basant sur le plugin
métadonnées de dotclear). Je suis pas un as de la prog, alors ça va
peut-être mettre un peu de temps avant que je le finisse (eh oui, je
suis encore étudiant et j'ai des examens à préparer aussi :-S).
Voilà, alors moi j'aurai voulu savoir s'il existe des fonctions
analogues à pxGetLastResources, pxLastResTitle, et compagnies que l'on
peut utiliser dans un plugin pour avoir accès aux ressources.
En plus résumé, j'ai besoin d'une fonction permettant de lister les
ressources sur ma page.
Savez-vous ou est-ce que je dois regarder pour pouvoir trouver ça ?
Nicolas
Bonne chance pour ton dév et à bientôt.
loïc m.