/** * On arrive ici depuis inc/admin * - au lancement * - puis apres chaque timeout avec dans ce cas $reprise=true * * import_all_debut() est appele la premiere fois et initialise le dump * import_all_milieu() est appele a chaque retour ici * quand on en sort, * - soit on relance pour la seconde etape de fusion * - soit on finit * * @param string $titre * @param bool $reprise */ function base_import_all_dist($titre='', $reprise=false) { if (!$titre) return; // anti-testeur automatique if (!$reprise) import_all_debut(); $request = unserialize($GLOBALS['meta']['import_all']); $archive = $request['dir'] . ($request['archive'] ? $request['archive'] : $request['archive_perso']); // au rappel, on commence (voire on continue) @ini_set("zlib.output_compression","0"); // pour permettre l'affichage au fur et a mesure include_spip('inc/import'); @ignore_user_abort(1); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page($titre, "accueil", "accueil"); echo debut_gauche('', true); echo debut_droite('', true); $res = import_all_milieu($request, $archive); // Cas particulier de la fusion/insertion : // a la fin de la premiere passe on relance pour l'etape suivante if (!$res AND $request['insertion'] == 'on') { $request['insertion'] = 'passe2'; if ($request['url_site'] AND substr($request['url_site'],-1) != '/') $request['url_site'] .= '/'; ecrire_meta("import_all", serialize($request),'non'); import_all_debut(); $res = import_all_milieu($request, $archive); } echo $res, "</body></html>\n"; if ($charset = $GLOBALS['meta']['charset_restauration']) { ecrire_meta('charset', $charset); } detruit_restaurateur(); import_all_fin($request); include_spip('inc/rubriques'); calculer_rubriques(); if (!$res) ecrire_acces(); // Mise a jour du fichier htpasswd affiche_progression_javascript('100 %', 0, '', $request['retour']); }
function base_upgrade_dist($titre='', $reprise='') { if (!$titre) return; // anti-testeur automatique if ($GLOBALS['spip_version']!=$GLOBALS['meta']['version_installee']) { if (!is_numeric(_request('reinstall'))) { include_spip('base/create'); spip_log("recree les tables eventuellement disparues"); creer_base(); } $meta = _request('meta'); if (!$meta) $res = maj_base(); // reprise sur demande de mise a jour interrompue pour plugin else $res= maj_while($GLOBALS['meta'][$meta], $GLOBALS[$meta]['cible'], $GLOBALS[$meta]['maj'], $meta, _request('table')); if ($res) { if (!is_array($res)) spip_log("Pb d'acces SQL a la mise a jour"); else { include_spip('inc/minipres'); echo minipres(_T('avis_operation_echec') . ' ' . join(' ', $res)); exit; } } } spip_log("Fin de mise a jour SQL. Debut m-a-j acces et config"); // supprimer quelques fichiers temporaires qui peuvent se retrouver invalides spip_unlink(_DIR_TMP.'plugin_xml.cache'); spip_unlink(_DIR_SESSIONS.'ajax_fonctions.txt'); spip_unlink(_CACHE_PIPELINES); spip_unlink(_CACHE_RUBRIQUES); spip_unlink(_CACHE_PLUGINS_OPT); spip_unlink(_CACHE_PLUGINS_FCT); spip_unlink(_CACHE_PLUGINS_VERIF); include_spip('inc/acces'); ecrire_acces(); $config = charger_fonction('config', 'inc'); $config(); }
function install_etape_fin_dist() { ecrire_acces(); $f = str_replace( _FILE_TMP_SUFFIX, '.php', _FILE_CHMOD_TMP); if (file_exists(_FILE_CHMOD_TMP)) { if (!@rename(_FILE_CHMOD_TMP, $f)) { if (@copy(_FILE_CHMOD_TMP, $f)) spip_unlink(_FILE_CHMOD_TMP); } } $f = str_replace( _FILE_TMP_SUFFIX, '.php', _FILE_CONNECT_TMP); if (file_exists(_FILE_CONNECT_TMP)) { spip_log("renomme $f"); if (!@rename(_FILE_CONNECT_TMP, $f)) { if (@copy(_FILE_CONNECT_TMP, $f)) @spip_unlink(_FILE_CONNECT_TMP); } } // creer le repertoire cache, qui sert partout ! // deja fait en etape 4 en principe, on garde au cas ou if(!@file_exists(_DIR_CACHE)) { $rep = preg_replace(','._DIR_TMP.',', '', _DIR_CACHE); $rep = sous_repertoire(_DIR_TMP, $rep, true,true); } // Verifier la securite des htaccess // Si elle ne fonctionne pas, prevenir $msg = install_verifier_htaccess(); if ($msg) { $cible = _T('public:accueil_site'); $cible = generer_form_ecrire('accueil', '','', $cible); echo minipres('AUTO', $msg . $cible); // ok, deboucher dans l'espace prive } else redirige_url_ecrire('accueil'); }
/** * Modifier le statut d'un auteur, ou son login/pass * * @link http://doc.spip.org/@instituer_auteur * @param $id_auteur * @param $c * @param bool $force_webmestre * @return bool|string */ function auteur_instituer($id_auteur, $c, $force_webmestre = false) { if (!($id_auteur = intval($id_auteur))) { return false; } $erreurs = array(); // contiendra les differentes erreurs a traduire par _T() $champs = array(); // les memoriser pour les faire passer dans le pipeline pre_edition if (isset($c['login']) and strlen($c['login'])) { $champs['login'] = $c['login']; } if (isset($c['pass']) and strlen($c['pass'])) { $champs['pass'] = $c['pass']; } $statut = $statut_ancien = sql_getfetsel('statut', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); if (isset($c['statut']) and autoriser('modifier', 'auteur', $id_auteur, null, array('statut' => $c['statut']))) { $statut = $champs['statut'] = $c['statut']; } // Restreindre avant de declarer l'auteur // (section critique sur les droits) if ($c['id_parent']) { if (is_array($c['restreintes'])) { $c['restreintes'][] = $c['id_parent']; } else { $c['restreintes'] = array($c['id_parent']); } } if (isset($c['webmestre']) and ($force_webmestre or autoriser('modifier', 'auteur', $id_auteur, null, array('webmestre' => '?')))) { $champs['webmestre'] = $c['webmestre'] == 'oui' ? 'oui' : 'non'; } // Envoyer aux plugins $champs = pipeline('pre_edition', array('args' => array('table' => 'spip_auteurs', 'id_objet' => $id_auteur, 'action' => 'instituer', 'statut_ancien' => $statut_ancien), 'data' => $champs)); if (is_array($c['restreintes']) and autoriser('modifier', 'auteur', $id_auteur, NULL, array('restreint' => $c['restreintes']))) { $rubriques = array_map('intval', $c['restreintes']); $rubriques = array_unique($rubriques); $rubriques = array_diff($rubriques, array(0)); auteur_dissocier($id_auteur, array('rubrique' => '*')); auteur_associer($id_auteur, array('rubrique' => $rubriques)); } $flag_ecrire_acces = false; // commencer par traiter les cas particuliers des logins et pass // avant les autres ecritures en base if (isset($champs['login']) or isset($champs['pass'])) { $auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); include_spip('inc/auth'); if (isset($champs['login']) and strlen($champs['login'])) { if (!auth_modifier_login($auth_methode, $champs['login'], $id_auteur)) { $erreurs[] = 'ecrire:impossible_modifier_login_auteur'; } } if (isset($champs['pass']) and strlen($champs['pass'])) { $champs['login'] = sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); if (!auth_modifier_pass($auth_methode, $champs['login'], $champs['pass'], $id_auteur)) { $erreurs[] = 'ecrire:impossible_modifier_pass_auteur'; } } unset($champs['login']); unset($champs['pass']); $flag_ecrire_acces = true; } if (!count($champs)) { return implode(' ', array_map('_T', $erreurs)); } sql_updateq('spip_auteurs', $champs, 'id_auteur=' . $id_auteur); // .. mettre a jour les fichiers .htpasswd et .htpasswd-admin if ($flag_ecrire_acces or isset($champs['statut'])) { include_spip('inc/acces'); ecrire_acces(); } // Invalider les caches include_spip('inc/invalideur'); suivre_invalideur("id='auteur/{$id_auteur}'"); // Pipeline pipeline('post_edition', array('args' => array('table' => 'spip_auteurs', 'id_objet' => $id_auteur, 'action' => 'instituer', 'statut_ancien' => $statut_ancien), 'data' => $champs)); // Notifications if ($notifications = charger_fonction('notifications', 'inc')) { $notifications('instituerauteur', $id_auteur, array('statut' => $statut, 'statut_ancien' => $statut_ancien)); } return implode(' ', array_map('_T', $erreurs)); }
function spiplistes_formulaire_abonnement ( $type , $acces_membres , $formulaire , $nom_site_spip , $inscription_redacteur , $inscription_visiteur ) { $mail_inscription_ = trim(strtolower(_request('mail_inscription_'))); $nom_inscription_ = trim(_request('nom_inscription_')); $type_abo = _request('suppl_abo') ; $listes_demande = _request('list'); $desabo = ($type_abo == 'non') ? 'oui' : 'non'; $adresse_site = $GLOBALS['meta']['adresse_site']; $reponse_formulaire = ''; $email_a_envoyer = $mode_modifier = $sql_where = false; $abonne = array(); // traiter d'abord si retour de mail lien cookie $d = _request('d'); if(!empty($d)) { $sql_where = array( 'cookie_oubli='.sql_quote($d) , 'statut<>'.sql_quote('5poubelle') , 'pass<>'.sql_quote('') ); } // ou si identifie' else if($connect_id_auteur = intval($GLOBALS['auteur_session']['id_auteur'])) { $sql_where = array("id_auteur=$connect_id_auteur"); } if($sql_where) { // cherche les coordonnees de l'abonne' $sql_select = 'id_auteur,statut,nom,email,cookie_oubli'; $sql_result = sql_select( $sql_select , 'spip_auteurs' , $sql_where , '', '', 1 ); if($row = sql_fetch($sql_result)) { foreach(explode(',', $sql_select) as $key) { $abonne[$key] = $row[$key]; } } $abonne['format'] = spiplistes_format_abo_demande($abonne['id_auteur']); } // si identifie' par cookie ou login... effectuer les modifications demandees if(count($abonne)) { // toujours rester en mode modif pour permettre la correction $mode_modifier = 'oui'; if($desabo == 'oui') { spiplistes_format_abo_modifier($abonne['id_auteur']); $reponse_formulaire = _T('spiplistes:vous_etes_desabonne'); $email_a_envoyer = true; } else if($listes_demande) { //spiplistes_debug_log("demande modification abonnements listes " . implode(",", $listes_demande)); if(is_array($listes_demande) && count($listes_demande)) { $listes_ajoutees = spiplistes_abonnements_ajouter($abonne['id_auteur'] , array_map('intval', $listes_demande) ); $curr_abos_auteur = spiplistes_abonnements_listes_auteur($abonne['id_auteur']); foreach($curr_abos_auteur as $id_liste) { if(!in_array($id_liste, $listes_demande)) { spiplistes_abonnements_auteur_desabonner($abonne['id_auteur'] , $id_liste ); } } } // modifier le format de reception ? if(spiplistes_format_valide($type_abo) && ($type_abo != $abonne['format'])) { spiplistes_format_abo_modifier($abonne['id_auteur'], $abonne['format'] = $type_abo); //$abonne['ids_abos'] = spiplistes_abonnements_listes_auteur($abonne['id_auteur']); } $reponse_formulaire = _T('spiplistes:demande_enregistree_retour_mail'); $email_a_envoyer = true; } else { //spiplistes_debug_log('pas de demande, afficher formulaire de modif au complet'); $reponse_formulaire = '' . '<span class="nom">' . $abonne['nom'] . "</span>\n" . '<span class="souhait">' . _T('spiplistes:effectuez_modif_validez', array('s'=>$abonne['nom'])). "</span>\n" ; } $id_abonne = $abonne['id_auteur']; $objet_email = _T('spiplistes:votre_abo_listes'); $contexte = array('titre' => $objet_email); } else // non identifie' ? gestion par cookie_oubli. { $texte_intro = _T('form_forum_message_auto') . '<br /><br />'._T('spiplistes:bonjour') . "<br />\n"; $abonne = array('email' => email_valide($mail_inscription_)); if($abonne['email']) { // si l'abonne existe deja mais pas d'action demandee, // affiche formulaire complet //if($row = sql_fetch( if ($row = spiplistes_auteurs_auteur_select ('id_auteur,login,nom,statut,lang', 'email='.sql_quote($abonne['email'])) ) { $abonne['id_auteur'] = intval($row['id_auteur']); $abonne['statut'] = $row['statut']; $abonne['login'] = $row['login']; $abonne['nom'] = $row['nom']; $abonne['lang'] = $row['lang']; $abonne['format'] = ($f = spiplistes_format_abo_demande($abonne['id_auteur'])) ? $f : 'texte' ; if($abonne['statut'] == '5poubelle') { $reponse_formulaire = _T('form_forum_access_refuse'); } // si encore nouveau, c'est qu'il ne s'est jamais identifie' else if($abonne['statut'] == 'nouveau') { // le supprimer. Il sera re-cree plus loin spiplistes_auteurs_auteur_delete('id_auteur='.sql_quote($abonne['id_auteur'])); $abonne['id_auteur'] = false; } else { // demande de modifier l'abonnement ? envoie le cookie de relance par mail spiplistes_auteurs_cookie_oubli_updateq($abonne['cookie_oubli'] = creer_uniqid(), $abonne['email']); $objet_email = _T('spiplistes:abonnement_titre_mail'); $texte_email = spiplistes_texte_inventaire_abos($abonne['id_auteur'], $type_abo, $nom_site_spip); $contexte = array('titre' => $objet_email); $id_abonne = $abonne['id_auteur']; } } // l'adresse mail n'existe pas dans la base. else { $abonne['login'] = spiplistes_login_from_email($abonne['email']); $abonne['nom'] = (($acces_membres == 'non') || empty($nom_inscription_)) ? ucfirst($abonne['login']) : $nom_inscription_ ; // ajouter l'abonne $pass = creer_pass_aleatoire(8, $abonne['email']); $abonne['zepass'] = $pass; $abonne['mdpass'] = md5($pass); $abonne['htpass'] = generer_htpass($pass); $abonne['cookie_oubli'] = creer_uniqid(); $abonne['statut'] = ($inscription_redacteur == 'oui') ? 'nouveau' : '6forum'; // format d'envoi par defaut pour le premier envoi de confirmation $abonne['format'] = 'texte'; // creation du compte ... if($id_abonne = spiplistes_auteurs_auteur_insertq( array( 'nom' => $abonne['nom'] , 'email' => $abonne['email'] , 'login' => $abonne['login'] , 'pass' => $abonne['mdpass'] , 'statut' => $abonne['statut'] , 'htpass' => $abonne['htpass'] , 'cookie_oubli' => $abonne['cookie_oubli'] ) )) { // creation .htpasswd & LDAP si besoin systeme ecrire_acces(); // premier format de reception par defaut spiplistes_format_abo_modifier($id_abonne, $abonne['format']); } $objet_email = _T('spiplistes:confirmation_inscription'); $contexte = array( 'titre' => $objet_email , 'nouvel_inscription' => 'oui' , 'inscription_redacteur' => $inscription_redacteur , 'inscription_visiteur' => $inscription_visiteur ); } $email_a_envoyer = true; } else if(!empty($mail_inscription_)) { //Non email o non valida return(array(true, _T('spiplistes:erreur_adresse'), $mode_modifier, false)); } } if($id_abonne && $email_a_envoyer) { $abonne['ids_abos'] = spiplistes_abonnements_listes_auteur($abonne['id_auteur']); $abonne['format'] = spiplistes_format_valide($abonne['format']); $email_a_envoyer = spiplistes_preparer_message( ($objet_email = "[$nom_site_spip] " . $objet_email) , spiplistes_patron_message() , array_merge($contexte, $abonne) ); if( spiplistes_envoyer_mail( $abonne['email'] , $objet_email , $email_a_envoyer , false , '' , $abonne['format'] ) ) { $reponse_formulaire = ($acces_membres == 'oui') ? _T('form_forum_identifiant_mail') : _T('spiplistes:demande_enregistree_retour_mail') ; } else { $reponse_formulaire = _T('form_forum_probleme_mail'); } } return(array(true, $reponse_formulaire, $mode_modifier, $abonne)); } // end spiplistes_formulaire_abonnement()
function accesrestreint_htpasswd_config() { global $spip_lang_right; include_spip('inc/acces'); ecrire_acces(); echo debut_cadre_trait_couleur("cadenas-24.gif", true, "", _T('info_fichiers_authent')); $creer_htpasswd = $GLOBALS['meta']["creer_htpasswd"]; echo "<div class='verdana2'>", _T('texte_fichier_authent', array('dossier' => '<tt>'.joli_repertoire(_DIR_TMP).'</tt>')), "</div>"; echo "<div class='verdana2'>"; echo afficher_choix('creer_htpasswd', $creer_htpasswd, array('oui' => _T('item_creer_fichiers_authent'), 'non' => _T('item_non_creer_fichiers_authent')), ' '); echo "</div>"; echo "<div style='text-align:$spip_lang_right'><input type='submit' value='"._T('bouton_valider')."' class='fondo' /></div>"; echo fin_cadre_trait_couleur(true); }
function revision_auteur($id_auteur, $c=false) { $r = modifier_contenu('auteur', $id_auteur, array( 'nonvide' => array('nom' => _T('ecrire:item_nouvel_auteur')) ), $c); // .. mettre a jour les fichiers .htpasswd et .htpasswd-admin if (isset($c['login']) OR isset($c['pass']) OR isset($c['statut']) ) { include_spip('inc/acces'); ecrire_acces(); } // .. mettre a jour les sessions de cet auteur include_spip('inc/session'); $c['id_auteur'] = $id_auteur; actualiser_sessions($c); }
<?php echo "0."; define('_DIR_RESTREINT_ABS', 'ecrire/'); include_once _DIR_RESTREINT_ABS.'inc_version.php'; echo "1."; include_spip('base/create'); spip_connect(); echo "2."; creer_base(); include_spip('base/upgrade'); maj_base(); echo "3."; include_spip('inc/acces'); include_spip('inc/config'); ecrire_acces(); ?>