Beispiel #1
0
function plugins_afficher_plugin_dist($url_page, $plug_file, $checked, $actif, $expose = false, $class_li = "item", $dir_plugins = _DIR_PLUGINS)
{
    static $id_input = 0;
    static $versions = array();
    $force_reload = _request('var_mode') == 'recalcul';
    $get_infos = charger_fonction('get_infos', 'plugins');
    $info = $get_infos($plug_file, $force_reload, $dir_plugins);
    $prefix = $info['prefix'];
    $cfg = "";
    $checkable = $dir_plugins !== _DIR_PLUGINS_DIST;
    $nom = plugin_nom($info, $dir_plugins, $plug_file);
    if (!plugin_version_compatible($info['compatibilite'], $GLOBALS['spip_version_branche'], 'spip')) {
        $info['slogan'] = _T('plugin_info_non_compatible_spip');
        $erreur = http_img_pack("plugin-dis-32.png", _T('plugin_info_non_compatible_spip'), " class='picto_err'", _T('plugin_info_non_compatible_spip'));
        $class_li .= " disabled";
        $checkable = false;
    } elseif (isset($info['erreur'])) {
        $class_li .= " error";
        $erreur = http_img_pack("plugin-err-32.png", _T('plugin_info_erreur_xml'), " class='picto_err'", _T('plugin_info_erreur_xml')) . "<div class='erreur'>" . join('<br >', $info['erreur']) . "</div>";
        $checkable = false;
    } elseif (isset($GLOBALS['erreurs_activation_raw'][$dir_plugins . $plug_file])) {
        $class_li .= " error";
        $erreur = http_img_pack("plugin-err-32.png", _T('plugin_impossible_activer', array('plugin' => $nom)), " class='picto_err'", _T('plugin_impossible_activer', array('plugin' => $nom))) . "<div class='erreur'>" . implode("<br />", $GLOBALS['erreurs_activation_raw'][$dir_plugins . $plug_file]) . "</div>";
    } else {
        $cfg = $actif ? plugin_bouton_config($plug_file, $info, $dir_plugins) : "";
    }
    // numerotons les occurrences d'un meme prefix
    $versions[$prefix] = $id = isset($versions[$prefix]) ? $versions[$prefix] + 1 : '';
    $class_li .= ($actif ? " actif" : "") . ($expose ? " on" : "");
    return "<li id='{$prefix}{$id}' class='{$class_li}'>" . ((!$checkable and !$checked) ? '' : plugin_checkbox(++$id_input, $plug_file, $checked)) . plugin_resume($info, $dir_plugins, $plug_file, $url_page) . $cfg . $erreur . (($dir_plugins !== _DIR_PLUGINS_DIST and plugin_est_installe($plug_file)) ? plugin_desintalle($plug_file, $nom) : '') . "<div class='details'>" . (!$expose ? '' : affiche_bloc_plugin($plug_file, $info)) . "</div>" . "</li>";
}
Beispiel #2
0
function tw_traiter_autoliens($r)
{
    if (count($r) < 2) {
        return reset($r);
    }
    list($tout, $l) = $r;
    if (!$l) {
        return $tout;
    }
    // reperer le protocole
    if (preg_match(',^(https?):/*,S', $l, $m)) {
        $l = substr($l, strlen($m[0]));
        $protocol = $m[1];
    } else {
        $protocol = 'http';
    }
    // valider le nom de domaine
    if (!preg_match(_EXTRAIRE_DOMAINE, $l)) {
        return $tout;
    }
    // les ponctuations a la fin d'une URL n'en font certainement pas partie
    // en particulier le "|" quand elles sont dans un tableau a la SPIP
    preg_match('/^(.*?)([,.;?|]?)$/', $l, $k);
    $url = $protocol . '://' . $k[1];
    $lien = charger_fonction('lien', 'inc');
    // deux fois <html> car inc_lien echappe un coup et restaure ensuite
    // => un perd 1 <html>
    $r = $lien($url, "<html><html>{$url}</html></html>", '', '', '', 'nofollow') . $k[2];
    // ajouter la class auto
    $r = inserer_attribut($r, 'class', trim(extraire_attribut($r, 'class') . ' auto'));
    // si l'original ne contenait pas le 'http:' on le supprime du clic
    return $m ? $r : str_replace('>http://', '>', $r);
}
function type_urls_URL_objet_exec() {
	global $type_urls;
	$type = _request('type_objet');
	$trouver_table = charger_fonction('trouver_table', 'base');
	$desc = $trouver_table(table_objet($type));
	$table = $desc['table'];
	$champ_titre = $desc['titre']?$desc['titre']:'titre';
	$col_id =  @$desc['key']["PRIMARY KEY"];
	if (!$col_id) return false; // Quand $type ne reference pas une table
	$id_objet = intval(_request('id_objet'));

	// chercher dans la table des URLS
	include_spip('base/abstract_sql');
	//  Recuperer une URL propre correspondant a l'objet.
	$row = sql_fetsel("U.url, O.$champ_titre", "$table AS O LEFT JOIN spip_urls AS U ON (U.type='$type' AND U.id_objet=O.$col_id)", "O.$col_id=$id_objet", '', 'U.date DESC', 1);
	if (!$row) return false; # Quand $id_objet n'est pas un numero connu
	// Calcul de l'URL complete
	$url = str_replace('.././','../',generer_url_entite($id_objet, $type, '', '', true));
	$row2 = !strlen($url2 = $row['url'])
		// si l'URL n'etait pas presente en base, maintenant elle l'est !
		?sql_fetsel("url", "spip_urls", "id_objet=$id_objet AND type='$type'", '', 'date DESC', 1)
		:array('url'=>$url2);
	include_spip('inc/charsets');
	//  titre || url complete || type d'URLs || URL recalculee || url propre en base
	echo charset2unicode($row['titre']).'||'.$url.'||'.$type_urls.'||'.$row2['url'].'||'.$url2;
}
function action_dereferencer_traduction_rubrique_dist() {
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();

	list($type, $id_objet) = explode('/', $arg);
	if (!$type = objet_type($type) or !$id_objet = intval($id_objet)) {
		if (!_AJAX) {
			include_spip('inc/minipres');
			minipres('Arguments incompris');
		}
		else {
			spip_log('Arguments incompris dans action dereferencer_traduction_rubrique');
			return false;
		}
	}

	$objet = table_objet($type);
	$_id_objet = id_table_objet($objet);
	$table = table_objet_sql($objet);

	$id_trad_old = sql_getfetsel('id_trad', $table, "$_id_objet = " . sql_quote($id_objet));

	if ($id_trad_old) {
		include_spip('inc/modifier');
		modifier_contenu($objet, $id_objet, array('invalideur' => "id='$objet/$id_objet'"), array('id_trad' => 0));

		// si la deliaison fait qu'il ne reste plus que la source
		// dans le groupe de traduction on lui remet l'id_trad a 0
		if (1 == $nb_dans_groupe = sql_countsel($table, array('id_trad = ' . sql_quote($id_trad_old)))) {
			modifier_contenu($objet, $id_trad_old, array('invalideur' => "id='$objet/$id_trad_old'"), array('id_trad' => 0));
		}
	}
}
Beispiel #5
0
function action_editer_message_dist($arg=null) {

	if (is_null($arg)){
		$securiser_action = charger_fonction('securiser_action', 'inc');
		$arg = $securiser_action();
	}

	if (preg_match(',^(\d+)$,', $arg, $r))
		action_editer_message_post_vieux($arg); 
	elseif (preg_match(',^-(\d+)$,', $arg, $r))
		action_editer_message_post_supprimer($r[1]);
	elseif (preg_match(',^(\d+)\W$,', $arg, $r))
		action_editer_message_post_choisir($r[1]);	  
	elseif (preg_match(',^(\d+)\W@(\d+)$,', $arg, $r))
		action_editer_message_post_ajouter($r[1], $r[2]);	  
	elseif (preg_match(',^(\d+)\W:(\d+)$,', $arg, $r))
		action_editer_message_post_vu($r[1], $r[2]);	  
	elseif (preg_match(',^(\d+)\W-(\d+)$,', $arg, $r))
		action_editer_message_post_retirer($r[1], $r[2]);	  
	elseif (preg_match(',^(\d+)\W(\w+)$,', $arg, $r))
		action_editer_message_post_envoyer($r[1], $r[2]);	  
	elseif (preg_match(',^(\w+)$,', $arg, $r))
		action_editer_message_post_nouveau($arg);
	elseif (preg_match(',^(\w+)\W(\d+)$,', $arg, $r))
		action_editer_message_post_nouveau($r[1], $r[2]);
	elseif (preg_match(',^(\w+)\W(\d+-\d+-\d+)$,', $arg, $r))
		action_editer_message_post_nouveau($r[1], '', $r[2]);
	else 	spip_log("action_editer_message_dist $arg pas compris");
}
function action_instituer_langue_rubrique_dist() {

	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();
	$changer_lang = _request('changer_lang');

	list($id_rubrique, $id_parent) = preg_split('/\W/', $arg);

	if ($changer_lang
	AND $id_rubrique>0
	AND $GLOBALS['meta']['multi_rubriques'] == 'oui'
	AND ($GLOBALS['meta']['multi_secteurs'] == 'non' OR $id_parent == 0)) {
		if ($changer_lang != "herit")
			sql_updateq('spip_rubriques', array('lang'=>$changer_lang, 'langue_choisie'=>'oui'), "id_rubrique=$id_rubrique");
		else {
			if ($id_parent == 0)
				$langue_parent = $GLOBALS['meta']['langue_site'];
			else {
				$langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=$id_parent");
			}
			sql_updateq('spip_rubriques', array('lang'=>$langue_parent, 'langue_choisie'=>'non'), "id_rubrique=$id_rubrique");
		}
		include_spip('inc/rubriques');
		calculer_langues_rubriques();

		// invalider les caches marques de cette rubrique
		include_spip('inc/invalideur');
		suivre_invalideur("id='id_rubrique/$id_rubrique'");
	}
}
Beispiel #7
0
function inc_informer_dist($id, $col, $exclus, $rac, $type, $do = 'aff')
{
    include_spip('inc/texte');
    if ($type == "rubrique") {
        $row = sql_fetsel("titre, descriptif", "spip_rubriques", "id_rubrique = {$id}");
        if ($row) {
            $titre = typo($row["titre"]);
            $descriptif = propre($row["descriptif"]);
        } else {
            $titre = _T('info_racine_site');
        }
    } else {
        $titre = '';
    }
    $res = '';
    if ($type == "rubrique" and $GLOBALS['spip_display'] != 1 and isset($GLOBALS['meta']['image_process'])) {
        if ($GLOBALS['meta']['image_process'] != "non") {
            $chercher_logo = charger_fonction('chercher_logo', 'inc');
            if ($res = $chercher_logo($id, 'id_rubrique', 'on')) {
                list($fid, $dir, $nom, $format) = $res;
                include_spip('inc/filtres_images_mini');
                $res = image_reduire("<img src='{$fid}' alt='' />", 100, 48);
                if ($res) {
                    $res = "<div style='float: " . $GLOBALS['spip_lang_right'] . "; margin-" . $GLOBALS['spip_lang_right'] . ": -5px; margin-top: -5px;'>{$res}</div>";
                }
            }
        }
    }
    $rac = spip_htmlentities($rac);
    # ce lien provoque la selection (directe) de la rubrique cliquee
    # et l'affichage de son titre dans le bandeau
    $titre = strtr(str_replace("'", "&#8217;", str_replace('"', "&#34;", textebrut($titre))), "\n\r", "  ");
    $js_func = $do . '_selection_titre';
    return "<div style='display: none;'>" . "<input type='text' id='" . $rac . "_sel' value='{$id}' />" . "<input type='text' id='" . $rac . "_sel2' value=\"" . entites_html($titre) . "\" />" . "</div>" . "<div class='informer' style='padding: 5px; border-top: 0px;'>" . (!$res ? '' : $res) . "<p><b>" . safehtml($titre) . "</b></p>" . (!$descriptif ? '' : "<div>" . safehtml($descriptif) . "</div>") . "<div style='text-align: " . $GLOBALS['spip_lang_right'] . ";'>" . "<input type='submit' class='fondo' value='" . _T('bouton_choisir') . "'\nonclick=\"{$js_func}('{$titre}',{$id},'selection_rubrique','id_parent'); return false;\" />" . "</div>" . "</div>";
}
Beispiel #8
0
function action_spiplistes_journal () {
	
	global $connect_toutes_rubriques, $connect_login, $connect_statut, $spip_lang_rtl;
	
	// spiplistes_log("controle appel action");
	
	if (!$connect_statut) {
		$auth = charger_fonction('auth', 'inc');
		$auth = $auth();
	}

	$securiser_action = charger_fonction('securiser_action', 'inc');
	$args = $securiser_action();

	$autoriser_lire = (autoriser('webmestre','','',$connect_id_auteur));
	
	if($autoriser_lire) {

		$result = spiplistes_journal_lire(_SPIPLISTES_PREFIX);
	
		echo($result);
		
		exit(0);
	}
}
Beispiel #9
0
function exec_description_outil_dist() {
cs_log("INIT : exec_description_outil_dist() - Preparation du retour par Ajax (donnees transmises par GET)");
	$script = _request('script');
	$outil = _request('outil');
cs_log(" -- outil = $outil - script = $script");
	cs_minipres(!preg_match('/^\w+$/', $script));
	// ici on commence l'initialisation de tous les outils
	global $outils, $metas_vars, $metas_outils;
	include_spip('cout_utils');
	// remplir $outils (et aussi $cs_variables qu'on n'utilise pas ici);
	include_spip('config_outils');
cs_log(" -- exec_description_outil_dist() - Appel de config_outils.php : nb_outils = ".count($outils));
	// installer les outils
	cs_installe_outils();

cs_log(" -- appel de charger_fonction('description_outil', 'inc') et de description_outil($outil, $script) :");
	include_spip('inc/cs_outils');
	$description_outil = charger_fonction('description_outil', 'inc');
	$descrip = cs_initialisation_d_un_outil($outil, $description_outil, true);
	cs_init_plugins();

cs_log(" FIN : exec_description_outil_dist() - Appel maintenant de ajax_retour() pour afficher la ligne de configuration de l'outil");	
	include_spip('inc/texte');
	include_spip('cout_fonctions'); // fonctions pour les pipelines
	ajax_retour(propre($descrip));
}
function plugins_afficher_nom_plugin_dist($url_page, $plug_file, $checked, $actif, $expose = false, $class_li = "item", $dir_plugins = _DIR_PLUGINS)
{
    static $id_input = 0;
    static $versions = array();
    $erreur = false;
    $s = "";
    $get_infos = charger_fonction('get_infos', 'plugins');
    $info = $get_infos($plug_file, false, $dir_plugins);
    // numerotons les occurences d'un meme prefix
    $versions[$info['prefix']] = isset($versions[$info['prefix']]) ? $versions[$info['prefix']] + 1 : '';
    $id = $info['prefix'] . $versions[$info['prefix']];
    $class = $class_li;
    $class .= $actif ? " actif" : "";
    $class .= $expose ? " on" : "";
    $erreur = isset($info['erreur']);
    if ($erreur) {
        $class .= " error";
    }
    $s .= "<li id='{$id}' class='{$class}'>";
    // Cartouche Resume
    $s .= "<div class='resume'>";
    $prefix = $info['prefix'];
    $dir = "{$dir_plugins}{$plug_file}/lang/{$prefix}";
    $desc = plugin_propre($info['description'], $dir);
    $url_stat = parametre_url($url_page, "plugin", $dir_plugins . $plug_file);
    $s .= "<strong class='nom'>" . typo($info['nom']) . "</strong>";
    $s .= " <span class='version'>" . $info['version'] . "</span>";
    $s .= " <span class='etat'> - " . plugin_etat_en_clair($info['etat']) . "</span>";
    $s .= "</div>";
    if ($erreur) {
        $s .= "<div class='erreur'>" . join('<br >', $info['erreur']) . "</div>";
    }
    $s .= "</li>";
    return $s;
}
function action_supprimer_tous_orphelins()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    //on recupere le contexte pour ne supprimer les orphelins que de ce dernier
    list($media, $distant, $statut, $sanstitre) = explode('/', $arg);
    //critere sur le media
    if ($media) {
        $select = "media=" . sql_quote($media);
    }
    //critere sur le distant
    if ($distant) {
        $where[] = "distant=" . sql_quote($distant);
    }
    //critere sur le statut
    if ($statut) {
        $where[] = "statut REGEXP " . sql_quote("({$statut})");
    }
    //critere sur le sanstitre
    if ($sanstitre) {
        $where[] = "titre=''";
    }
    //on isole les orphelins
    $select = sql_get_select("DISTINCT id_document", "spip_documents_liens as oooo");
    $cond = "spip_documents.id_document NOT IN ({$select})";
    $where[] = $cond;
    $ids_doc_orphelins = sql_select("id_document", "spip_documents", $where);
    $supprimer_document = charger_fonction('supprimer_document', 'action');
    while ($row = sql_fetch($ids_doc_orphelins)) {
        $supprimer_document($row['id_document']);
        // pour les orphelins du contexte, on traite avec la fonction existante
    }
}
Beispiel #12
0
function install_etape_4_dist()
{
    // creer le repertoire cache, qui sert partout !
    if (!@file_exists(_DIR_CACHE)) {
        $rep = preg_replace(',' . _DIR_TMP . ',', '', _DIR_CACHE);
        $rep = sous_repertoire(_DIR_TMP, $rep, true, true);
    }
    echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
    echo info_progression_etape(4, 'etape_', 'install/');
    echo "<div class='success'><b>" . _T('info_derniere_etape') . "</b><p>" . _T('info_utilisation_spip') . "</p></div>";
    echo "<p>" . _T('plugin_info_plugins_dist_1', array('plugins_dist' => "<tt>" . joli_repertoire(_DIR_PLUGINS_DIST) . "</tt>")) . "</p>";
    // installer les extensions
    include_spip('inc/plugin');
    $afficher = charger_fonction("afficher_liste", 'plugins');
    echo $afficher(self(), liste_plugin_files(_DIR_PLUGINS_DIST), array(), array(), _DIR_PLUGINS_DIST, 'afficher_nom_plugin');
    plugin_installes_meta();
    // mettre a jour si necessaire l'adresse du site
    // securite si on arrive plus a se loger
    include_spip('inc/config');
    appliquer_adresse_site('');
    // aller a la derniere etape qui clos l'install et redirige
    $suite = "\n<input type='hidden' name='etape' value='fin' />" . bouton_suivant(_T('login_espace_prive'));
    echo generer_form_ecrire('install', $suite);
    echo install_fin_html();
}
Beispiel #13
0
/**
 * Sauvegarder par morceaux
 * 
 * @param string $arg
 */
