function pub_insert_head($flux) { // on ajoute la feuille de style pub.css $flux .= ' <link rel="stylesheet" href="' . url_absolue(find_in_path('css/pub.css')) . '" type="text/css" />'; return $flux; }
function affiche_boutons_admin($contenu) { include_spip('inc/filtres'); // Inserer le css d'admin $css = "<link rel='stylesheet' href='".url_absolue(find_in_path('spip_admin.css')) . "' type='text/css' />\n"; if ($f = find_in_path('spip_admin_perso.css')) $css .= "<link rel='stylesheet' href='" . url_absolue($f) . "' type='text/css' />\n"; ($pos = stripos($contenu, '</head>')) || ($pos = stripos($contenu, '<body>')) || ($pos = 0); $contenu = substr_replace($contenu, $css, $pos, 0); // Inserer la balise #FORMULAIRE_ADMIN, en float $boutons_admin = inclure_balise_dynamique( balise_FORMULAIRE_ADMIN_dyn('spip-admin-float'), false); ($pos = strripos($contenu, '</body>')) || ($pos = strripos($contenu, '</html>')) || ($pos = strlen($contenu)); $contenu = substr_replace($contenu, $boutons_admin, $pos, 0); return $contenu; }
function html_3002936b70d02a85d3d71dc952115155($Cache, $Pile, $doublons = array(), $Numrows = array(), $SP = 0) { if (isset($Pile[0]["doublons"]) and is_array($Pile[0]["doublons"])) { $doublons = nettoyer_env_doublons($Pile[0]["doublons"]); } $connect = ''; $page = '<' . '?php header("X-Spip-Cache: 604800"); ?' . '>' . '<' . '?php header("' . 'Content-Type: text/css; charset=utf-8' . '"); ?' . '>' . '<' . '?php header("' . 'Vary: Accept-Encoding' . '"); ?' . '>' . barre_outils_css_icones('') . ' /* roue ajax */ .ajaxLoad{ position:relative; } .ajaxLoad:after { content:""; display:block; width:40px; height:40px; border:1px solid #eee; background:#fff url(\'' . protocole_implicite(url_absolue(find_in_path('images/searching.gif'))) . '\') center no-repeat; position:absolute; left:50%; top:50%; margin-left:-20px; margin-top:-20px; } .fullscreen .ajaxLoad:after { position:fixed; left:75%; } '; return analyse_resultat_skel('html_3002936b70d02a85d3d71dc952115155', $Cache, $page, 'plugins-dist/porte_plume/barre_outils_icones.css.html'); }
function is_url_prive($cible) { include_spip('inc/filtres_mini'); $path = parse_url(tester_url_absolue($cible) ? $cible : url_absolue($cible)); $path = isset($path['path']) ? $path['path'] : ''; return strncmp(substr($path, -strlen(_DIR_RESTREINT_ABS)), _DIR_RESTREINT_ABS, strlen(_DIR_RESTREINT_ABS)) == 0; }
function surligner_mots($page, $surcharge_surligne = '') { $surlignejs_engines = array(array("," . str_replace(array("/", "."), array("\\/", "\\."), $GLOBALS['meta']['adresse_site']) . ",i", ",recherche=([^&]+),i"), array(",^http://(www\\.)?google\\.,i", ",q=([^&]+),i"), array(",^http://(www\\.)?search\\.yahoo\\.,i", ",p=([^&]+),i"), array(",^http://(www\\.)?search\\.msn\\.,i", ",q=([^&]+),i"), array(",^http://(www\\.)?search\\.live\\.,i", ",query=([^&]+),i"), array(",^http://(www\\.)?search\\.aol\\.,i", ",userQuery=([^&]+),i"), array(",^http://(www\\.)?ask\\.com,i", ",q=([^&]+),i"), array(",^http://(www\\.)?altavista\\.,i", ",q=([^&]+),i"), array(",^http://(www\\.)?feedster\\.,i", ",q=([^&]+),i"), array(",^http://(www\\.)?search\\.lycos\\.,i", ",q=([^&]+),i"), array(",^http://(www\\.)?alltheweb\\.,i", ",q=([^&]+),i"), array(",^http://(www\\.)?technorati\\.com,i", ",([^\\?\\/]+)(?:\\?.*)\$,i")); $ref = $_SERVER['HTTP_REFERER']; //avoid a js injection if ($surcharge_surligne) { $surcharge_surligne = preg_replace(",(?<!\\\\)((?:(?>\\\\){2})*)('),", "\$1\\\\\$2", $surcharge_surligne); $surcharge_surligne = str_replace("\\", "\\\\", $surcharge_surligne); if ($GLOBALS['meta']['charset'] == 'utf-8') { include_spip('inc/charsets'); if (!is_utf8($surcharge_surligne)) { $surcharge_surligne = utf8_encode($surcharge_surligne); } } } foreach ($surlignejs_engines as $engine) { if ($surcharge_surligne || preg_match($engine[0], $ref) && preg_match($engine[1], $ref)) { //good referrer found or var_recherche is not null include_spip('inc/filtres'); $script = "\n <script type='text/javascript' src='" . url_absolue(find_in_path('javascript/SearchHighlight.js')) . "'></script>\n <script type='text/javascript'>/*<![CDATA[*/\n if (window.jQuery)\n (function(\$){\$(function(){\n \$(document).SearchHighlight({\n tag_name:'" . (html5_permis() ? 'mark' : 'span') . "',\n style_name:'spip_surligne',\n exact:'whole',\n style_name_suffix:false,\n engines:[/^" . str_replace(array("/", "."), array("\\/", "\\."), $GLOBALS['meta']['adresse_site']) . "/i,/recherche=([^&]+)/i],\n highlight:'.surlignable',\n nohighlight:'.pas_surlignable'" . ($surcharge_surligne ? ",\n keys:'{$surcharge_surligne}'" : "") . ",\n min_length: 3\n })\n });\n })(jQuery);\n /*]]>*/</script>\n "; // on l'insere juste avant </head>, sinon tout en bas if (is_null($l = strpos($page, '</head>'))) { $l = strlen($page); } $page = substr_replace($page, $script, $l, 0); break; } } return $page; }
function filets_sep_installe() { //cs_log('filets_sep_installe()'); include_spip('inc/texte'); // Tester si on echappe en span ou en div $mode = preg_match(',<('._BALISES_BLOCS.'|p)(\W|$),iS', _FILETS_SEP_BALISE_DEBUT)?'div':'span'; $bt = defined('_DIR_PLUGIN_PORTE_PLUME'); $filets = array(); // filets numeriques for($i=0; $i<=_FILETS_SEP_MAX_CSS; $i++) { $filets[6][] = $i; $filets[1]["$i"] = cs_code_echappement(_FILETS_SEP_BALISE_DEBUT." class='filet_sep filet_sep_$i'"._FILETS_SEP_BALISE_FIN, '', $mode); } // filets image $path = find_in_path('img/filets'); $dossier = opendir($path); if($path) while ($image = readdir($dossier)) { if (preg_match(',^(([a-z0-9_-]+)'._FILETS_REG_EXT.'),', $image, $reg)) { $filets[0][] = '__'.$reg[1].'__'; $filets[6][] = preg_quote($reg[1]); $filets[2][] = $reg[2]; list(,$haut) = @getimagesize($path.'/'.$reg[1]); if ($haut) $haut="height:{$haut}px;"; $f = url_absolue($path).'/'.$reg[1]; $filets[1][$reg[1]] = cs_code_echappement(_FILETS_SEP_BALISE_DEBUT." class=\"filet_sep filet_sep_image\" style=\"$haut background-image: url($f);\""._FILETS_SEP_BALISE_FIN, '', $mode); if($bt) $filets[4]['filet_'.str_replace('.','_',$reg[1])] = $reg[1]; } } // RegExpr finale $filets[6] = _FILETS_REG_DEBUT . join('|', $filets[6]) . _FILETS_REG_FIN; if($bt) for($i=0; $i<=_FILETS_SEP_MAX_CSS; $i++) $filets[5]['filet_'.$i] = $i; return array('filets_sep' => $filets); }
function sarkaspip_insert_head($flux) { include_spip('inc/config'); // Recuperation des parametres cfg sur le menu des rubriques $position = lire_config('sarkaspip_menus/position_rubriques', 1); $modele = lire_config('sarkaspip_menus/modele_rubriques', 1); // Si le menu des rubriques est deroulant dans le bandeau if ($position == 5 && $modele == 1) { $flux .= '<script src="' . url_absolue(find_in_path('scripts/menu_deroulant_horizontal.js')) . '" type="text/javascript"></script>'; } // Si le menu des rubriques est deroulant dans la colonne navigation if ($position == 1 && $modele == 1) { $flux .= '<script src="' . url_absolue(find_in_path('scripts/menu_deroulant_vertical.js')) . '" type="text/javascript"></script>'; } // Insertion de la librairie jCarouselLite et des librairies connexes $position = lire_config('sarkaspip_album/position_carrousel', 1); $modele = lire_config('sarkaspip_album/modele_carrousel', 1); if ($position != 0 && $modele == 1) { $flux .= '<script src="' . url_absolue(find_in_path('scripts/jcarousellite_1.0.1.js')) . '" type="text/javascript"></script>'; $flux .= '<script src="' . url_absolue(find_in_path('scripts/jquery.mousewheel.js')) . '" type="text/javascript"></script>'; } // Insertion de la librairie Innerfade pour la noisette des sites favoris $position = lire_config('sarkaspip_noisettes/position_herbier', 0); $modele = lire_config('sarkaspip_noisettes/liste_herbier', 2); if ($position != 0 && $modele == 2) { $flux .= '<script src="' . url_absolue(find_in_path('scripts/jquery.innerfade.js')) . '" type="text/javascript"></script>'; } // Insertion de la librairie jquery.corner pour la noisette cfg_sarkaspip_coins $coins_arrondis = lire_config('sarkaspip_coins/avec_arrondis', 0); if ($coins_arrondis == 1) { $flux .= '<script src="' . url_absolue(find_in_path('scripts/jquery.corner.js')) . '" type="text/javascript"></script>'; $flux .= '<script src="' . generer_url_public('sarkaspip_coins.js') . '" type="text/javascript"></script>'; } return $flux; }
/** * Insertion dans le pipeline recuperer_fond (SPIP) * * Ajouter le script leaflet.geodiv.js au squelette du script de GIS * * @param array $flux * @return array $flux */ function geol_recuperer_fond($flux) { if ($flux['args']['fond'] == 'javascript/gis.js') { $flux['data']['texte'] .= "\n\n(function() { L.gisConfig.getInfowindowUrl = '" . url_absolue(generer_url_public('get_infowindow')) . "'; })();"; $flux['data']['texte'] .= "\n\n" . spip_file_get_contents(find_in_path('javascript/leaflet.geodiv.js')); } return $flux; }
function redirige_par_entete($url, $equiv = '', $status = 302) { if (!in_array($status, array(301, 302))) { $status = 302; } $url = trim(strtr($url, "\n\r", " ")); # en theorie on devrait faire ca tout le temps, mais quand la chaine # commence par ? c'est imperatif, sinon l'url finale n'est pas la bonne if ($url[0] == '?') { $url = url_de_base() . $url; } if ($url[0] == '#') { $url = self('&') . $url; } # si profondeur non nulle et url relative, il faut la passer en absolue if ($GLOBALS['profondeur_url'] > (_DIR_RESTREINT ? 1 : 2) and !preg_match(",^(\\w+:)?//,", $url)) { include_spip("inc/filtres_mini"); $url = url_absolue($url); } if ($x = _request('transformer_xml')) { $url = parametre_url($url, 'transformer_xml', $x, '&'); } if (defined('_AJAX') and _AJAX) { $url = parametre_url($url, 'var_ajax_redir', 1, '&'); } // ne pas laisser passer n'importe quoi dans l'url $url = str_replace(array('<', '"'), array('<', '"'), $url); // interdire les url inline avec des pseudo-protocoles : if (preg_match(",data:,i", $url) and preg_match("/base64\\s*,/i", $url) or preg_match(",(javascript|mailto):,i", $url)) { $url = "./"; } // Il n'y a que sous Apache que setcookie puis redirection fonctionne include_spip('inc/cookie'); if (!$equiv and !spip_cookie_envoye() or (strncmp("Apache", $_SERVER['SERVER_SOFTWARE'], 6) == 0 or defined('_SERVER_APACHE'))) { @header("Location: " . $url); $equiv = ""; } else { @header("Refresh: 0; url=" . $url); $equiv = "<meta http-equiv='Refresh' content='0; url={$url}'>"; } include_spip('inc/lang'); if ($status != 302) { http_status($status); } echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">', "\n", html_lang_attributes(), ' <head>', $equiv, ' <title>HTTP ' . $status . '</title> </head> <body> <h1>HTTP ' . $status . '</h1> <a href="', quote_amp($url), '">', _T('navigateur_pas_redirige'), '</a></body></html>'; spip_log("redirige {$status}: {$url}"); exit; }
function mediabox_config($public = null) { include_spip("inc/filtres"); include_spip("inc/config"); $config = lire_config('mediabox', array()); $config = array_merge(array( 'active' => 'oui', 'traiter_toutes_images' => 'oui', 'selecteur_galerie' => '#documents_portfolio a[type=\'image/jpeg\'],#documents_portfolio a[type=\'image/png\'],#documents_portfolio a[type=\'image/gif\']', 'selecteur_commun' => '.mediabox', 'splash_url' => '', 'splash_width' => '600px', 'splash_height' => '90%', 'skin' => 'black-striped', 'transition' => 'elastic', 'speed' => '200', 'maxWidth' => '90%', 'maxHeight' => '90%', 'minWidth' => '400px', 'minHeight' => '', 'slideshow_speed' => '2500', 'opacite' => '0.9', ), $config); if ((is_null($public) and test_espace_prive()) or $public === false) { $config = array_merge($config, array( 'active' => 'oui', 'selecteur_galerie' => '#portfolios a[type^=\'image/\']', 'selecteur_commun' => '.mediabox, .iconifier a[href$=jpg],.iconifier a[href$=png],.iconifier a[href$=gif]', 'splash_url' => '', 'skin' => 'white-shadow', 'maxWidth' => '90%', 'maxHeight' => '95%', 'minWidth' => '600px', 'minHeight' => '300px', 'opacite' => '0.9', )); } // Gerer aussi les liens internes de SPIP if (!test_espace_prive() and $config['splash_url']) { include_spip("inc/filtres_ecrire"); $config['splash_url'] = url_absolue(extraire_attribut(lien_article_virtuel($config['splash_url']), 'href')); } // charger la config du theme uniquement dans le public if (!test_espace_prive() and include_spip("colorbox/" . $config['skin'] . "/mediabox_config_theme")) { $config_theme = mediabox_config_theme(); $config = array_merge($config, $config_theme); } return $config; }
/** * Decrire un profil * renvoie un tableau de ses infos * * @param int $id_auteur * @param bool $url * @return array */ function inc_profil_decrire($id_auteur, $url = false) { static $profils = array(); if (!isset($profils[$id_auteur]) or $url && !isset($profils[$id_auteur][$url])) { $profils[$id_auteur] = sql_fetsel('nom,prenom,email,bio,pgp', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); if ($url) { $profils[$id_auteur]['url'] = url_absolue(generer_url_entite($id_auteur, 'auteur', '', '', false)); $profils[$id_auteur]['nom_lien'] = "<a href='" . generer_url_entite($id_auteur, 'auteur', '', '', false) . "'>" . ($profils[$id_auteur]['prenom'] ? $profils[$id_auteur]['prenom'] : $profils[$id_auteur]['nom']) . "</a>"; } } return $profils[$id_auteur]; }
function formulaires_clevermail_list_edit_charger_dist($lst_id = -1) { // Ces define sont mis ici car dans clevermail_options.php, il etait impossible de surcharger avec un plugin ayant : // <utilise id="clevermail" version="[2.5.0;]" /> // Pour proposer une URL complète (true) ou juste le chemin du squelette (false) à la création d'une nouvelle lettre if (!defined('_CLEVERMAIL_DISTANT')) { define("_CLEVERMAIL_DISTANT", true); } if (!defined('_CLEVERMAIL_NOUVEAUTES_HTML')) { define("_CLEVERMAIL_NOUVEAUTES_HTML", 'clevermail_nouveautes_html'); } // _CLEVERMAIL_NOUVEAUTES_HTML_OPTION est facultatif. Il permet de completer l'url amorcee avec _CLEVERMAIL_NOUVEAUTES_HTML. // define("_CLEVERMAIL_NOUVEAUTES_HTML_OPTION", 'cat=mot&sujet=1&pied=1&entete=1'); if (!defined('_CLEVERMAIL_NOUVEAUTES_TEXT')) { define("_CLEVERMAIL_NOUVEAUTES_TEXT", 'clevermail_nouveautes_text'); } // _CLEVERMAIL_NOUVEAUTES_TEXT_OPTION est facultatif. Il permet de completer l'url amorcee avec _CLEVERMAIL_NOUVEAUTES_TEXT. // define("_CLEVERMAIL_NOUVEAUTES_TEXT_OPTION", 'cat=mot&sujet=1&pied=1&entete=1'); if ($valeurs = sql_fetsel('*', 'spip_cm_lists', 'lst_id=' . intval($lst_id))) { $valeurs['lst_auto_week_days'] = explode(',', $valeurs['lst_auto_week_days']); } else { $cm_mail_admin = sql_getfetsel('set_value', 'spip_cm_settings', 'set_name="CM_MAIL_ADMIN"'); if (defined('_CLEVERMAIL_NOUVEAUTES_HTML_OPTION')) { if (_CLEVERMAIL_DISTANT) { $url_html = url_absolue(generer_url_public(_CLEVERMAIL_NOUVEAUTES_HTML, _CLEVERMAIL_NOUVEAUTES_HTML_OPTION)); } else { $url_html = _CLEVERMAIL_NOUVEAUTES_HTML; } } else { if (_CLEVERMAIL_DISTANT) { $url_html = url_absolue(generer_url_public(_CLEVERMAIL_NOUVEAUTES_HTML)); } else { $url_html = _CLEVERMAIL_NOUVEAUTES_HTML; } } if (defined('_CLEVERMAIL_NOUVEAUTES_TEXT_OPTION')) { if (_CLEVERMAIL_DISTANT) { $url_text = url_absolue(generer_url_public(_CLEVERMAIL_NOUVEAUTES_TEXT, _CLEVERMAIL_NOUVEAUTES_TEXT_OPTION)); } else { $url_text = _CLEVERMAIL_NOUVEAUTES_TEXT; } } else { if (_CLEVERMAIL_DISTANT) { $url_text = url_absolue(generer_url_public(_CLEVERMAIL_NOUVEAUTES_TEXT)); } else { $url_text = _CLEVERMAIL_NOUVEAUTES_TEXT; } } $valeurs = array('lst_id' => -1, 'lst_name' => '', 'lst_comment' => '', 'lst_moderation' => 'closed', 'lst_moderator_email' => $cm_mail_admin, 'lst_subscribe_subject' => _T('clevermail:confirmation_votre_inscription'), 'lst_subscribe_text' => _T('clevermail:confirmation_votre_inscription_text'), 'lst_unsubscribe_subject' => _T('clevermail:confirmation_votre_desinscription'), 'lst_unsubscribe_text' => _T('clevermail:confirmation_votre_desinscription_text'), 'lst_subject_tag' => 1, 'lst_url_html' => $url_html, 'lst_url_text' => $url_text, 'lst_auto_mode' => 'none', 'lst_auto_hour' => 8, 'lst_auto_week_days' => array(1), 'lst_auto_month_day' => 1, 'lst_auto_subscribers' => '', 'lst_auto_subscribers_mode' => 1); } return $valeurs; }
/** * Envoyer le navigateur sur une nouvelle adresse * * Le tout en évitant les attaques par la redirection (souvent indique par un `$_GET`) * * @example * ``` * $redirect = parametre_url(urldecode(_request('redirect')),'id_article=' . $id_article); * include_spip('inc/headers'); * redirige_par_entete($redirect); * ``` * * @param string $url URL de redirection * @param string $equiv ? * @param int $status Code de redirection (301 ou 302) **/ function redirige_par_entete($url, $equiv = '', $status = 302) { if (!in_array($status, array(301, 302))) { $status = 302; } $url = trim(strtr($url, "\n\r", " ")); # si l'url de redirection est relative, on la passe en absolue if (!preg_match(",^(\\w+:)?//,", $url)) { include_spip("inc/filtres_mini"); $url = url_absolue($url); } if ($x = _request('transformer_xml')) { $url = parametre_url($url, 'transformer_xml', $x, '&'); } if (defined('_AJAX') and _AJAX) { $url = parametre_url($url, 'var_ajax_redir', 1, '&'); } // ne pas laisser passer n'importe quoi dans l'url $url = str_replace(array('<', '"'), array('<', '"'), $url); // interdire les url inline avec des pseudo-protocoles : if (preg_match(",data:,i", $url) and preg_match("/base64\\s*,/i", $url) or preg_match(",(javascript|mailto):,i", $url)) { $url = "./"; } // Il n'y a que sous Apache que setcookie puis redirection fonctionne include_spip('inc/cookie'); if (!$equiv and !spip_cookie_envoye() or (strncmp("Apache", $_SERVER['SERVER_SOFTWARE'], 6) == 0 or defined('_SERVER_APACHE'))) { @header("Location: " . $url); $equiv = ""; } else { @header("Refresh: 0; url=" . $url); if (isset($GLOBALS['meta']['charset'])) { @header("Content-Type: text/html; charset=" . $GLOBALS['meta']['charset']); } $equiv = "<meta http-equiv='Refresh' content='0; url={$url}'>"; } include_spip('inc/lang'); if ($status != 302) { http_status($status); } echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">', "\n", html_lang_attributes(), ' <head>', $equiv, ' <title>HTTP ' . $status . '</title> ' . (isset($GLOBALS['meta']['charset']) ? '<meta http-equiv="Content-Type" content="text/html;charset=' . $GLOBALS['meta']['charset'] . '">' : '') . ' </head> <body> <h1>HTTP ' . $status . '</h1> <a href="', quote_amp($url), '">', _T('navigateur_pas_redirige'), '</a></body></html>'; spip_log("redirige {$status}: {$url}"); exit; }
function essais_couleur_extraire(){ $essais = array ( 0 => array ( 0 => '759bc8', 1 => url_absolue(find_in_path('tests/degrade-bleu.jpg')), ), 1 => array ( 0 => '759bc8', 1 => find_in_path('tests/degrade-bleu.jpg'), ), ); return $essais; }
function chatons_installe() { $chatons = array(); $path = find_in_path('img/chatons'); $dossier = opendir($path); $bt = defined('_DIR_PLUGIN_PORTE_PLUME'); if($path) while ($image = readdir($dossier)) { if (preg_match(',^([a-z][a-z0-9_-]*)\.(png|gif|jpg),', $image, $reg)) { $chatons[0][] = ':'.$reg[1]; list(,,,$size) = @getimagesize("$path/$reg[1].$reg[2]"); $chatons[1][] = "<img class=\"no_image_filtrer\" alt=\"$reg[1]\" title=\"$reg[1]\" src=\"".url_absolue($path)."/$reg[1].$reg[2]\" $size/>"; if($bt) $chatons[4]['chaton_'.$reg[1]] = $reg[1].'.'.$reg[2]; } } return array('chatons' => $chatons); }
function controleurs_portfolio_dist($regs) { list(, $crayon, $type, $champ, $id) = $regs; include_spip('inc/minipres'); # pour aide() include_spip('inc/presentation'); # pour debut_cadre() include_spip('inc/layer'); # pour le js des fleches include_spip('inc/documents'); # pour aide() $html = http_script("\nvar ajax_image_searching = \n'<div style=\"float: " . $GLOBALS['spip_lang_right'] . ";\"><img src=\"" . url_absolue(_DIR_IMG_PACK . "searching.gif") . "\" alt=\"\" /></div>';") . http_script('', generer_url_public('jquery.js')) . http_script('', _DIR_JAVASCRIPT . 'layer.js', '') . afficher_documents_colonne($id, $type, 'portfolio'); $status = NULL; return array($html, $status); }
function presta_paybox_call_request_dist($id_transaction, $transaction_hash, $abo = false, $cartes = array('CB', 'VISA', 'EUROCARD_MASTERCARD', 'E_CARD')) { if (!($row = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction) . " AND transaction_hash=" . sql_quote($transaction_hash)))) { return ""; } if (!$row['id_auteur'] and $GLOBALS['visiteur_session']['id_auteur']) { sql_updateq("spip_transactions", array("id_auteur" => intval($row['id_auteur'] = $GLOBALS['visiteur_session']['id_auteur'])), "id_transaction=" . intval($id_transaction)); } // recuperer l'email $mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($row['id_auteur'])); // passage en centimes d'euros $montant = intval(100 * $row['montant']); if (strlen($montant) < 3) { $montant = str_pad($montant, 3, '0', STR_PAD_LEFT); } // Affectation des parametres obligatoires $parm = paybox_pbx_ids(); $parm['PBX_OUTPUT'] = "C"; // recuperer uniquement les hidden $parm['PBX_LANGUE'] = "FRA"; $parm['PBX_DEVISE'] = "978"; $parm['PBX_TOTAL'] = $montant; $parm['PBX_PORTEUR'] = defined('_PBX_PORTEUR') ? _PBX_PORTEUR : $mail; $parm['PBX_CMD'] = intval($id_transaction); $parm['PBX_RETOUR'] = 'montant:M;id_transaction:R;auth:A;trans:S;abo:B;erreur:E;valid:D;sign:K'; $parm['PBX_EFFECTUE'] = generer_url_action('bank_response', "bankp=paybox", true, true); $parm['PBX_REFUSE'] = generer_url_action('bank_cancel', "bankp=paybox", true, true); $parm['PBX_ANNULE'] = generer_url_action('bank_cancel', "bankp=paybox", true, true); if ($abo and $id_abonnement = sql_getfetsel("id_abonnement", "spip_abonnements_transactions", "id_transaction=" . intval($id_transaction)) and $montant_echeance = sql_getfetsel('prix_echeance', 'spip_abonnements', 'id_abonnement=' . intval($id_abonnement))) { $montant_echeance = str_pad(intval(100 * $montant_echeance), 10, "0", STR_PAD_LEFT); // infos de l'abonnement : // montant identique recurrent, frequence mensuelle, a date anniversaire, sans delai $parm['PBX_CMD'] .= "IBS_2MONT{$montant_echeance}" . "IBS_NBPAIE00" . "IBS_FREQ01" . "IBS_QUAND00"; } //var_dump($parm); $cartes_possibles = array('CB' => 'presta/paybox/logo/CB.gif', 'VISA' => 'presta/paybox/logo/VISA.gif', 'EUROCARD_MASTERCARD' => 'presta/paybox/logo/MASTERCARD.gif', 'E_CARD' => 'presta/paybox/logo/E-CB.gif', 'AMEX' => 'presta/paybox/logo/AMEX.gif', 'AURORE' => 'presta/paybox/logo/AURORE.gif'); include_spip('inc/filtres_mini'); $contexte = array('hidden' => array(), 'action' => _PAYBOX_URL, 'backurl' => url_absolue(self()), 'id_transaction' => $id_transaction); foreach ($cartes as $carte) { if ($cartes_possibles[$carte]) { $parm['PBX_TYPEPAIEMENT'] = 'CARTE'; $parm['PBX_TYPECARTE'] = $carte; $contexte['hidden'][$carte] = paybox_exec_request($parm); $contexte['logo'][$carte] = $cartes_possibles[$carte]; } } return $contexte; }
function balise_CLEVERMAIL_UNSUBSCRIBE_dyn() { if (isset($_GET['id']) && $_GET['id'] != '') { if (sql_countsel("spip_cm_lists_subscribers", "lsr_id=" . sql_quote($_GET['id'])) == 1) { $abonnement = sql_fetsel("*", "spip_cm_lists_subscribers", "lsr_id=" . sql_quote($_GET['id'])); // Desinscription a cette liste demandee $actionId = md5('unsubscribe#' . intval($abonnement['lst_id']) . '#' . intval($abonnement['sub_id']) . '#' . time()); if (sql_countsel("spip_cm_pending", "lst_id = " . intval($abonnement['lst_id']) . " AND sub_id = " . intval($abonnement['sub_id'])) == 0) { sql_insertq("spip_cm_pending", array('lst_id' => intval($abonnement['lst_id']), 'sub_id' => $abonnement['sub_id'], 'pnd_action' => 'unsubscribe', 'pnd_action_date' => time(), 'pnd_action_id' => $actionId)); } // Composition du message de demande de confirmation $sub = sql_fetsel("*", "spip_cm_subscribers", "sub_id=" . intval($abonnement['sub_id'])); $list = sql_fetsel("*", "spip_cm_lists", "lst_id=" . intval($abonnement['lst_id'])); $template = array(); if (strpos($list['lst_name'], '/') === false) { $template['@@NOM_LETTRE@@'] = supprimer_numero($list['lst_name']); $template['@@NOM_CATEGORIE@@'] = ''; $template['@@NOM_COMPLET@@'] = $template['@@NOM_LETTRE@@']; } else { $template['@@NOM_LETTRE@@'] = supprimer_numero(substr($list['lst_name'], strpos($list['lst_name'], '/') + 1)); $template['@@NOM_CATEGORIE@@'] = supprimer_numero(substr($list['lst_name'], 0, strpos($list['lst_name'], '/'))); $template['@@NOM_COMPLET@@'] = $template['@@NOM_CATEGORIE@@'] . ' / ' . $template['@@NOM_LETTRE@@']; } $template['@@EMAIL@@'] = $sub['sub_email']; $template['@@FORMAT_INSCRIPTION@@'] = $data['lsr_mode'] == 1 ? 'HTML' : 'texte'; //$template['@@URL_CONFIRMATION@@'] = $GLOBALS['meta']['adresse_site'].'/spip.php?page=clevermail_do&id='.$actionId; $template['@@URL_CONFIRMATION@@'] = url_absolue(generer_url_public(_CLEVERMAIL_UNSUBSCRIBE, 'id=' . $actionId)); $to = $sub['sub_email']; $subject = (intval($list['lst_subject_tag']) == 1 ? '[' . $template['@@NOM_COMPLET@@'] . '] ' : '') . html_entity_decode($list['lst_unsubscribe_subject'], ENT_QUOTES, 'UTF-8'); $body = $list['lst_unsubscribe_text']; while (list($translateFrom, $translateTo) = each($template)) { $body = str_replace($translateFrom, $translateTo, $body); } $from = sql_getfetsel("set_value", "spip_cm_settings", "set_name='CM_MAIL_FROM'"); $return = sql_getfetsel("set_value", "spip_cm_settings", "set_name='CM_MAIL_RETURN'"); // TODO : Et le charset ? // TODO : Et le return-path ? $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); $envoyer_mail($to, $subject, $body, $from); $return = '<p>' . _T('clevermail:desinscription_confirmation_debut') . ' ' . $template['@@NOM_COMPLET@@'] . ' ' . _T('clevermail:desinscription_confirmation_fin') . '</p>'; } else { $return = '<p>' . _T('clevermail:aucune_inscription') . '</p>'; } } return $return; }
function message_oubli($email, $param) { $r = formulaires_oubli_mail($email); if (is_array($r) and $r[1]) { include_spip('inc/texte'); # pour corriger_typo include_spip('action/inscrire_auteur'); $cookie = auteur_attribuer_jeton($r[1]['id_auteur']); // l'url_reset doit etre une URL de confiance, on force donc un url_absolue sur adresse_site include_spip('inc/filtres'); $msg = recuperer_fond("modeles/mail_oubli", array('url_reset' => url_absolue(generer_url_public('spip_pass', "{$param}={$cookie}"), $GLOBALS['meta']['adresse_site']))); include_spip("inc/notifications"); notifications_envoyer_mails($email, $msg); return _T('pass_recevoir_mail'); } return _T('pass_erreur_probleme_technique'); }
/** * on essaye de poser un htaccess rewrite global sur IMG/ * si fonctionne on gardera des ulrs de document permanente * si ne fonctionne pas on se rabat sur creer_htaccess du core * qui pose un deny sur chaque sous repertoire de IMG/ * * http://doc.spip.org/@gerer_htaccess * * @param bool $active * @return bool */ function accesrestreint_gerer_htaccess($active = true) { if (!$active) { spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME); effacer_meta("creer_htaccess"); // effacer les xx/.htaccess crees eventuellement par le core include_spip("inc/acces"); gerer_htaccess(); return false; } else { $rewrite = <<<rewrite RewriteEngine On RewriteCond %{QUERY_STRING} ^(\\d+/[\\da-f]+)\$ RewriteRule ^\\w+/.*\$ ../spip.php?action=api_docrestreint&arg=%1/\$0 [skip=100] RewriteRule ^\\w+/.*\$ ../spip.php?action=api_docrestreint&arg=0/0/\$0 [skip=100] rewrite; // On cherche si le dossier racine a un RewriteBase plus long que "/" if (file_exists(_DIR_RACINE . _ACCESS_FILE_NAME)) { $ht = ''; lire_fichier(_DIR_RACINE . _ACCESS_FILE_NAME, $ht); if ($ht and preg_match('|^RewriteBase\\s+/.+$|m', $ht, $rewritebase)) { $rewritebase = rtrim(trim($rewritebase[0]), '/') . '/' . _NOM_PERMANENTS_ACCESSIBLES; $rewrite = $rewritebase . "\n" . $rewrite; } } ecrire_fichier(_DIR_IMG . _ACCESS_FILE_NAME, $rewrite); // verifier sur l'url de test include_spip('inc/distant'); $url_test = url_absolue(_DIR_IMG . "test/.test?0/1"); $test = recuperer_page($url_test); // si l'url de test renvoie bien "OK" alors rewrite rule fonctionne et on peut baser la protection de document sur ce shema if ($test == "OK") { effacer_meta("creer_htaccess"); // securite, et permet de generer des urls permanentes } else { // sinon on se rabat sur un deny et on generera des urls moches spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME); ecrire_meta("creer_htaccess", "oui"); } // dans tous les cas on passe par gerer_htaccess pour enlever ou mettre les .htaccess dans les sous rep include_spip("inc/acces"); gerer_htaccess(); return true; } }
function porte_plume_insert_head($flux){ $lang = $GLOBALS['spip_lang']; $js = find_in_path('javascript/jquery.markitup_pour_spip.js'); $js_previsu = find_in_path('javascript/jquery.previsu_spip.js'); $js_settings = parametre_url(generer_url_public('porte_plume.js'), 'lang', $lang); $css = find_in_path('css/barre_outils.css'); $css_icones = generer_url_public('barre_outils_icones.css'); $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n" . "<link rel='stylesheet' type='text/css' media='all' href='$css_icones' />\n" . "<script type='text/javascript' src='$js'></script>\n" . "<script type='text/javascript' src='$js_previsu'></script>\n" . "<script type='text/javascript' src='$js_settings'></script>\n"; $preview = url_absolue(generer_url_public('preview')); $tEditer = _T('barre_outils:editer'); $tVoir = _T('barre_outils:voir'); $flux .= <<<EOF <script type="text/javascript"> <!-- jQuery(document).ready(function() { // ajoute les barres d'outils markitup function barrebouilles(){ // si c'est un appel de previsu markitup, faut pas relancer // on attrappe donc uniquement les textarea qui n'ont pas deja la classe markItUpEditor jQuery('.formulaire_forum textarea[name=texte]:not(.markItUpEditor)').markItUp(barre_outils_forum,{lang:'$lang'}); jQuery('textarea.textarea_forum:not(.markItUpEditor)').markItUp(barre_outils_forum,{lang:'$lang'}); jQuery('.formulaire_spip textarea[name=texte]:not(.markItUpEditor)') .markItUp(barre_outils_edition,{lang:'$lang'}) .previsu_spip({ previewParserPath:'$preview', textEditer:'$tEditer', textVoir:'$tVoir'}); } barrebouilles(); onAjaxLoad(barrebouilles); }); --> </script> EOF; return $flux; }
function generer_url_entite_absolue($id = '', $entite = '', $args = '', $ancre = '', $connect = NULL) { if (!$connect) { $connect = true; } $h = generer_url_entite($id, $entite, $args, $ancre, $connect); if (!preg_match(',^\\w+:,', $h)) { include_spip('inc/filtres_mini'); $h = url_absolue($h); } return $h; }
function url_absolue_css($css) { if (!preg_match(',\\.css$,i', $css, $r)) { return $css; } $url_absolue_css = url_absolue($css); $f = basename($css, '.css'); $f = sous_repertoire(_DIR_VAR, 'cache-css') . preg_replace(",(.*?)(_rtl|_ltr)?\$,", "\\1-urlabs-" . substr(md5("{$css}-urlabs"), 0, 4) . "\\2", $f) . '.css'; if (@filemtime($f) > @filemtime($css) and _VAR_MODE != 'recalcul') { return $f; } if ($url_absolue_css == $css) { if (strncmp($GLOBALS['meta']['adresse_site'], $css, $l = strlen($GLOBALS['meta']['adresse_site'])) != 0 or !lire_fichier(_DIR_RACINE . substr($css, $l), $contenu)) { include_spip('inc/distant'); if (!($contenu = recuperer_page($css))) { return $css; } } } elseif (!lire_fichier($css, $contenu)) { return $css; } // passer les url relatives a la css d'origine en url absolues $contenu = urls_absolues_css($contenu, $css); // ecrire la css if (!ecrire_fichier($f, $contenu)) { return $css; } return $f; }
/** * Analyser une URL de site distant, qui peut être une syndication. * * @param string $url * URL du site à analyser * @return array|bool * - array : informations du site * - false : site impossible à récupérer **/ function analyser_site($url) { include_spip('inc/filtres'); include_spip('inc/distant'); // Accepter les URLs au format feed:// ou qui ont oublie le http:// $url = preg_replace(',^feed://,i', 'http://', $url); if (!preg_match(',^[a-z]+://,i', $url)) { $url = 'http://' . $url; } $texte = recuperer_page($url, true); if (!$texte) { return false; } include_spip('inc/syndic'); cdata_echappe($texte, $echappe_cdata); if (preg_match(',<(channel|feed)([\\:[:space:]][^>]*)?' . '>(.*)</\\1>,ims', $texte, $regs)) { $result['syndication'] = 'oui'; $result['url_syndic'] = $url; $channel = $regs[3]; // Pour recuperer l'entete, on supprime tous les items $b = array_merge(extraire_balises($channel, 'item'), extraire_balises($channel, 'entry')); $header = str_replace($b, array(), $channel); if ($t = extraire_balise($header, 'title')) { cdata_echappe_retour($t, $echappe_cdata); $result['nom_site'] = filtrer_entites(supprimer_tags($t)); } if ($t = extraire_balises($header, 'link')) { cdata_echappe_retour($t, $echappe_cdata); foreach ($t as $link) { $u = supprimer_tags(filtrer_entites($link)); if (!strlen($u)) { $u = extraire_attribut($link, 'href'); } if (strlen($u)) { // on installe l'url comme url du site // si c'est non vide, en donnant la priorite a rel=alternate if (preg_match(',\\balternate\\b,', extraire_attribut($link, 'rel')) or !isset($result['url_site'])) { $result['url_site'] = filtrer_entites($u); } } } } $result['url_site'] = url_absolue($result['url_site'], $url); if ($a = extraire_balise($header, 'description') or $a = extraire_balise($header, 'tagline')) { cdata_echappe_retour($a, $echappe_cdata); $result['descriptif'] = filtrer_entites(supprimer_tags($a)); } if (preg_match(',<image.*<url.*>(.*)</url>.*</image>,Uims', $header, $r) and preg_match(',(https?://.*/.*(gif|png|jpg)),ims', $r[1], $r) and $image = recuperer_infos_distantes($r[1])) { if (in_array($image['extension'], array('gif', 'jpg', 'png'))) { $result['format_logo'] = $image['extension']; $result['logo'] = $r[1]; } else { if ($image['fichier']) { spip_unlink($image['fichier']); } } } } else { $result['syndication'] = 'non'; $result['url_site'] = $url; if (preg_match(',<head>(.*(description|title).*)</head>,Uims', $texte, $regs)) { $head = filtrer_entites($regs[1]); } else { $head = $texte; } if (preg_match(',<title[^>]*>(.*),ims', $head, $regs)) { $titre = trim($regs[1]); if (!strlen($titre)) { $titre = substr($head, strpos($head, $regs[0])); } $result['nom_site'] = filtrer_entites(supprimer_tags(preg_replace(',</title>.*$,ims', '', $titre))); } if ($a = array_merge(extraire_balises($head, 'meta'), extraire_balises($head, 'http-equiv'))) { foreach ($a as $meta) { if (extraire_attribut($meta, 'name') == 'description') { $desc = trim(extraire_attribut($meta, 'content')); if (!strlen($desc)) { $desc = trim(extraire_attribut($meta, 'value')); } $result['descriptif'] = $desc; } } } // Cherchons quand meme un backend include_spip('inc/distant'); include_spip('inc/feedfinder'); $feeds = get_feed_from_url($url, $texte); // si on a a trouve un (ou plusieurs) on le note avec select: // ce qui constitue un signal pour exec=sites qui proposera de choisir // si on syndique, et quelle url. if (count($feeds) >= 1) { spip_log("feedfinder.php :\n" . join("\n", $feeds)); $result['url_syndic'] = "select: " . join(' ', $feeds); } } cdata_echappe_retour($result, $echappe_cdata); return $result; }
/** * Préparer du contenu CSS inline avant minification * * @param string $contenu * @param string $url_base * @param array $fonctions * @return string */ function &compresseur_callback_prepare_css_inline(&$contenu, $url_base, $fonctions = null) { if (!$fonctions) { $fonctions = compresseur_liste_fonctions_prepare_css(); } elseif (is_string($fonctions)) { $fonctions = array($fonctions); } // retirer le protocole de $url_base $url_base = protocole_implicite(url_absolue($url_base)); foreach ($fonctions as $f) { if (function_exists($f)) { $contenu = $f($contenu, $url_base); } } return $contenu; }
/** * Generer le contexte pour le formulaire de requete de paiement * il faut avoir un id_transaction et un transaction_hash coherents * pour se premunir d'une tentative d'appel exterieur * * @param int $id_transaction * @param string $transaction_hash * @param array $config * array cartes * @param string $action * REGISTER : enregsitrement simple et on recupere un numero d'abonne/identifiant * REGISTER_UPDATE : mise a jour des coordonnes liees au numero d'abonne * REGISTER_PAY : payer et enregistrer * REGISTER_SUBSCRIBE : abonner et enregistrer * PAYMENT : avec un identifiant optionnel qui evite de resaisir les numeros de CB * SUBSCRIBE : abonner avec un identifiant qui evite de resaisir les numeros de CB * @param array $options * string $abo_uid : utile pour les actions REGISTER_UPDATE, PAYMENT, SUBSCRIBE * int $delay : nb jours avant effet du paiement ponctuel (vads_capture_delay) * int $delay_subscribe : nb jours avant effet de l'abonnement (vads_sub_effect_date) * @return array */ function presta_systempay_call_request_dist($id_transaction, $transaction_hash, $config = array(), $action = "PAYMENT", $options = array()) { $mode = $config['presta']; if (isset($config['mode_test']) and $config['mode_test']) { $mode .= "_test"; } $cartes = array('CB', 'VISA', 'MASTERCARD', 'E-CARTEBLEUE'); if (isset($config['cartes']) and $config['cartes']) { $cartes = $config['cartes']; } $c = $config; $c['type'] = strpos($action, "SUBSCRIBE") !== false ? 'abo' : 'acte'; $cartes_possibles = systempay_available_cards($c); $options = array_merge(array('abo_uid' => '', 'delay' => 0, 'delay_subscribe' => 0), $options); $abo_uid = $options['abo_uid']; if (!in_array($action, array('REGISTER', 'REGISTER_UPDATE', 'REGISTER_PAY', 'REGISTER_SUBSCRIBE', 'REGISTER_PAY_SUBSCRIBE', 'PAYMENT', 'SUBSCRIBE'))) { spip_log("Action {$action} inconnue", $mode . _LOG_ERREUR); return false; } if (in_array($action, array('REGISTER_UPDATE', 'SUBSCRIBE')) and !$abo_uid) { spip_log("Action {$action} : abo_uid manquant pour generer le formulaire", $mode . _LOG_ERREUR); return false; } if (!($row = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction) . " AND transaction_hash=" . sql_quote($transaction_hash)))) { return array(); } if (!$row['id_auteur'] and isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur']) { sql_updateq("spip_transactions", array("id_auteur" => intval($row['id_auteur'] = $GLOBALS['visiteur_session']['id_auteur'])), "id_transaction=" . intval($id_transaction)); } include_spip('inc/filtres'); $parm = array(); $parm['vads_site_id'] = $config['SITE_ID']; $parm['vads_ctx_mode'] = $config['mode_test'] ? "TEST" : "PRODUCTION"; $parm['vads_version'] = _SYSTEMPAY_VERSION; $parm['vads_trans_id'] = bank_transaction_id($row); $parm['vads_order_id'] = $row['id_transaction']; // il ne faut pas utiliser la date de la transaction qui peut dater de plusieurs heures/jour // mais la date de generation du formulaire de paiement, car il y a une verif de coherence chez payzen // la demande doit arriver entre -30min et +2h30 par rapport a cette date $parm['vads_trans_date'] = gmdate("YmdHis"); $parm['vads_page_action'] = $action; if ($abo_uid) { $parm['vads_identifier'] = $abo_uid; } $parm['vads_action_mode'] = "INTERACTIVE"; $parm['vads_payment_config'] = "SINGLE"; //$parm['vads_capture_delay'] = 0; //$parm['vads_validation_mode'] = 0; // passage en centimes d'euros : round en raison des approximations de calcul de PHP $parm['vads_currency'] = 978; $parm['vads_amount'] = intval(round(100 * $row['montant'], 0)); $parm['vads_language'] = $GLOBALS['spip_lang']; // recuperer l'email $parm['vads_cust_email'] = bank_porteur_email($row); // si il y a du SEPA, il faut si possible nom et prenom if (in_array('SDD', $cartes) and isset($cartes_possibles['SDD'])) { $parm['vads_cust_first_name'] = bank_porteur_prenom($row); $parm['vads_cust_last_name'] = bank_porteur_nom($row); } // nom et url de la boutique $parm['vads_shop_url'] = $GLOBALS['meta']['adresse_site']; $parm['vads_shop_name'] = textebrut($GLOBALS['meta']['nom_site']); // Urls de retour $parm['vads_return_mode'] = "GET"; // POST pour privacy et ne pas loger par Apache, mais GET pour ne pas avoir un message d'avertissement au retour utilisateur $parm['vads_url_return'] = bank_url_api_retour($config, "response"); $parm['vads_url_cancel'] = bank_url_api_retour($config, "cancel"); $url_check = bank_url_api_retour($config, "autoresponse"); if (strpos($url_check, "localhost") === false) { $parm['vads_url_check'] = bank_url_api_retour($config, "autoresponse"); } $now = time(); // c'est un abonnement if (in_array($action, array('REGISTER_PAY_SUBSCRIBE', 'REGISTER_SUBSCRIBE', 'SUBSCRIBE'))) { // on decrit l'echeance if ($decrire_echeance = charger_fonction("decrire_echeance", "abos", true) and $echeance = $decrire_echeance($id_transaction)) { if ($echeance['montant'] > 0) { // on commence maintenant $date_effet = $now; if (isset($echeance['date_start']) and $echeance['date_start'] and strtotime($echeance['date_start']) > $now) { $date_effet = strtotime($echeance['date_start']); } if (isset($options['delay_subscribe']) and $options['delay_subscribe']) { $date_effet = strtotime("+" . $options['delay_subscribe'] . " DAY", $date_effet); } $parm['vads_sub_effect_date'] = gmdate("Ymd", $date_effet); $nb = 0; $nb_init = 0; if (isset($echeance['count'])) { $nb = intval($echeance['count']); } if (isset($echeance['count_init'])) { $nb_init = intval($echeance['count_init']); } // dans le cas Payzen $nb est le nombre total d'echeances, en incluant les echeances initiales if ($nb and $nb_init) { $nb += $nb_init; } $freq = "MONTHLY"; if (isset($echeance['freq']) and $echeance['freq'] == 'yearly') { $freq = "YEARLY"; } // si on fait le premier paiement maintenant, il ne faut pas le compter dans l'abonnement if ($action === "REGISTER_PAY_SUBSCRIBE") { // on decale l'effet a +1mois ou +1an $parm['vads_sub_effect_date'] = gmdate("Ymd", strtotime("+1 " . substr($freq, 0, -2), $date_effet)); // on le decompte du nombre d'echeance if ($nb_init > 0) { $nb_init--; } if ($nb > 0) { $nb--; } } // montant de l'echeance $parm['vads_sub_amount'] = intval(round(100 * $echeance['montant'], 0)); // meme devise que le paiement initial $parm['vads_sub_currency'] = $parm['vads_currency']; // regle de recurrence $rule = "RRULE:"; $rule .= "FREQ={$freq};"; if ($freq == "MONTHLY") { $monthday = intval(substr($parm['vads_sub_effect_date'], -2)); switch ($monthday) { case 31: $rule .= "BYMONTHDAY=28,29,30,31;BYSETPOS=-1;"; break; case 30: $rule .= "BYMONTHDAY=28,29,30;BYSETPOS=-1;"; break; case 29: $rule .= "BYMONTHDAY=28,29;BYSETPOS=-1;"; break; default: $rule .= "BYMONTHDAY={$monthday};"; break; } } if ($nb > 0) { $rule .= "COUNT={$nb};"; } $parm['vads_sub_desc'] = $rule; if ($nb_init > 0) { $parm['vads_sub_init_amount_number'] = $nb_init; $parm['vads_sub_init_amount'] = $parm['vads_amount']; if (isset($echeance['montant_init']) and ($m = intval(round(100 * $echeance['montant_init'], 0))) > 0) { $parm['vads_sub_init_amount'] = $m; } } } } } if (in_array($action, array('REGISTER_PAY', 'REGISTER_PAY_SUBSCRIBE', 'PAYMENT'))) { if ($options['delay']) { $parm['vads_capture_delay'] = $options['delay']; } } // s'annoncer fierement : SPIP + bank vx $parm['vads_contrib'] = bank_annonce_version_plugin(); #$parm['vads_redirect_success_timeout'] = 1; #$parm['vads_redirect_success_message'] = "OK"; #$parm['vads_redirect_error_timeout'] = 1; #$parm['vads_redirect_error_message'] = "Echec"; // cas particulier de la carte SDD : // si on fait un REGISTER_SUBSCRIBE ou un SUBSCRIBE il faut un delai minimum de 13j sur le subscribe // pas de probleme avec le REGISTER_PAY_SUBSCRIBE car le subscribe est decale d'une echeance dans ce cas if (isset($cartes_possibles['SDD']) and in_array('SDD', $cartes) and (in_array($action, array('REGISTER_SUBSCRIBE', 'SUBSCRIBE')) and intval($options['delay_subscribe']) < 13)) { $action_sdd = $action; $config_sdd = $config; $config_sdd['cartes'] = array('SDD'); $options_sdd = $options; $options_sdd['delay_subscribe'] = max($options_sdd['delay_subscribe'], 13); // minimum 13 jours pour un SEPA $contexte = presta_systempay_call_request_dist($id_transaction, $transaction_hash, $config_sdd, $action_sdd, $options_sdd); unset($cartes_possibles['SDD']); } else { $contexte = array('hidden' => array(), 'action' => systempay_url_serveur($config), 'backurl' => url_absolue(self()), 'id_transaction' => $id_transaction, 'transaction_hash' => $transaction_hash); } foreach ($cartes as $carte) { if (isset($cartes_possibles[$carte])) { $parm['vads_payment_cards'] = $carte; $contexte['hidden'][$carte] = systempay_form_hidden($config, $parm); $contexte['logo'][$carte] = $cartes_possibles[$carte]; } } return $contexte; }
/** * Inserer la css de l'agenda dans l'espace prive (hum) * @param string $head * @return string */ function organiseur_header_prive($head) { // CSS calendrier if ($GLOBALS['meta']['messagerie_agenda'] != 'non') { $head .= '<link rel="stylesheet" type="text/css" href="' . url_absolue(find_in_path('calendrier.css')) . '" />' . "\n"; } return $head; }
function smileys_installe() { $path = find_in_path('img/smileys'); cs_log("smileys_installe() : $path"); $path2 = url_absolue($path); // l'ordre des smileys ici est important : // - les doubles, puis les simples, puis les courts // - le raccourci insere par la balise #SMILEYS est la premiere occurence de chaque fichier $smileys = array( // attention ' est different de ’ (’) (SPIP utilise/ecrit ce dernier) ":’-))"=> 'pleure_de_rire.png', ":’-)"=> 'pleure_de_rire.png', ":’-D" => 'pleure_de_rire.png', ":’-(" => 'triste.png', // les doubles : ':-))' => 'mort_de_rire.png', ':))' => 'mort_de_rire.png', ":'-))"=> 'pleure_de_rire.png', ':-((' => 'en_colere.png', // les simples : ';-)' => 'clin_d-oeil.png', ':-)' => 'sourire.png', ':-D' => 'mort_de_rire.png', ":'-)"=> 'pleure_de_rire.png', ":'-D" => 'pleure_de_rire.png', ':-(' => 'pas_content.png', ":'-(" => 'triste.png', ':->' => 'diable.png', '|-)' => 'rouge.png', ':o)' => 'rigolo.png', 'B-)' => 'lunettes.png', ':-P' => 'tire_la_langue.png', ':-p' => 'tire_la_langue.png', ':-|' => 'bof.png', ':-/' => 'mouais.png', ':-O' => 'surpris.png', ':-o' => 'surpris.png', // les courts : tester a l'usage... // attention : ils ne sont reconnus que s'il y a un espace avant ! ':)' => 'sourire.png', ':(' => 'pas_content.png', ';)' => 'clin_d-oeil.png', ':|' => 'bof.png', '|)' => 'rouge.png', ':/' => 'mouais.png', ); $aide = array(); foreach ($smileys as $smy=>$val) { $espace = strlen($smy)==2?' ':''; $smileys2[0][] = $espace.$smy; list(,,,$size) = @getimagesize("$path/$val"); // cs_code_echappement evite que le remplacement se fasse a l'interieur des attributs de la balise <img> $smileys2[1][] = cs_code_echappement($espace."<img alt=\"$smy\" title=\"$smy\" class=\"no_image_filtrer format_png\" src=\"$path2/$val\" $size/>", 'SMILE'); $smileys2[2][] = $val; // aide : liste des smileys disponibles $aide[] = $smy; } if(defined('_DIR_PLUGIN_PORTE_PLUME')) { $sm = smileys_uniques($smileys2); $max = count($sm[2]); for ($i=0; $i<$max; $i++) $smileys2[4]['smiley_'.str_replace('.png','',$sm[2][$i])] = $sm[2][$i]; } return array('smileys'=>$smileys2, 'smileys_racc'=>$aide); }
/** * Cette fonction cree la css pour les images * des icones des barres d'outils * en s'appuyant sur la description des jeux de barres disponibles. * * elle cherche une fonction barre_outils_($barre)_icones pour chaque * barre et l'appelle si existe. * * @return string : declaration css des icones */ function barre_outils_css_icones(){ // recuperer la liste, extraire les icones $css = ""; // liste des barres if (!$barres = barre_outils_liste()) return null; // liste des classes css et leur correspondance avec une icone $classe2icone = array(); foreach ($barres as $barre) { include_spip('barre_outils/' . $barre); if ($f = charger_fonction($barre . '_icones', 'barre_outils', true)) { if (is_array($icones = $f())) { $classe2icone = array_merge($classe2icone, $icones); } } } // passer le tout dans un pipeline pour ceux qui ajoute de simples icones a des barres existantes $classe2icone = pipeline('porte_plume_lien_classe_vers_icone',$classe2icone); // passage en css foreach ($classe2icone as $n=>$i) { $pos=""; if (is_array($i)){ $pos = "background-position:".end($i); $i = reset($i); } $css .= "\n.markItUp .$n a b {background-image:url(".url_absolue(find_in_path("icones_barre/$i")).");$pos}"; } return $css; }
function debusquer_entete($titre, $corps) { global $debug_objets; include_spip('balise/formulaire_admin'); include_spip('public/assembler'); // pour inclure_balise_dynamique include_spip('inc/texte'); // pour corriger_typo return _DOCTYPE_ECRIRE . html_lang_attributes() . "<head>\n<title>" . ('SPIP ' . $GLOBALS['spip_version_affichee'] . ' ' . _T('admin_debug') . ' ' . $titre . ' (' . supprimer_tags(corriger_typo($GLOBALS['meta']['nom_site']))) . ")</title>\n" . "<meta http-equiv='Content-Type' content='text/html" . (($c = $GLOBALS['meta']['charset']) ? "; charset={$c}" : '') . "' />\n" . http_script('', 'jquery.js') . "<link rel='stylesheet' href='" . url_absolue(find_in_path('spip_admin.css')) . "' type='text/css' />" . "</head>\n" . "<body style='margin:0 10px;'>\n" . "<div id='spip-debug-header'>" . $corps . inclure_balise_dynamique(balise_FORMULAIRE_ADMIN_dyn('spip-admin-float', $debug_objets), false) . '</div></body></html>'; }