Example #1
0
function inc_grouper_mots_dist($id_groupe, $total) {
	global $connect_statut, $spip_lang_right, $spip_lang;

	$presenter_liste = charger_fonction('presenter_liste', 'inc');

	// ceci sert a la fois:
	// - a construire le nom du parametre d'URL indiquant la tranche
	// - a donner un ID a la balise ou greffer le retour d'Ajax
	// tant pour la prochaine tranche que pour le retrait de mot
	$tmp_var = "editer_mots-$id_groupe";
	$url = generer_url_ecrire('grouper_mots',"id_groupe=$id_groupe");

	$select = 'id_mot, id_groupe, titre, descriptif, '
	. sql_multi ("titre", $spip_lang);

	$requete = array('SELECT' => $select, 'FROM' => 'spip_mots', 'WHERE' => "id_groupe=$id_groupe", 'ORDER BY' => 'multi');

	$tableau = array();
	$occurrences = calculer_liens_mots($id_groupe);
	if ($connect_statut=="0minirezo") {
		$styles = array(array('arial11'), array('arial1', 100), array('arial1', 130));
	} else {
		$styles = array(array('arial11'), array('arial1', 100));
	}
	return $presenter_liste($requete, 'presenter_groupe_mots_boucle', $tableau, array($occurrences, $total, $deb_aff), false, $styles, $tmp_var, '', '', $url);
}
/**
 * Modifier une souscription
 *
 * $c est un contenu (par defaut on prend le contenu via _request())
 *
 * @param int $id_souscription
 * @param array|bool $set
 * @return string
 */
function souscription_modifier($id_souscription, $set = false)
{
    include_spip('inc/modifier');
    $c = collecter_requests(objet_info('souscription', 'champs_editables'), array(), $set);
    /* Récupération du nom du pays */
    $code_pays = _request('pays');
    $pays = sql_getfetsel(sql_multi("nom", $GLOBALS['spip_lang']), 'spip_pays', "code=" . sql_quote($code_pays));
    $c = array_merge($c, array("pays" => $pays));
    if ($err = objet_modifier_champs('souscription', $id_souscription, array(), $c)) {
        return $err;
    }
}
Example #3
0
/**
 * Interpreter les multi xxx et num xxx utilise comme tri
 * pour la clause select
 * 'multi xxx' devient select "...." as multi
 * les autres cas ne produisent qu'une chaine vide '' en select
 * 'hasard' devient 'rand() AS hasard' dans le select
 *
 * @param string $t
 * @return string
 */
function tri_champ_select($t)
{
    if (strncmp($t, 'multi ', 6) == 0) {
        $t = substr($t, 6);
        $t = preg_replace(',\\s,', '', $t);
        $t = sql_multi($t, $GLOBALS['spip_lang']);
        return $t;
    }
    if (trim($t) == 'hasard') {
        return 'rand() AS hasard';
    }
    return "''";
}
Example #4
0
/**
 * Interpreter les multi xxx et num xxx utilise comme tri
 * pour la clause select
 * 'multi xxx' devient select "...." as multi
 * les autres cas ne produisent qu'une chaine vide '' en select
 *
 * @param string $t
 * @return string
 */