function action_restaurer_dist($arg = null)
{
    if (!$arg) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
    }
    $status_file = $arg;
    define('_DUMP_STATUS_FILE', $status_file);
    $status_file = _DIR_TMP . basename($status_file) . ".txt";
    if (!lire_fichier($status_file, $status) or !($status = unserialize($status))) {
        include_spip('inc/headers');
        echo redirige_formulaire(generer_url_ecrire("restaurer", 'status=' . _DUMP_STATUS_FILE, '', true, true));
    } else {
        utiliser_langue_visiteur();
        $archive = "<br />" . joli_repertoire($status['archive']);
        $action = _T('dump:info_restauration_sauvegarde', array('archive' => $archive));
        $admin = charger_fonction('admin', 'inc');
        echo $admin('restaurer', $action, "", true);
    }
    // forcer l'envoi du buffer par tous les moyens !
    echo str_repeat("<br />\r\n", 256);
    while (@ob_get_level()) {
        @ob_flush();
        @flush();
        @ob_end_flush();
    }
}
Beispiel #14
0
/**
 * @param array $config
 * @param int $id_transaction
 * @param string $transaction_hash
 * @param array $options
 * @return array|string
 */
function presta_sips_payer_acte_dist($config, $id_transaction, $transaction_hash, $options = array())
{
    $call_request = charger_fonction('request', 'presta/sips/call');
    $contexte = $call_request($id_transaction, $transaction_hash, $config);
    $contexte = array_merge($options, $contexte);
    return recuperer_fond('presta/sips/payer/acte', $contexte);
}
Beispiel #15
0
/**
 * Exec de la page de destruction des tables de SPIP
**/
function exec_base_delete_all_dist()
{
    include_spip('inc/autoriser');
    if (!autoriser('detruire')) {
        include_spip('inc/minipres');
        echo minipres();
    } else {
        include_spip('base/dump');
        $res = base_lister_toutes_tables('', array(), array(), true);
        if (!$res) {
            include_spip('inc/minipres');
            spip_log("Erreur base de donnees");
            echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique') . "<p><tt>" . sql_errno() . " " . sql_error() . "</tt></p>");
        } else {
            $res = base_saisie_tables('delete', $res);
            include_spip('inc/headers');
            $res = "\n<ol style='text-align:left'><li>\n" . join("</li>\n<li>", $res) . '</li></ol>';
            $admin = charger_fonction('admin', 'inc');
            $res = $admin('delete_all', _T('titre_page_delete_all'), $res);
            if (!$res) {
                redirige_url_ecrire('install', '');
            } else {
                echo $res;
            }
        }
    }
}
Beispiel #16
0
/**
 * il faut avoir un id_transaction et un transaction_hash coherents
 * pour se premunir d'une tentative d'appel exterieur
 *
 *
 * @return array
 */
