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

' + /*.'
'._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); +} + +?> \ No newline at end of file