Esempio n. 1
0
function exec_description_outil_dist() {
cs_log("INIT : exec_description_outil_dist() - Preparation du retour par Ajax (donnees transmises par GET)");
	$script = _request('script');
	$outil = _request('outil');
cs_log(" -- outil = $outil - script = $script");
	cs_minipres(!preg_match('/^\w+$/', $script));
	// ici on commence l'initialisation de tous les outils
	global $outils, $metas_vars, $metas_outils;
	include_spip('cout_utils');
	// remplir $outils (et aussi $cs_variables qu'on n'utilise pas ici);
	include_spip('config_outils');
cs_log(" -- exec_description_outil_dist() - Appel de config_outils.php : nb_outils = ".count($outils));
	// installer les outils
	cs_installe_outils();

cs_log(" -- appel de charger_fonction('description_outil', 'inc') et de description_outil($outil, $script) :");
	include_spip('inc/cs_outils');
	$description_outil = charger_fonction('description_outil', 'inc');
	$descrip = cs_initialisation_d_un_outil($outil, $description_outil, true);
	cs_init_plugins();

cs_log(" FIN : exec_description_outil_dist() - Appel maintenant de ajax_retour() pour afficher la ligne de configuration de l'outil");	
	include_spip('inc/texte');
	include_spip('cout_fonctions'); // fonctions pour les pipelines
	ajax_retour(propre($descrip));
}
function boites_privees_URL_objet_exec() {
cs_log("INIT : exec_action_rapide_dist() - Preparation du retour par Ajax (donnees transmises par GET)");
	$script = _request('script');
cs_log(" -- fonction = $fct - script = $script - arg = $arg");
	cs_minipres(!preg_match('/^\w+$/', $script));
	$res = function_exists($fct = 'action_rapide_'._request('fct'))?$fct():'';
cs_log(" FIN : exec_description_outil_dist() - Appel maintenant de ajax_retour() pour afficher le formulaire de la boite privee");	
	ajax_retour($res);
}
Esempio n. 3
0
function description_outil2($outil_id) {
	if(!strlen($outil_id)) return _T('couteauprive:outils_cliquez');
	global $outils, $metas_vars, $metas_outils;
	include_spip('cout_utils');
	// remplir $outils (et aussi $cs_variables qu'on n'utilise pas ici);
	include_spip('config_outils');
cs_log(" -- description_outil2($outil_id) - Appel de config_outils.php : nb_outils = ".count($outils));

cs_log(" -- appel de charger_fonction('description_outil', 'inc') et de description_outil($outil_id) :");
	$description_outil = charger_fonction('description_outil', 'inc');
	$descrip = cs_initialisation_d_un_outil($outil_id, $description_outil, true);

	include_spip('inc/presentation');
	include_spip('inc/texte');
	include_spip('public/parametrer'); // fonctions pour les pipelines

	$s = '<div class="cs-cadre">';

	$outil = $outils[$outil_id]; unset($outils);
	$actif = $outil['actif'];
	$puce = $actif?'puce-verte.gif':'puce-rouge.gif';
	$titre_etat = _T('couteauprive:outil_'.($actif?'actif':'inactif'));
	$nb_var = intval($outil['nb_variables']);

	// cette valeur par defaut n'est pas definie sous SPIP 1.92
	@define('_ID_WEBMESTRES', 1);
	if(!strlen($outil['id']) || !autoriser('configurer', 'outil', 0, NULL, $outil))
		return $s . _T('info_acces_interdit') . '</div>';

	$s .= "<h3 class='titrem'><img src='"._DIR_IMG_PACK."$puce' width='9' height='9' alt=\"$titre_etat\" title=\"$titre_etat\" />&nbsp;" . $outil['nom'] . '</h3>';
	$s .= '<div class="cs_menu_outil">';
	if($nb_var)
		$s .= '<a href="'.generer_url_ecrire(_request('source'),'cmd=reset&outil='.$outil_id).'" title="' . _T('couteauprive:par_defaut') . '">' . _T('couteauprive:par_defaut') . '</a>&nbsp;|&nbsp;';
	if(!$actif)
		$s .= '<a href="'.generer_url_ecrire(_request('source'),'cmd=hide&outil='.$outil_id).'" title="' . _T('couteauprive:outil_cacher') . '">' . _T('couteauprive:outil_cacher') . '</a>&nbsp;|&nbsp;';
	$act = $actif?'des':'';
	$s .= '<a href="'.generer_url_ecrire(_request('source'),'cmd=switch&outil='.$outil_id).'" title="'._T("couteauprive:outil_{$act}activer_le").'">'._T("couteauprive:outil_{$act}activer")."</a></div>";
	if(strlen($temp = cs_action_fichiers_distants($outil) . cs_action_rapide($outil_id, $actif))) 
		$s .= "<div class='cs_action_rapide' id='cs_action_rapide'>$temp</div>";
	$s .= propre($descrip);
	$serial = serialize(array_keys($outil));
	$p = '';
	if($b=cs_balises_traitees($outil_id, '*, #'))
		$p .=  '<p>' . _T('couteauprive:detail_balise_etoilee', array('bal' => $b.'*')) . '</p>';
	if($actif && isset($outil['code:spip_options']) && strlen($outil['code:spip_options']) && ($outil_id<>'cs_comportement'))
		$p .= '<p>' . _T('couteauprive:detail_spip_options'.(defined('_CS_SPIP_OPTIONS_OK')?'_ok':''), array('lien'=>description_outil_liens_callback(array(1=>'cs_comportement')))) . '</p>';
	if(isset($outil['jquery']) && $outil['jquery']=='oui')
		$p .= '<p>' . _T('couteauprive:detail_jquery2') . '</p>';
	if(isset($outil['auteur']) && strlen($outil['auteur']))
		$p .= '<p>' . _T('auteur') .' '. ($outil['auteur']) . '</p>';
	if(isset($outil['contrib']) && strlen($outil['contrib']))
		$p .= '<p>' . _T('couteauprive:contrib', array('url'=>'[->'._URL_CONTRIB.$outil['contrib'].']')) . '</p>';

	return $s . propre($p) . detail_outil($outil_id) . '</div>';
}
Esempio n. 4
0
function exec_charger_description_outil_dist() {
cs_log("INIT : exec_charger_description_outil_dist() - Preparation du retour par Ajax sur div#cs_infos");

	cs_minipres();
	if ($outil_id=_request('outil')) {
		include_spip('inc/headers');
		http_no_cache();
		include_spip('inc/cs_outils');
		echo '<div id="cs_infos" class="cs_infos">'.description_outil2($outil_id).'</div>';
	}

cs_log(" FIN : exec_charger_description_outil_dist()");	
}
Esempio n. 5
0
function exec_action_rapide_dist() {
	global $type_urls;
cs_log("INIT : exec_action_rapide_dist() - Preparation par Ajax (donnees transmises par GET)");
	// droits du Couteau Suisse
	cs_minipres();
	list($outil, $arg) = explode('|',_request('arg'),2);
	$script = _request('script');
cs_log(" -- script = $script - outil = $outil - arg = $arg");
	// verification du format de l'argument
	cs_minipres(!isset($arg));
	if(!strlen($arg)) $arg = 'retour_nul';
	cs_minipres(!preg_match('/^\w+$/', $script));

	switch ($arg) {
		// retour normal des actions rapides du couteau suisse : affichage du bloc au sein de la description d'un outil
		case 'description_outil':
cs_log(" -- Preparation de l'affichage de la description de l'outil");
			include_spip('inc/cs_outils');
			$res = cs_action_rapide($outil);
cs_log(" FIN : exec_action_rapide_dist() - Appel maintenant de ajax_retour() pour afficher le formulaire de '$outil'");	
			ajax_retour($res);
			break;

		// mettre a jour les fichiers distants d'un outil...
		case 'fichiers_distants':
			global $outils;
			include_spip('cout_utils');
			include_spip('config_outils');
			if(autoriser('configurer', 'outil', 0, NULL, $outil)) {
				include_spip('inc/cs_outils');
				cs_initialisation_d_un_outil($outil, charger_fonction('description_outil', 'inc'), false);
				// mise a jour forcee
				$res = cs_action_fichiers_distants($outils[$outil], true);
			}
cs_log(" FIN : exec_action_rapide_dist() - Appel maintenant de ajax_retour() pour afficher le formulaire de '$outil'");	
			ajax_retour($res);
			break;

		// pour le reste (ex : 'sauve_pack' en mode non ajax), rien a faire.
		case 'retour_nul':
cs_log("FIN : exec_action_rapide_dist() - Retour nul");
			break;

		default:
			// fonction mon_outil_argument_exec() suite a l'appel de ?exec=action_rapide&arg=mon_outil|argument
cs_log("FIN : exec_action_rapide_dist() - Appel de {$outil}_{$arg}_exec()");
			include_spip('outils/'.$outil.'_action_rapide');
			if(function_exists($fct = $outil.'_'.$arg.'_exec')) $fct();
			break;
	}
}
Esempio n. 6
0
function action_description_outil_post($index) {
	global $metas_vars;
	if(defined('_SPIP19300')) $connect_id_auteur = $GLOBALS['auteur_session']['id_auteur'];
		else global $connect_id_auteur;
cs_log("Debut : action_description_outil_post($index) - On modifie la(les) variable(s) dans la base");

	// on recupere dans le POST le nom des variables a modifier et le nom de l'outil correspondant
	$variables = unserialize(urldecode(corriger_caracteres(_request('variables'))));
	$outil = corriger_caracteres(_request('outil'));
//cs_log($variables, '$variables = ');
cs_log($metas_vars, 'metas_vars :');
	// besoin des outils pour l'autorisation de modifier les variables
	include_spip('cout_utils');
	include_spip('config_outils');
	global $outils, $cs_variables;
	// on traite chaque variable
	foreach($variables as $var) if(autoriser('configurer', 'variable', 0, NULL, array('nom'=>$var, 'outil'=>$outils[$outil]))) {
		// on recupere dans le POST la nouvelle valeur de la variable
		$final = corriger_caracteres(_request($var));
		if (in_array($var, $metas_vars['_nombres'])) $final = intval($final);
		spip_log("Outil du Couteau Suisse ($outil). Demande de modification sur une variable par l'auteur id=$connect_id_auteur : %$var% = $final");
		// et on modifie les metas !
		if(!isset($cs_variables[$var]['externe'])) $metas_vars[$var] = $final;
		if(isset($cs_variables[$var]['action'])) {
			$action = str_replace('%s', $final, $cs_variables[$var]['action']);
			spip_log("Outil du Couteau Suisse ($outil). Demande d'action sur cette variable : ".$action);
			eval($action);
		}
			
	} else 
		spip_log("Outil du Couteau Suisse n°$index. Modification interdite de la variable %$var% par l'auteur id=$connect_id_auteur !!");
//cs_log($metas_vars, " -- metas_vars = ");
	ecrire_meta('tweaks_variables', serialize($metas_vars));
	ecrire_metas();

cs_log(" -- donc, reinitialisation forcee !");
	// on reinitialise tout, au cas ou ...
	include_spip('inc/invalideur');
	suivre_invalideur("1"); # tout effacer
	purger_repertoire(_DIR_SKELS);
	purger_repertoire(_DIR_CACHE);
	include_spip('cout_utils');
	cs_initialisation(true);
cs_log(" FIN : action_description_outil_post(Array($index)) - Reinitialisation forcee terminee.");
}
Esempio n. 7
0
function couleurs_installe() {
cs_log("couleurs_installe()");

	list($couleurs, $html) = couleurs_constantes();
	foreach ($couleurs[0] as $c=>$val)
		$couleurs[2][$val] = isset($html[$couleurs[1][$c]])?'#'.$html[$couleurs[1][$c]]:$couleurs[1][$c];

	if (_COULEURS_SET===1) {
		$perso = preg_replace('^\s*(=|,)\s*^','\1', trim(_COULEURS_PERSO));
		$perso = explode(',', $perso);
		$couleurs_perso = array();
		foreach($perso as $p) {
			list($a, $b) = explode('=', $p, 2);
			$b = isset($html[$b])?'#'.$html[$b]:$b;
			if (strlen($a) && strlen($b)) {
				if(in_array($b, $couleurs[0])) $b = $couleurs[2][$b];
				$couleurs_perso[$a] = $b;
			} elseif (strlen($a)) {
				$b=in_array($a, $couleurs[0])?$couleurs[2][$a]:$a;
				$couleurs_perso[$a] = $b;
			}
		}
		$couleurs[2] = $couleurs_perso;
		$couleurs[0] = join('|', array_keys($couleurs_perso));
		$aide = array_keys($couleurs_perso);
	} else {
		$aide = array_merge($couleurs[0], $couleurs[1]);
		$couleurs[0] = join('|', $couleurs[0]);
		$couleurs[1] = join('|', $couleurs[1]);
	}

	if(defined('_DIR_PLUGIN_PORTE_PLUME')) {
		foreach(array('texte','fond') as $x) {
			$texte = _T('couteau:pp_couleur_icone_'.$x);
			foreach ($couleurs[2] as $i=>$c) {
				// icone de la couleur $i
				$color = isset($html[$c])?$html[$c]:str_replace('#','',$c);
				$couleurs[4]['couleur_'.$x.'_'.str_replace(' ','_',$i)] = array($texte, $color);
			}
		}
	}
	return array('couleurs'=>$couleurs, 'couleurs_racc'=>$aide);
}
Esempio n. 8
0
function exec_test_couteau_suisse() {
cs_log("DEDUT : exec_test_couteau_suisse()");
	global $connect_statut, $connect_toutes_rubriques;

	cs_minipres();

	// initialisation generale forcee : recuperation de $outils;
	cs_initialisation(true);

	$commencer_page = charger_fonction('commencer_page', 'inc');
	echo $commencer_page(_T('couteauprive:titre_tests'), "configuration", 'couteau_suisse');

	echo '<br /><br /><br />', gros_titre(_T('couteauprive:titre_tests'), '', false), 
		'<div style="width:98%; text-align:left; margin:0 auto">';
	// et hop, on lance les tests !
	cs_les_tests();
	echo '</div>';

	echo fin_page();
cs_log(" FIN : exec_test_couteau_suisse()");
}
Esempio n. 9
0
function couteau_suisse_upgrade($nom_meta_base_version,$version_cible){
//echo "<br>UPGRADE : $nom_meta_base_version,$version_cible,",$GLOBALS['meta'][$nom_meta_base_version];
if(defined('_LOG_CS')) cs_log("couteau_suisse_upgrade($nom_meta_base_version,$version_cible)");
	$current_version = 0.0;
	if(	(!isset($GLOBALS['meta'][$nom_meta_base_version]))
			|| (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
		if ($current_version==0.0){
			include_spip('base/create');
			creer_base();
		}
		if (version_compare($current_version,$tmp='1.0','<')){
			echo '<h4>',_T('couteau:titre'),' - Upgrade ',$tmp,'</h4>';
			cs_suppr_metas_var('set_options');
			cs_suppr_metas_var('radio_set_options3');
			cs_suppr_metas_var('radio_set_options', 'radio_set_options4');
			cs_suppr_metas_var('radio_type_urls', 'radio_type_urls3');
			cs_suppr_metas_var('radio_type_urls2', 'radio_type_urls3');
			cs_suppr_metas_var('radio_filtrer_javascript', 'radio_filtrer_javascript3');
			cs_suppr_metas_var('radio_filtrer_javascript2', 'radio_filtrer_javascript3');
			cs_suppr_metas_var('radio_suivi_forums', 'radio_suivi_forums3');
			cs_suppr_metas_var('desactive_cache');
			cs_suppr_metas_var('radio_desactive_cache', 'radio_desactive_cache3');
			cs_suppr_metas_var('target_blank');
			cs_suppr_metas_var('url_glossaire_externe', 'url_glossaire_externe2');
			cs_suppr_metas_var('');
			effacer_meta('cs_decoupe');
			if(defined('_SPIP19300')) {
				if(@$metas_vars['radio_desactive_cache3']==1) $metas_vars['radio_desactive_cache4']=-1;
				cs_suppr_metas_var('radio_desactive_cache3');
			}
			foreach(array('cs_decoration', 'cs_decoration_racc', 'cs_smileys', 'cs_smileys_racc', 'cs_chatons', 'cs_chatons_racc',
					'cs_jcorner', 'cs_couleurs', 'cs_couleurs_racc', 'cs_filets_sep', 'cs_filets_sep_racc', 'cs_insertions') as $meta) 
				effacer_meta($meta);
			ecrire_meta($nom_meta_base_version,$current_version=$tmp);
		}
		ecrire_metas();
	}
}
Esempio n. 10
0
function action_action_rapide_dist() {
	$arg = _request('arg');
cs_log("INIT : action_action_rapide_dist() - Une action rapide '$arg' a ete demandee !");
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();
	$redirect = _request('redirect');
	if(!defined('_SPIP19300')) $redirect = urldecode($redirect);
	$outil = (
		preg_match(',&arg=([\w_]+)\|[\w_]+,', $redirect, $regs)
		|| preg_match(',&outil=([\w_]+),', $redirect, $regs)
		|| preg_match(',&cmd=([\w_]+),', $redirect, $regs)
	)?$regs[1]:false;

	// au cas ou, pour redirige_par_entete()
	include_spip('inc/headers');
	spip_log("action 'action_rapide' du Couteau suisse : $outil|$arg");
//cs_log($_POST, 'action POST='); cs_log($_GET, 'action GET=');

	switch($arg) {

		case 'fichiers_distants':
			// mettre a jour les fichiers distants d'un outil...
			// rien a faire :-)
			break;

		default: if($outil) {
			// fonction mon_outil_argument_action() suite a l'appel de ?action=action_rapide&arg=mon_outil|argument
			$fct = $outil.'_'.$arg.'_action';
cs_log("FIN : action_action_rapide_dist() - Appel de $fct()");
			include_spip('outils/'.$outil.'_action_rapide');
			if(function_exists($fct)) $fct();
				else cs_log(" -- Erreur : fonction $fct() introuvable !");
		} else	cs_log(" -- Erreur : outil non renseigne !");
		break;
	}

}
Esempio n. 11
0
function insertions_installe() {
	if(!defined('_insertions_LISTE')) return NULL;
cs_log("insertions_installe()");
	// on decode la liste entree dans la config
	$liste = preg_split("/[\r\n]+/", trim(_insertions_LISTE));
	$str = $preg = array(array(), array());
	foreach ($liste as $l) {
		list($a, $b) = explode("=", $l, 2);
		$a = trim($a); $b = trim($b);
		if (!strlen($a) || preg_match('/^(#|\/\/)/', $a)) {
			// remarques ou vide
		} elseif (preg_match('/^\((.+)\)$/', $a, $reg)) {
			// les mots seuls
			$preg[0][] = '/\b'.$reg[1].'\b/'; $preg[1][] = $b;
		} elseif (preg_match('/^(\/.+\/[imsxuADSUX]*)$/', $a)) {
			// expressions regulieres
			$preg[0][] = $a; $preg[1][] = $b;
		} elseif (strlen($a)) {
			// simples remplacements
			$str[0][] = $a; $str[1][] = $b;
		}
	}
	return array('insertions' => array($str, $preg));
}
Esempio n. 12
0
function jcorner_installe() {
cs_log("jcorner_installe()");
	if(!defined('_jcorner_CLASSES')) return NULL;

	// on decode les balises entrees dans la config
	$classes = preg_split("/[\r\n]+/", trim(_jcorner_CLASSES));
	$code = array();
	foreach ($classes as $class) {
		list($class,) = explode('//', $class);
		if (preg_match('/^\s*([\'"]?)(.*?)\\1\s*=(.*)$/', $class, $regs)) {
			// forme avec commande jQuery
			$a = trim($regs[2]); $b = trim($regs[3]);
			$b = preg_match('/^(=*)\s*\.*(.*)$/', $b, $regs2)?trim($regs2[2]):'';
			$not = !strlen($regs2[1])?'.not(".jc_done").addClass("jc_done")':'';
			if(strlen($a) && strlen($b)) $code[] = "jQuery(\"$a\", this)$not.$b;";
		} elseif (preg_match('/^\s*([\'"]?)(.+)\\1\s*$/', $class, $regs)) {
			// forme simple avec coins arrondis
			$a = trim($regs[2]);
			if (strlen($a)) $code[] = "jQuery(\"$a\", this).not('.jc_done').addClass('jc_done').corner();";
		}
	}
	// en retour : le code jQuery
	return array('jcorner' => join("\n\t", $code));
}
Esempio n. 13
0
function cs_ecrire_config($regexpr, $replace, $ajout_sinon='') {
	$fo = cs_spip_file_options(1);
	$t='';
	if ($fo && strlen($regexpr) && strlen($replace)) {
		if (lire_fichier($fo, $t) && strlen($t)) {
			$t = preg_replace($regexpr, $replace, $t, 1);
			if(ecrire_fichier($fo, $t)) return;
			else if(defined('_LOG_CS')) cs_log("ERREUR : l'ecriture du fichier $fo a echoue !");
		} else if(defined('_LOG_CS')) cs_log(" -- fichier $fo illisible. Inclusion non permise");
		if(strlen($t)) return;
	}
	// creation
	if(!strlen($ajout_sinon)) return;
	$fo = cs_spip_file_options(2);
	$ok = ecrire_fichier($fo, '<?'."php\n".$ajout_sinon."\n?".'>');
if(defined('_LOG_CS')) cs_log(" -- fichier $fo absent ".($ok?'mais cree avec l\'inclusion':' et impossible a creer'));
}
Esempio n. 14
0
function smileys_installe() {
	$path = find_in_path('img/smileys');
cs_log("smileys_installe() : $path");
	$path2 = url_absolue($path);

	// l'ordre des smileys ici est important :
	//  - les doubles, puis les simples, puis les courts
	//  - le raccourci insere par la balise #SMILEYS est la premiere occurence de chaque fichier
	$smileys = array(
	// attention ' est different de ’ (&#8217;) (SPIP utilise/ecrit ce dernier)
	 ":&#8217;-))"=> 'pleure_de_rire.png',
	 ":&#8217;-)"=> 'pleure_de_rire.png',
	 ":&#8217;-D"	=> 'pleure_de_rire.png',
	 ":&#8217;-("	=> 'triste.png',
	
	// les doubles :
	 ':-))'	=> 'mort_de_rire.png',
	 ':))'	=> 'mort_de_rire.png',
	 ":'-))"=> 'pleure_de_rire.png',
	 ':-(('	=> 'en_colere.png',

	// les simples :
	 ';-)'	=> 'clin_d-oeil.png',
	 ':-)'	=> 'sourire.png',
	 ':-D'	=> 'mort_de_rire.png',
	 ":'-)"=> 'pleure_de_rire.png',
	 ":'-D"	=> 'pleure_de_rire.png',
	 ':-('	=> 'pas_content.png',
	 ":'-("	=> 'triste.png',
	 ':-&gt;' => 'diable.png',
	 '|-)'	=> 'rouge.png',
	 ':o)'	=> 'rigolo.png',
	 'B-)'	=> 'lunettes.png',
	 ':-P'	=> 'tire_la_langue.png',
	 ':-p'	=> 'tire_la_langue.png',
	 ':-|'	=> 'bof.png',
	 ':-/'	=> 'mouais.png',
	 ':-O'	=> 'surpris.png',
	 ':-o'	=> 'surpris.png',

	// les courts : tester a l'usage...
	// attention : ils ne sont reconnus que s'il y a un espace avant !
	 ':)'	=> 'sourire.png',
	 ':('	=> 'pas_content.png',
	 ';)'	=> 'clin_d-oeil.png',
	 ':|'	=> 'bof.png',
	 '|)'	=> 'rouge.png',
	 ':/'	=> 'mouais.png',
	);
	
	$aide = array();
	foreach ($smileys as $smy=>$val) {
		$espace = strlen($smy)==2?' ':'';
		$smileys2[0][] = $espace.$smy;
		list(,,,$size) = @getimagesize("$path/$val");
		// cs_code_echappement evite que le remplacement se fasse a l'interieur des attributs de la balise <img>
		$smileys2[1][] = cs_code_echappement($espace."<img alt=\"$smy\" title=\"$smy\" class=\"no_image_filtrer format_png\" src=\"$path2/$val\" $size/>", 'SMILE');
		$smileys2[2][] = $val;
		// aide : liste des smileys disponibles
		$aide[] = $smy;
	}

	if(defined('_DIR_PLUGIN_PORTE_PLUME')) {
		$sm = smileys_uniques($smileys2);
 		$max = count($sm[2]);
		for ($i=0; $i<$max; $i++)
			$smileys2[4]['smiley_'.str_replace('.png','',$sm[2][$i])] = $sm[2][$i];
	}
	return array('smileys'=>$smileys2, 'smileys_racc'=>$aide);
}
Esempio n. 15
0
function cs_log_sql($file, $sql, $action = 0)
{
    global $cs_logs, $account;
    $cs_logs['queries']++;
    $new = $cs_logs['queries'] . ') ' . $sql . "\n";
    $cs_logs['sql'][$file] = isset($cs_logs['sql'][$file]) ? $cs_logs['sql'][$file] . $new : $new;
    if (!empty($action) and !empty($cs_logs['save_actions'])) {
        $log = 'USERS_ID ' . $account['users_id'] . "\n" . $sql . "\n";
        cs_log('actions', $log);
    }
}
Esempio n. 16
0
		// lancer la procedure d'installation pour chaque outil
		if(defined('_LOG_CS')) cs_log(' -- cs_installe_outils...');
		cs_installe_outils();
		if(in_array('calcul', $GLOBALS['cs_params'])) {
			include_spip('inc/headers');
			redirige_par_entete(parametre_url($GLOBALS['REQUEST_URI'],'cs',str_replace('calcul','ok',join(',',$GLOBALS['cs_params'])),'&'));
		}
	}

	// a-t-on voulu inclure cout_fonctions.php ?
	if ($GLOBALS['cs_fonctions_essai']) {
		if(defined('_LOG_CS')) cs_log(" -- inclusion de : "._COUT_FONCTIONS_PHP);
		@include(_COUT_FONCTIONS_PHP);
	}

	if(defined('_LOG_CS')) cs_log(" FIN : cout_options, cs_spip_options = $GLOBALS[cs_spip_options], cs_options = $GLOBALS[cs_options], cs_fonctions_essai = $GLOBALS[cs_fonctions_essai]");
}