function presta_virement_call_response()
{
    // recuperer la reponse en post et la decoder
    $id_transaction = _request('id_transaction');
    $transaction_hash = _request('hash');
    $mode = 'virement';
    if (!($row = sql_fetsel('*', 'spip_commandes_transactions', 'id_transaction=' . intval($id_transaction)))) {
        spip_log("id_transaction {$id_transaction} non trouve", 'gratuit.' . _LOG_ERREUR);
        return array($id_transaction, false);
    }
    if ($transaction_hash != $row['transaction_hash']) {
        spip_log("id_transaction {$id_transaction}, hash {$transaction_hash} non conforme", 'gratuit.' . _LOG_ERREUR);
        return array($id_transaction, false);
    }
    if ($row['statut'] == 'ok') {
        spip_log("Check:Transaction {$id_transaction} deja validee", "virement");
        return array($id_transaction, true);
    }
    // si pages publiques, c'est le client qui demande à payer par virement
    if (!test_espace_prive()) {
        $bank_recoit_notification = charger_fonction('recoit_notification', 'bank');
        return bank_recoit_notification($id_transaction, $transaction_hash, $mode);
        //retourne $id_transaction,true
    }
    return array($id_transaction, false);
}
Beispiel #17
0
/**
 * Un exec d'acces interdit
 *
 * @param string $message
 */
