Пример #1
0
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;
}
Пример #2
0
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');
}
Пример #4
0
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;
}
Пример #5
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;
}
Пример #6
0
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);
}
Пример #7
0
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;
}
Пример #8
0
/**
 * 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;
}
Пример #9
0
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('&lt;', '&quot;'), $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;
}
Пример #10
0
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];
}
Пример #12
0
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;
}
Пример #13
0
/**
 * 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('&lt;', '&quot;'), $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;
}
Пример #14
0
	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;
	}
Пример #15
0
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);
}
Пример #16
0
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);
}
Пример #17
0
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;
}
Пример #18
0
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;
}
Пример #19
0
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');
}
Пример #20
0
/**
 * 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;
    }
}
Пример #21
0
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;
}
Пример #22
0
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;
}
Пример #23
0
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;
}
Пример #24
0
/**
 * 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;
}
Пример #25
0
/**
 * 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;
}
Пример #26
0
/**
 * 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;
}
Пример #27
0
/**
 * 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;
}
Пример #28
0
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 ’ (&#8217;) (SPIP utilise/ecrit ce dernier)
	 ":&#8217;-))"=> 'pleure_de_rire.png',
	 ":&#8217;-)"=> 'pleure_de_rire.png',
	 ":&#8217;-D"	=> 'pleure_de_rire.png',
	 ":&#8217;-("	=> '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',
	 ':-&gt;' => '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);
}
Пример #29
0
/**
 * 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;
}
Пример #30
0
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>';
}