You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

199 lines
6.7 KiB

<?php
/**
* Plugin Simple Calendrier v2 pour SPIP 3
* Licence GNU/GPL
* 2010-2016
*
* cf. paquet.xml pour plus d'infos.
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/actions');
include_spip('inc/editer');
include_spip('inc/simplecal_utils');
include_spip('inc/config');
/**
* Identifier le formulaire en faisant abstraction des parametres qui
* ne representent pas l'objet edite
*/
function formulaires_editer_evenement_identifier_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
return serialize(array(intval($id_evenement),$lier_trad));
}
function formulaires_editer_evenement_charger_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
// Recupere automatiquement les champs de la table (entre autres...)
$valeurs = formulaires_editer_objet_charger('evenement',$id_evenement,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
// fixer la date par defaut en cas de creation d'evenement
if (!is_numeric($id_evenement)) {
$config_horaire = lire_config('simplecal_horaire');
$t=time();
$valeurs['date_debut'] = date('Y-m-d 00:00:00', $t);
$valeurs['date_fin'] = date('Y-m-d 00:00:00', $t);
$valeurs['horaire'] = $config_horaire;
}
// dispatcher date et heure
list($valeurs['date_debut'], $valeurs['heure_debut']) = explode(' ', date('d/m/Y H:i', strtotime($valeurs['date_debut'])));
list($valeurs['date_fin'], $valeurs['heure_fin']) = explode(' ', date('d/m/Y H:i', strtotime($valeurs['date_fin'])));
// Champ ref ("0" en base qd pas renseigne)
if (!empty($valeurs["id_objet"])) {
// assemblage du champ type et id_objet
$valeurs["ref"] = $valeurs["type"].$valeurs["id_objet"];
}
// Cas ou le parametre vient de l'url (appel depuis portlet)
// Necessaire pour le rechargement si erreur a la validation...
else if (_request("ref")){
$valeurs["ref"] = trim(_request("ref"));
}
// Appel en creation via portlet
if (_request('new')=='oui'){
$type = trim(_request("type"));
$id_objet = trim(_request("id_objet"));
if ($type and $id_objet){
// assemblage du champ type et id_objet
$valeurs["ref"] = $type.$id_objet;
}
}
return $valeurs;
}
// Choix par defaut des options de presentation
// function evenements_edit_config($row)
// {
// global $spip_ecran, $spip_lang, $spip_display;
// $config = $GLOBALS['meta'];
// $config['lignes'] = ($spip_ecran == "large")? 8 : 5;
// $config['langue'] = $spip_lang;
// $config['restreint'] = ($row['statut'] == 'publie');
// return $config;
// }
function formulaires_editer_evenement_verifier_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
// Verifications automatiques
// ---------------------------
$champs_obligatoires = array('titre', 'date_debut');
$erreurs = formulaires_editer_objet_verifier('evenement', $id_evenement, $champs_obligatoires);
// Autres verifications
// ---------------------
// La date de fin est obligatoire et à minima égale à celle de début (Jamais de 0000-00-00 en base).
// Si l'utilisateur la laisse vide, on la renseigne pour lui.
// => Permet d'éviter les crash à la validation et l'affichage de 01/01/1970...
if (!_request('date_fin')) {
set_request('date_fin', _request('date_debut'));
}
//Recuperer les champs date_xx et heure_xx, verifier leur coherence et les reformater afin de tester plus bas la chronologie
include_spip('inc/date_gestion');
$config_horaire = lire_config('simplecal_horaire');
if ($config_horaire == 'non') {
$get_horaire = false;
}
else {
$get_horaire = _request('horaire') == 'non' ? false : true;
}
$date_debut = simplecal_date_saisie2sql(_request('date_debut'));
$date_fin = simplecal_date_saisie2sql(_request('date_fin'));
$heure_debut = _request('heure_debut');
$heure_fin = _request('heure_fin');
if (empty($erreurs['date_debut']) && !$date_debut) {
$erreurs['date_debut'] = _T('simplecal:validation_date_format');
}
if (empty($erreurs['date_fin']) & !$date_fin) {
$erreurs['date_fin'] = _T('simplecal:validation_date_format');
}
// Chronologie : Date de fin >= Date de debut (si pas d'autres erreurs sur les dates)
if ($date_debut and $date_fin and $date_fin < $date_debut) {
$erreurs['date_fin'] = _T('simplecal:validation_date_chronologie');
}
$refobj = lire_config('simplecal_refobj');
if ($refobj == 'oui'){
// Ref saisie correctement ?
$ref = trim(_request('ref'));
if ($ref){
if (!simplecal_is_ref_ok($ref)){
$erreurs['ref'] = _T('simplecal:validation_refobj_format');
}
else {
// L'objet en question existe t-il ?
$tab = simplecal_get_tuple_from_ref($ref);
$type = $tab['type'];
$id_objet = $tab['id_objet'];
$existe = sql_fetsel("id_$type" ,"spip_".$type."s", "id_$type=".$id_objet);
if (!$existe){
$erreurs['ref'] = _T('simplecal:validation_type_nexiste_pas', array('type'=>$type, 'id_objet'=>$id_objet));
}
}
}
}
set_request('horaire', _request('horaire') == 'non' ? 'non' : 'oui');
return $erreurs;
}
function formulaires_editer_evenement_traiter_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
$config_horaire = lire_config('simplecal_horaire');
if ($config_horaire == 'non') {
$get_horaire = false;
} else {
$get_horaire = _request('horaire') == 'non' ? false : true;
}
set_request('horaire', $get_horaire ? 'oui' : 'non');
$heure_debut = '00:00:00';
$heure_fin = '00:00:00';
if ($get_horaire) {
$h = simplecal_heure_saisie2sql(_request('heure_debut'));
$heure_debut = $h ? $h : $heure_debut;
$h = simplecal_heure_saisie2sql(_request('heure_fin'));
$heure_fin = $h ? $h : $heure_fin;
}
$date_debut = simplecal_date_saisie2sql(_request('date_debut'));
$date_debut = $date_debut . ' ' . $heure_debut;
$date_fin = simplecal_date_saisie2sql(_request('date_fin'));
$date_fin = $date_fin . ' ' . $heure_fin;
set_request('date_debut', date('Y-m-d H:i:s', strtotime($date_debut)));
set_request('date_fin', date('Y-m-d H:i:s', strtotime($date_fin)));
// On reconstitue les champs 'type' et 'id_objet' a partir du champ 'ref'
$refobj = lire_config('simplecal_refobj');
if ($refobj == 'oui'){
$ref = trim(_request('ref'));
if ($ref){
$tab = simplecal_get_tuple_from_ref($ref);
set_request("type", $tab['type']);
set_request("id_objet", $tab['id_objet']);
} else {
set_request("type", "");
set_request("id_objet", 0);
}
} else {
// Option desactive => on ne fait rien !
// => Option desactivable sans risque de perdre les infos enregistrees lorsqu'elle etait active.
}
return formulaires_editer_objet_traiter('evenement',$id_evenement,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
}
?>