function exec_403_dist($message = '')
{
    $exec = _request('exec');
    $titre = "exec_{$exec}";
    $navigation = "";
    $extra = "";
    if (!$message) {
        $message = _L("Vous n'avez pas le droit d'acc&eacute;der à la page <b>@exec@</b>.", array('exec' => _request('exec')));
    }
    $contenu = "<h1 class='grostitre'>" . _T('info_acces_interdit') . "</h1>" . $message;
    if (_request('var_zajax')) {
        include_spip('inc/actions');
        ajax_retour($contenu);
    } else {
        include_spip('inc/presentation');
        // alleger les inclusions avec un inc/presentation_mini
        $commencer_page = charger_fonction('commencer_page', 'inc');
        echo $commencer_page($titre);
        echo debut_gauche("403_{$exec}", true);
        echo recuperer_fond('prive/squelettes/navigation/dist', array());
        echo pipeline('affiche_gauche', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => ''));
        echo creer_colonne_droite("403", true);
        echo pipeline('affiche_droite', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => ''));
        echo debut_droite("403", true);
        echo pipeline('affiche_milieu', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => $contenu));
        echo fin_gauche(), fin_page();
    }
}
/**
 * http://code.spip.net/@action_copier_local_post
 *
 * @param  $id_document
 * @return bool|mixed|string
 */
