Beispiel #1
0
/**
 * 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;
}
Beispiel #2
0
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('&')));
}
Beispiel #3
0
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
		)
	);
}
Beispiel #4
0
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);
}
Beispiel #6
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;
}
Beispiel #7
0
/**
 * 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;
}
Beispiel #8
0
/**
 * 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;
}
Beispiel #10
0
/**
 * 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);
    }
}
Beispiel #11
0
/**
 * 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 &amp; (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("'", '&#39;', $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);
}
Beispiel #12
0
/**
 * 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;
}
Beispiel #13
0
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()");	
 
}
Beispiel #14
0
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);
}
Beispiel #15
0
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("'", '&#39;', $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);
}
Beispiel #16
0
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) .  "'");
}
Beispiel #17
0
/**
 * 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;
}
Beispiel #18
0
function generer_url_aide_img($args)
{
    return generer_url_action('aide_img', $args, false, true);
}
Beispiel #19
0
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();
}
Beispiel #20
0
/**
 * 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());
}
Beispiel #22
0
	/**
	 * 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;
	}
Beispiel #23
0
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
Beispiel #24
0
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>";
}
Beispiel #25
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
 * @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("'", "&#39;", $v) . "' />";
    }
    include_spip('inc/filtres_mini');
    $contexte = array('hidden' => $hidden, 'action' => _OGONE_URL, 'backurl' => url_absolue(self()), 'id_transaction' => $id_transaction);
    return $contexte;
}
Beispiel #26
0
/**
 * 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");
}
Beispiel #28
0
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));
}
Beispiel #29
0
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));
}
Beispiel #30
0
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);
}