THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Fonctions perso et plugins

(18-07-2007 16:27:41)


Hello,

Avec la 1.2.2 j'utilisai des fonctions persos de ce genre:

$rec = str_replace("#MAIL_PRODREF", $_GET['prod'], $rec);

Par contre là si j'ai bien compris il faut le faire sous forme de plugin. Quelqu'un pourrait me guider car je ne vois vraiment pas comment faire, et ce que j'ai pu faire jusqu'à présent ne fonctionne pas. D'avance merci

  • yoan
  • Cofondateur Thelia

Offline


dans ton cas je developperai un plugin. Substiperso par ex.

Tu te crées un répertoire substiperso contenant un fichier Substiperso.class.php qui contient

<?php

	include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsClassiques.class.php");
	
	
	class Substitperso extends PluginsClassiques{
		
		
		function Substitperso(){
			$this->PluginsClassiques();	
		}

		function init(){
		

		}

		function destroy(){
		
		}		

		function action(){
			
			global $res;
			
			$res = str_replace("#MAIL_PRODREF", $_GET['prod'], $res);
			
			return $res;
			
		}
		
	}


?>

Tu déplaces le rep dans client/plugins et tu l'actives dans l'admin.
C'est clair que pour un ptit truc comme ça, ça doit te paraitre plus lourd mais c'est bien plus puissant.


http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

Offline


Ah bah c'est ce que j'avais fais en étant parti des exemple sur le wiki.
Par contre je ne savais pas qu'il fallait activer dans la partie admin ... Arghh le boulet ...
Dans tous les cas merci, mais ne te sens pas obligé de répondre à toutes mes questions à cause de cette carte hein wink

  • yoan
  • Cofondateur Thelia

Offline


Lol non mais bon ça me parait normal de répondre à un maximum de question.
Je peux pas tjs mais j'essaie.


http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

Offline


Bon en fait j'ai un problème, aucun plugin n'apparait dans mon interface d'admin (la liste est vide). J'ai bien respecté les minuscles et majuscules tels que c'est expliqué sur le Wiki et j'ai betement pris ton exemple dans ce thread. Et benh pas moyen de faire apparaitre le plugin dans le but de l'activer. Si tu as une dernière piste je suis prenneur ...

Edit: voilà l'arborescence, je pense pas m'etre planté, j'ai également testé sur une install thelia 1.3 toute neuve

./client/plugins/substitperso/Substitperso.class.php

En fait là je viens d'installer le plugin commentaire et idem, il n'est pas listé donc impossible pour moi de l'activer. Je sais pas ce que j'ai pu faire mais j'suis maudit ...

Last edited by psai (18-07-2007 19:23:48)

Offline


tu l'as zippé dans un dossier à son nom ? c'est nécessaire pour l'installation depuis le BO.


Sinon, s'il est fonctionnel et que tu installes manuellement le dossier(non zippé) de ton plugin dans le dossier client/plugin/ , il devrait apparaitre automatiquement dans le BO.

Il y avait un petit detail qui m'avait embêté pendant un moment avec les anciens plugins,( ceci je n'ai pas approfondi pour en connaître la raison profonde, vu que j'ai trouvé où ça clochait...), mais , affiche tous les caractères dans ton éditeur  (j'utilise notepad+, c'est une des options) et compare la fin de ton plugin avec un plugin preéxistant, pour que ce soit parfaitement identique, ça pourrait venir de là...

Last edited by david49 (18-07-2007 19:43:16)

Offline


Là je viens de faire une install fraiche de thelia en 1.3.0
Base vierge, dossier vierge.
Je fais l'install de thelia via l'interface web, et une fois achevée, j'arrive sur l'interface d'admin. Je prend le zip du plugin commentaires, via l'interface web d'admin j'install ce plugin et ... rien, j'ai absolument rien hmm
Par contre le dossier est crée dans client/plugins/ et les fichiers sont bien présents dans ce dossier.
J'ai également fais l'install du plugin à la main, j'ai le même soucis. Là avec tout d'origine je ne comprend pas.

Pour info (même si je doute que ca puisse venir des versions):
PHP Version 4.4.4-8+etch1
Apache/2.2.3
mysql  Ver 14.12 Distrib 5.0.32