function action_copier_local_post($id_document)
{
    // Il faut la source du document pour le copier
    $row = sql_fetsel("mode,fichier, descriptif, credits", "spip_documents", "id_document={$id_document}");
    $source = $row['fichier'];
    include_spip('inc/distant');
    // pour 'copie_locale'
    $fichier = copie_locale($source);
    if ($fichier) {
        $fichier = _DIR_RACINE . $fichier;
        $files[] = array('tmp_name' => $fichier, 'name' => basename($fichier));
        $ajouter_documents = charger_fonction('ajouter_documents', 'action');
        spip_log("convertit doc {$id_document} en local: {$source} => {$fichier}");
        $liste = array();
        $ajouter_documents($id_document, $files, '', 0, $row['mode'], $liste);
        spip_unlink($fichier);
        // ajouter l'origine du document aux credits
        include_spip('action/editer_document');
        document_modifier($id_document, array('credits' => ($row['credits'] ? $row['credits'] . ', ' : '') . $source));
        return true;
    } else {
        spip_log("echec copie locale {$source}");
    }
    return _T('medias:erreur_copie_fichier', array('nom' => $source));
}
/**
 * Installation/maj des tables petitions et signatures
 *
 * @param string $nom_meta_base_version
 * @param string $version_cible
 */
function petitions_upgrade($nom_meta_base_version, $version_cible)
{
    // cas particulier :
    // si plugin pas installe mais que la table existe
    // considerer que c'est un upgrade depuis v 1.0.0
    // pour gerer l'historique des installations SPIP <=2.1
    if (!isset($GLOBALS['meta'][$nom_meta_base_version])) {
        $trouver_table = charger_fonction('trouver_table', 'base');
        if ($desc = $trouver_table('spip_signatures') and isset($desc['field']['id_article'])) {
            ecrire_meta($nom_meta_base_version, '1.0.0');
        }
        // si pas de table en base, on fera une simple creation de base
    }
    $maj = array();
    $maj['create'] = array(array('maj_tables', array('spip_petitions', 'spip_signatures')));
    $maj['1.1.0'] = array(array('sql_alter', "TABLE spip_petitions DROP PRIMARY KEY"));
    $maj['1.1.1'] = array(array('sql_alter', "TABLE spip_petitions ADD UNIQUE id_article (id_article)"));
    $maj['1.1.2'] = array(array('sql_alter', "TABLE spip_petitions ADD id_petition BIGINT(21) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST"), array('sql_alter', "TABLE spip_petitions ADD PRIMARY KEY (id_petition)"));
    $maj['1.1.3'] = array(array('sql_alter', "TABLE spip_petitions ADD statut VARCHAR (10) DEFAULT 'publie' NOT NULL"));
    $maj['1.1.4'] = array(array('sql_alter', "TABLE spip_signatures ADD id_petition bigint(21) DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_signatures ADD INDEX id_petition (id_petition)"), array('sql_updateq', 'spip_signatures', array('id_petition' => -1)));
    $maj['1.1.5'] = array(array('upgrade_index_signatures'));
    $maj['1.1.6'] = array(array('sql_alter', "TABLE spip_signatures DROP INDEX id_article"), array('sql_alter', "TABLE spip_signatures DROP id_article"));
    include_spip('base/upgrade');
    maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
Beispiel #20
0
/**
 * Appeler le presta bancaire si celui-ci dispose d'une methode dans son API pour resilier un abonnement
 * @param string $abonne_uid
 * @param string $mode_paiement
 * @return bool
 *   renvoie false si le presta bancaire indique un echec, true dans tous les autres cas
 */
function abos_resilier_notify_bank($abonne_uid, $mode_paiement = null)
{
    if (!$mode_paiement) {
        $mode_paiement = sql_getfetsel("mode", "spip_transactions", "abo_uid=" . sql_quote($abonne_uid, '', 'text'), "", "id_transaction DESC");
    }
    spip_log("abos/resilier_notify_bank abonne_uid={$abonne_uid} mode={$mode_paiement}", "abos_resil");
    $ok = true;
    // notifier au presta bancaire si besoin
    if ($mode_paiement and $abonne_uid) {
        include_spip("inc/bank");
        if (!($config = bank_config($mode_paiement, true)) or !isset($config['presta']) or !($presta = $config['presta'])) {
            spip_log("abos/resilier_notify_bank presta inconnu pour mode={$mode_paiement}", "abos_resil" . _LOG_ERREUR);
        }
        if ($presta and $presta_resilier = charger_fonction('resilier_abonnement', "presta/{$presta}/call", true)) {
            $ok = $presta_resilier($abonne_uid);
            if (!$ok) {
                spip_log("Resiliation abo " . $abonne_uid . " refuse par le prestataire", 'abos_resil' . _LOG_ERREUR);
            }
        } else {
            spip_log("abos/resilier_notify_bank : pas de methode resilier_abonnement pour le presta {$presta}", "abos_resil" . _LOG_INFO_IMPORTANTE);
        }
        if (!$ok) {
            bank_simple_call_resilier_abonnement($abonne_uid, $mode_paiement);
            // TODO ajouter un message a l'abonnement pour le feedback user
            spip_log("Envoi email de desabo " . $abonne_uid . " au webmestre", 'abos_resil' . _LOG_INFO_IMPORTANTE);
            // neanmoins, si plus d'echeance prevue, on peut finir
            // (cas d'un abos deja resilie fin de mois qu'on veut forcer a resilier immediatement)
            // TODO eventuel
        }
    }
    return $ok;
}
Beispiel #21
0
function action_iextras_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    // droits
    include_spip('inc/autoriser');
    if (!autoriser('configurer', 'iextra')) {
        include_spip('inc/minipres');
        echo minipres();
        exit;
    }
    @(list($arg, $id_extra_ou_table, $champ) = explode('/', $arg));
    // actions possibles
    if (!in_array($arg, array('associer_champ', 'supprimer_champ'))) {
        include_spip('inc/minipres');
        echo minipres(_T('iextras:erreur_action', array("action" => $arg)));
        exit;
    }
    // cas de l'association d'un champ existant
    if ($arg == 'associer_champ' and $table = $id_extra_ou_table and $champ) {
        $extra_id = action_associer_champ_sql_comme_champ_extra($table, $champ);
    }
    // cas de la suppression d'un champ existant
    if ($arg == 'supprimer_champ' and $table = $id_extra_ou_table and $champ) {
        action_supprimer_champ_sql($table, $champ);
    }
}
Beispiel #22
0
function formulaires_editer_balade_traiter_dist($id_collection = 'new', $retour = '')
{
    $message = array();
    // récupérer le rang des articles de la balade et le mettre à jour
    $rangs = _request('rang');
    foreach ($rangs as $rang => $id_article) {
        $rang = $rang + 1;
        $ok = sql_updateq('spip_collections_liens', array('rang' => intval($rang)), "objet='article' AND id_objet = {$id_article}");
    }
    // éditer le gis associé
    if ($action_editer = charger_fonction("editer_gis", 'action', true)) {
        list($id, $err) = $action_editer(_request('id_gis'));
    }
    // ne pas polluer l'url de retour avec des paramètres inutiles
    set_request('id_gis');
    set_request('id_objet');
    // invalider le cache
    include_spip('inc/invalideur');
    suivre_invalideur("id='gis/{$id}");
    // rediriger sur l'url de retour passée en paramètre
    if ($retour) {
        include_spip('inc/headers');
        $message['redirect'] = redirige_formulaire($retour);
    }
    return $message;
}
Beispiel #23
0
/**
 * Contexte du formulaire
 * Mots-cles dans les forums :
 * Si la variable de personnalisation $afficher_groupe[] est definie
 * dans le fichier d'appel, et si la table de reference est OK, proposer
 * la liste des mots-cles
 * #FORMULAIRE_FORUM seul calcule (objet, id_objet) depuis la boucle parente
 * #FORMULAIRE_FORUM{#SELF} pour forcer l'url de retour
 * #FORMULAIRE_FORUM{#SELF, article, 3} pour forcer l'objet et son identifiant
 * http://code.spip.net/@balise_FORMULAIRE_FORUM
 *
 * @param Object $p
 * @return Object
 */
