Browse Source

style: Coding Standard (phpcbf)

master
b_b 8 months ago
parent
commit
9a0d5c5162
  1. 98
      action/spipicious_ajouter_tags.php
  2. 76
      action/spipicious_supprimer_tags.php
  3. 45
      base/spipicious.php
  4. 47
      formulaires/spipicious_ajax.php
  5. 170
      spipicious_administrations.php
  6. 26
      spipicious_autoriser.php
  7. 6
      spipicious_options.php
  8. 78
      spipicious_pipelines.php

98
action/spipicious_ajouter_tags.php

@ -1,4 +1,5 @@
<?php
/**
* SPIP.icio.us
* Gestion de tags lies aux auteurs
@ -8,46 +9,50 @@
* Erational (http://www.erational.org)
*
* © 2007-2013 - Distribue sous licence GNU/GPL
*
*
* Action d'ajout de tags à un objet
*
*
* @package SPIP\SPIPicious\Actions
*/
if (!defined("_ECRIRE_INC_VERSION")) return;#securite
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Action d'ajout de tags appelée par le formulaire
*
*
* @return array $ajouter_tags
* Retourne un tableau composé du message de retour et si on doit invalider le cache
* Retourne un tableau composé du message de retour et si on doit invalider le cache
*/
function action_spipicious_ajouter_tags_dist(){
function action_spipicious_ajouter_tags_dist() {
$id_objet = _request('spipicious_id');
$type = _request('spipicious_type');
include_spip('inc/autoriser');
if(!autoriser('tagger_spipicious',$type,$id_objet))
if (!autoriser('tagger_spipicious', $type, $id_objet)) {
return false;
}
$id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
if(!function_exists('lire_config'))
if (!function_exists('lire_config')) {
include_spip('inc/config');
$id_groupe = lire_config('spipicious/groupe_mot','1');
}
$id_groupe = lire_config('spipicious/groupe_mot', '1');
$id_table_objet = id_table_objet($type);
$tags = _request('spipicious_tags');
$tableau_tags = explode(",",$tags);
$tableau_tags = explode(',', $tags);
$ajouter_tags = spipicious_ajouter_tags($tableau_tags,$id_auteur,$id_objet,$type,$id_table_objet,$id_groupe);
$ajouter_tags = spipicious_ajouter_tags($tableau_tags, $id_auteur, $id_objet, $type, $id_table_objet, $id_groupe);
return $ajouter_tags;
}
/**
* Fonction d'ajout de tag à un objet
*
*
* -* Si le mot clé n'existe pas, on le crée;
* -* Si le mot clé n'existait pas ou existait mais n'était pas lié à l'objet,
* -* Si le mot clé n'existait pas ou existait mais n'était pas lié à l'objet,
* on ajoute une liaison entre les deux
* -* On ajoute une entrée dans la table de spipicious liant le mot clé, l'objet et l'auteur
*
@ -63,87 +68,90 @@ function action_spipicious_ajouter_tags_dist(){
* La clé primaire de l'objet à tagger ("id_article","id_rubrique")
* @param int $id_groupe
* Le groupe de mots des tags
* @return array
* @return array
* Retourne un tableau composé du message de retour et si on doit invalider le cache
*/
function spipicious_ajouter_tags($tableau_tags=array(),$id_auteur,$id_objet,$type,$id_table_objet,$id_groupe){
function spipicious_ajouter_tags($tableau_tags = [], $id_auteur, $id_objet, $type, $id_table_objet, $id_groupe) {
include_spip('action/editer_mot');
include_spip('action/editer_liens');
$tag_analysed = $mots_associes = array();
$tag_analysed = $mots_associes = [];
$position = 0;
$statut = 'publie';
if (is_array($tableau_tags)) {
$table = table_objet_sql($type);
$statut_objet = sql_getfetsel('statut',$table,"$id_table_objet=$id_objet");
if($statut_objet && ($statut_objet != 'publie'))
$statut_objet = sql_getfetsel('statut', $table, "$id_table_objet=$id_objet");
if ($statut_objet && ($statut_objet != 'publie')) {
$statut = 'prop';
}
foreach ($tableau_tags as $k=>$tag) {
foreach ($tableau_tags as $k => $tag) {
$mot_cree = false;
$tag = trim($tag);
if(!empty($tag)){
if (!in_array($tag,$tag_analysed)) {
if (!empty($tag)) {
if (!in_array($tag, $tag_analysed)) {
$tag_propre = corriger_caracteres($tag);
/**
* doit on creer un nouveau mot inexistant en base ?
*
*
* Si oui, on l'ajoute et on le lie directement à l'objet
* On insert la liaison de la triplette id_mot, id_auteur, objet dans spip_spipicious
* On met $mot_cree = true pour gagner les deux requêtes sql suivantes
*/
$id_tag = sql_getfetsel("id_mot","spip_mots","titre=".sql_quote($tag_propre)." AND id_groupe=".intval($id_groupe));
*/
$id_tag = sql_getfetsel('id_mot', 'spip_mots', 'titre=' . sql_quote($tag_propre) . ' AND id_groupe=' . intval($id_groupe));
if (!$id_tag) { // creation tag
$id_tag = mot_inserer($id_groupe);
$c = array('titre' => $tag_propre);
$c = ['titre' => $tag_propre];
mot_modifier($id_tag, $c);
$mots_associes[] = $id_tag;
sql_insertq("spip_spipicious",array('id_mot' => intval($id_tag),'id_auteur' => intval($id_auteur),'id_objet' => intval($id_objet), 'objet'=>$type, 'position' => intval($position),'statut' => $statut));
$message = _T('spipicious:tag_ajoute',array('name'=>$tag));
sql_insertq('spip_spipicious', ['id_mot' => intval($id_tag),'id_auteur' => intval($id_auteur),'id_objet' => intval($id_objet), 'objet' => $type, 'position' => intval($position),'statut' => $statut]);
$message = _T('spipicious:tag_ajoute', ['name' => $tag]);
$invalider = true;
$mot_cree = true;
}
}
/**
* Le mot n'est pas un nouveau mot
*/
if(!$mot_cree){
*/
if (!$mot_cree) {
/**
* Est il déjà lié à l'objet
* Si oui, on ne fait rien, si non, on crée la liaison
*/
$result = sql_getfetsel("id_mot",'spip_mots_liens',"id_mot=".intval($id_tag)." AND objet=".sql_quote($objet)." AND id_objet=".intval($id_objet));
if (!$result)
$result = sql_getfetsel('id_mot', 'spip_mots_liens', 'id_mot=' . intval($id_tag) . ' AND objet=' . sql_quote($objet) . ' AND id_objet=' . intval($id_objet));
if (!$result) {
$mots_associes[] = $id_tag;
}
/**
* La triplette id_mot, id_auteur, objet existe t elle déjà?
* Si non on crée le lien dans la table spip_spipicious
* Si oui, on vérifie que les statuts soient bon
*/
$result_spipicious = sql_fetsel("id_mot,statut","spip_spipicious","id_mot=".intval($id_tag)." AND id_objet=".intval($id_objet)." AND objet=".sql_quote($type)." AND id_auteur=".intval($id_auteur));
if(!$result_spipicious['id_mot']){
sql_insertq("spip_spipicious",array('id_mot' => intval($id_tag),'id_auteur' => intval($id_auteur),'id_objet' => intval($id_objet), 'objet'=>$type, 'position' => intval($position),'statut' => $statut));
$message = _T('spipicious:tag_ajoute',array('name'=>$tag));
$result_spipicious = sql_fetsel('id_mot,statut', 'spip_spipicious', 'id_mot=' . intval($id_tag) . ' AND id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($type) . ' AND id_auteur=' . intval($id_auteur));
if (!$result_spipicious['id_mot']) {
sql_insertq('spip_spipicious', ['id_mot' => intval($id_tag),'id_auteur' => intval($id_auteur),'id_objet' => intval($id_objet), 'objet' => $type, 'position' => intval($position),'statut' => $statut]);
$message = _T('spipicious:tag_ajoute', ['name' => $tag]);
$invalider = true;
}
else if(isset($result_spipicious['statut']) && ($result_spipicious['statut'] != $statut)){
sql_updateq('spip_spipicious',array('statut'=>$statut),"id_mot=".intval($id_tag)." AND id_objet=".intval($id_objet)." AND objet=".sql_quote($type)." AND id_auteur=".intval($id_auteur));
} elseif (isset($result_spipicious['statut']) && ($result_spipicious['statut'] != $statut)) {
sql_updateq('spip_spipicious', ['statut' => $statut], 'id_mot=' . intval($id_tag) . ' AND id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($type) . ' AND id_auteur=' . intval($id_auteur));
$message = _T('spipicious:tag_deja_present');
}else
} else {
$message = _T('spipicious:tag_deja_present');
}
}
$position++;
}
$tag_analysed[] = $tag;
}
if(count($mots_associes) > 0)
objet_associer(array('mot'=>$mots_associes),array($type => $id_objet));
if (count($mots_associes) > 0) {
objet_associer(['mot' => $mots_associes], [$type => $id_objet]);
}
if($position > 1){
$tags = implode('<br />',$tag_analysed);
$message = _T('spipicious:tags_ajoutes',array('name'=>$tags,'nb'=>$position));
if ($position > 1) {
$tags = implode('<br />', $tag_analysed);
$message = _T('spipicious:tags_ajoutes', ['name' => $tags,'nb' => $position]);
}
}
return array($message,$invalider,'');
return [$message,$invalider,''];
}

76
action/spipicious_supprimer_tags.php

@ -9,44 +9,47 @@
* Erational (http://www.erational.org)
*
* © 2007-2013 - Distribue sous licence GNU/GPL
*
*
* Action de suppression de tags sur un objet
*
*
* @package SPIP\SPIPicious\Actions
*/
if (!defined("_ECRIRE_INC_VERSION")) return;#securite
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Action de suppression de tags appelée par le formulaire
*
*
* @return array $suppression
* Retourne un tableau composé du message de retour et si on doit invalider le cache
* Retourne un tableau composé du message de retour et si on doit invalider le cache
*/
function action_spipicious_supprimer_tags_dist(){
function action_spipicious_supprimer_tags_dist() {
$id_objet = _request('spipicious_id');
$type = _request('spipicious_type');
include_spip('inc/autoriser');
if(!autoriser('tagger_spipicious',$type,$id_objet))
if (!autoriser('tagger_spipicious', $type, $id_objet)) {
return false;
}
$id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
$id_table_objet = id_table_objet($type);
$remove_tags = _request('remove_tags');
$suppression = spipicious_supprimer_tags($remove_tags,$id_auteur,$id_objet,$type,$id_table_objet);
$suppression = spipicious_supprimer_tags($remove_tags, $id_auteur, $id_objet, $type, $id_table_objet);
return $suppression;
}
/**
* Fonction de suppression de tags à un objet
*
*
* -* On supprime l'élément dans spipicious qui lie le mot à l'objet et l'auteur
* -* Si le mot n'est plus utilisé sur l'objet par aucun autre auteur, on supprime la liaison du mot à l'objet
* -* Si le mot n'est plus utilisé du tout, on le supprimer définitivement
*
*
* @param array $remove_tags
* Un tableau php des tags à enlever
* @param int $id_auteur
@ -57,54 +60,56 @@ function action_spipicious_supprimer_tags_dist(){
* Le type de l'objet à tagger
* @param int $id_table_objet
* La clé primaire de l'objet à tagger ("id_article","id_rubrique")
* @return array
* @return array
* Retourne un tableau composé du message de retour et si on doit invalider le cache
*/
function spipicious_supprimer_tags($remove_tags,$id_auteur,$id_objet,$type,$id_table_objet){
function spipicious_supprimer_tags($remove_tags, $id_auteur, $id_objet, $type, $id_table_objet) {
include_spip('action/editer_mot');
include_spip('action/editer_liens');
$compte = 0;
$tags_removed = array();
$mots_supprimes = array();
$mots_dissocier = array();
foreach($remove_tags as $remove_tag){
$tags_removed = [];
$mots_supprimes = [];
$mots_dissocier = [];
foreach ($remove_tags as $remove_tag) {
/**
* Suppression dans spip_spipicious du lien entre notre auteur, le mot et l'objet
*/
sql_delete("spip_spipicious","id_auteur=".intval($id_auteur)." AND id_objet=".intval($id_objet)." AND id_mot=".intval($remove_tag)." AND objet=".sql_quote($type)); // on efface le mot associe a l'auteur sur l'objet
sql_delete('spip_spipicious', 'id_auteur=' . intval($id_auteur) . ' AND id_objet=' . intval($id_objet) . ' AND id_mot=' . intval($remove_tag) . ' AND objet=' . sql_quote($type)); // on efface le mot associe a l'auteur sur l'objet
/**
* On vérifie si le tag est utilisé par un autre utilisateur
*
*
* -* Si non, on ajoute le mot clé dans le tableau $mots_supprimes qui le supprimera définitivement
* -* Si oui, on vérifie si le mot est utilisé par un autre utilisateur sur le même objet:
* -** Si non, on ajoute le mot dans le tableau $mots_dissocier qui le dissociera le mot de l'objet
* -** Si oui, on ne fait rien de plus
*/
$tag_utilise = sql_getfetsel("id_auteur","spip_spipicious","id_mot=".intval($remove_tag));
if (!$tag_utilise){
$tag_utilise = sql_getfetsel('id_auteur', 'spip_spipicious', 'id_mot=' . intval($remove_tag));
if (!$tag_utilise) {
$mots_supprimes[] = $remove_tag;
$mots_dissocier[] = $remove_tag;
}else {
$tag_utilise_2 = sql_getfetsel("id_auteur","spip_spipicious","id_mot=".intval($remove_tag)." AND id_objet=".intval($id_objet)." AND objet=".sql_quote($type));
if(!$tag_utilise_2)
} else {
$tag_utilise_2 = sql_getfetsel('id_auteur', 'spip_spipicious', 'id_mot=' . intval($remove_tag) . ' AND id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($type));
if (!$tag_utilise_2) {
$mots_dissocier[] = $remove_tag;
}
}
/**
* On crée notre message
*/
$titre_mot = sql_getfetsel("titre","spip_mots","id_mot=".intval($remove_tag));
$message = _T('spipicious:tag_supprime',array('name'=>$titre_mot));
$titre_mot = sql_getfetsel('titre', 'spip_mots', 'id_mot=' . intval($remove_tag));
$message = _T('spipicious:tag_supprime', ['name' => $titre_mot]);
$tags_removed[] = $titre_mot;
$compte++;
}
if(count($mots_dissocier) > 0)
objet_dissocier(array('mot'=>$mots_dissocier),array($type => $id_objet));
if (count($mots_dissocier) > 0) {
objet_dissocier(['mot' => $mots_dissocier], [$type => $id_objet]);
}
if(count($mots_supprimes) > 0){
foreach($mots_supprimes as $id_mot){
if (count($mots_supprimes) > 0) {
foreach ($mots_supprimes as $id_mot) {
mot_supprimer($remove_tag);
}
}
@ -112,13 +117,14 @@ function spipicious_supprimer_tags($remove_tags,$id_auteur,$id_objet,$type,$id_t
/**
* Si on a quelque chose => on invalide le cache
*/
if($compte > 0)
if ($compte > 0) {
$invalider = true;
if($compte > 1){
$tags = implode('<br />',$tags_removed);
$message = _T('spipicious:tags_supprimes',array('name'=>$tags,'nb'=>$compte));
}
return array($message,$invalider,'');
if ($compte > 1) {
$tags = implode('<br />', $tags_removed);
$message = _T('spipicious:tags_supprimes', ['name' => $tags,'nb' => $compte]);
}
return [$message,$invalider,''];
}

45
base/spipicious.php

@ -1,4 +1,5 @@
<?php
/**
* SPIP.icio.us
* Gestion de tags lies aux auteurs
@ -10,11 +11,13 @@
* © 2007-2013 - Distribue sous licence GNU/GPL
*
* Déclarations relatives à la base de données
*
*
* @package SPIP\SPIPicious\Pipelines
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Déclarer les interfaces de la table spip_spipicious pour le compilateur
@ -25,13 +28,13 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
* @return array
* Déclarations d'interface pour le compilateur
*/
function spipicious_declarer_tables_interfaces($interface){
function spipicious_declarer_tables_interfaces($interface) {
/**
* Une jointure sur chaque table pour faciliter
*/
$interface['tables_jointures'][] = 'spipicious';
$interface['table_des_tables']['spipicious']='spipicious';
$interface['table_des_tables']['spipicious'] = 'spipicious';
return $interface;
}
@ -45,26 +48,26 @@ function spipicious_declarer_tables_interfaces($interface){
* @return array $tables_principales
* Description complétée des tables
*/
function spipicious_declarer_tables_principales($tables_principales){
$spip_spipicious = array(
"id_mot" => "bigint(21) NOT NULL",
"id_auteur" => "bigint(21) NOT NULL",
"id_objet" => "bigint(21) NOT NULL",
"objet" => "VARCHAR (25) DEFAULT '' NOT NULL",
"position" => "int(10) NOT NULL",
"statut" => "varchar(10) DEFAULT 'publie' NOT NULL",
"maj" => "TIMESTAMP");
function spipicious_declarer_tables_principales($tables_principales) {
$spip_spipicious = [
'id_mot' => 'bigint(21) NOT NULL',
'id_auteur' => 'bigint(21) NOT NULL',
'id_objet' => 'bigint(21) NOT NULL',
'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
'position' => 'int(10) NOT NULL',
'statut' => "varchar(10) DEFAULT 'publie' NOT NULL",
'maj' => 'TIMESTAMP'];
$spip_spipicious_key = array(
"PRIMARY KEY" => "id_mot, id_auteur, objet, id_objet",
"KEY id_mot" => "id_mot",
"KEY id_auteur" => "id_auteur",
"KEY objet" => "objet",
"KEY id_objet" => "id_objet");
$spip_spipicious_key = [
'PRIMARY KEY' => 'id_mot, id_auteur, objet, id_objet',
'KEY id_mot' => 'id_mot',
'KEY id_auteur' => 'id_auteur',
'KEY objet' => 'objet',
'KEY id_objet' => 'id_objet'];
$tables_principales['spip_spipicious'] = array(
$tables_principales['spip_spipicious'] = [
'field' => &$spip_spipicious,
'key' => &$spip_spipicious_key);
'key' => &$spip_spipicious_key];
return $tables_principales;
}

47
formulaires/spipicious_ajax.php

@ -1,4 +1,5 @@
<?php
/**
* SPIP.icio.us
* Gestion de tags lies aux auteurs
@ -8,17 +9,19 @@
* Erational (http://www.erational.org)
*
* © 2007-2013 - Distribue sous licence GNU/GPL
*
*
* Formulaire d'ajout de tags
*
*
* @package SPIP\SPIPicious\Formulaires
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Chargement du formulaire d'ajout/suppression de tags
*
*
* @param int id_objet
* L'identifiant numérique de l'objet à tagger
* @param string $type
@ -28,23 +31,25 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
* @return array $valeurs
* Les valeurs chargées dans le formulaire
*/
function formulaires_spipicious_ajax_charger($id_objet,$type='article',$retour='') {
function formulaires_spipicious_ajax_charger($id_objet, $type = 'article', $retour = '') {
include_spip('inc/autoriser');
if(!autoriser('tagger_spipicious',$type,$id_objet))
return array('editable'=> false);
if (!autoriser('tagger_spipicious', $type, $id_objet)) {
return ['editable' => false];
}
$id_type = id_table_objet($type);
if(!function_exists('lire_config'))
if (!function_exists('lire_config')) {
include_spip('inc/config');
}
$id_groupe = lire_config('spipicious/groupe_mot');
$valeurs = array('type'=>$type,'id_objet'=>$id_objet,'spipicious_groupe'=>$id_groupe);
$valeurs = ['type' => $type,'id_objet' => $id_objet,'spipicious_groupe' => $id_groupe];
return $valeurs;
}
/**
* Traitement du formulaire d'ajout/suppression de tags
*
*
* @param int id_objet
* L'identifiant numérique de l'objet à tagger
* @param string $type
@ -54,30 +59,30 @@ function formulaires_spipicious_ajax_charger($id_objet,$type='article',$retour='
* @return array
* Le tableau de tous les CVT avec editable et message
*/
function formulaires_spipicious_ajax_traiter($id_objet,$type,$retour='') {
function formulaires_spipicious_ajax_traiter($id_objet, $type, $retour = '') {
$add_tags = _request('add_tags');
$remove_tag = _request('remove_tags');
$spipicious_tags = _request('spipicious_tags');
if (is_array($remove_tag)) {
$supprimer_tags = charger_fonction('spipicious_supprimer_tags','action');
$supprimer_tags = charger_fonction('spipicious_supprimer_tags', 'action');
list($message,$invalider,$err) = $supprimer_tags();
}
if((!empty($add_tags)) AND (!empty($spipicious_tags))){
$ajouter_tags = charger_fonction('spipicious_ajouter_tags','action');
if ((!empty($add_tags)) and (!empty($spipicious_tags))) {
$ajouter_tags = charger_fonction('spipicious_ajouter_tags', 'action');
list($message,$invalider,$err) = $ajouter_tags();
}
if($invalider){
include_spip("inc/invalideur");
suivre_invalideur("1");
if ($invalider) {
include_spip('inc/invalideur');
suivre_invalideur('1');
}
if ($retour) {
include_spip('inc/headers');
return array('redirect' => $retour);
return ['redirect' => $retour];
}
return array('editable'=>true,'message'=>$message);
return ['editable' => true,'message' => $message];
}

170
spipicious_administrations.php

@ -1,4 +1,5 @@
<?php
/**
* SPIP.icio.us
* Gestion de tags lies aux auteurs
@ -21,56 +22,58 @@
* Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
* @return void
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
function spipicious_upgrade($nom_meta_base_version,$version_cible){
$maj = array();
$maj['create'] = array(
array('maj_tables',array('spip_spipicious')),
array('spipicious_creer_config','')
);
$maj['0.2'] = array(
array('sql_alter',"TABLE `spip_spipicious` ADD PRIMARY KEY (`id_mot`) "),
array('sql_alter',"TABLE `spip_spipicious` ADD KEY (`id_auteur`) "),
array('sql_alter',"TABLE `spip_spipicious` ADD maj timestamp AFTER position "),
);
$maj['0.3'] = array(
array('sql_alter',"TABLE `spip_spipicious` ADD id_rubrique bigint(21) NOT NULL AFTER`id_article` "),
array('sql_alter',"TABLE `spip_spipicious` ADD id_document bigint(21) NOT NULL AFTER`id_rubrique` "),
);
$maj['0.5'] = array(
array('sql_alter',"TABLE `spip_spipicious` ADD id_syndic bigint(21) NOT NULL AFTER`id_document` "),
array('sql_alter',"TABLE `spip_spipicious` ADD id_evenement bigint(21) NOT NULL AFTER`id_syndic` "),
);
$maj['0.6'] = array(
array('sql_alter',"TABLE `spip_spipicious` ADD id_objet bigint(21) NOT NULL AFTER `id_auteur` "),
array('sql_alter',"TABLE `spip_spipicious` ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER `id_objet` "),
array('spipicious_id_objet_objet_upgrade',array()),
array('sql_alter',"TABLE `spip_spipicious` DROP PRIMARY KEY"),
array('sql_alter',"TABLE `spip_spipicious` ADD PRIMARY KEY (`id_mot`,`id_auteur`,`id_objet`,`objet`)"),
array('sql_alter',"TABLE `spip_spipicious` DROP COLUMN `id_article`"),
array('sql_alter',"TABLE `spip_spipicious` DROP COLUMN `id_document`"),
array('sql_alter',"TABLE `spip_spipicious` DROP COLUMN `id_rubrique`"),
array('sql_alter',"TABLE `spip_spipicious` DROP COLUMN `id_syndic`"),
array('sql_alter',"TABLE `spip_spipicious` DROP COLUMN `id_evenement`"),
);
$maj['0.6.1'] = array(
array('spipicious_update_conf_mot',array()),
);
$maj['0.6.2'] = array(
array('maj_tables',array('spip_spipicious')),
array('spipicious_update_statuts_mots',array()),
);
$maj['0.6.3'] = array(
array('sql_alter',"TABLE spip_spipicious ADD INDEX id_mot (id_mot)"),
array('sql_alter',"TABLE spip_spipicious ADD INDEX id_objet (id_objet)"),
array('sql_alter',"TABLE spip_spipicious ADD INDEX objet (objet)")
);
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function spipicious_upgrade($nom_meta_base_version, $version_cible) {
$maj = [];
$maj['create'] = [
['maj_tables',['spip_spipicious']],
['spipicious_creer_config','']
];
$maj['0.2'] = [
['sql_alter','TABLE `spip_spipicious` ADD PRIMARY KEY (`id_mot`) '],
['sql_alter','TABLE `spip_spipicious` ADD KEY (`id_auteur`) '],
['sql_alter','TABLE `spip_spipicious` ADD maj timestamp AFTER position '],
];
$maj['0.3'] = [
['sql_alter','TABLE `spip_spipicious` ADD id_rubrique bigint(21) NOT NULL AFTER`id_article` '],
['sql_alter','TABLE `spip_spipicious` ADD id_document bigint(21) NOT NULL AFTER`id_rubrique` '],
];
$maj['0.5'] = [
['sql_alter','TABLE `spip_spipicious` ADD id_syndic bigint(21) NOT NULL AFTER`id_document` '],
['sql_alter','TABLE `spip_spipicious` ADD id_evenement bigint(21) NOT NULL AFTER`id_syndic` '],
];
$maj['0.6'] = [
['sql_alter','TABLE `spip_spipicious` ADD id_objet bigint(21) NOT NULL AFTER `id_auteur` '],
['sql_alter',"TABLE `spip_spipicious` ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER `id_objet` "],
['spipicious_id_objet_objet_upgrade',[]],
['sql_alter','TABLE `spip_spipicious` DROP PRIMARY KEY'],
['sql_alter','TABLE `spip_spipicious` ADD PRIMARY KEY (`id_mot`,`id_auteur`,`id_objet`,`objet`)'],
['sql_alter','TABLE `spip_spipicious` DROP COLUMN `id_article`'],
['sql_alter','TABLE `spip_spipicious` DROP COLUMN `id_document`'],
['sql_alter','TABLE `spip_spipicious` DROP COLUMN `id_rubrique`'],
['sql_alter','TABLE `spip_spipicious` DROP COLUMN `id_syndic`'],
['sql_alter','TABLE `spip_spipicious` DROP COLUMN `id_evenement`'],
];
$maj['0.6.1'] = [
['spipicious_update_conf_mot',[]],
];
$maj['0.6.2'] = [
['maj_tables',['spip_spipicious']],
['spipicious_update_statuts_mots',[]],
];
$maj['0.6.3'] = [
['sql_alter','TABLE spip_spipicious ADD INDEX id_mot (id_mot)'],
['sql_alter','TABLE spip_spipicious ADD INDEX id_objet (id_objet)'],
['sql_alter','TABLE spip_spipicious ADD INDEX objet (objet)']
];
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
@ -83,79 +86,84 @@ function spipicious_upgrade($nom_meta_base_version,$version_cible){
* @return void
*/
function spipicious_vider_tables($nom_meta_version_base) {
sql_drop_table("spip_spipicious");
sql_drop_table('spip_spipicious');
effacer_meta($nom_meta_version_base);
effacer_meta('spipicious');
}
/**
* Fonction de création de configuration automatique
*
*
* Crée un groupe de mots intitulé "- Tags -"
* Active la configuration précise des groupes de mots si elle ne l'est pas
* Active les mots sur les articles s'ils ne le sont pas
* Crée la configuration de base avec le groupe de mot et les administrateurs pouvant ajouter des mots
*
*
* @return void
*/
function spipicious_creer_config(){
if(!($id_groupe = sql_getfetsel('id_groupe','spip_groupes_mots','titre='.sql_quote('- Tags -'))))
$id_groupe = sql_insertq('spip_groupes_mots',array('titre' => '- Tags -','tables_liees' => 'articles','minirezo'=>'oui','comite'=>'oui','forum'=>'oui'));
function spipicious_creer_config() {
if (!($id_groupe = sql_getfetsel('id_groupe', 'spip_groupes_mots', 'titre=' . sql_quote('- Tags -')))) {
$id_groupe = sql_insertq('spip_groupes_mots', ['titre' => '- Tags -','tables_liees' => 'articles','minirezo' => 'oui','comite' => 'oui','forum' => 'oui']);
}
if($GLOBALS['meta']['config_precise_groupes'] == 'non')
ecrire_meta('config_precise_groupes','oui','oui');
if ($GLOBALS['meta']['config_precise_groupes'] == 'non') {
ecrire_meta('config_precise_groupes', 'oui', 'oui');
}
if($GLOBALS['meta']['articles_mots'] == 'non')
ecrire_meta('articles_mots','oui','oui');
if ($GLOBALS['meta']['articles_mots'] == 'non') {
ecrire_meta('articles_mots', 'oui', 'oui');
}
ecrire_meta('spipicious',serialize(array('people' => array('0minirezo'),'groupe_mot' => $id_groupe)),'oui');
ecrire_meta('spipicious', serialize(['people' => ['0minirezo'],'groupe_mot' => $id_groupe]), 'oui');
}
/**
* Change la configuration du groupe de mot si déjà configuré
*
*
* @return void
*/
function spipicious_update_conf_mot(){
if(!function_exists('lire_config'))
function spipicious_update_conf_mot() {
if (!function_exists('lire_config')) {
include_spip('inc/config');
}
$id_groupe = lire_config('spipicious/groupe_mot');
if(intval($id_groupe) > 0)
sql_updateq('spip_groupes_mots',array('tables_liees' => 'articles','minirezo'=>'oui','comite'=>'oui','forum'=>'oui'),'id_groupe='.$id_groupe);
if (intval($id_groupe) > 0) {
sql_updateq('spip_groupes_mots', ['tables_liees' => 'articles','minirezo' => 'oui','comite' => 'oui','forum' => 'oui'], 'id_groupe=' . $id_groupe);
}
}
/**
* Fonction d'upgrade : vérifier les status des spipicious
*
*
* @return void
*/
function spipicious_update_statuts_mots(){
$spipicious = sql_select('*','spip_spipicious');
while($iter = sql_fetch($spipicious)){
function spipicious_update_statuts_mots() {
$spipicious = sql_select('*', 'spip_spipicious');
while ($iter = sql_fetch($spipicious)) {
$table = table_objet_sql($iter['objet']);
$id_table_objet = id_table_objet($iter['objet']);
$objet = sql_fetsel('*',$table,$id_table_objet.'='.intval($iter['id_objet']));
if(isset($objet['statut']) && $objet['statut'] != 'publie'){
sql_updateq('spip_spipicious',array('statut'=>'prop'),'id_objet='.intval($iter['id_objet'].' AND objet='.sql_quote($iter['objet'])));
}else if(!is_array($objet)){
sql_updateq('spip_spipicious',array('statut'=>'prop'),'id_objet='.intval($iter['id_objet'].' AND objet='.sql_quote($iter['objet'])));
$objet = sql_fetsel('*', $table, $id_table_objet . '=' . intval($iter['id_objet']));
if (isset($objet['statut']) && $objet['statut'] != 'publie') {
sql_updateq('spip_spipicious', ['statut' => 'prop'], 'id_objet=' . intval($iter['id_objet'] . ' AND objet=' . sql_quote($iter['objet'])));
} elseif (!is_array($objet)) {
sql_updateq('spip_spipicious', ['statut' => 'prop'], 'id_objet=' . intval($iter['id_objet'] . ' AND objet=' . sql_quote($iter['objet'])));
}
}
}
}
/**
* Fonction d'upgrade : réunir en un seul champs id_objet/objet
*
*
* @return void
*/
function spipicious_id_objet_objet_upgrade () {
function spipicious_id_objet_objet_upgrade() {
// Recopier les donnees avec le coupe id_objet / objet
foreach (array('article', 'rubrique', 'document', 'evenement', 'syndic') as $liste => $l) {
$s = sql_select('*', 'spip_spipicious','id_'.$l.' > 0');
foreach (['article', 'rubrique', 'document', 'evenement', 'syndic'] as $liste => $l) {
$s = sql_select('*', 'spip_spipicious', 'id_' . $l . ' > 0');
while ($t = sql_fetch($s)) {
$t['id_objet'] = $t["id_$l"];
$t['objet'] = $l;
sql_updateq('spip_spipicious',$t,'id_'.$l.' = '.intval($t['id_'.$l]).' AND id_mot='.intval($t['id_mot'].' AND id_auteur='.intval($t{'id_auteur'})));
sql_updateq('spip_spipicious', $t, 'id_' . $l . ' = ' . intval($t['id_' . $l]) . ' AND id_mot=' . intval($t['id_mot'] . ' AND id_auteur=' . intval($t['id_auteur'])));
}
}
}

26
spipicious_autoriser.php

@ -1,4 +1,5 @@
<?php
/**
* SPIP.icio.us
* Gestion de tags lies aux auteurs
@ -8,37 +9,40 @@
* Erational (http://www.erational.org)
*
* © 2007-2013 - Distribue sous licence GNU/GPL
*
*
* Fichier des autorisations du plugin
*
*
* @package SPIP\SPIPicious\Autorisations
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Déclarer l'utilisation du pipeline
* Cela évite de recalculer les pipeline tout le temps
*/
function spipicious_autoriser(){}
function spipicious_autoriser() {
}
/**
* Fonction définissant qui est autorisé à tagger
* Se base sur la configuration de spip.icio.us
*
* @param string $faire
* @param string $faire
* L'action d'autoriser
* @param string $type
* @param string $type
* L'objet sur lequel on souhaite tagger, peut être article,rubrique,breve,forum...
* @param int $id
* @param int $id
* L'id de l'objet type sur lequel on souhaite ajouter un tag
* @param array $qui
* @param array $qui
* La session visiteur
* @param array $opt
* Les options mais pas utilisées
* @return bool
* @return bool
* true si ok, false sinon
*/
function autoriser_tagger_spipicious_dist($faire, $type, $id, $qui, $opt){
return (in_array($qui['statut'],lire_config('spipicious/people',array('0minirezo'))));
function autoriser_tagger_spipicious_dist($faire, $type, $id, $qui, $opt) {
return (in_array($qui['statut'], lire_config('spipicious/people', ['0minirezo'])));
}

6
spipicious_options.php

@ -1,7 +1,9 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
if (!defined('_SELECTEUR_GENERIQUE_ACTIVER_PUBLIC')) {
define('_SELECTEUR_GENERIQUE_ACTIVER_PUBLIC', true);
}
}

78
spipicious_pipelines.php

@ -1,4 +1,5 @@
<?php
/**
* SPIP.icio.us
* Gestion de tags lies aux auteurs
@ -8,55 +9,59 @@
* Erational (http://www.erational.org)
*
* © 2007-2013 - Distribue sous licence GNU/GPL
*
*
* Fichiers des pipelines du plugin
*
*
* @package SPIP\SPIPicious\Pipelines
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Insertion dans le pipeline insert_head_css (SPIP)
*
*
* Insertion de la CSS nécessaire dans le head
*
*
* @param string $flux
* Le contenu de la balise #INSERT_HEAD_CSS
* @return string $flux
* Le contenu de la balise #INSERT_HEAD_CSS modifié
*/
function spipicious_insert_head_css($flux) {
$flux .= "\n<link rel='stylesheet' href='".find_in_path("css/spipicious.css")."' type='text/css' />\n";
$flux .= "\n<link rel='stylesheet' href='" . find_in_path('css/spipicious.css') . "' type='text/css' />\n";
return $flux;
}
/**
* Insertion dans le pipeline optimiser_base_disparus (SPIP)
*
*
* Supprimer les liens spipicious/objet sur les éléments disparus
*
* @param array $flux
*
* @param array $flux
* Le contexte du pipeline
* @return array $flux
* Le contexte du flux non modifié
*/
function spipicious_optimiser_base_disparus($flux){
function spipicious_optimiser_base_disparus($flux) {
/**
* On fonctionne comme les documents dans genie/optimiser
*/
$r = sql_select("DISTINCT objet","spip_spipicious");
while ($t = sql_fetch($r)){
$r = sql_select('DISTINCT objet', 'spip_spipicious');
while ($t = sql_fetch($r)) {
$type = $t['objet'];
$spip_table_objet = table_objet_sql($type);
$id_table_objet = id_table_objet($type);
$res = sql_select("L.id_mot AS id,L.id_objet AS id_objet",
"spip_spipicious AS L
$res = sql_select(
'L.id_mot AS id,L.id_objet AS id_objet',
"spip_spipicious AS L
LEFT JOIN $spip_table_objet AS O
ON O.$id_table_objet=L.id_objet AND L.objet=".sql_quote($type),
"O.$id_table_objet IS NULL");
while ($row = sql_fetch($res)){
sql_delete("spip_spipicious", array("id_mot=".$row['id'],"id_objet=".$row['id_objet'],"objet=".sql_quote($type)));
ON O.$id_table_objet=L.id_objet AND L.objet=" . sql_quote($type),
"O.$id_table_objet IS NULL"
);
while ($row = sql_fetch($res)) {
sql_delete('spip_spipicious', ['id_mot=' . $row['id'],'id_objet=' . $row['id_objet'],'objet=' . sql_quote($type)]);
}
}
return $flux;
@ -64,45 +69,48 @@ function spipicious_optimiser_base_disparus($flux){
/**
* Insertion dans le pipeline pre_boucle (SPIP)
*
* Dans une boucle SPIPICIOUS, si on ne passe pas le critère tout ou statut,
*
* Dans une boucle SPIPICIOUS, si on ne passe pas le critère tout ou statut,
* on n'affiche pas ceux non publiés
*
*
* @param object $boucle
* Les paramètres de la boucle
* @return object $boucle
* Les paramètres de la boucle modifiés
*/
function spipicious_pre_boucle($boucle){
function spipicious_pre_boucle($boucle) {
if ($boucle->type_requete == 'spipicious') {
$id_table = $boucle->id_table;
$mstatut = $id_table .'.statut';
if (!isset($boucle->modificateur['criteres']['tout'])
&& !isset($boucle->modificateur['criteres']['statut']))
$boucle->where[]= array("'='", "'$mstatut'", "'\"publie\"'");
$mstatut = $id_table . '.statut';
if (
!isset($boucle->modificateur['criteres']['tout'])
&& !isset($boucle->modificateur['criteres']['statut'])
) {
$boucle->where[] = ["'='", "'$mstatut'", "'\"publie\"'"];
}
}
return $boucle;
}
/**
* Insertion dans le pipeline de post-edition (SPIP)
*
* A l'institution d'un objet (changement de statut),
*
* A l'institution d'un objet (changement de statut),
* si l'objet n'a pas le statut publié et qu'il a des tags spipicious, on passe ses tags en prop
* sinon, on les publie
*
*
* @param array $flux
* Le contexte du pipeline
* @return $flux
* Le contexte du pipeline sans modification
*/
function spipicious_post_edition($flux){
if($flux['args']['action'] == 'instituer'){
function spipicious_post_edition($flux) {
if ($flux['args']['action'] == 'instituer') {
$objet = objet_type($flux['args']['table']);
if(isset($flux['data']['statut']) && ($flux['data']['statut'] != 'publie'))
sql_updateq('spip_spipicious',array('statut'=>'prop'),'id_objet='.intval($flux['args']['id_objet']).' AND objet='.sql_quote($objet).' AND statut="publie"');
else
sql_updateq('spip_spipicious',array('statut'=>'publie'),'id_objet='.intval($flux['args']['id_objet']).' AND objet='.sql_quote($objet).' AND statut="prop"');
if (isset($flux['data']['statut']) && ($flux['data']['statut'] != 'publie')) {
sql_updateq('spip_spipicious', ['statut' => 'prop'], 'id_objet=' . intval($flux['args']['id_objet']) . ' AND objet=' . sql_quote($objet) . ' AND statut="publie"');
} else { sql_updateq('spip_spipicious', ['statut' => 'publie'], 'id_objet=' . intval($flux['args']['id_objet']) . ' AND objet=' . sql_quote($objet) . ' AND statut="prop"');
}
}
return $flux;
}

Loading…
Cancel
Save