Exemple #1
0
function wha_check_offer_dist($id_abonnement)
{
    $res = spip_query('SELECT * FROM spip_abonnements WHERE id_abonnement=' . intval($id_abonnement));
    if (!($row = spip_fetch_array($res))) {
        return false;
    }
    if ($row['mode_paiement'] != 'wha' or !($uoid = $row['abonne_uid'])) {
        spip_log("wha_check_offer :Erreur : abonnement {$id_abonnement} n'a pas ete souscrit avec wha (ou pas d'uoid)", 'wha_abo_check');
        return false;
    }
    if (!($confirm = $row['confirm']) or !($confirm = unserialize($confirm))) {
        spip_log("wha_check_offer :Erreur : abonnement {$id_abonnement} n'a pas d'url node enregistree", 'wha_abo_check');
        return false;
    }
    $config = array('MERCHANT_ID' => $confirm['partner'], 'KEY_ID' => $confirm['key'], 'node' => $confirm['node']);
    $url_check = wha_url_check_abo($uoid, 'love', $config);
    include_spip('inc/distant');
    $ack = @recuperer_page($url_check);
    spip_log($t = "wha_check_offer : reponse a {$url_check} : {$ack}", 'wha_abo_check');
    if (!$ack or !($unsign = wha_unsign($ack)) or !($args = wha_extract_args(reset($unsign)))) {
        spip_log($t = "wha_check_offer : pas de reponse valide {$url_check} : {$ack}", 'wha_abo_check');
        return null;
    }
    if (isset($args['c']) and $args['c'] == 'ack') {
        return true;
    }
    if (isset($args['e']) and in_array($args['e'], array(0, 1, 14, 15))) {
        return false;
    }
    return null;
}
Exemple #2
0
function getenfant($leparent,$rubselected){
	static $i = 0, $premier = 1;
	
	$i++;
 	$query="SELECT * FROM spip_rubriques WHERE id_parent='$leparent' ORDER BY titre";
 	$result = spip_query($query);

	while($row=spip_fetch_array($result)){
		$my_rubrique=$row['id_rubrique'];
		$titre=typo($row['titre']);
		$style = "";

		$espace="";
		for ($count=1;$count<$i;$count++){
			$espace.="&nbsp;&nbsp;&nbsp; ";
		}

		switch ($i) {
		case 1:
			$espace= "";
			$style .= "font-weight: bold;";
			break;
		case 2:
			$style .= "color: #202020;";
			break;
		case 3:
			$style .= "color: #404040;";
			break;
		case 4:
			$style .= "color: #606060;";
			break;
		case 5:
			$style .= "color: #808080;";
			break;
		default;
			$style .= "color: #A0A0A0;";
			break;
		}
		if (!(($pospoint = strpos($titre,'.')) === FALSE)) {
			$titre = substr($titre,$pospoint + 2);
		}
		$titre = substr($titre,0, 50); // largeur maxi
		
		//if ($i == 1 && !$premier) {
		$option = "<option value='$my_rubrique' style=\"$style\"";
		
		if ($rubselected == $my_rubrique) {
			$option .= " selected";
		}
		echo "$option>$espace".$titre."</option>\n";
	
		$premier = 0;
		getenfant($my_rubrique,$rubselected);
	}
	$i=$i-1;
}
Exemple #3
0
function maj_1_934()
{
    // attention, en cas de mutualisation _DIR_IMG contient quelque chose comme sites/urldusite/IMG/
    // essayons en ne prenant que le dernier segment
    $dir_img = basename(_DIR_IMG) . '/';
    $res = spip_query("SELECT fichier FROM spip_documents WHERE fichier LIKE " . _q($dir_img . '%') . " LIMIT 0,1");
    if (!($row = spip_fetch_array($res))) {
        //Êsinon on essaye avec le chemin complet
        // il faut donc verifier qu'on a bien le bon nom de repertoire
        $dir_img = substr(_DIR_IMG, strlen(_DIR_RACINE));
    }
    $n = strlen($dir_img) + 1;
    spip_query("UPDATE spip_documents SET `fichier`=substring(fichier,{$n}) WHERE `fichier` LIKE " . _q($dir_img . '%'));
}
function cs_titre_sql($table, $where) {
	$titre = cs_titre_champ($table);
	// Utiliser la bonne requete en fonction de la version de SPIP
	if(function_exists('sql_getfetsel') && function_exists('table_objet_sql')) {
		// SPIP 2.0
		if($r = sql_getfetsel($titre, table_objet_sql($table), $where))
			return $r;
	} else {
		if($r = spip_query("SELECT $titre FROM spip_$table WHERE $where"))
			// s'il existe un champ, on le retourne
			if($row = spip_fetch_array($r)) return $row[$titre];
	}
	// sinon, rien !
	return '';
}
function affvisit()
{
    $query = 'SELECT SUM(visites) AS total_absolu FROM spip_visites';
    $result = spip_query($query);
    $visites_today = 0;
    if ($row = spip_fetch_array($result)) {
        $total_absolu = $row['total_absolu'];
    }
    $query = 'SELECT visites FROM spip_visites WHERE date=NOW()';
    $result = spip_query($query);
    if ($row = @spip_fetch_array($result)) {
        $visites_today = $row['visites'];
    }
    $total_gen = $total_absolu + $visites_today;
    return $total_gen;
}
Exemple #6
0
function _action_auteur($action, $id_auteur, $nom_alea)
{
    if (!$id_auteur) {
        global $connect_id_auteur, $connect_pass;
        $id_auteur = $connect_id_auteur;
        $pass = $connect_pass;
    } else {
        $result = spip_query("SELECT password FROM lcm_author WHERE id_author={$id_auteur}");
        if ($result) {
            if ($row = spip_fetch_array($result)) {
                $pass = $row['password'];
            }
        }
    }
    $alea = read_meta($nom_alea);
    return md5($action . $id_auteur . $pass . $alea);
}
function type_urls_URL_objet_191_exec() {
	global $type_urls;
	$type = _request('type_objet');
	$table = $type.($type=='syndic'?'':'s');
	$id_objet = intval(_request('id_objet'));
	$r0 = "SELECT url_propre, titre FROM spip_$table WHERE id_$type=$id_objet";
	$r = spip_query($r0);
	if ($r AND $r = spip_fetch_array($r)) { $url_1 = $r['url_propre']; $titre = $r['titre']; }
	if(!function_exists($fct = 'generer_url_'.($type=='syndic'?'site':$type))) {
		if($f = include_spip('urls/'.$type_urls, false))
			include_once($f);
	}
	$url = function_exists($fct)?$fct($id_objet):'??';
	$r = spip_query($r0);
	if ($r AND $r = spip_fetch_array($r)) $url_2 = $r['url_propre'];
	// url propre en base || titre || url complete || type d'URLs || URL recalculee
	include_spip('inc/charsets');
	echo _request('format')=='iframe'
		?"<span style='font-family:Verdana,Arial,Sans,sans-serif; font-size:10px;'>[<a href='../$url' title='$url' target='_blank'>"._T('couteau:urls_propres_lien').'</a>]</span>'

		:$url_1.'||'.charset2unicode($titre).'||'.$url.'||'.$type_urls.'||'.$url_2;
}
Exemple #8
0
function balise_FORMULAIRE_CONTACT_dyn($id_machin)
{
    /* c’est ici qu’on met le traitement des données (insertion en base etc).
       Elle reçoit les valeures retournées par la fonction _stat et doit retourner soit :
        * un message d’erreur
        * un tableau représentant un squelette SPIP :
             1. le nom du fond (e.g. "formulaires/formulaire_forum")
             2. le délais
             3. un tableau des paramètres à passer à ce squelette (ensuite accessible par #ENV)
       On peut acceder ici aux variables postées par le formulaire en utilisation la fonction _request('name'); et faire des traitements 
       en fonction de celles ci pour faire l’insertion en base, envoyer un mail etc...
    	*/
    global $_FILES, $_HTTP_POST_FILES;
    // ces variables sont indispensables pour récuperer les documents joints
    // Récupération de id de la rubrique en cours
    $rubrique = intval(_request('id_rubrique'));
    // on recuperer l'id de l'auteur anonymous
    $connect_id_auteur = intval(_request('id_auteur'));
    // si il n'est pas dans la base => plugins openpublishing mal installé
    if (!$connect_id_auteur) {
        echo "Attention votre URL ne comporte pas d'id_auteur !";
        die("Veuillez modifier l'appelle à cette page pour y inclure cet identifiant auteur");
    }
    // récupération des variables du formulaire HTML
    // données actions
    $previsualiser = _request('previsualiser');
    $valider = _request('valider');
    $media = _request('media');
    $abandonner = _request('abandonner');
    // on quitte et renvoie vers le sommaire
    if ($abandonner) {
        $retour = '<div align="center"> <h3>Vous avez abandonn&eacute; la cr&eacute;ation d\'un article. <br /> <br /> Aucne information na &eacute;t&eacute; enregistr&eacute;e.</h3> </div>';
        $message = '<META HTTP-EQUIV="refresh" content="3; url=spip.php?page=rubrique&amp;id_rubrique=' . $rubrique . '">';
        $message = $message . $retour;
        return $message;
    }
    // on recupere l'id article (sinon on créer un nouveau article à chaque prévisualisation ou ajout de document ...
    $article = intval(stripslashes(_request('article')));
    // données pour formulaire document
    $formulaire_documents = stripslashes(_request('formulaire_documents'));
    $doc = stripslashes(_request('doc'));
    $type_doc = stripslashes(_request('type'));
    // donnée article
    $surtitre = stripslashes(_request('surtitre'));
    $titre = stripslashes(_request('titre'));
    $soustitre = stripslashes(_request('soustitre'));
    $descriptif = stripslashes(_request('descriptif'));
    $nom_site = stripslashes(_request('nom_site'));
    $url_site = stripslashes(_request('url_site'));
    $chapo = stripslashes(_request('chapo'));
    $texte = stripslashes(_request('texte'));
    $ps = stripslashes(_request('ps'));
    // déclarations de variables supplémentaires (pour la fonction ajout_document)
    $documents_actifs = array();
    // autres variables
    $lang = _request('var_lang');
    $nom = 'changer_lang';
    lang_dselect();
    $langues = liste_options_langues($nom, $lang);
    // remise à zero
    $formulaire_previsu = '';
    $bouton = '';
    $mess_error = '';
    $erreur_document = 0;
    // filtrage des zones de texte si elles sont emplies
    if ($titre) {
        $titre = entites_html($titre);
    }
    // on demande un nouvel identifiant
    if ($previsualiser || $media || $valider) {
        if (!$article) {
            $article = op_request_new_id($connect_id_auteur);
        }
    }
    // l'auteur demande la publication de son article
    if ($valider) {
        // statut de l'article : proposé
        $statut = 'prop';
        /****** préparation de la mise en base de donnée 	 ********/
        // on recupere le secteur et la langue associée
        $s = spip_query("SELECT id_secteur, lang FROM spip_rubriques WHERE id_rubrique = '{$rubrique}' ");
        if ($r = spip_fetch_array($s)) {
            $id_secteur = $r["id_secteur"];
            $lang = $r["lang"];
            // L'article existe déjà, on fait donc un UPDATE, et non un INSERT
            $retour = spip_query('UPDATE spip_articles SET titre = ' . spip_abstract_quote($titre) . ',	id_rubrique = ' . spip_abstract_quote($rubrique) . ',	texte = ' . spip_abstract_quote($texte) . ',	statut = ' . spip_abstract_quote($statut) . ',	lang = ' . spip_abstract_quote($lang) . ',	id_secteur = ' . spip_abstract_quote($id_secteur) . ',	ps =' . spip_abstract_quote($ps) . ',  nom_site =' . spip_abstract_quote($nom_site) . ',  url_site =' . spip_abstract_quote($url_site) . ',  surtitre =' . spip_abstract_quote($surtitre) . ',  soustitre =' . spip_abstract_quote($soustitre) . ',  chapo =' . spip_abstract_quote($chapo) . ',  descriptif =' . spip_abstract_quote($descriptif) . ',	date = NOW()' . ',	date_redac = NOW()' . ',	date_modif = NOW()' . ' WHERE id_article = ' . spip_abstract_quote($article));
            if ($retour == 1) {
                // tout c'est bien passé
                $retour = '';
            } else {
                $retour = "Erreur lors de l'insertion de votre article dans la base de donn&eacute;e, veuillez contactez les responsables du site";
            }
        }
        $retour = '<div align="center"> <h3>Votre article a bien &eacute;t&eacute; enregistr&eacute;. <br /> <br /> Il sera publi&eacute; apr&egrave;s validation.</h3> </div>';
        $message = '<META HTTP-EQUIV="refresh" content="3; url=spip.php?page=rubrique&amp;id_rubrique=' . $rubrique . '">';
        $message = $message . $retour;
        return $message;
    } else {
        // statut de l'article : en préparation
        $statut = "prepa";
        // si l'auteur demande la prévisualisation
        if ($previsualiser) {
            // quelques petites vérifications
            if (strlen($titre) < 3) {
                $erreur .= _T('forum_attention_trois_caracteres');
            }
            if (!$erreur) {
                $bouton = _T('Proposer');
            }
            // on rempli le formulaire de prévisualisation
            $formulaire_previsu = inclure_balise_dynamique(array('formulaires/FORMULAIRE_CONTACT_previsu', 0, array('date_redac' => $date_redac, 'titre' => interdire_scripts(typo($titre)), 'texte' => propre($texte), 'ps' => propre($ps), 'nom_site' => propre($nom_site), 'url_site' => propre($url_site), 'surtitre' => propre($surtitre), 'soustitre' => propre($soustitre), 'chapo' => propre($chapo), 'descriptif' => propre($descriptif), 'erreur' => $erreur)), false);
            // aucune idée de ce que c'est, mais ça à l'air important
            $formulaire_previsu = preg_replace("@<(/?)f(orm[>[:space:]])@ism", "<\\1no-f\\2", $formulaire_previsu);
        }
        // si l'auteur ajoute un documents
        if ($media) {
            // compatibilité php < 4.1
            if (!$_FILES) {
                $_FILES = $GLOBALS['HTTP_POST_FILES'];
            }
            // récupération des variables
            $fichier = $_FILES['doc']['name'];
            $size = $_FILES['doc']['size'];
            $tmp = $_FILES['doc']['tmp_name'];
            $type = $_FILES['doc']['type'];
            $error = $_FILES['doc']['error'];
            // vérification si upload OK
            if (!is_uploaded_file($tmp)) {
                echo $error;
                $mess_error = "Erreur d'upload ! le fichier temporaire est introuvable. <br /> Il ce peut que vous tentiez d'uploader un fichier trop volumineux. <br /> La taille maximale autoris&eacute;e est de 5 Mo";
                $erreur_document = 1;
            } else {
                inc_ajouter_documents_dist($tmp, $fichier, "article", $article, $type_doc, $id_document, &$documents_actifs);
            }
        }
        // cas d'un nouvel article ou re-affichage du formulaire
        // Gestion des documents
        $bouton = "Ajouter un nouveau document";
        $formulaire_documents = inclure_balise_dynamique(array('formulaires/formulaire_documents', 0, array('id_article' => $article, 'bouton' => $bouton)), false);
        // Liste des documents associés à l'article
        op_liste_vignette($article);
        // le bouton valider
        $bouton = _T('Proposer');
        // et on remplit le formulaire avec tout ça
        return array('formulaires/formulaire_contact', 0, array('formulaire_documents' => $formulaire_documents, 'formulaire_previsu' => $formulaire_previsu, 'formulaire_agenda' => $formulaire_agenda, 'bouton' => $bouton, 'article' => $article, 'rubrique' => $rubrique, 'surtitre' => $surtitre, 'soustitre' => $soustitre, 'descriptif' => $descriptif, 'nom_site' => $nom_site, 'url_site' => $url_site, 'chapo' => $chapo, 'ps' => $ps, 'mess_error' => $mess_error, 'url' => $url, 'titre' => interdire_scripts(typo($titre)), 'texte' => $texte));
    }
}
/**
 * Retirer les auteurs des zones.
 **/
