function theme_favori() { // Definition des variables globales : global $prefixe; global $utilisateur_connecte; // Definition de(s) table(s) : $this->table = $prefixe . "_theme_favori"; // Initialisation de(s) argument(s) : $arguments = func_get_args(); $numargs = func_num_args(); if ($numargs > 0) { $idtheme_favori = $arguments[0]; } if ($numargs > 1) { $this->tableau_arguments = $arguments[1]; } // Heritage : parent::objet(); // Initialisation : // Champs obligatoires : $this->champs_obligatoires = array("idutilisateur_rel", "idtheme_rel"); // Champs du formulaire de creation : $this->champs_formulaire = array("idtheme_rel"); // Champs caches du formulaire: $this->champs_caches = array(); // Recherche du theme favori si l'on donne son identifiant : if (isset($idtheme_favori)) { $theme_favori_choisi = requete_sql("select * FROM {$this->table} WHERE idtheme_favori={$idtheme_favori}"); $theme_favori_choisi = tableau_sql($theme_favori_choisi); $this->idtheme_favori = $idtheme_favori; $this->identifiant = $idtheme_favori; $this->visible = $theme_favori_choisi["visible"]; $this->idutilisateur_rel = $theme_favori_choisi["idutilisateur_rel"]; $this->idtheme_rel = $theme_favori_choisi["idtheme_rel"]; $this->datecreation = $theme_favori_choisi["datecreation"]; } else { if (!isset($this->datecreation) || $this->datecreation == "") { $this->datecreation = time(); } if (!isset($this->idutilisateur_rel) || $this->idutilisateur_rel == "" || !is_numeric($this->idutilisateur_rel) || intval($this->idutilisateur_rel) != $this->idutilisateur_rel) { $this->idutilisateur_rel = $utilisateur_connecte->identifiant; } } }
function choix() { // Definition des variables globales : global $prefixe; global $page_question; // Definition de(s) table(s) : $this->table = $prefixe . "_choix"; // Initialisation de(s) argument(s) : $arguments = func_get_args(); $numargs = func_num_args(); if ($numargs > 0) { $idchoix_selectionne = $arguments[0]; } if ($numargs > 1) { $this->tableau_arguments = $arguments[1]; } // Heritage : parent::objet(); // Initialisation : // Champs obligatoires : $this->champs_obligatoires = array("idquestion_rel"); // Champs du formulaire de creation : $this->champs_formulaire = array("titre", "intitule", "vraifaux", "valeur"); // Champs caches du formulaire: $this->champs_caches = array("idquestion_rel"); // Recherche du choix si l'on donne son identifiant : if (isset($idchoix_selectionne)) { $reponse_choisie = requete_sql("select * FROM {$this->table} WHERE idchoix={$idchoix_selectionne}"); $reponse_choisie = tableau_sql($reponse_choisie); $this->idchoix = $idchoix_selectionne; $this->identifiant = $idchoix_selectionne; $this->visible = $reponse_choisie["visible"]; $this->idquestion_rel = $reponse_choisie["idquestion_rel"]; $this->titre = $reponse_choisie["titre"]; $this->intitule = $reponse_choisie["intitule"]; $this->vraifaux = $reponse_choisie["vraifaux"]; $this->valeur = $reponse_choisie["valeur"]; } // Initialisation du choix si l'on ne donne pas d'indentifiant : // l'heritage suffit }
function regle() { // Definition des variables globales : global $prefixe; // Definition de(s) table(s) : $this->table = $prefixe . "_z_regle"; // Initialisation de(s) argument(s) : $arguments = func_get_args(); $numargs = func_num_args(); if ($numargs > 0) { $idregle = $arguments[0]; } if ($numargs > 1) { $nomregle = $arguments[1]; } // Heritage : parent::objet(); // Initialisation : // Champs obligatoires : $this->champs_obligatoires = array("titre", "idutilisateurauteur_rel"); // Recherche de la regle en fonction de son identifiant : if (isset($idregle) && $idregle != 0) { $regle_choisie = requete_sql("select * FROM {$this->table} WHERE {$this->champ_identifiant}='{$idregle}'"); $regle_choisie = tableau_sql($regle_choisie); $this->idregle = $regle_choisie["idregle"]; $this->identifiant = $regle_choisie["idregle"]; $this->nom = $regle_choisie["nom"]; $this->description = $regle_choisie["description"]; $this->valeur = $regle_choisie["valeur"]; $this->listechoix = $regle_choisie["listechoix"]; } elseif (isset($nomregle)) { $regle_choisie = requete_sql("select * FROM {$this->table} WHERE nom='{$nomregle}'"); $regle_choisie = tableau_sql($regle_choisie); $this->idregle = $regle_choisie["idregle"]; $this->nom = $regle_choisie["nom"]; $this->description = $regle_choisie["description"]; $this->valeur = $regle_choisie["valeur"]; $this->listechoix = $regle_choisie["listechoix"]; } }
require_once $adresserepertoiresite . '/scripts/php/class.regle.php'; $vthemefavori = new theme_favori(); //ajout du theme selectionne dans la liste des favoris : if (isset($_GET["tt"]) && isset($_GET["ajout"]) && $_GET["ajout"] == "1") { $vthemefavori->set("idtheme_rel", $_GET["tt"]); $vthemefavori->enregistrer(); } //suppression du theme selectionne de la liste des favoris : if (isset($_GET["tt"]) && isset($_GET["ajout"]) && $_GET["ajout"] == "2" && isset($idutilisateur)) { $sqlrequeteretirerthemfav = "UPDATE {$vthemefavori->table} SET visible='0' WHERE idtheme_rel='" . $_GET["tt"] . "' and idutilisateur_rel='" . $idutilisateur . "';"; $sqlrequeteretirerthemfav_result = requete_sql($sqlrequeteretirerthemfav); } if (isset($_GET["t"])) { //recherche du theme dans la liste des favoris : $sqlrecherchethemfav = "SELECT * FROM {$vthemefavori->table} WHERE visible='1' AND idtheme_rel='" . $_GET["t"] . "' and idutilisateur_rel='" . $idutilisateur . "';"; $sqlrecherchethemfav_result = requete_sql($sqlrecherchethemfav); $presencetheme = 0; if (compte_sql($sqlrecherchethemfav_result) > 0) { $presencetheme = 1; } ?> <div id="ajouter_theme_favori"> <?php if ($presencetheme == 0) { echo "<span class=\"ajouter\" title=\"" . _AJOUTER_THEME_AUX_FAVORIS . "\" onclick=\"ajout_theme_favori(" . $_GET["t"] . ")\">[+]</span>\n"; } else { echo "<span class=\"retirer\" title=\"" . _RETIRER_THEME_DES_FAVORIS . "\" onclick=\"retirer_theme_favori(" . $_GET["t"] . ")\">[-]</span>\n"; } ?> </div> <?php
function validation($val, $texte) { // Declaration des variables: global $utilisateur_connecte; if (in_array($val, array("1", "0"))) { // Calcule de la requete : $sql_requete_validation = "UPDATE {$this->table} SET validation='" . $val . "', textevalidation='" . htmlspecialchars($texte, ENT_QUOTES) . "', datevalidation='" . time() . "', idutilisateur_validateur_rel='" . $utilisateur_connecte->identifiant . "' WHERE " . $this->champ_identifiant . "='" . $this->identifiant . "';"; // Lancement de la mise a jour de l objet correspondant : $sql_resultat = requete_sql($sql_requete_validation); return $this->identifiant; } else { return false; } }
function score_qcm() { // Declaration des variables: global $idutilisateur; global $adresserepertoiresite; //Creation de variables temporaires: require_once $adresserepertoiresite . '/scripts/php/class.question.php'; require_once $adresserepertoiresite . '/scripts/php/class.reponse.php'; require_once $adresserepertoiresite . '/scripts/php/class.choix.php'; $vquestion = new question(); $vreponse = new reponse(); $vchoix = new choix(); // Recherche du nombre total de question auquelles l'utilisateur a repondu $select_sql_texte1 = "select COUNT(*)\r\n\t\tFROM {$vquestion->table} AS T1, {$vreponse->table} AS T2 \r\n\t\tWHERE T1.idquestion=T2.idquestion_rel AND T2.idutilisateur_rel='{$idutilisateur}'\r\n\t\tAND T1.idquestionnaire_rel='{$this->identifiant}' AND T2.visible='1';"; $select_sql1 = requete_sql($select_sql_texte1); $nb_question_rep = tableau_sql($select_sql1); $nb_question_rep = $nb_question_rep[0]; $score[0] = $nb_question_rep; $score[1] = $select_sql_texte1; //Recherche du nombre de question vrai et fausse et somme des scores $select_sql_texte2 = "select SUM(IF(T3.vraifaux='1',1,0)), SUM(IF(T3.vraifaux='0',1,0)), SUM(T3.valeur)\r\n\t\tFROM {$vquestion->table} AS T1, {$vreponse->table} AS T2, {$vchoix->table} AS T3 \r\n\t\tWHERE T1.idquestion=T2.idquestion_rel AND T2.idutilisateur_rel='{$idutilisateur}'\r\n\t\tAND T1.idquestionnaire_rel='{$this->identifiant}' AND T3.idchoix=T2.idchoix_rel AND T2.visible='1' GROUP BY T1.idquestionnaire_rel;"; $select_sql2 = requete_sql($select_sql_texte2); $nb_question_rep_vrai_fausse_score = tableau_sql($select_sql2); $nb_question_rep_vrai = $nb_question_rep_vrai_fausse_score[0]; $nb_question_rep_fausse = $nb_question_rep_vrai_fausse_score[1]; $nb_score = $nb_question_rep_vrai_fausse_score[2]; $score[2] = $nb_question_rep_vrai; $score[3] = $nb_question_rep_fausse; $score[4] = $nb_score; $score[5] = $select_sql_texte2; //Recherche du score min et score max du questionnaire $select_sql_texte3 = "select MIN(T3.valeur), MAX(T3.valeur)\r\n\t\tFROM {$vquestion->table} AS T1, {$vchoix->table} AS T3 \r\n\t\tWHERE T1.idquestionnaire_rel='{$this->identifiant}' AND T1.idquestion=T3.idquestion_rel AND T3.visible='1' AND T1.visible='1' GROUP BY T1.idquestion;"; $select_sql3 = requete_sql($select_sql_texte3); $score_min = 0; $score_max = 0; while ($valeur_score_min_max = tableau_sql($select_sql3)) { $score_min += $valeur_score_min_max[0]; $score_max += $valeur_score_min_max[1]; } $score[6] = $score_min; $score[7] = $score_max; $score[8] = $select_sql_texte3; return $score; }
function auteur_questionnaire() { // Definition des variables globales : global $prefixe; global $page_questionnaire; global $trad_SQL; global $adresserepertoiresite; // Definition des tables : $table_questionnaire = $prefixe . "_questionnaire"; //requete standard : $sqlauteur = "SELECT * FROM {$table_questionnaire} WHERE idutilisateur_auteur_rel=" . $this->identifiant() . " AND visible=1 ORDER BY idtheme_rel ASC, titre ASC;"; //requete admin : if ($this->admin == "1") { $sqlauteur = "SELECT * FROM {$table_questionnaire} WHERE visible=1 ORDER BY idtheme_rel ASC, titre ASC;"; } $resauteur = requete_sql($sqlauteur); echo "<h3 class=\"listing_questionnaire_utilisateur\"><span>" . _LISTING_QUESTIONNAIRE_UTILISATEUR . "</span></h3>"; if (compte_sql($resauteur) > 0) { echo "\n<script type=\"text/javascript\" src=\"./scripts/javascript/prototype.js\" charset=\"utf-8\"></script>"; echo "\n<script type=\"text/javascript\" src=\"./scripts/javascript/tablekit.js\" charset=\"utf-8\"></script>"; echo "\n<div class=\"tableau\"><table id=\"liste_questionnaire\" class=\"sortable resizable\">"; echo "<tr><th>" . _MODIFICATION . "</th><th>" . _SUPPRESSION . "</th><th>" . _VALIDATION . "</th><th>" . _VALIDATION_DATE . "</th><th>" . _TITRE . "</th><th>" . _INTITULE . "</th><th>" . _NIVEAU . "</th></tr>\n"; while ($auteur = tableau_sql($resauteur)) { if (is_array($auteur)) { echo "<tr><td><a href=\"" . $page_questionnaire . "?i=" . $auteur['idquestionnaire'] . "\">" . _MODIFIER . "</a></td><td><a href=\"" . $page_questionnaire . "?i=" . $auteur['idquestionnaire'] . "&suppression=1 \">" . _SUPPRIMER . "</a></td>"; //Gestion de l'affichage de la validation : //chargement des regles pour le format des dates : require_once $adresserepertoiresite . '/scripts/php/class.regle.php'; $format_date = new regle("0", "format_date"); if ($auteur['datevalidation'] == "0") { echo "<td>" . _NON_TRAITEE . $auteur['validation'] . "</td><td> </td>"; } else { echo "<td><a href=\"#\" title=\"" . stripslashes($auteur['textevalidation']) . "\">" . _RESULTAT . $auteur['validation'] . "</a></td><td>" . _TRAITEE_LE . date($format_date->valeur, $auteur['datevalidation']) . "</td>"; } //Affichage titre et intitule : echo "<td>"; if (strlen($auteur['titre']) > 0) { echo $auteur['titre']; } else { echo " "; } echo "</td>"; echo "<td>"; if (strlen($auteur['intitule']) > 0) { echo $auteur['intitule']; } else { echo " "; } //Affichage niveau : echo "<td>"; if (strlen($auteur['niveau']) > 0) { if (array_key_exists($auteur['niveau'], $trad_SQL)) { $valeur_label = $trad_SQL[$auteur['niveau']]; } else { $valeur_label = $auteur['niveau']; } echo $valeur_label; } else { echo " "; } echo "</td></tr>\n"; } } echo "</table></div>\n"; } else { echo "<p>" . _AUCUN_QUESTIONNAIRE_POUR_L_UTILISATEUR . "</p>"; } }
require_once $adresserepertoiresite . '/environnement/_librairie_environnement.php'; } ?> <div class="dragableBox" id="ltheme_favori_selection"> <div id="theme_favori_selection"> <div id="theme_favori_cadre"> <h3 class="theme_favori_selection"><span><?php echo _THEME_FAVORI_TITRE; ?> </span></h3> <ul> <?php $vtemptheme = $prefixe . "_theme"; $vtemp = $prefixe . "_theme_favori"; $vtheme_favori_sql = "SELECT T2.* FROM {$vtemp} AS T1, {$vtemptheme} AS T2 WHERE T1.visible='1' AND T2.visible='1' AND T1.idtheme_rel= T2.idtheme AND T1.idutilisateur_rel='{$idutilisateur}';"; $vtheme_favori_sql = requete_sql($vtheme_favori_sql); if (compte_sql($vtheme_favori_sql) > 0) { while ($vtheme_favori_temp = tableau_sql($vtheme_favori_sql)) { ?> <li> <?php echo "<a href=\"#\" onclick=\"maj_module(" . $vtheme_favori_temp["idtheme"] . ")\">" . htmlentities($vtheme_favori_temp["titre"], ENT_QUOTES, "UTF-8") . "</a> "; ?> <?php echo "<span class=\"retirer\" title=\"" . _RETIRER_THEME_DES_FAVORIS . "\" onclick=\"retirer_theme_favori(" . $vtheme_favori_temp["idtheme"] . ")\">[-]</span>\n"; ?> </li> <?php } } else { echo "<li>" . _AUCUN_THEME_FAVORI . "</li>";
header("Content-type: image/png"); $im = @imagecreatetruecolor($largueur_img, $hauteur_img) or die("Impossible d'initialiser la bibliothèque GD"); $couleur_fond = imagecolorallocate($im, 255, 255, 255); $couleur_texte = imagecolorallocate($im, 0, 0, 0); $couleur_contour = imagecolorallocate($im, 0, 0, 0); $couleur_rectangle = imagecolorallocate($im, 240, 240, 240); //gestion de la police de caratere : $vpolice_titre = 5; //uniquement nombre entre 1 et 5 $vpolice = 4; //uniquement nombre entre 1 et 5 //application de la couleur de fond: imagefill($im, 0, 0, $couleur_fond); //tracage du schema de l'arborecence : $select_themes = "select T1.*, IF(T1.taille<>1,COUNT(*),0) AS nbfils_arbo, SUM(T1.idtheme=T2.idtheme_rel) AS nbfils_direct\r\nFROM " . $vtemp->table . " AS T1 \r\nLEFT JOIN " . $vtemp->table . " AS T2 ON (T2.bornegauche>T1.bornegauche AND T2.bornegauche + T2.taille<T1.bornegauche + T1.taille AND T2.langue='{$langue}') \r\nWHERE T1.visible=1 AND (T2.visible=1 OR T2.visible IS NULL) AND T1.langue='{$langue}' \r\nGROUP BY T1.idtheme \r\nORDER BY `T1`.`bornegauche` ASC"; $select_themes = requete_sql($select_themes); while ($vtheme = tableau_sql($select_themes)) { if (!$inverse_hauteur_largueur) { $x1 = ($vtheme['bornegauche'] - 1) * $facteur_taille; $y1 = ($vtheme['niveau'] - 1) * $hauteur; $x2 = ($vtheme['bornegauche'] + $vtheme['taille'] - 1) * $facteur_taille; $y2 = $vtheme['niveau'] * $hauteur; imagefilledrectangle($im, $x1, $y1, $x2, $y2, $couleur_rectangle); imagerectangle($im, $x1, $y1, $x2, $y2, $couleur_contour); if ($x2 - $x1 < $y2 - $y1) { imagestringup($im, $vpolice, ($x2 + 2 * $x1) / 3, $y1 + $hauteur / 2 + strlen($vtheme['titre']) * $vpolice, $vtheme['titre'], $couleur_texte); } else { imagestring($im, $vpolice, ($x2 + $x1) / 2 - strlen($vtheme['titre']) * $vpolice, $y1 + $hauteur / 2, $vtheme['titre'], $couleur_texte); } } else { $y1 = ($vtheme['bornegauche'] - 1) * $facteur_taille;
function supprimer($verbeux = true) { // Calcul de la requete : $sql_requete_suppression = "UPDATE {$this->table} SET visible='0' WHERE " . $this->champ_identifiant . "='" . $this->identifiant . "';"; // Lancement de la mise a jour de l objet correspondant : $sql_resultat = requete_sql($sql_requete_suppression); if ($verbeux == true) { echo "<h3><span>" . _OBJET_SUPPRIMER . "</span></h3><p><span><a href=\"" . $_SERVER['HTTP_REFERER'] . "\" >" . _RETOUR . "</a> </span></p>"; } }
function champ($nom_champ, $classe, $valeur_champ) { // Definition des variables globales : global $prefixe; global $utilisateur_connecte; global $langue; global $trad_SQL; global $adresserepertoiresite; global $adressehttpsite; // Definition de(s) table(s) : $this->table = $prefixe . "_" . $classe; // Heritage : parent::objet(); // Initialisation : $this->nom_champ = $nom_champ; // Verification de l'existance de la table : $test_table = true; $liste_des_tables = array(); $table_sql = requete_sql("SHOW tables;"); while ($table_temp = tableau_sql($table_sql)) { array_push($liste_des_tables, $table_temp[0]); } if (!in_array($this->table, $liste_des_tables)) { $test_table = false; } $valeur_champ = stripslashes($valeur_champ); //Recherche des champ : if ($test_table) { $requete = requete_sql("SHOW COLUMNS FROM {$this->table} LIKE '{$this->nom_champ}'"); while ($temp = tableau_sql($requete)) { $this->type = $temp["Type"]; if ($temp["Key"] == "MUL") { $this->est_relation = "1"; $chaine = explode("_", $this->nom_champ); $chaine = substr($chaine[0], 2); $this->table_relation = $prefixe . "_" . $chaine; require_once $adresserepertoiresite . '/scripts/php/class.regle.php'; $champ_liste_choix = new regle("0", "liste_" . substr($this->table_relation, 4)); $this->relation_champ = explode("|", $champ_liste_choix->valeur); } else { $this->est_relation = "0"; $this->table_relation = ""; $this->relation_champ = ""; } $this->valeur_par_defaut = $temp["Default"]; $this->extra = $temp["Extra"]; $this->est_nul = "0"; if ($temp["Null"] != "") { $this->est_nul = "1"; } } if (!in_array($this->table_relation, $liste_des_tables)) { $this->table_relation = ""; } //Calcul du champ de saisie : $type = explode("(", $this->type); //liste de choix du language if ($nom_champ == "langue") { $this->champ_saisie = "<select name=\"{$this->nom_champ}\">"; $langues_dispo = langue_possible(); foreach ($langues_dispo as $valeur) { $this->champ_saisie .= "<option value=" . $valeur; if (isset($valeur_champ) && $valeur_champ == $valeur) { $this->champ_saisie .= " selected=\"selected\""; } $this->champ_saisie .= ">" . $valeur . "</option>\n"; } $this->champ_saisie .= "\n</select>"; } elseif ($type[0] == "varchar") { $this->champ_saisie = "<input type=\"text\" name=\"{$this->nom_champ}\" maxlength=\"" . substr($type[1], 0, -1) . "\" value=\"" . $valeur_champ . "\" />"; } elseif ($type[0] == "char") { $this->champ_saisie = "<input type=\"text\" name=\"{$this->nom_champ}\" size=\"" . substr($type[1], 0, -1) . "\" maxlength=\"" . substr($type[1], 0, -1) . "\" value=\"" . $valeur_champ . "\" />"; } elseif ($type[0] == "tinyint") { require_once $adresserepertoiresite . '/scripts/php/class.regle.php'; $valeur_max_tinyint = new regle("0", "Note_max"); $this->champ_saisie = "<select name=\"{$this->nom_champ}\">"; for ($compteur = -$valeur_max_tinyint->valeur; $compteur <= $valeur_max_tinyint->valeur; $compteur++) { $this->champ_saisie .= "\n<option "; if (isset($valeur_champ) && $valeur_champ == $compteur) { $this->champ_saisie .= "selected=\"selected\" "; } $this->champ_saisie .= "value=\"" . $compteur . "\">" . $compteur . " "; $this->champ_saisie .= "</option>"; } $this->champ_saisie .= "\n</select>"; } elseif ($type[0] == "int" || $type[0] == "smallint" || $type[0] == "mediumint" || $type[0] == "bigint") { $this->champ_saisie = "<input type=\"text\" name=\"{$this->nom_champ}\" size=\"6\" value=\"" . $valeur_champ . "\" />"; } elseif ($type[0] == "text" || $type[0] == "tinytext" || $type[0] == "mediumtext" || $type[0] == "longtext") { $this->champ_saisie = "" . "\n<textarea rows =\"5\" cols=\"100\" id=\"" . $this->nom_champ . "_texte\" name=\"" . $this->nom_champ . "\">" . $valeur_champ . "</textarea>"; } elseif ($type[0] == "enum" && count(explode("','", substr($type[1], 0, -1))) > 3) { $i = 0; $temp = explode("','", substr($type[1], 0, -1)); $this->champ_saisie = "<select name=\"{$this->nom_champ}\">"; foreach ($temp as $valeur) { //Calcul du champ de saisie $i++; $this->champ_saisie .= "\n<option "; if (!isset($valeur_champ) && $i == 1 || isset($valeur_champ) && $valeur_champ == str_replace("'", "", $valeur)) { $this->champ_saisie .= "selected=\"selected\" "; } if (array_key_exists(str_replace("'", "", $valeur), $trad_SQL)) { $valeur_label = $trad_SQL[str_replace("'", "", $valeur)]; } else { $valeur_label = str_replace("'", "", $valeur); } $this->champ_saisie .= "value=\"" . str_replace("'", "", $valeur) . "\">" . $valeur_label . " "; $this->champ_saisie .= "</option>"; } $this->champ_saisie .= "\n</select>"; } elseif ($type[0] == "enum") { $i = 0; $temp = explode("','", substr($type[1], 0, -1)); $this->champ_saisie .= "<ul>"; foreach ($temp as $valeur) { //Calcul du champ de saisie $i++; $this->champ_saisie .= "\n<li><input type=\"radio\" name=\"{$this->nom_champ}\" value=\"" . str_replace("'", "", $valeur) . "\" id=\"" . $this->nom_champ . $i . "\" "; if (!isset($valeur_champ) && $i == 1 || isset($valeur_champ) && $valeur_champ == str_replace("'", "", $valeur)) { $this->champ_saisie .= "checked=\"checked\""; } if (array_key_exists(str_replace("'", "", $valeur), $trad_SQL)) { $valeur_label = $trad_SQL[str_replace("'", "", $valeur)]; } else { $valeur_label = str_replace("'", "", $valeur); } $this->champ_saisie .= " /> <label for=\"" . $this->nom_champ . $i . "\">" . $valeur_label . "</label></li>"; } $this->champ_saisie .= "</ul>"; } //Si le champ est une relation : if ($this->table_relation != "") { //Calcul du champ identifiant dans la table en relation : $id_champ = "id" . substr($this->table_relation, 4); //Debut du champ de saisie : $this->champ_saisie = "<select name=\"{$this->nom_champ}\">"; //Calcul de la requete a effectuer sur la table en relation : $requete = "select * FROM {$this->table_relation} WHERE visible='1'"; //Gestion des droits pour certains champs connus : require_once $adresserepertoiresite . '/scripts/php/class.regle.php'; $ordre_tri = new regle("0", "tri_theme"); $caractere_separateur = new regle("0", "premier_caractere_arbo_theme"); $caractere_indentation = new regle("0", "indentation_arbo_theme"); if ($this->table_relation == $prefixe . "_theme" && $utilisateur_connecte->admin != 1) { $requete = "select idtheme, CONCAT('{$caractere_separateur->valeur}', REPEAT('{$caractere_indentation->valeur}', niveau-1), titre) AS titre_arbo, CONCAT(LEFT('{$caractere_separateur->valeur}',niveau-1), REPEAT('{$caractere_indentation->valeur}', niveau-1), intitule) AS intitule_arbo, titre, intitule FROM qcm_theme WHERE visible='1' AND langue='{$langue}'"; $requete .= " AND "; $requete .= $id_champ . " IN ("; foreach ($utilisateur_connecte->idtheme_auteur as $vtheme) { $requete .= "'" . $vtheme . "',"; } $requete = substr($requete, 0, -1) . ") ORDER BY bornegauche ASC"; } elseif ($this->table_relation == $prefixe . "_questionnaire" && $utilisateur_connecte->admin != 1) { $requete .= " AND "; $requete .= $id_champ . " IN ('0',"; foreach ($utilisateur_connecte->idquestionnaire_auteur as $vquestionnaire) { $requete .= "'" . $vquestionnaire . "',"; } $requete = substr($requete, 0, -1) . ")"; } else { if ($this->table_relation == $prefixe . "_theme") { $requete = "select idtheme, CONCAT(LEFT('{$caractere_separateur->valeur}',niveau-1), REPEAT('{$caractere_indentation->valeur}', niveau-1), titre) AS titre_arbo, CONCAT(LEFT('{$caractere_separateur->valeur}',niveau-1), REPEAT('{$caractere_indentation->valeur}', niveau-1), intitule) AS intitule_arbo, titre, intitule FROM qcm_theme WHERE visible='1' AND langue='{$langue}'"; // Ordre de la liste : $requete .= " ORDER BY bornegauche ASC, {$ordre_tri->valeur} ASC;"; } else { // Ordre de la liste $requete .= " ORDER BY "; foreach ($this->relation_champ as $liste) { $requete .= $liste . " ASC, "; } $requete = substr($requete, 0, -2); } } $liste_sql = requete_sql($requete); //Complement du champ de saisie : $this->champ_saisie .= "\n<option value=\"0\">" . _NO_RELATION . "</option>"; while ($valeur = tableau_sql($liste_sql)) { $this->champ_saisie .= "\n<option "; if (isset($valeur_champ) && $valeur_champ == $valeur[$id_champ]) { $this->champ_saisie .= "selected=\"selected\" "; } $this->champ_saisie .= "value=\"" . $valeur[$id_champ] . "\" >"; foreach ($this->relation_champ as $liste) { $this->champ_saisie .= $valeur[$liste] . " "; } $this->champ_saisie .= "</option>"; } $this->champ_saisie .= "\n</select>"; } //Mise a vide des proprietes inappropriees : $this->champs = array(); $this->champ_identifiant = ""; } }
function liste_questionnaires($vfiltre = "1", $vordre = "titre") { //declaration des variables : global $page_affichage_questionnaire; global $adresserepertoiresite; require_once $adresserepertoiresite . '/scripts/php/class.questionnaire.php'; $vtempquestionnaire = new questionnaire(); $requete_sql = "SELECT *\r\n\t\tFROM {$vtempquestionnaire->table} AS T1 \r\n\t\tWHERE T1.idtheme_rel={$this->identifiant} AND T1.validation='1' AND T1.visible='1' AND " . $vfiltre . " \r\n\t\tORDER BY " . $vordre; $liste_questionnaires = requete_sql($requete_sql); $qte = compte_sql($liste_questionnaires); if ($qte != 0) { echo "\n<div class=\"tableau\"><table>"; echo "<tr><th>" . _TITRE . "</th><th>" . _INTITULE . "</th></tr>\n"; while ($questionnaire = tableau_sql($liste_questionnaires)) { if (is_array($questionnaire) && count($questionnaire) > 0) { echo "<tr>"; //Affichage titre et intitule : echo "<td><a href=\"" . $page_affichage_questionnaire . "?v=" . $questionnaire['idquestionnaire'] . "\">"; if (strlen($questionnaire['titre']) > 0) { echo $questionnaire['titre']; } else { echo " "; } echo "</a></td>"; echo "<td>"; if (strlen($questionnaire['intitule']) > 0) { echo $questionnaire['intitule']; } else { echo " "; } echo "</td></tr>\n"; } } echo "</table></div>\n"; } }
$vliste = ""; $vlien_theme_pere = lien_theme_pere($vtheme); foreach ($vtheme->liste_fils as $vthemefils) { $vthemefils_objet = new theme($vthemefils["idtheme"]); $nb = $vthemefils_objet->nb_questionnaire(); $vliste .= "<li><a class=\"lien_ajax\" onclick=\"maj_module(" . $vthemefils["idtheme"] . ")\">" . htmlentities($vthemefils["titre"], ENT_QUOTES, "UTF-8") . "</a> (<span class=\"nb_direct\" title=\"" . _NB_QUESTIONNAIRES_DIRECT . "\">" . $nb[1] . "</span>" . _THEME_SEPARATEUR_NB_QUESTIONNAIRE_DIRECT_ARBO . "<span class=\"nb_arbo\" title=\"" . _NB_QUESTIONNAIRES_ARBO . "\">" . $nb[0] . "</span>) </li>\n"; } } else { $vtheme = new theme(); $i = 0; $vliste = ""; $vtheme_temp = ""; $vlongueur_separateur = strlen(_THEME_FILS_SEPARATEUR_LISTE); $vlongueur_separateur = -1 * $vlongueur_separateur; $vtheme_niv_1_sql = "SELECT idtheme FROM {$vtheme->table} WHERE niveau=1 AND visible='1' AND langue='{$langue}';"; $vtheme_niv_1_sql = requete_sql($vtheme_niv_1_sql); while ($vthemeid_temp = tableau_sql($vtheme_niv_1_sql)) { $vtheme_temp[$i] = new theme($vthemeid_temp[0]); $vliste[$i] = ""; foreach ($vtheme_temp[$i]->liste_fils as $vthemefils_temp) { $vthemefils_objet = new theme($vthemefils_temp["idtheme"]); $nb = $vthemefils_objet->nb_questionnaire(); $vliste[$i] .= "<li><a class=\"lien_ajax\" onclick=\"maj_module(" . $vthemefils_temp["idtheme"] . ")\">" . htmlentities($vthemefils_temp["titre"], ENT_QUOTES, "UTF-8") . "</a> (<span class=\"nb_direct\" title=\"" . _NB_QUESTIONNAIRES_DIRECT . "\">" . $nb[1] . "</span>" . _THEME_SEPARATEUR_NB_QUESTIONNAIRE_DIRECT_ARBO . "<span class=\"nb_arbo\" title=\"" . _NB_QUESTIONNAIRES_ARBO . "\">" . $nb[0] . "</span>) </li>\n"; } $i++; } } $activation_AJAX = new regle("0", "Activation_AJAX"); if ($activation_AJAX->valeur == "1") { ?> <script type="text/javascript" src="./scripts/javascript/prototype.js" charset="utf-8"></script>
function mise_a_jour_theme() { //initialisation des variables globales : global $langue; global $adresserepertoiresite; //initialisation des variables : $pere_prec = 0; $taille_prec = 0; //Creation d'une variable temporaire de classe theme : require_once $adresserepertoiresite . '/scripts/php/class.theme.php'; $vtemp = new theme(); //RAZ des taille et borne gauche des themes: $update_raz = "UPDATE " . $vtemp->table . " SET taille=1, bornegauche=1 WHERE langue='{$langue}'"; $update_raz = requete_sql($update_raz); //mise a jour du niveau des themes : $update_niveaumin = "UPDATE " . $vtemp->table . " SET niveau=1 WHERE idtheme_rel=0 AND langue='{$langue}'"; $update_niveaumin = requete_sql($update_niveaumin); $dernierniveau = 1; $select_niveau = "select T1.* FROM " . $vtemp->table . " AS T1, " . $vtemp->table . " AS T2 WHERE T2.niveau={$dernierniveau} AND T1.idtheme_rel=T2.idtheme AND T1.langue='{$langue}' AND T2.langue='{$langue}';"; $select_niveau = requete_sql($select_niveau); while (compte_sql($select_niveau) > 0) { $vniveau = $dernierniveau + 1; $update_niveau = "UPDATE " . $vtemp->table . " SET niveau={$vniveau} WHERE idtheme"; $update_niveau .= " IN ("; while ($vtheme = tableau_sql($select_niveau)) { $update_niveau .= "'" . $vtheme['idtheme'] . "',"; } $update_niveau = substr($update_niveau, 0, -1) . ")"; $update_niveau = requete_sql($update_niveau); $dernierniveau = $dernierniveau + 1; $select_niveau = "select T1.* FROM " . $vtemp->table . " AS T1, " . $vtemp->table . " AS T2 WHERE T2.niveau={$dernierniveau} AND T1.idtheme_rel=T2.idtheme AND T1.langue='{$langue}' AND T2.langue='{$langue}';"; $select_niveau = requete_sql($select_niveau); } //2 boucles sur les niveaux pour mettre a jour la taille et la borne gauche: $select_niveaumax = "select MAX(niveau) FROM " . $vtemp->table . " WHERE visible='1' AND langue='{$langue}';"; $select_niveaumax = requete_sql($select_niveaumax); $niveaumax = tableau_sql($select_niveaumax); $niveaumax = $niveaumax[0]; //mise a jour de la taille des themes for ($i = $niveaumax; $i > 0; $i--) { $select_suivante = "select T2." . $vtemp->champ_identifiant . ", SUM(T1.taille+1)+1 AS vtaille \r\n\t\t\tFROM " . $vtemp->table . " AS T1 \r\n\t\t\tRIGHT JOIN " . $vtemp->table . " AS T2 ON (T1." . $vtemp->champ_identifiant . "_rel=T2." . $vtemp->champ_identifiant . " AND T1.visible=1 AND T1.langue='{$langue}') \r\n\t\t\tWHERE T2.niveau={$i} AND T2.visible=1 AND T2.langue='{$langue}' \r\n\t\t\tGROUP BY T1." . $vtemp->champ_identifiant . "_rel"; $select_suivante = requete_sql($select_suivante); while ($noeud = tableau_sql($select_suivante)) { $update_taille = "UPDATE {$vtemp->table} SET taille=" . $noeud['vtaille'] . " WHERE {$vtemp->champ_identifiant}=" . $noeud['idtheme'] . ";"; requete_sql($update_taille); } } //mise a jour de la bornegauche des themes require_once $adresserepertoiresite . '/scripts/php/class.regle.php'; $ordre_tri = new regle("0", "tri_theme"); for ($i = 0; $i < $niveaumax + 1; $i++) { //mise a jour des racines de l'arborescence if ($i == 0) { $select_borne = "select T1." . $vtemp->champ_identifiant . ", T1.taille, T2.bornegauche AS vborne, T2.idtheme AS vidtheme_pere FROM " . $vtemp->table . " AS T1 \r\n\t\t\t\tLEFT JOIN " . $vtemp->table . " AS T2 ON (T1." . $vtemp->champ_identifiant . "_rel=T2." . $vtemp->champ_identifiant . " AND T1.visible=1 AND T1.langue='{$langue}')\r\n\t\t\t\tWHERE T2.niveau IS NULL AND T1.idtheme IS NOT NULL AND T2.langue='{$langue}'\r\n\t\t\t\tORDER BY T1.idtheme_rel ASC, T1.{$ordre_tri->valeur} ASC"; } else { $select_borne = "select T1." . $vtemp->champ_identifiant . ", T1.taille, T2.bornegauche AS vborne, T2.idtheme AS vidtheme_pere\r\n\t\t\t\tFROM " . $vtemp->table . " AS T1 \r\n\t\t\t\tRIGHT JOIN " . $vtemp->table . " AS T2 ON (T1." . $vtemp->champ_identifiant . "_rel=T2." . $vtemp->champ_identifiant . " AND T1.visible=1 AND T1.langue='{$langue}')\r\n\t\t\t\tWHERE T2.niveau={$i} AND T1.idtheme IS NOT NULL AND T2.visible=1 AND T2.langue='{$langue}'\r\n\t\t\t\tORDER BY T1.idtheme_rel ASC, T1.{$ordre_tri->valeur} ASC"; } $select_borne = requete_sql($select_borne); $nombre_ligne = compte_sql($select_borne); for ($j = 1; $j <= $nombre_ligne; $j++) { $element = tableau_sql($select_borne); //si l'on change de pere la borne se calcul par rapport a la borne du pere : if ($element['vidtheme_pere'] != $pere_prec) { $borne_prec = $element['vborne'] + 1; $update_borne = "UPDATE {$vtemp->table} SET bornegauche=" . $borne_prec . " WHERE {$vtemp->champ_identifiant}=" . $element['idtheme'] . ";"; $taille_prec = $element['taille']; requete_sql($update_borne); $pere_prec = $element['vidtheme_pere']; } else { $borne_prec = $taille_prec + 1 + $borne_prec; $update_borne = "UPDATE {$vtemp->table} SET bornegauche=" . $borne_prec . " WHERE {$vtemp->champ_identifiant}=" . $element['idtheme'] . ";"; $taille_prec = $element['taille']; requete_sql($update_borne); $pere_prec = $element['vidtheme_pere']; } } } }