function balise_FORMULAIRE_FORUM($p)
{
    /**
     * On recupere $objet et $id_objet depuis une boucle englobante si possible
     * Sinon, on essaie aussi de recuperer des id_xx dans l'URL qui pourraient indiquer
     * sur quoi le formulaire porte.
     * Enfin, on pourra aussi forcer objet et id_objet depuis l'appel du formulaire
     */
    $i_boucle = $p->nom_boucle ? $p->nom_boucle : $p->id_boucle;
    $_id_objet = $p->boucles[$i_boucle]->primary;
    $_type = $p->boucles[$i_boucle]->id_table;
    /**
     * On essaye de trouver les forums en fonction de l'environnement
     * pour cela, on recupere l'ensemble des id_xxx possibles dans l'env
     */
    $ids = forum_get_objets_depuis_env();
    $ids = array_values($ids);
    $obtenir = array($_id_objet, 'id_forum', 'ajouter_mot', 'ajouter_groupe', 'afficher_texte');
    if ($ids) {
        $obtenir = array_merge($obtenir, $ids);
    }
    $p = calculer_balise_dynamique($p, 'FORMULAIRE_FORUM', $obtenir, array("'{$_type}'", count($ids)));
    // Ajouter le code d'invalideur specifique aux forums
    include_spip('inc/invalideur');
    if ($i = charger_fonction('code_invalideur_forums', '', true)) {
        $p->code = $i($p, $p->code);
    }
    return $p;
}
function action_supprimer_adhcoti_dist()
{
    $debug1 = "DEBUG plugin JR : action/supprimer_adhcoti.php - action_supprimer_adhcoti_dist - Pt01 - <br />";
    echo "<br />", $debug1;
    adhclub_log("{$debug1}.", true);
    echo "id_coti= {$id_coti}.<br />";
    adhclub_log("id_coti= {$id_coti}", true);
    echo "FIN ", $debug1;
    adhclub_log("{$debug1} FIN.", true);
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    $debug1 = "DEBUG plugin JR : action/supprimer_adhcoti.php - action_supprimer_adhcoti_dist - Pt12 - <br />";
    echo "<br />", $debug1;
    adhclub_log("{$debug1}.", true);
    echo "id_coti= {$id_coti}.<br />";
    adhclub_log("id_coti= {$id_coti}", true);
    echo "args= {$args}.<br />";
    adhclub_log("args= {$args}", true);
    echo "FIN ", $debug1;
    adhclub_log("{$debug1} FIN.", true);
    if ($id_coti = intval($arg) and autoriser('supprimer', 'adhcoti', $id_coti)) {
        include_spip('action/editer_adhcoti');
        adhclub_supprime_adhcoti($id_coti);
    }
}
function action_factures_export_csv_mensuel_dist()
{
    $securiser_action = charger_fonction("securiser_action", "inc");
    $date = $securiser_action();
    $t = strtotime($date);
    $date_debut = date('Y-m-01 00:00:00', $t);
    $t = strtotime('+1 month', strtotime($date_debut));
    $t = strtotime('+5 day', $t);
    $date_fin = date('Y-m-01 00:00:00', $t);
    $entetes = array('ID', 'Date', 'No', 'Client', 'HT', 'TTC', 'Paye', 'Date paiement', 'Commande');
    $factures = sql_allfetsel("id_facture,date,no_comptable,id_auteur,montant_ht,montant,montant_regle,date_paiement", "spip_factures", "date>=" . sql_quote($date_debut) . " AND date<" . sql_quote($date_fin), '', 'id_facture');
    foreach ($factures as $k => $facture) {
        $factures[$k]['date'] = date('d/m/Y', strtotime($facture['date']));
        $factures[$k]['date_paiement'] = date('d/m/Y', strtotime($facture['date_paiement']));
        $nom = sql_getfetsel('nom', 'spip_auteurs', 'id_auteur=' . intval($facture['id_auteur']));
        $factures[$k]['id_auteur'] = trim($nom . " #" . $facture['id_auteur']);
        $factures[$k]['commande'] = '';
        if ($trans = sql_fetsel("*", "spip_transactions", "id_facture=" . intval($facture['id_facture'])) and $id_commande = intval($trans['id_commande'])) {
            $reference = sql_getfetsel('reference', 'spip_commandes', 'id_commande=' . intval($id_commande));
            $factures[$k]['commande'] = trim($reference . " #" . $trans['id_commande']);
        }
    }
    $factures = array_map('array_values', $factures);
    $nom = $GLOBALS['meta']['nom_site'] . ' Factures ' . date('Y-m');
    $exporter_csv = charger_fonction('exporter_csv', 'inc');
    $exporter_csv($nom, $factures, ',', $entetes, true);
}
Beispiel #26
0
function action_desinstaller_plugin_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    list($dir_plugins, $plugin) = explode("::", $arg);
    $dir_type = "_DIR_PLUGINS";
    if (defined('_DIR_PLUGINS_SUPPL') and $dir_plugins == _DIR_PLUGINS_SUPPL) {
        $dir_type = "_DIR_PLUGINS_SUPPL";
    }
    $installer_plugins = charger_fonction('installer', 'plugins');
    $infos = $installer_plugins($plugin, 'uninstall', $dir_type);
    if ($infos and !$infos['install_test'][0]) {
        include_spip('inc/plugin');
        ecrire_plugin_actifs(array($plugin), false, 'enleve');
        $erreur = '';
    } else {
        $erreur = 'erreur_plugin_desinstalation_echouee';
    }
    if ($redirect = _request('redirect')) {
        include_spip('inc/headers');
        if ($erreur) {
            $redirect = parametre_url($redirect, 'erreur', $erreur);
        }
        $redirect = str_replace('&amp;', '&', $redirect);
        redirige_par_entete($redirect);
    }
}
Beispiel #27
0
function exec_agenda_evenements_dist(){
	/*$ajouter_id_article = intval(_request('ajouter_id_article'));
	$flag_editable = article_editable($ajouter_id_article);*/

	/*$annee = intval(_request('annee'));
	$mois = intval(_request('mois'));
	$jour = intval(_request('jour'));
	$date = date("Y-m-d", time());
	if ($annee&&$mois&&$jour)
		$date = date("Y-m-d", strtotime("$annee-$mois-$jour"));*/

	$commencer_page = charger_fonction('commencer_page', 'inc');
	$out = $commencer_page(_T('agenda:tous_les_evenements'), "agenda", "calendrier");
	$out .= barre_onglets("calendrier", "agenda");
	
	$contexte = array();
	foreach($_GET as $key=>$val)
		$contexte[$key] = $val;

	$out .= debut_gauche("agenda",true);

	$out .=  recuperer_fond("prive/navigation/agenda_evenements",$contexte);
	
	$out .= debut_droite('agenda',true);

	$out .=  recuperer_fond("prive/contenu/agenda_evenements",$contexte);
	
	$out .= fin_gauche('agenda',true);
	$out .= fin_page();

	echo $out;
}
function action_zengarden_activer_theme_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    if (strncmp('defaut:', $arg, 7) == 0) {
        $dir_theme = _DIR_RACINE . substr($arg, 7);
        $flux = pipeline('zengarden_activer_theme', array('args' => array('dir' => $dir_theme, 'action' => 'effacer'), 'data' => true));
        if ($flux) {
            include_spip('inc/meta');
            effacer_meta("zengarden_theme");
        }
    } elseif (strncmp('apercu:', $arg, 7) == 0) {
        $theme = substr($arg, 7);
        $dir_theme = _DIR_RACINE . $theme;
        if (is_dir($dir_theme)) {
            $flux = pipeline('zengarden_activer_theme', array('args' => array('dir' => $dir_theme, 'action' => 'apercevoir'), 'data' => true));
            if ($flux) {
                include_spip('inc/cookie');
                spip_setcookie('spip_zengarden_theme', $theme);
            }
        }
    } elseif (strncmp('activation:', $arg, 11) == 0) {
        $theme = substr($arg, 11);
        $dir_theme = _DIR_RACINE . $theme;
        if (is_dir($dir_theme)) {
            $flux = pipeline('zengarden_activer_theme', array('args' => array('dir' => $dir_theme, 'action' => 'activer'), 'data' => true));
            if ($flux) {
                include_spip('inc/meta');
                ecrire_meta("zengarden_theme", $theme);
            }
        }
    }
}
/**
 * Plugin SkelEditor
 * Editeur de squelette en ligne
 * (c) 2007-2010 erational
 * Licence GPL-v3
 *
 */