function galettonuts_dissocier_zones($zones)
{
    $auteurs = spip_query("SELECT `id_auteur` as `id` FROM `spip_galettonuts`;");
    if (!spip_num_rows($auteurs)) {
        return;
    }
    while ($auteur = spip_fetch_array($auteurs)) {
        $auteur = _q($auteur['id']);
        foreach ($zones as $zone) {
            $zone = _q($zone);
            spip_query("DELETE FROM `spip_zones_auteurs` WHERE `id_zone`={$zone} AND `id_auteur`={$auteur};");
        }
    }
}
Exemple #10
0
function get_id_doc($fichier) {
    if (trim($fichier)=="") return false;   
    spip_log("get_id_doc cherche : ".$fichier,"snippets"); 
    $sql = "SELECT id_document FROM spip_documents WHERE fichier='".addslashes(filtrer_entites($fichier))."'";
    $result = spip_query($sql);
    while ($row = spip_fetch_array($result)) {
       spip_log("get_id_doc trouve : ".$row['id_document'],"snippets");
       return $row['id_document'];
    }
    // inconnu  ...
    spip_log("get_id_doc trouve pas :( ","snippets");
    return false ;
}
Exemple #11
0
function liste_rv($query, $type)
{
    global $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
    if ($type == annonces) {
        $titre = _T('info_annonces_generales');
        $couleur_titre = "ccaa00";
        $couleur_texte = "black";
        $couleur_fond = "#ffffee";
    } else {
        if ($type == pb) {
            $titre = _T('infos_vos_pense_bete');
            $couleur_titre = "#3874B0";
            $couleur_fond = "#EDF3FE";
            $couleur_texte = "white";
        } else {
            if ($type == rv) {
                $titre = _T('info_vos_rendez_vous');
                $couleur_titre = "#666666";
                $couleur_fond = "#eeeeee";
                $couleur_texte = "white";
            }
        }
    }
    $result = spip_query($query);
    if (spip_num_rows($result) > 0) {
        debut_cadre_enfonce("", false, "", $titre);
        echo "<table width='100%' border='0' cellpadding='0' cellspacing='2'>";
        while ($row = spip_fetch_array($result)) {
            if (preg_match("/^=([^[:space:]]+)\$/", $row['texte'], $match)) {
                $url = $match[1];
            } else {
                $url = "message.php3?id_message=" . $row['id_message'];
            }
            $type = $row['type'];
            $rv = $row['rv'];
            $date = $row['date_heure'];
            $date_fin = $row['date_fin'];
            if ($type == "normal") {
                $bouton = "message";
            } elseif ($type == "pb") {
                $bouton = "pense-bete";
            } elseif ($type == "affich") {
                $bouton = "annonce";
            } else {
                $bouton = "message";
            }
            $titre = typo($row['titre']);
            if ($rv == "oui") {
                echo "<tr><td colspan='2'>";
                $date_jour = affdate_jourcourt($date);
                if ($date_jour != $date_rv) {
                    echo "<div class='arial11'><b>{$date_jour}</b></div>";
                }
                echo "</td></tr>";
            }
            echo "<tr>";
            echo "<td width='24' valign='middle'>";
            echo "<a href='{$url}'>";
            if ($rv == "oui") {
                echo "<img src='img_pack/rv.gif' style='background: url(img_pack/{$bouton}.gif) no-repeat;' border='0'>";
            } else {
                echo "<img src='img_pack/{$bouton}.gif' border='0'>";
            }
            echo "</a>";
            echo "</td>";
            echo "<td valign='middle'>";
            if ($rv == "oui") {
                if (affdate($date) == affdate($date_fin)) {
                    echo "<div class='arial0' style='float: {$spip_lang_left}; line-height: 12px; color: #666666; margin-{$spip_lang_right}: 3px; padding-{$spip_lang_right}: 4px; background: url(img_pack/fond-agenda.gif) {$spip_lang_right} center no-repeat;'>" . heures($date) . ":" . minutes($date) . "<br />" . heures($date_fin) . ":" . minutes($date_fin) . "</div>";
                } else {
                    echo "<div class='arial0' style='float: {$spip_lang_left}; line-height: 12px; color: #666666; margin-{$spip_lang_right}: 3px; padding-{$spip_lang_right}: 4px; background: url(img_pack/fond-agenda.gif) {$spip_lang_right} center no-repeat; text-align: center;'>" . heures($date) . ":" . minutes($date) . "<br />...</div>";
                }
            }
            echo "<div><b><a href='{$url}' class='arial1' style='color: #333333;'>{$titre}</a></b></div>";
            echo "</td>";
            echo "</tr>\n";
            $date_rv = $date_jour;
        }
        echo "</table>";
        fin_cadre_enfonce();
    }
}
Exemple #12
0
function spip_get_lock($nom, $timeout = 0)
{
    global $lcm_mysql_db, $table_prefix;
    if ($table_prefix) {
        $nom = "{$table_prefix}:{$nom}";
    }
    if ($lcm_mysql_db) {
        $nom = "{$lcm_mysql_db}:{$nom}";
    }
    $nom = addslashes($nom);
    list($lock_ok) = spip_fetch_array(spip_query("SELECT GET_LOCK('{$nom}', {$timeout})"));
    return $lock_ok;
}
function vst_total_pages_visitees() {
	$query = "SELECT SUM(visites) AS nbPages FROM spip_visites_articles";
	$result = spip_query($query);
	if ($row = spip_fetch_array($result))
		{ return $row['nbPages']; }
	else { return "0";}
}
	if (!function_exists('sql_fetch')) { function sql_fetch($req) {
		return spip_fetch_array($req) ;
	} }
