/** * Recuperer les champs date_xx et heure_xx, verifier leur coherence et les reformater * * @param string $suffixe * @param bool $horaire * @param array $erreurs * @return int */ function verifier_corriger_date_saisie($suffixe, $horaire, &$erreurs) { include_spip('inc/filtres'); $date = _request("date_{$suffixe}") . ($horaire ? ' ' . trim(_request("heure_{$suffixe}")) . ':00' : ''); $date = recup_date($date); if (!$date) { return ''; } $ret = null; if (!($ret = mktime(0, 0, 0, $date[1], $date[2], $date[0]))) { $erreurs["date_{$suffixe}"] = _T('agenda:erreur_date'); } elseif (!($ret = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]))) { $erreurs["date_{$suffixe}"] = _T('agenda:erreur_heure'); } if ($ret) { if (trim(_request("date_{$suffixe}") !== ($d = date('d/m/Y', $ret)))) { $erreurs["date_{$suffixe}"] = _T('agenda:erreur_date_corrigee'); set_request("date_{$suffixe}", $d); } if ($horaire and trim(_request("heure_{$suffixe}") !== ($h = date('H:i', $ret)))) { $erreurs["heure_{$suffixe}"] = _T('agenda:erreur_heure_corrigee'); set_request("heure_{$suffixe}", $h); } } return $ret; }
/** * Insertion dans le pipeline formulaire_charger (SPIP) * * Chargement de la valeur du champ date_depublie du formulaire dater * * @param array $flux * @return array $flux */ function depublie_formulaire_charger($flux) { // si formulaire dater, charger les données des champs supplémentaires if ($flux['args']['form'] == 'dater') { $objet = $flux['data']['objet']; $id_objet = $flux['data']['id_objet']; $row = sql_fetsel("date_depublie,statut", "spip_depublies", "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet)); $possedeDateDepublie = false; if (isset($row['date_depublie']) and list($annee_depublie, $mois_depublie, $jour_depublie, $heure_depublie, $minute_depublie) = recup_date($row['date_depublie'], false)) { $possedeDateDepublie = true; // attention : les vrais dates de l'annee 1 sont stockee avec +9000 => 9001 // mais reviennent ici en annee 1 par recup_date // on verifie donc que le intval($row['date_depublie']) qui ressort l'annee // est bien lui aussi <=1 : dans ce cas c'est une date sql 'nulle' ou presque, selon // le gestionnnaire sql utilise (0001-01-01 pour PG par exemple) if (intval($row['date_depublie']) <= 1 and $annee_depublie <= 1 and $mois_depublie <= 1 and $jour_depublie <= 1) { $possedeDateDepublie = false; } } else { $annee_depublie = $mois_depublie = $jour_depublie = 0; $heure_depublie = $minute_depublie = 00; } // attention, si la variable s'appelle date ou date_depublie, le compilo va // la normaliser, ce qu'on ne veut pas ici. $flux['data']['afficher_date_depublie'] = $possedeDateDepublie ? $row['date_depublie'] : ''; $flux['data']['date_depublie_jour'] = dater_formater_saisie_jour($jour_depublie, $mois_depublie, $annee_depublie); $flux['data']['date_depublie_heure'] = "{$heure_depublie}:{$minute_depublie}"; $flux['data']['sans_depublie'] = !$possedeDateDepublie; } return $flux; }
function agenda_action_revision_evenement_repetitions($id_evenement,$repetitions="",$liste_mots=array()){ include_spip('inc/filtres'); $repetitions = preg_split(",[^0-9\-\/],",$repetitions); // gestion des repetitions $rep = array(); foreach($repetitions as $date){ if (strlen($date)){ $date = recup_date($date); if ($date=mktime(0,0,0,$date[1],$date[2],$date[0])) $rep[] = $date; } } agenda_action_update_repetitions($id_evenement, $rep, $liste_mots); }
function navigation_trouve_date($date, $nom_date, $pas, $query) { $debut = 0; if (!is_numeric($date)) { include_spip('inc/filtres'); list($a,$m,$j,$h,$n,$s) = recup_date($date); $date = mktime($h,$n,$s,$m ? $m : 1,$j ? $j : 1,$a); } $q = sql_select($query['SELECT'], $query['FROM'], $query['WHERE'], $query['GROUP BY'], $query['ORDER BY']); while ($r = sql_fetch($q)) { if ($r[$nom_date] <= $date) break; $debut++; } $debut -= ($debut%$pas); return $debut; }
/** * decale les jours de la date. * * @param string $date * @param int $decalage * @param string $format * @return string */ function agenda_jourdecal($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; } $jour2 = $jour + $decalage; $date2 = mktime(1, 1, 1, $mois, $jour2, $annee); return date($format, $date2); }
function Agenda_anneedecal($date, $decalage, $format) { 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; } $annee2 = $annee + $decalage; $date2 = mktime(1, 1, 1, $mois, $jour, $annee2); // mois normalement attendu $annee2 = date('Y', $date2); return date($format, $date2); }
/** * Syntaxe raccourcie du plugin * #CALENDRIER_MINI * #CALENDRIER_MINI{#SELF} * #CALENDRIER_MINI{#SELF,#URL_PAGE{calendrier_mini.json}} * * Syntaxe ancienne (ou plugin agenda) * #CALENDRIER_MINI{#ENV{date}} * #CALENDRIER_MINI{#ENV{date},date} * #CALENDRIER_MINI{#ENV{date},date,#SELF} * #CALENDRIER_MINI{#ENV{date},date,#SELF,#URL_PAGE{calendrier_mini.json}} * * Quand l'url json est explicitee dans les arguments, la collecte automatisee de id_rubrique, id_article et id_mot est desactivee * car dans ce cas il suffit simplement de les expliciter sur l'url json pour les prendre en compte * * @param string $date * date automatique collectee par VAR_DATE * @param int $id_rubrique * @param int $id_article * @param int $id_mot * @param null $self_or_date_or_nothing * @param null $urljson_or_var_date_or_nothing * @param null $self_or_nothing * @param null $urljson_or_nothing * @return array */ function balise_CALENDRIER_MINI_dyn($date, $id_rubrique = 0, $id_article = 0, $id_mot = 0, $self_or_date_or_nothing = null, $urljson_or_var_date_or_nothing = null, $self_or_nothing = null, $urljson_or_nothing = null) { $var_date = VAR_DATE; $url = null; $url_json = null; if (!is_null($self_or_date_or_nothing)) { // est-ce une date ou une url ? if (!function_exists('recup_date')) { include_spip('inc/filtres'); } if (!strlen($self_or_date_or_nothing) or preg_match(",^[\\d\\s:-]+\$,", $self_or_date_or_nothing) and list($annee, $mois, $jour, $heures, $minutes, $secondes) = recup_date($self_or_date_or_nothing) and $annee) { // si c'est une date on est dans l'ancienne syntaxe $date = $self_or_date_or_nothing; $var_date = $urljson_or_var_date_or_nothing; $url = $self_or_nothing; $url_json = $urljson_or_nothing; } else { // sinon on est sur la nouvelle syntaxe $url = $self_or_date_or_nothing; $url_json = $urljson_or_var_date_or_nothing; } } $args = array('date' => $date ? $date : date('Y-m'), 'var_date' => $var_date, 'self' => $url ? $url : self()); // si pas de url_json explicite, la renseigner et peupler automatiquement les if (is_null($url_json)) { $url_json = generer_url_public("calendrier_mini.json"); if (!is_null($id_rubrique)) { $args['id_rubrique'] = $id_rubrique; } if (!is_null($id_article)) { $args['id_article'] = $id_article; } if (!is_null($id_mot)) { $args['id_mot'] = $id_mot; } } if (defined('_VAR_MODE') and _VAR_MODE == "recalcul") { $url_json = parametre_url($url_json, 'var_mode', 'recalcul'); } $args['urljson'] = $url_json; /* tenir compte de la langue, c'est pas de la tarte */ return array('formulaires/calendrier_mini', 3600, $args); }
function date_822($date_heure) { list($annee, $mois, $jour) = recup_date($date_heure); list($heures, $minutes, $secondes) = recup_heure($date_heure); $time = mktime($heures, $minutes, $secondes, $mois, $jour, $annee); return date('r', $time); }
function formulaires_editer_document_verifier_dist($id_document = 'new', $id_parent = '', $retour = '', $lier_trad = 0, $config_fonc = 'documents_edit_config', $row = array(), $hidden = '') { $erreurs = formulaires_editer_objet_verifier('document', $id_document, is_numeric($id_document) ? array() : array('titre')); // verifier l'upload si on a demande a changer le document if (_request('joindre_upload') or _request('joindre_ftp') or _request('joindre_distant')) { if (_request('copier_local')) { } else { $verifier = charger_fonction('verifier', 'formulaires/joindre_document'); $erreurs = array_merge($erreurs, $verifier($id_document)); } } // On ne vérifie la date que si on avait le droit de la modifier if (lire_config('documents_date') == 'oui') { if (!($date = recup_date(_request('saisie_date') . ' ' . _request('saisie_heure') . ':00')) or !($date = mktime($date[3], $date[4], 0, $date[1], $date[2], $date[0]))) { $erreurs['saisie_date'] = _T('medias:format_date_incorrect'); } else { set_request('saisie_date', date('d/m/Y', $date)); set_request('saisie_heure', date('H:i', $date)); set_request('date', date("Y-m-d H:i:s", $date)); } } return $erreurs; }
/** * Chargement du formulaire d'édition d'une date * * @param string $objet * Type d'objet * @param int $id_objet * Identifiant de l'objet * @param string $retour * URL de redirection après le traitement * @param array|string $options * Options. Si string, unserialize pour obtenir un tableau. * * - date_redac : Permet de modifier en plus la date de rédaction antérieure * @return array * Environnement du formulaire **/ function formulaires_dater_charger_dist($objet, $id_objet, $retour = '', $options = array()) { $objet = objet_type($objet); if (!$objet or !intval($id_objet)) { return false; } if (!is_array($options)) { $options = unserialize($options); } $_id_objet = id_table_objet($objet); $table = table_objet($objet); $trouver_table = charger_fonction('trouver_table', 'base'); $desc = $trouver_table($table); if (!$desc) { return false; } $champ_date = $desc['date'] ? $desc['date'] : 'date'; if (!isset($desc['field'][$champ_date])) { return false; } $valeurs = array('objet' => $objet, 'id_objet' => $id_objet, 'id' => $id_objet); $select = "{$champ_date} as date"; if (isset($desc['field']['date_redac'])) { $select .= ",date_redac"; } if (isset($desc['field']['statut'])) { $select .= ",statut"; } $row = sql_fetsel($select, $desc['table'], "{$_id_objet}=" . intval($id_objet)); $statut = isset($row['statut']) ? $row['statut'] : 'publie'; // pas de statut => publie $valeurs['editable'] = autoriser('dater', $objet, $id_objet, null, array('statut' => $statut)); $possedeDateRedac = false; if (isset($row['date_redac']) and $regs = recup_date($row['date_redac'], false)) { $annee_redac = $regs[0]; $mois_redac = $regs[1]; $jour_redac = $regs[2]; $heure_redac = $regs[3]; $minute_redac = $regs[4]; $possedeDateRedac = true; // attention : les vrai dates de l'annee 1 sont stockee avec +9000 => 9001 // mais reviennent ici en annee 1 par recup_date // on verifie donc que le intval($row['date_redac']) qui ressort l'annee // est bien lui aussi <=1 : dans ce cas c'est une date sql 'nulle' ou presque, selon // le gestionnnaire sql utilise (0001-01-01 pour PG par exemple) if (intval($row['date_redac']) <= 1 and $annee_redac <= 1 and $mois_redac <= 1 and $jour_redac <= 1) { $possedeDateRedac = false; } } else { $annee_redac = $mois_redac = $jour_redac = $heure_redac = $minute_redac = 0; } if ($regs = recup_date($row['date'], false)) { $annee = $regs[0]; $mois = $regs[1]; $jour = $regs[2]; $heure = $regs[3]; $minute = $regs[4]; } // attention, si la variable s'appelle date ou date_redac, le compilo va // la normaliser, ce qu'on ne veut pas ici. $valeurs['afficher_date_redac'] = $possedeDateRedac ? $row['date_redac'] : ''; $valeurs['date_redac_jour'] = dater_formater_saisie_jour($jour_redac, $mois_redac, $annee_redac); $valeurs['date_redac_heure'] = "{$heure_redac}:{$minute_redac}"; $valeurs['afficher_date'] = $row['date']; $valeurs['date_jour'] = dater_formater_saisie_jour($jour, $mois, $annee); $valeurs['date_heure'] = "{$heure}:{$minute}"; $valeurs['sans_redac'] = !$possedeDateRedac; if (isset($options['date_redac'])) { $valeurs['_editer_date_anterieure'] = $options['date_redac']; } else { $valeurs['_editer_date_anterieure'] = ($objet == 'article' and ($GLOBALS['meta']["articles_redac"] != 'non' or $possedeDateRedac)); } $valeurs['_label_date'] = $statut == 'publie' ? _T('texte_date_publication_objet') : _T('texte_date_creation_objet'); $valeurs['_saisie_en_cours'] = (_request('_saisie_en_cours') !== null or _request('date_jour') !== null); // cas ou l'on ne peut pas dater mais on peut modifier la date de redac anterieure // https://core.spip.net/issues/3494 $valeurs['_editer_date'] = $valeurs['editable']; if ($valeurs['_editer_date_anterieure'] and !$valeurs['editable']) { $valeurs['editable'] = autoriser('modifier', $objet, $id_objet); } return $valeurs; }
function cs_date_court($numdate) { $date_array = recup_date($numdate); if (!$date_array) return '?'; list($annee, $mois, $jour) = $date_array; return _T('couteau:date_court', array('jour'=>$jour, 'mois'=>$mois, 'annee'=>substr($annee,2))); }
/** * Convertir une date en datetime * **/ function normaliser_date_datetime_dist($valeur, $options, &$erreur) { $defaut = '0000-00-00 00:00:00'; if (!$valeur or $valeur==array('date'=>'','heure'=>'')) { return $defaut; } $date = str_replace('-', '/', $valeur); // formater en jj/mm/aaaa if (isset($options['heure'])) { $date .= (' ' . $options['heure'] . ':00'); } else { $date .= ' 00:00:00'; } include_spip('inc/filtres'); if (!$date = recup_date($date)) { $erreur = "Impossible d'extraire la date de $date"; return false; } if (!($date = mktime($date[3], $date[4], 0, (int)$date[1], (int)$date[2], (int)$date[0]))) { // mauvais format de date $erreur = "Impossible de normaliser la date..."; return false; } $date = date("Y-m-d H:i:s", $date); $date = vider_date($date); // enlever les valeurs considerees comme nulles (1 1 1970, etc...) if (!$date) { $date = $defaut; } return $date; }
function agenda_controle($date='date', $jour='jour', $mois='mois', $annee='annee') { $jour = _request($jour); $mois = _request($mois); $annee = _request($annee); if (!($jour||$mois||$anne)) { if ($date = recup_date(_request($date))) { list($annee, $mois, $jour ) = $date; } else return -1; } if (!$d = mktime(0,0,0, $mois, $jour, $annee)) return -2; if ($jour != date("d", $d)) return -3; if ($mois != date("m", $d)) return -4; if ($annee != date("Y", $d)) return -5; return $d; }
function date_iso($date_heure) { list($annee, $mois, $jour) = recup_date($date_heure); list($heures, $minutes, $secondes) = recup_time($date_heure); $time = mktime($heures, $minutes, $secondes, $mois, $jour, $annee); return gmdate("Y-m-d\\TH:i:s\\Z", $time); }
function spiplistes_date_heure_valide ($date_heure) { $date_array = recup_date($date_heure); if($date_array) { list($annee, $mois, $jour) = $date_array; list($heures, $minutes, $secondes) = recup_heure($date_heure); return(array($annee, $mois, $jour, $heures, $minutes, $secondes)); } return(false); }
function get_date_inputs($name = 'select', $date = '', $blank = true, $table = false) { // $table parameter above is deprecated // Extract date values // First check in session variable (if error), fallback on $date $split_date = recup_date($date); $default_month = _session($name . '_month', $split_date[1]); $default_day = _session($name . '_day', $split_date[2]); $default_year = _session($name . '_year', $split_date[0]); if ($default_day == '0' || $default_day == '00') { $default_day = ''; } if ($default_year == '0000') { $default_year = ''; } // If name is empty, disable fields $dis = $name ? '' : 'disabled="disabled"'; $ret = "<input size=\"4\" type=\"text\" {$dis} value=\"{$default_day}\" name=\"" . $name . "_day\" id=\"" . $name . "_day\" />\n"; // Month of year $ret .= "<select {$dis} name=\"" . $name . "_month\" id=\"" . $name . "_month\">"; for ($i = 1; $i <= 12; $i++) { $default = isSelected($i == $default_month); $ret .= "<option" . $default . " value=\"" . $i . "\">" . _T('date_month_' . $i) . "</option>"; } if ($blank) { $default = isSelected($default_month == 0); $ret .= '<option' . $default . ' value=""></option>'; } $ret .= "</select>\n"; // Year $ret .= "<input size=\"4\" type=\"text\" {$dis} value=\"{$default_year}\" name=\"" . $name . "_year\" id=\"" . $name . "_year\" />\n"; return $ret; }