Bonjour,
je génère par scénario un certain nombre de tâches différées (blocs DANS).
Voici le détail d’une de ces tâches:
Ce que je souhaite faire, c’est récupérer par bloc code les tâches qui contiennent en option les tags #piece # avec la valeur ‹ SAM › par exemple.`
J’ai trouvé sur le community une expression php qui semble convenir :
$crons = cron::searchClassAndFunction('scenario', 'doIn', xxxxxxxxxx)));
mais je sèche complètement pour trouver la fin correcte de l’expression.
Merci d’avance si quelqu’un peut aider.
Dominique
pour info, on trouve ça dans la classe cron:
/**
* Return cron object corresponding to parameters
* @param string $_class
* @param string $_function
* @param string $_option
* @return object
*/
public static function byClassAndFunction($_class, $_function, $_option = '') {
$value = array(
'class' => $_class,
'function' => $_function,
);
$sql = 'SELECT ' . DB::buildField(__CLASS__) . '
FROM cron
WHERE class=:class
AND `function`=:function';
if ($_option != '') {
$_option = json_encode($_option, JSON_UNESCAPED_UNICODE);
$value['option'] = $_option;
$sql .= ' AND `option`=:option';
}
return DB::Prepare($sql, $value, DB::FETCH_TYPE_ROW, PDO::FETCH_CLASS, __CLASS__);
}
jpty
Mars 6, 2024, 3:59
2
Bonjour,
array("#piece#" => "SAM")
A vérifier avec:
$crons = cron::searchClassAndFunction('scenario','doIn',array("#piece#" => "SAM"));
foreach($crons as $cron) {
$scenario->SetLog(print_r($cron,true));
}
La doc citée dans votre post n’est pas celle de la fonction utilisée.
Voir:
public static function searchClassAndFunction($_class, $_function, $_option = '') {
$value = array(
'class' => $_class,
'function' => $_function,
);
$sql = 'SELECT ' . DB::buildField(__CLASS__) . '
FROM cron
WHERE class=:class
AND `function`=:function';
if ($_option != '') {
if(is_array($_option)){
$value['option'] = json_encode($_option);
$sql .= ' AND JSON_CONTAINS(option,:option)';
}else{
$value['option'] = '%' . $_option . '%';
$sql .= ' AND `option` LIKE :option';
}
}
return DB::Prepare($sql, $value, DB::FETCH_TYPE_ALL, PDO::FETCH_CLASS, __CLASS__);
}
ou
'"#piece#":"SAM"'
1 « J'aime »
Merci @jpty , c’est ta deuxième proposition qui est la bonne.
$crons = cron::searchClassAndFunction('scenario', 'doIn', '"#piece#":"SAM"');
J’avais testé de nombreuses combinaisons, en fait pas besoin de ‹ array ›.
jpty
Mars 6, 2024, 5:29
4
J’ai vérifié, les 2 fonctionnent.
Perso, je préfère avec array qui est plus souple. L’option aurait pu être écrite "#piece#" : "SAM"
Avec la 2ème, c’est une simple recherche du texte dans le champ option.
system
A fermé ce sujet ()
Mars 7, 2024, 5:29
5
Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.