You are not logged in.
Ce serait très pratique pour les marque-pages.
Actuellement, il n'est pas possible non plus de définir des jours relatifs à aujourd'hui, car actuellement il n'y a que la syntaxe type >-1 qui est résolue à > ADDDATE(NOW(), INTERVAL -1 MONTH )
Ce serait bien de pouvoir définir > NOW-1 qui deviendrait > ADDATE(NOW(), INTERVAL -1 DAY)
En attendant, j'ai patché mon système comme suit:
--- glpi-0.78-orig/inc/search.class.php 2010-11-15 13:35:47.000000000 +0100
+++ glpi/inc/search.class.php 2010-12-16 11:45:07.000000000 +0100
@@ -2411,23 +2411,32 @@
$val=preg_replace($search,$replace,$val);
- if (preg_match("/([<>=]+)(.*)/",$val,$regs)) {
- if (is_numeric($regs[2])) {
+ if (preg_match("/([<>=]+)(NOW)(.*)/",$val,$regs)) {
+ if (is_numeric($regs[3])) {
return $link." $date_computation ".$regs[1]."
- ADDDATE(NOW(), INTERVAL ".$regs[2]." $search_unit) ";
+ ADDDATE(NOW(), INTERVAL ".$regs[3]." DAY ) ";
} else {
- // Reformat date if needed
- $regs[2]=preg_replace('@(\d{1,2})(-|/)(\d{1,2})(-|/)(\d{4})@','\5-\3-\1',$regs[2]);
- if (preg_match('/[0-9]{2,4}-[0-9]{1,2}-[0-9]{1,2}/',$regs[2])) {
- return $link." $date_computation ".$regs[1]." '".$regs[2]."'";
+ return "";
+ }
+ } else {
+ if (preg_match("/([<>=]+)(.*)/",$val,$regs)) {
+ if (is_numeric($regs[2])) {
+ return $link." $date_computation ".$regs[1]."
+ ADDDATE(NOW(), INTERVAL ".$regs[2]." $search_unit) ";
} else {
- return "";
+ // Reformat date if needed
+ $regs[2]=preg_replace('@(\d{1,2})(-|/)(\d{1,2})(-|/)(\d{4})@','\5-\3-\1',$regs[2]);
+ if (preg_match('/[0-9]{2,4}-[0-9]{1,2}-[0-9]{1,2}/',$regs[2])) {
+ return $link." $date_computation ".$regs[1]." '".$regs[2]."'";
+ } else {
+ return "";
+ }
}
+ } else { // standard search
+ // Date format modification if needed
+ $val=preg_replace('@(\d{1,2})(-|/)(\d{1,2})(-|/)(\d{4})@','\5-\3-\1',$val);
+ return makeTextCriteria($date_computation,$val,$nott,$link);
}
- } else { // standard search
- // Date format modification if needed
- $val=preg_replace('@(\d{1,2})(-|/)(\d{1,2})(-|/)(\d{4})@','\5-\3-\1',$val);
- return makeTextCriteria($date_computation,$val,$nott,$link);
}
break;
case "right" :
Explication: si le champ contient une valeur de type OPERATEUR suivi du mot "NOW", suivi d'un nombre, il convertit la recherche en jours relatifs à aujourd'hui. C'est vraiment un hack très rapide pour qui a besoin d'une chose similaire. Mais il faudrait vraiment se poser la question si une syntaxe plus générique ne devrait pas être créée, genre:
- Suggestion de Remi sur IRC: accepter une syntaxe genre 1D, 1W, 1M, mais il y a le problème de la localisation
- Suggestion de moi-même: "NOW - 0000-00-01" pour hier, NOW - 0000-01-00 pour le mois passé etc... Pas de problème de localisation alors, c'est un peu "complexe" mais nettement plus transparent et plus flexible que la solution actuelle.
Working environment: Fedora 22, GLPI 0.90.1, upgraded from 0.72.0, 0.78, 0.83 PHP/5.6.16, MySQL/10.0.21-MariaDB, Apache/2.4.17, Firefox 43
Transifex: https://www.transifex.com/accounts/profile/eiseli/
Offline
Note: Ce workaround n'est que nécessaire pour la 0.78. Dès la 0.80, ce problème est corrigé par
https://forge.indepnet.net/issues/2224
et https://forge.indepnet.net/issues/2197
Working environment: Fedora 22, GLPI 0.90.1, upgraded from 0.72.0, 0.78, 0.83 PHP/5.6.16, MySQL/10.0.21-MariaDB, Apache/2.4.17, Firefox 43
Transifex: https://www.transifex.com/accounts/profile/eiseli/
Offline