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

' /*.'
'._T('couteauprive:supprimer_cadre').'
'*/ . fin_boite_info(true); } function cs_infos_webmasters() { include_spip('inc/autoriser'); if (!defined('boites_privees_WEBMASTERS') || !autoriser('configurer','csinfoswebmasters')) return ''; include_spip('cout_define'); list($w) = get_liste_administrateurs(); return cs_cadre_depliable(_T('couteau:webmestres'), 'bp_infos_webmasters', "

".(strlen($w)?'• '.str_replace(', ','
• ',$w):_T('couteau:variable_vide'))."

"); } function cs_infos_connection() { include_spip('inc/autoriser'); if (!defined('boites_privees_AUTEURS') || !autoriser('configurer','csinfosconnection')) return ''; include_spip('public/assembler'); return cs_cadre_depliable(_T('couteau:connections'), 'bp_infos_connection', recuperer_fond('fonds/derniers_connectes')); } function cs_formatspip($id_article){ include_spip('public/assembler'); if(!$txt = recuperer_fond('fonds/format_spip', array('id_article'=>$id_article))) return ''; $txt = explode('@TITRE@=', $txt, 2); // compatibilite avec SPIP 1.92 $compat = function_exists('bouton_block_depliable'); $bouton = $compat?bouton_block_depliable(cs_div_configuration().$txt[1], 'invisible', "formatspip") :bouton_block_invisible("formatspip").cs_div_configuration().$txt[1]; $bloc = $compat?debut_block_depliable(false, "formatspip") :debut_block_invisible("formatspip"); return debut_cadre_enfonce(find_in_path('/img/formatspip-24.png'), true, '', $bouton) . $bloc . $txt[0] . fin_block() . fin_cadre_enfonce(true); } function cs_urls_propres($type, $id) { global $type_urls; if(!$id) return ''; $res = ""; // SPIP >= 2.0 if(defined('_SPIP19300')) { $url = generer_url_entite_absolue($id, $type, '', '', true); $lien_public = "\n[[". _T('couteau:urls_propres_lien'). "|{$url}->{$url}]]\n\n"; $s = sql_select("url, date", "spip_urls", "id_objet=$id AND type='$type'", '', 'date DESC'); $now = date('Y-m-d H:i:s'); $info = ' ('._T('couteau:url_verrouillee').')'; while ($t = sql_fetch($s)) $res .= ($res?'
':'').'• '.$t['url'].($t[date]>$now?$info:'')."\n"; // SPIP 1.92 } else { // impossible de calculer l'url publique d'ici. $table = $type.($type=='syndic'?'':'s'); $r = spip_query("SELECT url_propre FROM spip_$table WHERE id_$type=$id"); if ($r && $r = spip_fetch_array($r) ) { if(!strlen($r=$r['url_propre'])) $r=_T('couteauprive:variable_vide'); $res .= "• $r\n"; } $lien_public = './?exec=action_rapide&arg=type_urls|URL_objet_191&format=iframe&type_objet='.$type.'&id_objet='.$id.'&script=foo'; $lien_public = ''; } $format = in_array($type_urls, array('page', 'standard', 'html')) ?_T('couteau:urls_propres_erreur') :_T('couteau:urls_propres_objet'); $mem = $GLOBALS['class_spip_plus']; $GLOBALS['class_spip_plus']=' class="spip"'; $res = propre( _T('couteau:urls_propres_format', array( 'format'=>$type_urls, 'url'=>generer_url_ecrire('admin_couteau_suisse', 'cmd=descrip&outil=type_urls#cs_infos') )). "\n\n" . $format . "\n\n" . '|{{'. _T('couteau:2pts', array( 'objet'=>strtoupper(filtrer_entites(_T('couteau:objet_'.$type))).' '.$id ))."}}|\n" . "|$res|") // bug SPIP ? . propre($lien_public); $GLOBALS['class_spip_plus'] = $mem; return cs_cadre_depliable(_T('couteau:urls_propres_titre'), 'bp_urls_propres', $res); } function cs_div_configuration() { include_spip('inc/autoriser'); if(!autoriser('configurer', 'cs')) return ''; $img = defined('_SPIP30000')?chemin_image('secteur-12.png'):_DIR_IMG_PACK.'secteur-12.gif'; return '
'._T('couteau:configurer').'
'; } function cs_cadre_depliable($titre, $id, $texte) { // SPIP 1.92 if(!defined('_SPIP19300')) return debut_cadre_relief(find_in_path('img/couteau-24.gif'), true) . cs_div_configuration() . "
" . block_parfois_visible($id, "$titre", $texte, 'text-align: center;') . "
" . fin_cadre_relief(true); // SPIP >= 2.0 return cadre_depliable(find_in_path('img/couteau-24.gif'), cs_div_configuration()."$titre", false /*true = deplie*/, $texte, $id); } ?>