Ejemplo n.º 1
0
/**
 * 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;
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
/**
 * 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;
}
Ejemplo n.º 4
0
/**
 * 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;
}
Ejemplo n.º 6
0
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;
	}
}
Ejemplo n.º 7
0
/**
 * 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;
}
Ejemplo n.º 8
0
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);
    }
}
Ejemplo n.º 9
0
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;
}
Ejemplo n.º 10
0
/**
 * 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);
}
Ejemplo n.º 11
0
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;
}
Ejemplo n.º 13
0
/**
 * 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 "";
}
Ejemplo n.º 14
0
/**
 * 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);
}
Ejemplo n.º 15
0
/**
 * 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;
}
Ejemplo n.º 16
0
/**
 * @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);
}
Ejemplo n.º 17
0
/**
 * 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}";
    }
}
Ejemplo n.º 18
0
/**
 * 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;
}
Ejemplo n.º 19
0
/**
 * 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);
}
Ejemplo n.º 20
0
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);

}
Ejemplo n.º 21
0
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;
}
Ejemplo n.º 22
0
/**
 * @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, "&");
        }
    }
}
Ejemplo n.º 23
0
/**
 * 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));
}
Ejemplo n.º 24
0
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;
}
Ejemplo n.º 25
0
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();
}
Ejemplo n.º 26
0
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);
    }
}
Ejemplo n.º 27
0
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("'", "&#8217;", str_replace('"', "&#34;", 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>";
}
Ejemplo n.º 28
0
/**
 * 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
}
Ejemplo n.º 29
0
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);
}
Ejemplo n.º 30
0
 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;
 }