$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'))."