* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
+/**
+ * Utilisations de pipelines
+ *
+ * @package SPIP\Medias\Pipelines
+ **/
-if (!defined('_ECRIRE_INC_VERSION')) return;
-function medias_detecter_fond_par_defaut($fond){
- // traiter le cas pathologique d'un upload de document ayant echoue
- // car trop gros
- if (empty($_GET) AND empty($_POST) AND empty($_FILES)
- AND isset($_SERVER["CONTENT_LENGTH"])
- AND strstr($_SERVER["CONTENT_TYPE"], "multipart/form-data;")) {
+if (!defined('_ECRIRE_INC_VERSION')) {
+ return;
+}
+
+/**
+ * Traiter le cas pathologique d'un upload de document ayant echoué
+ * car étant trop gros
+ *
+ * @uses erreur_upload_trop_gros()
+ * @pipeline detecter_fond_par_defaut
+ * @param string $fond
+ * Nom du squelette par défaut qui sera utilisé
+ * @return string
+ * Nom du squelette par défaut qui sera utilisé
+ **/
+function medias_detecter_fond_par_defaut($fond) {
+ if (empty($_GET) and empty($_POST) and empty($_FILES)
+ and isset($_SERVER['CONTENT_LENGTH'])
+ and isset($_SERVER['CONTENT_TYPE'])
+ and strstr($_SERVER['CONTENT_TYPE'], 'multipart/form-data;')
+ ) {
include_spip('inc/getdocument');
erreur_upload_trop_gros();
}
- return $fond;
+
+ return $fond;
}
/**
- * A chaque insertion d'un nouvel objet editorial
- * auquel on a attache des documents, restituer l'identifiant
- * du nouvel objet cree sur les liaisons documents/objet,
- * qui ont ponctuellement un identifiant id_objet negatif.
- * cf. medias_affiche_gauche()
-**/
-function medias_post_insertion($flux){
-
- $objet = objet_type($flux['args']['table']);
+ * À chaque insertion d'un nouvel objet editorial
+ * auquel on a attaché des documents, restituer l'identifiant
+ * du nouvel objet crée sur les liaisons documents/objet,
+ * qui ont ponctuellement un identifiant id_objet négatif.
+ *
+ * @see medias_affiche_gauche()
+ * @pipeline post_insertion
+ *
+ * @param array $flux
+ * Données du pipeline
+ * @return array
+ * Données du pipeline
+ **/
+function medias_post_insertion($flux) {
+
+ $objet = objet_type($flux['args']['table']);
$id_objet = $flux['args']['id_objet'];
-
+ $id_auteur = isset($GLOBALS['visiteur_session']['id_auteur']) ? $GLOBALS['visiteur_session']['id_auteur'] : 0;
+
include_spip('inc/autoriser');
-
- if (autoriser('joindredocument', $objet, $id_objet)
- AND $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur'])){
+ if (autoriser('joindredocument', $objet, $id_objet) and $id_auteur) {
# cf. HACK medias_affiche_gauche()
# rattrapper les documents associes a cet objet nouveau
# ils ont un id = 0-id_auteur
# utiliser l'api editer_lien pour les appels aux pipeline edition_lien
include_spip('action/editer_liens');
- $liens = objet_trouver_liens(array('document'=>'*'),array($objet=>0-$id_auteur));
- foreach($liens as $lien){
- objet_associer(array('document'=>$lien['document']),array($objet=>$id_objet),$lien);
+ $liens = objet_trouver_liens(array('document' => '*'), array($objet => 0 - $id_auteur));
+ foreach ($liens as $lien) {
+ objet_associer(array('document' => $lien['document']), array($objet => $id_objet), $lien);
}
// un simple delete pour supprimer les liens temporaires
- sql_delete("spip_documents_liens", array("id_objet = ".(0-$id_auteur),"objet=".sql_quote($objet)));
+ sql_delete('spip_documents_liens', array('id_objet = ' . (0 - $id_auteur), 'objet=' . sql_quote($objet)));
}
- return $flux;
+ return $flux;
}
/**
- * Configuration des contenus
+ * Ajoute la configuration des documents à la page de configuration des contenus
+ *
+ * @pipeline affiche_milieu
* @param array $flux
* @return array
*/
-function medias_affiche_milieu($flux){
- if ($flux["args"]["exec"] == "configurer_contenu") {
- $flux["data"] .= recuperer_fond('prive/squelettes/inclure/configurer',array('configurer'=>'configurer_documents'));
+function medias_affiche_milieu($flux) {
+ if ($flux['args']['exec'] == 'configurer_contenu') {
+ $flux['data'] .= recuperer_fond(
+ 'prive/squelettes/inclure/configurer',
+ array('configurer' => 'configurer_documents')
+ );
}
+
return $flux;
}
-function medias_configurer_liste_metas($config){
+/**
+ * Définir les meta de configuration liées aux documents
+ *
+ * @pipeline configurer_liste_metas
+ * @param array $config
+ * Couples nom de la méta => valeur par défaut
+ * @return array
+ * Couples nom de la méta => valeur par défaut
+ */
+function medias_configurer_liste_metas($config) {
$config['documents_objets'] = 'spip_articles';
$config['documents_date'] = 'non';
+
return $config;
}
-
-function medias_post_edition($flux){
+/**
+ * Institue ou met à jour les liens de documents après l'édition d'un objet
+ *
+ * @pipeline post_edition
+ * @param array $flux
+ * Données du pipeline
+ * @return array
+ * Données du pipeline
+ **/
+function medias_post_edition($flux) {
// le serveur n'est pas toujours la
$serveur = (isset($flux['args']['serveur']) ? $flux['args']['serveur'] : '');
// si on ajoute un document, mettre son statut a jour
- if($flux['args']['action']=='ajouter_document'){
+ if (isset($flux['args']['action']) and $flux['args']['action'] == 'ajouter_document') {
include_spip('action/editer_document');
// mettre a jour le statut si necessaire
document_instituer($flux['args']['id_objet']);
- }
- // si on institue un objet, mettre ses documents lies a jour
- elseif ($flux['args']['table']!=='spip_documents'){
- $type = isset($flux['args']['type'])?$flux['args']['type']:objet_type($flux['args']['table']);
+ } // si on institue un objet, mettre ses documents lies a jour
+ elseif (isset($flux['args']['table']) and $flux['args']['table'] !== 'spip_documents') {
+ $type = isset($flux['args']['type']) ? $flux['args']['type'] : objet_type($flux['args']['table']);
// verifier d'abord les doublons !
include_spip('inc/autoriser');
- if (autoriser('autoassocierdocument',$type,$flux['args']['id_objet'])){
- $table_objet = isset($flux['args']['table_objet'])?$flux['args']['table_objet']:table_objet($flux['args']['table'],$serveur);
- $marquer_doublons_doc = charger_fonction('marquer_doublons_doc','inc');
- $marquer_doublons_doc($flux['data'],$flux['args']['id_objet'],$type,id_table_objet($type, $serveur),$table_objet,$flux['args']['table'], '', $serveur);
+ if (autoriser('autoassocierdocument', $type, $flux['args']['id_objet'])) {
+ $table_objet = isset($flux['args']['table_objet']) ?
+ $flux['args']['table_objet'] : table_objet($flux['args']['table'], $serveur);
+ $marquer_doublons_doc = charger_fonction('marquer_doublons_doc', 'inc');
+ $marquer_doublons_doc($flux['data'], $flux['args']['id_objet'], $type, id_table_objet($type, $serveur),
+ $table_objet, $flux['args']['table'], '', $serveur);
}
- if($flux['args']['action']=='instituer' OR isset($flux['data']['statut'])){
+ if (($flux['args']['action'] and $flux['args']['action'] == 'instituer') or isset($flux['data']['statut'])) {
include_spip('base/abstract_sql');
$id = $flux['args']['id_objet'];
- $docs = array_map('reset',sql_allfetsel('id_document','spip_documents_liens','id_objet='.intval($id).' AND objet='.sql_quote($type)));
+ $docs = array_map(
+ 'reset',
+ sql_allfetsel('id_document', 'spip_documents_liens', 'id_objet=' . intval($id) . ' AND objet=' . sql_quote($type))
+ );
include_spip('action/editer_document');
- foreach($docs as $id_document)
+ foreach ($docs as $id_document) {
// mettre a jour le statut si necessaire
document_instituer($id_document);
+ }
}
- }
- else {
- if ($flux['args']['table']!=='spip_documents'){
+ } else {
+ if (isset($flux['args']['table']) and $flux['args']['table'] !== 'spip_documents') {
// verifier les doublons !
- $marquer_doublons_doc = charger_fonction('marquer_doublons_doc','inc');
- $marquer_doublons_doc($flux['data'],$flux['args']['id_objet'],$flux['args']['type'],id_table_objet($flux['args']['type'], $serveur),$flux['args']['table_objet'],$flux['args']['spip_table_objet'], '', $serveur);
+ $marquer_doublons_doc = charger_fonction('marquer_doublons_doc', 'inc');
+ $marquer_doublons_doc($flux['data'], $flux['args']['id_objet'], $flux['args']['type'],
+ id_table_objet($flux['args']['type'], $serveur), $flux['args']['table_objet'],
+ $flux['args']['spip_table_objet'], '', $serveur);
}
}
+
return $flux;
}
/**
- * Pipeline afficher_complement_objet
- * afficher le portfolio et ajout de document sur les fiches objet
- * sur lesquelles les medias ont ete activees
- * Pour les articles, on ajoute toujours !
- *
- * @param $flux
- * @return
+ * Ajouter le portfolio et ajout de document sur les fiches objet
+ *
+ * Uniquement sur les objets pour lesquelles les medias ont été activés
+ *
+ * @pipeline afficher_complement_objet
+ * @param array $flux
+ * @return array
*/
-function medias_afficher_complement_objet($flux){
- if ($type=$flux['args']['type']
- AND $id=intval($flux['args']['id'])
- AND (autoriser('joindredocument',$type,$id))) {
- $documenter_objet = charger_fonction('documenter_objet','inc');
- $flux['data'] .= $documenter_objet($id,$type);
+function medias_afficher_complement_objet($flux) {
+ if ($type = $flux['args']['type']
+ and $id = intval($flux['args']['id'])
+ and (autoriser('joindredocument', $type, $id))
+ ) {
+ $documenter_objet = charger_fonction('documenter_objet', 'inc');
+ $flux['data'] .= $documenter_objet($id, $type);
}
+
return $flux;
}
/**
- * Pipeline affiche_gauche
- * Affiche le formulaire d'ajout de document sur le formulaire d'edition
+ * Ajoute le formulaire d'ajout de document au formulaire d'édition
* d'un objet (lorsque cet objet peut recevoir des documents).
*
- * HACK : Lors d'une premiere creation de l'objet, celui-ci n'ayant pas
- * encore d'identifiant tant que le formulaire d'edition n'est pas enregistre,
- * les liaisions entre les documents lies et l'objet a creer sauvegardent
- * un identifiant d'objet negatif de la valeur de id_auteur (l'auteur
- * connecte). Ces liaisons seront corrigees apres validation dans
- * medias_post_insertion()
+ * @note
+ * HACK : Lors d'une première création de l'objet, celui-ci n'ayant pas
+ * encore d'identifiant tant que le formulaire d'édition n'est pas enregistré,
+ * les liaisions entre les documents liés et l'objet à créer sauvegardent
+ * un identifiant d'objet négatif de la valeur de id_auteur (l'auteur
+ * connecte). Ces liaisons seront corrigées après validation dans
+ * le pipeline medias_post_insertion()
+ *
+ * @pipeline affiche_gauche
+ * @see medias_post_insertion()
+ *
+ * @param array $flux
+ * Données du pipeline
+ * @return array
+ * Données du pipeline
*/
-function medias_affiche_gauche($flux){
+function medias_affiche_gauche($flux) {
if ($en_cours = trouver_objet_exec($flux['args']['exec'])
- AND $en_cours['edition']!==false // page edition uniquement
- AND $type = $en_cours['type']
- AND $id_table_objet = $en_cours['id_table_objet']
+ and $en_cours['edition'] !== false // page edition uniquement
+ and $type = $en_cours['type']
+ and $id_table_objet = $en_cours['id_table_objet']
// id non defini sur les formulaires de nouveaux objets
- AND (isset($flux['args'][$id_table_objet]) and $id = intval($flux['args'][$id_table_objet])
+ and (isset($flux['args'][$id_table_objet]) and $id = intval($flux['args'][$id_table_objet])
// et justement dans ce cas, on met un identifiant negatif
- OR $id = 0-$GLOBALS['visiteur_session']['id_auteur'])
- AND autoriser('joindredocument',$type,$id)){
- $flux['data'] .= recuperer_fond('prive/objets/editer/colonne_document',array('objet'=>$type,'id_objet'=>$id));
+ or $id = 0 - $GLOBALS['visiteur_session']['id_auteur'])
+ and autoriser('joindredocument', $type, $id)
+ ) {
+ $flux['data'] .= recuperer_fond(
+ 'prive/objets/editer/colonne_document',
+ array('objet' => $type, 'id_objet' => $id)
+ );
}
return $flux;
}
-function medias_document_desc_actions($flux){
+/**
+ * Utilisation du pipeline document_desc_actions
+ *
+ * Ne fait rien ici.
+ *
+ * Ce pipeline permet aux plugins d'ajouter de boutons d'action supplémentaires
+ * sur les formulaires d'ajouts de documents
+ *
+ * @pipeline document_desc_actions
+ * @param array $flux
+ * Données du pipeline
+ * @return array
+ * Données du pipeline
+ **/
+function medias_document_desc_actions($flux) {
return $flux;
}
-function medias_editer_document_actions($flux){
+/**
+ * Utilisation du pipeline editer_document_actions
+ *
+ * Ne fait rien ici.
+ *
+ * Ce pipeline permet aux plugins d'ajouter de boutons d'action supplémentaires
+ * sur les formulaires d'édition de documents
+ *
+ * @pipeline editer_document_actions
+ * @param array $flux
+ * Données du pipeline
+ * @return array
+ * Données du pipeline
+ **/
+function medias_editer_document_actions($flux) {
return $flux;
}
-function medias_renseigner_document_distant($flux){
+/**
+ * Utilisation du pipeline renseigner_document_distant
+ *
+ * Ne fait rien ici.
+ *
+ * Ce pipeline permet aux plugins de renseigner les clés `fichier` et
+ * `mode` d'un document distant à partir de l'URL du fichier dans
+ * la clé `source`.
+ *
+ * @see renseigner_source_distante()
+ * @pipeline renseigner_document_distant
+ * @param array $flux
+ * Données du pipeline
+ * @return array
+ * Données du pipeline
+ **/
+function medias_renseigner_document_distant($flux) {
return $flux;
}
/**
* Compter les documents dans un objet
*
+ * @pipeline objet_compte_enfants
* @param array $flux
* @return array
*/
-function medias_objet_compte_enfants($flux){
+function medias_objet_compte_enfants($flux) {
if ($objet = $flux['args']['objet']
- AND $id=intval($flux['args']['id_objet'])) {
+ and $id = intval($flux['args']['id_objet'])
+ ) {
// juste les publies ?
if (array_key_exists('statut', $flux['args']) and ($flux['args']['statut'] == 'publie')) {
- $flux['data']['document'] = sql_countsel('spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document', "L.objet=".sql_quote($objet)."AND L.id_objet=".intval($id)." AND (D.statut='publie')");
+ $flux['data']['document'] = sql_countsel(
+ 'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document',
+ 'L.objet=' . sql_quote($objet) . 'AND L.id_objet=' . intval($id) . " AND (D.statut='publie')"
+ );
} else {
- $flux['data']['document'] = sql_countsel('spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document', "L.objet=".sql_quote($objet)."AND L.id_objet=".intval($id)." AND (D.statut='publie' OR D.statut='prepa')");
+ $flux['data']['document'] = sql_countsel(
+ 'spip_documents AS D JOIN spip_documents_liens AS L ON D.id_document=L.id_document',
+ 'L.objet=' . sql_quote($objet) . 'AND L.id_objet=' . intval($id) . " AND (D.statut='publie' OR D.statut='prepa')"
+ );
}
}
+
return $flux;
}
/**
* Afficher le nombre de documents dans chaque rubrique
*
+ * @pipeline boite_infos
* @param array $flux
* @return array
*/
-function medias_boite_infos($flux){
- if ($flux['args']['type']=='rubrique'
- AND $id_rubrique = $flux['args']['id']){
- if ($nb = sql_countsel('spip_documents_liens',"objet='rubrique' AND id_objet=".intval($id_rubrique))){
- $nb = "<div>". singulier_ou_pluriel($nb, "medias:un_document", "medias:des_documents") . "</div>";
- if ($p = strpos($flux['data'],"<!--nb_elements-->"))
- $flux['data'] = substr_replace($flux['data'],$nb,$p,0);
+function medias_boite_infos($flux) {
+ if ($flux['args']['type'] == 'rubrique'
+ and $id_rubrique = $flux['args']['id']
+ ) {
+ if ($nb = sql_countsel('spip_documents_liens', "objet='rubrique' AND id_objet=" . intval($id_rubrique))) {
+ $nb = '<div>' . singulier_ou_pluriel($nb, 'medias:un_document', 'medias:des_documents') . '</div>';
+ if ($p = strpos($flux['data'], '<!--nb_elements-->')) {
+ $flux['data'] = substr_replace($flux['data'], $nb, $p, 0);
+ }
+ }
+ }
+
+ return $flux;
+}
+
+/**
+ * Insertion dans le pipeline revisions_chercher_label (Plugin révisions)
+ * Trouver le bon label à afficher sur les champs dans les listes de révisions
+ *
+ * Si un champ est un champ extra, son label correspond au label défini du champs extra
+ *
+ * @pipeline revisions_chercher_label
+ * @param array $flux Données du pipeline
+ * @return array Données du pipeline
+ **/
+function medias_revisions_chercher_label($flux) {
+ foreach (array('id_vignette', 'hauteur', 'largeur', 'mode', 'taille') as $champ) {
+ if ($flux['args']['champ'] == $champ) {
+ $flux['data'] = _T('medias:info_' . $champ);
+
+ return $flux;
}
}
+ foreach (array('fichier', 'taille', 'mode', 'credits') as $champ) {
+ if ($flux['args']['champ'] == $champ) {
+ $flux['data'] = _T('medias:label_' . $champ);
+
+ return $flux;
+ }
+ }
+ if ($flux['args']['champ'] == 'distant') {
+ $flux['data'] = $flux['data'] = _T('medias:fichier_distant');
+ }
+
return $flux;
}