X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fplugins%2Fauto%2Fcouteau_suisse%2Fcouteau_suisse%2Foutils%2Fboites_privees.php;fp=www%2Fplugins%2Fauto%2Fcouteau_suisse%2Fcouteau_suisse%2Foutils%2Fboites_privees.php;h=7f7d9fd0eeefd9a7d1bee2608cc4600330cca302;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/plugins/auto/couteau_suisse/couteau_suisse/outils/boites_privees.php b/www/plugins/auto/couteau_suisse/couteau_suisse/outils/boites_privees.php new file mode 100644 index 0000000..7f7d9fd --- /dev/null +++ b/www/plugins/auto/couteau_suisse/couteau_suisse/outils/boites_privees.php @@ -0,0 +1,215 @@ +$v) $e[$i] = "$i=$v"; + return spip_query("UPDATE ".join(',',$t)." SET ".join(',',$e).(empty($w)?'':" WHERE ".join(' AND ',$w))); + } } +} + +function boites_privees_affiche_gauche($flux){ + $exec = &$flux['args']['exec']; + if(defined('boites_privees_TRI_AUTEURS') && ($exec=='article' || $exec=='articles')) { + include_spip('outils/boites_privees_action_rapide'); + $flux['data'] .= action_rapide_tri_auteurs($flux['args']['id_article']); + } + if(defined('boites_privees_URLS_PROPRES')) + switch($exec) { + // SPIP>=3.0 : objets au singulier uniquement (autres 'case' pour compatibilite SPIP<3.0) + case 'article': case 'articles': $flux['data'] .= cs_urls_propres('article', $flux['args']['id_article']); break; + case 'rubrique': case 'naviguer': $flux['data'] .= cs_urls_propres('rubrique', $flux['args']['id_rubrique']); break; + case 'auteur': case 'auteur_infos': case 'auteurs_edit': $flux['data'] .= cs_urls_propres('auteur', $flux['args']['id_auteur']); break; + case 'breve': case 'breves_voir': $flux['data'] .= cs_urls_propres('breve', $flux['args']['id_breve']); break; + case 'mot': case 'mots_edit': $flux['data'] .= cs_urls_propres('mot', $flux['args']['id_mot']); break; + case 'site': case 'sites': $flux['data'] .= cs_urls_propres('syndic', $flux['args']['id_syndic']); break; + } + return cs_pipeline_boite_privee($flux, 'gauche'); +} + +function boites_privees_affiche_milieu($flux){ + switch($flux['args']['exec']) { + // SPIP >= 3.0 : objets au singulier + case 'article': case 'articles': { + // texte original au format spip + if(defined('boites_privees_ARTICLES')) + $flux['data'] .= cs_formatspip($flux['args']['id_article']); + break; + } + default: + break; + } + return cs_pipeline_boite_privee($flux, 'milieu'); +} + +function boites_privees_affiche_droite($flux) { + switch($flux['args']['exec']) { + case 'auteurs':case 'auteur_infos':case 'auteurs_edit': + $flux['data'] .= cs_infos_webmasters() . cs_infos_connection(); break; + case 'admin_couteau_suisse': + $flux['data'] .= cs_boite_rss(); break; + default: + break; + } + return cs_pipeline_boite_privee($flux, 'droite'); +} + +/* + fonction appelant une liste de fonctions qui permettent : + - d'ajouter facilement des boites privees perso + - voire de modifier les boites fournies par le plugin + par exemple : + $GLOBALS['boites_privees_gauche'][] = 'ma_boite_privee'; + function ma_boite_privee($flux, $exec) { + return $flux . debut_boite_info(true) . 'Youpi !!' . fin_boite_info(true); + } +*/ +function cs_pipeline_boite_privee(&$flux, $endroit) { + // liste de filtres + if(!is_array($GLOBALS[$globale = 'boites_privees_'.$endroit])) return $flux; + $liste = array_unique($GLOBALS[$globale]); + foreach($liste as $f) + if (function_exists($f)) $flux['data'] = $f($flux['data'], $flux['args']['exec']); + return $flux; +} + +// pipeline utilise sous SPIP>=3, histoire de respecter l'ordre de stockage des auteurs d'objets +function boites_privees_pre_boucle($flux) { + if(defined('boites_privees_TRI_AUTEURS') && $flux->type_requete=='auteurs' + && count($L1 = $flux->join) && count($w = &$flux->where)>1 && $w[0][0]=="'='" && $w[1][0]=="'='") { + $L1 = array_keys($L1); // alias de la jointure + $flux->order[] = 'sqlfield_auteurs_objet('.$w[0][2].','.$w[1][2].','._q($L1[0]).','._q($flux->serveur).')'; + } + return $flux; +} + +function sqlfield_auteurs_objet($id_objet, $type_objet, $alias, $serveur) { + static $res = array(); + if(!isset($r[$i = "$id_objet,$type_objet,$serveur"])) { + $t = sql_allfetsel('*','spip_auteurs_liens', "objet=$type_objet", '','','','',$serveur); + // hack qui conserve l'ordre de la table malgre les cles primaires + $r = array(); foreach($t as $e) if($e['id_objet'] == $id_objet) $r[] = $e["id_auteur"]; + $r[$i] = count($r)?'FIELD('.$alias.'.id_auteur,'.join($r, ',').')':''; + } + return $r[$i]; +} + +function cs_boite_rss() { + include_spip('inc/autoriser'); + if (!defined('boites_privees_CS') || !autoriser('configurer','csinfosrss')) return ''; + return debut_boite_info(true) + . '
'._T('couteauprive:rss_titre').'
'._T('couteauprive:rss_attente').'
".(strlen($w)?'• '.str_replace(', ','
• ',$w):_T('couteau:variable_vide'))."