function spiplistes_listes_selectionner_elligibles (
	$non_abonnes
	, $nb_non_abonnes
	, $id_liste
	, $tri
	, $script_action
	, $script_exec
	, $id_grosse_boite
	, $args_action = ''
	, $retour_ajax = false
) {
	static $bouton_id;
	$bouton_id++;
	$type_ajout = ($script_action == _SPIPLISTES_ACTION_MOD_GERER) ? "mod" : "abo";
	
	// si retour de formulaire, les vars sont dans le $_POST
	$cherche_auteur = trim(urldecode(_request('cherche_auteur')));
	$icone_loupe = trim(urldecode(_request('icone_loupe')));
	if(empty($icone_loupe)) {
		// En ajax, find_in_path() ne trouve pas le chemin correct.
		// Oblige' de le noter au premier appel
		// et le transmettre dans le form.
		$icone_loupe = find_in_path('images/loupe.png');
	}
	foreach(array('id_grosse_boite', 'script_exec', 'script_action') as $key) {
		if(empty($$key)) {
			$$key = urldecode(_request($key));
		}
	}

	$select_abo = "";
	$btn_ajouter = ""
		. "<span><input type='submit' value='"._T('bouton_ajouter')."' "
		. " onclick=\"return AjaxSqueeze(this.form, '$id_grosse_boite')\" "
		. " class='fondo' id='btn_ajouter_id_".$type_ajout."'/></span>\n"
		;
	if(empty($args_action)) {
		$args_action = "id_liste=$id_liste";
	}
	$action = generer_action_auteur($script_action, $args_action);
	$exec = generer_url_ecrire($script_exec, $args_action);
	
	// retour de formulaire ?
	if(!empty($cherche_auteur) && $id_liste) {

		$statut_liste = spiplistes_listes_liste_statut($id_liste);
		
		$nb_elligibles = 0;
		$sql_from = "spip_auteurs AS a";
		$sql_where = array(
			"a.nom LIKE '%$cherche_auteur%'"
			, "LENGTH(a.email)"
			, "(statut=".sql_quote('0minirezo')." OR statut=".sql_quote('1comite')
				// si pas une liste privée, complète le where
				. (($statut_liste != _SPIPLISTES_LIST_PRIVATE) ? " OR statut=".sql_quote('6forum') : "")
				. ")"
			, "NOT EXISTS (SELECT NULL FROM spip_auteurs_listes AS l WHERE l.id_auteur = a.id_auteur AND l.id_liste = ".sql_quote($id_liste).")"
			);
		/*
		 * la requete ci-dessus en + clair
		 *//*
		$sql_query = "SELECT id_auteur,nom,statut FROM spip_auteurs AS a
			WHERE nom LIKE '%$cherche_auteur%'
				AND LENGTH(a.email)
				AND (statut='0minirezo' OR statut='1comite' OR statut='6forum')
				AND NOT EXISTS (SELECT NULL FROM spip_auteurs_listes AS l WHERE l.id_auteur = a.id_auteur AND l.id_liste = $id_liste)";
		*/
		
		// demande la liste des elligibles recherches
		$sql_result = sql_select("id_auteur,nom,statut", $sql_from, $sql_where, '', array('statut','nom'));

		if($sql_result) {
			$elligibles = array();
			while($row = spip_fetch_array($sql_result)) {
				if(!isset($elligibles[$row['statut']])) {
					$elligibles[$row['statut']] = array();
				}
				$elligibles[$row['statut']][$row['id_auteur']] = $row['nom'];
				$nb_elligibles++;
			}
			$select_abo = spiplistes_elligibles_select ($elligibles, $nb_elligibles, $type_ajout) . $btn_ajouter;
		}
		else {
			spiplistes_sqlerror_log("listes_selectionner_elligibles");
		}
		
	}
	
	if(empty($select_abo) && ($nb_non_abonnes <= _SPIPLISTES_SELECT_MIN_AUTEURS)) {
		$select_abo = spiplistes_elligibles_select ($non_abonnes, $nb_non_abonnes, $type_ajout) . $btn_ajouter;
	}
	// au dela de _SPIPLISTES_SELECT_MIN_AUTEURS, afficher la boite de recherche. 
	else {
		  $select_abo = ""
		  	. "<div>"
		  	. "<label id='spiplistes_l_recherche'>"
			// en ajax, http_img_pack() ne retrouve pas son petit
		 	//. http_img_pack("loupe.png", _T('info_rechercher'), "width='26' height='20'")
			. "<img src='$icone_loupe' alt='"._T('info_rechercher')."' width='26' height='20' />"
			. "<input type='text' name='cherche_auteur' id='in_cherche_auteur' class='fondl' value='' size='20' style='margin:0 4px' />\n"
			. "</label>\n"
			. "<span><input type='submit' value='"._T('bouton_chercher')."' "
				. " id='btn_chercher_id' name='spiplistes_bouton_chercher'"
				// recherche ne rafraichit que ce formulaire
				. " onclick=\"return AjaxSqueeze(this.form, '"._SPIPLISTES_ID_FROM_ELLIGIBL."$bouton_id')\" "
				. " class='fondo' /></span>\n"
			. "</div>"
			. $select_abo
		  	;
	} 
	
	$result = ""
		// si retour ajax, ne pas ajouter le conteneur dans le conteneur ;-)
		. (($retour_ajax) ? "" : "<div id='"._SPIPLISTES_ID_FROM_ELLIGIBL."$bouton_id'>\n")
		. "<form style='margin:0px; border:0px' action='$action' method='post'>\n"
		. "<div id='boite_selection_elligibles_$bouton_id' style='padding:0;margin:0.5em 0 0'>\n"
		. $select_abo
		. "</div>\n"
		. "<input name='arg' type='hidden' value='$id_liste' />\n"
		. "<input name='action' type='hidden' value='".$script_action."' />\n"
		. "<input name='redirect' type='hidden' value='".$exec."' />\n"
		. "<input name='id_liste' type='hidden' value='$id_liste' />\n"
		. "<input name='tri' type='hidden' value='$tri' />\n"
		. "<input name='script_action' type='hidden' value='$script_action' />\n"
		. "<input name='script_exec' type='hidden' value='$script_exec' />\n"
		. "<input name='id_grosse_boite' type='hidden' value='$id_grosse_boite' />\n"
		. "<input name='icone_loupe' type='hidden' value='$icone_loupe' />\n"
		. "</form>\n"
		. (($retour_ajax) ? "" : "</div>\n")
		;
	
	return($result);
}
Exemple #16
0
function snippets_articles_importer($id_target,$arbre,$contexte){
	include_spip('base/serial');
	include_spip('base/abstract_sql');
	include_spip('inc/snippets');
	
	$table_prefix = $GLOBALS['table_prefix'] ;

	$champs_non_importables = array("id_article","id_rubrique","id_secteur","maj","export","visites","referers","popularite","id_trad","idx","id_version","url_propre");
	$champs_non_ajoutables = array('titre','date','date_redac','lang');
	$champs_jointures = array('auteur','mot');
	$champs_defaut_values = array('statut'=>'lememe');
	$table = 'spip_articles';
	$primary = 'id_article';
	$fields = $GLOBALS['tables_principales']['spip_articles']['field'];
	$tag_objets="articles";
	$tag_objet="article";
	$translations = array();
	
	$forcer_id = false ; // mettre true pour garder les meme id que dans le XML
	$forcer_maj = false ; // mettre true pour mettre a jour un lot d'articles de meme titre que dans le spip cible
	
	
	if ($arbre && isset($arbre[$tag_objets]))
		foreach($arbre[$tag_objets] as $objets){
			foreach($objets[$tag_objet] as $objet){
			spip_log($objet['titre'],"snippets");
				$creation = false;
				$auteur_connu = false ;
				
				// mettre a jour des articles deja en bdd avec le xml fournit
				if($forcer_maj){
				$id_target = '';
				$id_article_trouve = sql_fetsel("id_article","spip_articles","titre=".sql_quote($objet['titre'][0])); // ajouter la rub courrante
				$id_target = $id_article_trouve['id_article'] ;
				if(!intval($id_target))
					spip_log($objet['titre'][0].$id_target,"snippets_titres_erreur");
				}
				
				include_spip('action/editer_article');
				// si c'est une creation, creer le formulaire avec les infos d'entete
				if (!($id_objet=intval($id_target))){
					if (preg_match(",id_rubrique=([0-9]*),i",$contexte,$regs))
						$id_rubrique=intval($regs[1]);
					$id_objet = insert_article($id_rubrique);
					
					// forcer l'id
					if($forcer_id){
					$champs_non_importables = array("id_rubrique","id_secteur","maj","export","visites","referers","popularite","id_trad","idx","id_version","url_propre");
					$sql = "UPDATE ".$table_prefix."_articles SET id_article = '".$objet['id_article'][0]."' WHERE id_article = '$id_objet'";
        			spip_query($sql); 
        			$id_objet = $objet['id_article'][0] ;
					}
					
					$creation = true;
				}
				// sinon on ajoute chaque champ, sauf le titre
				$row = spip_fetch_array(spip_query("SELECT * FROM $table WHERE $primary="._q($id_objet)));
				foreach (array_keys($row) as $key)
					if ( 	!in_array($key,$champs_non_importables) 
						AND !in_array($key,$champs_jointures) 
						AND ($creation OR !in_array($key,$champs_non_ajoutables) OR !$row[$key])
						AND isset($objet[$key])){
						$v=trim(spip_xml_aplatit($objet[$key]));
						$row[$key] = ($creation or $forcer_maj)?$v:($row[$key].$v);
					}
								
				revisions_articles($id_objet , $row);
				$translations[] = array($table,$objet[$primary],$id_objet);
				// gerer l'import de liens eventuels
				if ($id AND isset($objet['liens'])){
					foreach($objet['liens'] as $liens){
						// A FAIRE
					}
				}
				
				$id_article = $id_objet ; 
				
				if ( $objet['auteur'] AND ($creation OR $forcer_maj)){
					$auteur_connu = true ;
					sql_delete("spip_auteurs_articles","id_article=".sql_quote($id_article));
					foreach($objet['auteur'] as $nom){
					// ajouter l'auteur
						spip_log($nom,"snippets");
						$id_auteur = get_id_auteur($nom);
  				         if ($id_auteur) {  
  				         spip_log($nom.$id_auteur,"snippets");
        				 $sql="INSERT INTO ".$table_prefix."_auteurs_articles (id_auteur, id_article) VALUES ($id_auteur, $id_article)";
        				 spip_query($sql);                              				              	
        				}                   							
					}
				}	
				
				if($auteur_connu){
				// se virer soi-meme
        		$connect_id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ;
        		$sql = "DELETE FROM ".$table_prefix."_auteurs_articles WHERE id_auteur = '$connect_id_auteur' AND id_article = '$id_article'";
        		spip_query($sql); 
        		}
        		
        		// statut de l'article
        		if($champs_defaut_values['statut'] != 'prepa'){
        		$sql = "UPDATE ".$table_prefix."_articles SET statut = '".$objet['statut'][0]."' WHERE id_article = '$id_article'";
        		spip_query($sql); 
        		}
        		
        		
        		if ( $objet['mot'] AND ($creation OR $forcer_maj)){
			
					sql_delete("spip_mots_articles","id_article=".sql_quote($id_article));
					foreach($objet['mot'] as $mot){
					spip_log($mot,"snippets");
					// ajouter le mot cle
					$id_article = $id_objet ;
					$table_prefix = $GLOBALS['table_prefix'] ;
						$id_mot  = get_id_mot($mot);
  				         if ($id_mot) {  				                
        				 $sql="INSERT INTO ".$table_prefix."_mots_articles (id_mot, id_article) VALUES ($id_mot, $id_article)";
        				 spip_query($sql);                              				              	
        				}                   							
					}
				}	
        		
        		
        		
        		if ( $objet['document'] AND ($creation OR $forcer_maj)){
			
					sql_delete("spip_documents_liens","id_objet=".sql_quote($id_article)." and objet='article'");
					foreach($objet['document'] as $doc){
					spip_log("--> ".$doc,"snippets");
					// ajouter le doc
					list($id,$fichier,$extension,$titre,$descriptif) = explode('|',$doc) ;
					spip_log("--- $id,$fichier,$extension,$titre","snippets");
					spip_log("hop ".$fichier,"snippets");
					$table_prefix = $GLOBALS['table_prefix'] ;
						 $id_doc  = get_id_doc($fichier);
  				         if ($id_doc) {  				                
        				 spip_log("hop doc".$fichier."trouve".$id_doc,"snippets");
        				 $sql="INSERT INTO ".$table_prefix."_documents_liens (id_document, id_objet, objet) VALUES ($id_doc, $id_article,'article')";
        				 spip_query($sql);                              				              	
        				 }else{
        				 // au cas ou, on creer un doc, mais il vaut mieux transferer les doc avec toutes les infos avant de snippet
        				 $a =  array(
							'date' => 'NOW()',
							'distant' => 'non',
							'mode' => 'image',
							'titre'=> $titre,
							'descriptif'=> $descriptif,
							'extension'=> $extension,
							'fichier' => $fichier );
							
							//'largeur' => $largeur,
							//'hauteur' => $hauteur,
							//'taille' => $taille,
							
						if($forcer_id) $a['id_document'] = $id ;	
			 	    	
			 	    	$id = sql_insertq("spip_documents", $a);
        				spip_log ("ajout du document $fichier $titre  (M 'image' T 'article' L '$id_article' D '$id')","snippets");
        				
        				sql_insertq("spip_documents_articles",
   	                    	array('id_document' => $id,
    	                    'id_article' => $id_article));
        				 
        				 }
        				
					}
				}
        	
        		
        		
			}
		}
	return $translations;
}
function exec_admin_galettonuts()
{
    // Seuls les super-admins sont authorisés réaliser des synchros,
    // et par conséquent de configurer le plugin
    if (!('0minirezo' === $GLOBALS['auteur_session']['statut'] && $GLOBALS['connect_toutes_rubriques'])) {
        echo minipres(_T('avis_non_acces_page'));
        exit;
    }
    $erreurs = array();
    $icone_base = _DIR_PLUGIN_GALETTONUTS . 'img_pack/galettonuts-sql_status-';
    $icone_src = 'config-168.png';
    $icone_title = _T('galettonuts:icone_db_config');
    include_spip('inc/galettonuts_fonctions');
    // Lecture de la configuration
    if (!class_exists('L2_Spip_Plugin_Metas')) {
        include_spip('lib/L2/Spip/Plugin/Metas.class');
    }
    $config = new L2_Spip_Plugin_Metas('galettonuts_config');
    $contexte = $config->lire();
    $activer_cron = array_key_exists('activer_cron', $contexte) ? $contexte['activer_cron'] : true;
    // {{{ Traitement des données reçues
    if (_request('_galettonuts_ok')) {
        $champs = array('adresse_db' => _request('adresse_db'), 'login_db' => _request('login_db'), 'pass_db' => _request('pass_db'), 'prefix_db' => _request('prefix_db'), 'choix_db' => _request('choix_db'));
        // Des champs sont-ils vides ?
        $champs = array_map('trim', $champs);
        if (false === (!in_array(null, $champs) || !in_array('', $champs))) {
            $erreurs[] = _T('galettonuts:texte_erreur_1');
        }
        // Activer la synchronisation automatique ?
        if ('oui' == _request('activer_cron')) {
            $activer_cron = true;
        } else {
            $activer_cron = false;
        }
        if ($activer_cron) {
            $champs['heures'] = intval(_request('heures'));
            $champs['minutes'] = intval(_request('minutes'));
            $synchro = new L2_Spip_Plugin_Metas('galettonuts_synchro');
            $frequence = 3600 * $champs['heures'] + 60 * $champs['minutes'];
            if ($frequence !== $synchro->lire('frequence')) {
                $synchro->ajouter(array('frequence' => $frequence), true);
                $fichier = '<?php define(\'_GALETTONUTS_DELAIS_CRON\', ' . $frequence . '); ?>';
                ecrire_fichier(_DIR_TMP . 'galettonuts_cron.php', $fichier, true);
                unset($fichier);
            }
        } else {
            // On s'assure de bien supprimer le fichier de vérouillage
            // pour forcer la resynchronisation tenant compte de la nouvelle
            // configuration.
            if (file_exists(_DIR_TMP . 'galettonuts_cron.lock')) {
                unlink(_DIR_TMP . 'galettonuts_cron.lock');
            }
            if (file_exists(_DIR_TMP . 'galettonuts_cron.php')) {
                unlink(_DIR_TMP . 'galettonuts_cron.php');
            }
        }
        $contexte['activer_cron'] = $activer_cron;
        // Prise en compte dans le contexte
        $contexte = array_merge($contexte, $champs);
        unset($champs);
        // Test de connexion à la BDD Galette
        if (!count($erreurs)) {
            $link = galettonuts_galette_db($contexte['adresse_db'], $contexte['login_db'], $contexte['pass_db']);
            if (-1 === $link) {
                $erreurs[] = _T('galettonuts:avis_connexion_echec_1');
                $icone_src = 'error-168.png';
                $icone_title = _T('galettonuts:icone_db_erreur');
            } else {
                if (-2 === galettonuts_galette_db($contexte['choix_db'], $link)) {
                    $erreurs[] = _T('galettonuts:avis_connexion_echec_2');
                    $icone_src = 'error-168.png';
                    $icone_title = _T('galettonuts:icone_db_erreur');
                } else {
                    $icone_src = 'ok-168.png';
                    $icone_title = _T('galettonuts:icone_db_ok');
                    $contexte['db_ok'] = true;
                }
            }
            if (0 < $link) {
                mysql_close($link);
            }
            unset($link);
        }
        // Interraction avec Accès Restreint
        if (defined('_DIR_PLUGIN_ACCESRESTREINT')) {
            if ($config->existe('zones')) {
                galettonuts_dissocier_zones($config->lire('zones'));
            }
            $zones = _request('zones');
            if (is_array($zones) && 0 < count($zones)) {
                $contexte['zones'] = $zones;
            } else {
                $config->supprimer(array('zones' => null));
                unset($contexte['zones']);
            }
            unset($zones);
        }
        // Mémorisation de la configuration à la base de données Galette
        if (!count($erreurs)) {
            $config->ajouter($contexte, true);
        }
        // Lancer une synchronisation
        if (0 == count($erreurs)) {
            galettonuts_synchroniser(true);
        }
    } else {
        if (!empty($contexte['adresse_db']) && !empty($contexte['login_db']) && !empty($contexte['pass_db'])) {
            $link = galettonuts_galette_db($contexte['adresse_db'], $contexte['login_db'], $contexte['pass_db']);
            if (0 > $link) {
                $icone_src = 'error-168.png';
                $icone_title = _T('galettonuts:icone_db_erreur');
                $config->ajouter(array('db_ok' => false));
            } else {
                $icone_src = 'ok-168.png';
                $icone_title = _T('galettonuts:icone_db_ok');
                $config->ajouter(array('db_ok' => true));
                mysql_close($link);
                unset($link);
            }
        }
    }
    // }}}
    // {{{ Affichage
    // Haut de page
    $commencer_page = charger_fonction('commencer_page', 'inc');
    echo $commencer_page(_T('galettonuts:titre_page_admin'), '', 'galettonuts'), '<br/><br/><br/>';
    gros_titre(_T('galettonuts:titre_admin'));
    // Boîte d'informations
    debut_gauche();
    debut_boite_info();
    echo _T('galettonuts:texte_info_admin');
    fin_boite_info();
    // Message(s) d'erreur(s)
    debut_droite();
    if ($c = count($erreurs)) {
        if (1 == $c) {
            $erreur_titre = _T('galettonuts:texte_erreur');
            $erreur_texte = (string) $erreurs[0];
        } else {
            $erreur_titre = _T('galettonuts:texte_erreurs');
            $erreur_texte = '<ul>';
            for ($i = 0; $c < $i; ++$i) {
                $erreur_texte .= '<li>' . $erreurs[$i] . '</li>';
            }
            $erreur_texte .= '</ul>';
        }
        echo '<div style="background-color:#fee;color:red;border:1px solid red;padding:.5em;margin-bottom:25px" class="verdana2"><strong>', $erreur_titre, '</strong>&nbsp;:<br />', $erreur_texte, '</div>';
    }
    echo generer_url_post_ecrire('admin_galettonuts');
    // Accès à la BDD
    debut_cadre_trait_couleur('base-24.gif', false, '', _T('galettonuts:info_bdd'));
    echo '<div style="float:right;width:175px" class="verdana2">', _T('galettonuts:texte_info_bdd'), '<div>', '<div style="position:absolute;bottom:35px;width:168px;height:168px">', '<img src="', $icone_base, $icone_src, '" width="168" height="168" alt="" title="', $icone_title, '" />', '</div>', '</div>', '</div>';
    echo '<div style="width:298px">';
    debut_cadre_couleur();
    echo '<p><label for="adresse_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_adresse'), '</label><br/>', '<input type="text" name="adresse_db" value="', $contexte['adresse_db'], '" id="adresse_db" class="fondl" style="width:278px" tabindex="504"/>', '</p>';
    echo '<p><label for="login_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_login'), '</label><br/>', '<input type="text" name="login_db" value="', $contexte['login_db'], '" id="login_db" class="fondl" style="width:278px" tabindex="508"/>', '</p>';
    echo '<p><label for="pass_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_mdp'), '</label><br/>', '<input type="password" name="pass_db" value="', $contexte['pass_db'], '" id="pass_db" class="fondl" style="width:278px" tabindex="512"/>', '</p>';
    echo '<p><label for="prefix_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_prefix'), '</label><br/>', '<input type="text" name="prefix_db" value="', $contexte['prefix_db'], '" id="prefix_db" class="fondl" style="width:278px" tabindex="516"/>', '</p>';
    echo '<p><label for="choix_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_choix'), '</label><br/>', '<input type="text" name="choix_db" value="', $contexte['choix_db'], '" id="choix_db" class="fondl" style="width:278px" tabindex="520"/>', '</p>';
    fin_cadre_couleur();
    echo '</div>';
    echo '<div style="text-align:right;padding:0 2px;margin-top:.5em" id="buttons">', '<input type="submit" name="_galettonuts_ok" value="', _T('bouton_valider'), '" class="fondo" style="cursor:pointer" tabindex="560"/></div>';
    fin_cadre_trait_couleur();
    // Synchronisation automatique
    echo '<br />';
    debut_cadre_relief('synchro-24.gif', false, '', _T('galettonuts:info_cron'));
    echo '<p class="verdana2">', _T('galettonuts:texte_info_cron'), '</p>';
    echo '<p class="verdana2">', '<label', $activer_cron ? ' style="font-weight:bold"' : '', '>', '<input type="radio" name="activer_cron" value="oui" id="activer_cron_oui" tabindex="602" ', $activer_cron ? ' checked="checked" ' : '', 'onclick="changeVisible(this.checked, \'config-cron\', \'block\', \'none\');"', '/>', _T('galettonuts:entree_cron_utiliser'), '</label><br />', '<label', !$activer_cron ? ' style="font-weight:bold"' : '', '>', '<input type="radio" name="activer_cron" value="non" id="activer_cron_non" tabindex="604" ', !$activer_cron ? ' checked="checked" ' : '', 'onclick="changeVisible(this.checked, \'config-cron\', \'none\', \'block\');"', '/>', _T('galettonuts:entree_cron_utiliser_non'), '</label>', '</p>';
    echo '<div id="config-cron"', !$activer_cron ? ' style="display:none"' : '', '><hr />';
    echo '<p class="verdana2">', _T('galettonuts:frequence'), '</p>';
    echo '<p class="verdana2" style="text-align:center">', '<input type="text" name="heures" value="', $contexte['heures'], '" id="cron_heures" size="2" maxlength="2" tabindex="606" class="fondl" style="text-align:right"/>', '<label for="cron_heures" style="font-weight:bold;cursor:pointer">', _T('galettonuts:heures'), '</label>', '<input type="text" name="minutes" value="', $contexte['minutes'], '" id="cron_minutes" size="2" maxlength="2" tabindex="606" class="fondl" style="text-align:right"/>', '<label for="cron_minutes" style="font-weight:bold;cursor:pointer">', _T('galettonuts:minutes'), '</label>', '</p>';
    echo '</div>';
    echo '<div style="text-align:right;padding:0 2px;margin-top:.5em" id="buttons">', '<input type="submit" name="_galettonuts_ok" value="', _T('bouton_valider'), '" class="fondo" style="cursor:pointer" tabindex="660"/></div>';
    fin_cadre_relief();
    // Liaison avec le plugin Accès restreint
    if (defined('_DIR_PLUGIN_ACCESRESTREINT')) {
        $zones = spip_query("SELECT `id_zone`, `titre`, `descriptif` FROM `spip_zones` WHERE 1;");
        if (spip_num_rows($zones)) {
            global $couleur_foncee;
            $i = 0;
            $zone['num'] = _T('accesrestreint:colonne_id');
            $zone['titre'] = _T('accesrestreint:titre');
            $zone['descriptif'] = _T('accesrestreint:descriptif');
            $tabindex = 700;
            $tab_zones = <<<HTML
<table class="arial2" border="0" cellpadding="2" cellspacing="0" style="width:100%;border:1px solid #AAA;">
    <thead>
        <tr style="background-color:{$couleur_foncee};color:#fff;font-weight=bold">
            <th scope="col" style="text-align:left;padding-left:5px;padding-right:5px" width="40">{$zone['num']}</th>
            <th scope="col" style="text-align:left;border-left:1px inset #fff;padding-left:5px;padding-right:5px">{$zone['titre']}</th>
            <th scope="col" style="text-align:left;border-left:1px inset #fff;padding-left:5px;padding-right:5px">{$zone['descriptif']}</th>
            <th scope="col" style="text-align:center;border-left:1px inset #fff;padding-left:5px;padding-right:5px" width="16">&nbsp;</th>
        </tr>
    </thead>
    <tbody>
HTML;
            while ($zone = spip_fetch_array($zones)) {
                ++$tabindex;
                $bgcolor = alterner(++$i, '#FEFEFE', '#EEE');
                if (array_key_exists('zones', $contexte)) {
                    $checked = in_array($zone['id_zone'], $contexte['zones']) ? ' checked="checked"' : '';
                } else {
                    $checked = '';
                }
                $tab_zones .= <<<HTML
        <tr style="background-color:{$bgcolor}">
            <td style="text-align:left;padding-left:5px;padding-right:5px">{$zone['id_zone']}</td>
            <td style="text-align:left;padding-left:5px;padding-right:5px">{$zone['titre']}</td>
            <td style="text-align:left;padding-left:5px;padding-right:5px">{$zone['descriptif']}</td>
            <td style="text-align:center">
                <input type="checkbox" name="zones[]" value="{$zone['id_zone']}" class="fondl" tabindex="{$tabindex}"{$checked} />
            </td>
        </tr>
HTML;
            }
            $tab_zones .= '</tbody></table>';
            echo '<br />';
            debut_cadre_relief(_DIR_PLUGIN_ACCESRESTREINT . 'img_pack/zones-acces-24.gif', false, '', _T('galettonuts:info_liaison_access_restreint'));
            echo '<p class="verdana2">', _T('galettonuts:texte_liaison_access_restreint_1'), '</p>';
            echo '<p class="verdana2">', _T('galettonuts:texte_liaison_access_restreint_2'), '</p>';
            echo $tab_zones;
            echo '<div style="text-align:right;padding:0 2px;margin-top:.5em" id="buttons">', '<input type="submit" name="_galettonuts_ok" value="', _T('bouton_valider'), '" class="fondo" style="cursor:pointer" tabindex="760"/></div>';
            fin_cadre_relief();
        }
    }
    echo '</form>';
    // Fin de page
    echo fin_gauche() . fin_page();
    // }}}
}
Exemple #18
0
function spiplistes_import(
	$filename
	, $realname
	, $abos_liste
	, $format_abo = 'non'
	, $separateur = "\t"
	, $flag_admin
	, $listes_autorisees
	, $forcer_abo = false
) {
	$result_affiche = '';
	
	if(is_readable($filename))
	{
		// abonner les adresses importees
		// aux listes...
		if(!is_array($abos_liste))
		{
			if(($ii = intval($abos_liste)) <= 0)
			{
				return(false);
			}
			$abos_liste = array($ii);
		}
		else
		{
			$abos_liste = array_map('intval', $abos_liste);
		}
		
		// recupere les logins et mails existants dans la base
		// pour eviter les doublons
		
		$current_entries = array();
		$sql_result = sql_select(array('id_auteur', 'login', 'email', 'nom'), 'spip_auteurs');
		
		while($row = spip_fetch_array($sql_result))
		{
			// ne prendre que les comptes qui ont un email
			if($m = $row['email']) {
				$m = strtolower($m);
				$current_entries[$m] = array('login' => strtolower($row['login'])
										   , 'id_auteur' => $row['id_auteur']
										   , 'nom' => $row['nom']
										   );
			}
		}
		//syslog(LOG_NOTICE, 'memory_get_usage[2]: ' . memory_get_usage());
		
		//
		spiplistes_log('import fichier '.$filename);
		$new_entries = file($filename);
		
		//syslog(LOG_NOTICE, 'memory_get_usage[3]: ' . memory_get_usage());
		
		$nb_new_entries = count($new_entries);
		
		$bad_dupli = $bad_email = 0;
		$statuts_auteurs = array('6forum', '1comite', '0minirezo');
		
		// charger la table des abonnements en ram afin d'eviter les petites requettes
		$abonnements = array();
		if(($sql_result = sql_select('id_auteur,id_liste'
									, 'spip_auteurs_listes')
			) !== false)
		{
			while($row = sql_fetch($sql_result)) {
				if(!isset($abonnements[$row['id_liste']])) {
					$abonnements[$row['id_liste']] = array();
				}
				$abonnements[$row['id_liste']][] = $row['id_auteur'];
			}
		}
		else {
			spiplistes_sqlerror_log('module import (abonnements)');
		}
		
		if($forcer_abo)
		{
			$auteurs_format = array();
			// charger la table des formats afin d'eviter les petites requettes
			if(($sql_result = sql_select("id_auteur,`spip_listes_format` AS format"
										, 'spip_auteurs_elargis')) !== false)
			{
				while($row = sql_fetch($sql_result)) {
					$auteurs_format[$row['id_auteur']] = $row['format'];
				}
			}
			else
			{
				spiplistes_sqlerror_log("module import (format)");
			}
		}
		
		// les formats
		$modifier_format = array();
		
		$err_import = _T('spiplistes:erreur_import_base');
		
		//syslog(LOG_NOTICE, 'memory_get_usage[2]: ' . memory_get_usage());
		//syslog(LOG_NOTICE, 'memory_get_peak_usage[2]: ' . memory_get_peak_usage());
		
		$start_time = microtime(1);
		
		$stack_new_auteurs = array();
		
		// statut temporaire
		$tmp_statut = '6abo'.date('YmdGis');
		
		for($jj = 0; $jj < $nb_new_entries; $jj++)
		{
			$nouvelle_entree = trim($new_entries[$jj]);
			
			if(!empty($nouvelle_entree)
			   // ni une ligne de commentaire
			   && !ereg("^[/#]", $nouvelle_entree))
			{
				list($email, $login, $nom) = explode($separateur, $nouvelle_entree);
				
				$email = strtolower(trim($email));
				
				$mail_exist = false;
				
				if(($email = email_valide($email))
				   &&	(
						!($mail_exist = array_key_exists($email, $current_entries))
						|| $forcer_abo
						)
				)
				{
					if(!$mail_exist)
					{
						// si le compte n'existe pas, le creer
						
						// commencer par calculer le login
						$login = trim($login);
						if(empty($login))
						{
							$login = spiplistes_login_from_email($email);
						}
						else
						{
							$login = strtolower($login);
						}
						// puis le nom
						$nom = trim($nom);
						if(empty($nom))
						{
							$nom = ucfirst($login);
						}
						
						// ajoute l'invite' dans la table des auteurs
						$pass = creer_pass_aleatoire(8, $email);
					
						// nouvel abo dans la pile des "a creer"
						$stack_new_auteurs[] = array(
							'nom' => $nom
							, 'email' => $email
							, 'login' => $login
							, 'pass' => md5($pass)
							, 'statut' => $tmp_statut
							, 'htpass' => generer_htpass($pass)
						);
					} // end if(!$mail_exist)
					
					// adresse mail existe dans la base
					// si on passe par ici, c'est sous-entendu $forcer_abo (abonne' un compte existant)
					else
					{
						$id_auteur = intval($current_entries[$email]['id_auteur']);
						
						// forcer le format dans la foulee
						if(!isset($auteurs_format[$id_auteur]))
						{
							$modifier_format[] = '(' . sql_quote($id_auteur) . ',' . sql_quote($format_abo) . ')';
						}
					}
					// est-ce vraiment utile (voir plus bas)
				}
				else
				{
					if($mail_exist) {
						$bad_dupli++;
						spiplistes_log('import dupli: '.$mail);
					}
					else {
						$bad_email++;
						spiplistes_log('import bad: '.$mail);
					}
				}
			}
		} // end for($jj = 0; $jj < $nb_new_entries; $jj++)
				
		// importer les nouveaux abonnés
		if(count($stack_new_auteurs))
		{
			$sql_col_names = '('.implode(',', array_keys($stack_new_auteurs[0])).')';
			$sql_col_values = '';
			
			//syslog(LOG_NOTICE, 'memory_get_usage[5]: ' . memory_get_usage());
			
			foreach($stack_new_auteurs as $auteur)
			{
				$values = array_map('sql_quote', $auteur);
				$sql_col_values .= '('.implode(',', $values).'),';
			}
			$sql_col_values = rtrim($sql_col_values,',');
			
			$r = sql_insert('spip_auteurs', $sql_col_names, $sql_col_values);
			
			spiplistes_debug_log ('size of imported values: ' . strlen($sql_col_values));
			
			//syslog(LOG_NOTICE, 'memory_get_usage[6]: ' . memory_get_usage());
			
			// nouveaux abonnements
			foreach($abos_liste as $id_liste)
			{
				// un INSERT sans VALUES
				// @todo: vérifier compatibilite sqlite et pg
				if(sql_query(
					'INSERT INTO spip_auteurs_listes
								(id_auteur,id_liste) SELECT a.id_auteur,'.$id_liste
									.' FROM spip_auteurs AS a WHERE a.statut='.sql_quote($tmp_statut))
				   === false
				)
				{
					spiplistes_sqlerror_log('import nouveaux abos dans spip_auteurs_listes');
				}
			}
			
			// format pour les nouveaux auteurs
				// un INSERT sans VALUES
				// @todo: vérifier compatibilite sqlite et pg
			if(sql_query(
				'INSERT INTO spip_auteurs_elargis
						(id_auteur,`spip_listes_format`) SELECT a.id_auteur,'.sql_quote($format_abo)
								.' FROM spip_auteurs AS a WHERE a.statut='.sql_quote($tmp_statut))
			   === false
			)
			{
				spiplistes_sqlerror_log('import nouveauxformats dans spip_auteurs_elargis');
			}
		
		}
		
		// Comptes deja existants, inclus dans le fichier import
		// - changer son format de réception ?
		// - l'ajouter aux listes sélectionnées ?
		// - ou ignorer ?
		if(count($modifier_format))
		{
			// pour l'instant: ignorer !
			// 
		}
		
		// redonner le bon statut visiteur aux nouveaux
		sql_update(array('spip_auteurs'), array('statut' => sql_quote('6forum')), array('statut='.sql_quote($tmp_statut)));

		// fin des req

		$result_affiche .=
			($tt = ($ii = count($stack_new_auteurs)) + ($jj = count($modifier_format)))
			?	'<ul>'.PHP_EOL
				. '<li class="verdana2">'._T('spiplistes:nb_comptes_importees_en_ms_dont_'
										 , array('nb' => $tt, 'ms' => (microtime(1) - $start_time)))
				. '<ul>'.PHP_EOL
					. '<li>'._T('spiplistes:nb_fiches_crees', array('nb' => $ii)).'</li>'.PHP_EOL
					//. '<li>'._T('spiplistes:nb_comptes_modifies', array('nb' => $jj)).'</li>'.PHP_EOL
					. '<li>'._T('spiplistes:nb_comptes_ignores', array('nb' => $jj)).'</li>'.PHP_EOL
				. '</ul>'.PHP_EOL
				. '</li>'.PHP_EOL
				. '</ul>'.PHP_EOL
			: '<br />'._T('spiplistes:pas_dimport').PHP_EOL
			;

		
		if($bad_dupli) {
			$result_affiche .= '<br />'._T('pass_erreur').' email: '._T('spiplistes:n_duplicata_mail', array('n' => $bad_dupli)).PHP_EOL;
		}
		if($bad_email) {
			$result_affiche .= '<br />'._T('pass_erreur').' email: '._T('spiplistes:n_incorrect_mail', array('n' => $bad_email)).PHP_EOL;
		}
		$result_affiche = _T('spiplistes:fichier_') . ' : <strong>'.$realname.'</strong><br />'.PHP_EOL
			. _T('spiplistes:' . ((count($abos_liste) > 1) ? 'Listes_de_destination_s' : 'Liste_de_destination_s')
				 , array('s' => '#' . implode(',#', $abos_liste))) .'<br />'.PHP_EOL
			. $result_affiche
			;
	}
	return($result_affiche);
}
function spiplistes_courrier_id_auteur_get ($id_courrier) {
	if(($id_courrier = intval($id_courrier)) > 0) {
		if($sql_result = sql_select('id_auteur', 'spip_courriers', "id_courrier=".sql_quote($id_courrier), '', '', 1)) {
			if($row = spip_fetch_array($sql_result)) {
				return($row['id_auteur']);
			}
		}
	}
	return(false);
}
function exec_spiplistes_voir_journal () {

	static $eol = PHP_EOL;
	
	global $connect_statut
		, $connect_toutes_rubriques
		, $connect_id_auteur
		;

	// la configuration est réservée aux admins tt rubriques
	$autoriser = ($connect_statut == "0minirezo") && $connect_toutes_rubriques;

	$taille_cache = spip_fetch_array(spip_query("SELECT SUM(taille) AS n FROM spip_caches WHERE type='t'"));
	$message_gauche = 
		($taille_cache = $taille_cache['n']) 
		? _T('taille_cache_octets', array('octets' => taille_en_octets($taille_cache)))
		: _T('taille_cache_vide')
		;
	
	$message_gauche = '<p class="verdana2">' . $message_gauche . '</p>' . $eol;
		
////////////////////////////////////
// PAGE CONTENU
////////////////////////////////////

	$titre_page = spiplistes_journal_titre();
	// Permet entre autres d'ajouter les classes a' la page : <body class='$rubrique $sous_rubrique'>
	$rubrique = _SPIPLISTES_PREFIX;
	$sous_rubrique =  'voir_journal';

	$commencer_page = charger_fonction('commencer_page', 'inc');
	echo($commencer_page(_T('spiplistes:spiplistes') . ' - ' . trim($titre_page), $rubrique, $sous_rubrique));

	if(!$autoriser) {
		die (spiplistes_terminer_page_non_autorisee() . fin_page());
	}

	$page_result = ''
		. '<br style="line-height:3em" />' . $eol
		. spiplistes_gros_titre($titre_page, '', true)
		. barre_onglets($rubrique, $sous_rubrique)
		. debut_gauche($rubrique, true)
		. spiplistes_boite_meta_info(_SPIPLISTES_PREFIX)
		. $message_gauche
		. pipeline('affiche_gauche', array('args'=>array('exec'=>$sous_rubrique),'data'=>''))
		//. creer_colonne_droite($rubrique, true)  // spiplistes_boite_raccourcis() s'en occupe
		. spiplistes_boite_raccourcis(true)
		. spiplistes_boite_autocron() // ne pas gener l'edition
		. spiplistes_boite_info_spiplistes(true)
		. pipeline('affiche_droite', array('args'=>array('exec'=>$sous_rubrique),'data'=>''))
		. debut_droite($rubrique, true)
		;
	
	// affiche milieu
	$page_result .= ''
		. debut_cadre_trait_couleur("administration-24.gif", true, '', $titre_page)
		. spiplistes_journal_lire(_SPIPLISTES_PREFIX)
		. fin_cadre_trait_couleur(true)
		;
		
	// Fin de la page
	echo($page_result);

	echo pipeline('affiche_milieu',array('args'=>array('exec'=>$sous_rubrique),'data'=>''))
		, spiplistes_html_signature(_SPIPLISTES_PREFIX)
		, fin_gauche(), fin_page();

}
Exemple #21
0
        ### DBG
        fich_debug("DBG >> login : $login\n");
        // Si l'utilisateur figure deja dans la base, y recuperer les infos
        $result = spip_query("SELECT * FROM spip_auteurs WHERE login="******" AND source='ldap'");
        if (!sql_count($result)) { 
            ### DBG
            fich_debug("DBG >> Login : $login n'est pas dans la base.\n");
            fich_debug("DBG >> statut : ".$GLOBALS['meta']["ldap_statut_import"]."\n");
            fich_debug("DBG >> ldap_base : ".$GLOBALS['ldap_base']."\n");
			$desc['nom'] = $user["fullname"];
            $desc['statut'] = "1comite";
            $desc['login'] = $login;
            $desc['source'] = 'ldap';
            $desc['pass'] = '';
            $r = sql_insertq('spip_auteurs', $desc);
			$result = spip_query("SELECT * FROM spip_auteurs WHERE login="******" AND source='ldap'");
        }
        $row_auteur = spip_fetch_array($result);
        ### DBG
        fich_debug("DBG >> statut :".$row_auteur['statut']."\n");
        if ($row_auteur['statut'] == '0minirezo')
	    	$cookie_admin = "@".$session_login;

        $var_f = charger_fonction('session', 'inc');
        $cookie_session = $var_f($row_auteur);
        ### DBG
        fich_debug("DBG >> $cookie_session\n");
        // On poste le cookie de session
        spip_setcookie('spip_session', $cookie_session);
        // On loge l'authentification
        spip_log("login de $login depuis LCS");
