Exemple #1
0
function action_valider_signature_dist($id_signature = null)
{
    if (!$id_signature) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $id_signature = $securiser_action();
    }
    if (autoriser('publier', 'signature', $id_signature)) {
        include_spip('action/editer_signature');
        signature_modifier($id_signature, array('statut' => 'publie'));
    }
}
function action_supprimer_signature_dist($id_signature = null)
{
    if (!$id_signature) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $id_signature = $securiser_action();
    }
    if (autoriser('supprimer', 'signature', $id_signature)) {
        $id_article = sql_getfetsel('P.id_article', 'spip_signatures AS S JOIN spip_petitions AS P ON S.id_petition=P.id_petition', 'S.id_signature=' . intval($id_signature));
        if ($id_article and autoriser('modererpetition', 'article', $id_article)) {
            include_spip('action/editer_signature');
            signature_modifier($id_signature, array('statut' => 'poubelle'));
        }
    }
}
function action_relancer_signature_dist($id_signature = null)
{
    if (!$id_signature) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $id_signature = $securiser_action();
    }
    if (autoriser('relancer', 'signature', $id_signature)) {
        $row = sql_fetsel('*', 'spip_signatures', 'id_signature=' . intval($id_signature));
        $id_article = sql_getfetsel('id_article', 'spip_petitions', 'id_petition=' . intval($row['id_petition']));
        if ($id_article = intval($id_article) and autoriser('mordererpetition', 'article', $id_article)) {
            include_spip('action/editer_signature');
            include_spip('formulaires/signature');
            $url = generer_url_entite_absolue($id_article, 'article', '', '', true);
            if (signature_a_confirmer($id_article, $url, $row['nom_email'], $row['ad_email'], $row['nom_site'], $row['url_site'], $row['message'], $row['lang'], $row['statut'])) {
                signature_modifier($id_signature, array("date_time" => date('Y-m-d H:i:s')));
            }
        }
    }
}
function inc_controler_signature_dist($id_article, $nom, $mail, $message, $site, $url_site, $url_page)
{
    // tout le monde est la.
    // cela a ete verifie en amont, dans formulaires_signature_verifier()
    if (!($row = sql_fetsel('*', 'spip_petitions', "id_article=" . intval($id_article)))) {
        return _T('petitions:form_pet_probleme_technique');
    }
    $statut = "";
    if (!($ret = signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url_site, $message, 'fr', $statut))) {
        return _T('petitions:form_pet_probleme_technique');
    }
    include_spip('action/editer_signature');
    $id_signature = signature_inserer($row['id_petition']);
    if (!$id_signature) {
        return _T('petitions:form_pet_probleme_technique');
    }
    signature_modifier($id_signature, array('statut' => $statut, 'nom_email' => $nom, 'ad_email' => $mail, 'message' => $message, 'nom_site' => $site, 'url_site' => $url_site));
    return $ret;
}
function revision_signature($id_signature, $c = false)
{
    return signature_modifier($id_signature, $c);
}
/**
 * Confirmer une signature
 * Retour a l'ecran du lien de confirmation d'une signature de petition.
 * var_confirm contient le hash de la signature.
 * Au premier appel on traite et on publie
 * Au second appel on retourne le resultat a afficher
 *
 * @staticvar string $confirm
 * @param <type> $var_confirm
 * @return string 
 */
function action_confirmer_signature_dist($var_confirm = null)
{
    static $confirm = null;
    // reponse mise en cache dans la session ?
    $code_message = 'signature_message_' . strval($var_confirm);
    if (isset($GLOBALS['visiteur_session'][$code_message])) {
        return $GLOBALS['visiteur_session'][$code_message];
    }
    // reponse deja calculee depuis public/assembler.php
    if (isset($confirm)) {
        return $confirm;
    }
    if (is_null($var_confirm)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $var_confirm = $securiser_action();
    }
    if (!$var_confirm or $var_confirm == 'publie' or $var_confirm == 'poubelle') {
        return '';
    }
    if (!spip_connect()) {
        $confirm = _T('petitions:form_pet_probleme_technique');
        return '';
    }
    include_spip('inc/texte');
    include_spip('inc/filtres');
    // Suppression d'une signature par un moderateur ?
    // Cf. plugin notifications
    if (isset($_GET['refus'])) {
        // verifier validite de la cle de suppression
        // l'id_signature est dans var_confirm
        include_spip('inc/securiser_action');
        if ($id_signature = intval($var_confirm) and ($_GET['refus'] == _action_auteur("supprimer signature {$id_signature}", '', '', 'alea_ephemere') or $_GET['refus'] == _action_auteur("supprimer signature {$id_signature}", '', '', 'alea_ephemere_ancien'))) {
            include_spip('action/editer_signature');
            signature_modifier($id_signature, array("statut" => 'poubelle'));
            $confirm = _T('petitions:info_signature_supprimee');
        } else {
            $confirm = _T('petitions:info_signature_supprimee_erreur');
        }
        return '';
    }
    $row = sql_fetsel('*', 'spip_signatures', "statut=" . sql_quote($var_confirm), '', "1");
    if (!$row) {
        $confirm = _T('petitions:form_pet_aucune_signature');
        return '';
    }
    $id_signature = $row['id_signature'];
    $id_petition = $row['id_petition'];
    $adresse_email = $row['ad_email'];
    $url_site = $row['url_site'];
    $row = sql_fetsel('email_unique, site_unique, id_article', 'spip_petitions', "id_petition=" . intval($id_petition));
    $email_unique = $row['email_unique'] == "oui";
    $site_unique = $row['site_unique'] == "oui";
    $id_article = $row['id_article'];
    include_spip('action/editer_signature');
    signature_modifier($id_signature, array('statut' => 'publie'));
    if ($email_unique) {
        $r = "id_petition=" . intval($id_petition) . " AND ad_email=" . sql_quote($adresse_email);
        if (signature_entrop($r)) {
            $confirm = _T('petitions:form_pet_deja_signe');
        }
    }
    if ($site_unique) {
        $r = "id_petition=" . intval($id_petition) . " AND url_site=" . sql_quote($url_site);
        if (signature_entrop($r)) {
            $confirm = _T('petitions:form_pet_site_deja_enregistre');
        }
    }
    include_spip('inc/session');
    if (!$confirm) {
        $confirm = _T('petitions:form_pet_signature_validee');
        // noter dans la session que l'email est valide
        // de facon a permettre de signer les prochaines
        // petitions sans refaire un tour d'email
        session_set('email_confirme', $adresse_email);
        // invalider les pages ayant des boucles signatures
        include_spip('inc/invalideur');
        suivre_invalideur("id='signature/{$id_signature}'");
        suivre_invalideur("id='article/{$id_article}'");
    }
    // Conserver la reponse dans la session du visiteur
    if ($confirm) {
        session_set($code_message, $confirm);
    }
}