Example #1
0
function formulaires_editer_zone_traiter_dist($id_zone = 'new', $retour = '', $associer_objet = '', $config_fonc = 'zones_edit_config', $row = array(), $hidden = '')
{
    if (_request('publique') !== 'oui') {
        set_request('publique', 'non');
    }
    if (_request('privee') !== 'oui') {
        set_request('privee', 'non');
    }
    $res = formulaires_editer_objet_traiter('zone', $id_zone, 0, 0, $retour, $config_fonc, $row, $hidden);
    if ($retour and $res['id_zone']) {
        $res['redirect'] = parametre_url($retour, 'id_zone', $res['id_zone']);
    }
    // Un lien auteur a prendre en compte ?
    if ($associer_objet and $id_zone = $res['id_zone']) {
        $objet = '';
        if (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)) {
            zone_lier($id_zone, $objet, $id_objet);
            if (isset($res['redirect'])) {
                $res['redirect'] = parametre_url($res['redirect'], "id_lien_ajoute", $id_zone, '&');
            }
        }
    }
    return $res;
}
Example #2
0
function action_affecter_zone_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    if (preg_match(',^([0-9]+|-1)-([a-z]+)-([0-9]+|-1)$,', $arg, $regs) and $regs[2] == 'auteur') {
        $id_zone = intval($regs[1]);
        $id_auteur = intval($regs[3]);
        include_spip('action/editer_zone');
        if ($id_auteur == -1) {
            $id_auteur = array_map('reset', sql_allfetsel('id_auteur', 'spip_auteurs', "statut!='poub'"));
        }
        zone_lier($id_zone == '-1' ? '' : $id_zone, 'auteur', $id_auteur);
    }
}
Example #3
0
function action_retirer_zone_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    if (preg_match(',^([0-9]+|-1)-([a-z]+)-([0-9]+|-1)$,', $arg, $regs)) {
        $id_zone = intval($regs[1]);
        $type = $regs[2];
        $id_objet = intval($regs[3]);
        include_spip('action/editer_zone');
        if ($id_objet == '-1') {
            zone_lier($id_zone, $type, array(), 'set');
        } else {
            zone_lier($id_zone, $type, $id_objet, 'del');
        }
    }
}
Example #4
0
/**
 * Modifier une zone en base
 * $c est un contenu (par defaut on prend le contenu via _request())
 *
 * @param int $id_zone
 * @param array $set
 * @return string|bool
 */
function zone_modifier($id_zone, $set = null)
{
    include_spip('inc/modifier');
    $c = collecter_requests(array('titre', 'descriptif', 'publique', 'privee'), array(), $set);
    // Si la zone est publiee, invalider les caches et demander sa reindexation
    $invalideur = $indexation = '';
    $t = sql_getfetsel("statut", "spip_zones", "id_zone={$id_zone}");
    if ($t == 'publie') {
        $invalideur = "id='zone/{$id_zone}'";
        $indexation = true;
    }
    if ($err = objet_modifier_champs('zone', $id_zone, array('nonvide' => array('titre' => _T('info_sans_titre')), 'invalideur' => $invalideur, 'indexation' => $indexation), $c)) {
        return $err;
    }
    zone_lier($id_zone, 'rubrique', _request('rubriques'), 'set');
    return $err;
}
/**
 * Action sécurisée pour valider manuellement les membres du site
 *
 * On change le statut de l'auteur et on lui envoie un mail avec de quoi se loguer
 *
 * @return rien
 */
function action_valider_auteur_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $id_auteur = $securiser_action();
    if (!$id_auteur or !autoriser('valider', 'auteur', $id_auteur)) {
        include_spip('inc/minipres');
        $msg = _T('valider_inscription:permissions_insuffisantes');
        die(minipres($msg));
    }
    include_spip('base/abstract_sql');
    // le statut à donné a été enregistré dans le champs « prefs »
    $statut = sql_getfetsel('prefs', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
    include_spip('action/editer_objet');
    if ($err = objet_modifier('auteur', $id_auteur, array('statut' => $statut))) {
        include_spip('inc/minipres');
        die(minipres(_T('valider_inscription:erreur_validation'), $err));
    }
    $desc = sql_fetsel('statut, id_auteur, login, email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
    include_spip('action/inscrire_auteur');
    // generer le mot de passe (ou le refaire si compte inutilise)
    $desc['pass'] = creer_pass_pour_auteur($id_auteur);
    // attribuer un jeton pour confirmation par clic sur un lien
    $desc['jeton'] = auteur_attribuer_jeton($id_auteur);
    // Si on doit lier l'auteur à une zone, il faut le faire ici,
    // parce que les visiteurs n'ont pas les autorisations nécessaires
    // lors de l'inscription
    if (test_plugin_actif('auteur2zone')) {
        include_spip('inc/config');
        $config = lire_config('auteur2zone');
        // Lier à la zone
        include_spip('action/editer_zone');
        zone_lier($config['auteur_zone_auto'], 'auteur', $id_auteur);
    }
    $envoyer_inscription = charger_fonction('envoyer_inscription', '');
    list($sujet, $msg, $from, $head) = $envoyer_inscription($desc, $nom, $statut);
    include_spip('inc/notifications');
    notifications_envoyer_mails($desc['email'], $msg, $sujet, $from, $head);
}
function csv2auteurs_supprimer_auteurs($Tid, $statut, $traitement = "supprimer_articles", $id_rubrique_archive = 1)
{
    // passage à la poubelle
    $objet = 'auteur';
    $set = array('statut' => '5poubelle');
    foreach ($Tid as $id) {
        $Tarticles = sql_allfetsel('id_objet', 'spip_auteurs_liens', array('id_auteur=' . $id, 'objet="article"'));
        // auteur sans article et demande de suppression: suppression complète
        if (count($Tarticles) == 0 and _request('abs_poubelle') == 'supprimer') {
            sql_delete('spip_auteurs', "id_auteur={$id}");
        } else {
            objet_modifier($objet, $id, $set);
        }
        // traitement des articles de l'auteur
        if (count($Tarticles) != 0) {
            // supprimer les articles
            $table_idarticle = array();
            if ($traitement == 'supprimer_articles') {
                objet_dissocier(array('id_auteur' => $id), array('article' => $Tarticles));
                foreach ($Tarticles as $idarticle) {
                    $table_idarticle[] = $idarticle['id_objet'];
                }
                $inarticle = join(',', $table_idarticle);
                sql_delete('spip_articles', "id_article IN ({$inarticle})");
            }
            // deplacer les articles dans la rubrique d'archivage
            if ($traitement == 'transferer_articles') {
                foreach ($Tarticles as $idarticle) {
                    objet_modifier('article', $idarticle['id_objet'], array('id_parent' => $id_rubrique_archive));
                }
            }
        }
        if (test_plugin_actif("accesrestreint")) {
            // suppression des zones de l'auteur
            $Tzones = sql_allfetsel('id_zone', 'spip_zones_liens', array('id_objet=' . $id, 'objet="auteur"'));
            foreach ($Tzones as $id_zone) {
                zone_lier($id_zone, 'auteur', $id, 'del');
            }
        }
        // suppression des rubriques des admins restreints
        if ($statut == '0minirezo') {
            $Trubriques = sql_allfetsel('id_objet', 'spip_auteurs_liens', array('id_auteur=' . $id, 'objet="rubrique"'));
            objet_dissocier(array('id_auteur' => $id), array('rubrique' => $Trubriques));
        }
    }
}