41 lines
1.1 KiB
PHP
Executable File
41 lines
1.1 KiB
PHP
Executable File
<?php
|
|
if (!defined("_ECRIRE_INC_VERSION")) return;
|
|
|
|
/* reprise d'une fonction du plugin Agenda
|
|
* renommee pour eviter plantage
|
|
https://zone.spip.org/trac/spip-zone/browser/_plugins_/agenda/trunk/agenda_fonctions.php#L32
|
|
*/
|
|
/**
|
|
* decale les mois de la date.
|
|
* cette fonction peut raboter le jour si le nouveau mois ne les contient pas
|
|
* exemple 31/01/2007 + 1 mois => 28/02/2007
|
|
*
|
|
* @param string $date
|
|
* @param int $decalage
|
|
* @param string $format
|
|
* @return string
|
|
*/
|
|
function baz_moisdecal($date, $decalage, $format = 'Y-m-d H:i:s') {
|
|
include_spip('inc/filtres');
|
|
$date_array = recup_date($date);
|
|
if ($date_array) {
|
|
list($annee, $mois, $jour) = $date_array;
|
|
}
|
|
if (!$jour) {
|
|
$jour = 1;
|
|
}
|
|
if (!$mois) {
|
|
$mois = 1;
|
|
}
|
|
$mois2 = $mois + $decalage;
|
|
$date2 = mktime(1, 1, 1, $mois2, $jour, $annee);
|
|
// mois normalement attendu
|
|
$mois3 = date('m', mktime(1, 1, 1, $mois2, 1, $annee));
|
|
// et si le mois de la nouvelle date a moins de jours...
|
|
$mois2 = date('m', $date2);
|
|
if ($mois2 - $mois3) {
|
|
$date2 = mktime(1, 1, 1, $mois2, 0, $annee);
|
|
}
|
|
return date($format, $date2);
|
|
}
|