function accesrestreint_appliquer_modifs_config() { include_spip('inc/meta'); // modifs de secu (necessitent une authentification ftp) $liste_meta = array( 'creer_htpasswd', 'creer_htaccess' ); foreach($liste_meta as $i) { if (_request($i) !== NULL AND _request($i) != $GLOBALS['meta'][$i]) { $admin = _T('info_modification_parametres_securite'); include_spip('inc/admin'); echo debut_admin(_request('exec'), $admin); foreach($liste_meta as $i) { if (_request($i) !== NULL) { ecrire_meta($i, _request($i)); } } ecrire_metas(); echo fin_admin($admin); break; } } }
function player_affiche_config_form ($exec_page){ global $spip_lang_right, $spip_lang_left; if ($player = _request('player')) { ecrire_meta('player', $player); if(version_compare($GLOBALS['spip_version_code'],'1.9300','<')) { include_spip("inc/meta"); ecrire_metas(); } } $player_ = $GLOBALS['meta']['player']; $out = "" . debut_cadre_trait_couleur(_DIR_PLUGIN_PLAYER_IMAGES."player-son-24.png", true, "", "Player Audio") . "<form action='".generer_url_ecrire($exec_page)."' method='post' class='verdana2'><div>" . bouton_radio("player", "neoplayer", "Neolao player", $player_ == "neoplayer") . "<br />" . bouton_radio("player", "dewplayer", "Dew player", $player_ == "dewplayer") . "<br />" . bouton_radio("player", "pixplayer", "One pixel out player", $player_ == "pixplayer") . "<br />" . bouton_radio("player", "eraplayer", "Erational player", $player_ == "eraplayer") . "<div style='text-align:$spip_lang_right'><input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo' /></div>" . "</div></form>" . fin_cadre_trait_couleur(true) ; return ($out); }
function player_vider_tables () { spip_log("PLAYER: UNINSTALL"); effacer_meta(_PLAYER_META_PREFERENCES); if(version_compare($GLOBALS['spip_version_code'],'1.9300','<')) { include_spip("inc/meta"); ecrire_metas(); } return(true); }
/** * Traite une demande de redirection * * Si le fond du formulaire demande expressement une redirection * par <!-- rediriger=1 -->, on stocke le message dans une meta * et on redirige le client, de maniere a charger la page * avec la nouvelle config (ce qui permet par exemple a Autorite * de controler d'eventuels conflits generes par les nouvelles autorisations) * * @param mixed $valeur # inutilisé * @param Object $cfg */ function cfg_post_traiter_param_rediriger($valeur, &$cfg){ if ($cfg->messages) { include_spip('inc/meta'); ecrire_meta('cfg_message_'.$GLOBALS['auteur_session']['id_auteur'], serialize($cfg->messages), 'non'); if (defined('_COMPAT_CFG_192')) ecrire_metas(); include_spip('inc/headers'); redirige_par_entete(parametre_url(self(),null,null,'&')); } }
function effacer() { foreach ($this->champs as $name => $def) { if (!$this->val[$name]) { effacer_meta($name); } } if (defined('_COMPAT_CFG_192')) { ecrire_metas(); } return array(true, $this->val); }
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."); }
function exec_cs_version_dist() { cs_minipres(); $version = _request('version'); $force = _request('force')=='oui'; // pour la version disponible, on regarde toutes les 2h00 $maj = isset($GLOBALS['meta']['tweaks_maj'])?unserialize($GLOBALS['meta']['tweaks_maj']):array(0, ''); if (!$force && $maj[1] && (time()-$maj[0] < 2*3600)) $distant = $maj[1]; else { include_spip('inc/distant'); $distant = recuperer_page(_URL_CS_PLUGIN_XML); if ($distant) $distant = $maj[1] = preg_match(',<version>([0-9.]+)</version>,', $distant, $regs)?$regs[1]:''; $maj[0] = time(); if ($distant) ecrire_meta('tweaks_maj', serialize($maj)); ecrire_metas(); } include_spip('inc/texte'); include_spip('cout_fonctions'); // fonctions pour les pipelines if (!$distant) return ajax_retour('<span style="color: red;">'._T('couteauprive:erreur:probleme', array('pb'=>cs_lien(_URL_CS_PLUGIN_XML,_T('couteauprive:erreur:distant')))).'</span>'); ajax_retour(ptobr(propre($distant==$version?_T('couteauprive:version_a_jour'):( $distant?_T('couteauprive:version_nouvelle', array('version' => "[{$distant}->http://files.spip.org/spip-zone/couteau_suisse.zip]")):'' )))); }
function galettonuts_vider_tables() { $res = spip_query("SELECT `id_auteur` FROM `spip_galettonuts` WHERE 1;"); while ($row = @mysql_fetch_array($res)) { spip_query("DELETE FROM `spip_auteurs` WHERE `spip_auteurs`.`id_auteur`={$row['id_auteur']};"); } if (isset($GLOBALS['meta']['galettonuts_config'])) { $config = unserialize($GLOBALS['meta']['galettonuts_config']); if (isset($config['zones'])) { include dirname(__FILE__) . '/../inc/galettonuts_fonctions.php'; galettonuts_dissocier_zones($config['zones']); } unset($config); } spip_query('DROP TABLE IF EXISTS spip_galettonuts'); effacer_meta('galettonuts_version'); effacer_meta('galettonuts_config'); effacer_meta('galettonuts_synchro'); ecrire_metas(); if (file_exists(_DIR_TMP . 'galettonuts_cron.lock')) { unlink(_DIR_TMP . 'galettonuts_cron.lock'); } if (file_exists(_DIR_TMP . 'galettonuts_cron.php')) { unlink(_DIR_TMP . 'galettonuts_cron.php'); } }
function exec_player_admin() { global $connect_statut , $connect_toutes_rubriques , $spip_lang_right , $spip_lang_left ; include_spip('inc/presentation'); include_spip('inc/meta'); include_spip('inc/config'); include_spip('inc/player_affiche_config_form'); include_spip('inc/player_flv_config'); if (!(($connect_statut == '0minirezo') && $connect_toutes_rubriques)) { echo _T('avis_non_acces_page'); echo fin_gauche(), fin_page(); exit; } $message_gauche = ""; $rubrique = "configuration"; $player_flv_lecteurs = unserialize(_PLAYER_FLV_LECTEURS); // la grosse table commune a tous les profils $player_flv_config = player_flv_config(); // lecture du meta $player_config = $GLOBALS['meta'][_PLAYER_META_PREFERENCES]; $player_config = $player_config ? unserialize($player_config) : array(); // est-ce bien un retour du formulaire ? $player_retour_formulaire = _request('btn_valider_video'); // aplatir le tableau en ne recuperant que les valeurs $player_flv_lecteurs_values = array(); foreach($player_flv_lecteurs as $key => $value) { $player_flv_lecteurs_values[$key] = $value['value']; } // verifier si le lecteur video indique est correct $player_video = $player_config['player_video'] = (($ii = _request('player_video')) && (in_array($ii, $player_flv_lecteurs_values))) ? $ii : _PLAYER_FLV_LECTEUR_DEFAULT ; $player_key = array_search($player_video, $player_flv_lecteurs_values); $player_config['player_key'] = $player_key; // premiere install pour le profil ou global if($player_premiere_installation = (!isset($player_config['player_video_prefs']))) { spip_log("PLAYER: premiere installation profil $player_key"); $player_config['player_video_prefs'] = array(); } // initialiser les variables, foreach($player_flv_config as $key => $value) { if($player_retour_formulaire) { $$key = (($ii = _request($key)) ? $ii : ''); } else if($player_premiere_installation) { $$key = $value['default']; } else { $$key = (isset($player_config['player_video_prefs'][$key]) ? $player_config['player_video_prefs'][$key] : ''); } // retire les # (il n'en faut pas en flash) if($value['type'] == 'color') { $$key = ltrim($$key, '#'); } // ne pas enregistrer les variables vides if(!empty($$key)) { $player_config['player_video_prefs'][$key] = $$key; } else if(isset($player_config['player_video_prefs'][$key])) { unset($player_config['player_video_prefs'][$key]); } } if($player_retour_formulaire) { //spip_log("PLAYER: enregistrement config profil $player_key". serialize($player_config)); // enregistrer la config ecrire_meta(_PLAYER_META_PREFERENCES, serialize($player_config)); if(version_compare($GLOBALS['spip_version_code'],'1.9300','<')) { include_spip("inc/meta"); ecrire_metas(); } } $commencer_page = (function_exists('debut_page')) ? "debut_page" : charger_fonction('commencer_page', 'inc') ; //////////////////////////////////// // PAGE CONTENU //////////////////////////////////// $page_result = "" . $commencer_page(_T(_PLAYER_LANG."configuration_player"), _PLAYER_PREFIX) . "<div style='height:3em;'></div>\n" . gros_titre(_T(_PLAYER_LANG."configuration_player"), "", false) . barre_onglets($rubrique, _PLAYER_PREFIX) . debut_gauche($rubrique, true) . player_petite_boite_info() . $message_gauche . creer_colonne_droite($rubrique, true) . debut_droite($rubrique, true) ; //////////////////////////////////// // configuration audio $page_result .= "" . player_affiche_config_form('player_admin') ; //////////////////////////////////// // configuration video $page_result .= "" . debut_cadre_trait_couleur(_DIR_PLUGIN_PLAYER_IMAGES."player-video-24.png", true, '', _T(_PLAYER_LANG."player_video")) . player_form_debut_form('player_video_config') . "<ul class='player_flv_player verdana2'>\n" ; foreach($player_flv_lecteurs as $key => $value) { $checked = ($player_video == $value['value']) ? "checked='checked' " : ""; $class = ($checked ? " onglet_off" : ""); $page_result .= "" . "<li class='flv_onglet".$class."'>" . "<label><input type='radio' name='player_video' value='".$value['value']."' id='$key' $checked/> ".$value['label']."</label></li>\n" ; } $page_result .= "" . "</ul>\n" . "<ul id='player_flv_options'>\n" ; foreach($player_flv_config as $key => $value) { $player_flv_options = ""; switch($value['type']) { case 'boolean': $player_flv_options = "<label title='$key'><input name='$key' type='checkbox' value='1' " . ($$key == "1" ? "checked='checked'" : "")." />".$value['label']."</label>\n"; break; case 'url': case 'int': case 'text': $player_flv_options = "<label title='$key'>".$value['label']."<input type='text' name='$key' value='".$$key."' class='forml' /></label>\n"; break; case 'list': $player_flv_options = "<label title='$key'>".$value['label']."<select name='$key' class='fondl'>\n"; foreach($value['values'] as $k1 => $v1) { // si la cle n'est pas une chaine, prendre $v1 pour valeur de option $ii = (is_string($v1) ? _T(_PLAYER_LANG.$v1) : $v1); $player_flv_options .= "<option value='$k1'".(($$key == $k1) ? " selected='selected'" : "").">$ii</option>\n"; } $player_flv_options .= "</select></label>\n"; break; case 'color': $player_flv_options = "<label class='incolor' title='$key'>".$value['label'] . "<input type='text' name='$key' value='#".$$key."' style='background-color:#".$$key."' id='$key' size='7' />\n" . "<span class='colorpicker' style='display:none;'></span>" . "</label>\n"; break; } $style = in_array($player_key, explode(' ', $value['class'])) ? "" : " style='display:none;'"; $page_result .= "<li class='verdana2 ".$value['class']."'".$style.">".$player_flv_options."</li>\n"; } $page_result .= "" . "</ul>\n" ; //////////////////////////////////// // fin du formulaire $page_result .= "" . "<div style='text-align:$spip_lang_right'><input type='submit' name='btn_valider_video' value='"._T('bouton_valider')."' class='fondo' /></div>" . player_form_fin_form() . fin_cadre_trait_couleur(true) ; echo($page_result); echo fin_gauche(), fin_page(); return(true); }
// si de nouvelles erreurs apparaissent suite a une modif elles ne seront // affichees qu'au hit suivant include_spip('inc/autoriser'); global $autorite_erreurs; if (!isset($autorite_erreurs)) { if (isset($GLOBALS['meta']['autorite_erreurs'])) { include_spip('inc/meta'); effacer_meta('autorite_erreurs'); ecrire_metas(); spip_log('Autorite : OK'); } } else if (serialize($autorite_erreurs) != $GLOBALS['meta']['autorite_erreurs']) { include_spip('inc/meta'); ecrire_meta('autorite_erreurs', serialize($autorite_erreurs)); ecrire_metas(); spip_log('Erreur autorite : '.join(', ', $autorite_erreurs)); } // Qui sont les webmestres ? // pour le squelette cfg_autorite function liste_webmestres($void) { $webmestres = array(); include_spip('inc/texte'); include_spip('inc/plugin'); // Version SPIP < 2.1 ou alors >= 2.1 mais utilisant toujours le define pour etablir la liste if (!function_exists('spip_version_compare') OR spip_version_compare($GLOBALS['spip_version_branche'],"2.1.0-rc","<") OR defined('_ID_WEBMESTRES')) {
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(); }
function effacer() { // si pas de champs : on supprime directement (effacer_meta(metapack::nom))... if (!$this->champs) { effacer_meta($this->param->nom); if (defined('_COMPAT_CFG_192')) { ecrire_metas(); } return array(true, array()); } if (!$this->charger()) { return array(false, $this->val); } $ici =& $this->_ici; // supprimer les champs foreach ($this->champs as $name => $def) { if (isset($def['id'])) { continue; } unset($ici[$name]); } // supprimer les dossiers vides for ($i = count($this->_arbre); $i--;) { if ($this->_arbre[$i][0][$this->_arbre[$i][1]]) { break; } unset($this->_arbre[$i][0][$this->_arbre[$i][1]]); } if (!$this->_base) { effacer_meta($this->param->nom); } else { ecrire_meta($this->param->nom, serialize($this->_base)); } if (defined('_COMPAT_CFG_192')) { ecrire_metas(); } return array(true, array()); }
/** * Ecrire la configuration dans la base meta de Spip. * * @return boolean * @access private **/ function _ecrire() { $serialize = serialize($this->_config); ecrire_meta($this->_nom, $serialize); ecrire_metas(); return $serialize === $GLOBALS['meta'][$this->_nom] ? true : false; }
function cs_compile_header(&$flux, $type_, $suffixe='', $rem=true) { //if(defined('_LOG_CS')) cs_log(" -- recherche de compilations necessaires du header."); global $cs_metas_pipelines; if(isset($cs_metas_pipelines[$type = 'header_'.$type_.$suffixe])) { $header = &$cs_metas_pipelines[$type]; if(strpos($header, '<cs_html>')!==false) { $header = preg_replace_callback(',<cs_html>(.*)</cs_html>,Ums', 'cs_compile_header_callback', $header); // sauvegarde en metas ecrire_meta('tweaks_pipelines', serialize($cs_metas_pipelines)); ecrire_metas(); ecrire_fichier(_DIR_CS_TMP.$type.'.html', "<!-- Fichier de controle $type_ pour le plugin 'Couteau Suisse' -->\n\n$header"); } $flux .= $header; } if($rem) $flux = strlen(trim($flux))?"\n<!-- Debut CS -->\n$flux\n<!-- Fin CS -->\n\n":"\n<!-- CS vide -->\n\n"; }
/** * ecrire dans la table 'spip_meta' le champ... * en general pour les preferences * @return true */ function spiplistes_ecrire_metas() { if(spiplistes_spip_est_inferieur_193()) { include_spip('inc/meta'); ecrire_metas(); } return (true); }
function cs_initialisation($forcer=false, $init_includes=true) { global $cs_metas_pipelines, $metas_outils; static $deja_passe_ici = 0; if($log=defined('_LOG_CS')) { $rand = sprintf('[#%04x] ', rand()); if(!$deja_passe_ici) { $mysql = function_exists('mysql_get_client_info')?' - MYSQL v'.mysql_get_client_info():''; cs_log("#### 1er PASSAGE $rand################################# - \$forcer = ".intval($forcer) . "\n{$rand}PHP v".phpversion()."$mysql - base SPIP v$GLOBALS[spip_version_base] - code SPIP v$GLOBALS[spip_version_code]"); } } $deja_passe_ici++; if($log) cs_log("{$rand}cs_initialisation($forcer) : Passage #$deja_passe_ici"); // si les metas ne sont pas lus, on les lit if (isset($GLOBALS['meta']['tweaks_pipelines'])) { $cs_metas_pipelines = unserialize($GLOBALS['meta']['tweaks_pipelines']); if($log) cs_log("$rand -- cs_metas_pipelines = ".(is_array($cs_metas_pipelines)?join(', ',array_keys($cs_metas_pipelines)):'')); // liste des actifs & definition des constantes attestant qu'un outil est bien actif : define('_CS_monoutil', 'oui'); $liste = array(); foreach($metas_outils as $nom=>$o) if(isset($o['actif']) && $o['actif']) { $liste[]=$nom; @define('_CS_'.$nom, 'oui'); } $liste2 = join(', ', $liste); if($log) cs_log("$rand -- ".count($liste).' outil(s) actif(s)'.(strlen($liste2)?" = ".$liste2:'')); // Vanter notre art de la compilation... // La globale $spip_header_silencieux permet de rendre le header absent pour raisons de securite if (!headers_sent() && (!isset($GLOBALS['spip_header_silencieux']) OR !$GLOBALS['spip_header_silencieux'])) @header('X-Outils-CS: '.$liste2); if($log) cs_log($rand.($forcer?"\$forcer = true":"cs_initialisation($forcer) : Sortie car les metas sont presents")); // Les pipelines sont en meta, tout va bien on peut partir d'ici. if (!$forcer) return; } // ici on commence l'initialisation de tous les outils $GLOBALS['cs_init'] = 1; global $outils, $metas_vars, $metas_outils; include_spip('inc/meta'); include_spip('cout_utils'); // remplir $outils (et aussi $cs_variables qu'on n'utilise pas ici); include_spip('config_outils'); // verifier que tous les outils actives sont bien presents foreach($metas_outils as $nom=>$o) if(isset($o['actif']) && $o['actif'] && !isset($outils[$nom])) unset($metas_outils[$nom]); ecrire_meta('tweaks_actifs', serialize($metas_outils)); ecrire_metas(); // stocker les types de variables declarees global $cs_variables; $metas_vars['_chaines'] = $cs_variables['_chaines']; $metas_vars['_nombres'] = $cs_variables['_nombres']; // au cas ou un outil manipule des variables $description_outil = charger_fonction('description_outil', 'inc'); // completer les variables manquantes et incorporer l'activite lue dans les metas if($log) cs_log("$rand -- foreach(\$outils) : cs_initialisation_d_un_outil()"); // initialiser chaque outil et construire la liste des contribs $contribs = array(); include_spip('inc/cs_outils'); foreach($outils as $outil) { cs_initialisation_d_un_outil($id = $outil['id'], $description_outil, false); if(isset($outil['contrib']) && isset($metas_outils[$id]['actif']) && $metas_outils[$id]['actif']) $contribs[] = '<br/> • [@@couteauprive:'.$outil['id'].':nom@@->http://www.spip-contrib.net/?article'.$outil['contrib'].']'; } // installer $cs_metas_pipelines $cs_metas_pipelines = array(); if($log) cs_log("$rand -- cs_initialise_includes()... cout_fonctions.php sera peut-etre inclus."); // creer les includes (config/mes_options, mes_options et mes_fonctions) et le fichier de controle pipelines.php if($init_includes) cs_initialise_includes(count($metas_outils)); // verifier le fichier d'options _FILE_OPTIONS (ecrire/mes_options.php ou config/mes_options.php) // De'sactive' par de'faut. Activer l'outil "Comportements du Couteau Suisse" pour ge'rer cette option. cs_verif_FILE_OPTIONS($metas_outils['cs_comportement']['actif'] && $metas_vars['spip_options_on'], true); // sauver la configuration cs_sauve_configuration(); // en metas : outils actifs if($log) cs_log("$rand -- ecriture metas"); ecrire_meta('tweaks_actifs', serialize($metas_outils)); // en metas : variables d'outils ecrire_meta('tweaks_variables', serialize($metas_vars)); // en metas : code inline pour les pipelines, mes_options et mes_fonctions; ecrire_meta('tweaks_pipelines', serialize($cs_metas_pipelines)); // en metas : les liens sur spip-contrib ecrire_meta('tweaks_contribs', serialize($contribs)); ecrire_metas(); $GLOBALS['cs_init'] = 0; if($log) cs_log("{$rand}cs_initialisation($forcer) : Sortie"); }
function cout_exec_redirige($arg='', $recompiler=true) { if($recompiler) { ecrire_metas(); cs_initialisation(true); include_spip('inc/invalideur'); suivre_invalideur("1"); # tout effacer purger_repertoire(_DIR_SKELS); purger_repertoire(_DIR_CACHE); } if($arg!==false) { include_spip('inc/headers'); redirige_par_entete(generer_url_ecrire(_request('exec'), $arg, true)); } }
function maj_auto_maj_auto_forcer_action() { // forcer la lecture de la derniere version de SPIP if(function_exists('compat_maj_spip')) compat_maj_spip(true); // pour SPIP < 2.1 elseif($cron = charger_fonction('mise_a_jour', 'genie')) $cron(0); // forcer la lecture des revisions distantes de plugins ecrire_meta('tweaks_maj_auto', serialize(array())); ecrire_metas(); }