function action_skeleditor_new_from_dist(){
	$securiser_action = charger_fonction('securiser_action','inc');
	$arg = $securiser_action();

	// $arg est le fichier que l'on veut personaliser
	if (strncmp($arg,_DIR_RACINE,strlen(_DIR_RACINE)!==0))
		$arg = _DIR_RACINE.$arg;

	include_spip('inc/skeleditor');
	$file = skeleditor_nom_copie($arg);
	if ($file){
		include_spip('inc/skeleditor');
		$path_base = skeleditor_path_editable();
		list($chemin,) = skeleditor_cree_chemin($path_base, $file);
		if ($chemin){
			$file = basename($file);

			if (!file_exists($chemin . $file)) {
				lire_fichier($arg, $contenu);
				ecrire_fichier($chemin . $file, skeleditor_commente_copie($arg,$contenu));
			}

			if (file_exists($f=$chemin.$file))
				$GLOBALS['redirect'] = parametre_url(_request('redirect'),'f',$f);
		}
	}

}
Beispiel #30
0
/**
 * Enregistrer le reglement effectif d'une transaction
 * On peut passer ici 2 fois pour une meme transaction :
 * - lors de la notification serveur a serveur
 * - lors du retour de l'internaute par redirection depuis le presta bancaire
 *
 * @param int $id_transaction
 * @param array $options
 *   string message
 *   array row_prec
 *   bool notifier
 * @return bool
 */
