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
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; |
|
}
|
|
|