@ -1,4 +1,5 @@
<?php
/**
* Plugin Rôles de documents
* (c) 2015
@ -25,7 +26,7 @@ function roles_documents_document_desc_actions($flux) {
$texte = '';
$exec = trouver_objet_exec(_request('exec'));
if ($exec !== false) {
$objet_exec = $exec['type'];
$id_table_objet_exec = $exec['id_table_objet'];
@ -47,14 +48,14 @@ function roles_documents_document_desc_actions($flux) {
// mini-formulaire
$form = recuperer_fond(
'prive/squelettes/inclure/editer_roles_document',
array(
[
'id_document' => $id_document,
'objet' => $objet,
'id_objet' => $id_objet,
'options' => array(
'options' => [
'ajaxReload' => $ajaxreload,
) ,
)
] ,
]
);
$texte = $form;
}
@ -90,7 +91,7 @@ function roles_documents_post_edition_lien($flux) {
and $id_objet = intval($flux['args']['id_objet'])
) {
// le champ 'rang_lien' n'est présent qu'à partir de SPIP 3.2 (ou avec le plugin ordoc)
$champs_synchronises = array('vu', 'rang_lien') ;
$champs_synchronises = ['vu', 'rang_lien'] ;
$trouver_table = charger_fonction('trouver_table', 'base');
$desc = $trouver_table('spip_documents_liens');
@ -99,19 +100,19 @@ function roles_documents_post_edition_lien($flux) {
$qualifier = sql_fetsel(
$champs_presents,
'spip_documents_liens',
array(
[
'id_document=' . $id_document,
'objet=' . sql_quote($objet),
'id_objet=' . $id_objet,
$colonne_role . '=' . sql_quote('document')
)
]
);
if ($qualifier) {
include_spip('action/editer_liens');
objet_qualifier_liens(
array('document' => $id_document) ,
array($objet => $id_objet) ,
array($colonne_role => $role) + $qualifier
['document' => $id_document] ,
[$objet => $id_objet] ,
[$colonne_role => $role] + $qualifier
);
}
}
@ -140,21 +141,21 @@ function roles_documents_post_edition($flux) {
include_spip('action/editer_liens');
// on regarde s'il y a des documents liés à l'objet modifié
if (count($liens = objet_trouver_liens(array('document'=>'*'), array($objet=>$id_objet) ))) {
if (count($liens = objet_trouver_liens(['document' => '*'], [$objet => $id_objet] ))) {
foreach ($liens as $l) {
// on récupère le champ "vu" du lien avec le rôle par défaut
$vu = sql_getfetsel(
'vu',
'spip_documents_liens',
'id_document=' .$l['id_document'] .' AND objet='.sql_quote($objet) .'
AND id_objet='.$id_objet .' AND role='.sql_quote('document')
'id_document=' . $l['id_document'] . ' AND objet=' . sql_quote($objet) . '
AND id_objet=' . $id_objet . ' AND role=' . sql_quote('document')
);
// on met à jour tous les autres liens avec rôle
sql_updateq(
'spip_documents_liens',
array('vu'=>$vu) ,
'id_document=' .$l['id_document'] .' AND objet='.sql_quote($objet) .'
AND id_objet='.$id_objet .' AND role!='.sql_quote('document')
['vu' => $vu] ,
'id_document=' . $l['id_document'] . ' AND objet=' . sql_quote($objet) . '
AND id_objet=' . $id_objet . ' AND role!=' . sql_quote('document')
);
}
}
@ -179,11 +180,10 @@ function roles_documents_pre_boucle($boucle) {
// Boucle DOCUMENTS
if ($boucle->type_requete === 'documents') {
// Vérifier s'il y a une jointure sur la table de liens
$jointure_documents = false;
if ($boucle->join) {
foreach($boucle->join as $join) {
foreach ($boucle->join as $join) {
if (array_search(sql_quote('documents'), $join) !== false) {
$jointure_documents = true;
break;
@ -221,7 +221,7 @@ function roles_documents_pre_boucle($boucle) {
'ids_boucles' => ['_illustrations', '_documents'],
]
];
foreach($squelettes_bypass as $squelette) {
foreach ($squelettes_bypass as $squelette) {
if (
$basename === $squelette['basename']
and in_array($id_boucle, $squelette['ids_boucles'])
@ -241,11 +241,11 @@ function roles_documents_pre_boucle($boucle) {
$abbrev_table_lien = array_search($table_liens, $boucle->from);
if ($abbrev_table_lien) {
$boucle->where[] = array(
$boucle->where[] = [
"'!='",
"'SUBSTR($abbrev_table_lien.role, 1, 4)'",
"'\'logo\''"
) ;
] ;
}
}
}
@ -269,7 +269,8 @@ function roles_documents_formulaire_traiter($flux) {
// Formulaire d'ajout de document
// En présence d'un role sélectionne, on requalifie le lien créé
// sauf si c'est le rôle par défaut
if ($flux['args']['form'] == 'joindre_document'
if (
$flux['args']['form'] == 'joindre_document'
and $roles = _request('roles')
and $objet = $flux['args']['args'][2]
and $id_objet = $flux['args']['args'][1]
@ -277,19 +278,19 @@ function roles_documents_formulaire_traiter($flux) {
) {
foreach ($flux['data']['ids'] as $id_document) {
if (!is_array($roles)) {
$roles = array($roles) ;
$roles = [$roles] ;
}
foreach ($roles as $role) {
if ($role != 'document') {
$update = sql_updateq(
'spip_documents_liens',
array('role' => $role) ,
array(
['role' => $role] ,
[
'id_document=' . intval($id_document),
'objet=' . sql_quote($objet),
'id_objet=' . intval($id_objet),
'role=' . sql_quote('document'),
)
]
);
}
}
@ -305,7 +306,7 @@ function roles_documents_formulaire_traiter($flux) {
*
* - Formulaire d'ajout de document : ajout du sélecteur de rôle, et rendre les identifiants uniques pour éviter un pb de JS quand le form est présent plusieurs fois sur la page.
* - Mediathèque : ajout du filtrage par rôle
*
*
* @pipeline recuperer_fond
*
* @param array $flux Données du pipeline
@ -319,7 +320,6 @@ function roles_documents_recuperer_fond($flux) {
and isset($flux['args']['contexte']['objet'])
and isset($flux['args']['contexte']['id_objet'])
) {
// 1) Ajout du sélecteur de rôle
// Est-ce qu'il s'agit d'un ajout de logo ?
@ -335,12 +335,12 @@ function roles_documents_recuperer_fond($flux) {
: $roles['attribuables']
);
$multiple = $editer_logo ? null : (count($roles_attribuables) > 1 ? 'oui' : null);
$contexte = array(
$contexte = [
'roles' => (isset($flux['args']['contexte']['roles']) ? $flux['args']['contexte']['roles'] : ''),
'roles_attribuables' => $roles_attribuables,
'multiple' => $multiple,
'editer_logo' => $editer_logo,
) ;
] ;
// On place le sélecteur au début (compliqué de le placer juste avant les boutons, déplacés en JS, et des blocs cachés)
$selecteur_roles = recuperer_fond('formulaires/inc-selecteur_role', $contexte);
@ -353,12 +353,10 @@ function roles_documents_recuperer_fond($flux) {
$uniqid = $domid . '_' . uniqid(); // Identifiant vraiement unique
$flux['data']['texte'] = str_replace($domid, $uniqid, $flux['data']['texte']);
}
}
// Médiathèque
if ($flux['args']['fond'] == 'prive/squelettes/inclure/mediatheque-navigation') {
$fond_roles = recuperer_fond('prive/squelettes/inclure/mediatheque-navigation-roles', $flux['args']['contexte']);
// On s'insère après le dernier < ul > de la barre d'onglets secondaires
// Sans parseur, c'est la galère
@ -382,7 +380,8 @@ function roles_documents_recuperer_fond($flux) {
**/
function roles_documents_formulaire_fond($flux) {
if ($flux['args']['form'] == 'editer_logo'
if (
$flux['args']['form'] == 'editer_logo'
//and !empty($flux['args']['contexte']['_bigup_rechercher_fichiers'])
) {
$flux_joindre_document = $flux;