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; }
function formulaires_configurer_preferences_charger() { // travailler sur des meta fraiches include_spip('inc/meta'); lire_metas(); $valeurs = array(); $valeurs['display_navigation'] = isset($GLOBALS['visiteur_session']['prefs']['display_navigation']) ? $GLOBALS['visiteur_session']['prefs']['display_navigation'] : 'navigation_avec_icones'; $valeurs['display_outils'] = isset($GLOBALS['visiteur_session']['prefs']['display_outils']) ? $GLOBALS['visiteur_session']['prefs']['display_outils'] : 'oui'; $valeurs['display'] = (isset($GLOBALS['visiteur_session']['prefs']['display']) and $GLOBALS['visiteur_session']['prefs']['display'] > 0) ? $GLOBALS['visiteur_session']['prefs']['display'] : 2; $valeurs['couleur'] = (isset($GLOBALS['visiteur_session']['prefs']['couleur']) and $GLOBALS['visiteur_session']['prefs']['couleur'] > 0) ? $GLOBALS['visiteur_session']['prefs']['couleur'] : 1; $valeurs['spip_ecran'] = $GLOBALS['spip_ecran']; // Ajout TinyMCE //var_export($GLOBALS['visiteur_session']['prefs']); $valeurs['tinymce'] = isset($GLOBALS['visiteur_session']['prefs']['tinymce']) ? $GLOBALS['visiteur_session']['prefs']['tinymce'] : 'oui'; // ! Ajout TinyMCE $couleurs = charger_fonction('couleurs', 'inc'); $les_couleurs = $couleurs(array(), true); $i = 1; foreach ($les_couleurs as $k => $c) { $valeurs['couleurs_url'][$i] = generer_url_public('style_prive.css', 'ltr=' . $GLOBALS['spip_lang_left'] . '&' . $couleurs($k)); $valeurs['couleurs'][$i++] = $c; } $valeurs['imessage'] = $GLOBALS['visiteur_session']['imessage']; return $valeurs; }
/** * Ajoute les scripts JS et CSS de saisies dans l'espace public * * Ajoute également de quoi gérer le datepicker de la saisie date si * celle-ci est utilisée dans la page. * * @param string $flux * @return string **/ function saisies_affichage_final($flux) { if (($p = strpos($flux, "<!--!inserer_saisie_editer-->")) !== false) { // On insère la CSS devant le premier <link> trouvé if (!($pi = strpos($flux, "<link")) and !($pi = strpos($flux, '</head'))) { $pi = $p; } // si pas de <link inserer comme un goret entre 2 <li> de saisies $css = generer_url_public('saisies.css'); $ins_css = "\n<link rel='stylesheet' href='{$css}' type='text/css' media='all' />\n"; if (strpos($flux, "saisie_date") !== false) { //si on a une saisie de type date, on va charger les css de jquery_ui include_spip("jqueryui_pipelines"); if (function_exists("jqueryui_dependances")) { $ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker")); array_push($ui_plugins, "jquery.ui.theme"); foreach ($ui_plugins as $ui_plug) { $ui_plug_css = find_in_path("css/{$ui_plug}.css"); if (strpos($flux, "css/{$ui_plug}.css") === false) { // si pas déjà chargé $ins_css .= "\n<link rel='stylesheet' href='{$ui_plug_css}' type='text/css' media='all' />\n"; } } } } $flux = substr_replace($flux, $ins_css, $pi, 0); // On insère le JS à la fin du <head> $pos_head = strpos($flux, '</head'); $js = find_in_path('javascript/saisies.js'); $ins_js = "\n<script type='text/javascript' src='{$js}'></script>\n"; $flux = substr_replace($flux, $ins_js, $pos_head, 0); } return $flux; }
function html_78503d8cb0bd66f2d97f4b9c0f7d329a($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 = ' ' . (($t1 = BOUCLE_art_agendahtml_78503d8cb0bd66f2d97f4b9c0f7d329a($Cache, $Pile, $doublons, $Numrows, $SP)) !== '' ? ' <div class="menu" id="menu-agenda"> <br /> <h3 class="structure">' . _T('public|spip|ecrire:icone_agenda') . '</h3> <ul> <li> <a class="lien" href="' . interdire_scripts(generer_url_public('agenda', '')) . '" title="' . _T('public|spip|ecrire:icone_agenda') . '">' . _T('public|spip|ecrire:icone_agenda') . '</a> <ul> ' . $t1 . ' </ul> </li> </ul> </div> ' : '') . ' '; return analyse_resultat_skel('html_78503d8cb0bd66f2d97f4b9c0f7d329a', $Cache, $page, 'squelettes/inc/inc-menu-agenda.html'); }
function message_oubli($email, $param) { $r = formulaires_oubli_mail($email); if (is_array($r) AND $r[1]) { include_spip('inc/acces'); # pour creer_uniqid include_spip('inc/texte'); # pour corriger_typo $cookie = creer_uniqid(); sql_updateq("spip_auteurs", array("cookie_oubli" => $cookie), "id_auteur=" . $r[1]['id_auteur']); $nom = textebrut(corriger_typo($GLOBALS['meta']["nom_site"])); $envoyer_mail = charger_fonction('envoyer_mail','inc'); if ($envoyer_mail($email, ("[$nom] " . _T('pass_oubli_mot')), _T('pass_mail_passcookie', array('nom_site_spip' => $nom, 'adresse_site' => url_de_base(), 'sendcookie' => generer_url_public('spip_pass', "$param=$cookie", true)))) ) return _T('pass_recevoir_mail'); else return _T('pass_erreur_probleme_technique'); } return _T('pass_erreur_probleme_technique'); }
function action_logout_dist() { global $visiteur_session, $ignore_auth_http; $logout = _request('logout'); $url = securiser_redirect_action(_request('url')); // cas particulier, logout dans l'espace public if ($logout == 'public' and !$url) { $url = url_de_base(); } // seul le loge peut se deloger (mais id_auteur peut valoir 0 apres une restauration avortee) if (is_numeric($visiteur_session['id_auteur'])) { include_spip('inc/auth'); auth_trace($visiteur_session, '0000-00-00 00:00:00'); // le logout explicite vaut destruction de toutes les sessions if (isset($_COOKIE['spip_session'])) { $session = charger_fonction('session', 'inc'); $session($visiteur_session['id_auteur']); spip_setcookie('spip_session', $_COOKIE['spip_session'], time() - 3600); } // si authentification http, et que la personne est loge, // pour se deconnecter, il faut proposer un nouveau formulaire de connexion http if (isset($_SERVER['PHP_AUTH_USER']) and !$ignore_auth_http and $GLOBALS['auth_can_disconnect']) { ask_php_auth(_T('login_deconnexion_ok'), _T('login_verifiez_navigateur'), _T('login_retour_public'), "redirect=" . _DIR_RESTREINT_ABS, _T('login_test_navigateur'), true); } } // Rediriger en contrant le cache navigateur (Safari3) include_spip('inc/headers'); redirige_par_entete($url ? parametre_url($url, 'var_hasard', uniqid(rand()), '&') : generer_url_public('login')); }
/** * Se deloger * Pour eviter les CSRF on passe par une etape de confirmation si pas de jeton, * avec un autosubmit js pour ne pas compliquer l'experience utilisateur * * http://doc.spip.org/@action_logout_dist * */ function action_logout_dist() { $logout =_request('logout'); $url = _request('url'); // seul le loge peut se deloger // (mais id_auteur peut valoir 0 apres une restauration avortee) if (isset($GLOBALS['visiteur_session']['id_auteur']) AND is_numeric($GLOBALS['visiteur_session']['id_auteur']) // des sessions anonymes avec id_auteur=0 existent, // mais elles n'ont pas de statut : verifier ca aussi AND isset($GLOBALS['visiteur_session']['statut'])) { // relancer si pas de jeton if (!action_logout_secu($logout, $url, _request('jeton'))) { return; // page submit retournee } elseif (isset($_COOKIE['spip_session'])) { // le logout explicite vaut destruction de toutes les sessions $session = charger_fonction('session', 'inc'); $session($GLOBALS['visiteur_session']['id_auteur']); spip_setcookie('spip_session', $_COOKIE['spip_session'], time()-3600); } include_spip('inc/auth'); auth_trace($GLOBALS['visiteur_session'],'0000-00-00 00:00:00'); } // Action terminee (ou non faite si pas les droits) on redirige. // Cas particulier, logout dans l'espace public $url = securiser_redirect_action($url); if ($logout == 'public' AND !$url) $url = url_de_base(); include_spip('inc/headers'); redirige_par_entete($url // contrer le cache navigateur (Safari3) ? parametre_url($url, 'var_hasard', uniqid(rand()), '&') : generer_url_public('login')); }
function vacarme_commande_header_prive($flux) { $js = find_in_path('prive/squelettes/javascript/vacarme_commande_prive.js'); $flux .= "\n<script type='text/javascript' src='{$js}'></script>\n"; $css = generer_url_public('prive/squelettes/css/vacarme_commande_prive.css'); $flux .= "\n<link rel='stylesheet' href='{$css}' type='text/css' media='all' />\n"; 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; }
/** * cette fonction doit etre appelee avec un $id_transaction securise * jamais avec un $id_transaction qui provient directement de l'url sans verification * * @param <type> $mode * @param <type> $acte_ou_abo * @param <type> $succes * @param <type> $id_transaction */ function redirige_apres_retour_transaction($mode, $acte_ou_abo, $succes, $id_transaction = 0) { $redirect = ""; // cas de paiement par un admin (cheque...) // renvoyer dans le prive $id_auteur = sql_getfetsel("id_auteur", "spip_transactions", "id_transaction=" . intval($id_transaction)); if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] != $id_auteur and include_spip("inc/autoriser") and autoriser("regler", "transaction", $id_transaction)) { $redirect = generer_url_ecrire("transactions", "id_transaction=" . $id_transaction, true); } if (!$redirect) { // par defaut on revient sur une des pages reglees en define() // _BANK_ACTE_NORMAL_RETURN_URL // _BANK_ACTE_CANCEL_RETURN_URL // _BANK_ABO_NORMAL_RETURN_URL // _BANK_ABO_CANCEL_RETURN_URL $acte_ou_abo = $acte_ou_abo == 'acte' ? 'ACTE' : 'ABO'; $c = "_BANK_" . $acte_ou_abo . "_NORMAL_RETURN_URL"; if ($succes) { if (defined($c)) { $redirect = constant($c); } else { $redirect = generer_url_public('bank_retour_ok'); } } else { if (defined($c)) { $redirect = constant($c); } else { $redirect = generer_url_public('bank_retour_echec'); } } if (strlen($redirect)) { $redirect = parametre_url($redirect, 'type', $acte_ou_abo, '&'); if ($id_transaction = intval($id_transaction)) { // attraper les infos sur la transaction $row = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction)); } if ($row and $row['transaction_hash']) { $redirect = parametre_url($redirect, 'id_transaction', $id_transaction, '&'); $redirect = parametre_url($redirect, 'transaction_hash', $row['transaction_hash'], '&'); } } } // permettre de definir autrement l'url de redirection $redirect = pipeline('bank_redirige_apres_retour_transaction', array('args' => array('mode' => $mode, 'type' => $acte_ou_abo, 'succes' => $succes, 'id_transaction' => $id_transaction, 'row' => $row), 'data' => $redirect)); #var_dump($redirect);die(); if (strlen($redirect)) { include_spip('inc/headers'); redirige_par_entete($redirect); exit; } //on ne devrait jamais arriver la ! if ($succes) { echo "Transaction {$mode} {$acte_ou_abo} {$id_transaction} terminee OK"; } else { echo "Transaction {$mode} {$acte_ou_abo} {$id_transaction} annulee"; } die; }
/** * chargement des valeurs par defaut des champs du #FORMULAIRE_RECHERCHE * on peut lui passer l'url de destination en premier argument * on peut passer une deuxième chaine qui va différencier le formulaire pour pouvoir en utiliser plusieurs sur une même page * * @param string $lien URL où amène le formulaire validé * @param string $class Une class différenciant le formulaire * @return array */ function formulaires_recherche_charger_dist($lien = '', $class = '') { if ($GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site']) { $lang = $GLOBALS['spip_lang']; } else { $lang = ''; } $action = $lien ? $lien : generer_url_public('recherche'); # action specifique, ne passe pas par Verifier, ni Traiter return array('action' => $action, 'recherche' => _request('recherche'), 'lang' => $lang, 'class' => $class, '_id_champ' => $class ? substr(md5($action . $class), 0, 4) : 'recherche'); }
/** * Un filtre qui, etant donne un #PARAMETRES_FORUM, retourne un URL de suivi rss * dudit forum * Attention applique a un #PARAMETRES_FORUM complexe (id_article=x&id_forum=y) * ca retourne un url de suivi du thread y (que le thread existe ou non) * * @param $param * @return string */ function filtre_url_rss_forum($param) { if (!preg_match(',.*(id_(\\w*?))=([0-9]+),S', $param, $regs)) { return ''; } list(, $k, $t, $v) = $regs; if ($t == 'forum') { $k = 'id_' . ($t = 'thread'); } return generer_url_public("rss_forum_{$t}", array($k => $v)); }
function action_renvoyer_facture_dist() { $securiser_action = charger_fonction("securiser_action", "inc"); $id_facture = $securiser_action(); if ($row = sql_fetsel("details,id_auteur,no_comptable", "spip_factures", "id_facture=" . intval($id_facture)) and $notifications = charger_fonction('notifications', 'inc')) { spip_log("Renvoi de la facture #{$id_facture} a auteur #" . $row['id_auteur'] . " par #" . $GLOBALS['visiteur_session']['id_auteur'], "facture" . _LOG_INFO_IMPORTANTE); $options = array(); $options['url_facture'] = generer_url_public('facture', "id_facture={$id_facture}&hash=" . md5($row['details']), false, false); $notifications("genererfacture", $id_facture, $options); } }
/** * Intervient au traitement du formulaire * * @pipeline formulaire_traiter * @param array $flux Données du pipeline * @return array Données du pipeline */ function fourstepsforplanet_formulaire_traiter($flux) { $form = $flux['args']['form']; if ($form == 'joindre_document' and !_request('exec')) { include_spip('action/zencoder_new_job'); $id_document = $flux['data']['ids'][0]; //Convert the video with zencoder zencoder_new_job($id_document); $flux['data']['redirect'] = '/' . generer_url_public("rubrique", "id_rubrique=5&id_document={$id_document}") . $flux['data']['redirect']; } return $flux; }
function vhplab_insert_head($flux) { if (function_exists('lire_config')) { $key = lire_config("vhplab/api_key"); $flux .= '<!-- VHPlab GIS plugin spip 3.0 ' . generer_url_public('vhplab.js') . ' --> <link rel="stylesheet" href="' . _DIR_PLUGIN_VHPLAB . 'css/vhplab.css" type="text/css" /> <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=' . $key . '&sensor=true"></script> <script type="text/javascript" src="' . _DIR_PLUGIN_VHPLAB . 'js/vhplab.js"></script> '; } return $flux; }
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; }
/** * Définit l'entête par défaut pour le plugin Palette */ function inc_palette_header_dist($type = '') { $js = generer_url_public('palette.js'); $css = find_in_path(_DIR_LIB_PALETTE . 'farbtastic.css'); $ret = '<link rel="stylesheet" href="' . $css . '" type="text/css" media="all" />' . "\n"; $ret .= '<script type="text/javascript" src="' . $js . '"></script>' . "\n"; if ($type == 'public') { // insertion de la feuille de style uniquement pour le public $css_publique = generer_url_public('palette.css'); $ret .= '<link rel="stylesheet" href="' . $css_publique . '" type="text/css" media="all" />' . "\n"; } return $ret; }
function skeleditor_extraire_css($texte){ $url_base = url_de_base(); $url_page = substr(generer_url_public('A'), 0, -1); $dir = preg_quote($url_page,',').'|'.preg_quote(preg_replace(",^$url_base,",_DIR_RACINE,$url_page),','); $css = array(); // trouver toutes les css pour les afficher dans le bouton // repris du compresseur foreach (extraire_balises($texte, 'link') as $s) { if (extraire_attribut($s, 'rel') === 'stylesheet' AND (!($type = extraire_attribut($s, 'type')) OR $type == 'text/css') AND !strlen(strip_tags($s)) AND $src = preg_replace(",^$url_base,",_DIR_RACINE,extraire_attribut($s, 'href')) AND ( // regarder si c'est du format spip.php?page=xxx preg_match(',^('.$dir.')(.*)$,', $src, $r) OR ( // ou si c'est un fichier // enlever un timestamp eventuel derriere un nom de fichier statique $src2 = preg_replace(",[.]css[?].+$,",'.css',$src) // verifier qu'il n'y a pas de ../ ni / au debut (securite) AND !preg_match(',(^/|\.\.),', substr($src2,strlen(_DIR_RACINE))) // et si il est lisible AND @is_readable($src2) ) )) { if ($r) $css[$s] = explode('&', str_replace('&', '&', $r[2]), 2); else{ $file = preg_replace(",[?]\d+$,","",$src); if (strncmp($file,_DIR_VAR,strlen(_DIR_VAR))==0){ lire_fichier($file,$c); if (preg_match(",^\/\*\s*(#@.*)\s*\*\/,Uims",$c,$m)){ $inc = explode("#@",$m[1]); $inc = array_map('trim',$inc); $inc = array_filter($inc); foreach($inc as $i){ if (!in_array($i,$css)) $css["$s:$i"] = $i; } } } else $css[$s] = $file; } } } return $css; }
function formulaires_recherche_charger_dist($lien_filtre = NULL,$lien_arg = NULL){ $lien = $lien_filtre ? $lien_filtre : $lien_arg; if ($GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site']) $lang = $GLOBALS['spip_lang']; else $lang=''; return array( 'action' => ($lien ? $lien : generer_url_public('recherche')), # action specifique, ne passe pas par Verifier, ni Traiter 'recherche' => _request('recherche'), 'lang' => $lang ); }
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 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']); $msg = recuperer_fond("modeles/mail_oubli", array('url_reset' => generer_url_public('spip_pass', "{$param}={$cookie}", true, false))); include_spip("inc/notifications"); notifications_envoyer_mails($email, $msg); return _T('pass_recevoir_mail'); } return _T('pass_erreur_probleme_technique'); }
function envoyer_inscription($desc, $nom, $mode, $id) { $nom_site_spip = nettoyer_titre_email($GLOBALS['meta']["nom_site"]); $adresse_site = $GLOBALS['meta']["adresse_site"]; if ($mode == '6forum') { // $adresse_login = generer_url_public('login'); // http://localhost:8888/vacarme_commande/spip.php?page=compte§ion=identification $adresse_login = generer_url_public('compte', 'section=identification'); $msg = 'vacarme_commande:inscription_message_voici1'; } else { $adresse_login = $adresse_site . '/' . _DIR_RESTREINT_ABS; $msg = 'form_forum_voici2'; } $msg = _T('vacarme_commande:inscription_message_auto') . "\n\n" . _T('form_forum_bonjour', array('nom' => $nom)) . "\n\n" . _T($msg, array('nom_site_spip' => $nom_site_spip, 'adresse_site' => $adresse_site . '/')) . "\n\n- " . _T('form_forum_login') . " " . $desc['login'] . "\n- " . _T('form_forum_pass') . " " . $desc['pass'] . "\n-" . _T('vacarme_commande:inscription_message_adresse_login') . " " . $adresse_login . "\n\n" . _T('vacarme_commande:inscription_message_fin') . "\n"; return array("[{$nom_site_spip}] " . _T('form_forum_identifiants'), $msg); }
/** * Generer une facture unique pour une transaction * en gerant le risque de double appel concurent pour la meme transaction * (en principe deja gere en amont de l'appel, mais pas de facon certaine a 100%) * * @param int $id_transaction * @param null|array $options_notif * @return array|bool */ function factures_creer_facture($id_transaction, $options_notif = null) { $id_facture = 0; $no_comptable = ''; $url = ''; // transaction deja en cours de facturation ? // attendons au max 5s pour voir si la facturation se fait entre temps // permet de recuperer le numero de facture $max_wait = 5; while ($row = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction)) and $row['id_facture'] == -1 and $max_wait--) { sleep(1); } // transaction introuvable ou toujours verrouillee ? if (!$row or $row['id_facture'] == -1) { return false; } // deja facture if ($row['id_facture']) { $url = generer_url_public('facture', "id_facture={$id_facture}&hash=" . md5($row['details']), false, false); return array($row['id_facture'], $row['no_comptable'], $url); } // verouiller la facturation de cette transaction sql_updateq("spip_transactions", array('id_facture' => -1), "id_transaction=" . intval($id_transaction)); // creer la facture $details = recuperer_fond('modeles/transaction_details', array('id_transaction' => $id_transaction)); $client = recuperer_fond('modeles/client_adresse_facture', array('id_auteur' => $row['id_auteur'], 'id_transaction' => $id_transaction)); $numeroter_facture = charger_fonction('numeroter_facture', 'inc'); $set = array('id_auteur' => $row['id_auteur'], 'montant_ht' => $row['montant_ht'], 'montant' => $row['montant'], 'montant_regle' => $row['montant_regle'], 'date' => date('Y-m-d H:i:s'), 'date_paiement' => $row['date_paiement'], 'client' => $client, 'details' => $details, 'parrain' => $row['parrain'], 'tracking_id' => $row['tracking_id']); // Envoyer aux plugins $set = pipeline('pre_insertion', array('args' => array('table' => 'spip_factures'), 'data' => $set)); $id_facture = sql_insertq('spip_factures', $set); if ($id_facture) { $no_comptable = $numeroter_facture($id_facture, $set['date']); $set['no_comptable'] = $no_comptable; sql_updateq("spip_factures", array("no_comptable" => $no_comptable), "id_facture=" . intval($id_facture)); sql_updateq("spip_transactions", array("id_facture" => $id_facture), "id_transaction=" . intval($id_transaction)); pipeline('post_insertion', array('args' => array('table' => 'spip_factures', 'id_objet' => $id_facture), 'data' => $set)); // on relit le no_comptable en base au cas ou le pipeline aurait surcharge $no_comptable = sql_getfetsel('no_comptable', 'spip_factures', 'id_facture=' . intval($id_facture)); $url = generer_url_public('facture', "id_facture={$id_facture}&hash=" . md5($set['details']), false, false); if ($options_notif and is_array($options_notif) and $notifications = charger_fonction('notifications', 'inc')) { $options_notif['url_facture'] = $url; $notifications("genererfacture", $id_facture, $options_notif); } } return array($id_facture, $no_comptable, $url); }
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'); }
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; }
/** * ajout cookie + js * @param $flux * @return string */ function socialtags_insert_head($flux) { if (intval($GLOBALS['spip_version_branche']) < 3) { $flux .= socialtags_css(); } // on a besoin de jquery.cookie if (!strpos($flux, 'jquery.cookie.js')) { $flux .= "<script type='text/javascript' src='" . find_in_path('javascript/jquery.cookie.js') . "'></script>\n"; } include_spip('inc/filtres'); if (function_exists('produire_fond_statique')) { $jsFile = produire_fond_statique('socialtags.js'); } else { $jsFile = generer_url_public('socialtags.js'); } $flux .= "<script src='{$jsFile}' type='text/javascript'></script>\n"; return $flux; }
/** * Ajoute les scripts JS et CSS de saisies dans l'espace public * * Ajoute également de quoi gérer le datepicker de la saisie date si * celle-ci est utilisée dans la page. * * @param string $flux * @return string **/ function saisies_affichage_final($flux){ if ( $GLOBALS['html'] // si c'est bien du HTML and ($p = strpos($flux,"<!--!inserer_saisie_editer-->")) !== false // et qu'on a au moins une saisie and strpos($flux,'<head') !== false // et qu'on a la balise <head> quelque part ){ // On insère la CSS devant le premier <link> trouvé if (!$pi = strpos($flux, "<link") AND !$pi=strpos($flux, '</head')) { $pi = $p; // si pas de <link inserer comme un goret entre 2 <li> de saisies } $css = generer_url_public('saisies.css'); $ins_css = "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n"; if (strpos($flux,"saisie_date")!==false){//si on a une saisie de type date, on va charger les css de jquery_ui include_spip("jqueryui_pipelines"); if (function_exists("jqueryui_dependances")){ $ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker")); $theme_css = "jquery.ui.theme"; $ui_css_dir = "css"; // compatibilité SPIP 3.1 et jQuery UI 1.11 $version = explode(".",$GLOBALS['spip_version_branche']); if ($version[0]>3 OR ($version[0]==3 AND $version[1]>0)) { $theme_css = "theme"; $ui_css_dir = "css/ui"; } array_push($ui_plugins,$theme_css); foreach ($ui_plugins as $ui_plug){ $ui_plug_css = find_in_path("$ui_css_dir/$ui_plug.css"); if (strpos($flux,"$ui_css_dir/$ui_plug.css")===false){// si pas déjà chargé $ins_css .= "\n<link rel='stylesheet' href='$ui_plug_css' type='text/css' media='all' />\n"; } } } } $flux = substr_replace($flux, $ins_css, $pi, 0); // On insère le JS à la fin du <head> $pos_head = strpos($flux, '</head'); $js = find_in_path('javascript/saisies.js'); $ins_js = "\n<script type='text/javascript' src='$js'></script>\n"; $flux = substr_replace($flux, $ins_js, $pos_head, 0); } return $flux; }
/** * Se deloger * Pour eviter les CSRF on passe par une etape de confirmation si pas de jeton fourni * avec un autosubmit js pour ne pas compliquer l'experience utilisateur * * Déconnecte l'utilisateur en cours et le redirige sur l'URL indiquée par * l'argument de l'action sécurisée, et sinon sur la page d'accueil * de l'espace public. * */ function action_logout_dist() { $logout = _request('logout'); $url = securiser_redirect_action(_request('url')); // cas particulier, logout dans l'espace public if ($logout == 'public' and !$url) { $url = url_de_base(); } // seul le loge peut se deloger (mais id_auteur peut valoir 0 apres une restauration avortee) if (isset($GLOBALS['visiteur_session']['id_auteur']) and is_numeric($GLOBALS['visiteur_session']['id_auteur']) and isset($GLOBALS['visiteur_session']['statut'])) { // il faut un jeton pour fermer la session (eviter les CSRF) if (!($jeton = _request('jeton')) or !verifier_jeton_logout($jeton, $GLOBALS['visiteur_session'])) { $jeton = generer_jeton_logout($GLOBALS['visiteur_session']); $action = generer_url_action("logout", "jeton={$jeton}"); $action = parametre_url($action, 'logout', _request('logout')); $action = parametre_url($action, 'url', _request('url')); include_spip("inc/minipres"); include_spip("inc/filtres"); $texte = bouton_action(_T('spip:icone_deconnecter'), $action); $texte = "<div class='boutons'>{$texte}</div>"; $texte .= '<script type="text/javascript">document.write("<style>body{visibility:hidden;}</style>");window.document.forms[0].submit();</script>'; $res = minipres(_T('spip:icone_deconnecter'), $texte, '', true); echo $res; return; } include_spip('inc/auth'); auth_trace($GLOBALS['visiteur_session'], '0000-00-00 00:00:00'); // le logout explicite vaut destruction de toutes les sessions if (isset($_COOKIE['spip_session'])) { $session = charger_fonction('session', 'inc'); $session($GLOBALS['visiteur_session']['id_auteur']); spip_setcookie('spip_session', $_COOKIE['spip_session'], time() - 3600); } // si authentification http, et que la personne est loge, // pour se deconnecter, il faut proposer un nouveau formulaire de connexion http if (isset($_SERVER['PHP_AUTH_USER']) and !$GLOBALS['ignore_auth_http'] and $GLOBALS['auth_can_disconnect']) { ask_php_auth(_T('login_deconnexion_ok'), _T('login_verifiez_navigateur'), _T('login_retour_public'), "redirect=" . _DIR_RESTREINT_ABS, _T('login_test_navigateur'), true); } } // Rediriger en contrant le cache navigateur (Safari3) include_spip('inc/headers'); redirige_par_entete($url ? parametre_url($url, 'var_hasard', uniqid(rand()), '&') : generer_url_public('login')); }
/** * Syntaxe raccourcie du plugin * #CALENDRIER_MINI * #CALENDRIER_MINI{#SELF} * #CALENDRIER_MINI{#SELF,#URL_PAGE{calendrier_mini.json}} * * Syntaxe ancienne (ou plugin agenda) * #CALENDRIER_MINI{#ENV{date}} * #CALENDRIER_MINI{#ENV{date},date} * #CALENDRIER_MINI{#ENV{date},date,#SELF} * #CALENDRIER_MINI{#ENV{date},date,#SELF,#URL_PAGE{calendrier_mini.json}} * * Quand l'url json est explicitee dans les arguments, la collecte automatisee de id_rubrique, id_article et id_mot est desactivee * car dans ce cas il suffit simplement de les expliciter sur l'url json pour les prendre en compte * * @param string $date * date automatique collectee par VAR_DATE * @param int $id_rubrique * @param int $id_article * @param int $id_mot * @param null $self_or_date_or_nothing * @param null $urljson_or_var_date_or_nothing * @param null $self_or_nothing * @param null $urljson_or_nothing * @return array */ function balise_CALENDRIER_MINI_dyn($date, $id_rubrique = 0, $id_article = 0, $id_mot = 0, $self_or_date_or_nothing = null, $urljson_or_var_date_or_nothing = null, $self_or_nothing = null, $urljson_or_nothing = null) { $var_date = VAR_DATE; $url = null; $url_json = null; if (!is_null($self_or_date_or_nothing)) { // est-ce une date ou une url ? if (!function_exists('recup_date')) { include_spip('inc/filtres'); } if (!strlen($self_or_date_or_nothing) or preg_match(",^[\\d\\s:-]+\$,", $self_or_date_or_nothing) and list($annee, $mois, $jour, $heures, $minutes, $secondes) = recup_date($self_or_date_or_nothing) and $annee) { // si c'est une date on est dans l'ancienne syntaxe $date = $self_or_date_or_nothing; $var_date = $urljson_or_var_date_or_nothing; $url = $self_or_nothing; $url_json = $urljson_or_nothing; } else { // sinon on est sur la nouvelle syntaxe $url = $self_or_date_or_nothing; $url_json = $urljson_or_var_date_or_nothing; } } $args = array('date' => $date ? $date : date('Y-m'), 'var_date' => $var_date, 'self' => $url ? $url : self()); // si pas de url_json explicite, la renseigner et peupler automatiquement les if (is_null($url_json)) { $url_json = generer_url_public("calendrier_mini.json"); if (!is_null($id_rubrique)) { $args['id_rubrique'] = $id_rubrique; } if (!is_null($id_article)) { $args['id_article'] = $id_article; } if (!is_null($id_mot)) { $args['id_mot'] = $id_mot; } } if (defined('_VAR_MODE') and _VAR_MODE == "recalcul") { $url_json = parametre_url($url_json, 'var_mode', 'recalcul'); } $args['urljson'] = $url_json; /* tenir compte de la langue, c'est pas de la tarte */ return array('formulaires/calendrier_mini', 3600, $args); }