Exemple #22
0
function snippets_rubriques_importer($id_target,$arbre,$contexte){
	include_spip('base/serial');
	include_spip('base/abstract_sql');
	include_spip('inc/snippets');
	include_spip('snippets/articles/importer');
	
	$table_prefix = $GLOBALS['table_prefix'] ;

	$champs_non_importables = array('id_article',"id_rubrique","id_secteur","maj","export","visites","referers","popularite","id_trad","idx","id_version","url_propre");
	$champs_non_ajoutables = array('titre',"statut",'date','date_redac','lang');
	$champs_jointures = array('auteur','mot');
	$champs_defaut_values = array('statut'=>'prop');
	$table = 'spip_rubriques';
	$primary = 'id_rubrique';
	$fields = $GLOBALS['tables_principales']['spip_rubriques']['field'];
	$tag_objets="rubriques";
	$tag_objet="rubrique";
	$translations = array();
	
	if ($arbre && isset($arbre[$tag_objets]))
		foreach($arbre[$tag_objets] as $objets){
			foreach($objets[$tag_objet] as $objet){
				include_spip('action/editer_rubrique');
				// si c'est une creation, creer le formulaire avec les infos d'entete
				if (!($id_objet=intval($id_target))){
					if (preg_match(",id_rubrique=([0-9]*),i",$contexte,$regs))
						$id_rubrique=intval($regs[1]);
					$id_objet = insert_rubrique($id_rubrique);
					$creation = true;
				}
				// sinon on ajoute chaque champ, sauf le titre
				$row = spip_fetch_array(spip_query("SELECT * FROM $table WHERE $primary="._q($id_objet)));
				foreach (array_keys($row) as $key)
					if ( 	!in_array($key,$champs_non_importables) 
						AND !in_array($key,$champs_jointures) 
						AND ($creation OR !in_array($key,$champs_non_ajoutables) OR !$row[$key])
						AND isset($objet[$key])){
						$v=trim(spip_xml_aplatit($objet[$key]));
						$row[$key] = $creation?$v:($row[$key].$v);
					}
								
				revisions_rubriques($id_objet , $row);
				//$translations[] = array($table,$objet[$primary],$id_objet);
				// gerer l'import de liens eventuels
				
				if ( $objet['liste_articles']){
					snippets_articles_importer("",$objet['liste_articles'][0],"id_rubrique=$id_objet") ;              							
				}
				
				
				if ($objet['liste_rubriques']){
				snippets_rubriques_importer("",$objet['liste_rubriques'][0],"id_rubrique=$id_objet");
				}
				
        		
        		
        		
			}
		}
	return "";
}
Exemple #23
0
function exec_admin_couteau_suisse() {
cs_log("INIT : exec_admin_couteau_suisse()");
	global $spip_lang_right;
	global $outils, $afficher_outil, $metas_vars, $metas_outils;

	// cette valeur par defaut n'est pas definie sous SPIP 1.92
	@define('_ID_WEBMESTRES', 1);
	cs_minipres();
	$cmd = _request('cmd');
	$exec = _request('exec');

	include_spip('inc/cs_outils');
	cs_init_plugins();

	// id de l'auteur en session
	if(defined('_SPIP19300')) $connect_id_auteur = $GLOBALS['auteur_session']['id_auteur'];
		else global $connect_id_auteur;

	// reset general
	if($cmd=='resetall'){
		spip_log("Reset General du Couteau Suisse par l'auteur id=$connect_id_auteur");
		foreach(array_keys($GLOBALS['meta']) as $meta) {
			if(strpos($meta, 'tweaks_') === 0) effacer_meta($meta);
			if(strpos($meta, 'cs_') === 0) effacer_meta($meta);
		}
		$metas_vars = $metas_outils = array();
		// ici, pas d'initialisation...
		include_spip('cout_lancement');
		cout_exec_redirige('cmd=resetjs');
	}
	// installation personnalisee
	if(strlen($pack = _request('pack')) && isset($GLOBALS['cs_installer'][$pack]['outils'])) {
		if($cmd=='install'){
			spip_log("Installation personnalisee de '$pack' par l'auteur id=$connect_id_auteur");
			// installer le pack et rediriger
			cout_install_pack($pack, true);
		} elseif($cmd=='delete'){
			spip_log("Suppression de '$pack' par l'auteur id=$connect_id_auteur");
			$p = preg_quote($pack,'/');
			$r = "[$]GLOBALS\['cs_installer'\]\['$p'\] *=";
			cs_ecrire_config(
				array("/$r/", "/# [^\\n\\r]+[\\n\\r]+if\(0\) {$r}.*?# $p #[\\n\\r]+/s"),
				array('if(0) \0', ''));
			// simplement prendre en compte la supression
			cout_exec_redirige('cmd=pack', false);
		}
	}
	// reset des variables d'un outil
	if($cmd=='reset' && strlen($_GET['outil'])){
		spip_log("Reset des variables de '$_GET[outil]' par l'auteur id=$connect_id_auteur");
		global $outils;
		include_spip('cout_utils');
		include_spip('config_outils');
		if(autoriser('configurer', 'outil', 0, NULL, $outils[$_GET['outil']])) {
			include_spip('inc/cs_outils');
			cs_initialisation_d_un_outil($_GET['outil'], charger_fonction('description_outil', 'inc'), true);
			foreach ($outils[$_GET['outil']]['variables'] as $a)
				if(autoriser('configurer', 'variable', 0, NULL, array('nom'=>$a, 'outil'=>$outils[$_GET['outil']])))
					unset($metas_vars[$a]);
				else spip_log("Reset interdit de la variable %$a% !!");
			ecrire_meta('tweaks_variables', serialize($metas_vars));
		}
		// tout recompiler
		cout_exec_redirige("cmd=descrip&outil={$_GET[outil]}#cs_infos");
	}
	// reset de l'affichage
	if($cmd=='showall'){
		spip_log("Reset de tous les affichages du Couteau Suisse par l'auteur id=$connect_id_auteur");
		effacer_meta('tweaks_caches');
		cout_exec_redirige();
	}

	// afficher la description d'un outil ?
	$afficher_outil = ($cmd=='descrip' OR $cmd=='switch')?$_GET['outil']:'';

	// initialisation generale forcee : recuperation de $outils;
	cs_initialisation(true, $cmd!='noinclude');
	cs_installe_outils();

	// mise a jour des donnees si envoi via formulaire
	// sinon fait une passe de verif sur les outils
	if($cmd=='switch' OR $cmd=='hide'){
		enregistre_modif_outils($cmd);
		cout_exec_redirige(strlen($_GET['outil'])?"cmd=descrip&outil={$_GET[outil]}#cs_infos":'');
	}
//	else
//		verif_outils();

	$commencer_page = charger_fonction('commencer_page', 'inc');
	echo $commencer_page(_T('couteauprive:titre'), "configuration", 'couteau_suisse');

	// pour la  version du plugin
	include_spip('inc/plugin');
	if(isset($GLOBALS['meta']['plugin'])) {
		$t = unserialize($GLOBALS['meta']['plugin']);
		$dir = $t['COUTEAU_SUISSE']['dir'];
		$dir_type = $t['COUTEAU_SUISSE']['dir_type'];
		$bt_dir = $t['BARRETYPOENRICHIE']['dir'];
		$bt_version = $t['BARRETYPOENRICHIE']['version'];
	}
	if(!strlen($dir)) $dir = 'couteau_suisse';
	if(!strlen($bt_dir)) $bt_dir = 'barre_typo_v2';
	$get_infos = defined('_SPIP20100')?charger_fonction('get_infos','plugins'):'plugin_get_infos';
	if (isset($dir_type)) {
		$t = $get_infos($dir, false, constant($dir_type));
	} else {
		$t = $get_infos($dir);
	}
	$cs_version_base = $t['version_base']; $cs_version = $t['version'];
	// mises a jour eventuelles de la base
	installe_un_plugin($dir, $t, $dir_type);
	unset($t);
	if(!strlen($bt_version)) { $bt_version = $get_infos($bt_dir); $bt_version = $bt_version['version']; }
	
	$cs_revision = ((lire_fichier(_DIR_PLUGIN_COUTEAU_SUISSE.'svn.revision',$t)) && (preg_match(',<revision>(\d+)</revision>,',$t,$r)))
		?'<br/>'._T('couteauprive:version_revision', array('revision'=>$r[1])):"";
	include_spip('public/assembler');
	echo recuperer_fond('exec/admin_couteau_suisse_head', array(
		'force' => in_array(_request('var_mode'), array('calcul', 'recalcul'))?'oui':null,
		'cs_version' => $cs_version,
		'exec' => _request('exec'),
	));
	echo "<br /><br /><br />";
	gros_titre(_T('couteauprive:titre'), '', false);
	echo barre_onglets("configuration", 'couteau_suisse');
	echo '<div style="font-size:85%">';
// verification d'une base venant de SPIP 1.8
$res = spip_query("DESCRIBE spip_meta valeur");
$resultat = function_exists('spip_fetch_array')?spip_fetch_array($res):sql_fetch($res);
if($resultat['Type']!='text') echo "<p style=\"color:red;\">Attention : votre base semble ancienne et le Couteau Suisse ne va pas bien fonctionner.</p><p>La table 'spip_meta' a pour type de valeur '$resultat[Type]' au lieu de 'text'.</p>";
// verification de la barre typo V2
$mini = '2.5.3';
if(strlen($bt_version) and (version_compare($bt_version,$mini,'<'))) echo "<p>"._T('couteauprive:erreur:bt', array('version'=>$bt_version, 'mini'=>$mini))."</p>";
echo "<script type=\"text/javascript\"><!-- 
if(!window.jQuery) document.write('".str_replace('/','\/',addslashes(propre('<p>'._T('couteauprive:erreur:jquery').'</p>')))."');
//--></script>";
	echo '</div>';

	// chargement des outils
	include_spip('inc/cs_outils'); 
	list($outils_affiches_actifs, $liste_outils) = liste_outils();
	// cadre de gauche
	echo debut_gauche('', true);
	// pour la liste des docs sur spip-contrib
	$contribs = isset($GLOBALS['meta']['tweaks_contribs'])?unserialize($GLOBALS['meta']['tweaks_contribs']):array();
	foreach($contribs as $i=>$v) $contribs[$i] = preg_replace_callback('/@@(.*?)@@/', 'cs_couper_25', $v);
	sort($contribs);
	$aide = '';
	if(isset($GLOBALS['cs_installer'])) foreach(array_keys($GLOBALS['cs_installer']) as $pack)
		$aide .= "\n_ " . _T('couteauprive:pack_du', array('pack'=>"{[{$pack}|"._T('couteauprive:pack_installe').'->' . generer_url_ecrire($exec,'cmd=install&pack='.urlencode($pack)) . ']}'));
	// si le plugin est installe par procedure automatique, on permet la mise a jour directe (SPIP >= 2.0)
	$arg_chargeur = $GLOBALS['spip_version_base']>=15828?'url_zip_plugin2':'url_zip_plugin'; // eq. SPIP >= 2.1.2
	$form_update = preg_match(',plugins/auto/couteau_suisse/$,',_DIR_PLUGIN_COUTEAU_SUISSE)?
		"<input type='hidden' name='$arg_chargeur' value='http://files.spip.org/spip-zone/couteau_suisse.zip' />"
		. "<br/><div class='cs_sobre'><input type='submit' value='&bull; " . attribut_html(_T('couteauprive:version_update')) . "' class='cs_sobre' title='" . attribut_html(_T('couteauprive:version_update_title')) . "' /></div>"
		:"";
	// un lien si le plugin plugin "Telechargeur" est present (SPIP < 2.0)
	if(!strlen($form_update) && defined('_DIR_PLUGIN_CHARGEUR'))
		$form_update = "<br/>&bull; <a title='" . attribut_html(_T('couteauprive:version_update_chargeur_title')) . "' href='../spip.php?action=charger&plugin=couteau_suisse&url_retour=".urlencode(generer_url_ecrire('admin_couteau_suisse'))."'>"._T('couteauprive:version_update_chargeur').'</a>';
	// compilation du bandeau gauche
	$aide =	_T('couteauprive:help2', array(
			'version' => $cs_version.$cs_revision.'<br/>'.
				(defined('_CS_PAS_DE_DISTANT')?'('._T('couteauprive:version_distante_off').')':'<span class="cs_version">'._T('couteauprive:version_distante').'</span>')
				))
		. $form_update
		. '<br/>&bull;&nbsp;['._T('couteauprive:pack_titre') . '|' . _T('couteauprive:pack_alt') . '->' . generer_url_ecrire($exec,'cmd=pack#cs_infos') . "]\n\n"
		. _T('couteauprive:help3', array(

			'reset' => generer_url_ecrire($exec,'cmd=resetall'),
			'hide' => generer_url_ecrire($exec,'cmd=showall'),
			'contribs' => join('', $contribs),
			'install' => $aide
	));
	if(function_exists('redirige_action_post')) $aide = redirige_action_post('charger_plugin', '', 'admin_couteau_suisse', '', $aide); // SPIP >= 2.0
	$aide = '<div class="cs_aide">'._T('couteauprive:help')."\n\n$aide</div>";
	echo debut_boite_info(true), propre($aide), fin_boite_info(true);
	$aide = cs_aide_raccourcis();
	if(strlen($aide))
		echo debut_boite_info(true), $aide, fin_boite_info(true);
	$aide = cs_aide_pipelines($outils_affiches_actifs);
	if(strlen($aide))
		echo debut_boite_info(true), $aide, fin_boite_info(true);
	echo pipeline('affiche_gauche',array('args'=>array('exec'=>$exec),'data'=>''));

	echo creer_colonne_droite('', true);
	echo pipeline('affiche_droite',array('args'=>array('exec'=>$exec),'data'=>'')),
		debut_droite('', true),
		debut_cadre_trait_couleur(find_in_path('img/couteau-24.gif'),true,'','&nbsp;'._T('couteauprive:outils_liste')),
		_T('couteauprive:outil_intro'),
		"\n<table border='0' cellspacing='0' cellpadding='5' style='width:100%;'><tr><td class='sansserif'>";

	$_GET['source'] = $exec;
	echo '<div class="conteneur">', $liste_outils,
		'</div><br class="conteneur" /><div class="cs_patience"><br />'.http_img_pack('searching.gif','*','').' ...</div>';
	flush();
	echo '<div class="conteneur"><div id="cs_infos" class="cs_infos">',
		$cmd=='pack'?cs_description_pack():description_outil2($afficher_outil),
		'</div><script type="text/javascript"><!--
var cs_descripted = "', $afficher_outil, '";
document.write("<style type=\'text/css\'>#csjs{display:none;}<\/style>");
//--></script><div id="csjs" style="color:red;"><br/>', _T('couteauprive:erreur:js'),'</div>
<noscript><style type="text/css">#csjs{display:none;}</style><div style="color:red;"><br/>', _T('couteauprive:erreur:nojs'),
$_GET['modif']=='oui'?'<br/>'._T('couteauprive:vars_modifiees').'.':'','</div></noscript>',
		'</div></td></tr></table>',
		'<style type="text/css">.cs_patience{display:none;}</style>',
		fin_cadre_trait_couleur(true),

		pipeline('affiche_milieu',array('args'=>array('exec'=>$exec),'data'=>'')),
		fin_gauche(), fin_page();
cs_log(" FIN : exec_admin_couteau_suisse()");
}
Exemple #24
0
function cs_champ_sql($id, $champ='texte', $objet='article') {
	// Utiliser la bonne requete en fonction de la version de SPIP
	if(function_exists('sql_getfetsel')) {
		// SPIP 2.0
		// TODO : fonctions SPIP pour trouver la table et l'id_objet
		if($r = sql_getfetsel($champ, 'spip_'.$objet.'s', 'id_'.$objet.'='.intval($id)))
			return $r;
	} else {
		if($r = spip_query('SELECT '.$champ.' FROM spip_'.$objet.'s WHERE id_'.$objet.'='.intval($id)))
			// s'il existe un champ, on le retourne
			if($row = spip_fetch_array($r)) return $row[$champ];
	}
	// sinon rien !
	return '';
}
Exemple #25
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
Exemple #26
0
function sql_calendrier_taches_rv()
{
    global $connect_id_auteur;
    $r = array();
    if (!$connect_id_auteur) {
        return $r;
    }
    $result = spip_query("\nSELECT messages.* \nFROM spip_messages AS messages, spip_auteurs_messages AS lien \nWHERE ((lien.id_auteur='{$connect_id_auteur}' \n\tAND lien.id_message=messages.id_message) \n\tOR messages.type='affich') \nAND messages.rv='oui'\nAND ( (messages.date_heure > DATE_SUB(NOW(), INTERVAL 1 DAY) \n\tAND messages.date_heure < DATE_ADD(NOW(), INTERVAL 1 MONTH))\n\tOR (messages.date_heure < NOW() AND messages.date_fin > NOW() ))\nAND messages.statut='publie' \nGROUP BY messages.id_message \nORDER BY messages.date_heure");
    if (spip_num_rows($result) > 0) {
        $r = array();
        while ($x = spip_fetch_array($result)) {
            $r[] = $x;
        }
    }
    return $r;
}
Exemple #27
0
function auteurs_recemment_connectes()
{	
	global $connect_id_auteur;
	$res = '';
	$result_auteurs = spip_query("SELECT id_auteur FROM spip_auteurs WHERE id_auteur!=$connect_id_auteur AND en_ligne>DATE_SUB(NOW(),INTERVAL 15 MINUTE) AND statut IN ('0minirezo','1comite')");

	if (spip_num_rows($result_auteurs)) {
		$formater_auteur = charger_fonction('formater_auteur', 'inc');
		$res = "<b>"._T('info_en_ligne'). "&nbsp;</b>";
		while ($row = spip_fetch_array($result_auteurs)) {
			list($s, $mail, $nom, $w, $p) = $formater_auteur($row['id_auteur']);
			$res .= "$mail&nbsp;$nom, ";
		}
		$res = substr($res,0,-2);
	}

	return $res ? "<div class='messages' style='color:#666;'>$res</div>" : '';
}
Exemple #28
0
function wha_url_transaction($id_transaction, $transaction_hash, $config, $args = array())
{
    $res = sql_select("*", "spip_transactions", "id_transaction=" . intval($id_transaction) . " AND transaction_hash=" . sql_quote($transaction_hash));
    if (!($row = spip_fetch_array($res))) {
        return "";
    }
    if ($row['reglee'] == 'oui') {
        return "";
    }
    $achat_desc = wha_achat_desc($id_transaction, "Votre commande No {$id_transaction}", $row['montant'], $args);
    return parametre_url(wha_action_url("AuthorizeReq", $achat_desc, $config), 'lg', 'fr', '&');
}
Exemple #29
0
function cs_urls_propres($type, $id) {
	global $type_urls;
	if(!$id) return '';
	$res = "";
	// SPIP >= 2.0
	if(defined('_SPIP19300')) {
		$url = generer_url_entite_absolue($id, $type, '', '', true);
		$lien_public = "\n[<span>[". _T('couteau:urls_propres_lien'). "|{$url}->{$url}]</span>]\n\n";
		$s = sql_select("url", "spip_urls", "id_objet=$id AND type='$type'", '', 'date DESC');
		while ($t = sql_fetch($s)) $res .= ($res?'<br />':'')."&bull;&nbsp;$t[url]\n";
	// SPIP < 2.0
	} else {
		// impossible de calculer l'url publique d'ici.
		$table = $type.($type=='syndic'?'':'s');
		$r = spip_query("SELECT url_propre FROM spip_$table WHERE id_$type=$id");
		if ($r && $r = spip_fetch_array($r) ) {
			if(!strlen($r=$r['url_propre'])) $r=_T('couteauprive:variable_vide');
			$res .= "&bull;&nbsp;$r\n";
		}
		$lien_public = './?exec=action_rapide&arg=type_urls|URL_objet_191&format=iframe&type_objet='.$type.'&id_objet='.$id.'&script=foo';
		$lien_public = '<iframe src="'.$lien_public.'" width="100%" style="border:none; height:4em;"></iframe>';
	}

	$format = in_array($type_urls, array('page', 'standard', 'html'))
		?_T('couteau:urls_propres_erreur')
		:_T('couteau:urls_propres_objet');
	$mem = $GLOBALS['class_spip_plus'];
	$GLOBALS['class_spip_plus']=' class="spip"';
	$res = propre(
		_T('couteau:urls_propres_format', array(
			'format'=>$type_urls,
			'url'=>generer_url_ecrire('admin_couteau_suisse', 'cmd=descrip&outil=type_urls#cs_infos')
		)). "\n\n"
		. $format . "\n\n"
		. '|{{'. _T('couteau:2pts', array(
			'objet'=>strtoupper(filtrer_entites(_T('couteau:objet_'.$type))).' '.$id
		))."}}|\n"
		. "|$res|")
		// bug SPIP ?
		. propre($lien_public);
	$GLOBALS['class_spip_plus'] = $mem;
	return cs_cadre_depliable(_T('couteau:urls_propres_titre'), 'bp_urls_propres', $res);
}
	function taille_du_cache() {
		$cpt = spip_fetch_array(spip_query("SELECT SUM(taille) AS n FROM spip_caches WHERE type='t'"));
		return $cpt['n'];
	}