// Droits pour configurer le Couteau Suisse (fonction surchargeable sans le _dist)
// Droits par defaut equivalents a 'configurer' les 'plugins', donc tous les administrateurs non restreints
function autoriser_cs_configurer_dist($faire, $type, $id, $qui, $opt) {
	return autoriser('configurer', 'plugins', $id, $qui, $opt);
}

// Droits pour voir/manipuler un outil du Couteau Suisse
// $opt doit representer ici l'outil concerne : $outil
// Si $opt['autoriser'] (code PHP) n'est pas renseigne, ces droits natifs sont toujours accordes
function autoriser_outil_configurer_dist($faire, $type, $id, $qui, $opt) {
	if(!is_array($opt)) return autoriser('configurer', 'cs', $id, $qui, $opt);
	// test sur la version de SPIP
	$test = !cs_version_erreur($opt)
Esempio n. 17
0
function cs_installe_outils() {
	global $metas_outils;
	$datas = array();
	foreach($metas_outils as $nom=>$o) if(isset($o['actif']) && $o['actif']) {
		include_spip('outils/'.$nom);
		if(function_exists($f = $nom.'_installe')) {
			if(($tmp=$f())!==NULL) foreach($tmp as $i=>$v)
				$datas[$i] = "function cs_data_$i() { return " . var_export($v, true) . ";\n}";
if(defined('_LOG_CS')) cs_log(" -- $f() : OK !");
		}
	}
	$datas = array('code_outils' => $datas);
	ecrire_fichier_en_tmp($datas, 'outils');
	ecrire_metas();
}
Esempio n. 18
0
function exec_admin_couteau_suisse() {
cs_log("INIT : exec_admin_couteau_suisse()");
	global $spip_lang_right;
	global $outils, $afficher_outil, $metas_vars, $metas_outils;

	// cette valeur par defaut n'est pas definie sous SPIP 1.92
	@define('_ID_WEBMESTRES', 1);
	cs_minipres();
	$cmd = _request('cmd');
	$exec = _request('exec');

	include_spip('inc/cs_outils');
	cs_init_plugins();

	// id de l'auteur en session
	if(defined('_SPIP19300')) $connect_id_auteur = $GLOBALS['auteur_session']['id_auteur'];
		else global $connect_id_auteur;

	// reset general
	if($cmd=='resetall'){
		spip_log("Reset General du Couteau Suisse par l'auteur id=$connect_id_auteur");
		foreach(array_keys($GLOBALS['meta']) as $meta) {
			if(strpos($meta, 'tweaks_') === 0) effacer_meta($meta);
			if(strpos($meta, 'cs_') === 0) effacer_meta($meta);
		}
		$metas_vars = $metas_outils = array();
		// ici, pas d'initialisation...
		include_spip('cout_lancement');
		cout_exec_redirige('cmd=resetjs');
	}
	// installation personnalisee
	if(strlen($pack = _request('pack')) && isset($GLOBALS['cs_installer'][$pack]['outils'])) {
		if($cmd=='install'){
			spip_log("Installation personnalisee de '$pack' par l'auteur id=$connect_id_auteur");
			// installer le pack et rediriger
			cout_install_pack($pack, true);
		} elseif($cmd=='delete'){
			spip_log("Suppression de '$pack' par l'auteur id=$connect_id_auteur");
			$p = preg_quote($pack,'/');
			$r = "[$]GLOBALS\['cs_installer'\]\['$p'\] *=";
			cs_ecrire_config(
				array("/$r/", "/# [^\\n\\r]+[\\n\\r]+if\(0\) {$r}.*?# $p #[\\n\\r]+/s"),
				array('if(0) \0', ''));
			// simplement prendre en compte la supression
			cout_exec_redirige('cmd=pack', false);
		}
	}
	// reset des variables d'un outil
	if($cmd=='reset' && strlen($_GET['outil'])){
		spip_log("Reset des variables de '$_GET[outil]' par l'auteur id=$connect_id_auteur");
		global $outils;
		include_spip('cout_utils');
		include_spip('config_outils');
		if(autoriser('configurer', 'outil', 0, NULL, $outils[$_GET['outil']])) {
			include_spip('inc/cs_outils');
			cs_initialisation_d_un_outil($_GET['outil'], charger_fonction('description_outil', 'inc'), true);
			foreach ($outils[$_GET['outil']]['variables'] as $a)
				if(autoriser('configurer', 'variable', 0, NULL, array('nom'=>$a, 'outil'=>$outils[$_GET['outil']])))
					unset($metas_vars[$a]);
				else spip_log("Reset interdit de la variable %$a% !!");
			ecrire_meta('tweaks_variables', serialize($metas_vars));
		}
		// tout recompiler
		cout_exec_redirige("cmd=descrip&outil={$_GET[outil]}#cs_infos");
	}
	// reset de l'affichage
	if($cmd=='showall'){
		spip_log("Reset de tous les affichages du Couteau Suisse par l'auteur id=$connect_id_auteur");
		effacer_meta('tweaks_caches');
		cout_exec_redirige();
	}

	// afficher la description d'un outil ?
	$afficher_outil = ($cmd=='descrip' OR $cmd=='switch')?$_GET['outil']:'';

	// initialisation generale forcee : recuperation de $outils;
	cs_initialisation(true, $cmd!='noinclude');
	cs_installe_outils();

	// mise a jour des donnees si envoi via formulaire
	// sinon fait une passe de verif sur les outils
	if($cmd=='switch' OR $cmd=='hide'){
		enregistre_modif_outils($cmd);
		cout_exec_redirige(strlen($_GET['outil'])?"cmd=descrip&outil={$_GET[outil]}#cs_infos":'');
	}
//	else
//		verif_outils();

	$commencer_page = charger_fonction('commencer_page', 'inc');
	echo $commencer_page(_T('couteauprive:titre'), "configuration", 'couteau_suisse');

	// pour la  version du plugin
	include_spip('inc/plugin');
	if(isset($GLOBALS['meta']['plugin'])) {
		$t = unserialize($GLOBALS['meta']['plugin']);
		$dir = $t['COUTEAU_SUISSE']['dir'];
		$dir_type = $t['COUTEAU_SUISSE']['dir_type'];
		$bt_dir = $t['BARRETYPOENRICHIE']['dir'];
		$bt_version = $t['BARRETYPOENRICHIE']['version'];
	}
	if(!strlen($dir)) $dir = 'couteau_suisse';
	if(!strlen($bt_dir)) $bt_dir = 'barre_typo_v2';
	$get_infos = defined('_SPIP20100')?charger_fonction('get_infos','plugins'):'plugin_get_infos';
	if (isset($dir_type)) {
		$t = $get_infos($dir, false, constant($dir_type));
	} else {
		$t = $get_infos($dir);
	}
	$cs_version_base = $t['version_base']; $cs_version = $t['version'];
	// mises a jour eventuelles de la base
	installe_un_plugin($dir, $t, $dir_type);
	unset($t);
	if(!strlen($bt_version)) { $bt_version = $get_infos($bt_dir); $bt_version = $bt_version['version']; }
	
	$cs_revision = ((lire_fichier(_DIR_PLUGIN_COUTEAU_SUISSE.'svn.revision',$t)) && (preg_match(',<revision>(\d+)</revision>,',$t,$r)))
		?'<br/>'._T('couteauprive:version_revision', array('revision'=>$r[1])):"";
	include_spip('public/assembler');
	echo recuperer_fond('exec/admin_couteau_suisse_head', array(
		'force' => in_array(_request('var_mode'), array('calcul', 'recalcul'))?'oui':null,
		'cs_version' => $cs_version,
		'exec' => _request('exec'),
	));
	echo "<br /><br /><br />";
	gros_titre(_T('couteauprive:titre'), '', false);
	echo barre_onglets("configuration", 'couteau_suisse');
	echo '<div style="font-size:85%">';
// verification d'une base venant de SPIP 1.8
$res = spip_query("DESCRIBE spip_meta valeur");
$resultat = function_exists('spip_fetch_array')?spip_fetch_array($res):sql_fetch($res);
if($resultat['Type']!='text') echo "<p style=\"color:red;\">Attention : votre base semble ancienne et le Couteau Suisse ne va pas bien fonctionner.</p><p>La table 'spip_meta' a pour type de valeur '$resultat[Type]' au lieu de 'text'.</p>";
// verification de la barre typo V2
$mini = '2.5.3';
if(strlen($bt_version) and (version_compare($bt_version,$mini,'<'))) echo "<p>"._T('couteauprive:erreur:bt', array('version'=>$bt_version, 'mini'=>$mini))."</p>";
echo "<script type=\"text/javascript\"><!-- 
if(!window.jQuery) document.write('".str_replace('/','\/',addslashes(propre('<p>'._T('couteauprive:erreur:jquery').'</p>')))."');
//--></script>";
	echo '</div>';

	// chargement des outils
	include_spip('inc/cs_outils'); 
	list($outils_affiches_actifs, $liste_outils) = liste_outils();
	// cadre de gauche
	echo debut_gauche('', true);
	// pour la liste des docs sur spip-contrib
	$contribs = isset($GLOBALS['meta']['tweaks_contribs'])?unserialize($GLOBALS['meta']['tweaks_contribs']):array();
	foreach($contribs as $i=>$v) $contribs[$i] = preg_replace_callback('/@@(.*?)@@/', 'cs_couper_25', $v);
	sort($contribs);
	$aide = '';
	if(isset($GLOBALS['cs_installer'])) foreach(array_keys($GLOBALS['cs_installer']) as $pack)
		$aide .= "\n_ " . _T('couteauprive:pack_du', array('pack'=>"{[{$pack}|"._T('couteauprive:pack_installe').'->' . generer_url_ecrire($exec,'cmd=install&pack='.urlencode($pack)) . ']}'));
	// si le plugin est installe par procedure automatique, on permet la mise a jour directe (SPIP >= 2.0)
	$arg_chargeur = $GLOBALS['spip_version_base']>=15828?'url_zip_plugin2':'url_zip_plugin'; // eq. SPIP >= 2.1.2
	$form_update = preg_match(',plugins/auto/couteau_suisse/$,',_DIR_PLUGIN_COUTEAU_SUISSE)?
		"<input type='hidden' name='$arg_chargeur' value='http://files.spip.org/spip-zone/couteau_suisse.zip' />"
		. "<br/><div class='cs_sobre'><input type='submit' value='&bull; " . attribut_html(_T('couteauprive:version_update')) . "' class='cs_sobre' title='" . attribut_html(_T('couteauprive:version_update_title')) . "' /></div>"
		:"";
	// un lien si le plugin plugin "Telechargeur" est present (SPIP < 2.0)
	if(!strlen($form_update) && defined('_DIR_PLUGIN_CHARGEUR'))
		$form_update = "<br/>&bull; <a title='" . attribut_html(_T('couteauprive:version_update_chargeur_title')) . "' href='../spip.php?action=charger&plugin=couteau_suisse&url_retour=".urlencode(generer_url_ecrire('admin_couteau_suisse'))."'>"._T('couteauprive:version_update_chargeur').'</a>';
	// compilation du bandeau gauche
	$aide =	_T('couteauprive:help2', array(
			'version' => $cs_version.$cs_revision.'<br/>'.
				(defined('_CS_PAS_DE_DISTANT')?'('._T('couteauprive:version_distante_off').')':'<span class="cs_version">'._T('couteauprive:version_distante').'</span>')
				))
		. $form_update
		. '<br/>&bull;&nbsp;['._T('couteauprive:pack_titre') . '|' . _T('couteauprive:pack_alt') . '->' . generer_url_ecrire($exec,'cmd=pack#cs_infos') . "]\n\n"
		. _T('couteauprive:help3', array(

			'reset' => generer_url_ecrire($exec,'cmd=resetall'),
			'hide' => generer_url_ecrire($exec,'cmd=showall'),
			'contribs' => join('', $contribs),
			'install' => $aide
	));
	if(function_exists('redirige_action_post')) $aide = redirige_action_post('charger_plugin', '', 'admin_couteau_suisse', '', $aide); // SPIP >= 2.0
	$aide = '<div class="cs_aide">'._T('couteauprive:help')."\n\n$aide</div>";
	echo debut_boite_info(true), propre($aide), fin_boite_info(true);
	$aide = cs_aide_raccourcis();
	if(strlen($aide))
		echo debut_boite_info(true), $aide, fin_boite_info(true);
	$aide = cs_aide_pipelines($outils_affiches_actifs);
	if(strlen($aide))
		echo debut_boite_info(true), $aide, fin_boite_info(true);
	echo pipeline('affiche_gauche',array('args'=>array('exec'=>$exec),'data'=>''));

	echo creer_colonne_droite('', true);
	echo pipeline('affiche_droite',array('args'=>array('exec'=>$exec),'data'=>'')),
		debut_droite('', true),
		debut_cadre_trait_couleur(find_in_path('img/couteau-24.gif'),true,'','&nbsp;'._T('couteauprive:outils_liste')),
		_T('couteauprive:outil_intro'),
		"\n<table border='0' cellspacing='0' cellpadding='5' style='width:100%;'><tr><td class='sansserif'>";

	$_GET['source'] = $exec;
	echo '<div class="conteneur">', $liste_outils,
		'</div><br class="conteneur" /><div class="cs_patience"><br />'.http_img_pack('searching.gif','*','').' ...</div>';
	flush();
	echo '<div class="conteneur"><div id="cs_infos" class="cs_infos">',
		$cmd=='pack'?cs_description_pack():description_outil2($afficher_outil),
		'</div><script type="text/javascript"><!--
var cs_descripted = "', $afficher_outil, '";
document.write("<style type=\'text/css\'>#csjs{display:none;}<\/style>");
//--></script><div id="csjs" style="color:red;"><br/>', _T('couteauprive:erreur:js'),'</div>
<noscript><style type="text/css">#csjs{display:none;}</style><div style="color:red;"><br/>', _T('couteauprive:erreur:nojs'),
$_GET['modif']=='oui'?'<br/>'._T('couteauprive:vars_modifiees').'.':'','</div></noscript>',
		'</div></td></tr></table>',
		'<style type="text/css">.cs_patience{display:none;}</style>',
		fin_cadre_trait_couleur(true),

		pipeline('affiche_milieu',array('args'=>array('exec'=>$exec),'data'=>'')),
		fin_gauche(), fin_page();
cs_log(" FIN : exec_admin_couteau_suisse()");
}
Esempio n. 19
0
<?php

#-----------------------------------------------------#
#  Plugin  : Couteau Suisse - Licence : GPL           #
#  Auteur  : Patrice Vanneufville, 2006               #
#  Contact : patrice¡.!vanneufville¡@!laposte¡.!net   #
#  Infos : http://www.spip-contrib.net/?article2166   #
#-----------------------------------------------------#
if(!defined("_ECRIRE_INC_VERSION")) return;

// Noter :
// outils/mon_outil.php : inclus par les pipelines de l'outil
// outils/mon_outil_options.php : inclus par cout_options.php
// outils/mon_outil_fonctions.php : inclus par cout_fonctions.php

cs_log("inclusion de config_outils.php");
//-----------------------------------------------------------------------------//
//                               options                                       //
//-----------------------------------------------------------------------------//
/*
add_outil( array(
	'id' => 'revision_nbsp',
	'code:options' => '$GLOBALS["activer_revision_nbsp"] = true; $GLOBALS["test_i18n"] = true ;',
	'categorie' => 'admin',
));
*/


add_variables( array(
	'nom' => 'alinea',
	'check' => 'couteauprive:autobr_oui',
Esempio n. 20
0
// Attention, ici il se peut que le plugin ne soit pas initialise (cas des .js/.css par exemple)
if (!defined("_ECRIRE_INC_VERSION")) return;

// pour voir les erreurs ?
if (defined('_CS_REPORT')) error_reporting(E_ALL ^ E_NOTICE);
elseif (defined('_CS_REPORTALL')) error_reporting(E_ALL);

$GLOBALS['cs_fonctions_essai'] = 1;
//if(defined('_LOG_CS')) cs_log("INIT : cout_fonctions ($GLOBALS[cs_spip_options]/$GLOBALS[cs_options]/$GLOBALS[cs_fonctions]/$GLOBALS[cs_init])");

// plugin initialise si cout_options est OK (fin de compilation par exemple)
if(!$GLOBALS['cs_init']) {
	if($GLOBALS['cs_options']) {
		if(!$GLOBALS['cs_fonctions']) {
			// inclusion des fonctions pre-compilees
			if(defined('_LOG_CS')) cs_log("INCL : "._DIR_CS_TMP.'mes_fonctions.php');
			@include(_DIR_CS_TMP.'mes_fonctions.php');
			//if(defined('_LOG_CS')) cs_log("FIN INCL : "._DIR_CS_TMP.'mes_fonctions.php');
		} // else cs_log(' FIN : cout_fonctions deja inclus');
	} else {
		$cs_log = function_exists('cs_log') ? 'cs_log' : 'spip_log';
		$cs_log('ESSAI : cout_fonctions, mais cout_options n\'est pas inclus');
	}
} else {
	$cs_log = function_exists('cs_log') ? 'cs_log' : 'spip_log';
	$cs_log('ESSAI : cout_fonctions, mais initialisation en cours');
}

// raccourci pour le JavaScript
function cs_javascript($chaine) { return unicode_to_javascript(addslashes(html2unicode($chaine))); }
Esempio n. 21
0
function cs_header_hit(&$flux, $type, $suffixe='') {
	$f = "header$suffixe.$type";
	$nom = sous_repertoire(_DIR_VAR,'couteau-suisse') . $f;
	$tmp = _DIR_CS_TMP . $f;
	if(!file_exists($tmp) || !file_exists($nom) || $GLOBALS['var_mode']=='recalcul') {
		if (lire_fichier(_DIR_CS_TMP."header.$type.html", $t) && strlen($t)) {
			if(strpos($t, '<cs_html>')!==false)
				$t = preg_replace_callback(',<cs_html>(.*)</cs_html>,Ums', 'cs_compile_header_callback', $t);
			ecrire_fichier($nom, $t, true);
			ecrire_fichier($tmp, $t, true);
		} else {
			if(defined('_LOG_CS')) cs_log(" -- fichier $fo illisible. hit non construit");
			return;
		}
	}
	switch($type) {
		case 'js': $flux .= '<script src="'.$nom.'" type="text/javascript"></script>'; break;
		case 'css': include_spip('inc/filtres');
			$flux .= '<link rel="stylesheet" href="'.direction_css($nom).'" type="text/css" media="all" />'; break;
	}
}