problem de plugin en developpement

Support et assistance pour développer des extensions ou pour modifier Joomla! 1.0.x

Moderators: sarki, Aidan38

Forum rules
Règles du forum
Locked
bigbabou
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Fri Sep 15, 2006 3:02 pm

problem de plugin en developpement

Post by bigbabou » Fri Sep 26, 2008 2:18 am

bonjour,

dans un plugin je souhaiterai réaliser la chose suivante : remplacer le tag mon {tag} mon texte{/tag} par une image <img src="..."/> qui serait généré à la volée.

j'ai donc fait un plugin avec le code suivant dans la fonction appelé avec chaque détection de tag.

Code: Select all


     $text ='la ya du text mais pourquoi ici et pas la bas';
     $s =11;
     $font = "./futura.ttf"; // a remplacer par votre police
     $size = imagettfbbox($s,0,$font,$text);
		
	 
	 
     $dx = abs($size[2]-$size[0]);
     $dy = abs($size[5]-$size[3]);
     $xpad=9;
     $ypad=9;
     $im = imagecreate($dx+$xpad,$dy+$ypad);
    
     $white = ImageColorAllocate($im, 255,255,255);
     $black = ImageColorAllocate($im, 0,0,0);
     imagettftext($im, $s, 0, (int)($xpad/2), $dy+(int)($ypad/2)-1, $black, $font, $text);
    
	
     ImagePNG($im, "monimage.png"); 
     ImageDestroy($im);