function tri_champ_select($t){
	if(strncmp($t,'multi ',6)==0){
		$t = substr($t,6);
		$t = preg_replace(',\s,','',$t);
		$t = sql_multi($t,$GLOBALS['spip_lang']);
		return $t;
	}
	return "''";
}
Example #5
0
function requete_auteurs_tri($tri, $where, $visit=false)
{
	global $spip_lang;

	$sql_sel = '';
	$join = $visit ?
	 ""
	 : 
	 (strpos($where,'art.statut')?("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur" . " LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)"):"");
	
	// tri
	switch ($tri) {
	case 'nombre':
		$sql_sel = "COUNT(lien.id_article) AS compteur";
		$sql_order = 'compteur DESC, unom';
		$join = $visit ?
		 "LEFT JOIN spip_forum AS lien ON aut.id_auteur=lien.id_auteur"
		 : ("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur" 
		. (strpos($where,'art.statut')?" LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)":""));
		break;
	
	case 'site':
		$sql_order = 'site, unom';
		break;
	
	case 'statut':
		$sql_order = 'statut, unom';
		break;
	
	case 'nom':
	default:
		$sql_sel = sql_multi ("nom", $spip_lang);
		$sql_order = "multi";
	}
	//
	// La requete de base est tres sympa
	// (pour les visiteurs, ca postule que les messages concernent des articles)
	return array('SELECT' =>
			array_diff(
			array(
				"aut.id_auteur AS id_auteur",
				"aut.statut AS statut", 
				"aut.nom_site AS site", 
				"aut.nom AS nom", 
				"UPPER(aut.nom) AS unom", 
				$sql_sel),array('',null)),
		     'FROM' => "spip_auteurs AS aut $join",
		     'WHERE' => $where,
		     'GROUP BY' => "aut.statut, aut.nom_site, aut.nom, aut.id_auteur", 
		     'ORDER BY' => $sql_order);
}
Example #6
0
function formulaire_mots_cles($id_objet, $les_mots, $table, $table_id, $url_base, $visible, $objet) {
	global  $spip_lang, $spip_lang_right;

	$res = '';

	// liste des groupes de mots contenant au moins un mot deja appose a l'objet
	$id_groupes_vus = array_map('array_pop',
		sql_allfetsel('DISTINCT(id_groupe)', 'spip_mots',
			sql_in('id_mot', $les_mots)));

	// supprimer tous les mots ?
	// a partir de 3 mots on regarde si l'ensemble des mots sont supprimables
	// si oui on propose ce lien
	if (count($les_mots)>= 3) {
		$ok = true;
		foreach ($id_groupes_vus as $id_groupe)
			if (!autoriser('editermots', $objet, $id_objet, null,
					array('id_groupe'=>$id_groupe))) {
				$ok = false;
				break;
			}
		if ($ok)
			$res .= "<div style='text-align: right' class='arial1'>"
				. ajax_action_auteur('editer_mots', "$id_objet,-1,$table,$table_id,$objet", $url_base, "$table_id=$id_objet", array(_T('info_retirer_mots'),''),"&id_objet=$id_objet&objet=$objet")
				. "</div><br />\n";
	}

	// formulaire groupe par groupe
	$ajouter ='';
	$cond_mots_vus = $les_mots
		? " AND " . sql_in('id_mot', $les_mots, 'NOT')
		: '';

	define('_TRI_GROUPES_MOTS', 'titre');  
	foreach(sql_allfetsel('*,' . sql_multi ("titre", $spip_lang), 'spip_groupes_mots', '', '', _TRI_GROUPES_MOTS) as $row) {
		$id_groupe = $row['id_groupe'];
		if (autoriser('editermots', $objet, $id_objet, null,
		array('id_groupe'=>$id_groupe,'groupe_champs'=>$row))
		AND $menu = menu_mots($row, $id_groupes_vus, $cond_mots_vus)) {
			list($corps, $clic) = $menu;
			$ajouter .= ajax_action_post('editer_mots',
				"$id_objet,,$table,$table_id,$objet",
				$url_base,
				"$table_id=$id_objet",
				$corps,
				$clic,
				" class='visible_au_chargement spip_xx-small' id='valider_groupe_$id_groupe'", "",
				"&id_objet=$id_objet&objet=$objet&select_groupe=$id_groupe");

			// forcer la visibilite si au moins un mot obligatoire absent
			// attention true <> 1 pour bouton_block_depliable
			if ($row['obligatoire'] == 'oui'
			AND !in_array($id_groupe, $id_groupes_vus))
				$visible = true;
		}
	}

	if ($ajouter) {
		$res .= "<div style='float:$spip_lang_right; width:280px;position:relative;display:inline;'>"
		  . $ajouter
		  ."</div>\n" 
		  . "<span class='verdana1'><b>"
		  ._T('titre_ajouter_mot_cle')
		  ."</b></span><br />\n";
	}

	return array($visible, $res);
}
Example #7
0
function afficher_rubriques_admin_restreintes($auteur, $modif = true){
	global $spip_lang;

	$id_auteur = intval($auteur['id_auteur']);

	$result = sql_select("rubriques.id_rubrique, " . sql_multi ("titre", $spip_lang) . "", "spip_auteurs_rubriques AS lien LEFT JOIN spip_rubriques AS rubriques ON lien.id_rubrique=rubriques.id_rubrique", "lien.id_auteur=$id_auteur", "", "multi");

	$menu = $restreint = '';
	// L'autorisation de modifier les rubriques restreintes
	// est egale a l'autorisation de passer en admin
	$modif &= autoriser('modifier', 'auteur', $id_auteur, null, array('statut' => '0minirezo'));
	while ($row_admin = sql_fetch($result)) {
		$id_rubrique = $row_admin["id_rubrique"];
		$h = generer_url_ecrire('naviguer', "id_rubrique=$id_rubrique");
		$restreint .= "\n<li id='rubrest_$id_rubrique'>"
			. ($modif
				? "<input type='checkbox' checked='checked' name='restreintes[]' value='$id_rubrique' />\n"
				: ''
			)
			. "<a href='$h'>"
			. typo($row_admin["multi"])
			. "</a>"
			. '</li>';
	}

	if (!$restreint) {
		$phrase = _T('info_admin_gere_toutes_rubriques')."\n";
	} else {

		$menu =  "<ul id='liste_rubriques_restreintes' style='list-style-image: url("
			. chemin_image("rubrique-12.gif")
			. ")'>"
			. $restreint
			. "</ul>\n";

		// Il faut un element zero pour montrer qu'on a l'interface
		// sinon il est impossible de deslectionner toutes les rubriques
		if ($modif)
			$menu .= "<input type='hidden' name='restreintes[]' value='0' />\n";
		$phrase = _T('info_admin_gere_rubriques');
	}

	if ($auteur['statut'] != '0minirezo')
		$phrase = '';

	return "<p>$phrase</p>\n$menu";
}
Example #8
0
function exec_mots_tous_dist()
{
	global $spip_lang, $spip_lang_left, $spip_lang_right;

	$conf_mot = intval(_request('conf_mot'));
	$son_groupe = intval(_request('son_groupe'));

	pipeline('exec_init',array('args'=>array('exec'=>'mots_tous'),'data'=>''));
	$commencer_page = charger_fonction('commencer_page', 'inc');
	echo $commencer_page(_T('titre_page_mots_tous'), "naviguer", "mots");
	echo debut_gauche('', true);


	echo pipeline('affiche_gauche',array('args'=>array('exec'=>'mots_tous'),'data'=>''));

	if (autoriser('creer','groupemots')  AND !$conf_mot){
		$out = "";
		$result = sql_select("*, ".sql_multi ("titre", "$spip_lang"), "spip_groupes_mots", "", "", "multi");
		while ($row_groupes = sql_fetch($result)) {
			$id_groupe = $row_groupes['id_groupe'];
			$titre_groupe = typo($row_groupes['titre']);		
			$out .= "<li class='item'><a href='#mots_tous-$id_groupe' onclick='$(\"div.mots_tous\").hide().filter(\"#mots_tous-$id_groupe\").show();return false;'>$titre_groupe</a></li>";
		}
		if (strlen($out))
			$out =
			"<a class='verdana1' href='#' onclick='$(\"div.mots_tous\").show();return false;'>"._T('icone_voir_tous_mots_cles')."</a>"
			."<ul class='liste-items raccourcis_rapides'>"
			.$out
			."</ul>"
			;

		echo debut_boite_info(true) . $out . fin_boite_info(true);
		$res = icone_horizontale(_T('icone_creation_groupe_mots'), generer_url_ecrire("mots_type","new=oui"), "groupe-mot-24.gif", "creer.gif",false);
		echo bloc_des_raccourcis($res);
	}


	echo creer_colonne_droite('', true);
	echo pipeline('affiche_droite',array('args'=>array('exec'=>'mots_tous'),'data'=>''));
	echo debut_droite('', true);

	echo gros_titre(_T('titre_mots_tous'),'', false);
	if (autoriser('creer','groupemots')) {
	  echo typo(_T('info_creation_mots_cles')) . aide ("mots") ;
	}
	echo "<br /><br />";

//
// On boucle d'abord sur les groupes de mots
//

	$result = sql_select("*, ".sql_multi ("titre", "$spip_lang"), "spip_groupes_mots", "", "", "multi");

	while ($row_groupes = sql_fetch($result)) {
		if (autoriser('voir','groupemots',$row_groupes['id_groupe'])){
			$id_groupe = $row_groupes['id_groupe'];
			$titre_groupe = typo($row_groupes['titre']);
			$descriptif = $row_groupes['descriptif'];
			$texte = $row_groupes['texte'];
			$unseul = $row_groupes['unseul'];
			$obligatoire = $row_groupes['obligatoire'];
			$tables_liees = $row_groupes['tables_liees'];
			$acces_minirezo = $row_groupes['minirezo'];
			$acces_comite = $row_groupes['comite'];
			$acces_forum = $row_groupes['forum'];

			// Afficher le titre du groupe
			echo "<div id='mots_tous-$id_groupe' class='mots_tous'>";

			echo debut_cadre_enfonce("groupe-mot-24.gif", true, '', $titre_groupe);
			// Affichage des options du groupe (types d'elements, permissions...)
			$res = '';
			$tables_liees = explode(',',$tables_liees);

			$libelles = array('articles'=>'info_articles_2','breves'=>'info_breves_02','rubriques'=>'info_rubriques','syndic'=>'icone_sites_references');
			$libelles = pipeline('libelle_association_mots',$libelles);
			foreach($tables_liees as $table)
				if (strlen($table))
					$res .= "> " . _T(isset($libelles[$table])?$libelles[$table]:"$table:info_$table") . " &nbsp;&nbsp;";

			if ($unseul == "oui" OR $obligatoire == "oui") $res .= "<br />";
			if ($unseul == "oui") $res .= "> "._T('info_un_mot')." &nbsp;&nbsp;";
			if ($obligatoire == "oui") $res .= "> "._T('info_groupe_important')." &nbsp;&nbsp;";

			$res .= "<br />";
			if ($acces_minirezo == "oui") $res .= "> "._T('info_administrateurs')." &nbsp;&nbsp;";
			if ($acces_comite == "oui") $res .= "> "._T('info_redacteurs')." &nbsp;&nbsp;";
			if ($acces_forum == "oui") $res .= "> "._T('info_visiteurs_02')." &nbsp;&nbsp;";

			echo "<span class='verdana1 spip_x-small'>", $res, "</span>";
			if (strlen($descriptif)) {
				echo "<div style='border: 1px dashed #aaa; background-color: #fff;' class='verdana1 spip_x-small '>", propre("{{"._T('info_descriptif')."}} ".$descriptif), "&nbsp; </div>";
			}

			if (strlen($texte)>0){
				echo "<div class='verdana1 spip_small'>", propre($texte), "</div>";
			}

			//
			// Afficher les mots-cles du groupe
			//

			$groupe = sql_countsel("spip_mots", "id_groupe=$id_groupe");

			echo "<div\nid='editer_mots-$id_groupe' style='position: relative;'>";

			// Preliminaire: confirmation de suppression d'un mot lie a qqch
			// (cf fin de afficher_groupe_mots_boucle executee a l'appel precedent)
			if ($conf_mot  AND $son_groupe==$id_groupe) {
				echo confirmer_mot($conf_mot, $row_groupes, $groupe);
			}
			if ($groupe) {
					$grouper_mots = charger_fonction('grouper_mots', 'inc');
				echo $grouper_mots($id_groupe, $groupe);
			}

			echo "</div>";

			if (autoriser('modifier','groupemots',$id_groupe)){
				echo "\n<table cellpadding='0' cellspacing='0' border='0' width='100%'>";
				echo "<tr>";
				echo "<td>";
				echo icone_inline(_T('icone_modif_groupe_mots'), generer_url_ecrire("mots_type","id_groupe=$id_groupe"), "groupe-mot-24.gif", "edit.gif", $spip_lang_left);
				echo "</td>";
				echo "\n<td id='editer_mots-$id_groupe-supprimer'",
					(!$groupe ? '' : " style='visibility: hidden'"),
					">";
				echo icone_inline(_T('icone_supprimer_groupe_mots'), redirige_action_auteur('instituer_groupe_mots', "-$id_groupe", "mots_tous"), "groupe-mot-24.gif", "supprimer.gif", $spip_lang_left);
				echo "</td>";
				echo "<td>";
				echo icone_inline(_T('icone_creation_mots_cles'), generer_url_ecrire("mots_edit","new=oui&id_groupe=$id_groupe&redirect=" . generer_url_retour('mots_tous', "#mots_tous-$id_groupe")), "mot-cle-24.gif", "creer.gif", $spip_lang_right);
				echo "</td></tr></table>";
			}

			echo fin_cadre_enfonce(true);
			echo "</div>";
		}
	}

	echo pipeline('affiche_milieu',array('args'=>array('exec'=>'mots_tous'),'data'=>''));


	echo fin_gauche(), fin_page();
}