krismb Posted January 22, 2014 Share Posted January 22, 2014 (edited) Bonjour, J'ai écrit un module de copie d'image qui fonctionne. Je vais dans le module, j'ai un champs qui donne le nombre d'images à copier et je clique enregistrer et il me fait ce que je voulais. Maintenant je cherche à lancer ce module sans authentification pour que je puisse le mettre dans un cron. Bref le lancer avec un url depuis un navigateur. http://www.monsite.com/modules/monmodule.php mais après il doit avoir quelque chose pour lancer la fonction getContent() Il y a juste un truc qui m'échape. Dans l'url il faut ajouter peut être une clé. Bref ou trouver de l'aide à ce sujet. Edited January 22, 2014 by krismb (see edit history) Link to comment Share on other sites More sharing options...
SleT Posted January 23, 2014 Share Posted January 23, 2014 En déportant le traitement de ton module dans une classe PHP tu pourrais l'appeler simplement depuis l’extérieur non? Link to comment Share on other sites More sharing options...
livindeadfr Posted January 23, 2014 Share Posted January 23, 2014 Bonjour, Voila 4 suggestions : créer un initCron.php que tu appels en entete des cron pour charger le context prestashop. Avec le codage MVC, il doit y avoir le moyen de créer un controller cron et de créer des actions selon les taches que tu veux faire. Passer par le webservice et mettre en place un hook ou une api supplémentaire pour ton module. Sinon au pire, tu peux lancer ton cron avec wget http://tonsite/modules/tonmodule.php ++ Link to comment Share on other sites More sharing options...
krismb Posted January 24, 2014 Author Share Posted January 24, 2014 Sinon au pire, tu peux lancer ton cron avec wget http://tonsite/modules/tonmodule.php ++ Voila justement je n'arrive pas à lancer mon module par un simple lien http. Si je parviendrais à cela, je pourrais après automatiser la chose, mais je sais uniquement le lancer par le bouton save du module. Si je copie le lien de ce bouton et que je le lance, il me demande une authentification. Link to comment Share on other sites More sharing options...
krismb Posted January 24, 2014 Author Share Posted January 24, 2014 En déportant le traitement de ton module dans une classe PHP tu pourrais l'appeler simplement depuis l’extérieur non? Peux tu m'en dire plus J'ai mis tout mon traitement dans la fonction public function getContent() { ... } Link to comment Share on other sites More sharing options...
livindeadfr Posted January 24, 2014 Share Posted January 24, 2014 Si je me trompe pas getContent est utilisé dans l'onglet module pour afficher les paramètres de configuration du module. Et donc par conséquent il vérifie avant que tu es bien logué dans l'admin. Dans ton cas, ou tu trouve un hook (parmit les hook du front) qui te permet d'appeler directement. ou tu créer une méthode "cron" par exemple pour ton traitement, que tu appel à partir d'un autre fichier qui va instancier la classe de ton module et appeler cette méthode. Bon ok ça reviens à ce que je te disais de créer un fichier et d'instancier le contexte. Sinon à partir d'une surcharge du frontcontroller tu dois pouvoir aussi arrivé au même résultat de manière plus propre. ++ Link to comment Share on other sites More sharing options...
coeos.pro Posted January 24, 2014 Share Posted January 24, 2014 Peux tu m'en dire plus J'ai mis tout mon traitement dans la fonction public function getContent() { ... } perso je sortirais le code de traitement de cette fonction getContent, je le mettrais dans un fichier php à part (http://tonsite/modules/copy_images.php) et depuis le module il serais appelé en ajax et sinon il s’exécuterait automatiquement en allant sur http://tonsite/modules/copy_images.php 1 Link to comment Share on other sites More sharing options...
krismb Posted January 27, 2014 Author Share Posted January 27, 2014 J'ai commencé à copier un source trtimagescron.php dans mon module mais quand je fait http://www.monsite.com/modules/trtimage/trtimagescron.php j'arrive sur la page d'accueil. Je crois qu'il me faut un exemple car j'ai l'impression d'être un débutant Link to comment Share on other sites More sharing options...
krismb Posted January 28, 2014 Author Share Posted January 28, 2014 Dans mon source quand j'ajoute la première ligne include(dirname(__FILE__).'/../../config/config.inc.php'); mon echo 'test'; sur la ligne suivante n'est pas affiché ... il ne continue pas plus loin il me redirige sur la page d'accueil. J'a pris exemple sur le module followup il y a un fichier cron.php include(dirname(__FILE__).'/../../config/config.inc.php');include(dirname(__FILE__).'/followup.php');if (isset($_GET['secure_key'])){ $secureKey = Configuration::get('PS_FOLLOWUP_SECURE_KEY'); if (!empty($secureKey) AND $secureKey === $_GET['secure_key']) { $followup = new Followup(); if ($followup->active) $followup->cronTask(); }} Link to comment Share on other sites More sharing options...
coeos.pro Posted January 28, 2014 Share Posted January 28, 2014 commence ton fichier ajax par : <?php include(dirname(__FILE__).'/../../config/config.inc.php'); require_once(dirname(__FILE__).'/../../init.php'); echo 'test'; pour voir Link to comment Share on other sites More sharing options...
krismb Posted January 29, 2014 Author Share Posted January 29, 2014 C'est pareil, il me redirige sur la page d'accueil sans afficher 'test' Link to comment Share on other sites More sharing options...
livindeadfr Posted January 29, 2014 Share Posted January 29, 2014 Voila ce que j'utilise : <?php /******************** * Configuration ********************/ ini_set('memory_limit','1.1G'); set_include_path(get_include_path().':/my/path/tocrondir/:/my/path/www/:'); //Constantes define ( 'PATH', '/my/path/www' ); define('_PS_BASE_URL_','http://mydomain.fr'); $cookie = new stdClass(); $cookie->id_lang=2; $cookie->id_customer=null; /******************** * Includes ********************/ include_once (PATH . '/config/config.inc.php'); include_once (PATH . '/config/settings.inc.php'); include_once (PATH . '/classes/db/Db.php'); include_once (PATH . '/images.inc.php'); bonne chance Link to comment Share on other sites More sharing options...
coeos.pro Posted January 29, 2014 Share Posted January 29, 2014 sinon change ton fichier complet par : <?php include(dirname(__FILE__).'/../../config/config.inc.php'); require_once(dirname(__FILE__).'/../../init.php'); xxx on va voir si ça génère bien une erreur ou si c'est une redirection htaccess ou autre. Link to comment Share on other sites More sharing options...
krismb Posted January 31, 2014 Author Share Posted January 31, 2014 Alors ce n'est pas .htaccess car j'ai renommer ce fichier en a.htaccess et il me redirige sur la même adresse mais il plante car il pointe sur le nom de ma boutique 1 www.monsite.com/boutique1/?secure_key=xxx Dés que je mets le ligne include(dirname(__FILE__).'/../../config/config.inc.php'); il ne va pas plus loin. Ce fichier fait beaucoup plus que je ne l'imaginais ! Link to comment Share on other sites More sharing options...
livindeadfr Posted January 31, 2014 Share Posted January 31, 2014 Bonjour krismb, Je viens d'avoir un problème similaire pour un appel ajax avec redirection sur la page d'authentification de l'admin. Cela est lié au système de sécurité de prestashop. En fait il faut que tu passe un token valid à l'url pour éviter cela. ++ Link to comment Share on other sites More sharing options...
krismb Posted February 3, 2014 Author Share Posted February 3, 2014 (edited) Je pense qu'on avance ... peut être ... livindeadfr peux tu m'en dire un peu plus J'ajoute à mon url ?secure_key=xxx et xxx est le token mais peut être je dois vérifier qu'il est bon ? J'ai pris exemple sur le module relancer les client modules/followup/cron.php?secure_key=xxx xxx étant mon une clé et j'ai pris la même chose. Je me suis mis à débuger et dans le config.inc.php les lignes qui me redirigent sont try{ $context->shop = Shop::initialize();}catch (PrestaShopException $e){ $e->displayMessage();} jusqu'à ces lignes tout se passent bien. Apparement shop::initialize manque quelque chose. Je précise que je suis en multishop si cela met sur la piste. ... Edited February 3, 2014 by krismb (see edit history) Link to comment Share on other sites More sharing options...
krismb Posted February 3, 2014 Author Share Posted February 3, 2014 En fait j'ai trouvé, J'avais deux boutique avec des liens virtuels http://www.site.com/boutique1 http://www.site.com/boutique2 Mais quand je lançais mon script, initialisation Shop::initialize(); cherchais l'url et pensais que c'était pas bon mon script avait l'url suivante http://www.site.com/modules/... Ce que j'ai fait j'ai supprimer l'url virtuelle pour la boutique 1 Et tout roule !!! Merci pour votre soutiens, je souhaite que mes recherches puissent être utile à d'autres. Je clôture le sujet. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now