Submitted by selinav on
Bonjour,
Pour mettre à jour les stocks de mes produits dans ubercart j'ai créé un fichier php qui récupère un fichier csv uploadé dans un répertoire effectue l'update de la base et efface le fichier après.
Etant donné que les stocks seront mis à jour toutes les 15mn, je ne peux pas planifié l'appel du fichier car mon hébergement me limite à 1 tâche par heure.
Donc voilà ce que j'ai fait :
- j'ai créé une variable dans la base qui m'indique la date de la dernière mise à jour
- je la récupère et je test si la date actuelle est supérieure à la prochaine mise à jour. Si oui je fait un include de mon fichier.
Voilà ce que j'ai mis dans mon page.tpl.php
<?php
$last_update=variable_get('oz_update_stock', 0);
$next_update=$last_update+900;
$now=mktime();
if($next_update<=$now){
global $base_url;
include ($base_url."/sites/all/themes/basic/import/import-polaris.php");
}
?>
Je rencontre 2 problèmes :
- la variable 'oz_update_stock' n'est pas récupérée, elle prend toujours la valeur par défaut, bien quelle soit renseignée dans la base.
- l'include est interdit, j'obtiens un message d'erreur suivant :
warning: require() [function.require]: URL file-access is disabled in the server configuration in ...\sites\all\themes\basic\page.tpl.php on line 184.
warning: require(http://oxford-boutique.localhost/sites/all/themes/basic/import/import-po...) [function.require]: failed to open stream: no suitable wrapper could be found in ...\sites\all\themes\basic\page.tpl.php on line 184.
Comment puis-je faire proprement pour mettre tout ça dans un module?
Dois-je faire un hook_nodeapi() avec un case 'view' où je mettrais ceci
Je ne sais pas trop comment m'y prendre.
MErci
Quelques remarques : mieux
Permalien Soumis par mdupont@drupal.org le 19 Juillet, 2011 - 09:46
Quelques remarques :
je n’ai pas utilisé le cron
Permalien Soumis par selinav le 19 Juillet, 2011 - 10:15
je n'ai pas utilisé le cron car je suis limitée à 1 cron par heure et j'ai besoin d'une mise à jour tous les 1/4h.
Finalement j'ai fait un module comme ceci
<?php
function maj_stock_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
switch ($op) {
case 'view':
if($node->type=='product'){
$last_update=variable_get('oz_update_stock', 0);
$next_update=$last_update+60;
$now=mktime();
if($next_update<=$now){
if(module_load_include('php', 'maj_stock', "import-polaris")===FALSE){
//erreur include fichier log
$logfile = $_SERVER['DOCUMENT_ROOT']."/sites/default/files/log_import_stock.txt";
$f_log = fopen("$logfile","a");
$date= date("d/m/Y, H:i");
$texte_log=$date." - Erreur include import polaris \n";
fwrite($f_log, $texte_log);
}
}
}
break;
}
}