Last edited by psai (18-07-2007 19:40:41)

Offline


Alors là , je ne peux pas te dire, je suis sur php5...

Offline


Arghhh les boules !
Je viens de passer en php5 ( PHP Version 5.2.0-8+etch1 ) et ... je vois les plugins. Par contre là comme ca sur mon serveur de dev ca me gene pas d'etre en php5, mais sur mon serveur de prod je n'ai pas envie de tout revalidé, donc je souhaite resté en php4.
Par contre dans le dump fourni pour l'install de Thelia ( /instal/thelia.sql ) on peut y voir la version de php dans les premieres lignes :  Version de PHP: 4.3.10-16 (dumoins celle ou est exécutée PhpMyAdmin mais il y a de fortes chances que ca soit sur le même serveur)
Donc le systeme de plugins fonctionne avec php4, mais peut etre qu'il y a une config spéciale du php.ini ?
Là yoan, je crois que t'es le seul à pouvoir fournir une réponse ...

Last edited by psai (18-07-2007 20:00:41)

Offline


Bon je viens de repasser en php4. Dans l'interface d'admin je vois les plugins installés. Là je me dis c'est pas possible j'ai de la merde dans les yeux ?
Du coup je tente d'installer un autre plugin (ceux proposé sur le site dans contributions) et ... il s'installe, mais n'apparait pas dans la liste de plugin a activer/desactiver.
La config de mon php.ini est une config par defaut Debian etch. J'y ai simplement activé l'extension mysql et reduit le temps d'execution maximum.

Offline


david49 wrote:

Il y avait un petit detail qui m'avait embêté pendant un moment avec les anciens plugins,( ceci je n'ai pas approfondi pour en connaître la raison profonde, vu que j'ai trouvé où ça clochait...), mais , affiche tous les caractères dans ton éditeur  (j'utilise notepad+, c'est une des options) et compare la fin de ton plugin avec un plugin preéxistant, pour que ce soit parfaitement identique, ça pourrait venir de là...

Je pense que je viens d'etre victime du même problème. En fait il faut que ?> soient les derniers caractères du fichier. Pas un espace, pas un saut de ligne supplémentaire.

Bon ca ne change rien au probleme de php4/php5. Du coup j'ai installé le plugin en étant sous php5. Je suis repassé à php4, le plugin est toujours visible et j'ai même la possibilité de l'activer/désactiver mais apparement ca ne change que le status, puisque d'un point de vue fonctionnement, mon plugin ne fonctionne pas.

Edit: je confirme, une fois passé en php5 le plugin fontionne

Last edited by psai (18-07-2007 20:28:05)

Offline


Another brick in the wall

J'ai passé tout l'après-midi à essayer d'installer un PluginsClassiques et à comprendre pourquoi ça ne fonctionnait pas.

En désespoir de cause j'ai regardé ce qui se passait dans admin/plugin.php à coup de echo "<!-- ".en_test."-->; et je fini pas tomber sur la ligne :

if(get_parent_class($tmpobj) != "PluginsClassiques") continue;

dont le test révèle que la fonction renvoie le nom de la class en minuscules et que le test n'est donc jamais vérifié !
J'ai donc remplacé PluginsClassiques par pluginsclassiques et bingo ça roule.

A voir selon les versions de cette saloperie de PHP

Offline


Ok je viens de faire la modif, je confirme. Apres le passage en minuscule de PluginsClassiques les plugins fonctionnent avec ma version de php (PHP Version 4.4.4-8+etch1).
Benh jhr, merci d'avoir passé ton apres midi dessus, ca m'aura évité bien des pertes de temps, puisque de toutes facon c'était au delà de mes capacités !
Thanks !

Offline


Just a hole in the brick ...

En fait ca marche oui et non smile

Là si j'essaye d'installer un plugin en php4 après la modif, il n'est toujours pas visible. Par contre le plugin installé quand j'étais en php5 est visible, je peux l'activer/desactiver (en php4) et toujours apres la modif de jhr, l'activation ou désactivation sont effectives.
Je sais pas si je suis très clair ...

