function delete_user($login) { $sql = "SELECT source FROM " . TABLE_PREFIX . "_utilisateurs\n\t WHERE login LIKE '{$login}'"; $res = grr_sql_query($sql); $row = grr_sql_row($res, 0); $source = $row[0]; if ($source == 'ext') { // Si l'utilisateur avait été créé automatiquement, on le // supprime // Cf. admin_user.php l99 et l203 $sql = "DELETE FROM " . TABLE_PREFIX . "_utilisateurs WHERE login='******'"; if (grr_sql_command($sql) < 0) { fatal_error(1, "<p>" . grr_sql_error()); } else { grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_mailuser_room WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_user_area WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_user_room WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_area WHERE login='******'"); grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_site WHERE login='******'"); } // Fin de la session grr_closeSession($_GET['auto']); } // sinon c'est source="local": on le garde et il y a toujours accès // classique login/mot de passe). }
function jQuery_DatePicker($typeDate) { if (@file_exists('../include/connect.inc.php')) { $racine = "../"; } else { $racine = "./"; } if ($typeDate == 'rep_end' && isset($_GET['id'])) { $res = grr_sql_query("SELECT repeat_id FROM " . TABLE_PREFIX . "_entry WHERE id=" . $_GET['id'] . ";"); if (!$res) { fatal_error(0, grr_sql_error()); } $repeat_id = implode('', grr_sql_row($res, 0)); $res = grr_sql_query("SELECT rep_type, end_date, rep_opt, rep_num_weeks, start_time, end_time FROM " . TABLE_PREFIX . "_repeat WHERE id={$repeat_id}"); if (!$res) { fatal_error(0, grr_sql_error()); } if (grr_sql_count($res) == 1) { $row6 = grr_sql_row($res, 0); $date = date_parse(date("Y-m-d H:i:s", $row6[1])); $day = $date['day']; $month = $date['month']; $year = $date['year']; } else { if (isset($_GET['day'])) { $day = $_GET['day']; } else { $day = date("d"); } if (isset($_GET['month'])) { $month = $_GET['month']; } else { $month = date("m"); } if (isset($_GET['year'])) { $year = $_GET['year']; } else { $year = date("Y"); } } } else { global $start_day, $start_month, $start_year, $end_day, $end_month, $end_year; if (isset($_GET['day'])) { $day = $_GET['day']; } else { $day = date("d"); } if (isset($start_day) && $typeDate == 'start') { $day = $start_day; } elseif (isset($end_day) && $typeDate == 'end') { $day = $end_day; } if (isset($_GET['month'])) { $month = $_GET['month']; } else { $month = date("m"); } if (isset($start_month) && $typeDate == 'start') { $month = $start_month; } elseif (isset($end_month) && $typeDate == 'end') { $month = $end_month; } if (isset($_GET['year'])) { $year = $_GET['year']; } else { $year = date("Y"); } if (isset($start_year) && $typeDate == 'start') { $year = $start_year; } elseif (isset($end_year) && $typeDate == 'end') { $year = $end_year; } } genDateSelector("" . $typeDate . "_", "{$day}", "{$month}", "{$year}", ""); echo '<input type="hidden" disabled="disabled" id="mydate_' . $typeDate . '">' . PHP_EOL; echo '<script>' . PHP_EOL; echo ' $(function() {' . PHP_EOL; echo '$.datepicker.setDefaults( $.datepicker.regional[\'fr\'] );' . PHP_EOL; echo ' $(\'#mydate_' . $typeDate . '\').datepicker({' . PHP_EOL; echo ' beforeShow: readSelected, onSelect: updateSelected,' . PHP_EOL; echo ' showOn: \'both\', buttonImageOnly: true, buttonImage: \'images/calendar.png\',buttonText: "Choisir la date"});' . PHP_EOL; echo ' function readSelected()' . PHP_EOL; echo ' {' . PHP_EOL; echo ' $(\'#mydate_' . $typeDate . '\').val($(\'#' . $typeDate . '_day\').val() + \'/\' +' . PHP_EOL; echo ' $(\'#' . $typeDate . '_month\').val() + \'/\' + $(\'#' . $typeDate . '_year\').val());' . PHP_EOL; echo ' return {};' . PHP_EOL; echo ' }' . PHP_EOL; echo ' function updateSelected(date)' . PHP_EOL; echo ' {' . PHP_EOL; echo ' $(\'#' . $typeDate . '_day\').val(date.substring(0, 2));' . PHP_EOL; echo ' $(\'#' . $typeDate . '_month\').val(date.substring(3, 5));' . PHP_EOL; echo ' $(\'#' . $typeDate . '_year\').val(date.substring(6, 10));' . PHP_EOL; echo ' }' . PHP_EOL; echo ' });' . PHP_EOL; echo '</script>' . PHP_EOL; }
echo "</pre>\n"; } echo "<table cellspacing=\"0\" border=\"1\" width=\"100%\"><tr>"; # We need to know what all the rooms area called, so we can show them all # pull the data from the db and store it. Convienently we can print the room # headings and capacities at the same time $sql = "select room_name, capacity, id, description, statut_room from ".TABLE_PREFIX."_room where area_id='".$area."' order by order_display, room_name"; $res = grr_sql_query($sql); # It might be that there are no rooms defined for this area. # If there are none then show an error and dont bother doing anything # else if (! $res) fatal_error(0, grr_sql_error()); if (grr_sql_count($res) == 0) { echo "<h1>".get_vocab("no_rooms_for_area")."</h1>"; grr_sql_free($res); } else { // Affichage de la première ligne contenant le nom des jours (lundi, mardi, ...) et les dates ("10 juil", "11 juil", ...) echo "<th style=\"width:10%;\"> </th>\n"; // Première cellule vide $t = $time; $num_week_day = $weekstarts; // Pour le calcul des jours à afficher for ($weekcol = 0; $weekcol < 7; $weekcol++) { $num_day = strftime("%d", $t); $temp_month = strftime("%m", $t); $temp_month2 = strftime("%b", $t); $temp_year = strftime("%Y", $t);
$starttime = mktime($morningstarts, 0, 0, $month, $day, $year); $endtime = mktime($eveningends, 0, $resolution, $month, $day, $year); // Pour toutes les dates bon précédement enregistrées, on efface toutes les résa en conflit if (!in_array($n, $day_old)) { $sql = "select id from " . TABLE_PREFIX . "_room"; $res = grr_sql_query($sql); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); $i++) { $result += grrDelEntryInConflict($row[0], $starttime, $endtime, 0, 0, 1); } } } // On enregistre la valeur dans ".TABLE_PREFIX."_calendar $sql = "INSERT INTO " . TABLE_PREFIX . "_calendar set DAY='" . $n . "'"; if (grr_sql_command($sql) < 0) { fatal_error(0, "<p>" . grr_sql_error()); } } $day++; } $month++; if ($month == 13) { $year++; $month = 1; } } } echo '<p>', get_vocab("les_journees_cochees_sont_ignorees"), '</p>', PHP_EOL; echo '<table class="table table-bordered">', PHP_EOL; $basetime = mktime(12, 0, 0, 6, 11 + $weekstarts, 2000); for ($i = 0; $i < 7; $i++) {
$duration = $row[4] - $row[3]; $etype = $row[5]; $room_id = $row[6]; $entry_type = $row[7]; $rep_id = $row[8]; $option_reservation = $row[9]; $jours_c = $row[10]; $clef = $row[14]; $courrier = $row[15]; $modif_option_reservation = 'n'; if ($entry_type >= 1) { $sql = 'SELECT rep_type, start_time, end_date, rep_opt, rep_num_weeks, end_time, type, name, beneficiaire, description FROM ' . TABLE_PREFIX . "_repeat WHERE id='" . protect_data_sql($rep_id) . "'"; $res = grr_sql_query($sql); if (!$res) { fatal_error(1, grr_sql_error()); } if (grr_sql_count($res) != 1) { fatal_error(1, get_vocab('repeat_id') . $rep_id . get_vocab('not_found')); } $row = grr_sql_row($res, 0); grr_sql_free($res); $rep_type = $row[0]; if ($rep_type == 2) { $rep_num_weeks = $row[4]; } if ($edit_type == 'series') { $start_day = (int) strftime('%d', $row[1]); $start_month = (int) strftime('%m', $row[1]); $start_year = (int) strftime('%Y', $row[1]); $start_hour = (int) strftime('%H', $row[1]);
# On construit alors un tableau de la forme : # d[weekday][slot][x], où x = id, color, data. # [slot] is based at 0 for midnight, but only slots within the hours of # interest (morningstarts : eveningends) are filled in. # [id] and [data] are only filled in when the meeting should be labeled, # which is once for each meeting on each weekday. # Note: weekday here is relative to the $weekstarts configuration variable. # If 0, then weekday=0 means Sunday. If 1, weekday=0 means Monday. $first_slot = $morningstarts * 3600 / $resolution; $last_slot = ($eveningends * 3600 + $eveningends_minutes * 60) / $resolution; if ($debug_flag) echo "<br />DEBUG: query=$sql <br />first_slot=$first_slot - last_slot=$last_slot\n"; $res = grr_sql_query($sql); if (! $res) echo grr_sql_error(); else for ($i = 0; ($row = grr_sql_row($res, $i)); $i++) { if ($debug_flag) echo "<br />DEBUG: result $i, id $row[4], starts $row[0] (".affiche_date($row[0])."), ends $row[1] (".affiche_date($row[1]).")\n"; # Fill in slots for the meeting. Start at the meeting start time or # week start (which ever is later), and end one slot before the meeting # end time or week end (which ever is earlier). # Note: int casts on database rows for min and max is needed for PHP3. // Pour la réservation en cours, on détermine le début de la journée $debut_jour $month_current = date("m",$row[0]); $day_current = date("d",$row[0]); $year_current = date("Y",$row[0]); $debut_jour=mktime($morningstarts,0,0,$month_current,$day_current,$year_current);
/** * Open a new session * * Check the provided login and password * Register data from the database to the session cookie * Log the session * * Returns 1 if login succeeded, >= 1 otherwise * * @_login string Login of the user * @_password string Password * * @return bool The session is open */ function grr_opensession($_login, $_password, $_user_ext_authentifie = '', $tab_login=array(), $tab_groups=array()) { // Initialisation de $auth_ldap $auth_ldap = 'no'; // Initialisation de $auth_imap $auth_imap = 'no'; // Initialisation de $est_authentifie_sso $est_authentifie_sso = FALSE; /* *********************************************************** Premier gros morçeau ! On traite le cas où l'utilisateur a été authentifié par SSO *********************************************************** */ if ($_user_ext_authentifie != '') { $est_authentifie_sso = TRUE; // Statut par défaut $_statut = ""; $sso = getSettingValue("sso_statut"); if ($sso == "cas_visiteur") $_statut = "visiteur"; // cette ligne n'est pas vraiment utile quand le statut est recalculé plus bas par effectuer_correspondance_profil_statut else if ($sso == "cas_utilisateur") $_statut = "utilisateur"; // cette ligne n'est pas vraiment utile quand le statut est recalculé plus bas par effectuer_correspondance_profil_statut else if ($sso == "lemon_visiteur") $_statut = "visiteur"; else if ($sso == "lemon_utilisateur") $_statut = "utilisateur"; else if ($sso == "http_visiteur") $_statut = "visiteur"; else if ($sso == "http_utilisateur") $_statut = "utilisateur"; else if ($sso == "lasso_visiteur") $_statut = "visiteur"; else if ($sso == "lasso_utilisateur") $_statut = "utilisateur"; else if ($sso == "lcs") { if ($_user_ext_authentifie == "lcs_eleve") $_statut = getSettingValue("lcs_statut_eleve"); if ($_user_ext_authentifie == "lcs_non_eleve") $_statut = getSettingValue("lcs_statut_prof"); $temoin_grp_ok="non"; if (trim(getSettingValue("lcs_liste_groupes_autorises")) == "") { $temoin_grp_ok="oui"; } else { $tab_grp_autorise=explode(";",getSettingValue("lcs_liste_groupes_autorises")); for($i=0;$i<count($tab_grp_autorise);$i++) { if (in_array($tab_grp_autorise[$i],$tab_groups)) { $temoin_grp_ok="oui"; } } } // Si l'utilisateur n'appartient pas aux groupes LCS autorisés if ($temoin_grp_ok != 'oui') { return "5"; die(); } } $sql = "select upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site from ".TABLE_PREFIX."_utilisateurs where login = '******' and "; if ($_user_ext_authentifie != 'lasso') $sql .= " password = '' and "; $sql .= " etat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // L'utilisateur est présent dans la base locale if ($sso == "lcs") { // Mise à jour des données $nom_user = $tab_login["nom"]; $email_user = $tab_login["email"]; $prenom_user = $tab_login["fullname"]; // On met à jour $sql = "UPDATE ".TABLE_PREFIX."_utilisateurs SET nom='".protect_data_sql($nom_user)."', prenom='".protect_data_sql($prenom_user)."', email='".protect_data_sql($email_user)."' where login='******'"; } else if ($_user_ext_authentifie == "cas") { $nom_user = $tab_login["user_nom"]; $email_user = $tab_login["user_email"]; $prenom_user = $tab_login["user_prenom"]; if ($nom_user != '') { // On détecte si Nom, Prénom ou Email ont changé, // Si c'est le cas, on met à jour les champs $req = grr_sql_query("select nom, prenom, email from ".TABLE_PREFIX."_utilisateurs where login ='******'"); $res = mysql_fetch_array($req); $nom_en_base = $res[0]; $prenom_en_base = $res[1]; $email_en_base = $res[2]; if( (strcmp($nom_en_base, $nom_user) != 0) || (strcmp($prenom_en_base, $prenom_user) != 0) || (strcmp($email_en_base, $email_user) != 0) ) { // Si l'un des champs est différent, on met à jour les champs $sql = "UPDATE ".TABLE_PREFIX."_utilisateurs SET nom='".protect_data_sql($nom_user)."', prenom='".protect_data_sql($prenom_user)."', email='".protect_data_sql($email_user)."' where login='******'"; if (grr_sql_command($sql) < 0) { fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); return "2"; die(); } /* Comme les données de la base on été changés, on doit remettre à jour la variable $row, Pour que les données mises en sessions soient les bonnes on récupère les données de l'utilisateur */ $sql = "select upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site from ".TABLE_PREFIX."_utilisateurs where login = '******' and source = 'ext' and etat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // on récupère les données de l'utilisateur dans $row $row = grr_sql_row($res_user,0); } else { return "2"; die(); } } } } if (grr_sql_command($sql) < 0) {fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); return "2"; die(); } // on récupère les données de l'utilisateur dans $row $row = grr_sql_row($res_user,0); } else { // L'utilisateur n'est pas présent dans la base locale ou est inactif // ou possède un mot de passe (utilisateur local GRR) // On teste si un utilisateur porte déjà le même login $test = grr_sql_query1("select login from ".TABLE_PREFIX."_utilisateurs where login = '******'"); if ($test != '-1') { // le login existe déjà : impossible d'importer le profil. return "3"; die(); } else { # Aucun utilisateur dans la base locale ne porte le même login. On peut continuer la procédure d'importation # 1er cas : LCS. if ($sso == "lcs") { if ($_statut == 'aucun') { // L'utilisateur n'est pas autorisé à se connecter à GRR return "5"; die(); } else { $nom_user = $tab_login["nom"]; $email_user = $tab_login["email"]; $prenom_user = $tab_login["fullname"]; } # 2ème cas : SSO lasso. } else if ($sso == "lasso_visiteur" or $sso == "lasso_utilisateur") { if (!empty($tab_login)) { $nom_user = $tab_login["nom"]; $email_user = $tab_login["email"]; $prenom_user = $tab_login["fullname"]; } # 3ème cas : SSO CAS. } else if ($_user_ext_authentifie == "cas" && !empty($tab_login)) { // Cas d'une authentification CAS $nom_user = $tab_login["user_nom"]; $email_user = $tab_login["user_email"]; $prenom_user = $tab_login["user_prenom"]; $code_fonction_user = $tab_login["user_code_fonction"]; $libelle_fonction_user = $tab_login["user_libelle_fonction"]; $language_user = $tab_login["user_language"]; $default_style_user = $tab_login["user_default_style"]; if (getSettingValue("sso_ac_corr_profil_statut")=='y') $_statut = effectuer_correspondance_profil_statut($code_fonction_user, $libelle_fonction_user); /* CAS d'un LDAP avec SSO CAS ou avec SSO Lemonldap on tente de récupérer des infos dans l'annuaire avant d'importer le profil dans GRR */ } else if ((getSettingValue("ldap_statut") != '') and (@function_exists("ldap_connect")) and (@file_exists("include/config_ldap.inc.php")) and ($_user_ext_authentifie=='cas')) { // On initialise au cas où on ne réussisse pas à récupérer les infos dans l'annuaire. $l_nom=$_login; $l_email=''; $l_prenom=''; include "config_ldap.inc.php"; // Connexion à l'annuaire $ds = grr_connect_ldap($ldap_adresse,$ldap_port,$ldap_login,$ldap_pwd,$use_tls); $user_dn = grr_ldap_search_user($ds, $ldap_base,getSettingValue("ldap_champ_recherche"), $_login, $ldap_filter, "no"); // Test with login and password of the user if (!$ds) { $ds = grr_connect_ldap($ldap_adresse,$ldap_port,$_login,$_password,$use_tls); } if ($ds) { $result = @ldap_read($ds, $user_dn, "objectClass=*", array(getSettingValue("ldap_champ_nom"),getSettingValue("ldap_champ_prenom"),getSettingValue("ldap_champ_email"))); } if ($result) { // Recuperer les donnees de l'utilisateur $info = @ldap_get_entries($ds, $result); if (is_array($info)) { for ($i = 0; $i < $info["count"]; $i++) { $val = $info[$i]; if (is_array($val)) { if (isset($val[getSettingValue("ldap_champ_nom")][0])) $l_nom = ucfirst($val[getSettingValue("ldap_champ_nom")][0]); else $l_nom=iconv("ISO-8859-1","utf-8","Nom à préciser"); if (isset($val[getSettingValue("ldap_champ_prenom")][0])) $l_prenom = ucfirst($val[getSettingValue("ldap_champ_prenom")][0]); else $l_prenom=iconv("ISO-8859-1","utf-8","Prénom à préciser"); if (isset($val[getSettingValue("ldap_champ_email")][0])) $l_email = $val[getSettingValue("ldap_champ_email")][0]; else $l_email=''; } } } // Convertir depuis UTF-8 (jeu de caracteres par defaut) if ((function_exists("utf8_decode")) and (getSettingValue("ConvertLdapUtf8toIso")=="y")) { $l_email = utf8_decode($l_email); $l_nom = utf8_decode($l_nom); $l_prenom = utf8_decode($l_prenom); } } $nom_user = $l_nom; $email_user = $l_email; $prenom_user = $l_prenom; /* CAS ou : * LDAP n'est pas configuré, * il peut s'agit d'une authentification "SSO CAS", "SSO Lemonldap" mais ce n'est alors pas normal * ou bien il s'agit d'une authentification "HTTP" */ } else { //definition du nom $nom_user=""; if (getSettingValue("http_champ_nom")!="") { $_nom_user = getSettingValue("http_champ_nom"); if (isset($_SERVER["$_nom_user"])) $nom_user = $_SERVER["$_nom_user"]; } if ($nom_user =="") $nom_user=$_login; //definition email : $email_user=""; if (getSettingValue("http_champ_email")) { $_email_user = getSettingValue("http_champ_email"); if (isset($_SERVER["$_email_user"])) $email_user = $_SERVER["$_email_user"]; //on verifie le statut si domain statut est actif : if ($email_user != "") { if ((getSettingValue("http_sso_domain")) and (getSettingValue("http_sso_domain")!="")) { //explode du mail : $domaine=explode("@",$email_user); if (isset($domaine[1])) { if($domaine[1] == getSettingValue("http_sso_domain")) if (getSettingValue("http_sso_statut_domaine")!="") $_statut=getSettingValue("http_sso_statut_domaine"); } } } } //definition du prenom : $prenom_user=""; if (getSettingValue("http_champ_prenom")) { $_prenom_user = getSettingValue("http_champ_prenom"); if (isset($_SERVER["$_prenom_user"])) $prenom_user = $_SERVER["$_prenom_user"]; } } // On insère le nouvel utilisateur $sql = "INSERT INTO ".TABLE_PREFIX."_utilisateurs SET nom='".protect_data_sql($nom_user)."', prenom='".protect_data_sql($prenom_user)."', login='******', password='', statut='".$_statut."', email='".protect_data_sql($email_user)."', etat='actif',"; if (isset($default_style_user) and ($default_style_user!="")) $sql .= "default_style='".$default_style_user."',"; if (isset($language_user) and ($language_user!="")) $sql .= "default_language='".$language_user."',"; $sql .= "source='ext'"; if (grr_sql_command($sql) < 0) {fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); return "2"; die(); } // on récupère les données de l'utilisateur $sql = "select upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site from ".TABLE_PREFIX."_utilisateurs where login = '******' and source = 'ext' and etat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // on récupère les données de l'utilisateur dans $row $row = grr_sql_row($res_user,0); } else { return "2"; die(); } } } /* ************************ On traite le cas NON SSO -> LDAP sans SSO -> Imap ************************ */ } else { $passwd_md5 = md5($_password); $sql = "select upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site from ".TABLE_PREFIX."_utilisateurs where login = '******' and password = '******'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); /* On est toujours dans le cas NON SSO - L'utilisateur n'est pas présent dans la base locale */ if ($num_row != 1) { /* Cas où Ldap a été configuré --------------------------- On tente une authentification ldap */ if ((getSettingValue("ldap_statut") != '') and (@function_exists("ldap_connect")) and (@file_exists("include/config_ldap.inc.php"))) { //$login_search = ereg_replace("[^-@._[:space:][:alnum:]]", "", $_login); $login_search = preg_replace("/[^\-@._[:space:]a-zA-Z0-9]/", "", $_login); if ($login_search != $_login) { return "6"; //L'identifiant comporte des caratères non autorisés exit(); } // Convertir depuis UTF-8 (jeu de caracteres par defaut) if ((function_exists("utf8_decode")) and (getSettingValue("ConvertLdapUtf8toIso")=="y")) { $_password=utf8_encode($_password); } $user_dn = grr_verif_ldap($_login, $_password); if ($user_dn=="error_1") { // chemin invalide ou filtre add mauvais return "7"; exit(); } else if ($user_dn=="error_2") { // aucune entrée ne correspond au filtre return "8"; exit(); } else if ($user_dn=="error_3") { // plus de deux résultats dans la recherche -> Echec de l'authentification ldap return "9"; exit(); } else if ($user_dn) { $auth_ldap = 'yes'; // Voir suite plus bas } else { // Echec de l'authentification ldap return "4"; exit(); } /* Cas où Imap a été configuré --------------------------- */ } elseif ((getSettingValue("imap_statut") != '') and (@function_exists("imap_open")) and (@file_exists("include/config_imap.inc.php"))) { // $login_search = ereg_replace("[^-@._[:space:][:alnum:]]", "", $_login); $login_search = preg_replace("/[^\-@._[:space:]a-zA-Z0-9]/", "", $_login); if ($login_search != $_login) { return "6"; //L'identifiant comporte des carat?res non autoris?s exit(); } $user_imap=grr_verif_imap($_login,$_password); if($user_imap){ $auth_imap='yes'; imap_close($user_imap); } else { return "10"; exit(); } } else { return "2"; exit(); } } else { /* On est toujours dans le cas NON SSO Cas d'un utilisateur présent dans la base On récupère les données de l'utilisateur dans $row */ $row = grr_sql_row($res_user,0); // S'il s'agit d'un utilisateur inactif, on s'arrête là if ($row[12] == 'inactif') { return "5"; exit(); } } // Fin du cas NON SSO } // Cette partie ne concerne que les utilisateurs pour lesquels l'authentification ldap ci-dessus a réussi // On tente d'interroger la base ldap pour obtenir des infos sur l'utilisateur if ($auth_ldap == 'yes') { // Cas particulier des serveur SE3 // se3_liste_groupes_autorises est vide -> pas de restriction if (trim(getSettingValue("se3_liste_groupes_autorises")) == "") { $temoin_grp_ok="oui"; } else { // se3_liste_groupes_autorises n'est pas vide -> on teste si le $_login appartient à un des groupes $temoin_grp_ok="non"; $tab_grp_autorise=explode(";",getSettingValue("se3_liste_groupes_autorises")); for($i=0;$i<count($tab_grp_autorise);$i++) { if(se3_grp_members($tab_grp_autorise[$i],$_login)=="oui"){ $temoin_grp_ok="oui"; } } } if ($temoin_grp_ok!="oui") { // Connexion à GRR non autorisée. return "5"; die(); } // Fin cas particulier des serveur SE3 // on regarde si un utilisateur ldap ayant le même login existe déjà $sql = "select upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site from ".TABLE_PREFIX."_utilisateurs where login = '******' and source = 'ext' and etat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // un utilisateur ldap ayant le même login existe déjà // Lire les infos sur l'utilisateur depuis LDAP $user_info = grr_getinfo_ldap($user_dn,$_login,$_password); // Update GRR database $sql2 = "UPDATE ".TABLE_PREFIX."_utilisateurs SET nom='".protect_data_sql($user_info[0])."', prenom='".protect_data_sql($user_info[1])."', email='".protect_data_sql($user_info[2])."' where login='******'"; if (grr_sql_command($sql2) < 0) { fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); return "2"; die(); } // on récupère les données de l'utilisateur dans $row $res_user = grr_sql_query($sql); $row = grr_sql_row($res_user,0); } else { // pas d'utilisateur ldap ayant le même login dans la base GRR // Lire les infos sur l'utilisateur depuis LDAP $user_info = grr_getinfo_ldap($user_dn,$_login,$_password); // On teste si un utilisateur porte déjà le même login $test = grr_sql_query1("select login from ".TABLE_PREFIX."_utilisateurs where login = '******'"); if ($test != '-1') { // authentification bonne mais le login existe déjà : impossible d'importer le profil. return "3"; die(); } else { // On insère le nouvel utilisateur $sql = "INSERT INTO ".TABLE_PREFIX."_utilisateurs SET nom='".protect_data_sql($user_info[0])."', prenom='".protect_data_sql($user_info[1])."', login='******', password='', statut='".getSettingValue("ldap_statut")."', email='".protect_data_sql($user_info[2])."', etat='actif', source='ext'"; if (grr_sql_command($sql) < 0) {fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); return "2"; die(); } $sql = "select upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site from ".TABLE_PREFIX."_utilisateurs where login = '******' and source = 'ext' and etat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // on récupère les données de l'utilisateur dans $row $row = grr_sql_row($res_user,0); } else { return "2"; die(); } } } } /* IMAP *************************************************** Cette partie ne concerne que les utilisateurs pour lesquels l'authentification imap a réussi */ if($auth_imap == 'yes'){ // on regarde si un utilisateur imap ayant le meme login existe deja $sql = "select upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site from ".TABLE_PREFIX."_utilisateurs where login = '******' and source = 'ext' and etat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // un utilisateur imap ayant le meme login existe deja // on recupere les donnees de l'utilisateur dans $row $row = grr_sql_row($res_user,0); } else { // pas d'utilisateur imap ayant le m?me login dans la base GRR // Lire les infos sur l'utilisateur depuis imap include "config_imap.inc.php"; // Connexion ? l'annuaire $conn_imap = grr_connect_imap($imap_adresse,$imap_port,$_login,$_password,$imap_type,$imap_ssl,$imap_cert,$imap_tls); if($conn_imap){ // Test with login and password of the user $l_nom=""; $l_prenom=""; $l_email=$_login."@".$imap_domaine; imap_close($conn_imap); } // On teste si un utilisateur porte déjà le même login $test = grr_sql_query1("select login from ".TABLE_PREFIX."_utilisateurs where login = '******'"); if ($test != '-1') { // authentification bonne mais le login existe déjà : impossible d'importer le profil. return "3"; die(); } else { // On insère le nouvel utilisateur $sql = "INSERT INTO ".TABLE_PREFIX."_utilisateurs SET nom='".protect_data_sql($l_nom)."', prenom='".protect_data_sql($l_prenom)."', login='******', password='', statut='".getSettingValue("imap_statut")."', email='".protect_data_sql($l_email)."', etat='actif', source='ext'"; if (grr_sql_command($sql) < 0) {fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error()); return "2"; die(); } $sql = "select upper(login) login, password, prenom, nom, statut, now() start, default_area, default_room, default_style, default_list_type, default_language, source, etat, default_site from ".TABLE_PREFIX."_utilisateurs where login = '******' and source = 'ext' and etat != 'inactif'"; $res_user = grr_sql_query($sql); $num_row = grr_sql_count($res_user); if ($num_row == 1) { // on r?cup?re les donn?es de l'utilisateur dans $row $row = grr_sql_row($res_user,0); } else { return "2"; die(); } } } } // On teste si la connexion est active ou non if ((getSettingValue("disable_login")=='yes') and ($row[4] != "administrateur")) { return "2"; die(); } // // A ce stade, on dispose dans tous les cas d'un tableau $row contenant les informations nécessaires à l'établissment d'une session // // Session starts now session_name(SESSION_NAME); @session_start(); //modif suppr isauth() session_regenerate_id(); // Is this user already connected ? $sql = "select SESSION_ID from ".TABLE_PREFIX."_log where SESSION_ID = '" . session_id() . "' and LOGIN = '******' and now() between START and END"; $res = grr_sql_query($sql); $num_row = grr_sql_count($res); if (($num_row > 0) and isset($_SESSION['start'])) { $sql = "update ".TABLE_PREFIX."_log set END = now() + interval " . getSettingValue("sessionMaxLength") . " minute where SESSION_ID = '" . session_id() . "' and START = '" . $_SESSION['start'] . "'"; // $sql = "update ".TABLE_PREFIX."_log set END = now() + interval " . getSettingValue("sessionMaxLength") . " minute where SESSION_ID = '" . session_id() . "'"; $res = grr_sql_query($sql); return "1"; } else { session_unset(); // session_destroy(); } // reset $_SESSION $_SESSION = array(); $_SESSION['login'] = $row[0]; $_SESSION['password'] = $row[1]; $_SESSION['prenom'] = $row[2]; $_SESSION['nom'] = $row[3]; $_SESSION['statut'] = $row[4]; $_SESSION['start'] = $row[5]; $_SESSION['maxLength'] = getSettingValue("sessionMaxLength"); if ($row[6] > 0) $_SESSION['default_area'] = $row[6]; else $_SESSION['default_area'] = getSettingValue("default_area"); if ($row[7] > 0) $_SESSION['default_room'] = $row[7]; else $_SESSION['default_room'] = getSettingValue("default_room"); if ($row[8] !='') $_SESSION['default_style'] = $row[8]; else $_SESSION['default_style'] = getSettingValue("default_css"); if ($row[9] !='') $_SESSION['default_list_type'] = $row[9]; else $_SESSION['default_list_type'] = getSettingValue("area_list_format"); if ($row[10] !='') $_SESSION['default_language'] = $row[10]; else $_SESSION['default_language'] = getSettingValue("default_language"); if ($row[13] > 0) $_SESSION['default_site'] = $row[13]; else $_SESSION['default_site'] = getSettingValue("default_site"); $_SESSION['source_login'] = $row[11]; if ($est_authentifie_sso) { // Variable de session qui permet de savoir qu'un utilisateur est authentifié à un SSO $_SESSION['est_authentifie_sso'] = "y"; } // It's a new connection, insert into log if (isset($_SERVER["HTTP_REFERER"])) $httpreferer = substr($_SERVER["HTTP_REFERER"],0,254); else $httpreferer = ''; $sql = "insert into ".TABLE_PREFIX."_log (LOGIN, START, SESSION_ID, REMOTE_ADDR, USER_AGENT, REFERER, AUTOCLOSE, END) values ( '" . protect_data_sql($_SESSION['login']) . "', '" . $_SESSION['start'] . "', '" . session_id() . "', '" . $_SERVER['REMOTE_ADDR'] . "', '" . substr($_SERVER['HTTP_USER_AGENT'],0,254) . "', '" . $httpreferer . "', '1', '" . $_SESSION['start'] . "' + interval " . getSettingValue("sessionMaxLength") . " minute ) ;"; $res = grr_sql_query($sql); /* Fonctionnalité SE3 (Palissy - Saintes - philippe.duval@ac-poitiers.fr) : Utilisation du LDAP pour inscrire automatiquement les utilisateurs dans les groupes administration, accès et gestion Ce code est associé à une nouvelle table : CREATE TABLE ".TABLE_PREFIX."_j_groupe_se3 (groupe varchar(40) NOT NULL default '',id_area_room int(11) NOT NULL default '0', statut varchar(20) NOT NULL default '', PRIMARY KEY (`groupe`,`id_area_room`)); Par ailleurs, pour que cette fonctionnalité soit complète et dans l'esprit de GRR, il faudra développer une "petite" interface dans GRR pour gérer les entrées dans cette table. */ // Début de la fonctionnalité SE3 $grp=@grr_sql_query("SELECT groupe, id_area_room, statut FROM ".TABLE_PREFIX."_j_groupe_se3"); if ($grp) { // si la table ".TABLE_PREFIX."_j_groupe_se3 est implantée et non vide while ($resgrp=@mysql_fetch_array($grp)) { // balaye tous les groupes présents dans la table ".TABLE_PREFIX."_j_groupadmin_area $statut_se3 = $resgrp['statut']; $area_se3 = $resgrp['id_area_room']; if ($statut_se3 == 'administrateur') { $table_user_se3 = "".TABLE_PREFIX."_j_useradmin_area"; $type_res = 'id_area'; } if ($statut_se3 == 'acces_restreint') { $table_user_se3 = "".TABLE_PREFIX."_j_user_area"; $type_res = 'id_area'; } if ($statut_se3 == 'gestionnaire') { $table_user_se3 = "".TABLE_PREFIX."_j_user_room"; $type_res = 'id_room'; } if(se3_grp_members($resgrp['groupe'],$_login)=="oui") $add_user_se3 = @grr_sql_query("INSERT INTO `".$table_user_se3."` (login, ".$type_res.") values('".$_login."',".$area_se3.")"); else // Cette fonctionnalité enlève les droits, donc elle enlève TOUS LES DROITS même mis à la main ! On peut donc l'enlever si le mode de fonctionnement est mixte (manuel et ldap) $del_user_se3 = @grr_sql_query("DELETE FROM `".$table_user_se3."` WHERE `login`='".$_login."' AND `".$type_res."`=".$area_se3); } } // Note : Il reste à gérer finement l'interface graphique et à déduire l'incompatibilité éventuelle entre le domaine par défaut et les domaines autorisés pour chaque utilisateur // Fin de la fonctionnalité SE3 /* Application du patch en production depuis la rentrée à Palissy : Zéro problème (ci-dessous, l'extraction de la table via phpmyadmin) CREATE TABLE `".TABLE_PREFIX."_j_groupe_se3` ( `groupe` varchar(40) NOT NULL default '', `id_area_room` int(11) NOT NULL default '0', `statut` varchar(20) NOT NULL default '', PRIMARY KEY (`groupe`,`id_area_room`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `".TABLE_PREFIX."_j_groupe_se3` (`groupe`, `id_area_room`, `statut`) VALUES ('GRR_ADMIN_SALLES_REUNIONS', 1, 'administrateur'), ('GRR_ADMIN_SALLES_PEDAGOGIQUES', 2, 'administrateur'), ('GRR_ADMIN_LABOS_LANGUES', 3, 'administrateur'), ('GRR_SALLES_REUNIONS', 1, 'acces_restreint'), ('GRR_SALLES_PEDAGOGIQUES', 2, 'acces_restreint'), ('GRR_LABOS_LANGUES', 3, 'acces_restreint'), ('GRR_GESTION_SALLE_A01', 1, 'gestionnaire'), ('GRR_GESTION_SALLE_A03', 2, 'gestionnaire'), ('GRR_GESTION_SALLE_A314', 3, 'gestionnaire'), ('GRR_GESTION_SALLE_A409', 4, 'gestionnaire'), ('GRR_GESTION_SALLE_D05', 5, 'gestionnaire'), ('GRR_GESTION_SALLE_A301E', 6, 'gestionnaire'); */ return "1"; }
unset($user_login); $user_login = isset($_POST["user_login"]) ? $_POST["user_login"] : ($user_login = isset($_GET["user_login"]) ? $_GET["user_login"] : NULL); $valid = isset($_POST["valid"]) ? $_POST["valid"] : NULL; $msg = ''; if ($valid == "yes") { unset($reg_password1); $reg_password1 = unslashes($_POST["reg_password1"]); unset($reg_password2); $reg_password2 = unslashes($_POST["reg_password2"]); $reg_password_c = md5($reg_password1); if ($reg_password1 != $reg_password2 || strlen($reg_password1) < $pass_leng) { $msg = get_vocab("passwd_error"); } else { $sql = "UPDATE " . TABLE_PREFIX . "_utilisateurs SET password='******' WHERE login='******'"; if (grr_sql_command($sql) < 0) { fatal_error(0, get_vocab('update_pwd_failed') . grr_sql_error()); } else { $msg = get_vocab('update_pwd_succeed'); } } } $user_nom = ''; $user_prenom = ''; $user_source = ''; // On appelle les informations de l'utilisateur if (isset($user_login) && $user_login != '') { $sql = "SELECT nom,prenom, source FROM " . TABLE_PREFIX . "_utilisateurs WHERE login='******'"; $res = grr_sql_query($sql); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); $i++) { $user_nom = $row[0];
/** * Resume a session * * Check that all the expected data is present * Check login / password against database * Update the timeout in the ".TABLE_PREFIX."_log table * * Returns true if session resumes, false otherwise * * * @return boolean */ function grr_resumeSession() { // Resuming session session_name(SESSION_NAME); @session_start(); if (Settings::get('sso_statut') == 'lcs' and !isset($_SESSION['est_authentifie_sso']) and $_SESSION['source_login'] == "ext") { return false; } // La session est-elle expirée if (isset($_SESSION['login'])) { $test_session = grr_sql_query1("SELECT count(LOGIN) from " . TABLE_PREFIX . "_log where END > now() and LOGIN = '******'login']) . "'"); if ($test_session == 0) { $_SESSION = array(); } } if (!isset($_SESSION) or !isset($_SESSION['login'])) { return false; } if (Settings::get("disable_login") == 'yes' and $_SESSION['statut'] != "administrateur") { return false; } // To be removed // Validating session data $sql = "SELECT password = '******'password'] . "' PASSWORD, login = '******'login']) . "' LOGIN, statut = '" . $_SESSION['statut'] . "' STATUT\n\tfrom " . TABLE_PREFIX . "_utilisateurs where login = '******'login']) . "'"; $res = grr_sql_query($sql); $row = grr_sql_row($res, 0); // Checking for a timeout $sql2 = "SELECT now() > END TIMEOUT from " . TABLE_PREFIX . "_log where SESSION_ID = '" . session_id() . "' and START = '" . $_SESSION['start'] . "'"; if ($row[0] != "1" || $row[1] != "1" || $row[2] != "1") { return false; } else { if (grr_sql_query1($sql2)) { // Le temps d'inactivité est supérieur à la limite fixée. // cas d'une authentification LCS if (Settings::get('sso_statut') == 'lcs') { // l'utilisateur est authentifié par LCS, on renouvelle la session if ($is_authentified_lcs == 'yes') { $sql = "UPDATE " . TABLE_PREFIX . "_log set END = now() + interval " . $_SESSION['maxLength'] . " minute where SESSION_ID = '" . session_id() . "' and START = '" . $_SESSION['start'] . "'"; $res = grr_sql_query($sql); if (!$res) { fatal_error(0, 'erreur mysql' . grr_sql_error()); } return true; } else { return false; } } else { return false; } } else { $sql = "UPDATE " . TABLE_PREFIX . "_log set END = now() + interval " . $_SESSION['maxLength'] . " minute where SESSION_ID = '" . session_id() . "' and START = '" . $_SESSION['start'] . "'"; $res = grr_sql_query($sql); if (!$res) { fatal_error(0, 'erreur mysql' . grr_sql_error()); } return true; } } }
if (grr_sql_command($sql) < 0) { fatal_error(0, '<p>' . grr_sql_error() . '</p>'); } $id_site = mysqli_insert_id($GLOBALS['db_c']); } // On affecte tous les domaines à un site. $sql = "SELECT id FROM " . TABLE_PREFIX . "_area"; $res = grr_sql_query($sql); if ($res) { for ($i = 0; $row = grr_sql_row($res, $i); $i++) { // l'area est-elle déjà affectée à un site ? $test_site = grr_sql_query1("SELECT count(id_area) FROM " . TABLE_PREFIX . "_j_site_area WHERE id_area='" . $row[0] . "'"); if ($test_site == 0) { $sql = "INSERT INTO " . TABLE_PREFIX . "_j_site_area SET id_site='" . $id_site . "', id_area='" . $row[0] . "'"; if (grr_sql_command($sql) < 0) { fatal_error(0, '<p>' . grr_sql_error() . '</p>'); } } } } } } } if (isset($_GET['use_fckeditor'])) { if (!Settings::set("use_fckeditor", $_GET['use_fckeditor'])) { echo "Erreur lors de l'enregistrement de use_fckeditor !<br />"; die; } } print_header("", "", "", $type = "with_session"); if (isset($_GET['ok'])) {
function moderate_entry_do($_id,$_moderate,$_description,$send_mail="yes") { global $dformat; // On vérifie que l'utilisateur a bien le droit d'être ici $room_id = grr_sql_query1("select room_id from ".TABLE_PREFIX."_entry where id='".$_id."'"); if (authGetUserLevel(getUserName(),$room_id) < 3) { fatal_error(0,"Opération interdite"); exit(); } // j'ai besoin de $repeat_id ' $sql = "select repeat_id from ".TABLE_PREFIX."_entry where id =".$_id; $res = grr_sql_query($sql); if (! $res) fatal_error(0, grr_sql_error()); $row = grr_sql_row($res, 0); $repeat_id = $row['0']; // Initialisation $series = 0; if ($_moderate == "S1") { $_moderate = "1"; $series = 1; } if ($_moderate == "S0") { $_moderate = "0"; $series = 1; } if ($series==0) { //moderation de la ressource if ($_moderate == 1) { $sql = "update ".TABLE_PREFIX."_entry set moderate = 2 where id = ".$_id; } else { $sql = "update ".TABLE_PREFIX."_entry set moderate = 3 where id = ".$_id; } $res = grr_sql_query($sql); if (! $res) fatal_error(0, grr_sql_error()); if (!(grr_backup($_id,$_SESSION['login'],$_description))) fatal_error(0, grr_sql_error()); $tab_id_moderes = array(); } else { // cas d'une série // on constitue le tableau des id de la périodicité $sql = "select id from ".TABLE_PREFIX."_entry where repeat_id=".$repeat_id; $res = grr_sql_query($sql); if (! $res) fatal_error(0, grr_sql_error()); $tab_entry = array(); for ($i = 0; ($row = grr_sql_row($res, $i)); $i++) { $tab_entry[] = $row['0']; } $tab_id_moderes = array(); // Boucle sur les résas foreach ($tab_entry as $entry_tom) { $test = grr_sql_query1("select count(id) from ".TABLE_PREFIX."_entry_moderate where id = '".$entry_tom."'"); // Si il existe déjà une entrée dans ".TABLE_PREFIX."_entry_moderate, cela signifie que la réservation a déjà été modérée. // Sinon : if ($test == 0) { //moderation de la ressource if ($_moderate == 1) { $sql = "update ".TABLE_PREFIX."_entry set moderate = 2 where id = '".$entry_tom."'"; } else { $sql = "update ".TABLE_PREFIX."_entry set moderate = 3 where id = '".$entry_tom."'"; } $res = grr_sql_query($sql); if (! $res) fatal_error(0, grr_sql_error()); if (!(grr_backup($entry_tom,$_SESSION['login'],$_description))) fatal_error(0, grr_sql_error()); // Backup : on enregistre les infos dans ".TABLE_PREFIX."_entry_moderate // On constitue un tableau des réservations modérées $tab_id_moderes[] = $entry_tom; } } } // Avant d'effacer la réservation, on procède à la notification par mail, uniquement si la salle n'a pas déjà été modérée. if ($send_mail=="yes") send_mail($_id,6,$dformat,$tab_id_moderes); //moderation de la ressource if ($_moderate != 1) { // on efface l'entrée de la base if ($series==0) { $sql = "delete from ".TABLE_PREFIX."_entry where id = ".$_id; $res = grr_sql_query($sql); if (! $res) fatal_error(0, grr_sql_error()); } else { // On sélectionne toutes les réservation de la périodicité $res = grr_sql_query("select id from ".TABLE_PREFIX."_entry where repeat_id='".$repeat_id."'"); if (! $res) fatal_error(0, grr_sql_error()); for ($i = 0; ($row = grr_sql_row($res, $i)); $i++) { $entry_tom = $row['0']; // Pour chaque réservation, on teste si celle-ci a été refusée $test = grr_sql_query1("select count(id) from ".TABLE_PREFIX."_entry_moderate where id = '".$entry_tom."' and moderate='3'"); // Si oui, on supprime la réservation if ($test > 0) $del = grr_sql_query("delete from ".TABLE_PREFIX."_entry where id = '".$entry_tom."'"); } // On supprime l'info de périodicité $del_repeat = grr_sql_query("delete from ".TABLE_PREFIX."_repeat where id='".$repeat_id."'"); $dupdate_repeat = grr_sql_query("update ".TABLE_PREFIX."_entry set repead_id = '0' where repead_id='".$repeat_id."'"); } } }
function cree_calendrier_date_valide($n,$i) { if ($i <= getSettingValue("nombre_jours_Jours/Cycles")) { $sql = "INSERT INTO ".TABLE_PREFIX."_calendrier_jours_cycle set DAY='".$n."', Jours = $i"; if (grr_sql_command($sql) < 0) { fatal_error(1, "<p>" . grr_sql_error()); } $i++; } else { $i = 1; $sql = "INSERT INTO ".TABLE_PREFIX."_calendrier_jours_cycle set DAY='".$n."', Jours = $i"; if (grr_sql_command($sql) < 0) { fatal_error(1, "<p>" . grr_sql_error()); } $i++; } return $i; }
// // Suppression d'un type de réservation // if ((isset($_GET['action_del'])) and ($_GET['js_confirmed'] ==1) and ($_GET['action_del']='yes')) { // faire le test si il existe une réservation en cours avec ce type de réservation $type_id = grr_sql_query1("select type_letter from ".TABLE_PREFIX."_type_area where id = '".$_GET['type_del']."'"); $test1 = grr_sql_query1("select count(id) from ".TABLE_PREFIX."_entry where type= '".$type_id."'"); $test2 = grr_sql_query1("select count(id) from ".TABLE_PREFIX."_repeat where type= '".$type_id."'"); if (($test1 != 0) or ($test2 != 0)) { $msg = "Suppression impossible : des réservations ont été enregistrées avec ce type."; } else { $sql = "DELETE FROM ".TABLE_PREFIX."_type_area WHERE id='".$_GET['type_del']."'"; if (grr_sql_command($sql) < 0) {fatal_error(1, "<p>" . grr_sql_error());} $sql = "DELETE FROM ".TABLE_PREFIX."_j_type_area WHERE id_type='".$_GET['type_del']."'"; if (grr_sql_command($sql) < 0) {fatal_error(1, "<p>" . grr_sql_error());} } } affiche_pop_up($msg,"admin"); echo "<h2>".get_vocab('admin_type.php')."</h2>"; echo get_vocab('admin_type_explications'); echo "<br />\n"; echo "<br />\n"; echo "| <a href=\"admin_type_modify.php?id=0\">".get_vocab("display_add_type")."</a> |\n"; echo "<br />\n"; echo "<br />\n"; $sql = "SELECT id, type_name, order_display, couleur, type_letter, disponible FROM ".TABLE_PREFIX."_type_area ORDER BY order_display,type_letter"; $res = grr_sql_query($sql);
function update_site($id) { if ((isset($_POST['back']) or isset($_GET['back']))) { // On affiche le tableau des sites read_sites(); exit(); } // On affiche le formulaire de saisie quand l'appel de la fonction ne provient pas de la validation de ce même formulaire if (! (isset($_POST['save']) or isset($_GET['save']))) { // Initialisation $res = grr_sql_query("SELECT * FROM ".TABLE_PREFIX."_site WHERE id='".$id."'"); if (! $res) fatal_error(0,'<p>'.grr_sql_error().'</p>'); $row = grr_sql_row_keyed($res, 0); grr_sql_free($res); $sitecode = $row['sitecode']; $sitename = $row['sitename']; $adresse_ligne1 = $row['adresse_ligne1']; $adresse_ligne2 = $row['adresse_ligne2']; $adresse_ligne3 = $row['adresse_ligne3']; $cp = $row['cp']; $ville = $row['ville']; $pays = $row['pays']; $tel = $row['tel']; $fax = $row['fax']; // Affichage des titres de la page echo ' <h2>'.get_vocab('modifier site').'</h2>'; echo ' <form action="admin_site.php?action=update" method="post"> <table> <tr><td>'.get_vocab('site_code').' *</td><td><input type="text" name="sitecode" value="'.$sitecode.'" size="10" title="'.get_vocab('site_code').'" /></td></tr> <tr><td>'.get_vocab('site_name').' *</td><td><input type="text" name="sitename" value="'.$sitename.'" size="50" title="'.get_vocab('site_name').'" /></td></tr> <tr><td>'.get_vocab('site_adresse_ligne1').'</td><td><input type="text" name="adresse_ligne1" value="'.$adresse_ligne1.'" size="38" title="'.get_vocab('site_adresse_ligne1').'" /></td></tr> <tr><td>'.get_vocab('site_adresse_ligne2').'</td><td><input type="text" name="adresse_ligne2" value="'.$adresse_ligne2.'" size="38" title="'.get_vocab('site_adresse_ligne2').'" /></td></tr> <tr><td>'.get_vocab('site_adresse_ligne3').'</td><td><input type="text" name="adresse_ligne3" value="'.$adresse_ligne3.'" size="38" title="'.get_vocab('site_adresse_ligne3').'" /></td></tr> <tr><td>'.get_vocab('site_cp').'</td><td><input type="text" name="cp" value="'.$cp.'" size="5" title="'.get_vocab('site_cp').'" /></td></tr> <tr><td>'.get_vocab('site_ville').'</td><td><input type="text" name="ville" value="'.$ville.'" size="50" title="'.get_vocab('site_ville').'" /></td></tr> <tr><td>'.get_vocab('site_pays').'</td><td><input type="text" name="pays" value="'.$pays.'" size="50" title="'.get_vocab('site_pays').'" /></td></tr> <tr><td>'.get_vocab('site_tel').'</td><td><input type="text" name="tel" value="'.$tel.'" size="25" title="'.get_vocab('site_tel').'" /></td></tr> <tr><td>'.get_vocab('site_fax').'</td><td><input type="text" name="fax" value="'.$fax.'" size="25" title="'.get_vocab('site_fax').'" /></td></tr> </table> <div> <input type="hidden" name="valid" value="yes" /> <input type="hidden" name="id" value="'.$id.'" /> <input type="submit" name="save" value="'.get_vocab('save').'" /> <input type="submit" name="back" value="'.get_vocab('back').'" /></div> </form>'; echo get_vocab("required"); // Sinon, il faut valider le formulaire } else { $msg =''; if (!isset($id)) $id = isset($_POST['id']) ? $_POST['id'] : NULL; if (!isset($sitecode)) $sitecode = isset($_POST['sitecode']) ? $_POST['sitecode'] : NULL; if (!isset($sitename)) $sitename = isset($_POST['sitename']) ? $_POST['sitename'] : NULL; if (!isset($adresse_ligne1)) $adresse_ligne1 = isset($_POST['adresse_ligne1']) ? $_POST['adresse_ligne1'] : NULL; if (!isset($adresse_ligne2)) $adresse_ligne2 = isset($_POST['adresse_ligne2']) ? $_POST['adresse_ligne2'] : NULL; if (!isset($adresse_ligne3)) $adresse_ligne3 = isset($_POST['adresse_ligne3']) ? $_POST['adresse_ligne3'] : NULL; if (!isset($cp)) $cp = isset($_POST['cp']) ? $_POST['cp'] : NULL; if (!isset($ville)) $ville = isset($_POST['ville']) ? $_POST['ville'] : NULL; if (!isset($pays)) $pays = isset($_POST['pays']) ? $_POST['pays'] : NULL; if (!isset($tel)) $tel = isset($_POST['tel']) ? $_POST['tel'] : NULL; if (!isset($fax)) $fax = isset($_POST['fax']) ? $_POST['fax'] : NULL; // On vérifie que le code et le nom du site ont été renseignés if ($sitecode=='' or $sitecode==NULL or $sitename=='' or $sitename==NULL) { $_POST['save'] = 'no'; $_GET['save'] = 'no'; echo '<span class="avertissement">'.get_vocab('required').'</span>'; } // Sauvegarde du record if ((isset($_POST['save']) and ($_POST['save']!='no')) or ((isset($_GET['save'])) and ($_GET['save']!='no'))) { $sql="update ".TABLE_PREFIX."_site SET sitecode='".strtoupper(protect_data_sql($sitecode))."', sitename='".protect_data_sql($sitename)."', adresse_ligne1='".protect_data_sql($adresse_ligne1)."', adresse_ligne2='".protect_data_sql($adresse_ligne2)."', adresse_ligne3='".protect_data_sql($adresse_ligne3)."', cp='".protect_data_sql($cp)."', ville='".strtoupper(protect_data_sql($ville))."', pays='".strtoupper(protect_data_sql($pays))."', tel='".protect_data_sql($tel)."', fax='".protect_data_sql($fax)."' where id='".$id."'"; if (grr_sql_command($sql) < 0) fatal_error(0,'<p>'.grr_sql_error().'</p>'); $site = mysql_insert_id(); } // On affiche le tableau des sites read_sites(); } }
$res = grr_sql_query1($sql); if ($res == -1) { $sql = "insert into ".TABLE_PREFIX."_j_useradmin_area (login, id_area) values ('$reg_admin_login',$id_area)"; if (grr_sql_command($sql) < 0) {fatal_error(1, "<p>" . grr_sql_error());} else {$msg=get_vocab("add_user_succeed");} } else { $msg = get_vocab("warning_exist"); } } } if ($action) { if ($action == "del_admin") { unset($login_admin); $login_admin = $_GET["login_admin"]; $sql = "DELETE FROM ".TABLE_PREFIX."_j_useradmin_area WHERE (login='******' and id_area = '$id_area')"; if (grr_sql_command($sql) < 0) {fatal_error(1, "<p>" . grr_sql_error());} else {$msg=get_vocab("del_user_succeed");} } } echo "<h2>".get_vocab('admin_right_admin.php').grr_help("aide_grr_administateur_restreint")."</h2>\n"; echo "<p><i>".get_vocab("admin_right_admin_explain")."</i></p>\n"; // Affichage d'un pop-up affiche_pop_up($msg,"admin"); # Table with areas. echo "<table><tr>\n"; $this_area_name = ""; # Show all areas echo "<td ><p><b>".get_vocab("areas")."</b></p>\n"; $out_html = "<form id=\"area\" action=\"admin_right_admin.php\" method=\"post\"><div><select name=\"area\" onchange=\"area_go()\">\n";
$n = mktime(0,0,0,$month,$day,$year); if (isset($_POST[$n])) { // Le jour a été selectionné dans le calendrier $starttime = mktime($morningstarts, 0, 0, $month, $day , $year); $endtime = mktime($eveningends, 0, $resolution, $month, $day, $year); // Pour toutes les dates bon précédement enregistrées, on efface toutes les résa en conflit if (!in_array($n,$day_old)) { $sql = "select id from ".TABLE_PREFIX."_room"; $res = grr_sql_query($sql); if ($res) for ($i = 0; ($row = grr_sql_row($res, $i)); $i++) $result += grrDelEntryInConflict($row[0], $starttime, $endtime, 0, 0, 1); } // On enregistre la valeur dans ".TABLE_PREFIX."_calendar $sql = "INSERT INTO ".TABLE_PREFIX."_calendar set DAY='".$n."'"; if (grr_sql_command($sql) < 0) fatal_error(0, "<p>" . grr_sql_error()); } $day++; } $month++; if ($month == 13) { $year++; $month = 1; } } } echo "\n<p>".get_vocab("les_journees_cochees_sont_ignorees")."</p>"; echo "\n<table cellpadding=\"3\">\n"; $basetime = mktime(12,0,0,6,11+$weekstarts,2000);
//row[0] = Start time //row[1] = End time //row[2] = Entry ID //row[3] = Entry name (brief description) //row[4] = beneficiaire of the booking //row[5] = Nom de la ressource //row[6] = statut //row[7] = Description complète $sql = "SELECT start_time, end_time," . TABLE_PREFIX . "_entry.id, name, beneficiaire, room_name, statut_entry, " . TABLE_PREFIX . "_entry.description, " . TABLE_PREFIX . "_entry.option_reservation, " . TABLE_PREFIX . "_room.delais_option_reservation, type, " . TABLE_PREFIX . "_entry.moderate, beneficiaire_ext\nFROM " . TABLE_PREFIX . "_entry inner join " . TABLE_PREFIX . "_room on " . TABLE_PREFIX . "_entry.room_id=" . TABLE_PREFIX . "_room.id\nWHERE (start_time <= {$month_end} AND end_time > {$month_start} and area_id='" . $area . "')\nORDER by start_time, end_time, " . TABLE_PREFIX . "_room.room_name"; //Build an array of information about each day in the month. //The information is stored as: // d[monthday]["id"][] = ID of each entry, for linking. // d[monthday]["data"][] = "start-stop" times of each entry. $res = grr_sql_query($sql); if (!$res) { echo grr_sql_error(); } else { for ($i = 0; $row = grr_sql_row($res, $i); $i++) { //Fill in data for each day during the month that this meeting covers. //Note: int casts on database rows for min and max is needed for PHP3. $t = max((int) $row[0], $month_start); $end_t = min((int) $row[1], $month_end); $day_num = date("j", $t); $month_num = date("m", $t); $year_num = date("Y", $t); if ($enable_periods == 'y') { $midnight = mktime(12, 0, 0, $month_num, $day_num, $year_num); } else { $midnight = mktime(0, 0, 0, $month_num, $day_num, $year_num); } while ($t < $end_t) {
} } if (IsAllowedToModifyProfil() && $champ_manquant == 'y') { $msg .= "\\n" . get_vocab('required'); } } if ($valid == 'yes' || $valid == 'reset') { $default_site = isset($_POST['id_site']) ? $_POST['id_site'] : NULL; $default_area = isset($_POST['id_area']) ? $_POST['id_area'] : NULL; $default_room = isset($_POST['id_room']) ? $_POST['id_room'] : NULL; $default_style = isset($_POST['default_css']) ? $_POST['default_css'] : NULL; $default_list_type = isset($_POST['area_item_format']) ? $_POST['area_item_format'] : NULL; $default_language = isset($_POST['default_language']) ? $_POST['default_language'] : NULL; $sql = "UPDATE " . TABLE_PREFIX . "_utilisateurs\n\tSET default_site = '" . protect_data_sql($default_site) . "',\n\tdefault_area = '" . protect_data_sql($default_area) . "',\n\tdefault_room = '" . protect_data_sql($default_room) . "',\n\tdefault_style = '" . protect_data_sql($default_style) . "',\n\tdefault_list_type = '" . protect_data_sql($default_list_type) . "',\n\tdefault_language = '" . protect_data_sql($default_language) . "'\n\tWHERE login='******'"; if (grr_sql_command($sql) < 0) { fatal_error(0, get_vocab('message_records_error') . grr_sql_error()); } else { if ($default_site != '' && $default_site != '0') { $_SESSION['default_site'] = $default_site; } else { $_SESSION['default_site'] = Settings::get('default_site'); } if ($default_area != '' && $default_area != '0') { $_SESSION['default_area'] = $default_area; } else { $_SESSION['default_area'] = Settings::get('default_area'); } if ($default_room != '' && $default_room != '0') { $_SESSION['default_room'] = $default_room; } else { $_SESSION['default_room'] = Settings::get('default_room');
$texte = str_replace(CHR(13), " ", $texte); echo ltrim(rtrim($texte)) . ";"; //Date derniere modif echo date_time_string($row[7], $dformat) . ";"; echo "\r\n"; } } if ($summarize == 5) { //Télécharger le fichier CSV header('Content-Encoding: UTF-8'); header("Content-Type: application/csv-tab-delimited-table"); header("Content-disposition: filename=resume.csv"); echo ""; $res = grr_sql_query($sql); if (!$res) { fatal_error(0, grr_sql_error()); } $nmatch = grr_sql_count($res); if ($nmatch == 0) { echo html_entity_decode($vocab["nothing_found"]) . "\r\n"; grr_sql_free($res); } else { if ($_GET["sumby"] == "6") { echo html_entity_decode($vocab["summarize_by"]) . " " . html_entity_decode($vocab["sum_by_creator"]) . " - {$day} {$month} {$year};"; } else { if ($_GET["sumby"] == "3") { echo html_entity_decode($vocab["summarize_by"]) . " " . html_entity_decode($vocab["sum_by_descrip"]) . " - {$day} {$month} {$year};"; } else { if ($_GET["sumby"] == "5") { echo html_entity_decode($vocab["summarize_by"]) . " " . html_entity_decode($vocab["type"]) . " - {$day} {$month} {$year};"; } else {
// if (isset($_GET['action_del']) and $_GET['js_confirmed'] == 1) { $temp = $_GET['user_del']; // un gestionnaire d'utilisateurs ne peut pas supprimer un administrateur général ou un gestionnaire d'utilisateurs $can_delete = 'yes'; if (authGetUserLevel(getUserName(), -1, 'user') == 1) { $test_statut = grr_sql_query1('SELECT statut FROM ' . TABLE_PREFIX . "_utilisateurs WHERE login='******'user_del'] . "'"); if ($test_statut == 'gestionnaire_utilisateur' || $test_statut == 'administrateur') { $can_delete = 'no'; } } if ($temp != getUserName() && $can_delete == 'yes') { $temp = str_replace('\\', '\\\\', $temp); $sql = 'DELETE FROM ' . TABLE_PREFIX . "_utilisateurs WHERE login='******'"; if (grr_sql_command($sql) < 0) { fatal_error(1, '<p>' . grr_sql_error()); } else { grr_sql_command('DELETE FROM ' . TABLE_PREFIX . "_j_mailuser_room WHERE login='******'"); grr_sql_command('DELETE FROM ' . TABLE_PREFIX . "_j_user_area WHERE login='******'"); grr_sql_command('DELETE FROM ' . TABLE_PREFIX . "_j_user_room WHERE login='******'"); grr_sql_command('DELETE FROM ' . TABLE_PREFIX . "_j_useradmin_area WHERE login='******'"); grr_sql_command('DELETE FROM ' . TABLE_PREFIX . "_j_useradmin_site WHERE login='******'"); $msg = get_vocab('del_user_succeed'); } } } if (isset($mess) and $mess != '') { echo '<p>' . $mess . '</p>'; } echo '<h2>' . get_vocab('admin_user.php') . '</h2>'; if (empty($display)) {