et bizarrement quand je le place dans un fichier php à part il fonctionne coorectement (il créé bien l'image sur le serveur) mais quand je le fait via le mambot. aucun fichier n'est créé.

je me dis que c'est peut être une histoire de droit mais le fichier de mon plugin à pourtant le meme chmod que le fichier php que j'ai créé pour mon test et qui lui fonctionne.

Je me demande alors si les mambots ne sont pas limité en droit sur les actions. Pour info je suis sur joomal 1.0.15.

quelqu'un a t'il rencontrer un probleme simiaire ? merci !

User avatar
ouly
Joomla! Ace
Joomla! Ace
Posts: 1074
Joined: Sun Aug 21, 2005 9:18 pm
Contact:

Re: problem de plugin en developpement

Post by ouly » Sat Sep 27, 2008 2:41 pm

Bonjour bigbabou,
Etes-vous sûr que le plugin s'exécute correctement ? Est-ce que la pseudo-balise est correctement remplacée ?

Avec le code suivant vous allez sauvegarder l'image à un emplacement relatif, il est préféreable d'utiliser un dossier précis comme le dossier média de Joomla! ceci afin de vous assurer que le plugin ait toujours la possibilité de créer/écrire dans un fichier.

Autre remarque, avez-vous prévu la génération de noms pour les images ? Ainsi qu'un "ramasse-miettes" (garbage collector) supprimant les images générées devenues obsolètes ?

ouly

bigbabou
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Fri Sep 15, 2006 3:02 pm

Re: problem de plugin en developpement

Post by bigbabou » Sat Sep 27, 2008 4:37 pm

déjà merci de m'avoir répondu.

En fait tout le cela est prévu mais pour l'instant dès le départ ça bloque. Le mambot s'exécute bien il n'y a pas de souci je passe bien dans la méthode de remplacement mais le php à un comportement un peu bizarre en fait.
le code que j'ai posté précédemment me génère bien une image dans le cas ou j'appele directement le fichier danslequel je l'ai placé. Mais si je met le même code dans ma fonction de replacement dans le mambot ça ne fait rien. Enfin si je peux faire des echo sans problème (je rentre donc bien dans la fonction) mais par exemple si j'essaye d'afficher la valeur retourner dans la variable $size qui doit contenir un tableau, elle est vide.

Bref je ne comprend pas pourquoi dans un fichier à part ça fonctionne et pas dans le fichier du mambot. Joomla fait un truc special pour les mambots.

Après je sais que je suis pas parti de zéro mais d'un autre mambot pour démarrer. j'avais vu un tuto sur les mambots avec les fichiers vierges pour joomla 1.0 mais pas moyen de remettre la main dessus ...

merci de têtre penché sur mon problème

User avatar
ouly
Joomla! Ace
Joomla! Ace
Posts: 1074
Joined: Sun Aug 21, 2005 9:18 pm
Contact:

Re: problem de plugin en developpement

Post by ouly » Wed Oct 01, 2008 3:36 pm

A nouveau pour la police il s'agit d'un chemin relatif et non absolu. Il est préféreable d'utiliser un chemin absolu afin de ne pas dépendre du répertoire de travail courant.

Code: Select all

$font = $mainframe->getCfg( 'absolute_path' ) . '/media/futura.ttf'; // Par exemple...

bigbabou
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Fri Sep 15, 2006 3:02 pm

Re: problem de plugin en developpement

Post by bigbabou » Wed Oct 01, 2008 11:32 pm

hello,

J'ai essayé aussi avec un chemin absolu mais sans succès. Cela dis je ne comprends pas trop cette différence de comportement entre le code en tant que mambot et le code simple. Plus ça va plus je me dirige vers un souci d'hébergeur qui est infomaniak.

je ne sais pas si tu l'as déjà utilisé mais ils ont un système droit un peu bizarre. le problème c'est que qd tu upload ton site que t'as fait en local avec l'utilsiateur FTP, par exemple sys_admin, celui-ci n'a pas les droits en écriture dans les répertoires. Par contre si tu installes un composant via l'admin du site, les fichiers ont httpd comme propriétaire (ce doit être l'utilisateur sous lequel tourne php) et là il n'y a pas de souci.

Par rapport à ces remarques je me demande si ce n'est pas un problème de droit d'accès à certaines fonction, pour des scripts qui n'ont pas httpd comme propriétaire. Est ce que qu'un fichier qui a pour propriétaire sys_admin qui inclus un autre script poserait problème aussi ?

Enfin bref je ne sais pas si je suis très clair mais là je suis un peu en panne sur la solution à mon problème.

User avatar
ouly
Joomla! Ace
Joomla! Ace
Posts: 1074
Joined: Sun Aug 21, 2005 9:18 pm
Contact:

Re: problem de plugin en developpement

Post by ouly » Thu Oct 02, 2008 3:37 pm

Une fois le fichier inclu, il n'y a pas de raisons que PHP fasse une différence entre fichiers appartenant à l'utilisateur par lequel est exécuté l'application et les autres. Donc s'il y avait un problème de permissions liées aux fichiers, PHP l'aurait signalé au moment de l'inclusion/accès au fichier.

Maintenant pour revenir à la différence entre code autonome et extension, la principale différence qui pourrait poser problème dans le cas présent est le répertoire de travail. Un répertoire de travail est associé à chaque application (et pour PHP également). Ce répertoire de travail est fixé au démarrage de l'application, soit par le dossier dans lequel se trouve l'application (dans le cas de l'application PHP Joomla!, cela signifie donc le dossier où se trouve le fichier d'entrée index.php), soit par un paramètre indiqué lors du lancement de l'application (en tout cas pour les applis Windows). Lors de l'exécution de l'application, celle-ci peut modifier ce répertoire de travail.

Lorsque l'on développe une extension, il est préféreable de ne pas compter sur ce répertoire de travail pour l'inclusion et l'accès aux fichiers car il pourrait potentiellement changé par une autre extension. Donc de toute façon il est impératif d'utiliser un chemin d'accès absolu, chemin d'accès absolu pouvant être relatif au dossier du script courant (ex: dirname(__FILE__) . '/fichier.tmp' ).

Pour revenir au problème :
- Vérifiez que le chemin vers le fichier futura.ttf est juste (et absolu)
- Monter le niveau de report d'erreurs au maximum. Des informations supplémentaires seront peut-être retournées (par exemple la raison pour laquelle $size est nulle).
- Si possible, poster l'intégralité du code du plugin


Locked

Return to “1.0 - Développement”