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; }
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); } }
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'); } } }
/** * 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)); } } }