function bank_rembourser_transaction_dist($id_transaction, $options = array())
{
    $message = isset($options['message']) ? $options['message'] : "";
    $notifier = isset($options['notifier']) ? $options['notifier'] : true;
    if (!isset($options['row_prec'])) {
        $options['row_prec'] = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction));
    }
    $row_prec = $options['row_prec'];
    // ne pas jouer 2 fois le traitement du remboursement
    if (!$row_prec or $row_prec['statut'] !== 'ok') {
        return false;
    }
    // et on le pose aussitot
    sql_updateq('spip_transactions', array('statut' => 'rembourse'), "id_transaction=" . intval($id_transaction));
    $notifier = ($notifier and $row_prec['statut'] != 'rembourse');
    $message = trim($row_prec['message'] . "\n" . trim($message));
    // ensuite un pipeline de traitement, notification etc...
    $message = pipeline('bank_traiter_remboursement', array('args' => array('id_transaction' => $id_transaction, 'notifier' => $notifier, 'avant' => $row_prec, 'options' => $options), 'data' => $message));
    sql_updateq("spip_transactions", array('message' => $message, 'finie' => 1), "id_transaction=" . intval($id_transaction));
    // notifier aux admins avec un ticket caisse
    if ($notifier) {
        $bank_editer_ticket_admin = charger_fonction('bank_editer_ticket_admin', 'inc');
        $bank_editer_ticket_admin($id_transaction, "REMBOURSEMENT Transaction");
    }
    return true;
}