Browse Source

Reprise complète du critère a_venir du plugin Agenda

svn/attic/branches/V2/109924
peetdu@gmail.com 5 years ago
parent
commit
89212eee8c
  1. 2
      paquet.xml
  2. 15
      public/simplecal_boucles.php
  3. 72
      public/simplecal_criteres.php
  4. 20
      simplecal_fonctions.php

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="simplecal"
categorie="date"
version="2.2.3"
version="2.2.4"
etat="stable"
compatibilite="[3.0.0;3.1.*]"
logo="prive/themes/spip/images/evenement-32.png"

15
public/simplecal_boucles.php

@ -7,6 +7,10 @@
* cf. paquet.xml pour plus d'infos.
*/
if (!defined("_ECRIRE_INC_VERSION")) {
return;
}
// --------------------------------------
// COMPATIBILITE PLUGIN ACCES RESTREINT
// --------------------------------------
@ -18,13 +22,14 @@
* @param unknown_type $boucles
* @param unknown_type $crit
*/
if (!function_exists('critere_tout_voir_dist')){
if (!function_exists('critere_tout_voir_dist')) {
function critere_tout_voir_dist($idb, &$boucles, $crit) {
$boucle = &$boucles[$idb];
$boucle->modificateur['tout_voir'] = true;
}
}
function simplecal_pre_boucle(&$boucle){
function simplecal_pre_boucle(&$boucle) {
if (!isset($boucle->modificateur['tout_voir'])){
$securise = false;
@ -56,8 +61,4 @@ function simplecal_pre_boucle(&$boucle){
}
}
return $boucle;
}
?>
}

72
public/simplecal_criteres.php

@ -1,13 +1,18 @@
<?php
/**
* Plugin Simple Calendrier v2 pour SPIP 3
* Licence GNU/GPL
* 2010-2016
* 2010-2018
*
* cf. paquet.xml pour plus d'infos.
*/
if (!defined("_ECRIRE_INC_VERSION")) {
return;
}
/**
* Critere {a_venir}
*
@ -17,25 +22,35 @@
*/
function critere_a_venir_dist($idb, &$boucles, $crit) {
$boucle = &$boucles[$idb];
$table = $boucle->id_table;
$not = $crit->not;
$horaire_actif = lire_config('simplecal_horaire');
if ($horaire_actif == 'oui') {
$c = array("'OR'",
array("'>='", "'$table.date_debut'", "sql_quote(date('Y-m-d H:i:s'))"),
array("'>='", "'$table.date_fin'", "sql_quote(date('Y-m-d H:i:s'))"));
}
else {
$c = array("'OR'",
array("'>='", "'$table.date_debut'", "sql_quote(date('Y-m-d'))"),
array("'>='", "'$table.date_fin'", "sql_quote(date('Y-m-d'))"));
$id_table = $boucle->id_table;
$_dateref = time_calculer_date_reference($idb, $boucles, $crit);
$_date = "$id_table.date_debut";
$op = $crit->not ? '<=' : '>';
// si on ne sait pas si les heures comptent, on utilise toute la journee.
// sinon, on s'appuie sur le champ 'horaire=oui'
// pour savoir si les dates utilisent les heures ou pas.
$where_futur_sans_heure =
array("'$op'", "'$_date'", "sql_quote(date('Y-m-d 23:59:59', strtotime($_dateref)))");
if (array_key_exists('horaire', $boucle->show['field'])) {
$where =
array("'OR'",
array("'AND'",
array("'='", "'horaire'", "sql_quote('oui')"),
array("'$op'","'$_date'","sql_quote($_dateref)")
),
array("'AND'",
array("'!='", "'horaire'", "sql_quote('oui')"),
$where_futur_sans_heure
)
);
} else {
$where = $where_futur_sans_heure;
}
// Inversion de la condition ?
$c = ($not ? array("'NOT'", $c) : $c);
$boucle->where[] = $c;
$boucle->where[] = $where;
}
/**
@ -175,4 +190,21 @@ function critere_simplecalperiode_dist($idb, &$boucles, $crit) {
$boucle->where[] = $c;
}
?>
/**
* Fonction privee pour mutualiser de code des criteres_evenement_*
* Retourne le code php pour obtenir la date de reference de comparaison
* des evenements a trouver
*
* @param string $idb
* @param object $boucles
* @param object $crit
*
* @return string code PHP concernant la date.
**/
function time_calculer_date_reference($idb, &$boucles, $crit) {
if (isset($crit->param[0])) {
return calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
} else {
return "date('Y-m-d H:i:00')";
}
}

20
simplecal_fonctions.php

@ -7,8 +7,9 @@
* cf. paquet.xml pour plus d'infos.
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined("_ECRIRE_INC_VERSION")) {
return;
}
// boucles
include_spip('public/simplecal_boucles');
@ -22,4 +23,17 @@ include_spip('balise/simplecal_dates');
// criteres
include_spip('public/simplecal_criteres');
?>
/**
* Ajout d'un offset a une date
*
* @param string $date
* @param int $secondes
* peut etre une expression math : 24*60*60
* @param string $format
* format de sortie de la date
* @return string
*/
function time_dateplus($date, $secondes, $format = 'Y-m-d H:i:s') {
$date = strtotime($date)+eval("return $secondes;"); // permet de passer une expression
return date($format, $date);
}

Loading…
Cancel
Save