示例#1
0
function formulaires_editer_breve_verifier_dist($id_breve = 'new', $id_rubrique = 0, $retour = '', $lier_trad = 0, $config_fonc = 'breves_edit_config', $row = array(), $hidden = '')
{
    // auto-renseigner le titre si il n'existe pas
    titre_automatique('titre', array('texte'));
    // on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_article si vide
    $erreurs = formulaires_editer_objet_verifier('breve', $id_breve, array('id_parent'));
    return $erreurs;
}
示例#2
0
function formulaires_editer_article_verifier_dist($id_article = 'new', $id_rubrique = 0, $retour = '', $lier_trad = 0, $config_fonc = 'articles_edit_config', $row = array(), $hidden = '')
{
    // auto-renseigner le titre si il n'existe pas
    titre_automatique('titre', array('descriptif', 'chapo', 'texte'));
    // on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_article si vide
    $erreurs = formulaires_editer_objet_verifier('article', $id_article, array('id_parent'));
    if (!function_exists('autoriser')) {
        include_spip('inc/autoriser');
    }
    // si on utilise le formulaire dans le public
    if (!isset($erreurs['id_parent']) and !autoriser('creerarticledans', 'rubrique', _request('id_parent'))) {
        $erreurs['id_parent'] = _T('info_creerdansrubrique_non_autorise');
    }
    return $erreurs;
}
示例#3
0
function formulaires_editer_auteur_public_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');
    if ($email = _request('email')) {
        include_spip('inc/filtres');
        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');
            }
        }
    }
    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;
}
示例#4
0
function formulaires_editer_site_verifier_dist($id_syndic = 'new', $id_rubrique = 0, $retour = '', $lier_trad = 0, $config_fonc = 'sites_edit_config', $row = array(), $hidden = '')
{
    include_spip('inc/filtres');
    include_spip('inc/site');
    $oblis = array('nom_site', 'url_site', 'id_parent');
    // Envoi depuis le formulaire d'analyse automatique d'un site
    if (_request('ajoute_url_auto') and strlen(vider_url($u = _request('url_auto')))) {
        if ($auto = analyser_site($u)) {
            // Si pas de logo, on va le chercher dans le ou les feeds
            if (isset($auto['url_syndic']) && !$auto['logo'] && $auto['url_syndic'] != _request('ajouter_url_auto') && preg_match(',^select: (.+),', $auto['url_syndic'], $regs)) {
                $url_syndic = str_replace('select: ', '', $auto['url_syndic']);
                $feeds = explode(' ', $regs[1]);
                foreach ($feeds as $feed) {
                    if (($auto_syndic = analyser_site($feed)) && isset($auto_syndic['format_logo'])) {
                        $auto['format_logo'] = $auto_syndic['format_logo'];
                        $auto['logo'] = $auto_syndic['logo'];
                        break;
                    }
                }
            }
            foreach ($auto as $k => $v) {
                set_request($k, $v);
            }
            $erreurs['verif_url_auto'] = _T('sites:texte_referencement_automatique_verifier', array('url' => $u));
        } else {
            $erreurs['url_auto'] = _T('sites:avis_site_introuvable');
        }
    } else {
        // auto-renseigner le titre si il n'existe pas
        // d'abord a partir du descriptif en coupant
        titre_automatique('nom_site', array('descriptif'));
        // et sinon l'url du site, sans couper
        titre_automatique('nom_site', array('url_site'), 255);
        $erreurs = formulaires_editer_objet_verifier('site', $id_syndic, $oblis);
    }
    return $erreurs;
}
/**
 * Vérifications du formulaire d'édition d'un auteur
 *
 * Vérifie en plus des vérifications prévues :
 * - qu'un rédacteur ne peut pas supprimer son adresse mail,
 * - que le mot de passe choisi n'est pas trop court et identique à sa
 *   deuxième saisie
 *
 * @see formulaires_editer_objet_verifier()
 *
 * @param int|string $id_auteur
 *     Identifiant de l'auteur. 'new' pour une nouvel auteur.
 * @param string $retour
 *     URL de redirection après le traitement
 * @param string $associer_objet
 *     Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
 *     tel que 'article|3'
 * @param string $config_fonc
 *     Nom de la fonction ajoutant des configurations particulières au formulaire
 * @param array $row
 *     Valeurs de la ligne SQL de l'auteur, si connu
 * @param string $hidden
 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
 * @return array
 *     Erreurs des saisies
 **/
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');
    if (!nom_acceptable(_request('nom'))) {
        $erreurs['nom'] = _T("info_nom_pas_conforme");
    }
    if ($email = _request('email')) {
        include_spip('inc/filtres');
        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 (preg_match(",^\\s*javascript,i", _request('url_site'))) {
        $erreurs['url_site'] = _T('info_url_site_pas_conforme');
    }
    $erreurs['message_erreur'] = '';
    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;
            }
        }
    }
    if (!$erreurs['message_erreur']) {
        unset($erreurs['message_erreur']);
    }
    return $erreurs;
}