(au fait merci, ca faisait longtemps que je l'avais plus écouté cet album de Pink Floyd big_smile)

Edit: Bon je racconte de la merde ... Je suis fatigué, je vais attendre un peu avant de poster ce soir ...
Donc le passage en miniscule regle effectivement le soucis chez moi d'installation et d'affichage des plugin dans la partie admin. Par contre, pas moyen de les faire fonctionner.
De plus, si je supprime un plugin du repertoire, il est toujours visible dans la partie admin.

Désolé racconter autre chose toutes les 5 minutes

Last edited by psai (18-07-2007 21:04:28)

Offline


T'inquiète pas, c'est vrai que parfois , quand ça cale ou que ça marche enfin après des plombes de galère, on devient un peu fébrile. C'est le double effet Thelia... J'ai aussi du mal à faire des pauses...

Et je confirme que PHP a des interprétation folkloriques suivant l'installation(même avec des .ini identiques...)

  • yoan
  • Cofondateur Thelia

Offline


un php 4.4 renvoie le nom en minuscule même si la class est en maj c'est ça ?


http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

  • yoan
  • Cofondateur Thelia

Offline


Merci pour l'info les gars, ça j'avoue qu'il fallait tomber dessus.
Voici mon test

<?php
        class Truc{

                function Truc(){
                        echo "classe : " .  get_class($this);

                }
        }

        $toto = new Truc();
?>

Je copie ça sur un 1er serveur
php -v
PHP 4.3.8

php arf.php
Content-type: text/html
X-Powered-By: PHP/4.3.8

classe : truc


2ème serveur
php -v
PHP 5.2.0-8+etch1

php arf.php

classe : Truc


Le retour est donc différent, j'arrange ça. Je vais vérifier le nom après l'avoir mis en minuscule comme ça les plugins restent valident et la détection sera faite.


http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

Offline


Là je ne saurai pas te dire. Si tu peux me détailler les tests à faire je pourrai peut etre apporter cette réponse.

Edit: Nos post viennent de se croiser. Etant donné que je suis un poisseux, ne t'inquiete pas j'en découvrirai d'autre des bugs j'en reste persuadé smile

Last edited by psai (19-07-2007 08:20:52)

Offline


Soyons prudent !

sur la version d'easyPHP que j'utilise, donc avec PHP 4.3.10, effectivement la fonction getparentclass renvoie le nom de la classe en minuscule mais apparement ce n'est pas le cas pour toutes les versions de PHP.
Il faudrait sans doute utiliser strtolower(getparentclass( etc...)) avec évidemment un perte d'information.

C'est un gros problème de php car un certaines fonctions seraient sensibles à la casse et d'autres non et qu'en plus celà changerait selon les versions sans être documenté nulle part (essayer avec preg_replace())

P.S. Je relisais pour m'endormir PHP5 avancé au chapitre gestion des objets et je me demandais si certains problèmes d'utilisateur de provenaient pas de la manière dont PHP4 et PHP5 gère la transmission des objets (par copie en PHP4 et par référence en PHP5)

Last edited by jhr (19-07-2007 08:31:58)

  • yoan
  • Cofondateur Thelia

Offline


Mias je suis d'accord pour le strtolower, c'est ce que je viens de faire.
Je strtolower le get_parent_class et je regarde le résultat en minuscule.
On aura pas de soucis.


http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

  • yoan
  • Cofondateur Thelia

Offline


Il va falloir migrer smile
http://linuxfr.org/2007/07/19/22752.html


http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

Offline


Doit on en conclure que ca ne sera pas corrigé  et que la solution est de passer en php5 ?

Last edited by psai (19-07-2007 11:51:06)

  • yoan
  • Cofondateur Thelia

Offline


Non non, j'ai mis en ligne la 1.3.1 ce matin et j'utilise un strtolower pour comparer en minuscule.


http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

Offline


Impeccable, tout marche à merveille ! Merci

Offline


Quand est-ce que les plugins sont appellé ?

Je m'explique:

Est-ce que je peux faire

$res = str_replace("#MAIL_PRODPRIX", "Ce produit coute #PRIX" , $res);

à l'interièur d'un boucle PRODUIT, et le #PRIX et remplacé plus tard? C'est à dire, est-ce que les str_replace() des plugins sont executé avant ou après les str_replace() dans fonctions/boucles.php ?

Merci d'avance,
Andreas

Last edited by eSquat (06-08-2007 10:42:27)