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.
 
 
 
 

168 lines
5.9 KiB

<?php
/**
* Gestion du formulaire de d'édition d'un album
*
* @plugin Albums
* @copyright 2014
* @author Tetue, Charles Razack
* @licence GNU/GPL
* @package SPIP\Albums\Formulaires
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/actions');
include_spip('inc/editer');
/**
* Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
*
* @param int|string $id_album
* Identifiant de l'album. 'new' pour un nouvel album.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier l'album créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un album source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL de l'album, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return string
* Hash du formulaire
*/
function formulaires_editer_album_identifier_dist($id_album = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = [], $hidden = '') {
return serialize([intval($id_album), $associer_objet]);
}
/**
* Chargement du formulaire d'édition d'un album
*
* Déclarer les champs postés et y intégrer les valeurs par défaut
*
* @uses formulaires_editer_objet_charger()
*
* @param int|string $id_album
* Identifiant de l'album. 'new' pour un nouvel album.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier le album créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un album source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL de l'album, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return array
* Environnement du formulaire
*/
function formulaires_editer_album_charger_dist($id_album = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = [], $hidden = '') {
$valeurs = formulaires_editer_objet_charger('album', $id_album, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
// lorsqu'on créé un album associé à un objet :
// - le publier d'office
// - utiliser son titre comme valeur par défaut si c'est configuré ainsi
if (
!(int) $id_album
and $associer_objet
and substr_count($associer_objet, '|') > 0
and [$objet, $id_objet] = explode('|', $associer_objet)
and $id_objet > 0
) {
$valeurs['statut'] = 'publie';
include_spip('inc/config');
if (!empty(lire_config('albums/utiliser_titre_defaut'))) {
$valeurs['titre'] = generer_info_entite($id_objet, $objet, 'titre', '*');
}
}
return $valeurs;
}
/**
* Vérifications du formulaire d'édition d'un album
*
* Vérifier les champs postés et signaler d'éventuelles erreurs
*
* @uses formulaires_editer_objet_verifier()
*
* @param int|string $id_album
* Identifiant de l'album. 'new' pour un nouvel album.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier le album créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un album source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL de l'album, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return array
* Tableau des erreurs
*/
function formulaires_editer_album_verifier_dist($id_album = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = [], $hidden = '') {
return formulaires_editer_objet_verifier('album', $id_album, []);
}
/**
* Traitement du formulaire d'édition d'un album
*
* Traiter les champs postés
*
* @uses formulaires_editer_objet_traiter()
*
* @param int|string $id_album
* Identifiant de l'album. 'new' pour un nouvel album.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier le album créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un album source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL de l'album, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return array
* Retours des traitements
*/
function formulaires_editer_album_traiter_dist($id_album = 'new', $retour = '', $associer_objet = '', $lier_trad = 0, $config_fonc = '', $row = [], $hidden = '') {
// Traitements génériques
$res = formulaires_editer_objet_traiter('album', $id_album, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
// S'il y a un objet à associer
// Nb : il peut avoir un id négatif, c'est voulu
if (
$id_album = (int) $res['id_album']
and $associer_objet
and substr_count($associer_objet, '|') > 0
and [$objet, $id_objet] = explode('|', $associer_objet)
) {
include_spip('action/editer_liens');
objet_associer(['album' => $id_album], [$objet => $id_objet]);
if (isset($res['redirect'])) {
$res['redirect'] = ancre_url(parametre_url($res['redirect'], 'id_album', '', '&'), 'album' . $res['id_album']);
}
}
return $res;
}