function formulaires_configurer_forums_participants_traiter_dist() { include_spip('inc/config'); include_spip('inc/meta'); $purger_skel = false; if ($accepter_forum = _request('forums_publics') and $accepter_forum != $GLOBALS['meta']["forums_publics"]) { $purger_skel = true; $accepter_forum = substr($accepter_forum, 0, 3); } // Appliquer les changements de moderation forum // forums_publics_appliquer : futur, saufnon, tous if (in_array($appliquer = _request('forums_publics_appliquer'), array('tous', 'saufnon'))) { $sauf = $appliquer == 'saufnon' ? "accepter_forum != 'non'" : ''; sql_updateq('spip_articles', array('accepter_forum' => $accepter_forum), $sauf); } if ($accepter_forum == 'abo') { ecrire_meta('accepter_visiteurs', 'oui'); } appliquer_modifs_config(); if ($purger_skel) { include_spip('inc/invalideur'); suivre_invalideur("forum/*"); } return array('message_ok' => _T('config_info_enregistree')); }
/** * Copier le type des groupes sur la table spip_mots * a chaque changement d'un groupe. * * @param array $flux * @return array */ function mots_post_edition($flux) { if ($flux['args']['table'] == 'spip_groupes_mots' and isset($flux['data']['titre'])) { sql_updateq('spip_mots', array('type' => $flux['data']['titre']), 'id_groupe=' . $flux['args']['id_objet']); } return $flux; }
/** * Plugin TiSpiP-Lcs pour Spip 2.0 * Licence GPL (c) 2006-2008 (d0M0.b) * */ function action_accorder_auteurs_comptes_lcs_dist(){ # $securiser_action = charger_fonction('securiser_action','inc'); # $arg = $securiser_action(); $mess_ok=''; $err=''; $redirect = _request('redirect'); if ($redirect==NULL) $redirect="?exec=accorder_comptes_lcs"; if (_request('arg')) { sql_updateq('spip_auteurs', array('statut' => '5poubelle'), 'id_auteur='.intval($args)); if(is_array(_request('tous'))){ foreach(_request('tous') as $k=>$val){ sql_updateq('spip_auteurs', array('statut' => '5poubelle'), 'id_auteur='.intval($val)); } } /* if(_request('newstatut') && _request('newstatut')=="supprime"){ sql_delete ('spip_auteurs', 'id_auteur='.sql_quote(intval($args))); } */ } }
function action_bank_response_dist($cancel = null, $auto = null) { if (isset($GLOBALS['meta']['bank_paiement']) and $prestas = unserialize($GLOBALS['meta']['bank_paiement']) and count($prestas = $prestas['presta'])) { $auto = $auto ? "auto" : ""; $result = false; // intercepter les retours depuis un presta actif if ($p = _request('bankp') and (isset($prestas[$p]) and $prestas[$p] or $p == 'gratuit')) { $call_response = charger_fonction('response', "presta/{$p}/call"); spip_log('call_' . $auto . 'response : ' . $_SERVER['REQUEST_URI'], "{$p}{$auto}"); list($id_transaction, $result) = $call_response(); spip_log('call_' . $auto . 'response : ' . "{$id_transaction}/{$result}", "{$p}{$auto}"); } else { spip_log("Prestataire {$p} inconnu ou inactif", 'bank_response'); } // fall back si le presta n'a rien renvoye de lisible // et qu'on a bien id=id_transaction;hash dans l'url if (!$result and !$id_transaction and $id = _request('id') and $id = explode(';', $id) and count($id) == 2 and $id_transaction = reset($id) and $hash = end($id)) { $id_transaction = sql_getfetsel("id_transaction", "spip_transactions", "id_transaction=" . intval($id_transaction) . " AND transaction_hash=" . sql_quote($hash)); if ($id_transaction) { sql_updateq("spip_transactions", array('message' => 'Transaction annulée', 'statut' => 'echec', 'mode' => $p), 'id_transaction=' . intval($id_transaction) . " AND statut='commande'"); } } if (!$auto) { redirige_apres_retour_transaction($p, 'acte', $cancel ? false : $result, $id_transaction); } die; // mourir silencieusement } else { spip_log('Aucun prestataire de paiement configure', 'bank_response'); } die; }
function formulaires_editer_balade_traiter_dist($id_collection = 'new', $retour = '') { $message = array(); // récupérer le rang des articles de la balade et le mettre à jour $rangs = _request('rang'); foreach ($rangs as $rang => $id_article) { $rang = $rang + 1; $ok = sql_updateq('spip_collections_liens', array('rang' => intval($rang)), "objet='article' AND id_objet = {$id_article}"); } // éditer le gis associé if ($action_editer = charger_fonction("editer_gis", 'action', true)) { list($id, $err) = $action_editer(_request('id_gis')); } // ne pas polluer l'url de retour avec des paramètres inutiles set_request('id_gis'); set_request('id_objet'); // invalider le cache include_spip('inc/invalideur'); suivre_invalideur("id='gis/{$id}"); // rediriger sur l'url de retour passée en paramètre if ($retour) { include_spip('inc/headers'); $message['redirect'] = redirige_formulaire($retour); } return $message; }
function action_instituer_forum_sujet_dist() { static $statuts_sujet = array('verrou_on' => 'verrouille', 'verrou_off' => 'verrouille', 'resolu_on' => 'resolu', 'resolu_off' => 'resolu'); $securiser_action = charger_fonction('securiser_action', 'inc'); $args = $securiser_action(); list($objet, $id_forum, $action) = explode('/', $args); if (!$action or !array_key_exists($action, $statuts_sujet)) { return; } if ($id_forum = intval($id_forum)) { $titre = sql_getfetsel('titre', 'spip_forum', 'id_forum=' . sql_quote($id_forum)); $pattern = '_' . $statuts_sujet[$action] . '_'; // On supprime systematique le statut demande. Ainsi si l'action demandee est d'enlever un // statut c'est fait sinon on evite de rajouter le meme statut $titre_modifie = trim(preg_replace(",{$pattern},UimsS", '', $titre)); // Si l'action demandee est de positionner un nouveau statut on le rajoute au titre if ($action == 'verrou_on' or $action == 'resolu_on') { $titre_modifie .= $pattern; } sql_updateq('spip_forum', array('titre' => $titre_modifie), 'id_forum =' . sql_quote($id_forum)); // Invalider les pages comportant ce forum include_spip('inc/invalideur'); suivre_invalideur("id='id_forum/{$id_forum}'"); } }
function admin_repair_plat(){ spip_log("verification des documents joints"); $out = ""; $repertoire = array(); include_spip('inc/getdocument'); $res = sql_select('*','spip_documents',"fichier REGEXP CONCAT('^',extension,'[^/\]') AND distant='non'"); while ($row=sql_fetch($res)){ $ext = $row['extension']; if (!$ext) { spip_log("document sans extension: " . $row['id_document']); continue; } if (!isset($repertoire[$ext])){ if (@file_exists($plat = _DIR_IMG. $ext .".plat")) spip_unlink($plat); $repertoire[$ext] = creer_repertoire_documents($ext); if (preg_match(',_$,',$repertoire[$ext])) $repertoire[$ext] = false; } if ($d=$repertoire[$ext]){ $d = substr($d,strlen(_DIR_IMG)); $src = $row['fichier']; $dest = $d . substr($src,strlen($d)); if (deplacer_fichier_upload(_DIR_IMG . $src, _DIR_IMG . $dest)) { sql_updateq('spip_documents',array('fichier'=>$dest),'id_document='.intval($row['id_document'])); spip_unlink(_DIR_IMG . $src); $out .= "$src => $dest<br />"; } } } return $out; }
function action_converser_dist() { if ($lang = _request('var_lang')) action_converser_post($lang); elseif ($lang = _request('var_lang_ecrire')) { if ( _request('arg') AND spip_connect()) { $securiser_action = charger_fonction('securiser_action', 'inc'); $securiser_action(); sql_updateq("spip_auteurs", array("lang" => $lang), "id_auteur = " . $GLOBALS['visiteur_session']['id_auteur']); $GLOBALS['visiteur_session']['lang'] = $lang; $session = charger_fonction('session', 'inc'); if ($spip_session = $session($GLOBALS['visiteur_session'])) { spip_setcookie( 'spip_session', $spip_session, time() + 3600 * 24 * 14 ); } } action_converser_post($lang, 'spip_lang_ecrire'); } $redirect = rawurldecode(_request('redirect')); if (!$redirect) $redirect = _DIR_RESTREINT_ABS; $redirect = parametre_url($redirect,'lang',$lang,'&'); redirige_par_entete($redirect, true); }
function action_supprimer_rubrique($r) { list(,,$id_rubrique) = $r; sql_delete("spip_rubriques", "id_rubrique=$id_rubrique"); sql_delete("spip_mots_rubriques", "id_rubrique=$id_rubrique"); // Les admin restreints qui n'administraient que cette rubrique // deviennent redacteurs // (il y a sans doute moyen de faire ca avec un having) $q = sql_select("id_auteur", "spip_auteurs_rubriques", "id_rubrique=$id_rubrique"); while ($r = sql_fetch($q)) { $id_auteur = $r['id_auteur']; sql_delete("spip_auteurs_rubriques", "id_rubrique=$id_rubrique AND id_auteur=$id_auteur"); $n = sql_countsel("spip_auteurs_rubriques", "id_auteur=$id_auteur"); if (!$n) sql_updateq("spip_auteurs", array("statut" => '1comite'), "id_auteur=$id_auteur"); } // menu_rubriques devra recalculer effacer_meta("date_calcul_rubriques"); // Une rubrique supprimable n'avait pas le statut "publie" // donc rien de neuf pour la rubrique parente include_spip('inc/rubriques'); calculer_langues_rubriques(); // invalider les caches marques de cette rubrique include_spip('inc/invalideur'); suivre_invalideur("id='id_rubrique/$id_rubrique'"); }
function inserer_document_syndic_article($liens, $id_syndic_article, $date, $titre_parent) { include_spip("base/abstract_sql"); $id_article_syndic = sql_getfetsel("id_syndic_article", "spip_syndic_articles", "id_syndic_article=" . _q($id_syndic_article), "", "date desc", "0,1"); if (!$date) { $date = date("Y-m-d h:i:s"); } foreach ($liens as $link) { $id3 = recuperer_id3($link); $champs = array('titre' => $titre_parent, 'fichier' => $link, 'tag_auteur' => $id3['artiste'], 'tag_titre' => $id3['titre'], 'date' => date("Y-m-d H:i:s", $date), 'distant' => 'oui', 'statut' => 'publie', 'date' => $date, 'extension' => 'mp3'); $s = sql_getfetsel("id_document", "spip_documents", "fichier=" . _q($champs['fichier']), "", "date desc", "0,1"); if ($s) { // maj le document distant sql_updateq('spip_documents', $champs, 'id_document=' . intval($s)); // a t'on un lien entre ce doc et cet article ? $l = sql_getfetsel("id_document", "spip_documents_liens", "id_document=" . _q($s) . " and id_objet=" . _q($id_article_syndic)); if (!$l) { $champs_liens = array('id_document' => $s, 'id_objet' => $id_article_syndic, 'objet' => 'syndic_article'); sql_insertq('spip_documents_liens', $champs_liens); } } else { // enregistrer le document distant $id_document = sql_insertq('spip_documents', $champs); // le lier a son syndic article $champs_liens = array('id_document' => $id_document, 'id_objet' => $id_article_syndic, 'objet' => 'syndic_article'); sql_insertq('spip_documents_liens', $champs_liens); } } }
function clevermail_post_update($pst_id) { if ($pst_id == intval($pst_id)) { $lst_id = sql_getfetsel('lst_id', 'spip_cm_posts', 'pst_id=' . intval($pst_id)); $post = array('lst_id' => intval($lst_id), 'pst_date_create' => time()); $list = sql_fetsel('*', 'spip_cm_lists', 'lst_id = ' . intval($lst_id)); // Traitement de la source HTML if (strpos($list['lst_url_html'], 'http://') !== false) { include_spip('inc/distant'); $url_html = $list['lst_url_html'] . (strpos($list['lst_url_html'], '?') !== false ? '&' : '?') . 'date=' . date("Y-m-d", $last_create) . '&lst_id=' . intval($lst_id); $post['pst_html'] = recuperer_page($url_html); } else { $contexte = array('date' => date("Y-m-d", $last_create), 'lst_id' => intval($lst_id)); // on passe la globale lien_implicite_cible_public en true // pour avoir les liens internes en public (en non prive d'apres le contexte) // credit de l'astuce: denisb & rastapopoulos & erational $GLOBALS['lien_implicite_cible_public'] = true; $post['pst_html'] = recuperer_fond($list['lst_url_html'], $contexte); // on revient a la config initiale unset($GLOBALS['lien_implicite_cible_public']); } // Traitement de la source texte if ($list['lst_url_text'] != '') { if (strpos($list['lst_url_text'], 'http://') !== false) { include_spip('inc/distant'); $url_text = $list['lst_url_text'] . (strpos($list['lst_url_text'], '?') !== false ? '&' : '?') . 'date=' . date("Y-m-d", $last_create) . '&lst_id=' . intval($lst_id); $post['pst_text'] = recuperer_page($url_text); } else { $contexte = array('date' => date("Y-m-d", $last_create), 'lst_id' => intval($lst_id)); // on passe la globale lien_implicite_cible_public en true // pour avoir les liens internes en public (en non prive d'apres le contexte) // credit de l'astuce: denisb & rastapopoulos & erational $GLOBALS['lien_implicite_cible_public'] = true; $post['pst_text'] = recuperer_fond($list['lst_url_text'], $contexte); // on revient a la config initiale unset($GLOBALS['lien_implicite_cible_public']); } $post['pst_text'] = strip_tags($post['pst_text']); } else { // TODO : essayer d'utiliser TEN : http://www.headstar.com/ten/ include_spip('classes/facteur'); $post['pst_text'] = Facteur::html2text($post['pst_html']); } if (trim($post['pst_html']) != '' && trim($post['pst_text']) != '') { /* if (preg_match(",<title>(.*)</title>,", $post['pst_html'], $regs)) { $post['pst_subject'] = trim($regs[1]); } else { $post['pst_subject'] = 'Aucun sujet'; } */ $pst_id = sql_updateq('spip_cm_posts', $post, 'pst_id=' . $pst_id); spip_log('Mise a jour du message « ' . $post['pst_subject'] . ' » (id=' . $pst_id . ') dans la liste « ' . $list['lst_name'] . ' » (id=' . $lst_id . ')', 'clevermail'); return $pst_id; } else { spip_log('Mise a jour d\'un message dans la liste « ' . $list['lst_name'] . ' » (id=' . $lst_id . ') impossible, contenu vide à ' . $url_html . ' et ' . $url_text, 'clevermail'); return false; } } }
function genie_ajouter_date_redac_articles_dist($t) { //spip_log("Mon travail c est juste une ligne de log....",_LOG_INFO_IMPORTANTE); // echo "1"; if ($resultats = sql_select("*", "spip_articles", "id_secteur=115 AND statut='publie' AND date_redac=0000-00-00")) { // boucler sur les resultats while ($res = sql_fetch($resultats)) { // utiliser les resultats // hierarchie des rubriques de l'article via la fonction de spip include_spip("inc/rubriques"); $hierarchie = calcul_hierarchie_in($res['id_rubrique'], true); // la date_numero et l'id_rubrique de la rubrique Numéro. $numero = sql_fetsel("date_numero,id_rubrique", "spip_rubriques", array(sql_in('id_rubrique', $hierarchie), 'profondeur=1')); // la date du numéro est à 0. On ne vérifie que l'année (?) if (substr($numero['date_numero'], 0, 4) == '0000') { spip_log("Article #" . $res['id_article'] . " : la date_redac n'a pas pu être modifiée. La rubrique #" . $numero['id_rubrique'] . " correspondant au numéro n'a pas de date valide.", 'vacarme_cron' . _LOG_INFO_IMPORTANTE); // return 1; // 0 ou 1 ? } else { spip_log("Mise à jour de l'article #" . $res['id_article'], 'vacarme_cron' . _LOG_INFO_IMPORTANTE); sql_updateq("spip_articles", array('date_redac' => $numero['date_numero']), "id_article=" . intval($res['id_article'])); // return 1; } } } return 1; }
function action_clevermail_list_subscriber_remove_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); $lsr_id = $arg; if (sql_countsel("spip_cm_lists_subscribers", "lsr_id=" . sql_quote($lsr_id)) == 1) { include_spip('inc/autoriser'); if (autoriser('supprimer', 'cm_list_subscriber', sql_quote($lsr_id))) { $abonnement = sql_fetsel("sub_id, lst_id", "spip_cm_lists_subscribers", "lsr_id=" . sql_quote($lsr_id)); $abonne = sql_getfetsel("sub_email", "spip_cm_subscribers", "sub_id=" . intval($abonnement['sub_id'])); $liste = sql_fetsel("lst_moderator_email, lst_name", "spip_cm_lists", "lst_id=" . intval($abonnement['lst_id'])); sql_delete("spip_cm_lists_subscribers", "lsr_id = " . sql_quote($lsr_id)); sql_delete("spip_cm_posts_queued", "sub_id = " . intval($abonnement['sub_id'])); if (sql_countsel("spip_cm_lists_subscribers", "sub_id=" . intval($abonnement['sub_id'])) == 0) { // No more subscription, subscriber address is removed sql_delete("spip_cm_pending", "sub_id = " . intval($abonnement['sub_id'])); sql_updateq("spip_cm_subscribers", array('sub_email' => md5($abonne) . '@example.com'), "sub_id = " . intval($abonnement['sub_id'])); } $destinataire = $liste['lst_moderator_email']; $sujet = '[' . $liste['lst_name'] . '] Désinscription de ' . addslashes($abonne); $corps = _T('clevermail:mail_info_desinscription_corps', array('nom_site' => $GLOBALS['meta']['nom_site'], 'url_site' => $GLOBALS['meta']['adresse_site'], 'sub_email' => addslashes($abonne), 'lst_name' => $liste['lst_name'])); $expediteur = sql_getfetsel("set_value", "spip_cm_settings", "set_name='CM_MAIL_FROM'"); $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); if ($envoyer_mail($destinataire, $sujet, $corps, $expediteur)) { spip_log('Envoie du mail OK', 'clevermail'); } else { spip_log('Envoie du mail KO', 'clevermail'); } spip_log('Suppression de l\'abonnement de « ' . $abonne . ' » à la liste « ' . $liste['lst_name'] . ' » (id=' . $abonnement['lst_id'] . ')', 'clevermail'); } } }
function formulaires_delete_traiter_dist($id_article = 'new', $retour = '', $ajaxload = 'oui') { include_spip('base/abstract_sql'); include_spip('inc/texte'); include_spip('action/editer_article'); include_spip('inc/autoriser'); $article = _request('article'); $id_auteur = $GLOBALS['visiteur_session']['id_auteur']; include_spip('inc/autoriser'); if (!autoriser('modifier', 'article', $article)) { $id_article = false; $result = sql_select('*', 'spip_auteurs_liens', 'id_objet=' . intval($article) . ' AND objet=' . sql_quote("article")); if ($row = sql_fetch($result)) { if ($row['id_auteur'] == $id_auteur) { $id_article = $article; } } } else { $id_article = $article; } if ($id_article) { // 2 actualizampos los campos del articulo sql_updateq('spip_articles', array('statut' => 'poubelle'), 'id_article=' . intval($id_article)); // message return array("editable" => true, "message_ok" => _T('cgeomap:message_delete') . ':' . $id_article); } else { // message return array("editable" => false, "message_erreur" => _T('cgeomap:not_allowed')); } }
function upgrade_produits() { $all = sql_allfetsel("*", "spip_produits"); include_once _DIR_PLUGIN_SALE . "sale_fonctions.php"; foreach ($all as $produit) { #var_dump($produit); $set = array(); if (function_exists('sale')) { $set['texte'] = sale($produit['texte']); $set['texte'] = preg_replace(",</?p>\\s*,ims", "\n\n", $set['texte']); $set['texte'] = preg_replace(",<br>(\n+),ims", "\\1", $set['texte']); $set['texte'] = trim($set['texte']) . "\n"; } $set['reference'] = trim($produit['reference']); if (!$set['reference']) { $set['reference'] = 'P' . trim($produit['old_id']); #var_dump($set); #die(); } if (strpos($produit['poids'], ".") !== false) { $set['poids'] = intval(round(floatval($produit['poids']) * 1000)); } #var_dump($set); sql_updateq("spip_produits", $set, 'id_produit=' . intval($produit['id_produit'])); } sql_alter("table spip_produits CHANGE poids poids bigint(21) NOT NULL DEFAULT 0"); die('ok?'); }
function action_copier_local_post($id_document) { // Il faut la source du document pour le copier $row = sql_fetsel("fichier, descriptif", "spip_documents", "id_document=$id_document"); $source = $row['fichier']; include_spip('inc/distant'); // pour 'copie_locale' include_spip('inc/documents'); // pour 'set_spip_doc' $fichier = copie_locale($source); if ($fichier) { $fichier = _DIR_RACINE . $fichier; $taille = filesize($fichier); // On le sort du repertoire IMG/distant/ $dest = preg_replace(',^.*/distant/[^/_]+[/_],', '', $fichier); $dest = sous_repertoire(_DIR_IMG, preg_replace(',^.*\.,', '', $fichier)) . $dest; if ($dest != $fichier AND @rename($fichier, $dest)) $fichier = $dest; // On indique l'ancien URL dans le descriptif (pis-aller) $row['descriptif'] .= ($row['descriptif'] ? "\n\n":'') . "[->$source]"; // $fichier contient IMG/distant/... // or, dans la table documents, IMG doit etre exclu. $fichier = set_spip_doc($fichier); spip_log("convertit doc $id_document en local: $source => $fichier"); sql_updateq('spip_documents', array('fichier' =>$fichier, 'distant'=>'non', 'taille'=>$taille, 'descriptif'=> $row['descriptif']),"id_document=".$id_document); } else { spip_log("echec copie locale $source"); } }
function formulaires_editer_json_article_traiter_dist($id_article = 'new', $retour = '') { $message = array('editable' => true, 'message_ok' => ''); $vhplab_json = _request('vhplab_json'); $vhplab_json_num = intval($vhplab_json); if ($vhplab_json_num > 0) { // comprobamos si el articulo ya ha sido relacionado con un id $result = sql_select('*', 'spip_vhplab_json_liens', 'id_objet=' . intval($id_article) . ' AND objet=' . sql_quote("article")); if ($row = sql_fetch($result)) { // si el articulo ya ha sido relacionado con un id actualizamos el enlace sql_updateq('spip_vhplab_json', array('id_json' => $vhplab_json_num), 'id_vhplab_json=' . intval($row['id_vhplab_json'])); $message['message_ok'] = _T('vhplab:json_update_ok'); } else { // si el articulo no ha sido relacionado con ningún id creamos un enlace $id_vhplab = sql_insertq("spip_vhplab_json", array('id_json' => $vhplab_json_num)); sql_insertq('spip_vhplab_json_liens', array('id_vhplab_json' => intval($id_vhplab), 'id_objet' => intval($id_article), 'objet' => 'article')); $message['message_ok'] = _T('vhplab:json_insert_ok'); } } if ($retour) { include_spip('inc/headers'); $message['message_ok'] .= redirige_formulaire($retour); } return $message; }
function message_oubli($email, $param) { $r = formulaires_oubli_mail($email); if (is_array($r) AND $r[1]) { include_spip('inc/acces'); # pour creer_uniqid include_spip('inc/texte'); # pour corriger_typo $cookie = creer_uniqid(); sql_updateq("spip_auteurs", array("cookie_oubli" => $cookie), "id_auteur=" . $r[1]['id_auteur']); $nom = textebrut(corriger_typo($GLOBALS['meta']["nom_site"])); $envoyer_mail = charger_fonction('envoyer_mail','inc'); if ($envoyer_mail($email, ("[$nom] " . _T('pass_oubli_mot')), _T('pass_mail_passcookie', array('nom_site_spip' => $nom, 'adresse_site' => url_de_base(), 'sendcookie' => generer_url_public('spip_pass', "$param=$cookie", true)))) ) return _T('pass_recevoir_mail'); else return _T('pass_erreur_probleme_technique'); } return _T('pass_erreur_probleme_technique'); }
/** * @deprecated * @param null|string $arg */ function action_bank_enregistrer_modereglement_dist($arg = null) { if (is_null($arg)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } $arg = explode("-", $arg); $id_transaction = intval(array_pop($arg)); $presta = implode("-", $arg); if (isset($GLOBALS['meta']['bank_paiement']) and $config = unserialize($GLOBALS['meta']['bank_paiement'])) { $prestas = is_array($config['presta']) ? $config['presta'] : array(); $prestas = array_filter($prestas); if (is_array($config['presta_abo'])) { $prestas = array_merge($prestas, array_filter($config['presta_abo'])); } } if ((isset($prestas[$presta]) and $prestas[$presta] or $presta == 'gratuit') and $id_transaction and $transaction = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction))) { if ($transaction['statut'] == 'commande') { sql_updateq("spip_transactions", array('mode' => $presta, 'autorisation_id' => date('d/m/Y-H:i:s') . "/" . $GLOBALS['ip']), 'id_transaction=' . intval($id_transaction)); // trigger le regelement en attente // cela permet de factoriser le code $row = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction)); pipeline('trig_bank_reglement_en_attente', array('args' => array('statut' => 'attente', 'mode' => $row['mode'], 'type' => $row['abo_uid'] ? 'abo' : 'acte', 'id_transaction' => $id_transaction, 'row' => $row), 'data' => '')); $GLOBALS['redirect'] = _request('redirect'); $GLOBALS['redirect'] = parametre_url($GLOBALS['redirect'], "attente_mode", $presta, "&"); } } }
/** * Supprimer un lien entre un document et un objet * * @param int $id_document * @param string $objet * @param int $id_objet * @param bool $supprime * si true, le document est supprime si plus lie a aucun objet * @param bool $check * si true, on verifie les documents references dans le texte de l'objet * et on les associe si pas deja fait * @return bool */ function supprimer_lien_document($id_document, $objet, $id_objet, $supprime = false, $check = false) { if (!($id_document = intval($id_document))) { return false; } // D'abord on ne supprime pas, on dissocie include_spip('action/editer_liens'); objet_dissocier(array('document' => $id_document), array($objet => $id_objet)); // Si c'est une vignette, l'eliminer du document auquel elle appartient // cas tordu peu probable sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=" . $id_document); // verifier son statut apres une suppression de lien include_spip('action/editer_document'); document_instituer($id_document); pipeline('post_edition', array('args' => array('operation' => 'delier_document', 'action' => 'delier_document', 'table' => 'spip_documents', 'id_objet' => $id_document, 'objet' => $objet, 'id' => $id_objet), 'data' => null)); if ($check) { // si demande, on verifie que ses documents vus sont bien lies ! $spip_table_objet = table_objet_sql($objet); $table_objet = table_objet($objet); $id_table_objet = id_table_objet($objet, $serveur); $champs = sql_fetsel('*', $spip_table_objet, addslashes($id_table_objet) . "=" . intval($id_objet)); $marquer_doublons_doc = charger_fonction('marquer_doublons_doc', 'inc'); $marquer_doublons_doc($champs, $id_objet, $objet, $id_table_objet, $table_objet, $spip_table_objet, '', $serveur); } // On supprime ensuite s'il est orphelin // et si demande // ici on ne bloque pas la suppression d'un document rattache a un autre if ($supprime and !sql_countsel('spip_documents_liens', "objet!='document' AND id_document=" . $id_document)) { $supprimer_document = charger_fonction('supprimer_document', 'action'); return $supprimer_document($id_document); } }
function action_clevermail_list_subscriber_clear_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); if (sql_countsel("spip_cm_lists_subscribers AS list, spip_cm_subscribers AS sub", "list.sub_id = sub.sub_id AND sub.sub_email LIKE '*****@*****.**'")) { $subscribers = sql_select("sub.sub_id", "spip_cm_lists_subscribers AS list, spip_cm_subscribers AS sub", "list.sub_id = sub.sub_id AND sub.sub_email LIKE '*****@*****.**'", "list.sub_id", "", ""); $sub_deleted = ""; while ($subscriber = sql_fetch($subscribers)) { sql_delete("spip_cm_lists_subscribers", "sub_id = " . intval($subscriber['sub_id'])); sql_delete("spip_cm_pending", "sub_id = " . intval($subscriber['sub_id'])); $sub_deleted = $sub_deleted . ' ' . intval($subscriber['sub_id']); } spip_log('Suppression des abonnements ' . $sub_deleted, 'clevermail'); } else { spip_log('Il n\'y a pas d\'abonnement à supprimer', 'clevermail'); } if (sql_countsel("spip_cm_lists_subscribers", "", "lsr_id", "count(lsr_id) > 1") > 1) { $doublons = sql_select("lsr_id", "spip_cm_lists_subscribers", "", "lsr_id", "", "", "count(lsr_id) > 1"); while ($doublon = sql_fetch($doublons)) { $lists = sql_select("lst_id, sub_id", "spip_cm_lists_subscribers", "lsr_id ='" . $doublon['lsr_id'] . "'"); while ($list = sql_fetch($lists)) { sql_updateq("spip_cm_lists_subscribers", array('lsr_id' => md5('subscribe#' . intval($list['lst_id']) . '#' . intval($list['sub_id']) . '#' . time())), "lst_id=" . sql_quote($list['lst_id']) . " AND sub_id=" . sql_quote($list['sub_id'])); } } } //Récupération du timestamp du mois dernier $today = time(); $date_today = date("d:m:Y", $today); $today_exploded = explode(":", $date_today); $mois = (int) $today_exploded[1]; $mois = --$mois; $valid_date = mktime(0, 0, 0, $mois, $today_exploded[0], $today_exploded[2]); sql_delete("spip_cm_pending", "pnd_action_date <" . $valid_date); spip_log('Suppression des abonnements en attente depuis plus d\'un mois', 'clevermail'); }
function formulaires_editer_profil_traiter_dist($id_auteur, $retour = '') { $res = array(); $res['nom'] = _request('nom'); $res['prenom'] = _request('prenom'); $res['activite'] = _request('activite'); $res['email'] = _request('email'); $pass = _request('new_pass'); $pass2 = _request('new_pass2'); if ($pass) { if ($pass == $pass2) { include_spip('inc/acces'); $htpass = generer_htpass($pass); $alea_actuel = creer_uniqid(); $alea_futur = creer_uniqid(); $new_pass = md5($alea_actuel . $pass); $res['pass'] = $new_pass; $res['htpass'] = $htpass; $res['alea_actuel'] = $alea_actuel; $res['alea_futur'] = $alea_futur; $res['low_sec'] = ''; } } if ($id_auteur = intval($id_auteur)) { sql_updateq('spip_auteurs', $res, "id_auteur={$id_auteur}"); $res['message_ok'] = _T('fraap_candidatures:form_profil_modifie'); } else { $res['message_erreur'] = _T('fraap_candidatures:form_probleme'); } return $res; }
/** * Enregistrer le reglement effectif d'une transaction * On peut passer ici 2 fois pour une meme transaction : * - lors de la notification serveur a serveur * - lors du retour de l'internaute par redirection depuis le presta bancaire * * @param int $id_transaction * @param array $options * string message * array row_prec * bool notifier * @return bool */ function bank_rembourser_transaction_dist($id_transaction, $options = array()) { $message = isset($options['message']) ? $options['message'] : ""; $notifier = isset($options['notifier']) ? $options['notifier'] : true; if (!isset($options['row_prec'])) { $options['row_prec'] = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction)); } $row_prec = $options['row_prec']; // ne pas jouer 2 fois le traitement du remboursement if (!$row_prec or $row_prec['statut'] !== 'ok') { return false; } // et on le pose aussitot sql_updateq('spip_transactions', array('statut' => 'rembourse'), "id_transaction=" . intval($id_transaction)); $notifier = ($notifier and $row_prec['statut'] != 'rembourse'); $message = trim($row_prec['message'] . "\n" . trim($message)); // ensuite un pipeline de traitement, notification etc... $message = pipeline('bank_traiter_remboursement', array('args' => array('id_transaction' => $id_transaction, 'notifier' => $notifier, 'avant' => $row_prec, 'options' => $options), 'data' => $message)); sql_updateq("spip_transactions", array('message' => $message, 'finie' => 1), "id_transaction=" . intval($id_transaction)); // notifier aux admins avec un ticket caisse if ($notifier) { $bank_editer_ticket_admin = charger_fonction('bank_editer_ticket_admin', 'inc'); $bank_editer_ticket_admin($id_transaction, "REMBOURSEMENT Transaction"); } return true; }
function supprimer_lien_document($id_document, $objet, $id_objet) { if (!$id_document = intval($id_document)) return false; // D'abord on ne supprime pas, on dissocie sql_delete("spip_documents_liens", $z = "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_document=".$id_document); // Si c'est une vignette, l'eliminer du document auquel elle appartient sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=".$id_document); pipeline('post_edition', array( 'args' => array( 'operation' => 'delier_document', 'table' => 'spip_documents', 'id_objet' => $id_document, 'objet' => $objet, 'id' => $id_objet ), 'data' => null ) ); // On supprime ensuite s'il est orphelin // (autorisation verifiee dans l'action) $supprimer_document = charger_fonction('supprimer_document','action'); return $supprimer_document($id_document); }
function action_instituer_langue_rubrique_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); $changer_lang = _request('changer_lang'); list($id_rubrique, $id_parent) = preg_split('/\W/', $arg); if ($changer_lang AND $id_rubrique>0 AND $GLOBALS['meta']['multi_rubriques'] == 'oui' AND ($GLOBALS['meta']['multi_secteurs'] == 'non' OR $id_parent == 0)) { if ($changer_lang != "herit") sql_updateq('spip_rubriques', array('lang'=>$changer_lang, 'langue_choisie'=>'oui'), "id_rubrique=$id_rubrique"); else { if ($id_parent == 0) $langue_parent = $GLOBALS['meta']['langue_site']; else { $langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=$id_parent"); } sql_updateq('spip_rubriques', array('lang'=>$langue_parent, 'langue_choisie'=>'non'), "id_rubrique=$id_rubrique"); } include_spip('inc/rubriques'); calculer_langues_rubriques(); // invalider les caches marques de cette rubrique include_spip('inc/invalideur'); suivre_invalideur("id='id_rubrique/$id_rubrique'"); } }
/** * Action de mise à jour des descriptions d'un dépot * * @return array * Liste identifiant du dépot, texte d'erreur éventuel **/ function action_editer_depot_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); // Verification des autorisations if (!autoriser('webmestre')) { include_spip('inc/minipres'); echo minipres(); exit; } // Le depot n'est jamais cree par une edition mais via le formulaire ajouter_depot // On est toujours en presence d'une mise a jour pour cette action, l'id_depot // doit donc etre renseigne sinon c'est une erreur if ($id_depot = intval($arg)) { // On teste si l'auteur est connecte. Si non on renvoie sur le formulaire login $id_auteur = $GLOBALS['visiteur_session']['id_auteur']; if (!$id_auteur) { include_spip('inc/headers'); redirige_url_ecrire(); } // On met a jour le depot avec les saisies if (sql_updateq('spip_depots', array('titre' => _request('titre'), 'descriptif' => _request('descriptif'), 'type' => _request('type')), 'id_depot=' . sql_quote($id_depot))) { } // Enregistre l'envoi dans la BD // Dans le cas du depot rien n'est fait actuellement, on garde cette fonction // par souci de coherence avec les autres editions d'objet et pour usage futur $err = depots_set($id_depot); if (!$err) { spip_log("ACTION MODIFIER DEPOT (manuel) : id_depot = " . $id_depot, 'svp_actions.' . _LOG_INFO); } } return array($id_depot, $err); }
function genie_clevermail_auto_ajout_abonnes_dist() { if ($autoListes = sql_select("lst_id, lst_name, lst_auto_subscribers, lst_auto_subscribers_mode", "spip_cm_lists", "lst_auto_subscribers != '' AND lst_auto_subscribers_updated < " . (time() - 60 * 60 * 24))) { include_spip('inc/distant'); while ($liste = sql_fetch($autoListes)) { if ($adresses = recuperer_page($liste['lst_auto_subscribers'])) { if (!clevermail_verification_adresses_email($adresses)) { // XXX : log en chaîne de langue spip_log('Le format des adresses e-mail ne semble pas bon dans le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail'); } else { $retour = clevermail_abonnes_ajout(array($liste['lst_id']), intval($liste['lst_auto_subscribers_mode']), $adresses); sql_updateq("spip_cm_lists", array('lst_auto_subscribers_updated' => time()), "lst_id=" . $liste['lst_id']); // XXX : log en chaîne de langue $msg = 'Ajout automatique d\'abonnés à la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') à partir du fichier ' . $liste['lst_auto_subscribers'] . ' : '; if ($retour === false) { $msg .= _T('clevermail:aucun_nouvel_abonne'); } else { $msg .= $retour['nb_nouv'] > 0 ? $retour['nb_nouv'] . _T('clevermail:n_nouveaux_abonnes') : _T('clevermail:aucun_nouvel_abonne'); $msg .= $retour['nb_nouv'] > 0 && $retour['nb_maj'] > 0 ? _T('clevermail:nouveaux_abonnes_et') : ''; $msg .= $retour['nb_maj'] > 0 ? $retour['nb_maj'] . _T('clevermail:changements_mode_abonnement') : ''; spip_log($msg, 'clevermail'); } } } else { // XXX : log en chaîne de langue spip_log('Impossible de télécharger le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail'); } } } return 1; }
function genie_depublier_dist($time) { //va chercher les objets de spip_depublies avec une date_depublie pour aujourd'hui include_spip('base/abstract_sql'); $today = date('Y-m-d H:i:s'); if ($depublications = sql_allfetsel('*', 'spip_depublies', 'DATE_FORMAT(date_depublie, "%Y-%m-%d %H:%i:%s") <= ' . sql_quote($today) . ' AND DATE_FORMAT(date_depublie, "%Y-%m-%d %H:%i:%s") >0') and is_array($depublications)) { foreach ($depublications as $depublication) { $objet = $depublication['objet']; $id_objet = $depublication['id_objet']; $statut_depublication = $depublication['statut']; $date_depublie = $depublication['date_depublie']; spip_log("on veut depublier {$objet} {$id_objet} {$statut_depublication}", 'depublication'); //on cherche la table de l'objet donné $_id_objet = id_table_objet($objet); //id_article $table = table_objet_sql($objet); //articles //si le statut est différent de celui demandé if ($a_depublier = sql_getfetsel($_id_objet, $table, "statut != " . sql_quote($statut_depublication) . " AND {$_id_objet} = " . intval($id_objet))) { //si les conditions sont remplies, on change le statut dans cette table sql_updateq($table, array("statut" => $statut_depublication), "{$_id_objet}= " . intval($id_objet)); //et on supprime l'entrée sql_delete('spip_depublies', 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet)); } } } return 1; }
/** * Modifier la langue d'un objet * * @param string $objet * @param int $id * @param int $id_rubrique * @param string $changer_lang * @return string */ function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_lang) { if ($changer_lang) { $table_objet_sql = table_objet_sql($objet); $id_table_objet = id_table_objet($objet); if ($changer_lang != "herit") { sql_updateq($table_objet_sql, array('lang' => $changer_lang, 'langue_choisie' => 'oui'), "{$id_table_objet}=" . intval($id)); include_spip('inc/rubriques'); if ($table_objet_sql == 'spip_rubriques') { calculer_langues_rubriques(); } $langues = calculer_langues_utilisees(); ecrire_meta('langues_utilisees', $langues); } else { $langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=" . intval($id_rubrique)); if (!$langue_parent) { $langue_parent = $GLOBALS['meta']['langue_site']; } sql_updateq($table_objet_sql, array('lang' => $langue_parent, 'langue_choisie' => 'non'), "{$id_table_objet}=" . intval($id)); $changer_lang = $langue_parent; if ($table_objet_sql == 'spip_rubriques') { include_spip('inc/rubriques'); calculer_langues_rubriques(); } } } return $changer_lang; }
function inc_profils_fusionner_dist($id_auteur, $id_import) { spip_log($s = "Fusion auteur #{$id_import} => #{$id_auteur}", "profils" . _LOG_INFO_IMPORTANTE); // dupliquer les liens include_spip('action/editer_liens'); objet_dupliquer_liens('auteur', $id_import, $id_auteur); // supprimer les liens objet_dissocier(array('auteur' => $id_import), '*'); objet_dissocier('*', array('auteur' => $id_import)); // changer le id_auteur dans toutes les tables qui en ont un $tables = lister_tables_objets_sql(); foreach ($tables as $table_sql => $desc) { if (isset($desc['field']['id_auteur'])) { spip_log("{$table_sql} : id_auteur #{$id_import} => #{$id_auteur}", "profils" . _LOG_INFO_IMPORTANTE); sql_updateq($table_sql, array('id_auteur' => $id_auteur), 'id_auteur=' . intval($id_import)); } } // log/poubelle sur l'import $log = date('Y-m-d H:i:s') . ' par #' . $GLOBALS['visiteur_session']['id_auteur'] . ' : ' . $s . "\n"; $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_import)); $set = array("statut" => "5poubelle", "email" => $auteur['email'] . "-xxdoublon", "login" => $auteur['login'] . "-xxdoublon", 'log' => $auteur['log'] . $log); sql_updateq("spip_auteurs", $set, "id_auteur=" . intval($auteur['id_auteur'])); // log sur le nouveau $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); $set = array('log' => $auteur['log'] . $log); sql_updateq("spip_auteurs", $set, "id_auteur=" . intval($auteur['id_auteur'])); }