Пример #1
0
function ajout_fichier($doc_file, $dest, $cpt_doc, $id_groupe)
{
    global $max_size, $total_max_size;
    /* Vérification du type de fichier */
    $ext = '';
    //if (my_ereg("\.([^.]+)$", $doc_file['name'][$cpt_doc], $match)) {
    if (function_exists("mb_ereg") && mb_ereg("\\.([^.]+)\$", $doc_file['name'][$cpt_doc], $match) || function_exists("ereg") && ereg("\\.([^.]+)\$", $doc_file['name'][$cpt_doc], $match)) {
        $ext = corriger_caracteres(my_strtolower($match[1]));
        $ext = corriger_extension($ext);
    }
    $query = "SELECT id_type FROM ct_types_documents WHERE extension='{$ext}' AND upload='oui'";
    $result = sql_query($query);
    if ($row = @sql_row($result, 0)) {
        $id_type = $row[0];
    } else {
        echo "Erreur : Ce type de fichier n'est pas autorisé en téléchargement.\nSi vous trouvez cela regrettable, contactez l'administrateur.\nIl pourra modifier ce paramétrage dans\n   *Gestion des modules/Cahiers de textes/Types de fichiers autorisés en téléchargement*.";
        die;
    }
    /* Vérification de la taille du fichier */
    $max_size_ko = $max_size / 1024;
    $taille = $doc_file['size'][$cpt_doc];
    if ($taille > $max_size) {
        echo "Erreur : Téléchargement impossible : taille maximale autorisée : " . $max_size_ko . " Ko";
        die;
    }
    if ($taille == 0) {
        echo "Le fichier sélectionné semble vide : transfert impossible.";
        die;
    }
    $query = "SELECT DISTINCT sum(taille) somme FROM ct_documents d, ct_entry e WHERE (e.id_groupe='" . $id_groupe . "' and e.id_ct = d.id_ct)";
    $total = sql_query1($query);
    if ($total + $taille > $total_max_size) {
        echo "Erreur : Téléchargement impossible : espace disque disponible (" . ($total_max_size - $total) / 1024 . " Ko) insuffisant.";
        die;
    }
    /* Crétion du répertoire de destination */
    if (!creer_repertoire($dest)) {
        echo "Erreur : Problème d'écriture sur le répertoire. Veuillez signaler ce problème à l'administrateur du site";
        echo $dest;
        die;
    }
    /* Recopier le fichier */
    $nom_sans_ext = mb_substr(basename($doc_file['name'][$cpt_doc]), 0, mb_strlen(basename($doc_file['name'][$cpt_doc])) - (mb_strlen($ext) + 1));
    $nom_sans_ext = my_ereg_replace("[^.a-zA-Z0-9_=-]+", "_", $nom_sans_ext);
    if (strstr($nom_sans_ext, "..")) {
        echo "Erreur : Problème de transfert : le fichier n'a pas pu être transféré sur le répertoire. Veuillez signaler ce problème à l'administrateur du site";
        die;
    }
    $n = 0;
    while (file_exists($newFile = $dest . "/" . $nom_sans_ext . ($n++ ? '-' . $n : '') . '.' . $ext)) {
    }
    $dest_file_path = $newFile;
    if (!deplacer_fichier_upload($doc_file['tmp_name'][$cpt_doc], $dest_file_path)) {
        echo "Erreur : Problème de transfert : le fichier n'a pas pu être transféré sur le répertoire. Veuillez signaler ce problème à l'administrateur du site";
        die;
    }
    return $dest_file_path;
}
Пример #2
0
function action_poster_forum_prive_post($r)
{
	list(,$id, $id_parent, $statut, $script, $objet) = $r;

	if (_request('valider_forum') AND ($statut!='')) {
		include_spip('inc/texte');
		include_spip('inc/forum');

		$titre_message = corriger_caracteres(_request('titre_message'));
		$texte = corriger_caracteres(_request('texte'));

		$id_forum = sql_insertq('spip_forum', array(
			$objet => $id,
			'titre' => $titre_message,
			'texte' => $texte,
			'date_heure' => date('Y-m-d H:i:s'),
			'nom_site' => _request('nom_site'),
			'url_site' => _request('url_site'),
			'statut' => $statut,
			'id_auteur' =>$GLOBALS['visiteur_session']['id_auteur'],
			'auteur' => $GLOBALS['visiteur_session']['nom'],
			'email_auteur' => $GLOBALS['visiteur_session']['email'],
			'id_parent' => $id_parent));

		calculer_threads();

		if ($objet == 'id_message') {
			sql_updateq("spip_auteurs_messages", array("vu" => 'non'), "id_message=$id");

		}

		// Notification
		if ($notifications = charger_fonction('notifications', 'inc')) {
			$notifications('forumprive', $id_forum);
		}

		$retour = urldecode(_request('redirect'));
		$retour = parametre_url($retour, 'modif_forum', 'fin', '&');
		$retour = parametre_url($retour, 'texte', $objet, '&');
#		$retour = parametre_url($retour, 'script', $script, '&');
		redirige_par_entete($retour ."#id".$id_forum);
	} else {
	   // previsualisation : on ne fait que passer .... 
	   // et si les clients HTTP respectaient le RFC HTTP selon lequel
	   // une redirection d'un POST doit etre en POST et pas en GET
	   // on n'aurait pas a faire l'horreur ci-dessous.
		  
	   set_request('action', '');
	   set_request('exec', 'poster_forum_prive');
	   set_request('id', $id);
	   set_request('id_parent', $id_parent);
	   set_request('statut', $statut);
	   set_request('script', $script);

	   include(_DIR_RESTREINT.'index.php');
	   exit;
	}
}
Пример #3
0
function url_nettoyer($titre,$longueur_maxi,$longueur_min=0,$separateur='-',$filtre=''){
	if (!defined('_TRANSLITTERER_URL')) define('_TRANSLITTERER_URL', true);
	
	$titre = supprimer_tags(supprimer_numero(extraire_multi($titre)));
	$url = corriger_caracteres($titre);
	
	
	if (_TRANSLITTERER_URL) $url = translitteration($url);

	if ($filtre)
		$url = $filtre($url);

	// on va convertir tous les caracteres de ponctuation et espaces
	// a l'exception de l'underscore (_), car on veut le conserver dans l'url
	$url = str_replace('_', chr(7), $url);
	$url = @preg_replace(',[[:punct:][:space:]]+,u', ' ', $url);
	$url = str_replace(chr(7), '_', $url);

	// S'il reste trop de caracteres non latins, les gerer comme wikipedia
	// avec rawurlencode :
	if (_TRANSLITTERER_URL && preg_match_all(",[^a-zA-Z0-9 _]+,", $url, $r, PREG_SET_ORDER)) {
		foreach ($r as $regs) {
			$url = substr_replace($url, rawurlencode($regs[0]),
				strpos($url, $regs[0]), strlen($regs[0]));
		}
	}

	// S'il reste trop peu, renvoyer vide
	if (strlen($url) < $longueur_min)
		return '';

	// Sinon couper les mots et les relier par des $separateur
	if (_TRANSLITTERER_URL) $mots = preg_split(",[^a-zA-Z0-9_%]+,", $url); 
	else $mots = preg_split(",[\s]+,", $url);
	$url = '';
	foreach ($mots as $mot) {
		if (!strlen($mot)) continue;
		$url2 = $url.$separateur.$mot;

		// Si on depasse $longueur_maxi caracteres, s'arreter
		// ne pas compter 3 caracteres pour %E9 mais un seul
		$long = preg_replace(',%.,', '', $url2);
		if (strlen($long) > $longueur_maxi) {
			break;
		}

		$url = $url2;
	}
	$url = substr($url, 1);

	// On enregistre en utf-8 dans la base
	$url = rawurldecode($url);

	if (strlen($url) < $longueur_min)
		return '';
	return $url;
}
function formulaires_rediriger_article_traiter_dist($id_article, $retour = '')
{
    $url = preg_replace(",^\\s*https?://\$,i", "", rtrim(_request('redirection')));
    if ($url) {
        $url = corriger_caracteres($url);
    }
    include_spip('action/editer_article');
    articles_set($id_article, array('virtuel' => $url));
    $js = _AJAX ? '<script type="text/javascript">if (window.ajaxReload) ajaxReload("wysiwyg");</script>' : '';
    return array('message_ok' => ($url ? _T('info_redirection_activee') : _T('info_redirection_desactivee')) . $js, 'editable' => true);
}
Пример #5
0
function spip_apres_typo($letexte)
{
    // caracteres speciaux
    $letexte = corriger_caracteres($letexte);
    $letexte = str_replace("'", "&#8217;", $letexte);
    // relecture des &nbsp;
    if ($GLOBALS['flag_ecrire'] and $GLOBALS['revision_nbsp']) {
        $letexte = preg_replace('/&nbsp;/', '<span class="spip-nbsp">&nbsp;</span>', $letexte);
    }
    if (@function_exists('apres_typo')) {
        return apres_typo($letexte);
    }
    return $letexte;
}
Пример #6
0
function action_description_outil_post($index) {
	global $metas_vars;
	if(defined('_SPIP19300')) $connect_id_auteur = $GLOBALS['auteur_session']['id_auteur'];
		else global $connect_id_auteur;
cs_log("Debut : action_description_outil_post($index) - On modifie la(les) variable(s) dans la base");

	// on recupere dans le POST le nom des variables a modifier et le nom de l'outil correspondant
	$variables = unserialize(urldecode(corriger_caracteres(_request('variables'))));
	$outil = corriger_caracteres(_request('outil'));
//cs_log($variables, '$variables = ');
cs_log($metas_vars, 'metas_vars :');
	// besoin des outils pour l'autorisation de modifier les variables
	include_spip('cout_utils');
	include_spip('config_outils');
	global $outils, $cs_variables;
	// on traite chaque variable
	foreach($variables as $var) if(autoriser('configurer', 'variable', 0, NULL, array('nom'=>$var, 'outil'=>$outils[$outil]))) {
		// on recupere dans le POST la nouvelle valeur de la variable
		$final = corriger_caracteres(_request($var));
		if (in_array($var, $metas_vars['_nombres'])) $final = intval($final);
		spip_log("Outil du Couteau Suisse ($outil). Demande de modification sur une variable par l'auteur id=$connect_id_auteur : %$var% = $final");
		// et on modifie les metas !
		if(!isset($cs_variables[$var]['externe'])) $metas_vars[$var] = $final;
		if(isset($cs_variables[$var]['action'])) {
			$action = str_replace('%s', $final, $cs_variables[$var]['action']);
			spip_log("Outil du Couteau Suisse ($outil). Demande d'action sur cette variable : ".$action);
			eval($action);
		}
			
	} else 
		spip_log("Outil du Couteau Suisse n°$index. Modification interdite de la variable %$var% par l'auteur id=$connect_id_auteur !!");
//cs_log($metas_vars, " -- metas_vars = ");
	ecrire_meta('tweaks_variables', serialize($metas_vars));
	ecrire_metas();

cs_log(" -- donc, reinitialisation forcee !");
	// on reinitialise tout, au cas ou ...
	include_spip('inc/invalideur');
	suivre_invalideur("1"); # tout effacer
	purger_repertoire(_DIR_SKELS);
	purger_repertoire(_DIR_CACHE);
	include_spip('cout_utils');
	cs_initialisation(true);
cs_log(" FIN : action_description_outil_post(Array($index)) - Reinitialisation forcee terminee.");
}
Пример #7
0
function anti_inject(&$_value, $_key) {
    global $mysqli;

    if (is_array($_value)) {
       foreach ($_value as $key2 => $value2) {
           $value2 = corriger_caracteres($value2);
           if (get_magic_quotes_gpc()) $_value[$key2] = stripslashes($value2);
           if (!is_numeric($_value[$key2])) {
               $_value[$key2] = $mysqli->real_escape_string($_value[$key2]);
           }
       }
   } else {
       $_value = corriger_caracteres($_value);
       if (get_magic_quotes_gpc())    $_value = stripslashes($_value);
       if (!is_numeric($_value)) {
           $_value = $mysqli->real_escape_string($_value);
       }
   }
}
Пример #8
0
         #on cree ou recree ".TABLE_PREFIX."_area_periodes pour le domaine
         if (protect_data_sql($_POST['enable_periods']) == 'y') {
             if (isset($number_periodes)) {
                 settype($number_periodes, "integer");
                 if ($number_periodes < 1) {
                     $number_periodes = 1;
                 }
                 $del_periode = grr_sql_query("delete from " . TABLE_PREFIX . "_area_periodes where id_area='" . $id_area . "'");
                 #on efface le modele par defaut avec area=0
                 $del_periode = grr_sql_query("delete from " . TABLE_PREFIX . "_area_periodes where id_area='0'");
                 $i = 0;
                 $num = 0;
                 while ($i < $number_periodes) {
                     $temp = "periode_" . $i;
                     if (isset($_POST[$temp])) {
                         $nom_periode = corriger_caracteres($_POST[$temp]);
                         $reg_periode = grr_sql_query("insert into " . TABLE_PREFIX . "_area_periodes set\n\t\t\t\t\t\t\t\tid_area='" . $id_area . "',\n\t\t\t\t\t\t\t\tnum_periode='" . $num . "',\n\t\t\t\t\t\t\t\tnom_periode='" . protect_data_sql($nom_periode) . "'\n\t\t\t\t\t\t\t\t");
                         #on cree un modele par defaut avec area=0
                         $reg_periode = grr_sql_query("insert into " . TABLE_PREFIX . "_area_periodes set\n\t\t\t\t\t\t\t\tid_area='0',\n\t\t\t\t\t\t\t\tnum_periode='" . $num . "',\n\t\t\t\t\t\t\t\tnom_periode='" . protect_data_sql($nom_periode) . "'");
                         $num++;
                     }
                     $i++;
                 }
             }
         }
         $msg = get_vocab("message_records");
     }
 }
 if ($access == 'a') {
     $sql = "DELETE FROM " . TABLE_PREFIX . "_j_user_area WHERE id_area='{$id_area}'";
     if (grr_sql_command($sql) < 0) {
Пример #9
0
    die;
}
$id_classe = isset($_POST['id_classe']) ? $_POST['id_classe'] : (isset($_GET['id_classe']) ? $_GET['id_classe'] : NULL);
$msg = "";
if (isset($_POST['is_posted'])) {
    check_token();
    $pb_record = "no";
    $ele_login = isset($_POST["ele_login"]) ? $_POST["ele_login"] : NULL;
    $favorable = isset($_POST["favorable"]) ? $_POST["favorable"] : NULL;
    for ($i = 0; $i < count($ele_login); $i++) {
        // Vérifier si l'élève est bien dans la classe?
        // Inutile si seul l'admin accède et qu'on ne limite pas l'accès à telle ou telle classe
        $nom_log = "app_eleve_" . $i;
        //echo "\$nom_log=$nom_log<br />";
        if (isset($NON_PROTECT[$nom_log])) {
            $app = traitement_magic_quotes(corriger_caracteres($NON_PROTECT[$nom_log]));
        } else {
            $app = "";
        }
        $app = suppression_sauts_de_lignes_surnumeraires($app);
        //if((isset($fav[$i]))||(isset($b2i[$i]))||(isset($b2i[$i]))) {
        if (isset($favorable[$i])) {
            //if(($favorable[$i]=='O')||($favorable[$i]=='N')) {
            if ($favorable[$i] == 'O' || $favorable[$i] == 'N' || $favorable[$i] == '') {
                $sql = "SELECT 1=1 FROM notanet_avis WHERE login='" . $ele_login[$i] . "';";
                $res_ele = mysqli_query($GLOBALS["mysqli"], $sql);
                if (mysqli_num_rows($res_ele) == 0) {
                    $sql = "INSERT INTO notanet_avis SET login='" . $ele_login[$i] . "'";
                    $sql .= ",favorable='" . $favorable[$i] . "'";
                    $sql .= ",avis='" . $app . "'";
                    $sql .= ";";
Пример #10
0
					}
				}
			}
		}
		else {
			/*
			$id_nature=$_POST['traitement'];
			$sql="SELECT * FROM s_types_sanctions WHERE id_nature='".$id_nature."';";
			//echo "$sql<br />\n";
			$res=mysql_query($sql);
			if(mysql_num_rows($res)>0) {
				$lig=mysql_fetch_object($res);
				$type_sanction=$lig->nature;
			*/
				if (isset($NON_PROTECT["description"])){
					$description=traitement_magic_quotes(corriger_caracteres($NON_PROTECT["description"]));
					// Contrôle des saisies pour supprimer les sauts de lignes surnuméraires.
					$description=suppression_sauts_de_lignes_surnumeraires($description);
				}
				else {
					$description="";
				}

				if(isset($id_sanction)) {
					// Modification???
					$sql="SELECT 1=1 FROM s_sanctions WHERE id_sanction='$id_sanction';";
					//echo "$sql<br />\n";
					$res=mysqli_query($GLOBALS["mysqli"], $sql);
					if(mysqli_num_rows($res)==0) {
						$msg.="La ".$mod_disc_terme_sanction." n°$id_sanction n'existe pas dans 's_sanctions'.<br />Elle ne peut pas être mise à jour.<br />";
					}
Пример #11
0
 if (isset($current_group["eleves"][$periode_num]["users"][$reg_eleve_login]["classe"])) {
     $id_classe = $current_group["eleves"][$periode_num]["users"][$reg_eleve_login]["classe"];
     //if ($current_group["classe"]["ver_periode"][$id_classe][$periode_num] == "N") {
     $note = $note_eleve[$i];
     $elev_statut = '';
     //==============================
     // PREPARATIFS boireaus 20080422
     // Pour passer à no_anti_inject comme pour les autres saisies d'appréciations
     if ($mode_commentaire_20080422 != "no_anti_inject") {
         // Problème: les accents sont codés en HTML...
         $comment = $comment_eleve[$i];
         // Cela fonctionne chez moi avec cette correction (accents, apostrophes et retours à la ligne):
         $comment = addslashes(my_ereg_replace('(\\\\r\\\\n)+', "\r\n", my_ereg_replace("&#039;", "'", html_entity_decode($comment))));
     } else {
         if (isset($NON_PROTECT["comment_eleve" . $i])) {
             $comment = traitement_magic_quotes(corriger_caracteres($NON_PROTECT["comment_eleve" . $i]));
         } else {
             $comment = "";
         }
         //echo "$i: $comment<br />";
         // Contrôle des saisies pour supprimer les sauts de lignes surnuméraires.
         $comment = my_ereg_replace('(\\\\r\\\\n)+', "\r\n", $comment);
     }
     //==============================
     //echo "$reg_eleve_login : $note <br />";
     if ($note == 'disp' || $note == 'd') {
         $note = '0';
         $elev_statut = 'disp';
     } elseif ($note == 'abs' || $note == 'a') {
         $note = '0';
         $elev_statut = 'abs';
Пример #12
0
 echo "<tr><td><p class=\"small\">Identifiant de la matière</p></td><td><p class=\"small\">Nom complet</p></td></tr>";
 //=========================
 $fp = fopen($dbf_file['tmp_name'], "r");
 // On lit une ligne pour passer la ligne d'entête:
 $ligne = fgets($fp, 4096);
 //=========================
 $nb_reg_no = 0;
 for ($k = 1; $k < $nblignes + 1; $k++) {
     //$ligne = dbase_get_record($fp,$k);
     if (!feof($fp)) {
         $ligne = fgets($fp, 4096);
         if (trim($ligne) != "") {
             $tabligne = explode(";", $ligne);
             for ($i = 0; $i < count($tabchamps); $i++) {
                 //$affiche[$i] = traitement_magic_quotes(corriger_caracteres(dbase_filter(trim($ligne[$tabindice[$i]]))));
                 $affiche[$i] = traitement_magic_quotes(corriger_caracteres(dbase_filter(trim($tabligne[$tabindice[$i]]))));
             }
             $verif = mysqli_query($GLOBALS["mysqli"], "select matiere, nom_complet from matieres where matiere='{$affiche['0']}'");
             $resverif = mysqli_num_rows($verif);
             if ($resverif == 0) {
                 $req = mysqli_query($GLOBALS["mysqli"], "insert into matieres set matiere='{$affiche['0']}', nom_complet='{$affiche['1']}', priority='0',matiere_aid='n',matiere_atelier='n'");
                 if (!$req) {
                     $nb_reg_no++;
                     echo mysqli_error($GLOBALS["mysqli"]);
                 } else {
                     echo "<tr><td><p><font color='red'>{$affiche['0']}</font></p></td><td><p>" . htmlspecialchars($affiche[1]) . "</p></td></tr>";
                 }
             } else {
                 $nom_complet = old_mysql_result($verif, 0, 'nom_complet');
                 echo "<tr><td><p><font color='green'>{$affiche['0']}</font></p></td><td><p>" . htmlspecialchars($nom_complet) . "</p></td></tr>";
             }
Пример #13
0
			}
		}
		else {
			tentative_intrusion(2, "Tentative de saisie d'avis du conseil de classe pour ".$eleve_saisie_avis.".");
			$mess=rawurlencode("Tentative non autorisée de saisie d'avis du conseil de classe.");
			header("Location: ../accueil.php?msg=$mess");
			die();
		}

		$sql="SELECT verouiller FROM periodes WHERE id_classe='$id_classe' AND num_periode='$num_periode_saisie';";
		//echo "$sql<br />";
		$test_verr_per=mysqli_query($GLOBALS["mysqli"], $sql);
		$lig_verr_per=mysqli_fetch_object($test_verr_per);
		if($lig_verr_per->verouiller!='O') {

			$current_eleve_login_ap = isset($NON_PROTECT["current_eleve_login_ap"]) ? traitement_magic_quotes(corriger_caracteres($NON_PROTECT["current_eleve_login_ap"])) :NULL;

			// ***** AJOUT POUR LES MENTIONS *****
			$current_eleve_login_me = isset($_POST["current_eleve_login_me"]) ? $_POST["current_eleve_login_me"] : NULL;
			// ***** FIN DE L'AJOUT POUR LES MENTIONS *****

			//echo "\$current_eleve_login_ap=$current_eleve_login_ap<br />";

			$test_eleve_avis_query = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM avis_conseil_classe WHERE (login='$eleve_saisie_avis' AND periode='$num_periode_saisie')");
			$test = mysqli_num_rows($test_eleve_avis_query);
			if ($test != "0") {
				$sql="UPDATE avis_conseil_classe SET avis='$current_eleve_login_ap',";
				if(isset($current_eleve_login_me)) {$sql.="id_mention='$current_eleve_login_me',";}
				$sql.="statut='' WHERE (login='$eleve_saisie_avis' AND periode='$num_periode_saisie');";
				$register = mysqli_query($GLOBALS["mysqli"], $sql);
			}
/**
 * Ajouter les champs extras soumis par les formulaire CVT editer_xx
 *
 * Pour chaque champs extras envoyé par le formulaire d'édition,
 * ajoute les valeurs dans l'enregistrement à effectuer.
 * 
 * @pipeline pre_edition
 * @param array $flux Données du pipeline
 * @return array      Données du pipeline
**/
function cextras_pre_edition($flux)
{
    include_spip('inc/cextras');
    include_spip('inc/saisies_lister');
    $table = $flux['args']['table'];
    if ($saisies = champs_extras_objet($table)) {
        // Restreindre les champs postés en fonction des autorisations de les modifier
        // au cas où un malin voudrait en envoyer plus que le formulaire ne demande
        $saisies = champs_extras_autorisation('modifier', objet_type($table), $saisies, $flux['args']);
        $saisies = champs_extras_saisies_lister_avec_sql($saisies);
        foreach ($saisies as $saisie) {
            $nom = $saisie['options']['nom'];
            if (_request('cextra_' . $nom)) {
                $extra = _request($nom);
                if (is_array($extra)) {
                    $extra = join(',', $extra);
                }
                $flux['data'][$nom] = corriger_caracteres($extra);
            }
        }
    }
    return $flux;
}
Пример #15
0
/**
 * http://code.spip.net/@corriger_typo
 *
 * @param string $t
 * @param string $lang
 * @return string
 */
function corriger_typo($t, $lang = '')
{
    static $typographie = array();
    // Plus vite !
    if (!$t) {
        return $t;
    }
    $t = pipeline('pre_typo', $t);
    // Caracteres de controle "illegaux"
    $t = corriger_caracteres($t);
    // Proteger les caracteres typographiques a l'interieur des tags html
    if (preg_match_all(_TYPO_BALISE, $t, $regs, PREG_SET_ORDER)) {
        foreach ($regs as $reg) {
            $insert = $reg[0];
            // hack: on transforme les caracteres a proteger en les remplacant
            // par des caracteres "illegaux". (cf corriger_caracteres())
            $insert = strtr($insert, _TYPO_PROTEGER, _TYPO_PROTECTEUR);
            $t = str_replace($reg[0], $insert, $t);
        }
    }
    // trouver les blocs multi et les traiter a part
    $t = extraire_multi($e = $t, $lang, true);
    $e = $e === $t;
    // Charger & appliquer les fonctions de typographie
    $idxl = "{$lang}:" . (isset($GLOBALS['lang_objet']) ? $GLOBALS['lang_objet'] : $GLOBALS['spip_lang']);
    if (!isset($typographie[$idxl])) {
        $typographie[$idxl] = charger_fonction(lang_typo($lang), 'typographie');
    }
    $t = $typographie[$idxl]($t);
    // Les citations en une autre langue, s'il y a lieu
    if (!$e) {
        $t = echappe_retour($t, 'multi');
    }
    // Retablir les caracteres proteges
    $t = strtr($t, _TYPO_PROTECTEUR, _TYPO_PROTEGER);
    // pipeline
    $t = pipeline('post_typo', $t);
    # un message pour abs_url - on est passe en mode texte
    $GLOBALS['mode_abs_url'] = 'texte';
    return $t;
}
Пример #16
0
 $reg_nom = isset($_POST["reg_nom"]) ? $_POST["reg_nom"] : NULL;
 $reg_prenom = isset($_POST["reg_prenom"]) ? $_POST["reg_prenom"] : NULL;
 $reg_email = isset($_POST["reg_email"]) ? $_POST["reg_email"] : NULL;
 $reg_mdp = isset($_POST["reg_mdp"]) ? $_POST["reg_mdp"] : NULL;
 $reg_type_user = isset($_POST["reg_type_user"]) ? $_POST["reg_type_user"] : NULL;
 $reg_statut = isset($_POST["reg_statut"]) ? $_POST["reg_statut"] : NULL;
 $reg_type_auth = isset($_POST["reg_type_auth"]) ? $_POST["reg_type_auth"] : NULL;
 $nb_row++;
 for ($row = 1; $row < $nb_row; $row++) {
     if ($reg_type_auth[$row] != "ext") {
         $reg_mdp[$row] = md5(unslashes($reg_mdp[$row]));
     }
     // On nettoie les windozeries
     $reg_nom[$row] = protect_data_sql(corriger_caracteres($reg_nom[$row]));
     $reg_prenom[$row] = protect_data_sql(corriger_caracteres($reg_prenom[$row]));
     $reg_email[$row] = protect_data_sql(corriger_caracteres($reg_email[$row]));
     $test_login = grr_sql_count(grr_sql_query("SELECT login FROM " . TABLE_PREFIX . "_utilisateurs WHERE login='{$reg_login[$row]}'"));
     if ($test_login == 0) {
         $regdata = grr_sql_query("INSERT INTO " . TABLE_PREFIX . "_utilisateurs SET nom='" . $reg_nom[$row] . "',prenom='" . $reg_prenom[$row] . "',login='" . $reg_login[$row] . "',email='" . $reg_email[$row] . "',password='" . protect_data_sql($reg_mdp[$row]) . "',statut='" . $reg_type_user[$row] . "',etat='" . $reg_statut[$row] . "',source='" . $reg_type_auth[$row] . "'");
     } else {
         $regdata = grr_sql_query("UPDATE " . TABLE_PREFIX . "_utilisateurs SET nom='" . $reg_nom[$row] . "',prenom='" . $reg_prenom[$row] . "',email='" . $reg_email[$row] . "',password='" . protect_data_sql($reg_mdp[$row]) . "',statut='" . $reg_type_user[$row] . "',etat='" . $reg_statut[$row] . "',source='" . $reg_type_auth[$row] . "' WHERE login='" . $reg_login[$row] . "'");
     }
     if (!$regdata) {
         echo "<p><font color=\"red\">" . $reg_login[$row] . get_vocab("deux_points") . get_vocab("message_records_error") . "</font></p>";
     } else {
         if ($reg_stat[$row] == "nouveau") {
             echo "<p>" . $reg_login[$row] . get_vocab("deux_points") . get_vocab("admin_import_users_csv12") . "</p>";
         } else {
             echo "<p>" . $reg_login[$row] . get_vocab("deux_points") . get_vocab("message_records") . "</p>";
         }
     }
Пример #17
0
function action_virtualiser_post($r, $url)
{
	$url = preg_replace(",^ *https?://$,i", "", rtrim($url));
	if ($url) $url = corriger_caracteres("=$url");
	sql_updateq('spip_articles', array('chapo'=> $url, 'date_modif' => date('Y-m-d H:i:s')), "id_article=" . $r[1]);
}
Пример #18
0
					$ele_id=$_POST['modif_'.$cpt.'_ele_id'];
					$ele_nom=traitement_magic_quotes(corriger_caracteres($_POST['modif_'.$cpt.'_ele_nom']));
					$ele_prenom=traitement_magic_quotes(corriger_caracteres($_POST['modif_'.$cpt.'_ele_prenom']));

					$resp_legal=$_POST['modif_'.$cpt.'_resp_legal'];
					$pers_contact=$_POST['modif_'.$cpt.'_pers_contact'];
					*/

					$pers_id=isset($_POST['new_'.$cpt.'_pers_id']) ? $_POST['new_'.$cpt.'_pers_id'] : NULL;
					$resp_nom=isset($_POST['new_'.$cpt.'_resp_nom']) ? traitement_magic_quotes(corriger_caracteres($_POST['new_'.$cpt.'_resp_nom'])) : NULL;
					$resp_prenom=isset($_POST['new_'.$cpt.'_resp_prenom']) ? traitement_magic_quotes(corriger_caracteres($_POST['new_'.$cpt.'_resp_prenom'])) : NULL;

					$ele_id=isset($_POST['new_'.$cpt.'_ele_id']) ? $_POST['new_'.$cpt.'_ele_id'] : NULL;
					$ele_nom=isset($_POST['new_'.$cpt.'_ele_nom']) ? traitement_magic_quotes(corriger_caracteres($_POST['new_'.$cpt.'_ele_nom'])) : NULL;
					$ele_prenom=isset($_POST['new_'.$cpt.'_ele_prenom']) ? traitement_magic_quotes(corriger_caracteres($_POST['new_'.$cpt.'_ele_prenom'])) : NULL;

					$resp_legal=isset($_POST['new_'.$cpt.'_resp_legal']) ? $_POST['new_'.$cpt.'_resp_legal'] : NULL;
					$pers_contact=isset($_POST['new_'.$cpt.'_pers_contact']) ? $_POST['new_'.$cpt.'_pers_contact'] : NULL;


					if((isset($pers_id))&&(isset($resp_nom))&&(isset($resp_prenom))&&(isset($ele_id))&&(isset($ele_nom))&&(isset($ele_prenom))&&(isset($resp_legal))&&(isset($pers_contact))){
						if($i>0){echo ", ";}
						//echo "$pers_id - $nom - $prenom<br />\n";
						//echo "$resp_prenom $resp_nom ($pers_id) / $ele_prenom $ele_nom ($ele_id)\n";
						echo stripslashes("$resp_prenom $resp_nom")." ($pers_id) / ".stripslashes("$ele_prenom $ele_nom")." ($ele_id)\n";

						// On supprime l'inscription précédente si elle existe:
						$sql="SELECT pers_id FROM responsables2 WHERE (pers_id='$pers_id' AND ele_id='$ele_id')";
						//echo "$sql<br />\n";
						$res1=mysqli_query($GLOBALS["mysqli"], $sql);
Пример #19
0
	$sql = "SELECT ID_TEMPO,ELENOM,ELEPRE,ELENOET,ELE_ID,ELESEXE,ELEDATNAIS,ELEDOUBL,ELENONAT,ELEREG,DIVCOD,ETOCOD_EP
									FROM temp_gep_import2
									ORDER BY DIVCOD,ELENOM,ELEPRE";
	$call_data = mysqli_query($GLOBALS["mysqli"], $sql) OR DIE('Erreur dans la requête '.$sql.' '.mysqli_error($GLOBALS["mysqli"]));

    $nb = mysqli_num_rows($call_data);
    $i = "0";
	$j = 0;
    while ($i < $nb) {
        $req = mysqli_query($GLOBALS["mysqli"], "select col1, col2 from tempo2 where col1 = '$i'");
        $reg_login = @old_mysql_result($req, 0, 'col2');
		$inc = @old_mysql_result($req, 0, 'col1');

        $id_tempo = @old_mysql_result($call_data, $i, "ID_TEMPO");
        $no_gep = @old_mysql_result($call_data, $i, "ELENONAT");
        $reg_nom = traitement_magic_quotes(corriger_caracteres(@old_mysql_result($call_data, $i, "ELENOM")));
        $reg_prenom = @old_mysql_result($call_data, $i, "ELEPRE");
        $reg_elenoet = @old_mysql_result($call_data, $i, "ELENOET");
        //$reg_ereno = @old_mysql_result($call_data, $i, "ERENO");
        $reg_ele_id = @old_mysql_result($call_data, $i, "ELE_ID");
        $reg_sexe = @old_mysql_result($call_data, $i, "ELESEXE");
        $reg_naissance = @old_mysql_result($call_data, $i, "ELEDATNAIS");
        $reg_doublant = @old_mysql_result($call_data, $i, "ELEDOUBL");

        // si le login comporte le motif 'erreur', alors on affiche
        if (strpos($reg_login, "erreur") === false) {
        	// On ne fait rien
        }else{
        	// On vérifie quand même si il n'y a pas un nom qui correspond à celui-ci dans ldap_bx
        	$sql_r = "SELECT login_u, nom_u, prenom_u FROM ldap_bx WHERE nom_u = '".$reg_nom."' AND prenom_u = '".$reg_prenom."' AND statut_u = 'student'";
        	$query_r = mysqli_query($GLOBALS["mysqli"], $sql_r);
Пример #20
0
function exec_spiplistes_liste_gerer () {

	include_spip('inc/autoriser');
	include_spip('inc/mots');
	include_spip('inc/lang');
	include_spip('inc/editer_auteurs');
	include_spip('base/spiplistes_tables');
	include_spip('inc/spiplistes_api');
	include_spip('inc/spiplistes_api_presentation');
	include_spip('inc/spiplistes_dater_envoi');
	include_spip('inc/spiplistes_naviguer_paniers');
	include_spip('inc/spiplistes_listes_selectionner_auteur');
	
	global $meta
		, $connect_statut
		, $connect_toutes_rubriques
		, $connect_id_auteur
		, $spip_lang_left
		, $spip_lang_right
		, $couleur_claire
		;

	// initialise les variables postees par le formulaire
	foreach(array(
		'new'	// nouvelle liste si 'oui'
		, 'id_liste'// si modif dans l'editeur
		, 'btn_liste_edit', 'titre', 'texte', 'pied_page' // renvoyes par l'editeur
		, 'btn_modifier_diffusion', 'changer_lang', 'statut' // local
		, 'btn_modifier_replyto', 'email_envoi' // local
		, 'btn_modifier_courrier_auto', 'message_auto' // local
			, 'auto_chrono', 'auto_weekly', 'auto_mois'
			, 'titre_message', 'patron', 'periode', 'envoyer_maintenant'
			, 'jour', 'mois', 'annee', 'heure', 'minute'
		, 'btn_patron_pied', 'btn_grand_patron' // boites gauches
		, 'btn_valider_forcer_abos', 'forcer_abo', 'forcer_format_abo', 'forcer_format_reception'
		, 'btn_supprimer_liste' //local
		) as $key) {
		$$key = _request($key);
	}
	foreach(array('id_liste', 'periode') as $key) {
		$$key = intval($$key);
	}
	foreach(array('titre', 'texte', 'pied_page') as $key) {
		$$key = trim(corriger_caracteres($$key));
	}
	$lang = $changer_lang;

	$cherche_auteur = _request('cherche_auteur');
	$debut = _request('debut');

	$envoyer_maintenant = ($envoyer_maintenant == 'oui');
	
	$boite_pour_confirmer_envoi_maintenant = 
		$grosse_boite_moderateurs = 
		$message_erreur =
		$page_result = "";

	if(!$id_liste)
	{
	//////////////////////////////////////////////////////
	// Creer une liste
	////
		// admin lambda peut creer une liste
		$flag_editable = ($connect_statut == "0minirezo");
		
		if ($btn_liste_edit && ($new=='oui')) {
			
			if ($titre == '') {
				$titre = _T('spiplistes:liste_sans_titre');
			}
			
			$pied_page = _SPIPLISTES_PATRON_PIED_DEFAUT;
			
			if($id_liste = spiplistes_listes_liste_creer(_SPIPLISTES_LIST_PRIVATE, $GLOBALS['spip_lang']
				, $titre, $texte, $pied_page)) {
					spiplistes_log("id_liste #$id_liste added by id_auteur #$connect_id_auteur");
			}
		} 	
	}
	else if($id_liste > 0)
	{
	//////////////////////////////////////////////////////
	// Modifier une liste
	////
		// les admins toutes rubriques et le moderateur seuls peuvent modifier la liste
		$flag_editable = autoriser('moderer', 'liste', $id_liste);

		if($flag_editable)
		{
		
			// Recupere les donnees de la liste courante pour optimiser l'update
			$sql_select = "statut,titre,date,lang";
			$sql_result = sql_select($sql_select, "spip_listes", "id_liste=".sql_quote($id_liste), "", "", "1");
			if($row = sql_fetch($sql_result)) {
				foreach(explode(",", $sql_select) as $key) {
					$current_liste[$key] = $row[$key];
				}
			}
			
			///////////////////////////////////
			// Les modifications (sql_upadteq)
			// A noter, ne pas preparer les valeurs par sql_quote()
			//  sql_upadteq() s'en occupe
			
			$sql_champs = array();

			// Retour de l'editeur ?
			if($btn_liste_edit) {
				$titre = corriger_caracteres($titre);
				$texte = corriger_caracteres($texte);
				if(empty($titre)) {
					$titre = filtrer_entites(_T('spiplistes:Nouvelle_liste_de_diffusion'));
				}
				$sql_champs['titre'] = $titre;
				$sql_champs['texte'] = $texte;
			}
			
			// Modifier le grand patron ?
			// a partir de 2.0049, le patron de pied est construit par la meleuse
			// afin de permettre _texte et multilingue
			if($btn_grand_patron && $patron) {
				$sql_champs['patron'] = $patron;
			}
			
			// Modifier patron de pied ?
			if($btn_patron_pied && $patron) {
				$sql_champs['pied_page'] = $patron;
			}
			
			// Modifier diffusion ?
			if($btn_modifier_diffusion)
			{
				$current_statut = ($statut)
					? $statut
					: $current_liste['statut']
					;
					
				spiplistes_debug_log ('Modification diffusion statut: '.$current_statut);
				
				// Modifier le statut ?
				if(in_array($statut, explode(";", _SPIPLISTES_LISTES_STATUTS_TOUS)) 
					&& ($statut != $current_liste['statut'])
				) {
					spiplistes_debug_log ('Modification statut: '.$statut);
					$sql_champs['statut'] = $statut;
					// si la liste passe en privee, retire les invites
					if($statut == _SPIPLISTES_LIST_PRIVATE) {
						$auteur_statut = '6forum';
						spiplistes_abonnements_auteurs_supprimer($auteur_statut);
						spiplistes_log("AUTEURS ($auteur_statut) REMOVED FROM LISTE #$id_liste ($statut) BY ID_AUTEUR #$connect_id_auteur");
					}
				}
				// Modifier la langue ?
				if(!empty($lang) && ($lang!=$current_liste['lang'])) {
					$sql_champs['lang'] = $lang;
				}
			}
			
			// Modifier l'adresse email de reponse ?
			if($btn_modifier_replyto && email_valide($email_envoi) && ($email_envoi!=$current_liste['email_envoi'])) {
				$sql_champs['email_envoi'] = $email_envoi;
			}

			////////////////////////////////////
			// Modifier message_auto ?
			// bloc "courriers automatiques"
			if($btn_modifier_courrier_auto)
			{
				$current_statut = ($statut)
					? $statut
					: $current_liste['statut']
					;
					
				spiplistes_debug_log ('Modification periodicite statut: '.$current_statut);
				
				$envoyer_quand = spiplistes_formate_date_form($annee, $mois, $jour, $heure, $minute);
			
				if(time() > strtotime($envoyer_quand)) {
				// envoi dans le passe est considere comme envoyer maintenant
					$envoyer_maintenant = true;
					$date_depuis = $envoyer_quand;
					$envoyer_quand = false;
				}
				// spiplistes_debug_log("nb vrais abos : ".spiplistes_listes_vrais_abos_compter($id_liste));
				if($envoyer_maintenant && ($message_auto != 'non')) {
					if(!spiplistes_listes_vrais_abos_compter($id_liste)) {
						$boite_pour_confirmer_envoi_maintenant .= 
							spiplistes_boite_alerte(_T('spiplistes:boite_alerte_manque_vrais_abos'), true);
					}
					else {
						$boite_pour_confirmer_envoi_maintenant = ""
							. debut_cadre_couleur('', true)
							// formulaire de confirmation envoi
							. spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTES_LISTE), true)
							. "<p style='text-align:center;font-weight:bold;' class='verdana2'>"
							. _T('spiplistes:boite_confirmez_envoi_liste') . "</p>"
							. "<input type='hidden' name='id_liste' value='$id_liste' />\n"
							. spiplistes_form_bouton_valider('btn_confirmer_envoi_maintenant')
							. spiplistes_form_fin(true)
							. fin_cadre_couleur(true)
							;
					}
					$date_prevue = normaliser_date(time());
				}

				if($message_auto == 'oui') {
				
					$sql_champs['message_auto'] = 'oui';
					$sql_champs['titre_message'] = $titre_message;
					$sql_champs['date'] = (!$envoyer_maintenant) ? $envoyer_quand : '';
					
					switch($auto_chrono) {
						case 'auto_jour':
							$sql_champs['statut'] =
								($current_statut == _SPIPLISTES_LIST_PRIVATE)
								? _SPIPLISTES_LIST_PRIV_DAILY
								: _SPIPLISTES_LIST_PUB_DAILY
								;
							// force au minimum 1 jour
							$sql_champs['periode'] = (($periode > 0) ? $periode : 1);
							break;
						case 'auto_hebdo':
							if($auto_weekly == 'oui') {
								// debut de semaine ?
								$sql_champs['statut'] =
									($current_statut == _SPIPLISTES_LIST_PRIVATE)
									? _SPIPLISTES_LIST_PRIV_WEEKLY
									: _SPIPLISTES_LIST_PUB_WEEKLY
									;
								// corrige la date pour le lundi de la semaine
								$time = strtotime($envoyer_quand);
								$time = mktime(0,0,0,date("m", $time),date("d", $time)-date("w", $time)+1,date("Y", $time));
    							$envoyer_quand = date("Y-m-d H:i:s", $time);
	 							$sql_champs['date'] = $envoyer_quand;
							} else {
								$sql_champs['statut'] =
									($current_statut == _SPIPLISTES_LIST_PRIVATE)
									? _SPIPLISTES_LIST_PRIV_HEBDO
									: _SPIPLISTES_LIST_PUB_HEBDO
									;
							}
							$sql_champs['periode'] = 0;
							break;
						case 'auto_mensuel':
							if($auto_mois == 'oui') {
								// debut du mois ?
								$sql_champs['statut'] =
									($current_statut == _SPIPLISTES_LIST_PRIVATE)
									? _SPIPLISTES_LIST_PRIV_MONTHLY
									: _SPIPLISTES_LIST_PUB_MONTHLY
									;
								// corrige la date, 1' du mois
								$envoyer_quand = substr($envoyer_quand, 0, 8)."01 00:00:00";
								$sql_champs['date'] = $envoyer_quand;
							} else {
								$sql_champs['statut'] =
									($current_statut == _SPIPLISTES_LIST_PRIVATE)
									? _SPIPLISTES_LIST_PRIV_MENSUEL
									: _SPIPLISTES_LIST_PUB_MENSUEL
									;
							}
							$sql_champs['periode'] = 0;
							break;
						case 'auto_an':
							$sql_champs['statut'] =
								($current_statut == _SPIPLISTES_LIST_PRIVATE)
								? _SPIPLISTES_LIST_PRIV_YEARLY
								: _SPIPLISTES_LIST_PUB_YEARLY
								;
							$sql_champs['periode'] = 0;
							break;
					}
				}
				else if($message_auto == 'non') {
					$sql_champs['message_auto'] = 'non';
					$sql_champs['date'] = '';
					$sql_champs['periode'] = 0;
				}
			} // end if($btn_modifier_courrier_auto)
			
			// Enregistre les modifs pour cette liste
			if(count($sql_champs))
			{
				sql_updateq('spip_listes', $sql_champs, 'id_liste='.sql_quote($id_liste).' LIMIT 1');
			}
			
			// Forcer les abonnements
			if($btn_valider_forcer_abos && $forcer_abo && in_array($forcer_abo, array('tous', 'auteurs', '6forum', 'aucun'))) {
				
				$forcer_format_reception = 
					(($forcer_format_abo == 'oui') && in_array($forcer_format_reception, spiplistes_formats_autorises()))
					? $forcer_format_reception
					: false
					;
				include_spip('inc/spiplistes_listes_forcer_abonnement');
				
				if(spiplistes_listes_forcer_abonnement ($id_liste, $forcer_abo, $forcer_format_reception) ===  false) {
					$message_erreur .= spiplistes_boite_alerte(_T('spiplistes:Forcer_abonnement_erreur'), true);
				}
			}
			
		} // end if($flag_editable)
	}

	//////////////////////////////////////////////////////
	// Recharge les donnees la liste

	$sql_select_array = array('id_liste', 'titre', 'texte'
			, 'titre_message', 'pied_page', 'date', 'statut', 'maj'
			, 'email_envoi', 'message_auto', 'periode', 'patron', 'lang');

	if($row = spiplistes_listes_liste_fetsel($id_liste, $sql_select_array)) {
		foreach($sql_select_array as $key) {
			// initialise les variables du resultat SQL
			$$key = $row[$key];
		}
	}

	// les supers-admins et le moderateur seuls peuvent modifier la liste
	$flag_editable = autoriser('moderer', 'liste', $id_liste);

	if (empty($titre_message))
	{
		$titre_message = $titre;
		if (spiplistes_pref_lire_defaut('opt_completer_titre_nom_site', 'oui') == 'oui')
		{
			$titre_message .= _T('spiplistes:_de_')
				. spiplistes_nom_site_texte($lang);
		}
	}
	
	$nb_abonnes = spiplistes_listes_nb_abonnes_compter($id_liste);

	// preparation des boutons 
	if($flag_editable) {
		// Propose de modifier la liste 
		$gros_bouton_modifier = 
			icone (
				_T('spiplistes:Modifier_cette_liste') // legende bouton
				, generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_EDIT,'id_liste='.$id_liste) // lien
				, _DIR_PLUGIN_SPIPLISTES_IMG_PACK."reply-to-all-24.gif" // image du fond
				, "edit.gif" // image de la fonction. Ici, le crayon
				, '' // alignement
				, false // pas echo, demande retour
				)
			;
		// Propose de supprimer la liste 
		$gros_bouton_supprimer = 
			icone (
					_T('spiplistes:Supprimer_cette_liste')
					, generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER, "btn_supprimer_liste=$id_liste&id_liste=$id_liste")
					, _DIR_PLUGIN_SPIPLISTES_IMG_PACK.'poubelle_msg.gif'
					, ""
					, "right"
					, false
					)
			;
			
		// la grosse boite des abonnes
		$tri = _request('tri') ? _request('tri') : 'nom';
		//
		// CP-20101017: Si trop d'elligibles, ca gele.
		// @todo: revoir la boite/liste des abonnes/elligibles
		// En attendant ...
		//if(spiplistes_auteurs_elligibles_compter() < 1000)
		//{
			$boite_liste_abonnes = spiplistes_listes_boite_abonnements(
				$id_liste, $statut, $tri, $debut, _SPIPLISTES_EXEC_LISTE_GERER
			);
		//}
		//else
		//{
		//	$boite_liste_abonnes = _T('spiplistes:code_en_travaux');
		//}
		
		
		// @see http://www.spip-contrib.net/SPIP-Listes#comment444314
		
		
		
		$titre_boite = _T('spiplistes:abos_cette_liste');
		$legend = '<small id="legend-abos1">'
			. spiplistes_nb_abonnes_liste_str_get($id_liste)
			. '</small>'.PHP_EOL
			;
		$grosse_boite_abonnements = ''
			. '<!-- boite abonnes/elligibles -->'.PHP_EOL
			. debut_cadre_enfonce('auteur-24.gif', true, '', $titre_boite)
			. spiplistes_bouton_block_depliable($legend
				, false, md5('abonnes_liste'))
			. (spiplistes_spip_est_inferieur_193() ? $legend : '')
			. spiplistes_debut_block_invisible(md5('abonnes_liste'))
			. debut_cadre_relief('', true)
			. $boite_liste_abonnes
			. fin_cadre_relief(true)
			. fin_block()
			. fin_cadre_enfonce(true)
			. '<!-- fin boite abonnes/elligibles -->'.PHP_EOL
			;

		// la grosse boite des moderateurs
		$boite_liste_moderateurs = spiplistes_listes_boite_moderateurs(
			$id_liste, _SPIPLISTES_EXEC_LISTE_GERER, 'mods-conteneur'
			);
		$titre_boite = _T('spiplistes:mods_cette_liste');
		$nb = spiplistes_mod_listes_compter($id_liste);
		$legend = '<small>'
			. spiplistes_nb_moderateurs_liste_str_get($nb)
			. '</small>'.PHP_EOL
			;
		$grosse_boite_moderateurs = ''
			. '<!-- boite moderateurs -->'.PHP_EOL
			. debut_cadre_enfonce('redacteurs-24.gif', true, '', $titre_boite)
			. spiplistes_bouton_block_depliable($legend
				, false, md5('mods_liste'))
			. (spiplistes_spip_est_inferieur_193() ? $legend : '')
			. spiplistes_debut_block_invisible(md5('mods_liste'))
			. debut_cadre_relief('', true)
			. '<div id="mods-conteneur">'.PHP_EOL
			. $boite_liste_moderateurs
			. '</div>'.PHP_EOL
			. fin_cadre_relief(true)
			. fin_block()
			. fin_cadre_enfonce(true)
			. '<!-- fin boite moderateurs -->'.PHP_EOL
			;

	}
	else {
		$gros_bouton_modifier = $gros_bouton_supprimer = $grosse_boite_abonnements = '';
	}

////////////////////////////////////
// PAGE CONTENU
////////////////////////////////////

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

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

	// la gestion des listes de courriers est reservee aux admins 
	if($connect_statut != '0minirezo') {
		die (spiplistes_terminer_page_non_autorisee() . fin_page());
	}

	$page_result .= ''
		. '<br /><br /><br />' . PHP_EOL
		. spiplistes_gros_titre($titre_page, '', true)
		. barre_onglets($rubrique, $sous_rubrique)
		. debut_gauche($rubrique, true)
		. spiplistes_boite_info_id(_T('spiplistes:liste_numero'), $id_liste, true)
		. spiplistes_naviguer_paniers_listes(_T('spiplistes:aller_aux_listes_'), true)
		. spiplistes_boite_patron($flag_editable, $id_liste, _SPIPLISTES_EXEC_LISTE_GERER, 'btn_grand_patron'
			, _SPIPLISTES_PATRONS_DIR, _T('spiplistes:Patron_grand_')
			, ($patron ? $patron : '')
			, $patron)
		. spiplistes_boite_patron($flag_editable, $id_liste, _SPIPLISTES_EXEC_LISTE_GERER, 'btn_patron_pied'
			, _SPIPLISTES_PATRONS_PIED_DIR, _T('spiplistes:Patron_de_pied_')
			, ((($ii = strlen($pied_page)) > _SPIPLISTES_PATRON_FILENAMEMAX) 
				? _T('taille_octets',array('taille'=>$ii)) . _T('spiplistes:conseil_regenerer_pied')
				: $pied_page)
			, $pied_page)
		. 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()
		. pipeline('affiche_droite', array('args'=>array('exec'=>$sous_rubrique),'data'=>''))
		. debut_droite($rubrique, true)
		. $message_erreur
		;

	changer_typo('','liste'.$id_liste);

	// message alerte et demande de confirmation si supprimer liste
	if(($btn_supprimer_liste > 0) && ($btn_supprimer_liste == $id_liste)) {
		$page_result .= ''
			. spiplistes_boite_alerte (_T('spiplistes:Attention_suppression_liste').'<br />'._T('spiplistes:Confirmez_requete'), true)
			. '<form name="form_suppr_liste" id="form_suppr_liste" method="post"
				action="'.generer_url_ecrire(_SPIPLISTES_EXEC_LISTES_LISTE, '').'">' . PHP_EOL
			. "<div class='verdana2' style='text-align:right;'>\n"
			. "<input type='hidden' name='id_liste' value='$id_liste' />\n"
   		. "<label>"._T('spiplistes:Confirmer_la_suppression_de_la_liste')."# $id_liste : \n"
   		. "<input class='fondo' type='submit' name='btn_supprimer_liste_confirme' value='"._T('bouton_valider')."' /></label>\n"
			. "</div>\n"
			. "</form>\n"
			. "<br />\n"
		;
	}

	$page_result .= ""
		. debut_cadre_relief("", true)
		. "\n<table cellpadding='0' cellspacing='0' border='0' width='100%'>\n"
		. "<tr><td valign='top'>\n"
		. spiplistes_gros_titre(spiplistes_bullet_titre_liste('puce', $statut, '', true)." "
			. spiplistes_calculer_balise_titre(extraire_multi($titre))
			, '', true)
		. "</td>"
		. "<td rowspan='2'>"
		// le gros bouton modifier si besoin
		. $gros_bouton_modifier
		. "</td></tr>\n"
		. "<tr><td width='100%'>\n"
		. "<div align='$spip_lang_left' style='padding: 5px; border: 1px dashed #aaa; ' class='verdana1 spip_small'>\n"
		. propre($texte."~")
		. "</div>\n"
		. "</td>\n"
		. "</tr></table>\n"
		;

	
	//////////////////////////////////////////////////////
	// Modifier le statut de la liste
	//$email_defaut = entites_html($meta['email_webmaster']);
	$email_defaut = ($m = email_valide($GLOBALS['meta']['email_defaut']))
		? $m
		: $GLOBALS['meta']['email_webmaster']
		;
	$email_envoi = ($m = email_valide($email_envoi))
		? $email_envoi
		: $email_defaut
		;

	$page_result .= ""
		//. debut_cadre_relief("racine-site-24.gif", true)
		. debut_cadre_relief("racine-site-24.gif", true, '', _T('spiplistes:Diffusion').spiplistes_plugin_aide(_SPIPLISTES_EXEC_AIDE, "diffusion"))
		//
		////////////////////////////
		// Formulaire diffusion
		.	(
			($flag_editable)
			? ''
				. spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,'id_liste='.$id_liste), true)
				. '<input type="hidden" name="exec" value="listes" />' . PHP_EOL
				. '<input type="hidden" name="id_liste" value="'.$id_liste.'" />' . PHP_EOL
			: ''
			)
		. '<span class="verdana2">'
			. _T('spiplistes:cette_liste_est_'
			 	, array('s' => spiplistes_bullet_titre_liste ('puce', $statut, 'img_statut', true)))
		. '</span>' . PHP_EOL
		;

		$sel_private = ' value="' . _SPIPLISTES_LIST_PRIVATE . '" ' 
			. 	(
					in_array ($statut, array(
									_SPIPLISTES_LIST_PRIVATE
									, _SPIPLISTES_LIST_PRIV_DAILY
									, _SPIPLISTES_LIST_PRIV_HEBDO
									, _SPIPLISTES_LIST_PRIV_WEEKLY
									, _SPIPLISTES_LIST_PRIV_MENSUEL
									, _SPIPLISTES_LIST_PRIV_MONTHLY
									, _SPIPLISTES_LIST_PRIV_YEARLY
									)
						 )
					? ' selected="selected"' 
					: ''
				)
				;
		$sel_publique = ' value="' . _SPIPLISTES_LIST_PUBLIC . '" ' 
			. 	(
					in_array ($statut, array(
									_SPIPLISTES_LIST_PUBLIC
									, _SPIPLISTES_LIST_PUB_DAILY
									, _SPIPLISTES_LIST_PUB_HEBDO
									, _SPIPLISTES_LIST_PUB_WEEKLY
									, _SPIPLISTES_LIST_PUB_MENSUEL
									, _SPIPLISTES_LIST_PUB_MONTHLY
									, _SPIPLISTES_LIST_PUB_YEARLY
									)
						 )
					? ' selected="selected"' 
					: ''
				)
				;
	$page_result .= PHP_EOL
		.	(
			($flag_editable)
			? ''
				. '<select class="verdana2 fondl" name="statut" size="1" id="change_statut">' . PHP_EOL
				. '<option' . $sel_private . ' style="background-color:#fff">'
					. _T('spiplistes:statut_interne')
					. '</option>' . PHP_EOL
				. '<option' . $sel_publique . ' style="background-color:#B4E8C5">'
					. _T('spiplistes:statut_publique')
					. '</option>' . PHP_EOL
				. '<option' . mySel(_SPIPLISTES_TRASH_LIST, $statut)
					. ' style="background:url(' . _DIR_IMG_PACK.'rayures-sup.gif)">'
					. _T('texte_statut_poubelle').'</option>' . PHP_EOL
				. '</select>' . PHP_EOL
			: '<span class="verdana2" style="font-weight:bold;">'
				. spiplistes_items_get_item('alt', $statut)
				. '</span>'. PHP_EOL
			)
		. '<div style="margin:10px 0px;">' . PHP_EOL
		.	(
			($flag_editable && strpos($GLOBALS['meta']['langues_multilingue'], ','))
			? ''
				. '<label class="verdana2" for="changer_lang">'
					. _T('info_multi_herit').' : </label>' . PHP_EOL
				. '<select name="changer_lang" class="fondl" id="changer_lang">' . PHP_EOL
				. liste_options_langues('changer_lang', $lang , _T('spiplistes:langue_'), '', '')
				. '</select>' . PHP_EOL
			: ''
				//. "<span class='verdana2'>". _T('info_multi_herit')." : "
				//. "<span class='verdana2' style='font-weight:bold;'>".traduire_nom_langue($lang)."</span>\n"
			)
		. '</div>' . PHP_EOL
		.	(
				($flag_editable)
				? spiplistes_form_bouton_valider('btn_modifier_diffusion')
					. spiplistes_form_fin(true)
				: ''
			)
		. fin_cadre_relief(true)
		;

		////////////////////////////
		// Formulaire adresse email pour le reply-to
	$page_result .= ''
		. debut_cadre_relief(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."reply_to-24.png"
							, true
							, ''
							, _T('spiplistes:adresse_de_reponse').spiplistes_plugin_aide(_SPIPLISTES_EXEC_AIDE
								, "replyto")
							)
		. spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,"id_liste=$id_liste"), true)
		. "<p class='verdana2'>\n"
		. _T('spiplistes:adresse_mail_retour').":<br />\n"
		.	(
			($flag_editable)
			? _T('spiplistes:adresse')."</p>\n"
				. "<div style='text-align:center'>\n"
				. "<input type='text' name='email_envoi' value=\"".$email_envoi."\" size='40' class='fondl' /></div>\n"
				. spiplistes_form_bouton_valider('btn_modifier_replyto')
			: "</p><p style='font-weight:bold;text-align:center;'>$email_envoi</p>\n"
			)
		. spiplistes_form_fin(true)
		. fin_cadre_relief(true)
		;
		
		////////////////////////////
		// Formulaire planifier un courrier automatique
	$page_result .= ""
		. "<a name='form-programmer' id='form-programmer'></a>\n"
		. debut_cadre_relief(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."stock_timer.png", true, '', _T('spiplistes:messages_auto')
			. spiplistes_plugin_aide(_SPIPLISTES_EXEC_AIDE, "temporiser"))
		;
	$page_result .= ""
		. $boite_pour_confirmer_envoi_maintenant
		. spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,"id_liste=$id_liste")."#form-programmer", true)
		. "<table border='0' cellspacing='1' cellpadding='3' width='100%'>\n"
		. "<tr><td align='$spip_lang_left' class='verdana2'>\n"
		;
	if(empty($patron)) {
		$page_result .= ""
			. (
				$flag_editable
				? spiplistes_boite_alerte(_T('spiplistes:patron_manquant_message'), true)
				: "<p class='verdana2'>" . _T('spiplistes:liste_sans_patron') . "</p>\n"
			  )
			. "</td>\n"
			. "</tr>\n"
			. "<tr><td align='$spip_lang_left' class='verdana2'>\n"
			;
	}
	if ($message_auto != "oui") {
		$page_result .= "<div class='verdana2'>"._T('spiplistes:pas_denvoi_auto_programme')."</div>\n";
	}
	else {
		$page_result .= ""
			// petite ligne d'info si envoi programme
			. "<p class='verdana2'>"._T('spiplistes:sujet_courrier_auto')."<br />\n"
			. "<span class='spip_large'> "
				. spiplistes_calculer_balise_titre(extraire_multi($titre_message))
				. "</span></p>\n"
			. "<p class='verdana2'>"
			. spiplistes_items_get_item('alt', $statut)."<br />\n"
			.	(	
					($statut == _SPIPLISTES_LIST_PUB_MONTHLY)
					?	"<strong>" . spiplistes_items_get_item("tab_t", $statut) . "</strong><br />"
					:	""
				)
			.	(
					($periode > 0)
					? _T('spiplistes:periodicite_tous_les_n_s'
						, array('n' => "  <strong>".$periode."</strong>  "
							, 's' => spiplistes_singulier_pluriel_str_get($periode, _T('spiplistes:jour'), _T('spiplistes:jours'), false)
							)
						)
					: ""
				)
			.	(
					(!in_array($statut, explode(";", _SPIPLISTES_LISTES_STATUTS_PERIODIQUES)))
					? " <strong>"._T('spiplistes:Pas_de_periodicite')."</strong><br />"
						._T('spiplistes:Ce_courrier_ne_sera_envoye_qu_une_fois')
					: ""
				)
			.	"<br />"
			.	(
				(intval($maj))
				? _T('spiplistes:Dernier_envoi_le_') . " <strong>" . affdate_heure($maj) . "</strong>"
					.	(
						($last =  round((time() - strtotime($maj)) / _SPIPLISTES_TIME_1_DAY))
							? " (".spiplistes_singulier_pluriel_str_get($last, _T('spiplistes:jour'), _T('spiplistes:jours')).")"
							: ""
					). "<br />"
				: ""
				)
			.	(
				($date_prevue || (intval($date) && (time() < strtotime($date))))
				? _T('spiplistes:prochain_envoi_prevu')." : <strong>" . affdate_heure($date_prevue ? $date_prevue : $date) . "</strong>"
					.	(
						(!$date_prevue && ($next = round((strtotime($date) - time()) / _SPIPLISTES_TIME_1_DAY)))
							? " (".spiplistes_singulier_pluriel_str_get($next, _T('spiplistes:jour'), _T('spiplistes:jours')).")"
							: ""
						)
				: ""
				)
			. "</p>\n"
			;
		if($btn_modifier_courrier_auto) {
			$page_result .= ""
				. "<p class='verdana2'>"._T('spiplistes:date_act')."<br />"
				. _T('spiplistes:env_esquel')." <em>".$patron."</em>"
				. "</p>\n"
				;
		}
	}
	$date_debut_envoi = (!empty($date_prevue) ? $date_prevue : (($date && intval($date)) ? $date : normaliser_date(time())));

	$page_result .= ""
		. "</td>\n"
		. "</tr>\n"
		;
	if($flag_editable) {
		$page_result .= ""
			. "<tr><td align='$spip_lang_left' class='verdana2'>"
			. "<input type='radio' name='message_auto' value='oui' id='auto_oui' "
				. (empty($patron) ? " disabled='disabled' " : "")
				. ($auto_checked = ($message_auto=='oui' ? "checked='checked'" : ""))
				. " />"
			. "<label for='auto_oui' ".($auto_checked ? "style='font-weight:bold;'" : "").">"
				. _T('spiplistes:prog_env')."</label>\n"
			. "<div id='auto_oui_detail' "
				.((empty($patron) || !$auto_checked) ? "style='display:none;'" : "")
				.">"
			. "<ul style='list-style-type:none;'>\n"
			. "<li>"._T('spiplistes:message_sujet')
			. ': <input type="text" name="titre_message" value="'.$titre_message.'" size="50" class="fondl" /> </li>'."\n"
			;
			// 
			// chrono jour
			$ii = ($periode > 0) ? $periode : 1;
		$page_result .= ""
			. "<li style='margin-top:0.5em'>"
				. spiplistes_form_input_radio ('auto_chrono', 'auto_jour'
					, ''
					, ($statut == _SPIPLISTES_LIST_PUB_DAILY)
					, true, false
					)
				. _T('spiplistes:Tous_les')
				. " <input type='text' name='periode' value='".$ii."' size='4' maxlength='4' class='fondl' /> "
				. _T('info_jours')
				. "</li>\n"
			// chrono hebdo
			. "<li>"
				. spiplistes_form_input_radio ('auto_chrono', 'auto_hebdo'
					, _T('spiplistes:Toutes_les_semaines')
					, (($statut == _SPIPLISTES_LIST_PUB_HEBDO) || ($statut == _SPIPLISTES_LIST_PUB_WEEKLY))
					, true, false)
				. spiplistes_form_input_checkbox('auto_weekly', 'oui'
					, _T('spiplistes:en_debut_de_semaine'), ($statut == _SPIPLISTES_LIST_PUB_WEEKLY), true, false)
				. "</li>\n"
			// chrono mois
			. "<li>"
				. spiplistes_form_input_radio ('auto_chrono', 'auto_mensuel'
					, _T('spiplistes:Tous_les_mois')
					, (($statut == _SPIPLISTES_LIST_PUB_MENSUEL) || ($statut == _SPIPLISTES_LIST_PUB_MONTHLY))
					, true, false)
				. spiplistes_form_input_checkbox('auto_mois', 'oui'
					, _T('spiplistes:en_debut_de_mois'), ($statut == _SPIPLISTES_LIST_PUB_MONTHLY), true, false)
				. "</li>\n"
			// chrono annee
			. "<li>"
				. spiplistes_form_input_radio ('auto_chrono', 'auto_an'
					, _T('spiplistes:Tous_les_ans')
					, ($statut == _SPIPLISTES_LIST_PUB_YEARLY)
					, true, false)
				. "</li>\n"
			. "<li style='margin-top:0.5em'>"._T('spiplistes:A_partir_de')." : <br />\n"
			//
			. spiplistes_dater_envoi(
				'liste', $id_liste, $statut
				, $flag_editable
				, _T('spiplistes:date_expedition_')
				, $date_debut_envoi, 'btn_changer_date'
				, false
				)
			. "</li>\n"
			.	(
				(!$envoyer_maintenant)
				? " <li>"
					. spiplistes_form_input_checkbox('envoyer_maintenant', 'oui'
						, _T('spiplistes:env_maint'), false, true)
					. "</li>\n"
				: ""
				)
			. "</ul></div>\n"
			;
		$checked = ($message_auto=='non') ? "checked='checked'" : "";
		$class = $checked ? "class='bold'" : "";
		$disabled = (empty($patron) ? " disabled='disabled' " : "");
		$page_result .= ""
			. "<br /><input type='radio' name='message_auto' value='non' id='auto_non' $disabled $checked />"
			. "<span $class >"
			. " <label for='auto_non'>"._T('spiplistes:prog_env_non')."</label> "
			. "</span>\n"
			. "</td></tr>\n"
			;

		$page_result .= ""
			. "<tr><td style='text-align:$spip_lang_right;'>"
			. 	(
				($id_liste)
				? "<input type='hidden' name='id_liste' value='$id_liste' />"
				: ""
				)
			.	(
				($new)
				? "<input type='hidden' name='new' value='$new' />"
				: ""
				)
			// bouton de validation
			. (!empty($patron) 
				? spiplistes_form_bouton_valider('btn_modifier_courrier_auto', _T('bouton_valider'), true)
				: "")
			. "</td></tr>"
			;
	}
	$page_result .= ""
		. "</table>\n"
		. spiplistes_form_fin(true)
		. fin_cadre_relief(true)
		;
		// fin formulaire planifier
		
	$page_result .= ""
		. fin_cadre_relief(true)
		. $grosse_boite_abonnements
		. $grosse_boite_moderateurs
		;
	
	// le super-admin peut abonner en masse
	if($connect_toutes_rubriques) {
		$page_result .= ""
			. "\n<!-- forcer abo -->\n"
			. debut_cadre_enfonce(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."abonner-24.png", true, '', _T('spiplistes:forcer_les_abonnement_liste').spiplistes_plugin_aide("forcerliste"))."\n"
			. "<p class='verdana2'>\n"
			. _T('spiplistes:forcer_abonnement_desc')
			. "</p>\n"
			. "<p class='verdana2' style='margin-bottom:1em'><em>"
			. _T('spiplistes:forcer_abonnement_aide', array('lien_retour' => generer_url_ecrire(_SPIPLISTES_EXEC_ABONNES_LISTE)))
			. "</em></p>\n"
			. "<form action='".generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,"id_liste=$id_liste#auteurs")."' id='form_forcer_abo' name='form_forcer_abo' method='post'>\n"
			. debut_cadre_relief("", true)."\n"
			//
			//////////////////////////
			// propose de forcer les membres sauf invites si la liste est privee
			.	(
					($statut==_SPIPLISTES_LIST_PRIVATE)
					? "<div class='verdana2'><input type='radio' name='forcer_abo' value='auteurs' id='forcer_abo_tous' />\n"
						. "<label for='forcer_abo_tous'>"._T('spiplistes:Abonner_tous_les_inscrits_prives')."</label>"
						. "</div>\n"
						. spiplistes_boutons_forcer_format('forcer_format', _T('spiplistes:forcer_abonnements_nouveaux'))
					: ""
				)
			//
			// propose de forcer les invites si la liste est publique ou periodique
			.	(
					(($statut!=_SPIPLISTES_LIST_PRIVATE) && ($statut!=_SPIPLISTES_TRASH_LIST))
					? "<div class='verdana2'><input type='radio' name='forcer_abo' value='6forum' id='forcer_abo_6forum' />\n"
						. "<label for='forcer_abo_6forum'>"._T('spiplistes:Abonner_tous_les_invites_public')."</label></div>\n"
						. spiplistes_boutons_forcer_format('forcer_format', _T('spiplistes:forcer_abonnements_nouveaux'))
					: ""
				)
			. (
				($nb_abonnes)
				? "<hr />\n"
					. "<div class='verdana2'><input type='radio' name='forcer_abo' value='aucun' id='forcer_desabo' />\n"
					. "<label for='forcer_desabo'>"._T('spiplistes:Forcer_desabonner_tous_les_inscrits')."</label></div>\n"
				: ""
				)
			. fin_cadre_relief(true)."\n"
			. "<div style='text-align:right;'><input type='submit' name='btn_valider_forcer_abos' value='"._T('bouton_valider')."' class='fondo' /></div>\n"
			. "</form>\n"
			. fin_cadre_enfonce (true)."\n"
		;
	}
	//
	$page_result .= ""
		. $gros_bouton_supprimer
		;
	
	echo($page_result);

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

} // end exec_spiplistes_liste_gerer()
Пример #21
0
/**
 * fonction qu'on peut redefinir pour filtrer les adresses mail et les noms,
 * et donner des infos supplementaires
 * Std: controler que le nom (qui sert a calculer le login) est plausible
 * et que l'adresse est valide. On les normalise au passage (trim etc).
 * Retour:
 * - si ok un tableau avec au minimum email, nom, mode (redac / forum)
 * - si ko une chaine de langue servant d'argument a  _T expliquant le refus
 *
 * http://doc.spip.org/@test_inscription_dist
 *
 * @param string $statut
 * @param string $mail
 * @param string $nom
 * @param string $options
 * @return array|string
 */
function test_inscription_dist($statut, $mail, $nom, $options)
{
    include_spip('inc/filtres');
    if (!($r = email_valide($mail))) {
        return 'info_email_invalide';
    }
    $nom = trim(corriger_caracteres($nom));
    $res = array('email' => $r, 'nom' => $nom, 'prefs' => $statut);
    if (isset($options['login'])) {
        $login = trim(corriger_caracteres($options['login']));
        if (strlen($login) >= _LOGIN_TROP_COURT and strlen($nom) <= 64) {
            $res['login'] = $login;
        }
    }
    if (!isset($res['login']) and (strlen($nom) < _LOGIN_TROP_COURT or strlen($nom) > 64)) {
        return 'ecrire:info_login_trop_court';
    }
    return $res;
}
Пример #22
0
 if (!$reg) {
     $reg_ok = "no";
 }
 if ($_POST['nom_complet']) {
     $nom_complet = $_POST['nom_complet'];
 } else {
     $nom_complet = $nom_court;
 }
 $sql = "UPDATE cn_conteneurs SET nom_complet = '" . corriger_caracteres($nom_complet) . "' WHERE id = '{$id_conteneur}'";
 //echo "$sql<br />";
 $reg = mysqli_query($GLOBALS["mysqli"], $sql);
 if (!$reg) {
     $reg_ok = "no";
 }
 if ($_POST['description']) {
     $sql = "UPDATE cn_conteneurs SET description = '" . corriger_caracteres($_POST['description']) . "' WHERE id = '{$id_conteneur}'";
     //echo "$sql<br />";
     $reg = mysqli_query($GLOBALS["mysqli"], $sql);
     if (!$reg) {
         $reg_ok = "no";
     }
 }
 if (isset($_POST['parent'])) {
     $parent = $_POST['parent'];
     $sql = "UPDATE cn_conteneurs SET parent = '" . $parent . "' WHERE id = '{$id_conteneur}'";
     //echo "$sql<br />";
     $reg = mysqli_query($GLOBALS["mysqli"], $sql);
     if (!$reg) {
         $reg_ok = "no";
     }
 }
Пример #23
0
 // Créer un nouveau dev...
 // Prévoir par la suite de pouvoir définir ici les paramètres
 $sql = "INSERT INTO cn_devoirs SET id_racine='{$id_racine}', id_conteneur='{$id_conteneur}', nom_court='nouveau', ramener_sur_referentiel='F', note_sur='20';";
 //echo "$sql<br />";
 $reg = mysqli_query($GLOBALS["mysqli"], $sql);
 if (!$reg) {
     $msg .= "Erreur lors de la création du devoir pour l'enseignement associé au cahier de notes n°{$current_id_cn}.<br />";
     $reg_ok = "no";
 } else {
     $id_devoir_cn = is_null($___mysqli_res = mysqli_insert_id($GLOBALS["mysqli"])) ? false : $___mysqli_res;
     $sql = "UPDATE cn_devoirs SET nom_court='" . corriger_caracteres($nom_court_cc_dev) . "' WHERE id='{$id_devoir_cn}'";
     $reg = mysqli_query($GLOBALS["mysqli"], $sql);
     if (!$reg) {
         $reg_ok = "no";
     }
     $sql = "UPDATE cn_devoirs SET nom_complet='" . corriger_caracteres($nom_complet_cc_dev) . "' WHERE id='{$id_devoir_cn}'";
     $reg = mysqli_query($GLOBALS["mysqli"], $sql);
     if (!$reg) {
         $reg_ok = "no";
     }
     if ($description_cc_dev != '') {
         $sql = "UPDATE cn_devoirs SET nom_complet='" . mysqli_real_escape_string($GLOBALS["mysqli"], $description_cc_dev) . "' WHERE id='{$id_devoir_cn}'";
         $reg = mysqli_query($GLOBALS["mysqli"], $sql);
         if (!$reg) {
             $reg_ok = "no";
         }
     }
     $tmp_coef = 1;
     $sql = "UPDATE cn_devoirs SET coef='{$tmp_coef}' WHERE id='{$id_devoir_cn}'";
     $reg = mysqli_query($GLOBALS["mysqli"], $sql);
     if (!$reg) {
Пример #24
0
function cextras_pre_edition($flux){

	// recuperer les champs crees par les plugins
	if ($extras = cextras_get_extras_match($flux['args']['table'])) {
		// recherchons un eventuel prefixe utilise pour poster les champs
		$type = objet_type(table_objet($flux['args']['table']));
		$prefixe = _request('prefixe_champs_extras_' . $type);
		if (!$prefixe) {
			$prefixe = '';
		}
		foreach ($extras as $c) {
			if (_request('cextra_' . $prefixe . $c->champ)) {
				$extra = _request($prefixe . $c->champ);
				if (is_array($extra))
					$extra = join(',',$extra);
				$flux['data'][$c->champ] = corriger_caracteres($extra);
			}
		}
	}

	return $flux;
}
Пример #25
0
function recuperer_infos_distantes($source, $max = 0, $charger_si_petite_image = true)
{
    # charger les alias des types mime
    include_spip('base/typedoc');
    global $mime_alias;
    $a = array();
    $mime_type = '';
    // On va directement charger le debut des images et des fichiers html,
    // de maniere a attrapper le maximum d'infos (titre, taille, etc). Si
    // ca echoue l'utilisateur devra les entrer...
    if ($headers = recuperer_page($source, false, true, $max, '', '', true)) {
        list($headers, $a['body']) = preg_split(',\\n\\n,', $headers, 2);
        if (preg_match(",\nContent-Type: *([^[:space:];]*),i", "\n{$headers}", $regs)) {
            $mime_type = trim($regs[1]);
        } else {
            $mime_type = '';
        }
        // inconnu
        // Appliquer les alias
        while (isset($mime_alias[$mime_type])) {
            $mime_type = $mime_alias[$mime_type];
        }
        // Si on a un mime-type insignifiant
        // text/plain,application/octet-stream ou vide
        // c'est peut-etre que le serveur ne sait pas
        // ce qu'il sert ; on va tenter de detecter via l'extension de l'url
        // ou le Content-Disposition: attachment; filename=...
        $t = null;
        if (in_array($mime_type, array('text/plain', '', 'application/octet-stream'))) {
            if (!$t and preg_match(',\\.([a-z0-9]+)(\\?.*)?$,i', $source, $rext)) {
                $t = sql_fetsel("extension", "spip_types_documents", "extension=" . sql_quote($rext[1], '', 'text'));
            }
            if (!$t and preg_match(",^Content-Disposition:\\s*attachment;\\s*filename=(.*)\$,Uims", $headers, $m) and preg_match(',\\.([a-z0-9]+)(\\?.*)?$,i', $m[1], $rext)) {
                $t = sql_fetsel("extension", "spip_types_documents", "extension=" . sql_quote($rext[1], '', 'text'));
            }
        }
        // Autre mime/type (ou text/plain avec fichier d'extension inconnue)
        if (!$t) {
            $t = sql_fetsel("extension", "spip_types_documents", "mime_type=" . sql_quote($mime_type));
        }
        // Toujours rien ? (ex: audio/x-ogg au lieu de application/ogg)
        // On essaie de nouveau avec l'extension
        if (!$t and $mime_type != 'text/plain' and preg_match(',\\.([a-z0-9]+)(\\?.*)?$,i', $source, $rext)) {
            $t = sql_fetsel("extension", "spip_types_documents", "extension=" . sql_quote($rext[1], '', 'text'));
            # eviter xxx.3 => 3gp (> SPIP 3)
        }
        if ($t) {
            spip_log("mime-type {$mime_type} ok, extension " . $t['extension']);
            $a['extension'] = $t['extension'];
        } else {
            # par defaut on retombe sur '.bin' si c'est autorise
            spip_log("mime-type {$mime_type} inconnu");
            $t = sql_fetsel("extension", "spip_types_documents", "extension='bin'");
            if (!$t) {
                return false;
            }
            $a['extension'] = $t['extension'];
        }
        if (preg_match(",\nContent-Length: *([^[:space:]]*),i", "\n{$headers}", $regs)) {
            $a['taille'] = intval($regs[1]);
        }
    }
    // Echec avec HEAD, on tente avec GET
    if (!$a and !$max) {
        spip_log("tenter GET {$source}");
        $a = recuperer_infos_distantes($source, _INC_DISTANT_MAX_SIZE);
    }
    // S'il s'agit d'une image pas trop grosse ou d'un fichier html, on va aller
    // recharger le document en GET et recuperer des donnees supplementaires...
    if (preg_match(',^image/(jpeg|gif|png|swf),', $mime_type)) {
        if ($max == 0 and $a['taille'] < _INC_DISTANT_MAX_SIZE and strpos($GLOBALS['meta']['formats_graphiques'], $a['extension']) !== false and $charger_si_petite_image) {
            $a = recuperer_infos_distantes($source, _INC_DISTANT_MAX_SIZE);
        } else {
            if ($a['body']) {
                $a['fichier'] = _DIR_RACINE . nom_fichier_copie_locale($source, $a['extension']);
                ecrire_fichier($a['fichier'], $a['body']);
                $size_image = @getimagesize($a['fichier']);
                $a['largeur'] = intval($size_image[0]);
                $a['hauteur'] = intval($size_image[1]);
                $a['type_image'] = true;
            }
        }
    }
    // Fichier swf, si on n'a pas la taille, on va mettre 425x350 par defaut
    // ce sera mieux que 0x0
    if ($a and $a['extension'] == 'swf' and !$a['largeur']) {
        $a['largeur'] = 425;
        $a['hauteur'] = 350;
    }
    if ($mime_type == 'text/html') {
        include_spip('inc/filtres');
        $page = recuperer_page($source, true, false, _INC_DISTANT_MAX_SIZE);
        if (preg_match(',<title>(.*?)</title>,ims', $page, $regs)) {
            $a['titre'] = corriger_caracteres(trim($regs[1]));
        }
        if (!$a['taille']) {
            $a['taille'] = strlen($page);
        }
        # a peu pres
    }
    return $a;
}
Пример #26
0
			$current_nom_prenom_eleve=get_nom_prenom_eleve($current_login_ele);

			$poursuivre="y";
			if(($_SESSION['statut']=='professeur')&&(!is_pp($_SESSION['login'], "", $current_login_ele))) {
				$poursuivre="n";
				$msg.="Vous n'êtes pas ".getSettingValue('gepi_prof_suivi')." de ".$current_nom_prenom_eleve."<br />";
			}

			if($poursuivre=="y") {
				if((mb_strlen(preg_replace('/[A-Za-z0-9._-]/','',$current_login_ele))==0)&&
				(mb_strlen(preg_replace('/[0-9]/','',$current_id_groupe))==0)&&
				(mb_strlen(preg_replace('/[0-9]/','',$current_periode))==0)) {
	
					if ((isset($action[$i]))&&(in_array($action[$i],$tab_actions_valides))) {
						if (isset($NON_PROTECT["appreciation".$i])) {
							$app = traitement_magic_quotes(corriger_caracteres($NON_PROTECT["appreciation".$i]));
							// Contrôle des saisies pour supprimer les sauts de lignes surnuméraires.
							$app=suppression_sauts_de_lignes_surnumeraires($app);
	
							if($action[$i]=='supprimer') {
								$sql="DELETE FROM matieres_app_corrections WHERE (login='$current_login_ele' AND id_groupe='$current_id_groupe' AND periode='$current_periode');";
								$del=mysqli_query($GLOBALS["mysqli"], $sql);
								if($del) {
									$msg.="Suppression de l'enregistrement temporaire $enregistrement[$i].<br />";
									//$nb_reg++;
									// Envoyer un mail... problème... il serait bien de n'envoyer qu'un seul mail par destinataire, plutôt que un mail par correction
									if(!isset($texte_email[$current_id_groupe])) {$texte_email[$current_id_groupe]="";}
									//$texte_email[$current_id_groupe].="Votre proposition de correction pour $enregistrement[$i] a été refusée/supprimée.\n";
									$texte_email[$current_id_groupe].="Votre proposition de correction pour ".$current_nom_prenom_eleve." en ".$current_group['name']." (".$current_group["description"]." en ".$current_group["classlist_string"].") sur la période $current_periode a été refusée/supprimée.\n";
								}
								else {
// Changement de nom
if (!empty($doc_name_modif) && trim($doc_name_modif) != '' && !empty($id_document)) {
    $titre = corriger_caracteres($doc_name_modif);
    $criteria = new Criteria(CahierTexteTravailAFaireFichierJointPeer::DATABASE_NAME);
    $criteria->add(CahierTexteTravailAFaireFichierJointPeer::ID, $id_document, '=');
    $documents = $ctTravailAFaire->getCahierTexteTravailAFaireFichierJoints($criteria);
    if (empty($documents)) {
        echo "Erreur enregistrement de devoir : document non trouvé.";
        die;
    }
    $document = $documents[0];
    if ($document == null) {
        echo "Erreur enregistrement de devoir :  document non trouvé.";
        die;
    }
    $document->setTitre(corriger_caracteres($doc_name_modif));
    $document->save();
}
//traitement de la copie de fichier joint
if (isset($_REQUEST['ct_a_importer_class']) && isset($_REQUEST['id_ct_a_importer'])) {
    $classname = $_REQUEST["ct_a_importer_class"] . 'Query';
    if (class_exists($classname)) {
        $notice = call_user_func($classname . '::create')->findOneByPrimaryKey($_REQUEST["id_ct_a_importer"]);
        if ($notice != null && $ctTravailAFaire != null && $notice != $ctTravailAFaire) {
            //pour la dernière condition, on évite de copier les fichiers joints d'une notice sur elle même
            $method = 'get' . $_REQUEST["ct_a_importer_class"] . 'FichierJoints';
            foreach ($notice->{$method}() as $fichier_joint_modele) {
                $fj = new CahierTexteTravailAFaireFichierJoint();
                $fj->setEmplacement($fichier_joint_modele->getEmplacement());
                $fj->setTitre($fichier_joint_modele->getTitre());
                $fj->setTaille($fichier_joint_modele->getTaille());
Пример #28
0
                 $msg .= "Echec de la mise en place du fichier " . $document_joint['name'] . "<br />";
             } else {
                 $url_racine_gepi = getSettingValue('url_racine_gepi');
                 if ($url_racine_gepi) {
                     $msg_doc_joint .= "\nAjout d'un document : " . $url_racine_gepi . preg_replace("#^..#", "", $dest_file) . "\n";
                 } else {
                     $msg_doc_joint .= "\nAjout d'un document : " . remplace_accents($document_joint['name'], "all") . "\n";
                 }
             }
         }
     }
 }
 $texte_mail .= $msg_doc_joint;
 if (count($mesure_demandee) > 0) {
     if (isset($NON_PROTECT["travail_pour_mesure_demandee_" . $i])) {
         $texte_travail = traitement_magic_quotes(corriger_caracteres($NON_PROTECT["travail_pour_mesure_demandee_" . $i]));
         // Contrôle des saisies pour supprimer les sauts de lignes surnuméraires.
         $texte_travail = preg_replace('/(\\\\r\\\\n)+/', "\r\n", $texte_travail);
         $texte_travail = preg_replace('/(\\\\r)+/', "\r", $texte_travail);
         $texte_travail = preg_replace('/(\\\\n)+/', "\n", $texte_travail);
         if ($texte_travail == "") {
             $sql = "DELETE FROM s_travail_mesure WHERE id_incident='{$id_incident}' AND login_ele='" . $mesure_ele_login[$i] . "';";
             $res_del = mysqli_query($GLOBALS["mysqli"], $sql);
         } else {
             $sql = "SELECT * FROM s_travail_mesure WHERE id_incident='{$id_incident}' AND login_ele='" . $mesure_ele_login[$i] . "';";
             $res_mes = mysqli_query($GLOBALS["mysqli"], $sql);
             if (mysqli_num_rows($res_mes) > 0) {
                 $sql = "UPDATE s_travail_mesure SET travail='" . $texte_travail . "' WHERE id_incident='{$id_incident}' AND login_ele='" . $mesure_ele_login[$i] . "';";
                 $update = mysqli_query($GLOBALS["mysqli"], $sql);
             } else {
                 $sql = "INSERT INTO s_travail_mesure SET travail='" . $texte_travail . "', id_incident='{$id_incident}', login_ele='" . $mesure_ele_login[$i] . "';";
Пример #29
0
						$id_devoir=((is_null($___mysqli_res = mysqli_insert_id($GLOBALS["mysqli"]))) ? false : $___mysqli_res);
						$new='yes';
						$reg_ok='yes';

						$nom_court=$intitule;
						$sql="UPDATE cn_devoirs SET nom_court='".corriger_caracteres($nom_court)."' WHERE id='$id_devoir'";
						$reg=mysqli_query($GLOBALS["mysqli"], $sql);
						if (!$reg) {$reg_ok = "no";}

						$nom_complet=$nom_court;
						$sql="UPDATE cn_devoirs SET nom_complet='".corriger_caracteres($nom_court)."' WHERE id='$id_devoir'";
						$reg=mysqli_query($GLOBALS["mysqli"], $sql);
						if (!$reg) {$reg_ok = "no";}

						if($description!='')  {
							$sql="UPDATE cn_devoirs SET nom_complet='".corriger_caracteres($description)."' WHERE id='$id_devoir'";
							$reg=mysqli_query($GLOBALS["mysqli"], $sql);
							if (!$reg) {$reg_ok = "no";}
						}

						$tmp_coef=1;
						$sql="UPDATE cn_devoirs SET coef='$tmp_coef' WHERE id='$id_devoir'";
						$reg=mysqli_query($GLOBALS["mysqli"], $sql);
						if (!$reg) {$reg_ok = "no";}

						$sql="UPDATE cn_devoirs SET date='$date_epreuve' WHERE id='$id_devoir'";
						$reg=mysqli_query($GLOBALS["mysqli"], $sql);
						if (!$reg) {$reg_ok = "no";}

						$sql="UPDATE cn_devoirs SET date_ele_resp='$date_epreuve' WHERE id='$id_devoir'";
						$reg=mysqli_query($GLOBALS["mysqli"], $sql);
Пример #30
0
function ajout_doc($doc_file, $id_ct, $doc_name, $cpt_doc)
{
    global $max_size, $total_max_size, $edit_devoir, $multisite;
    /* Vérification du type de fichier */
    //if (my_ereg("\.([^.]+)$", $doc_file['name'][$cpt_doc], $match)) {
    if (function_exists("mb_ereg") && mb_ereg("\\.([^.]+)\$", $doc_file['name'][$cpt_doc], $match) || function_exists("ereg") && ereg("\\.([^.]+)\$", $doc_file['name'][$cpt_doc], $match)) {
        $ext = corriger_caracteres(my_strtolower($match[1]));
        $ext = corriger_extension($ext);
    } else {
        $ext = '';
    }
    $query = "SELECT id_type FROM ct_types_documents WHERE extension='{$ext}' AND upload='oui'";
    $result = sql_query($query);
    if ($row = @sql_row($result, 0)) {
        $id_type = $row[0];
    } else {
        return "Erreur : Ce type de fichier n'est pas autorisé en téléchargement.<br />\nSi vous trouvez cela regrettable, contactez l'administrateur.<br />\nIl pourra modifier ce paramétrage dans<br />\n*Gestion des modules/Cahiers de textes/Types de fichiers autorisés en téléchargement*.";
        die;
    }
    /* Vérification de la taille du fichier */
    $sql = "select id_groupe from ct_entry where id_ct='{$id_ct}'";
    $id_groupe = sql_query1($sql);
    $max_size_ko = $max_size / 1024;
    $taille = $doc_file['size'][$cpt_doc];
    if ($taille > $max_size) {
        return "Téléchargement impossible : taille maximale autorisée : " . $max_size_ko . " Ko";
        die;
    }
    if ($taille == 0) {
        return "Le fichier sélectionné semble vide : transfert impossible.";
        die;
    }
    $query = "SELECT DISTINCT sum(taille) somme FROM ct_documents d, ct_entry e WHERE (e.id_groupe='" . $id_groupe . "' and e.id_ct = d.id_ct)";
    $total = sql_query1($query);
    if ($total + $taille > $total_max_size) {
        return "Téléchargement impossible : espace disque disponible (" . ($total_max_size - $total) / 1024 . " Ko) insuffisant.";
        die;
    }
    /* Recopier le fichier */
    $dest = '../documents/';
    $dossier = '';
    $multi = isset($multisite) && $multisite == 'y' ? $_COOKIE['RNE'] . '/' : NULL;
    if (isset($multisite) && $multisite == 'y' && is_dir('../documents/' . $multi) === false) {
        @mkdir('../documents/' . $multi);
        $dest .= $multi;
    } elseif (isset($multisite) && $multisite == 'y') {
        $dest .= $multi;
    }
    if (isset($edit_devoir)) {
        $dossier = "cl_dev" . $_POST['id_groupe'];
    } else {
        $dossier = "cl" . $_POST['id_groupe'];
    }
    if (creer_repertoire($dest, $dossier)) {
        $dest .= $dossier . '/';
    } else {
        return "Problème d'écriture sur le répertoire. Veuillez signaler ce problème à l'administrateur du site";
        die;
    }
    $nom_sans_ext = mb_substr(basename($doc_file['name'][$cpt_doc]), 0, mb_strlen(basename($doc_file['name'][$cpt_doc])) - (mb_strlen($ext) + 1));
    $nom_sans_ext = my_ereg_replace("[^.a-zA-Z0-9_=-]+", "_", $nom_sans_ext);
    if (strstr($nom_sans_ext, "..")) {
        return "Problème de transfert : le fichier n'a pas pu être transféré sur le répertoire. Veuillez signaler ce problème à l'administrateur du site";
        die;
    }
    $n = 0;
    while (file_exists($newFile = $dest . $nom_sans_ext . ($n++ ? '-' . $n : '') . '.' . $ext)) {
    }
    $dest_path = $newFile;
    if (!deplacer_fichier_upload($doc_file['tmp_name'][$cpt_doc], $dest_path)) {
        return "Problème de transfert : le fichier n'a pas pu être transféré sur le répertoire. Veuillez signaler ce problème à l'administrateur du site";
        die;
    }
    if ($doc_name[$cpt_doc] == '') {
        $doc_name[$cpt_doc] = basename($newFile);
    }
    $nouveau = false;
    if (!isset($id_document)) {
        if (isset($edit_devoir)) {
            $query = "INSERT INTO ct_devoirs_documents SET taille='{$taille}', emplacement='{$dest_path}', id_ct_devoir='{$id_ct}', titre='" . corriger_caracteres($doc_name[$cpt_doc]) . "'";
        } else {
            $query = "INSERT INTO ct_documents SET taille='{$taille}', emplacement='{$dest_path}', id_ct='{$id_ct}', titre='" . corriger_caracteres($doc_name[$cpt_doc]) . "'";
        }
        sql_query($query);
        $id_document = is_null($___mysqli_res = mysqli_insert_id($GLOBALS["mysqli"])) ? false : $___mysqli_res;
        $nouveau = true;
    } else {
        if (isset($edit_devoir)) {
            $query = "UPDATE ct_devoirs_documents SET taille='{$taille}', emplacement='{$dest_path}', id_ct_devoir='{$id_ct}', titre='{$titre}' WHERE id_document={$id_document}";
        } else {
            $query = "UPDATE ct_documents SET taille='{$taille}', emplacement='{$dest_path}', id_ct='{$id_ct}', titre='{$titre}' WHERE id_document={$id_document}";
        }
        sql_query($query);
    }
    return "Téléchargement réussi !";
}