Browse Source

PSR SPIP

v1
kent1@arscenic.info 6 years ago
parent
commit
ca7a09ce6d
  1. 15
      base/roles_documents.php
  2. 16
      formulaires/editer_roles_objet_lie.php
  3. 6
      lang/paquet-roles_documents_fr.php
  4. 6
      lang/roles_documents_fr.php
  5. 33
      roles_documents_administrations.php
  6. 43
      roles_documents_pipelines.php

15
base/roles_documents.php

@ -5,7 +5,9 @@
* Licence GNU/GPL
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
@ -20,7 +22,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @return array
* Description complétée des tables
*/
function roles_documents_declarer_tables_objets_sql($tables){
function roles_documents_declarer_tables_objets_sql($tables) {
// On propose 2 rôles en plus du rôle par défaut : 'logo' et 'logo de survol'
$roles_documents = array(
@ -31,9 +33,9 @@ function roles_documents_declarer_tables_objets_sql($tables){
$choix = array_keys($roles_documents);
array_set_merge($tables, 'spip_documents', array(
"roles_colonne" => "role",
"roles_titres" => $roles_documents,
"roles_objets" => array(
'roles_colonne' => 'role',
'roles_titres' => $roles_documents,
'roles_objets' => array(
'*' => array(
'choix' => $choix,
'defaut' => 'document'
@ -54,7 +56,6 @@ function roles_documents_declarer_tables_objets_sql($tables){
**/
function roles_documents_declarer_tables_auxiliaires($tables) {
$tables['spip_documents_liens']['field']['role'] = "varchar(30) NOT NULL DEFAULT ''";
$tables['spip_documents_liens']['key']['PRIMARY KEY'] = "id_document,id_objet,objet,role";
$tables['spip_documents_liens']['key']['PRIMARY KEY'] = 'id_document,id_objet,objet,role';
return $tables;
}
?>

16
formulaires/editer_roles_objet_lie.php

@ -5,7 +5,9 @@
*
* @package SPIP\Formulaires
**/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Chargement du formulaire d'édition de rôles de liens
@ -17,13 +19,13 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* objet étant associé
* @param string|int $id_objet_source
* identifiant de l'objet associé
* @param string $objet
* @param string $objet
* @param int|string $id_objet
* @param array $options
* tableau d'options, à toutes fins utiles
* @return array
*/
function formulaires_editer_roles_objet_lie_charger_dist($objet_source, $id_objet_source, $objet, $id_objet, $options=array()){
function formulaires_editer_roles_objet_lie_charger_dist($objet_source, $id_objet_source, $objet, $id_objet, $options = array()) {
// retourner les valeurs de editer_liens
$table_source = table_objet($objet_source);
@ -45,17 +47,17 @@ function formulaires_editer_roles_objet_lie_charger_dist($objet_source, $id_obje
* objet étant associé
* @param string|int $id_objet_source
* identifiant de l'objet associé
* @param string $objet
* @param string $objet
* @param int|string $id_objet
* @param array $options
* tableau d'options, à toutes fins utiles
* @return array
*/
function formulaires_editer_roles_objet_lie_traiter_dist($objet_source, $id_objet_source, $objet, $id_objet, $options=array()){
function formulaires_editer_roles_objet_lie_traiter_dist($objet_source, $id_objet_source, $objet, $id_objet, $options = array()) {
// retourner les traitements de editer_liens
$table_source = table_objet($objet_source);
$editer_liens_traiter = charger_fonction('traiter','formulaires/editer_liens');
$editer_liens_traiter = charger_fonction('traiter', 'formulaires/editer_liens');
$res = $editer_liens_traiter($table_source, $objet, $id_objet); // documents, article, 2
// pour rechercher un ou plusieurs blocs après modification des roles
@ -74,6 +76,4 @@ function formulaires_editer_roles_objet_lie_traiter_dist($objet_source, $id_obje
}
return $res;
}

6
lang/paquet-roles_documents_fr.php

@ -1,7 +1,9 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
@ -10,5 +12,3 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'roles_documents_nom' => 'Rôles de documents',
'roles_documents_slogan' => 'Typer des liaisons de documents',
);
?>

6
lang/roles_documents_fr.php

@ -1,7 +1,9 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
@ -18,5 +20,3 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'role_document' => 'Document',
);
?>

33
roles_documents_administrations.php

@ -5,7 +5,9 @@
* Licence GNU/GPL
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
@ -17,18 +19,18 @@ function roles_documents_upgrade($nom_meta_base_version, $version_cible) {
// Ajout des rôles à la table de liens des documents
$maj['create'] = array(
// supprimer la clé primaire actuelle pour pouvoir en changer en ajoutant la colonne rôle
array('sql_alter', "TABLE spip_documents_liens DROP PRIMARY KEY"),
array('sql_alter', 'TABLE spip_documents_liens DROP PRIMARY KEY'),
// ajout de la colonne role
array('maj_tables', array('spip_documents_liens')),
// la nouvelle colonne est la, mettre sa nouvelle clé primaire
array('sql_alter', "TABLE spip_documents_liens ADD PRIMARY KEY (id_document,id_objet,objet,role)"),
array('sql_alter', 'TABLE spip_documents_liens ADD PRIMARY KEY (id_document,id_objet,objet,role)'),
// Mettre un rôle 'document' par défaut aux liens dépourvus de rôle
array('sql_update', "spip_documents_liens", array('role' => sql_quote('document')), "role=" . sql_quote('')),
array('sql_update', 'spip_documents_liens', array('role' => sql_quote('document')), 'role=' . sql_quote('')),
);
// Mettre un rôle 'document' par défaut aux liens dépourvus de rôle
$maj['1.0.1'] = array(
array('sql_update', "spip_documents_liens", array('role' => sql_quote('document')), "role=" . sql_quote('')),
array('sql_update', 'spip_documents_liens', array('role' => sql_quote('document')), 'role=' . sql_quote('')),
);
include_spip('base/upgrade');
@ -45,13 +47,17 @@ function roles_documents_vider_tables($nom_meta_base_version) {
// sinon on ne pourra pas modifier la cle primaire ensuite
// cet algo est certainement a optimiser
while ($doublons = sql_allfetsel(
array('id_document', 'id_objet', 'objet', 'role'),
array('spip_documents_liens'),
'', 'id_document,id_objet,objet', '', '', 'COUNT(*) > 1'))
{
array('id_document', 'id_objet', 'objet', 'role'),
array('spip_documents_liens'),
'',
'id_document,id_objet,objet',
'',
'',
'COUNT(*) > 1'
)) {
foreach ($doublons as $d) {
$where = array();
foreach ($d as $cle=>$valeur) {
foreach ($d as $cle => $valeur) {
$where[] = "$cle=".sql_quote($valeur);
}
sql_delete('spip_documents_liens', $where);
@ -59,10 +65,9 @@ function roles_documents_vider_tables($nom_meta_base_version) {
}
// supprimer la clé primaire, la colonne rôle, et remettre l'ancienne clé primaire
sql_alter("TABLE spip_documents_liens DROP PRIMARY KEY");
sql_alter("TABLE spip_documents_liens DROP COLUMN role");
sql_alter("TABLE spip_documents_liens ADD PRIMARY KEY (id_document,id_objet,objet)");
sql_alter('TABLE spip_documents_liens DROP PRIMARY KEY');
sql_alter('TABLE spip_documents_liens DROP COLUMN role');
sql_alter('TABLE spip_documents_liens ADD PRIMARY KEY (id_document,id_objet,objet)');
effacer_meta($nom_meta_base_version);
}

43
roles_documents_pipelines.php

@ -5,7 +5,9 @@
* Licence GNU/GPL
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Ajout de contenu dans le bloc «actions» des documents
@ -19,8 +21,8 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
*/
function roles_documents_document_desc_actions($flux) {
include_spip('inc/autoriser');
$texte = "";
$texte = '';
$exec = trouver_objet_exec(_request('exec'));
$objet_exec = $exec['type'];
$id_table_objet_exec = $exec['id_table_objet'];
@ -44,9 +46,10 @@ function roles_documents_document_desc_actions($flux) {
// bloc à recharger
$ajaxreload = !empty($flux['args']['ajaxreload']) ? $flux['args']['ajaxreload'] : '#documents';
// mini-formulaire
$form = recuperer_fond('prive/squelettes/inclure/editer_roles_objet_lie',
$form = recuperer_fond(
'prive/squelettes/inclure/editer_roles_objet_lie',
array(
'objet_source' => "document",
'objet_source' => 'document',
'id_objet_source' => $id_document,
'objet' => $objet,
'id_objet' => $id_objet,
@ -86,10 +89,19 @@ function roles_documents_post_edition_lien($flux) {
and $id_document = intval($flux['args']['id_objet_source'])
and $objet = $flux['args']['objet']
and $id_objet = intval($flux['args']['id_objet'])
and $vu = sql_getfetsel('vu', 'spip_documents_liens', 'id_document=' .$id_document .' AND objet='.sql_quote($objet) .' AND id_objet='.$id_objet .' AND '.$colonne_role.'='.sql_quote('document'))
and $vu = sql_getfetsel(
'vu',
'spip_documents_liens',
'id_document=' .$id_document .' AND objet='.sql_quote($objet) .'
AND id_objet='.$id_objet .' AND '.$colonne_role.'='.sql_quote('document')
)
) {
include_spip('action/editer_liens');
objet_qualifier_liens(array('document'=>$id_document), array($objet=>$id_objet), array($colonne_role=>$role, 'vu'=>$vu));
objet_qualifier_liens(
array('document'=>$id_document),
array($objet=>$id_objet),
array($colonne_role => $role, 'vu' => $vu)
);
}
return $flux;
@ -112,23 +124,25 @@ function roles_documents_post_edition($flux) {
and $flux['args']['table'] !== 'spip_documents' // mais pas un document
and $objet = $flux['args']['type']
and $id_objet = intval($flux['args']['id_objet'])
){
) {
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(array('document'=>'*'), array($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')
'id_document=' .$l['id_document'] .' AND objet='.sql_quote($objet) .'
AND id_objet='.$id_objet .' AND role!='.sql_quote('document')
);
}
}
@ -142,7 +156,7 @@ function roles_documents_quete_logo_objet($flux) {
if (empty($flux['data'])) {
// On cherche la première image avec un rôle "logo"
include_spip('base/abstract_sql');
// Quel rôle va-t-on chercher ?
if ($flux['args']['mode'] === 'on') {
$role = 'logo';
@ -151,7 +165,7 @@ function roles_documents_quete_logo_objet($flux) {
} else {
$role = $flux['args']['mode'];
}
if ($image = sql_fetsel(
'fichier, extension',
'spip_documents as d inner join spip_documents_liens as l on d.id_document = l.id_document',
@ -165,13 +179,12 @@ function roles_documents_quete_logo_objet($flux) {
'0+titre, titre'
)) {
$chemin_complet = _DIR_IMG . $image['fichier'];
$flux['data'] = array(
'chemin' => $chemin_complet,
'timestamp' => @filemtime($chemin_complet),
);
}
}
return $flux;
}

Loading…
Cancel
Save