Esempio n. 1
0
/**
 * 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;
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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;
}
Esempio n. 5
0
/**
 * 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);
}
Esempio n. 8
0
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;
}
Esempio n. 10
0
File: dater.php Progetto: JLuc/SPIP
/**
 * 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;
}
Esempio n. 11
0
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)));
}
Esempio n. 12
0
/**
 * 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;
}
Esempio n. 13
0
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;
}
Esempio n. 14
0
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);
}
Esempio n. 15
0
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);
}
Esempio n. 16
0
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;
}