/** * Envoi une requette de conversion a zencoder. * * @param int $id_document l'id du document original * @param int $id_objet */ function zencoder_new_job($id_document) { spip_log('start zencoder_new_job', 'zencoder'); $cwd = getcwd(); chdir(realpath(_DIR_ZENCODER_LIB)); require_once "Services/Zencoder.php"; chdir($cwd); include_spip('inc/config'); include_spip('inc/utils'); $api_key = lire_config('zencoder/api_key'); $document = generer_url_entite_absolue($id_document, 'document'); $url_notification = generer_url_action('zencoder_notification', 'id_document=' . $id_document, true, false); $clip_length = '10'; try { // Initialize the Services_Zencoder class $zencoder = new Services_Zencoder($api_key); // New Encoding Job $encoding_job = $zencoder->jobs->create(array("input" => $document, "outputs" => array(array("label" => "webm", "size" => "640x480", "format" => "webm", "notifications" => array("format" => "json", "url" => $url_notification, "clip_length" => $clip_length)), array("label" => "ogg", "format" => "ogg", "size" => "640x480", "notifications" => array("format" => "json", "url" => $url_notification, "clip_length" => $clip_length)), array("label" => "mp4 low", "size" => "640x480", "notifications" => array("format" => "json", "url" => $url_notification, "clip_length" => $clip_length))))); // Success if we got here spip_log('success- Job ID: ' . $encoding_job->id . ' Output ID:' . $encoding_job->outputs['web']->id, 'zencoder'); } catch (Services_Zencoder_Exception $e) { // If were here, an error occured spip_log('error: ' . print_r($e), 'zencoder'); } return; }
function balise_URL_LOGOUT_dyn($cible) { if (!$GLOBALS['visiteur_session']['login'] and !$GLOBALS['visiteur_session']['statut']) { return ''; } return generer_url_action('logout', "logout=public&url=" . rawurlencode($cible ? $cible : self('&'))); }
function menu_lang_pour_tous($nom, $default) { include_spip('inc/lang'); if ($GLOBALS['spip_lang'] <> $default) { $opt = lang_select($default); # et remplace if ($GLOBALS['spip_lang'] <> $default) { $default = ''; # annule tout choix par defaut if ($opt) lang_select(); } } $opt = liste_options_langues($nom, $default); if (!$opt) return ''; # lien a partir de / $cible = parametre_url(self(), 'lang' , '', '&'); $post = generer_url_action('converser', 'redirect='. rawurlencode($cible), '&'); return array('formulaires/menu_lang', 3600, array('nom' => $nom, 'url' => $post, 'langues' => $opt ) ); }
function action_tester_taille_dist() { if (!autoriser('configurer')) { return; } $taille = _request('arg'); $taille = explode('-', $taille); $GLOBALS['taille_max'] = end($taille); $GLOBALS['taille_min'] = 0; if (count($taille) > 1) { $GLOBALS['taille_min'] = reset($taille); } // si l'intervalle est assez petit, on garde la valeur min if ($GLOBALS['taille_max'] * $GLOBALS['taille_max'] - $GLOBALS['taille_min'] * $GLOBALS['taille_min'] < 50000) { ecrire_meta('max_taille_vignettes', $t = $GLOBALS['taille_min'] * $GLOBALS['taille_min'] * 0.9, 'non'); echo round($t / 1000000, 3) . ' Mpx'; die; } $taille = $GLOBALS['taille_test'] = round(($GLOBALS['taille_max'] + $GLOBALS['taille_min']) / 2); include_spip('inc/filtres'); // des inclusions representatives d'un hit prive et/ou public pour la conso memoire include_spip('public/assembler'); include_spip('public/balises'); include_spip('public/boucles'); include_spip('public/cacher'); include_spip('public/compiler'); include_spip('public/composer'); include_spip('public/criteres'); include_spip('public/interfaces'); include_spip('public/parametrer'); include_spip('public/phraser_html'); include_spip('public/references'); include_spip('inc/presentation'); include_spip('inc/charsets'); include_spip('inc/documents'); include_spip('inc/header'); propre("<doc1>"); // charger propre avec le trairement d'un modele $i = _request('i') + 1; $image_source = chemin_image("test.png"); $GLOBALS['redirect'] = generer_url_action("tester_taille", "i={$i}&arg=" . $GLOBALS['taille_min'] . "-" . $GLOBALS['taille_test']); ob_start('action_tester_taille_error_handler'); filtrer('image_recadre', $image_source, $taille, $taille); $GLOBALS['redirect'] = generer_url_action("tester_taille", "i={$i}&arg={$taille}-" . $GLOBALS['taille_max']); // si la valeur intermediaire a reussi, on teste la valeur maxi qui est peut etre sous estimee $taille = $GLOBALS['taille_max']; filtrer('image_recadre', $image_source, $taille, $taille); $GLOBALS['redirect'] = generer_url_action("tester_taille", "i={$i}&arg={$taille}-" . $GLOBALS['taille_max']); ob_end_clean(); // on est ici, donc pas de plantage echo redirige_formulaire($GLOBALS['redirect']); }
function action_envoyer_inscription_fraap_candidatures($desc, $nom, $prenom, $mode, $options = array()) { $contexte = array_merge($desc, $options); $contexte['nom'] = $nom; $contexte['prenom'] = $prenom; $contexte['mode'] = $mode; $contexte['url_confirm'] = generer_url_action('confirmer_inscription', '', true, true); $contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'email', $desc['email']); $contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'jeton', $desc['jeton']); $message = recuperer_fond('modeles/mail_inscription_candidatures', $contexte); $from = isset($options['from']) ? $options['from'] : null; $head = null; return array("", $message, $from, $head); }
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; }
/** * Verifier un jeton si present, ou envoyer une page le produisant * @param string $logout * @param string $url * @param string $jeton * @return boolean */ function action_logout_secu($logout, $url, $jeton) { if ($jeton AND verifier_jeton_logout($jeton,$GLOBALS['visiteur_session'])) return true; $jeton = generer_jeton_logout($GLOBALS['visiteur_session']); $action = generer_url_action("logout","jeton=$jeton"); $action = parametre_url($action,'logout',$logout); $action = parametre_url($action,'url',$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>'; echo minipres(_T('spip:icone_deconnecter'),$texte,'',true); return false; }
/** * 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')); }
function previsu_redac_boite_infos(&$flux){ if ($flux['args']['type']=='article' AND $id_article=intval($flux['args']['id']) AND $statut = $flux['args']['row']['statut'] AND $statut == 'prepa' AND autoriser('previsualiser')){ $message = _T('previsualiser'); $h = generer_url_action('redirect', "type=article&id=$id_article&var_mode=preview"); $previsu = //icone_inline($message, $h, $image, "rien.gif", $GLOBALS['spip_lang_left']) icone_horizontale($message, $h, "racine-24.gif", "rien.gif",false); if ($p = strpos($flux['data'],'</ul>')){ while($q = strpos($flux['data'],'</ul>',$p+5)) $p=$q; $flux['data'] = substr($flux['data'],0,$p+5).$previsu.substr($flux['data'],$p+5); } else $flux['data'].= $previsu; } return $flux; }
/** * Generer les urls de retour bank * @param array $config * @param string $action * response|cancel|autoresponse * @param string $args * query string * @return mixed|string */ function bank_url_api_retour($config, $action, $args = "") { static $is_api = null; if (is_null($is_api)) { $is_api = false; if (file_exists($f = _DIR_RACINE . ".htaccess")) { lire_fichier($f, $contenu); if (strpos($contenu, 'spip.php?action=api_$1') !== false) { $is_api = true; } } } $presta = $config['presta'] . "-" . bank_config_id($config); if ($is_api) { return generer_url_public('', $args, false, false, "bank.api/{$presta}/{$action}/"); } else { $args = (strlen($args) ? "&" : "") . $args; $args = "bankp=" . $presta . $args; return generer_url_action('bank_' . $action, $args, true, true); } }
/** * Attention: PHP applique urldecode sur $_GET mais pas sur $_POST * cf http://fr.php.net/urldecode#48481 * http://doc.spip.org/@securiser_action_auteur * * @param string $action * @param string $arg * @param string $redirect * @param bool|int|string $mode * -1 : renvoyer action, arg et hash sous forme de array() * true ou false : renvoyer une url, avec & (false) ou & (true) * string : renvoyer un formulaire * @param string|int $att * id_auteur pour lequel generer l'action en mode url ou array() * atributs du formulaire en mode formulaire * @param bool $public * @return array|string */ function securiser_action_auteur($action, $arg, $redirect = "", $mode = false, $att = '', $public = false) { // mode URL ou array if (!is_string($mode)) { $hash = calculer_action_auteur("{$action}-{$arg}", is_numeric($att) ? $att : null); $r = rawurlencode($redirect); if ($mode === -1) { return array('action' => $action, 'arg' => $arg, 'hash' => $hash); } else { return generer_url_action($action, "arg={$arg}&hash={$hash}" . (!$r ? '' : "&redirect={$r}"), $mode, $public); } } // mode formulaire $hash = calculer_action_auteur("{$action}-{$arg}"); $att .= " style='margin: 0px; border: 0px'"; if ($redirect) { $redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", ''', $redirect) . "' />"; } $mode .= $redirect . "\n<input name='hash' type='hidden' value='{$hash}' />\n<input name='arg' type='hidden' value='{$arg}' />"; return generer_form_action($action, $mode, $att, $public); }
/** * Url pour lancer le cron de manière asynchrone si le serveur * le permet * * On se base sur le même code que celui du pipeline affichage final * * Cette fonction est utile pour être appelée depuis un cron UNIX par exemple * car elle retourne tout de suite * * Exemple de tache cron Unix pour un appel toutes les minutes : * "* * * * * curl http://www.mondomaine.tld/spip.php?action=super_cron" */ function action_super_cron_dist() { // Si fsockopen est possible, on lance le cron via un socket // en asynchrone if (function_exists('fsockopen')) { $url = generer_url_action('cron'); $parts = parse_url($url); $fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80, $errno, $errstr, 30); if ($fp) { $out = "GET " . $parts['path'] . "?" . $parts['query'] . " HTTP/1.1\r\n"; $out .= "Host: " . $parts['host'] . "\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); fclose($fp); return; } } // ici lancer le cron par un CURL asynchrone si CURL est présent // TBD return; }
function exec_spiplistes_autocron () { include_spip('inc/spiplistes_api'); spiplistes_debug_log ("exec_autocron()"); $sql_result = sql_select( "id_courrier,total_abonnes,nb_emails_envoyes" , 'spip_courriers' , "statut=".sql_quote(_SPIPLISTES_COURRIER_STATUT_ENCOURS), '', '', 1 ); if(sql_count($sql_result) > 0 ){ $row = sql_fetch($sql_result); // Compter le nombre de mails a envoyer $id_mess = $row['id_courrier']; $nb_inscrits = $row['total_abonnes']; $nb_messages_envoyes = $row['nb_emails_envoyes']; if($nb_inscrits > 0) { echo "<p align='center'> <strong>".round($nb_messages_envoyes/$nb_inscrits *100)." %</strong> (".$nb_messages_envoyes."/".$nb_inscrits.") </p>"; } } else { echo "fin"; } // ?? $action = generer_url_action('cron','&var='.time()); echo ' <div style="background-image: url(\''. $action . '\');"> </div> '; spiplistes_debug_log ("exec_autocron ACTION: $action"); spiplistes_debug_log("fin exec_autocron()"); }
function generer_url_document_dist($id_document, $args = '', $ancre = '') { include_spip('inc/autoriser'); if (!autoriser('voir', 'document', $id_document)) { return ''; } $r = sql_fetsel("fichier,distant", "spip_documents", "id_document=" . intval($id_document)); if (!$r) { return ''; } $f = $r['fichier']; if ($r['distant'] == 'oui') { return $f; } // Si droit de voir tous les docs, pas seulement celui-ci // il est inutilement couteux de rajouter une protection $r = autoriser('voir', 'document'); if ($r and $r !== 'htaccess') { return get_spip_doc($f); } include_spip('inc/securiser_action'); // cette action doit etre publique ! return generer_url_action('acceder_document', $args . ($args ? "&" : '') . 'arg=' . $id_document . ($ancre ? "&ancre={$ancre}" : '') . '&cle=' . calculer_cle_action($id_document . ',' . $f) . '&file=' . rawurlencode($f), true, true); }
function securiser_action_auteur($action, $arg, $redirect="", $mode=false, $att='', $public=false) { static $id_auteur=0, $pass; if (!$id_auteur) { list($id_auteur, $pass) = caracteriser_auteur(); } $hash = _action_auteur("$action-$arg", $id_auteur, $pass, 'alea_ephemere'); if (!is_string($mode)){ $r = rawurlencode($redirect); if ($mode===-1) return array('action'=>$action,'arg'=>$arg,'hash'=>$hash); else return generer_url_action($action, "arg=$arg&hash=$hash" . (!$r ? '' : "&redirect=$r"), $mode, $public); } $att .= " style='margin: 0px; border: 0px'"; if ($redirect) $redirect = "\n\t\t<input name='redirect' type='hidden' value='". str_replace("'", ''', $redirect) ."' />"; $mode .= $redirect . " <input name='hash' type='hidden' value='$hash' /> <input name='arg' type='hidden' value='$arg' />"; return generer_form_action($action, $mode, $att, $public); }
function rejouer_session() { include_spip('inc/filtres'); return http_img_pack('rien.gif', " ", "id='img_session' width='0' height='0'") . http_script("\ndocument.img_session.src='" . generer_url_action('cookie','change_session=oui', true) . "'"); }
/** * Déclenche le cron en asynchrone ou retourne le code HTML pour le déclencher * * Retourne le HTML à ajouter à la page pour declencher le cron * ou rien si on a réussi à le lancer en asynchrone. * * Un verrou (cron.lock) empêche l'exécution du cron plus d'une fois par seconde. * * @uses queue_sleep_time_to_next_job() * @see action_cron() L'URL appelée pour déclencher le cron * * @return string */ function queue_affichage_cron() { $texte = ""; $time_to_next = queue_sleep_time_to_next_job(); // rien a faire si le prochain job est encore dans le futur if ($time_to_next > 0 or defined('_DEBUG_BLOCK_QUEUE')) { return $texte; } // ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent if (file_exists($lock = _DIR_TMP . "cron.lock") and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) { return $texte; } @touch($lock); // il y a des taches en attentes // si depuis plus de 5min, on essaye de lancer le cron par tous les moyens pour rattraper le coup // on est sans doute sur un site qui n'autorise pas http sortant ou avec peu de trafic $urgent = false; if ($time_to_next < -300) { $urgent = true; } $url_cron = generer_url_action('cron', '', false, true); if (!defined('_HTML_BG_CRON_FORCE') or !_HTML_BG_CRON_FORCE) { // methode la plus rapide : // Si fsockopen est possible, on lance le cron via un socket en asynchrone // si fsockopen echoue (disponibilite serveur, firewall) on essaye pas cURL // car on a toutes les chances d'echouer pareil mais sans moyen de le savoir // on passe direct a la methode background-image if (function_exists('fsockopen')) { $parts = parse_url($url_cron); switch ($parts['scheme']) { case 'https': $scheme = 'ssl://'; $port = 443; break; case 'http': default: $scheme = ''; $port = 80; } $fp = @fsockopen($scheme . $parts['host'], isset($parts['port']) ? $parts['port'] : $port, $errno, $errstr, 1); if ($fp) { $timeout = 200; // ms stream_set_timeout($fp, 0, $timeout * 1000); $query = $parts['path'] . ($parts['query'] ? "?" . $parts['query'] : ""); $out = "GET " . $query . " HTTP/1.1\r\n"; $out .= "Host: " . $parts['host'] . "\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); spip_timer('read'); $t = 0; // on lit la reponse si possible pour fermer proprement la connexion // avec un timeout total de 200ms pour ne pas se bloquer while (!feof($fp) and $t < $timeout) { @fgets($fp, 1024); $t += spip_timer('read', true); spip_timer('read'); } fclose($fp); if (!$urgent) { return $texte; } } } elseif (function_exists("curl_init")) { //setting the curl parameters. $ch = curl_init($url_cron); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597 curl_setopt($ch, CURLOPT_NOSIGNAL, 1); // valeur mini pour que la requete soit lancee curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200); // lancer curl_exec($ch); // fermer curl_close($ch); if (!$urgent) { return $texte; } } } // si deja force, on retourne sans rien if (defined('_DIRECT_CRON_FORCE')) { return $texte; } // si c'est un bot // inutile de faire un appel par image background, // on force un appel direct en fin de hit if (defined('_IS_BOT') and _IS_BOT) { define('_DIRECT_CRON_FORCE', true); return $texte; } // en derniere solution, on insere une image background dans la page $texte = '<!-- SPIP-CRON --><div style="background-image: url(\'' . generer_url_action('cron') . '\');"></div>'; return $texte; }
function generer_url_aide_img($args) { return generer_url_action('aide_img', $args, false, true); }
function login_autoriser() { include_spip('inc/autoriser'); if (!autoriser('ecrire')) { $h = generer_url_action('logout', 'logout=prive&url=' . urlencode(self())); return array('message_erreur' => "<h1>" . _T('avis_erreur_visiteur') . "</h1><p>" . _T('texte_erreur_visiteur') . "</p><p class='retour'>[<a href='{$h}'>" . _T('icone_deconnecter') . "</a>]</p>"); } return array(); }
/** * Code à insérer par `inc/presentation` pour rejouer la session * * @note * Pourquoi insère-t-on le src par js et non directement en statique dans le HTML ? * Historiquement, inséré par une balise `<script>` en r424 * puis modifié par `<img>` statique + js en r427 * * @see action_cookie_dist() qui sera appelé * * @return string */ function rejouer_session() { return '<img src="' . generer_url_action('cookie', 'change_session=oui', true) . '" width="0" height="0" alt="" />'; }
function url_vignette_choix($process) { switch ($process) { case 'gd2': if (!function_exists("ImageCreateTrueColor")) { return ''; } case 'gd1': if (!function_exists('ImageGif') and !function_exists('ImageJpeg') and !function_exists('ImagePng')) { return ''; } break; case 'netpbm': if (defined('_PNMSCALE_COMMAND') and _PNMSCALE_COMMAND == '') { return ''; } break; case 'imagick': if (!function_exists('imagick_readimage')) { return ''; } break; case 'convert': if (defined('_CONVERT_COMMAND') and _CONVERT_COMMAND == '') { return ''; } break; } return generer_url_action("tester", "arg={$process}&time=" . time()); }
/** * pas de securite tuante sur .. comme en 1.9.3<br> * * @deprecated depuis SPIP 2.0 * @param string $source Le nom du fichier source * @param string $dest Le nom du fichier de destination * @param boolean $move TRUE si on le déplace * @return boolean|string La destination comme 1.9.3 */ function cfg_deplacer_fichier_upload($source, $dest, $move=false) { // Securite if (substr($dest,0,strlen(_DIR_RACINE))==_DIR_RACINE) $dest = _DIR_RACINE.preg_replace(',\.\.+,', '.', substr($dest,strlen(_DIR_RACINE))); else $dest = preg_replace(',\.\.+,', '.', $dest); if ($move) $ok = @rename($source, $dest); else $ok = @copy($source, $dest); if (!$ok) $ok = @move_uploaded_file($source, $dest); if ($ok) @chmod($dest, _SPIP_CHMOD & ~0111); else { $f = @fopen($dest,'w'); if ($f) { fclose ($f); } else { include_spip('inc/headers'); redirige_par_entete(generer_url_action("test_dirs", "test_dir=". dirname($dest), true)); } @unlink($dest); } return $ok ? $dest : false; }
function exec_rec_mc_dist(){ // elements spip global $connect_statut, $connect_toutes_rubriques, $connect_id_auteur, $couleur_claire, $couleur_foncee; //#plug(11-07) : fonctions requises...(construction de la liste des rubriques, ...) include_spip("inc/rec_mc_inc_fonct"); //#plug(11-07) : Initialisation de l'id rubrique . Mis a -1 pour le premier affichage $rub = -1; //#plug(11-07) : Recupération de l'id rubrique si $_post if (isset($_POST['rub'])) $rub = $_POST['rub']; elseif (isset($_GET['rub'])) $rub = $_GET['rub']; $Refresh = ""; if (isset($_POST['refresh'])) { $Refresh = $_POST['refresh']; } elseif (isset($_GET['refresh'])) { $Refresh = $_GET['refresh']; } //#plug(11-07) : construction des "blocs" include_spip("inc/rec_mc_inc_pres"); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('rmc:titre_page_admin'), "suivi", "rec_mc"); echo "<a name='haut_page'></a><br />"; echo gros_titre(_T('rmc:titre_page_admin'),'',false); echo debut_gauche('', true); //#plug(11-07) : TODO : Etat des lieux... menu_admin() ; creer_colonne_droite(); //#plug(11-07) : vers popup aide bloc_ico_aide_ligne(); //#plug(11-07) : signature echo "<br />"; echo debut_boite_info(true); echo _T('rmc:signature'); echo fin_boite_info(true); echo "<br />"; echo debut_droite('', true); echo debut_cadre_relief( _DIR_IMG_REC_MC."rec_mc-24.png"); echo gros_titre(_T('rmc:titre_config'),'',false); echo _T('rmc:info_config'); echo "<br />"; //#plug(11-07) : verif de l'existence d'au moins une rubrique $r=mysql_query("SELECT * FROM spip_rubriques"); $nb_r=mysql_num_rows($r); //#plug(11-07) : verif de l'existence d'au moins un groupe de mots $g=mysql_query("SELECT * FROM spip_groupes_mots"); $nb_g=mysql_num_rows($g); if($nb_r==0){ echo debut_boite_erreur(_T('rmc:erreur_rubrique')) ; }else if($nb_g==0){ echo debut_boite_erreur(_T('rmc:erreur_groupes_mots')) ; }else{ //#plug(11-07) : Selectionner une rubrique echo debut_cadre_trait_couleur('',true, '', _T('rmc:rubriques')); echo _T('rmc:text_select_rubrique')." <br /><br />"; echo "<form action=\" ".$PHP_SELF." \" method=\"POST\">"; //#plug(11-07) : Commentaire Dom : ma ligne qui merde !!!! ne merde plus!!!!!!!!!!!!!! echo "<select style=\"width:100%;\" name=\"rub\" onchange=\"window.location=('".generer_url_ecrire("rec_mc","rub='+this.options[this.selectedIndex].value").")\">"; if ($rub == -1) echo "<option value=\"-1\" selected><b>"._T('rmc:select_rubrique')."</b>"; else echo "<option value=\"-1\"><b>"._T('rmc:select_rubrique')."</b>"; if ($rub == 0) echo "<option value=\"0\" selected style=\"font-weight:bold\">"._T('rmc:select_ttes_rubriques'); else echo "<option value=\"0\" style=\"font-weight:bold\">"._T('rmc:select_ttes_rubriques'); $query = "SELECT id_parent FROM spip_rubriques order by titre"; $result=spip_query($query); while($row=spip_fetch_array($result)){ $parent_parent=$row['id_parent']; } getenfant(0,$rub); echo "</select><BR>\n"; echo "</form>"; echo fin_cadre_trait_couleur(true); } $idgroupeprec = 0; if ($rub != -1) { echo debut_cadre_trait_couleur ('', true, '', _T('rmc:groupes_mots')); //#plug(11-07) : formulaire - envoi du traitement vers action/rec_mc_ajoutgroupes echo '<form action="'.generer_url_action('rec_mc_ajoutgroupes').'" method="post">'; echo "<input type='hidden' name='redirect' value='".generer_url_ecrire("rec_mc", "rub=".$rub)."' />\n"; echo "<input type='hidden' name='hash' value='".calculer_action_auteur("ajoutgroupes-rien")."' />\n"; echo "<input type='hidden' name='id_auteur' value='".$connect_id_auteur."' />\n"; echo "<input type='hidden' name='rub' value='$rub'>"; if ($rub > -1) { $sql = "SELECT spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre AS titremot, spip_mots.id_mot as id_mot, spip_rmc_rubs_groupes.id_rubrique AS idrub FROM spip_groupes_mots INNER JOIN spip_mots ON spip_mots.id_groupe = spip_groupes_mots.id_groupe INNER JOIN spip_rmc_rubs_groupes ON spip_rmc_rubs_groupes.id_groupe = spip_groupes_mots.id_groupe WHERE id_rubrique = $rub GROUP BY spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre ORDER BY spip_groupes_mots.id_groupe"; } $result = spip_query($sql); $aff_groupes_select=""; $listidgrp = ""; $compt = 0; $nbr = 0; if ($result) { while ($row = mysql_fetch_assoc($result)) { extract($row); if ($idgroupeprec != $id_groupe) { $aff_groupes_select.=" <br /><div style=\"background-color:#ccc; border:1px solid ".$couleur_foncee."; font-size:1.2em; font-weight:bold\"><input type=checkbox name=\"idgrp[]\" value=\"$id_groupe\" checked />$titre</div>"; $nbr = ++$nbr; if ($compt == 0) { $listidgrp .= "$id_groupe"; $compt = 1; $nb_groupes = ++$ng; } else $listidgrp .= ",$id_groupe"; } $s="SELECT id_mot_exclu FROM spip_rmc_mots_exclus WHERE id_mot_exclu=$id_mot AND id_rubrique=$rub"; $r=spip_query($s); $rw=spip_fetch_array($r); if($rw['id_mot_exclu']==$id_mot){ $aff_groupes_select.= "<div style=\"border:1px solid ".$couleur_foncee."; background-color:#eee; font-size:.9em;height:18px;\" ><span style='float:right;color:red;font-weight:bold;'>"._T('rmc:mot_exclu')."<input type=checkbox name='motsexclus[]' value='$id_mot' style='margin:0 2px;padding:0;' checked='checked' /></span> $titremot</div>"; }else{ $aff_groupes_select.= "<div style=\"border:1px solid ".$couleur_foncee."; background-color:#eee; font-size:.9em;height:18px;\" ><span style='float:right;color:red;'>"._T('rmc:mot_exclure')."<input type=checkbox name='motsexclus[]' value='$id_mot' style='margin:0 2px;padding:0;'/></span> $titremot</div>"; } $idgroupeprec = $id_groupe; } mysql_free_result($result); } if ($rub > -1) { if ($listidgrp != "") $sql = "SELECT spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre AS titremot FROM spip_groupes_mots INNER JOIN spip_mots ON spip_mots.id_groupe = spip_groupes_mots.id_groupe WHERE spip_groupes_mots.id_groupe not IN ($listidgrp) GROUP BY spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre ORDER BY spip_groupes_mots.id_groupe"; else $sql = "SELECT spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre AS titremot FROM spip_groupes_mots INNER JOIN spip_mots ON spip_mots.id_groupe = spip_groupes_mots.id_groupe GROUP BY spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre ORDER BY spip_groupes_mots.id_groupe"; } $result = spip_query($sql); $idgroupeprc = 0; $aff_groupes_noselected = ""; $j=0; if ($result) { while ($row = mysql_fetch_assoc($result)) { extract($row); if ($idgroupeprec != $id_groupe) { $aff_groupes_noselected.=" <br /><div style=\"background-color:#ccc; border:1px solid ".$couleur_foncee."; font-size:1.2em; font-weight:bold\"><input type=checkbox name=\"idgrp[]\" value=\"$id_groupe\">$titre</div>"; $nb_groupes_at = ++$j; } $aff_groupes_noselected.= "<div style=\"border:1px solid ".$couleur_foncee."; background-color:#eee; font-size:.9em\" > $titremot</div>"; $idgroupeprec = $id_groupe; } mysql_free_result($result); } //#plug(11-07) : Affichage //#plug(11-07) : Affichage des groupes attribues (deja selectionnes) if($nbr >0){ echo debut_cadre_relief(_DIR_IMG_PACK."groupe-mot-24.gif"); debut_band_titre($couleur_foncee, "verdana3", "bold"); if($idrub==0 ){ echo _T('rmc:groupes_toutes_rubriques'); }else{ echo _T('rmc:groupes_mots_attribues'); } echo fin_bloc(); echo "$aff_groupes_select"; echo fin_cadre_relief(); } //#plug(11-07) : Affichage des groupes non attribues debut_cadre_relief(_DIR_IMG_PACK."groupe-mot-24.gif"); if($nb_groupes_at >0){ debut_band_titre($couleur_foncee, "verdana3", "bold"); echo _T('rmc:groupes_mots_non_attribues'); echo fin_bloc(); }else{ echo _T('rmc:groupes_mots_tous_attribues'); } echo $aff_groupes_noselected; echo fin_cadre_relief(); echo "<input type=\"submit\" name=\"refresh\" value=\"Valider\">"; echo "</form>"; echo fin_cadre_trait_couleur(true); } echo fin_cadre_relief(); echo fin_gauche().fin_page();//fin page }//finexec
function bandeau_gadget_deconnection() { global $spip_lang_right; return "\n<div class='bandeau bandeau_couleur_sous' id='bandeaudeconnecter' style='$spip_lang_right: 0px;'>" . "<a href='" . generer_url_action("logout","logout=prive") . "' class='lien_sous'>"._T('icone_deconnecter')."</a>" . aide("deconnect") . "</div>"; }
/** * 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 * @return array */ function presta_ogone_call_request_dist($id_transaction, $transaction_hash) { 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 $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'); $contexte = array(); $contexte['PSPID'] = ogone_pspid(); $contexte['orderID'] = $id_transaction . "/" . modulo($row['transaction_hash'], 999999); $contexte['operation'] = "SAL"; // c'est un paiement a l'acte immediat // passage en centimes d'euros $contexte['currency'] = "EUR"; $contexte['amount'] = intval(100 * $row['montant']); #if (strlen($montant)<3) # $montant = str_pad($montant,3,'0',STR_PAD_LEFT); $contexte['language'] = ogone_language_code($GLOBALS['spip_lang']); // recuperer l'email $contexte['EMAIL'] = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($row['id_auteur'])); $contexte['CN'] = ""; $contexte['ownerZIP'] = ""; $contexte['owneraddress'] = ""; $contexte['ownercty'] = ""; $contexte['ownertown'] = ""; $contexte['ownertelno'] = ""; // Urls de retour $contexte['accepturl'] = generer_url_action('bank_response', "bankp=ogone&id={$id_transaction};{$transaction_hash}", true, true); $contexte['declineurl'] = generer_url_action('bank_cancel', "bankp=ogone&id={$id_transaction};{$transaction_hash}", true, true); $contexte['cancelurl'] = generer_url_action('bank_cancel', "bankp=ogone&id={$id_transaction};{$transaction_hash}", true, true); $contexte['exceptionurl'] = generer_url_action('bank_response', "bankp=ogone&id={$id_transaction};{$transaction_hash}", true, true); $hidden = ""; foreach ($contexte as $k => $v) { $hidden .= "<input type='hidden' name='{$k}' value='" . str_replace("'", "'", $v) . "' />"; } include_spip('inc/filtres_mini'); $contexte = array('hidden' => $hidden, 'action' => _OGONE_URL, 'backurl' => url_absolue(self()), 'id_transaction' => $id_transaction); return $contexte; }
/** * entete php_auth (est-encore utilise ?) * * @param string $pb * @param string $raison * @param string $retour * @param string $url * @param string $re * @param string $lien */ function ask_php_auth($pb, $raison, $retour = '', $url = '', $re = '', $lien = '') { @Header("WWW-Authenticate: Basic realm=\"espace prive\""); @Header("HTTP/1.0 401 Unauthorized"); $corps = ""; $public = generer_url_public(); $ecrire = generer_url_ecrire(); $retour = $retour ? $retour : _T('icone_retour'); $corps .= "<p>{$raison}</p>[<a href='{$public}'>{$retour}</a>] "; if ($url) { $corps .= "[<a href='" . generer_url_action('cookie', "essai_auth_http=oui&{$url}") . "'>{$re}</a>]"; } if ($lien) { $corps .= " [<a href='{$ecrire}'>" . _T('login_espace_prive') . "</a>]"; } include_spip('inc/minipres'); echo minipres($pb, $corps); exit; }
/** * Gère le traitement des actions des formulaires utilisant l'Actionneur * * @param array $actions * Liste des actions a faire (id_paquet => action) * @param array $retour * Tableau de retour du CVT dans la partie traiter * @param string $redirect * URL de retour * @return void **/ function svp_actionner_traiter_actions_demandees($actions, &$retour, $redirect = null) { $actionneur = new Actionneur(); $actionneur->ajouter_actions($actions); $actionneur->verrouiller(); $actionneur->sauver_actions(); $redirect = $redirect ? $redirect : generer_url_ecrire('admin_plugin'); $retour['redirect'] = generer_url_action('actionner', 'redirect=' . urlencode($redirect)); set_request('_todo', ''); $retour['message_ok'] = _T("svp:action_patienter"); }
function presta_paypal_payer_acte_dist($id_transaction, $transaction_hash) { return recuperer_fond('presta/paypal/payer/acte', array('url_return' => generer_url_action('bank_response', 'bankp=paypal', true, true), 'url_notify' => generer_url_action('bank_autoresponse', 'bankp=paypal', true, true), 'url_cancel' => generer_url_action('bank_cancel', 'bankp=paypal', true, true), 'id_transaction' => $id_transaction, 'transaction_hash' => $transaction_hash)); }
function presta_cheque_payer_acte_dist($id_transaction, $transaction_hash) { return recuperer_fond('presta/cheque/payer/acte', array('action' => generer_url_action('bank_response', 'bankp=cheque', true, true), 'id_transaction' => $id_transaction, 'transaction_hash' => $transaction_hash)); }
function personnel_accueil($coockcookie) { global $spip_lang_left, $connect_id_auteur, $connect_id_rubrique ; $res = ''; if (count($connect_id_rubrique)) { $res = sql_allfetsel("R.id_rubrique, R.titre, R.descriptif", "spip_auteurs_rubriques AS A LEFT JOIN spip_rubriques AS R ON A.id_rubrique=R.id_rubrique", "A.id_auteur=$connect_id_auteur", "", "titre"); foreach ($res as $k => $r) { $res[$k] = "<a title='" . typo($r['descriptif']) . "' href='" . generer_url_ecrire('naviguer', "id_rubrique=" .$r['id_rubrique']) . "'>" . typo($r['titre']) . '</a>'; } $res = "<ul style='margin:0px; padding-$spip_lang_left: 20px; margin-bottom: 5px;'>\n<li>" . join("</li>\n<li>", $res) . "\n</li></ul>"; } // // Supprimer le cookie, se deconnecter... // if ($coockcookie) { $lien = generer_url_action('cookie', "cookie_admin=non&url=".rawurlencode('./'. _SPIP_ECRIRE_SCRIPT)); $t = _T('icone_supprimer_cookie'); $lien = icone_horizontale($t, $lien, "cookie-24.gif", "supprimer-sansdanger.gif", false); if ($GLOBALS['spip_display'] != 1) $lien = str_replace('</td></tr></table>', aide("cookie").'</td></tr></table>', $lien); } // // Modification du cookie // else { $cookie = rawurlencode("@$connect_login"); $retour = rawurlencode('./' . _SPIP_ECRIRE_SCRIPT); $lien = generer_url_action('cookie', "cookie_admin=$cookie&url=$retour"); $lien = _T('info_activer_cookie'). aide ("cookie"). icone_horizontale(_T('icone_activer_cookie'), $lien,"cookie-24.gif", "", false); } $titre_cadre = afficher_plus(generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur")); $titre_cadre .= majuscules(typo($GLOBALS['visiteur_session']['nom'])); return debut_cadre_relief("fiche-perso-24.gif",true, '',$titre_cadre) . $res . "<div class='info_cookie'>$lien</div>" . fin_cadre_relief(true); }