/** * Verification du formulaire * @return */ function formulaires_adhi3_recherche_verifier_dist($type_objet, $id_objet) { global $visiteur_session; global $email_env; if (_request('mailer_liste')) { $auteurs_checked = _request('check_aut'); if (is_array($auteurs_checked)) { //include_spip('inc/autoriser'); foreach ($auteurs_checked as $key => $val) { $email_envoi = sql_fetsel('nom_famille, prenom, email', 'spip_auteurs', 'id_auteur=' . intval($val)); // Recherche email_envoi ou email webmaster pour détecter les emails inactifs $email_env = adhclub_imp_email_fictif(intval($val)); if ($email_envoi['email'] == $email_env['tmp']) { $erreurs['check_aut' . $val] = array('nom' => $email_envoi['nom_famille'], 'prenom' => $email_envoi['prenom'], 'email' => $email_envoi['email']); } } if (count($erreurs) > 0) { foreach ($erreurs as $erreur => $infos) { $infos_erreurs = "<p>" . _T('adhclub:erreur_email', $infos) . "</p>"; } $erreurs['message_erreur'] = "<p>" . _T('adhclub:erreur_envoi_email') . "</p>"; $erreurs['message_erreur'] .= $infos_erreurs; } } else { $erreurs['message_erreur'] = _T('adhclub:no_user_selected'); } } return $erreurs; }
function inc_petitionner_dist($id_article, $script, $args, $ajax=false) { global $spip_lang_right; $petition = sql_fetsel("*", "spip_petitions", "id_article=$id_article"); if (!autoriser('modererpetition', 'article', $id_article)) return petitionner_decompte($id_article, $petition); $choix = petitionner_choisir($petition); if ($petition) { $res = $choix . petitionner_decompte($id_article, $petition) . petitionner_params($petition) . petitionner_message($petition); $class = ''; } else { $res = $choix; $class = $ajax ? '' : ' visible_au_chargement'; } $atts = " class='$class' style='float: $spip_lang_right;' id='valider_petition'"; $res = ajax_action_post('petitionner', $id_article, $script, $args, $res,_T('bouton_changer'), $atts); return ajax_action_greffe("petitionner", $id_article, $res); }
/** * Calcule le contexte pour le menu du bandeau * * La fonction tente de retrouver la rubrique et le secteur d'appartenance * à partir du nom du fichier exec, si celui ci correspond à un objet * éditorial de SPIP (et qu'il possède ces champs), et dans ce cas, * l'ajoute au contexte. * * @param null|array $contexte * Contexte connu. * S'il n'est pas transmis, on prend `$_GET` * @return array * Contexte **/ function definir_barre_contexte($contexte = null) { if (is_null($contexte)) { $contexte = $_GET; } elseif (is_string($contexte)) { $contexte = unserialize($contexte); } if (!isset($contexte['id_rubrique']) and isset($contexte['exec'])) { if (!function_exists('trouver_objet_exec')) { include_spip('inc/pipelines_ecrire'); } if ($e = trouver_objet_exec($contexte['exec'])) { $_id = $e['id_table_objet']; if (isset($contexte[$_id]) and $id = intval($contexte[$_id])) { $table = $e['table_objet_sql']; $row = sql_fetsel('*', $table, "{$_id}=" . intval($id)); if (isset($row['id_rubrique'])) { $contexte['id_rubrique'] = $row['id_rubrique']; if (isset($row['id_secteur'])) { $contexte['id_secteur'] = $row['id_secteur']; } } } } } return $contexte; }
/** * il faut avoir un id_transaction et un transaction_hash coherents * pour se premunir d'une tentative d'appel exterieur * * * @return array */ function presta_virement_call_response() { // recuperer la reponse en post et la decoder $id_transaction = _request('id_transaction'); $transaction_hash = _request('hash'); $mode = 'virement'; if (!($row = sql_fetsel('*', 'spip_commandes_transactions', 'id_transaction=' . intval($id_transaction)))) { spip_log("id_transaction {$id_transaction} non trouve", 'gratuit.' . _LOG_ERREUR); return array($id_transaction, false); } if ($transaction_hash != $row['transaction_hash']) { spip_log("id_transaction {$id_transaction}, hash {$transaction_hash} non conforme", 'gratuit.' . _LOG_ERREUR); return array($id_transaction, false); } if ($row['statut'] == 'ok') { spip_log("Check:Transaction {$id_transaction} deja validee", "virement"); return array($id_transaction, true); } // si pages publiques, c'est le client qui demande à payer par virement if (!test_espace_prive()) { $bank_recoit_notification = charger_fonction('recoit_notification', 'bank'); return bank_recoit_notification($id_transaction, $transaction_hash, $mode); //retourne $id_transaction,true } return array($id_transaction, false); }
/** * Preselectionner la rubrique lors de la creation * desactive par defaut suite a remontee utilisateur mais activable par define * ou surchargeable * * @param string $objet * @param array $row * @return string */ function inc_preselectionner_parent_nouvel_objet_dist($objet, $row) { if (!_AUTO_SELECTION_RUBRIQUE) { return ''; } if (!isset($row['id_rubrique'])) { return ''; } $id_rubrique = ''; if ($GLOBALS['connect_id_rubrique']) { // si admin restreint : sa rubrique $id_rubrique = $GLOBALS['connect_id_rubrique'][0]; } else { // sinon la derniere rubrique cree $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", "", "", "id_rubrique DESC", "0,1"); $id_rubrique = $row_rub['id_rubrique']; } // si le choix ne convient pas, on cherche dans un secteur if (!autoriser('creer' . $objet . 'dans', 'rubrique', $id_rubrique)) { $id_rubrique = ''; // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises $res = sql_select("id_rubrique", "spip_rubriques", "id_parent=0"); while (!$id_rubrique and $row_rub = sql_fetch($res)) { if (autoriser('creer' . $objet . 'dans', 'rubrique', $row_rub['id_rubrique'])) { $id_rubrique = $row_rub['id_rubrique']; } } } return $id_rubrique; }
function balise_FORMULAIRE_SIGNATURE_stat($args, $context_compil) { // pas d'id_article => erreur de contexte if (!$args[0]) { $msg = array('zbug_champ_hors_motif', array ('champ' => 'FORMULAIRE_SIGNATURE', 'motif' => 'ARTICLES')); erreur_squelette($msg, $context_compil); return ''; } // article sans petition => pas de balise else if (!$args[1]) return ''; else { // aller chercher dans la base la petition associee if ($r = sql_fetsel("texte, site_obli, message", 'spip_petitions', "id_article = ".intval($args[0]))) { $args[2] = $r['texte']; // le signataire doit-il donner un site ? $args[3] = ($r['site_obli'] == 'oui') ? ' ':''; // le signataire peut-il proposer un commentaire $args[4] = ($r['message'] == 'oui') ? ' ':''; } return $args; } }
/** * 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 action_supprimer_url_dist($arg = null) { if (is_null($arg)) { // Rien a faire ici pour le moment $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } if (strncmp($arg, "-1-", 3) == 0) { $id_parent = -1; $url = substr($arg, 3); } else { $arg = explode('-', $arg); $id_parent = array_shift($arg); $url = implode('-', $arg); } $where = 'id_parent=' . intval($id_parent) . " AND url=" . sql_quote($url); if ($row = sql_fetsel('*', 'spip_urls', $where)) { if (autoriser('modifierurl', $row['type'], $row['id_objet'])) { sql_delete('spip_urls', $where); } else { spip_log('supprimer sans autorisation l\'URL ' . $id_parent . "://" . $url, "urls." . _LOG_ERREUR); } } else { spip_log('Impossible de supprimer une URL inconnue ' . $id_parent . "://" . $url, "urls." . _LOG_INFO_IMPORTANTE); } }
function formulaires_gestion_forum_traiter_dist($id_forum = '', $id_rubrique = '', $id_article = '', $id_breve = '', $id_syndic = '', $id_message = '', $id_auteur = '', $auteur = '', $email_auteur = '', $ip = '') { $retour = array(); $retour['message_ok'] = 'rien a faire'; if (!($forum_ids = _request('forum_ids'))) { $forum_ids = array(); } $select_type = _request('select_type'); $select_statut = _request('select_statut'); $pagination = _request('pagination'); $pagination_ancien = _request('pagination_ancien'); set_request('select_type', $select_type); set_request('voir_statut', $select_statut); if ($pagination != $pagination_ancien) { set_request('debut_forum', ''); } if (_request('valider')) { $statut = 'publie'; $retour['message_ok'] = 'messages publies'; } if (_request('bruler')) { $statut = 'spam'; $retour['message_ok'] = 'messages marquees comme spam'; } if (_request('supprimer')) { $statut = 'off'; $retour['message_ok'] = 'messages supprimes'; } include_spip('action/instituer_forum'); foreach ($forum_ids as $id) { $row = sql_fetsel("*", "spip_forum", "id_forum={$id}"); instituer_un_forum($statut, $row); } return $retour; }
/** * il faut avoir un id_transaction et un transaction_hash coherents * pour se premunir d'une tentative d'appel exterieur * * * @return array */ function presta_gratuit_call_response_dist() { // recuperer la reponse en post et la decoder $id_transaction = _request('id_transaction'); $transaction_hash = _request('hash'); if (!($row = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction)))) { spip_log("id_transaction {$id_transaction} non trouve", 'gratuit.' . _LOG_ERREUR); return array($id_transaction, false); } if ($transaction_hash != $row['transaction_hash']) { spip_log("id_transaction {$id_transaction}, hash {$transaction_hash} non conforme", 'gratuit.' . _LOG_ERREUR); return array($id_transaction, false); } // verifier que la commande a bien un total nul, sinon ce mode de paiement n'est pas autorise if (intval($row['montant']) > 0 or floatval($row['montant']) > 0.0) { spip_log("id_transaction {$id_transaction}, montant " . $row['montant'] . ">0 interdit pour ce mode de paiement", 'gratuit.' . _LOG_CRITIQUE); return array($id_transaction, false); } // Ouf, le reglement a ete accepte sql_update("spip_transactions", array("mode" => sql_quote('gratuit'), "montant_regle" => 'montant', "date_paiement" => sql_quote(date('Y-m-d H:i:s')), "statut" => sql_quote('ok'), "reglee" => sql_quote('oui')), "id_transaction=" . intval($id_transaction)); spip_log("gratuit_response : id_transaction {$id_transaction}, reglee", 'gratuit'); $regler_transaction = charger_fonction('regler_transaction', 'bank'); $regler_transaction($id_transaction, "", $row); return array($id_transaction, true); }
function tispipskelet_upgrade($nom_meta_base_version,$version_cible){ // Installer les types de docs $ext = array("ggb","glb","gxt","mm","zir"); $nm = array("GeoGebra","GeoLabo","GeoNExT","FreeMind","CarMetal"); $rep=_DIR_PLUGIN_TISPIPSKELET."img_pack/icones/"; foreach ($ext as $k => $val){ // on verifie si le user est deja dans cette zone $champs = array('titre', 'extension'); $where = array( 'extension='.$val); $row_type_docs = sql_fetsel($champs, "spip_types_documents", $where); if (!$row_type_docs){ $vals['extension']=$val; $vals['titre']=$nm[$k]; $vals['mime_type']="application/".strtolower($nm[$k]); $vals['inclus']="embed"; $vals['upload']="oui"; $type_documents = sql_insertq("spip_types_documents", $vals,'',$serveur='connect',$option=true); } } // Installer les icones $rep_img=_DIR_PLUGIN_TISPIPSKELET."img_pack/icones/"; $ext_img = array("ggb","glb","gxt","mm","zir"); if (!@opendir(_DIR_IMG."icones")){ mkdir(_DIR_IMG."icones", 0777); } foreach ($ext_img as $k => $val){ if(file_exists($file=$rep_img.$val.".png")){ $newfile=_DIR_IMG."icones/".$val.".png"; copy($file,$newfile); } } }
/** * Verification supplementaire antispam sur le formulaire_signature * * @param array $flux * @return array */ function nospam_verifier_formulaire_signature_dist($flux) { $form = $flux['args']['form']; $id_article = $flux['args']['args'][0]; $row = sql_fetsel('*', 'spip_petitions', "id_article=" . intval($id_article)); if (!isset($flux['data']['message']) && $row['message'] == "oui") { include_spip("inc/nospam"); include_spip("inc/texte"); // regarder si il y a du contenu en dehors des liens ! $message = _request('message'); // on analyse le texte $infos_texte = analyser_spams($message); if ($infos_texte['nombre_liens'] > 0) { // si un lien a un titre de moins de 3 caracteres = spam ! if ($infos_texte['caracteres_texte_lien_min'] < 3) { $flux['data']['message_erreur'] = _T('nospam:erreur_spam'); } // si le texte contient plus de trois liens = spam ! if ($infos_texte['nombre_liens'] >= 2) { $flux['data']['message_erreur'] = _T('nospam:erreur_spam'); } } } // S'il y a un lien dans le champ session_nom => spam if (!isset($flux['data']['session_nom'])) { include_spip("inc/nospam"); $infos_texte = analyser_spams(_request('session_nom')); if ($infos_texte['nombre_liens'] > 0) { $flux['data']['message_erreur'] = _T('nospam:erreur_spam'); spip_log("Lien dans le champ session_nom " . $flux['data']['message_erreur'], 'nospam'); } } return $flux; }
/** * Titre "paiement SEPA" eventuel * @param $mode * @param $id_transaction * @return mixed|string */ function presta_payzen_titre_type_paiement_dist($mode, $id_transaction) { if ($id_transaction and $trans = sql_fetsel("refcb", "spip_transactions", "id_transaction=" . intval($id_transaction)) and strncmp($trans['refcb'], "SEPA", 4) == 0) { return _T("bank:label_type_paiement_sepa", array('presta' => "Payzen")); } return ""; }
/** * il faut avoir un id_transaction et un transaction_hash coherents * pour se premunir d'une tentative d'appel exterieur * * * @return array */ function presta_cheque_call_response_dist() { // recuperer la reponse en post et la decoder $id_transaction = _request('id_transaction'); $transaction_hash = _request('hash'); if (!($row = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction)))) { spip_log("id_transaction {$id_transaction} non trouve", 'gratuit.' . _LOG_ERREUR); return array($id_transaction, false); } if ($transaction_hash != $row['transaction_hash']) { spip_log("id_transaction {$id_transaction}, hash {$transaction_hash} non conforme", 'gratuit.' . _LOG_ERREUR); return array($id_transaction, false); } // l'autorisation refere l'id_auteur et le nom de celui qui accepte le cheque $autorisation = $GLOBALS['visiteur_session']['id_auteur'] . "/" . $GLOBALS['visiteur_session']['nom']; include_spip("inc/autoriser"); if (!autoriser('encaissercheque', 'transaction', $id_transaction)) { spip_log("id_transaction {$id_transaction}, tentative d'encaisser un cheque par auteur #{$autorisation} pas autorise", 'cheque.' . _LOG_CRITIQUE); return array($id_transaction, false); } // OK, on peut accepter le reglement sql_update("spip_transactions", array("mode" => sql_quote('cheque'), "autorisation_id" => sql_quote($autorisation), "montant_regle" => 'montant', "date_paiement" => sql_quote(date('Y-m-d H:i:s')), "statut" => sql_quote('ok'), "reglee" => sql_quote('oui')), "id_transaction=" . intval($id_transaction)); spip_log("cheque_response : id_transaction {$id_transaction}, reglee", 'cheque'); $regler_transaction = charger_fonction('regler_transaction', 'bank'); $regler_transaction($id_transaction, "", $row); return array($id_transaction, true); }
/** * Jamais appele directement dans le plugin bank/ * mais par une eventuelle methode abos/resilier d'un plugin externe * * @param string $uid * @param array|string $config * @return bool */ function presta_stripe_call_resilier_abonnement_dist($uid, $config = 'stripe') { include_spip('inc/bank'); $trans = sql_fetsel("mode, pay_id", "spip_transactions", "abo_uid=" . sql_quote($uid) . " AND mode LIKE " . sql_quote($config . '%'), '', 'id_transaction', '0,1'); if (!is_array($config)) { $config = bank_config($trans['mode']); } $mode = $config['presta']; // charger l'API Stripe avec la cle stripe_init_api($config); $erreur = $erreur_code = ''; try { if ($sub = \Stripe\Subscription::retrieve($uid)) { $res = $sub->cancel(); if ($res->status != 'canceled') { $erreur = 'cancel failed' . var_export((array) $res, true); } } else { $erreur = "unknown subscription"; } } catch (Exception $e) { if ($body = $e->getJsonBody()) { $err = $body['error']; list($erreur_code, $erreur) = stripe_error_code($err); } else { $erreur = $e->getMessage(); $erreur_code = 'error'; } } if ($erreur or $erreur_code) { spip_log($s = "call_resilier_abonnement {$uid} : erreur {$erreur_code} - {$erreur}", $mode . _LOG_ERREUR); return false; } return true; }
/** * @param array $config * @return array */ function presta_internetplus_inc_traiter_reponse_dist($config) { $mode = 'wha'; // historique... if ($config['type'] == 'abo') { $mode = 'wha_abo'; } $config_id = bank_config_id($config); $id_transaction = 0; if (!($m = _request('m'))) { return array($id_transaction, false, false); } $m = urldecode($m); $mp = false; if (!($decode = wha_unsign($m))) { include_spip('inc/bank'); bank_transaction_invalide($id_transaction, array('mode' => $mode, 'erreur' => "signature invalide", 'log' => $m)); return array($id_transaction, false, false); } list($unsign, $partnerId, $keyId) = $decode; #var_dump($unsign); $args = wha_extract_args($unsign); $mp = $args['v']['mp']; #var_dump($args); // recuperer le code de resultat $c = isset($args['c']) ? $args['c'] : ""; // annulation de l'internaute if (preg_match(",^(OfferAuthorization|Authorize)Cancel\$,i", $c)) { spip_log($t = "wha_traiter_reponse : annulation de la transaction : {$m}", $mode); if (isset($args['v']) and is_array($mp = $v = $args['v']) and $id_transaction = intval($v['id_transaction'])) { $row = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction)); if ($row['reglee'] == 'oui') { return array($id_transaction, true, $mp); } // sinon enregistrer echec transaction $date_paiement = date('Y-m-d H:i:s'); include_spip('inc/bank'); bank_transaction_echec($id_transaction, array('mode' => $mode, 'config_id' => $config_id, 'date_paiement' => $date_paiement, 'code_erreur' => "", 'erreur' => "Annulation", 'log' => var_export($args, true))); } else { include_spip('inc/bank'); bank_transaction_invalide($id_transaction, array('mode' => $mode, 'erreur' => "id_transaction inconnu dans args[v] lors de l'annulation, traitement impossible", 'log' => $m)); } return array($id_transaction, false, $mp); } // Code inconnu : on ne fait rien ? if (!preg_match(",^(OfferAuthorization|Authorize)Success\$,i", $c)) { include_spip('inc/bank'); bank_transaction_invalide($id_transaction, array('mode' => $mode, 'erreur' => "code reponse c inconnu, traitement impossible", 'log' => $m)); return array($id_transaction, false, $mp); } // Verifier le numero de transaction, dans mp if (!isset($args['v']) or !is_array($v = $args['v']) or !isset($v['mp']) or !is_array($mp = $v['mp'])) { include_spip('inc/bank'); bank_transaction_invalide($id_transaction, array('mode' => $mode, 'erreur' => "mp inconnu, traitement impossible", 'log' => $m)); return array($id_transaction, false, $mp); } // OK $traiter_reponse = charger_fonction("traiter_reponse_{$mode}", 'presta/internetplus/inc'); return $traiter_reponse($config, $m, $args, $partnerId, $keyId); }
/** * Generer l'url d'un document dans l'espace public, * fonction du statut du document * * @param int $id * @param string $args * @param string $ancre * @param string $public * @param string $connect * @return string * * http://doc.spip.org/@generer_url_ecrire_document */ function urls_generer_url_document_dist($id, $args = '', $ancre = '', $public = null, $connect = '') { include_spip('inc/autoriser'); include_spip('inc/documents'); if (!autoriser('voir', 'document', $id)) { return ''; } $r = sql_fetsel("fichier,distant", "spip_documents", "id_document=" . intval($id)); if (!$r) { return ''; } $f = $r['fichier']; if ($r['distant'] == 'oui') { return $f; } // Si droit de voir tous les docs, pas seulement celui-ci // il est inutilement couteux de rajouter une protection $r = autoriser('voir', 'document'); if ($r and $r !== 'htaccess') { return get_spip_doc($f); } include_spip('inc/securiser_action'); // cette url doit etre publique ! $cle = calculer_cle_action($id . ',' . $f); // renvoyer une url plus ou moins jolie if ($GLOBALS['meta']['creer_htaccess']) { return _DIR_RACINE . "docrestreint.api/{$id}/{$cle}/{$f}"; } else { return get_spip_doc($f) . "?{$id}/{$cle}"; } }
/** * Jamais appele directement dans le plugin bank/ * mais par une eventuelle methode abos/resilier d'un plugin externe * * @param string $uid * @param array|string $config * @return bool */ function presta_payzen_call_resilier_abonnement_dist($uid, $config = 'payzen') { include_spip('presta/payzen/lib/ws-v5/classes'); include_spip('presta/systempay/inc/systempay'); include_spip('inc/bank'); $trans = sql_fetsel("mode,pay_id", "spip_transactions", "abo_uid=" . sql_quote($uid) . " AND mode LIKE " . sql_quote($config . '%'), '', 'id_transaction', '0,1'); if (!is_array($config)) { $config = bank_config($trans['mode']); } $mode = $config['presta']; $vads = new PayzenWSv5($config); $response = new cancelSubscriptionResponse(); try { $response = $vads->cancelSubscription($trans['pay_id'], $uid); } catch (Exception $e) { spip_log($s = "call_resilier_abonnement : erreur " . $e->getMessage(), $mode . _LOG_ERREUR); return false; } if ($e = $response->cancelSubscriptionResult->commonResponse->responseCode) { spip_log($s = "call_resilier_abonnement {$uid} : erreur {$e} : " . $response->cancelSubscriptionResult->commonResponse->responseCodeDetail, $mode . _LOG_ERREUR); // 33 : Invalid Subscription => on est donc bien desabonne if ($e == 33) { return true; } else { return false; } } return true; }
/** * Generer un ticket resume de la transaction * pour les admins indiques dans la configuration * * @param int $id_transaction * @param string $sujet */ function inc_bank_editer_ticket_admin_dist($id_transaction, $sujet = "Transaction OK") { // il faut avoir configure un ou des emails de notification $c = unserialize($GLOBALS['meta']['bank_paiement']); if (!isset($c['email_ticket_admin']) or !strlen($email = $c['email_ticket_admin'])) { spip_log(var_export($GLOBALS['meta']['bank_paiement'], true), 'bank_ticket'); return; } $ticket = ""; if ($row = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction))) { $montant = $row['montant_regle']; $ticket .= "<h2>Transaction {$id_transaction}</h2>\n<table border='1'>"; foreach ($row as $k => $v) { $ticket .= "<tr><td>{$k}</td><td>{$v}</td></tr>"; } $ticket .= "</table>"; } // ensuite un pipeline pour editer le ticket $ticket = pipeline('bank_editer_ticket_reglement', array('args' => array('id_transaction' => $id_transaction), 'data' => $ticket)); $ticket = "<html>{$ticket}</html>"; $header = "MIME-Version: 1.0\n" . "Content-Type: text/html; charset=" . $GLOBALS['meta']['charset'] . "\n" . "Content-Transfer-Encoding: 8bit\n"; $sujet = "{$sujet} #{$id_transaction} [" . affiche_monnaie($montant) . "]"; if (!isset($c['email_from_ticket_admin']) or !strlen($email_from = $c['email_from_ticket_admin'])) { $url = parse_url($GLOBALS['meta']['adresse_site']); $email_from = "reglements@" . ltrim($url['host'], 'w.'); } $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); $envoyer_mail($email, $sujet, $ticket, $email_from, $header); }
function action_instituer_article_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); list($id_article, $statut) = preg_split('/\W/', $arg); if (!$statut) $statut = _request('statut_nouv'); // cas POST if (!$statut) return; // impossible mais sait-on jamais $id_article = intval($id_article); // si on passe un statut_old, le controler // http://trac.rezo.net/trac/spip/ticket/1932 if ($old = _request('statut_old') AND $s = sql_fetsel('statut', 'spip_articles', 'id_article='.sql_quote($id_article)) AND $s['statut'] != $old) return; include_spip('action/editer_article'); $c = array('statut' => $statut); // si on a envoye une 'date_posterieure', l'enregistrer if ($d = _request('date_posterieure')) $c['date'] = $d; instituer_article($id_article, $c); }
function profils_creer_auteur($set) { include_spip("action/editer_auteur"); include_spip('inc/acces'); $id_auteur = auteur_inserer(); spip_log($id_auteur, 'profils'); spip_log($set, 'profils'); if ($id_auteur) { $set['pass'] = creer_pass_aleatoire(); $set['statut'] = '6forum'; autoriser_exception('modifier', 'auteur', $id_auteur); autoriser_exception('instituer', 'auteur', $id_auteur); auteur_modifier($id_auteur, $set); autoriser_exception('modifier', 'auteur', $id_auteur, false); autoriser_exception('instituer', 'auteur', $id_auteur, false); // verifier $row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); if (!$row['login'] or !$row['email']) { spip_log("Erreur creation profil {$id_auteur} " . var_export($set, true), "profils" . _LOG_ERREUR); return false; } $row['pass'] = $set['pass']; return $row; } return false; }
/** * @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, "&"); } } }
/** * http://code.spip.net/@action_copier_local_post * * @param $id_document * @return bool|mixed|string */ function action_copier_local_post($id_document) { // Il faut la source du document pour le copier $row = sql_fetsel("mode,fichier, descriptif, credits", "spip_documents", "id_document={$id_document}"); $source = $row['fichier']; include_spip('inc/distant'); // pour 'copie_locale' $fichier = copie_locale($source); if ($fichier) { $fichier = _DIR_RACINE . $fichier; $files[] = array('tmp_name' => $fichier, 'name' => basename($fichier)); $ajouter_documents = charger_fonction('ajouter_documents', 'action'); spip_log("convertit doc {$id_document} en local: {$source} => {$fichier}"); $liste = array(); $ajouter_documents($id_document, $files, '', 0, $row['mode'], $liste); spip_unlink($fichier); // ajouter l'origine du document aux credits include_spip('action/editer_document'); document_modifier($id_document, array('credits' => ($row['credits'] ? $row['credits'] . ', ' : '') . $source)); return true; } else { spip_log("echec copie locale {$source}"); } return _T('medias:erreur_copie_fichier', array('nom' => $source)); }
function formulaires_clevermail_post_edit_charger_dist($pst_id = -1) { if ($pst_id == -1 || !($valeurs = sql_fetsel('*', 'spip_cm_posts', 'pst_id=' . intval($pst_id)))) { $valeurs = array('pst_id' => -1, 'pst_subject' => '', 'pst_html' => '', 'pst_text' => ''); } return $valeurs; }
function auth_ldap_dist($login, $pass, $serveur = '', $phpauth = false) { #spip_log("ldap $login " . ($pass ? "mdp fourni" : "mdp absent")); // Utilisateur connu ? // si http auth, inutile de reauthentifier: cela // ne marchera pas avec auth http autre que basic. $checkpass = isset($_SERVER["REMOTE_USER"]) ? false : true; if (!($dn = auth_ldap_search($login, $pass, $checkpass, $serveur))) { return array(); } $credentials_ldap = array('ldap_dn' => $dn, 'ldap_password' => $pass); // Si l'utilisateur figure deja dans la base, y recuperer les infos $r = sql_fetsel("*", "spip_auteurs", "login="******" AND source='ldap'", '', '', '', '', $serveur); if ($r) { return array_merge($r, $credentials_ldap); } // sinon importer les infos depuis LDAP, if ($GLOBALS['meta']["ldap_statut_import"] and $desc = auth_ldap_retrouver($dn, array(), $serveur)) { // rajouter le statut indique a l'install $desc['statut'] = $GLOBALS['meta']["ldap_statut_import"]; $desc['login'] = $login; $desc['source'] = 'ldap'; $desc['pass'] = ''; $r = sql_insertq('spip_auteurs', $desc, '', $serveur); } if ($r) { return array_merge($credentials_ldap, sql_fetsel("*", "spip_auteurs", "id_auteur=" . intval($r), '', '', '', '', $serveur)); } // sinon echec spip_log("Creation de l'auteur '{$login}' impossible"); return array(); }
function action_autoriser_dist() { $arg = intval(_request('arg')); if (!autoriser('voir', 'document', $arg) or !($row = sql_fetsel("fichier", "spip_documents", "id_document=" . intval($arg))) or !($file = $row['fichier']) or !file_exists($file)) { spip_log("Acces refuse (restreint) au document " . $arg . ': ' . $file); redirige_par_entete('./?page=404'); } else { if (!function_exists('mime_content_type')) { // http://doc.spip.org/@mime_content_type function mime_content_type($f) { preg_match("/\\.(\\w+)/", $f, $r); return $r[1]; } } $ct = mime_content_type($file); $cl = filesize($file); $filename = basename($file); header("Content-Type: " . $ct); header("Content-Disposition: attachment; filename=\"" . $filename . "\";"); if ($dcc) { header("Content-Description: " . $dcc); } if ($cl) { header("Content-Length: " . $cl); } header("Content-Transfer-Encoding: binary"); readfile($file); } }
function inc_informer_dist($id, $col, $exclus, $rac, $type, $do = 'aff') { include_spip('inc/texte'); if ($type == "rubrique") { $row = sql_fetsel("titre, descriptif", "spip_rubriques", "id_rubrique = {$id}"); if ($row) { $titre = typo($row["titre"]); $descriptif = propre($row["descriptif"]); } else { $titre = _T('info_racine_site'); } } else { $titre = ''; } $res = ''; if ($type == "rubrique" and $GLOBALS['spip_display'] != 1 and isset($GLOBALS['meta']['image_process'])) { if ($GLOBALS['meta']['image_process'] != "non") { $chercher_logo = charger_fonction('chercher_logo', 'inc'); if ($res = $chercher_logo($id, 'id_rubrique', 'on')) { list($fid, $dir, $nom, $format) = $res; include_spip('inc/filtres_images_mini'); $res = image_reduire("<img src='{$fid}' alt='' />", 100, 48); if ($res) { $res = "<div style='float: " . $GLOBALS['spip_lang_right'] . "; margin-" . $GLOBALS['spip_lang_right'] . ": -5px; margin-top: -5px;'>{$res}</div>"; } } } } $rac = spip_htmlentities($rac); # ce lien provoque la selection (directe) de la rubrique cliquee # et l'affichage de son titre dans le bandeau $titre = strtr(str_replace("'", "’", str_replace('"', """, textebrut($titre))), "\n\r", " "); $js_func = $do . '_selection_titre'; return "<div style='display: none;'>" . "<input type='text' id='" . $rac . "_sel' value='{$id}' />" . "<input type='text' id='" . $rac . "_sel2' value=\"" . entites_html($titre) . "\" />" . "</div>" . "<div class='informer' style='padding: 5px; border-top: 0px;'>" . (!$res ? '' : $res) . "<p><b>" . safehtml($titre) . "</b></p>" . (!$descriptif ? '' : "<div>" . safehtml($descriptif) . "</div>") . "<div style='text-align: " . $GLOBALS['spip_lang_right'] . ";'>" . "<input type='submit' class='fondo' value='" . _T('bouton_choisir') . "'\nonclick=\"{$js_func}('{$titre}',{$id},'selection_rubrique','id_parent'); return false;\" />" . "</div>" . "</div>"; }
/** * Modifier le groupe parent d'un mot * @param $id_mot * @param $c * @return void */ function mot_instituer($id_mot, $c) { $champs = array(); // regler le groupe if (isset($c['id_groupe']) or isset($c['type'])) { $row = sql_fetsel("titre", "spip_groupes_mots", "id_groupe=" . intval($c['id_groupe'])); if ($row) { $champs['id_groupe'] = $c['id_groupe']; $champs['type'] = $row['titre']; } } // Envoyer aux plugins $champs = pipeline('pre_edition', array('args' => array('table' => 'spip_mots', 'id_objet' => $id_mot, 'action' => 'instituer'), 'data' => $champs)); if (!$champs) { return; } sql_updateq('spip_mots', $champs, "id_mot=" . intval($id_mot)); // // Post-modifications // // Invalider les caches include_spip('inc/invalideur'); suivre_invalideur("id='mot/{$id_mot}'"); // Pipeline pipeline('post_edition', array('args' => array('table' => 'spip_mots', 'id_objet' => $id_mot, 'action' => 'instituer'), 'data' => $champs)); // Notifications if ($notifications = charger_fonction('notifications', 'inc')) { $notifications('instituermot', $id_mot, array('id_groupe' => $champs['id_groupe'])); } return ''; // pas d'erreur }
function action_factures_export_csv_mensuel_dist() { $securiser_action = charger_fonction("securiser_action", "inc"); $date = $securiser_action(); $t = strtotime($date); $date_debut = date('Y-m-01 00:00:00', $t); $t = strtotime('+1 month', strtotime($date_debut)); $t = strtotime('+5 day', $t); $date_fin = date('Y-m-01 00:00:00', $t); $entetes = array('ID', 'Date', 'No', 'Client', 'HT', 'TTC', 'Paye', 'Date paiement', 'Commande'); $factures = sql_allfetsel("id_facture,date,no_comptable,id_auteur,montant_ht,montant,montant_regle,date_paiement", "spip_factures", "date>=" . sql_quote($date_debut) . " AND date<" . sql_quote($date_fin), '', 'id_facture'); foreach ($factures as $k => $facture) { $factures[$k]['date'] = date('d/m/Y', strtotime($facture['date'])); $factures[$k]['date_paiement'] = date('d/m/Y', strtotime($facture['date_paiement'])); $nom = sql_getfetsel('nom', 'spip_auteurs', 'id_auteur=' . intval($facture['id_auteur'])); $factures[$k]['id_auteur'] = trim($nom . " #" . $facture['id_auteur']); $factures[$k]['commande'] = ''; if ($trans = sql_fetsel("*", "spip_transactions", "id_facture=" . intval($facture['id_facture'])) and $id_commande = intval($trans['id_commande'])) { $reference = sql_getfetsel('reference', 'spip_commandes', 'id_commande=' . intval($id_commande)); $factures[$k]['commande'] = trim($reference . " #" . $trans['id_commande']); } } $factures = array_map('array_values', $factures); $nom = $GLOBALS['meta']['nom_site'] . ' Factures ' . date('Y-m'); $exporter_csv = charger_fonction('exporter_csv', 'inc'); $exporter_csv($nom, $factures, ',', $entetes, true); }
function charger($creer = false) { if (!$this->param->cfg_id and !($this->param->autoriser_absence_id == 'oui')) { $this->messages['message_erreur'][] = _T('cfg:id_manquant'); return false; } // select $this->_select = array(); if ($this->champs) { foreach ($this->champs as $nom => $def) { if (isset($def['id'])) { continue; } $this->_select[] = $nom; } } else { $this->_select[] = '*'; } // where $this->_where = array(); foreach ($this->_id as $nom => $id) { $this->_where[] = $nom . '=' . sql_quote($id); } $this->_base = ($d = sql_fetsel($this->_select, $this->param->table, $this->_where)) ? $d : array(); $this->_existe = count($this->_base); $this->_ici =& $this->_base; return true; }