Файловый менеджер - Редактировать - /home/bourgleram/www/398a1/editer_auteur.php.tar
Назад
home/bourgleram/www/ecrire/action/editer_auteur.php 0000705 00000024142 15252575433 0016573 0 ustar 00 <?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2016 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; // http://doc.spip.org/@action_editer_auteur_dist function action_editer_auteur_dist($arg=null) { if (is_null($arg)){ $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } // si id_auteur n'est pas un nombre, c'est une creation if (!$id_auteur = intval($arg)) { if (($id_auteur = auteur_inserer()) > 0){ # cf. GROS HACK # recuperer l'eventuel logo charge avant la creation # ils ont un id = 0-id_auteur de la session $id_hack = 0 - $GLOBALS['visiteur_session']['id_auteur']; $chercher_logo = charger_fonction('chercher_logo', 'inc'); if (list($logo) = $chercher_logo($id_hack, 'id_auteur', 'on')) rename($logo, str_replace($id_hack, $id_auteur, $logo)); if (list($logo) = $chercher_logo($id_hack, 'id_auteur', 'off')) rename($logo, str_replace($id_hack, $id_auteur, $logo)); } } // Enregistre l'envoi dans la BD $err = ""; if ($id_auteur > 0) $err = auteur_modifier($id_auteur); if ($err) spip_log("echec editeur auteur: $err",_LOG_ERREUR); return array($id_auteur,$err); } /** * Inserer un auteur en base * @param string $source * @return int */ function auteur_inserer($source=null) { // Ce qu'on va demander comme modifications $champs = array(); $champs['source'] = $source?$source:'spip'; $champs['login'] = ''; $champs['statut'] = '5poubelle'; // inutilisable tant qu'il n'a pas ete renseigne et institue $champs['webmestre'] = 'non'; // Envoyer aux plugins $champs = pipeline('pre_insertion', array( 'args' => array( 'table' => 'spip_auteurs', ), 'data' => $champs ) ); $id_auteur = sql_insertq("spip_auteurs", $champs); pipeline('post_insertion', array( 'args' => array( 'table' => 'spip_auteurs', 'id_objet' => $id_auteur ), 'data' => $champs ) ); return $id_auteur; } /** * Appelle toutes les fonctions de modification d'un auteur * * @param int $id_auteur * @param array $set * @param bool $force_update * permet de forcer la maj en base des champs fournis, sans passer par instancier * utilise par auth/spip * @return string */ function auteur_modifier($id_auteur, $set = null, $force_update=false) { include_spip('inc/modifier'); include_spip('inc/filtres'); $c = collecter_requests( // white list objet_info('auteur','champs_editables'), // black list $force_update?array():array('webmestre','pass','login'), // donnees eventuellement fournies $set ); if ($err = objet_modifier_champs('auteur', $id_auteur, array( 'data' => $set, 'nonvide' => array('nom' => _T('ecrire:item_nouvel_auteur')) ), $c)) return $err; $session = $c; $err = ''; if (!$force_update){ // Modification de statut, changement de rubrique ? $c = collecter_requests( // white list array( 'statut', 'new_login','new_pass','login','pass','webmestre','restreintes','id_parent' ), // black list array(), // donnees eventuellement fournies $set ); if (isset($c['new_login']) AND !isset($c['login'])) $c['login'] = $c['new_login']; if (isset($c['new_pass']) AND !isset($c['pass'])) $c['pass'] = $c['new_pass']; $err = auteur_instituer($id_auteur, $c); $session = array_merge($session,$c); } // .. mettre a jour les sessions de cet auteur include_spip('inc/session'); $session['id_auteur'] = $id_auteur; unset($session['new_login']); unset($session['new_pass']); actualiser_sessions($session); return $err; } /** * Associer un auteur a des objets listes sous forme * array($objet=>$id_objets,...) * $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type * * on peut passer optionnellement une qualification du (des) lien(s) qui sera * alors appliquee dans la foulee. * En cas de lot de liens, c'est la meme qualification qui est appliquee a tous * * @param int $id_auteur * @param array $objets * @param array $qualif * @return string */ function auteur_associer($id_auteur,$objets, $qualif = null){ include_spip('action/editer_liens'); return objet_associer(array('auteur'=>$id_auteur), $objets, $qualif); } /** * Ancien nommage pour compatibilite * @param int $id_auteur * @param array $c * @return string */ function auteur_referent($id_auteur,$c){ return auteur_associer($id_auteur,$c); } /** * Dossocier un auteur des objets listes sous forme * array($objet=>$id_objets,...) * $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type * * un * pour $id_auteur,$objet,$id_objet permet de traiter par lot * * @param int $id_auteur * @param array $objets * @return string */ function auteur_dissocier($id_auteur,$objets){ include_spip('action/editer_liens'); return objet_dissocier(array('auteur'=>$id_auteur), $objets); } /** * Qualifier le lien d'un auteur avec les objets listes * array($objet=>$id_objets,...) * $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type * exemple : * $c = array('vu'=>'oui'); * un * pour $id_auteur,$objet,$id_objet permet de traiter par lot * * @param int $id_auteur * @param array $objets * @param array $qualif * @return bool|int */ function auteur_qualifier($id_auteur,$objets,$qualif){ include_spip('action/editer_liens'); return objet_qualifier_liens(array('auteur'=>$id_auteur), $objets, $qualif); } /** * Modifier le statut d'un auteur, ou son login/pass * 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 insert_auteur($source=null) { return auteur_inserer($source); } function auteurs_set($id_auteur, $set = null) { return auteur_modifier($id_auteur,$set); } function instituer_auteur($id_auteur, $c, $force_webmestre = false) { return auteur_instituer($id_auteur,$c,$force_webmestre); } // http://doc.spip.org/@revision_auteur function revision_auteur($id_auteur, $c=false) { return auteur_modifier($id_auteur,$c); } ?> home/bourgleram/www/prive/formulaires/editer_auteur.php 0000705 00000016343 15252603737 0017525 0 ustar 00 <?php if (!defined('_ECRIRE_INC_VERSION')) return; include_spip('inc/actions'); include_spip('inc/editer'); include_spip('inc/filtres_ecrire'); // si on utilise le formulaire dans le public // http://doc.spip.org/@inc_editer_mot_dist function formulaires_editer_auteur_charger_dist($id_auteur='new', $retour='', $associer_objet='', $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){ $valeurs = formulaires_editer_objet_charger('auteur',$id_auteur,0,0,$retour,$config_fonc,$row,$hidden); $valeurs['new_login'] = $valeurs['login']; return $valeurs; } /** * Identifier le formulaire en faisant abstraction des parametres qui * ne representent pas l'objet edite */ function formulaires_editer_auteur_identifier_dist($id_auteur='new', $retour='', $associer_objet='', $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){ return serialize(array(intval($id_auteur),$associer_objet)); } // Choix par defaut des options de presentation // http://doc.spip.org/@articles_edit_config function auteurs_edit_config($row) { global $spip_lang; $config = $GLOBALS['meta']; $config['lignes'] = 8; $config['langue'] = $spip_lang; // pour instituer_auteur $config['auteur'] = $row; //$config['restreint'] = ($row['statut'] == 'publie'); $auth_methode = $row['source']; include_spip('inc/auth'); include_spip('inc/autoriser'); $autoriser = autoriser('modifier','auteur',$row['id_auteur'],null, array('email'=>true)); $config['edit_login'] = (auth_autoriser_modifier_login($auth_methode) AND $autoriser); $config['edit_pass'] = (auth_autoriser_modifier_pass($auth_methode) AND ($GLOBALS['visiteur_session']['id_auteur'] == $row['id_auteur'] OR $autoriser) ); return $config; } function formulaires_editer_auteur_verifier_dist($id_auteur='new', $retour='', $associer_objet='', $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){ // auto-renseigner le nom si il n'existe pas, sans couper titre_automatique('nom',array('email','login'),255); // mais il reste obligatoire si on a rien trouve $erreurs = formulaires_editer_objet_verifier('auteur',$id_auteur,array('nom')); $auth_methode = sql_getfetsel('source','spip_auteurs','id_auteur='.intval($id_auteur)); $auth_methode = ($auth_methode ? $auth_methode : 'spip'); include_spip('inc/auth'); include_spip('inc/filtres'); if (!nom_acceptable(_request('nom'))) { $erreurs['nom'] = _T("info_nom_pas_conforme"); } if ($email = _request('email')){ include_spip('inc/autoriser'); // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un if (!autoriser('modifier','auteur',$id_auteur,null,array('email'=>'?')) AND $GLOBALS['visiteur_session']['id_auteur']==$id_auteur AND !strlen(trim($email)) AND $email!=($email_ancien=sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.intval($id_auteur))) ){ $erreurs['email'] = (($id_auteur==$GLOBALS['visiteur_session']['id_auteur'])?_T('form_email_non_valide'):_T('form_prop_indiquer_email')); } else if (!email_valide($email)){ $erreurs['email'] = (($id_auteur==$GLOBALS['visiteur_session']['id_auteur'])?_T('form_email_non_valide'):_T('form_prop_indiquer_email')); } # Ne pas autoriser d'avoir deux auteurs avec le même email # cette fonctionalité nécessite que la base soit clean à l'activation : pas de # doublon sur la requête select email,count(*) from spip_auteurs group by email ; if (defined('_INTERDIRE_AUTEUR_MEME_EMAIL')) { #Nouvel auteur if (intval($id_auteur)==0) { #Un auteur existe deja avec cette adresse ? if (sql_countsel("spip_auteurs", "email=".sql_quote($email)) > 0) $erreurs['email'] = _T('erreur_email_deja_existant'); } else { #Un auteur existe deja avec cette adresse ? et n'est pas le user courant. if ((sql_countsel("spip_auteurs", "email=".sql_quote($email)) > 0) AND ($id_auteur!=($id_auteur_ancien=sql_getfetsel('id_auteur', 'spip_auteurs', "email=".sql_quote($email))))) $erreurs['email'] = _T('erreur_email_deja_existant'); } } } if ($url = _request('url_site') and !tester_url_absolue($url)) { $erreurs['url_site'] = _T('info_url_site_pas_conforme'); } if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)){ $erreurs['new_login'] = $err; $erreurs['message_erreur'] .= $err; } else { // pass trop court ou confirmation non identique if ($p = _request('new_pass')) { if ($p != _request('new_pass2')) { $erreurs['new_pass'] = _T('info_passes_identiques'); $erreurs['message_erreur'] .= _T('info_passes_identiques'); } elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'),$p, $id_auteur)){ $erreurs['new_pass'] = $err; $erreurs['message_erreur'] .= $err; } } } return $erreurs; } // http://doc.spip.org/@inc_editer_mot_dist function formulaires_editer_auteur_traiter_dist($id_auteur='new', $retour='', $associer_objet='', $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){ if (_request('saisie_webmestre') OR _request('webmestre')) set_request('webmestre',_request('webmestre')?_request('webmestre'):'non'); $retour = parametre_url($retour, 'email_confirm',''); set_request('email', email_valide(_request('email'))); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier : // "Marie@toto.com " ou encore "Marie Toto <Marie@toto.com>" include_spip('inc/autoriser'); if (!autoriser('modifier','auteur',$id_auteur,null,array('email'=>'?'))){ $email_nouveau = _request('email'); set_request('email'); // vider la saisie car l'auteur n'a pas le droit de modifier cet email // mais si c'est son propre profil on lui envoie un email à l'adresse qu'il a indique // pour qu'il confirme qu'il possede bien cette adresse // son clic sur l'url du message permettre de confirmer le changement // et de revenir sur son profil if ($GLOBALS['visiteur_session']['id_auteur']==$id_auteur AND $email_nouveau!=($email_ancien=sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.intval($id_auteur)))){ $envoyer_mail = charger_fonction('envoyer_mail','inc'); $texte = _T('form_auteur_mail_confirmation', array('url'=>generer_action_auteur('confirmer_email', $email_nouveau,parametre_url($retour, 'email_modif','ok')))); $envoyer_mail($email_nouveau,_T('form_auteur_confirmation'),$texte); set_request('email_confirm',$email_nouveau); if ($email_ancien) $envoyer_mail($email_ancien,_T('form_auteur_confirmation'),_T('form_auteur_envoi_mail_confirmation',array('email'=>$email_nouveau))); $retour = parametre_url($retour, 'email_confirm',$email_nouveau); } } $res = formulaires_editer_objet_traiter('auteur',$id_auteur,0,0,$retour,$config_fonc,$row,$hidden); // Un lien auteur a prendre en compte ? if ($associer_objet AND $id_auteur=$res['id_auteur']){ $objet = ''; if (intval($associer_objet)){ $objet='article'; $id_objet = intval($associer_objet); } elseif(preg_match(',^\w+\|[0-9]+$,',$associer_objet)){ list($objet,$id_objet) = explode('|',$associer_objet); } if ($objet AND $id_objet AND autoriser('modifier',$objet,$id_objet)){ include_spip('action/editer_auteur'); auteur_associer($id_auteur, array($objet => $id_objet)); if (isset($res['redirect'])) $res['redirect'] = parametre_url ($res['redirect'], "id_lien_ajoute", $id_auteur, '&'); } } return $res; } ?>
| ver. 1.4 |
Github
|
.
| PHP 5.6.40 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка