Exemple #1
0
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).
}
Exemple #2
0
       grr_sql_query("DELETE from ".TABLE_PREFIX."_setting where NAME = 'maj196_qui_peut_reserver_pour'");
       grr_sql_query("INSERT INTO ".TABLE_PREFIX."_setting VALUES ('maj196_qui_peut_reserver_pour', '1');");
       $result .= "<b>Mise à jour du champs qui_peut_reserver_pour : </b><span style=\"color:green;\">Ok !</span><br /><br />";
    }


    // Mise à jour du numéro de version
    $req = grr_sql_query1("SELECT VALUE FROM ".TABLE_PREFIX."_setting WHERE NAME='version'");
    if ($req == -1) {
        $result_inter .= traite_requete("INSERT INTO ".TABLE_PREFIX."_setting VALUES ('version', '".$version_grr."');");
    } else {
        $result_inter .= traite_requete("UPDATE ".TABLE_PREFIX."_setting SET VALUE='".$version_grr."' WHERE NAME='version';");
    }

    // Mise à jour du numéro de RC
    $req = grr_sql_command("DELETE FROM ".TABLE_PREFIX."_setting WHERE NAME='versionRC'");
    $result_inter .= traite_requete("INSERT INTO ".TABLE_PREFIX."_setting VALUES ('versionRC', '".$version_grr_RC."');");


    //Re-Chargement des valeurs de la table settingS
    if (!loadSettings()) {
        die("Erreur chargement settings");
    }
    affiche_pop_up(get_vocab("maj_good"),"force");
}
// Numéro de version effective
$version_old = getSettingValue("version");
if ($version_old == "") $version_old = "1.3";
// Numéro de RC
$version_old_RC = getSettingValue("versionRC");
Exemple #3
0
/** NettoyerTablesJointure()
 *
 * Supprime les lignes inutiles dans les tables de liaison
 *
 */
function NettoyerTablesJointure()
{
    $nb = 0;
    // Table grr_j_mailuser_room
    $req = "SELECT j.login FROM " . TABLE_PREFIX . "_j_mailuser_room j\n\tLEFT JOIN " . TABLE_PREFIX . "_utilisateurs u on u.login=j.login\n\tWHERE (u.login  IS NULL)";
    $res = grr_sql_query($req);
    if ($res) {
        for ($i = 0; $row = grr_sql_row($res, $i); $i++) {
            $nb++;
            grr_sql_command("delete from " . TABLE_PREFIX . "_j_mailuser_room where login='******'");
        }
    }
    // Table grr_j_user_area
    $req = "SELECT j.login FROM " . TABLE_PREFIX . "_j_user_area j\n\tLEFT JOIN " . TABLE_PREFIX . "_utilisateurs u on u.login=j.login\n\tWHERE (u.login  IS NULL)";
    $res = grr_sql_query($req);
    if ($res) {
        for ($i = 0; $row = grr_sql_row($res, $i); $i++) {
            $nb++;
            grr_sql_command("delete from " . TABLE_PREFIX . "_j_user_area where login='******'");
        }
    }
    // Table grr_j_user_room
    $req = "SELECT j.login FROM " . TABLE_PREFIX . "_j_user_room j\n\tLEFT JOIN " . TABLE_PREFIX . "_utilisateurs u on u.login=j.login\n\tWHERE (u.login  IS NULL)";
    $res = grr_sql_query($req);
    if ($res) {
        for ($i = 0; $row = grr_sql_row($res, $i); $i++) {
            $nb++;
            grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_user_room WHERE login='******'");
        }
    }
    // Table grr_j_useradmin_area
    $req = "SELECT j.login FROM " . TABLE_PREFIX . "_j_useradmin_area j\n\tLEFT JOIN " . TABLE_PREFIX . "_utilisateurs u on u.login=j.login\n\tWHERE (u.login  IS NULL)";
    $res = grr_sql_query($req);
    if ($res) {
        for ($i = 0; $row = grr_sql_row($res, $i); $i++) {
            $nb++;
            grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_area WHERE login='******'");
        }
    }
    // Table grr_j_useradmin_site
    $req = "SELECT j.login FROM " . TABLE_PREFIX . "_j_useradmin_site j\n\tLEFT JOIN " . TABLE_PREFIX . "_utilisateurs u on u.login=j.login\n\tWHERE (u.login  IS NULL)";
    $res = grr_sql_query($req);
    if ($res) {
        for ($i = 0; $row = grr_sql_row($res, $i); $i++) {
            $nb++;
            grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_site WHERE login='******'");
        }
    }
    // Suppression effective
    echo "<hr />\n";
    echo "<p class='avertissement'>" . get_vocab("tables_liaison") . get_vocab("deux_points") . $nb . get_vocab("entres_supprimees") . "</p>\n";
}
Exemple #4
0
        $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) && $mess != "") {
    echo "<p>" . $mess . "</p>";
}
echo "<h2>" . get_vocab('admin_user.php') . "</h2>";
if (empty($display)) {
    $display = 'actifs';
}
if (empty($order_by)) {
    $order_by = 'nom,prenom';
}
?>
Exemple #5
0
/** NettoyerTablesJointure()
 * Supprime les lignes inutiles dans les tables de liaison.
 */
function NettoyerTablesJointure()
{
    $nb = 0;
    // Table grr_j_mailuser_room
    $req = 'SELECT j.login FROM ' . TABLE_PREFIX . '_j_mailuser_room j
	LEFT JOIN ' . TABLE_PREFIX . '_utilisateurs u on u.login=j.login
	WHERE (u.login  IS NULL)';
    $res = grr_sql_query($req);
    if ($res) {
        for ($i = 0; $row = grr_sql_row($res, $i); ++$i) {
            ++$nb;
            grr_sql_command('delete from ' . TABLE_PREFIX . "_j_mailuser_room where login='******'");
        }
    }
    // Table grr_j_user_area
    $req = 'SELECT j.login FROM ' . TABLE_PREFIX . '_j_user_area j
	LEFT JOIN ' . TABLE_PREFIX . '_utilisateurs u on u.login=j.login
	WHERE (u.login  IS NULL)';
    $res = grr_sql_query($req);
    if ($res) {
        for ($i = 0; $row = grr_sql_row($res, $i); ++$i) {
            ++$nb;
            grr_sql_command('delete from ' . TABLE_PREFIX . "_j_user_area where login='******'");
        }
    }
    // Table grr_j_user_room
    $req = 'SELECT j.login FROM ' . TABLE_PREFIX . '_j_user_room j
	LEFT JOIN ' . TABLE_PREFIX . '_utilisateurs u on u.login=j.login
	WHERE (u.login  IS NULL)';
    $res = grr_sql_query($req);
    if ($res) {
        for ($i = 0; $row = grr_sql_row($res, $i); ++$i) {
            ++$nb;
            grr_sql_command('DELETE FROM ' . TABLE_PREFIX . "_j_user_room WHERE login='******'");
        }
    }
    // Table grr_j_useradmin_area
    $req = 'SELECT j.login FROM ' . TABLE_PREFIX . '_j_useradmin_area j
	LEFT JOIN ' . TABLE_PREFIX . '_utilisateurs u on u.login=j.login
	WHERE (u.login  IS NULL)';
    $res = grr_sql_query($req);
    if ($res) {
        for ($i = 0; $row = grr_sql_row($res, $i); ++$i) {
            ++$nb;
            grr_sql_command('DELETE FROM ' . TABLE_PREFIX . "_j_useradmin_area WHERE login='******'");
        }
    }
    // Table grr_j_useradmin_site
    $req = 'SELECT j.login FROM ' . TABLE_PREFIX . '_j_useradmin_site j
	LEFT JOIN ' . TABLE_PREFIX . '_utilisateurs u on u.login=j.login
	WHERE (u.login  IS NULL)';
    $res = grr_sql_query($req);
    if ($res) {
        for ($i = 0; $row = grr_sql_row($res, $i); ++$i) {
            ++$nb;
            grr_sql_command('DELETE FROM ' . TABLE_PREFIX . "_j_useradmin_site WHERE login='******'");
        }
    }
    // Suppression effective
    echo "<hr />\n";
    echo "<p class='avertissement'>" . get_vocab('tables_liaison') . get_vocab('deux_points') . $nb . get_vocab('entres_supprimees') . "</p>\n";
}
Exemple #6
0
            $clef = 0;
            $upd = "UPDATE " . TABLE_PREFIX . "_entry SET clef='{$clef}' WHERE id = '" . $id . "'";
            if (grr_sql_command($upd) < 0) {
                fatal_error(0, grr_sql_error());
            }
        }
        if (isset($_GET['courrier'])) {
            $courrier = 1;
            $upd = "UPDATE " . TABLE_PREFIX . "_entry SET courrier='{$courrier}' WHERE id = '" . $id . "'";
            if (grr_sql_command($upd) < 0) {
                fatal_error(0, grr_sql_error());
            }
        } else {
            $courrier = 0;
            $upd = "UPDATE " . TABLE_PREFIX . "_entry SET courrier='{$courrier}' WHERE id = '" . $id . "'";
            if (grr_sql_command($upd) < 0) {
                fatal_error(0, grr_sql_error());
            }
        }
        if (isset($_GET["envoyer_mail"]) && Settings::get("automatic_mail") == 'yes') {
            $_SESSION['session_message_error'] = send_mail($id, 7, $dformat);
            if ($_SESSION['session_message_error'] == "") {
                $_SESSION['displ_msg'] = "yes";
                $_SESSION["msg_a_afficher"] = get_vocab("un email envoye") . " " . $_GET["mail_exist"];
            }
        }
        header("Location: " . $_GET['back'] . "");
        die;
    }
}
if (!isset($day) || !isset($month) || !isset($year)) {
Exemple #7
0
             $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);
Exemple #8
0
 function delete_site($id)
 {
  if (!(isset($_GET['confirm']))) {
      echo '<h2>'.get_vocab('supprimer site').'</h2>';
      echo '<h2 style="text-align:center;">' .  get_vocab('sure') . '</h2>';
      echo '<h2 style="text-align:center;"><a href="admin_site.php?action=delete&amp;id='.$id.'&amp;confirm=yes">' . get_vocab('YES') . '!</a> &nbsp;&nbsp;&nbsp; <a href="admin_site.php?action=delete&amp;id='.$id.'&amp;confirm=no">' . get_vocab('NO') . '!</a></h2>';
  } else {
    if ($_GET['confirm']=='yes') {
     grr_sql_command("delete from ".TABLE_PREFIX."_site where id='".$_GET['id']."'");
     grr_sql_command("delete from ".TABLE_PREFIX."_j_site_area where id_site='".$_GET['id']."'");
     grr_sql_command("delete from ".TABLE_PREFIX."_j_useradmin_site where id_site='".$_GET['id']."'");
     grr_sql_command("update ".TABLE_PREFIX."_utilisateurs set default_site = '-1' where default_site='".$_GET['id']."'");
     $test = grr_sql_query1("select VALUE from ".TABLE_PREFIX."_setting where NAME='default_site'");
     if ($test==$_GET['id'])
          grr_sql_command("delete from ".TABLE_PREFIX."_setting where NAME='default_site'");


     // On affiche le tableau des sites
     read_sites();

    } else {
     // On affiche le tableau des sites
     read_sites();

    }
 }

 }
Exemple #9
0
         grrDelOverloadFromEntries($id_overload);
         $sql = "DELETE FROM " . TABLE_PREFIX . "_overload WHERE id={$id_overload};";
         grr_sql_command($sql);
     }
     //OK, nothing there, lets blast it away
     grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_area WHERE id={$id_area}");
     grr_sql_command("update " . TABLE_PREFIX . "_utilisateurs set default_area = '-1', default_room = '-1' WHERE default_area='" . $id_area . "'");
     grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_area_periodes WHERE id_area={$id_area}");
     grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_useradmin_area WHERE id_area={$id_area}");
     grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_type_area WHERE id_area={$id_area}");
     grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_user_area WHERE id_area={$id_area}");
     grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_j_site_area WHERE id_area={$id_area}");
     $test = grr_sql_query1("select VALUE from " . TABLE_PREFIX . "_setting WHERE NAME='default_area'");
     if ($test == $id_area) {
         grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_setting WHERE NAME='default_area'");
         grr_sql_command("DELETE FROM " . TABLE_PREFIX . "_setting WHERE NAME='default_room'");
         // Settings
         require_once "./include/settings.class.php";
         //Chargement des valeurs de la table settingS
         if (!Settings::load()) {
             die("Erreur chargement settings");
         }
     }
     //Redirect back to the admin page
     header("Location: admin_room.php?id_site={$id_site}");
     die;
 } else {
     //There are rooms left in the area
     //print the page header
     print_header("", "", "", $type = "with_session");
     //print_banner("", "", "", "", $type = "with_session", $page = "admin");
Exemple #10
0
      }

  // On fait l'action si l'id/area a été validé.

  if ( $arearight == True )
    {
      $sql = "update ".TABLE_PREFIX."_overload set
      fieldname='".protect_data_sql($fieldname)."',
      fieldtype='".protect_data_sql($fieldtype)."',
      obligatoire='".$obligatoire."',
      confidentiel='".$confidentiel."',
      affichage='".$affichage."',
      overload_mail='".$overload_mail."',
      fieldlist='".protect_data_sql($fieldlist)."'
      where id=$id_overload;";
      if (grr_sql_command($sql) < 0) fatal_error(0, "$sql \n\n" . grr_sql_error());
    }
}

// X- On affiche la première ligne du tableau avec les libelles.
$html = get_vocab("explication_champs_additionnels")."\n";
$html .= "<form method=\"post\" action=\"admin_overload.php\" >\n<table border=\"0\">";
$html .= "<tr><td>".get_vocab("match_area").get_vocab("deux_points")."</td>\n";
$html .= "<td>".get_vocab("fieldname").get_vocab("deux_points")."</td>\n";
$html .= "<td>".get_vocab("fieldtype").get_vocab("deux_points")."</td>\n";
$html .= "<td><span class='small'>".get_vocab("champ_obligatoire")."</span></td>\n";
$html .= "<td><span class='small'>".get_vocab("affiche_dans_les vues")."</span></td>\n";
$html .= "<td><span class='small'>".get_vocab("affiche_dans_les mails")."</span></td>\n";
$html .= "<td><span class='small'>".get_vocab("champ_confidentiel")."</span></td>\n";
$html .= "<td>&nbsp;</td></tr>\n";
Exemple #11
0
$verif_display_email = verif_display_email(getUserName(), $room_id);
if ($verif_display_email)
   $option_affiche_nom_prenom_email = "withmail";
else
   $option_affiche_nom_prenom_email = "nomail";

// Si l'utilisateur est administrateur, possibilité de modifier le statut de la réservation (en cours / libérée)
if (($fin_session == 'n') and (getUserName()!='') and (authGetUserLevel(getUserName(),$room_id) >= 3) and (isset($_GET['ok'])))
{
  if (!$was_del)
    {
      if ($reg_statut_id != "") {
        $upd1 = "update ".TABLE_PREFIX."_entry set statut_entry='-' where room_id = '".$room_id."'";
        if (grr_sql_command($upd1) < 0) return 0;
        $upd2 = "update ".TABLE_PREFIX."_entry set statut_entry='$reg_statut_id' where id = '".$id."'";
        if (grr_sql_command($upd2) < 0) return 0;
      }
      if ((isset($_GET["envoyer_mail"])) and (getSettingValue("automatic_mail") == 'yes')) {
          $_SESSION['session_message_error'] = send_mail($id,7,$dformat);
          if ($_SESSION['session_message_error'] == "") {
              $_SESSION['displ_msg'] = "yes";
              $_SESSION["msg_a_afficher"] = get_vocab("un email envoye")." ".$_GET["mail_exist"];
          }
      }
      header("Location: ".$_GET['back']."");
      die();
    }
}

#If we dont know the right date then make it up
if(!isset($day) or !isset($month) or !isset($year))
Exemple #12
0
/** mrbsCreateRepeatEntry()
 *
 * Creates a repeat entry in the data base
 *
 * $starttime   - Start time of entry
 * $endtime     - End time of entry
 * $rep_type    - The repeat type
 * $rep_enddate - When the repeating ends
 * $rep_opt     - Any options associated with the entry
 * $room_id     - Room ID
 * $beneficiaire       - beneficiaire
 * $beneficiaire_ext   - beneficiaire extérieur
 * $creator     - celui aui a créé ou modifié la réservation.
 * $name        - Name
 * $type        - Type (Internal/External)
 * $description - Description
  *$rep_jour_c - Le jour cycle d'une réservation, si aucun 0
 *
 * Returns:
 *   0        - An error occured while inserting the entry
 *   non-zero - The entry's ID
 */
function mrbsCreateRepeatEntry($starttime, $endtime, $rep_type, $rep_enddate, $rep_opt,
                               $room_id, $creator, $beneficiaire, $beneficiaire_ext, $name, $type, $description, $rep_num_weeks,$overload_data, $rep_jour_c)
{
  $overload_data_string = "";
  $area_id = mrbsGetAreaIdFromRoomId($room_id);

  $overload_fields_list = mrbsOverloadGetFieldslist($area_id);

  foreach ($overload_fields_list as $field=>$fieldtype)
    {
      $id_field = $overload_fields_list[$field]["id"];
      if (array_key_exists($id_field,$overload_data))
      {
//      $begin_string = "<".$id_field.">"; //tructruc
//      $end_string = "</".$id_field.">";  //tructruc
      $begin_string = "@".$id_field."@";
      $end_string = "@/".$id_field."@";
//    $overload_data_string .= $begin_string.base64_encode($overload_data[$id_field]).$end_string; // tructruc
    $overload_data_string .= $begin_string.urlencode($overload_data[$id_field]).$end_string; // tructruc

      }
    }
  $sql = "INSERT INTO ".TABLE_PREFIX."_repeat (
  start_time, end_time, rep_type, end_date, rep_opt, room_id, create_by, beneficiaire, beneficiaire_ext, type, name, description, rep_num_weeks, overload_desc, jours)
  VALUES ($starttime, $endtime,  $rep_type, $rep_enddate, '$rep_opt', $room_id,   '".protect_data_sql($creator)."','".protect_data_sql($beneficiaire)."','".protect_data_sql($beneficiaire_ext)."', '".protect_data_sql($type)."', '".protect_data_sql($name)."', '".protect_data_sql($description)."', '$rep_num_weeks','".protect_data_sql($overload_data_string)."',".$rep_jour_c.")";


  if (grr_sql_command($sql) < 0)
    {
      return 0;

    }
  return grr_sql_insert_id("".TABLE_PREFIX."_repeat", "id");
}
Exemple #13
0
//
// 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);
Exemple #14
0
		$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";
Exemple #15
0
/**
 * 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
 *
 * @param string _login
 * @param string _password
 * @return string
 */
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;
    if ($_user_ext_authentifie != '') {
        $est_authentifie_sso = TRUE;
        // Statut par défaut
        $_statut = "";
        $sso = Settings::get("sso_statut");
        if ($sso == "cas_visiteur") {
            $_statut = "visiteur";
        } else {
            if ($sso == "cas_utilisateur") {
                $_statut = "utilisateur";
            } 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 = Settings::get("lcs_statut_eleve");
                                            }
                                            if ($_user_ext_authentifie == "lcs_non_eleve") {
                                                $_statut = Settings::get("lcs_statut_prof");
                                            }
                                            $temoin_grp_ok = "non";
                                            if (trim(Settings::get("lcs_liste_groupes_autorises")) == "") {
                                                $temoin_grp_ok = "oui";
                                            } else {
                                                $tab_grp_autorise = explode(";", Settings::get("lcs_liste_groupes_autorises"));
                                                $tot = count($tab_grp_autorise);
                                                for ($i = 0; $i < $tot; $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";
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        $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\n\t\tfrom " . TABLE_PREFIX . "_utilisateurs\n\t\twhere 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\n\t\t\t\tnom='" . protect_data_sql($nom_user) . "',\n\t\t\t\tprenom='" . protect_data_sql($prenom_user) . "',\n\t\t\t\temail='" . protect_data_sql($email_user) . "'\n\t\t\t\twhere login='******'";
            } else {
                if ($_user_ext_authentifie == "cas") {
                    if (Settings::get("ldap_statut") != '' && @function_exists("ldap_connect") && @file_exists("include/config_ldap.inc.php")) {
                        $auth_ldap = 'yes';
                    }
                    $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 = mysqli_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\n\t\t\t\t\t\tnom='" . protect_data_sql($nom_user) . "',\n\t\t\t\t\t\tprenom='" . protect_data_sql($prenom_user) . "',\n\t\t\t\t\t\temail='" . protect_data_sql($email_user) . "'\n\t\t\t\t\t\twhere login='******'";
                            if (grr_sql_command($sql) < 0) {
                                fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error());
                            }
                            //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\n\t\t\t\t\t\tFROM " . TABLE_PREFIX . "_utilisateurs\n\t\t\t\t\t\tWHERE login = '******' and\n\t\t\t\t\t\tsource = 'ext' and\n\t\t\t\t\t\tetat != 'inactif'";
                            $res_user = grr_sql_query($sql);
                            $num_row = grr_sql_count($res_user);
                            if ($num_row != 1) {
                                return "2";
                            }
                        }
                    }
                }
            }
            if (grr_sql_command($sql) < 0) {
                fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error());
            }
            // 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') {
                return "3";
            } 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') {
                        return "5";
                    } 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"];
                        }
                        //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 (Settings::get("ldap_statut") != '' && @function_exists("ldap_connect") && @file_exists("include/config_ldap.inc.php") && $_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, Settings::get("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(Settings::get("ldap_champ_nom"), Settings::get("ldap_champ_prenom"), Settings::get("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[Settings::get("ldap_champ_nom")][0])) {
                                                $l_nom = ucfirst($val[Settings::get("ldap_champ_nom")][0]);
                                            } else {
                                                $l_nom = iconv("ISO-8859-1", "utf-8", "Nom à préciser");
                                            }
                                            if (isset($val[Settings::get("ldap_champ_prenom")][0])) {
                                                $l_prenom = ucfirst($val[Settings::get("ldap_champ_prenom")][0]);
                                            } else {
                                                $l_prenom = iconv("ISO-8859-1", "utf-8", "Prénom à préciser");
                                            }
                                            if (isset($val[Settings::get("ldap_champ_email")][0])) {
                                                $l_email = $val[Settings::get("ldap_champ_email")][0];
                                            } else {
                                                $l_email = '';
                                            }
                                        }
                                    }
                                }
                                // Convertir depuis UTF-8 (jeu de caracteres par defaut)
                                if (function_exists("utf8_decode") && Settings::get("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;
                            //4è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 (Settings::get("sso_ac_corr_profil_statut") == 'y') {
                                    $_statut = effectuer_correspondance_profil_statut($code_fonction_user, $libelle_fonction_user);
                                }
                                //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 (Settings::get("http_champ_nom") != "") {
                                    $_nom_user = Settings::get("http_champ_nom");
                                    if (isset($_SERVER["{$_nom_user}"])) {
                                        $nom_user = $_SERVER["{$_nom_user}"];
                                    }
                                }
                                if ($nom_user == "") {
                                    $nom_user = $_login;
                                }
                                //definition email :
                                $email_user = "";
                                if (Settings::get("http_champ_email")) {
                                    $_email_user = Settings::get("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 (Settings::get("http_sso_domain") && Settings::get("http_sso_domain") != "") {
                                            //explode du mail :
                                            $domaine = explode("@", $email_user);
                                            if (isset($domaine[1])) {
                                                if ($domaine[1] == Settings::get("http_sso_domain")) {
                                                    if (Settings::get("http_sso_statut_domaine") != "") {
                                                        $_statut = Settings::get("http_sso_statut_domaine");
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                                //definition du prenom :
                                $prenom_user = "";
                                if (Settings::get("http_champ_prenom")) {
                                    $_prenom_user = Settings::get("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\n\t\t\t\tnom='" . protect_data_sql($nom_user) . "',\n\t\t\t\tprenom='" . protect_data_sql($prenom_user) . "',\n\t\t\t\tlogin='******',\n\t\t\t\tpassword='',\n\t\t\t\tstatut='" . $_statut . "',\n\t\t\t\temail='" . protect_data_sql($email_user) . "',\n\t\t\t\tetat='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";
                }
                // 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\n\t\t\tfrom " . TABLE_PREFIX . "_utilisateurs\n\t\t\twhere login = '******' and\n\t\t\tsource = 'ext' and\n\t\t\tetat != 'inactif'";
                $res_user = grr_sql_query($sql);
                $num_row = grr_sql_count($res_user);
                if ($num_row == 1) {
                    $row = grr_sql_row($res_user, 0);
                } else {
                    return "2";
                }
            }
        }
        //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\n\tfrom " . TABLE_PREFIX . "_utilisateurs\n\twhere login = '******' and\n\tpassword = '******'";
        $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) {
            if (Settings::get("ldap_statut") != '' && @function_exists("ldap_connect") && @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";
                }
                $user_dn = grr_verif_ldap($_login, $_password);
                if ($user_dn == "error_1") {
                    return "7";
                } else {
                    if ($user_dn == "error_2") {
                        return "8";
                    } else {
                        if ($user_dn == "error_3") {
                            return "9";
                        } else {
                            if ($user_dn) {
                                $auth_ldap = 'yes';
                            } else {
                                return "4";
                            }
                        }
                    }
                }
            } elseif (Settings::get("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";
                }
                $user_imap = grr_verif_imap($_login, $_password);
                if ($user_imap) {
                    $auth_imap = 'yes';
                    imap_close($user_imap);
                } else {
                    return "10";
                }
            } else {
                return "2";
            }
        } else {
            $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";
            }
        }
        // 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(Settings::get("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";
            //S'assurer que le fichier est inclus (il existe dans tous les cas où $auth_ldap==yes)
            if (!isset($ldap_group_user_field)) {
                include "config_ldap.inc.php";
            }
            //Aller chercher l'info pour faire la comparaison
            $member_search = $_login;
            if ($ldap_group_user_field != 'uid') {
                $ds = grr_connect_ldap($ldap_adresse, $ldap_port, $ldap_login, $ldap_pwd, $use_tls);
                $user_dn = grr_ldap_search_user($ds, $ldap_base, Settings::get("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(Settings::get("ldap_champ_nom"), Settings::get("ldap_champ_prenom"), Settings::get("ldap_champ_email")));
                }
                if ($result) {
                    // Recuperer les donnees de l'utilisateur
                    $info = @ldap_get_entries($ds, $result);
                    if (is_array($info) && isset($info[0][$ldap_group_user_field])) {
                        $member_search = $info[0][$ldap_group_user_field];
                    }
                }
            }
            $tab_grp_autorise = explode(";", Settings::get("se3_liste_groupes_autorises"));
            $total = count($tab_grp_autorise);
            for ($i = 0; $i < $total; $i++) {
                if (se3_grp_members($tab_grp_autorise[$i], $member_search) == "oui") {
                    $temoin_grp_ok = "oui";
                }
            }
        }
        if ($temoin_grp_ok != "oui") {
            return "5";
        }
        // 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\n\tFROM " . TABLE_PREFIX . "_utilisateurs\n\tWHERE login = '******' and\n\tsource = 'ext' and\n\tetat != '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
            $user_info[0] = utf8_encode($user_info[0]);
            $user_info[1] = utf8_encode($user_info[1]);
            $user_info[2] = utf8_encode($user_info[2]);
            $sql2 = "UPDATE " . TABLE_PREFIX . "_utilisateurs SET\n\t\tnom='" . protect_data_sql($user_info[0]) . "',\n\t\tprenom='" . protect_data_sql($user_info[1]) . "',\n\t\temail='" . protect_data_sql($user_info[2]) . "'\n\t\tWHERE login='******'";
            if (grr_sql_command($sql2) < 0) {
                fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error());
            }
            // 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') {
                return "3";
            } else {
                $user_info[0] = utf8_encode($user_info[0]);
                $user_info[1] = utf8_encode($user_info[1]);
                $user_info[2] = utf8_encode($user_info[2]);
                // On insère le nouvel utilisateur
                $sql = "INSERT INTO " . TABLE_PREFIX . "_utilisateurs SET\n\t\t\tnom='" . protect_data_sql($user_info[0]) . "',\n\t\t\tprenom='" . protect_data_sql($user_info[1]) . "',\n\t\t\tlogin='******',\n\t\t\tpassword='',\n\t\t\tstatut='" . Settings::get("ldap_statut") . "',\n\t\t\temail='" . protect_data_sql($user_info[2]) . "',\n\t\t\tetat='actif',\n\t\t\tsource='ext'";
                if (grr_sql_command($sql) < 0) {
                    fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error());
                }
                $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\n\t\t\tFROM " . TABLE_PREFIX . "_utilisateurs\n\t\t\tWHERE login = '******' and\n\t\t\tsource = 'ext' and\n\t\t\tetat != '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";
                }
            }
        }
    }
    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\n\tFROM " . TABLE_PREFIX . "_utilisateurs\n\tWHERE login = '******' and\n\tsource = 'ext' and\n\tetat != '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') {
                return "3";
            } else {
                // On insère le nouvel utilisateur
                $sql = "INSERT INTO " . TABLE_PREFIX . "_utilisateurs SET\n\t\t\tnom='" . protect_data_sql($l_nom) . "',\n\t\t\tprenom='" . protect_data_sql($l_prenom) . "',\n\t\t\tlogin='******',\n\t\t\tpassword='',\n\t\t\tstatut='" . Settings::get("imap_statut") . "',\n\t\t\temail='" . protect_data_sql($l_email) . "',\n\t\t\tetat='actif',\n\t\t\tsource='ext'";
                if (grr_sql_command($sql) < 0) {
                    fatal_error(0, get_vocab("msg_login_created_error") . grr_sql_error());
                }
                $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\n\t\t\tfrom " . TABLE_PREFIX . "_utilisateurs\n\t\t\twhere login = '******' and\n\t\t\tsource = 'ext' and\n\t\t\tetat != '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";
                }
            }
        }
    }
    // On teste si la connexion est active ou non
    if (Settings::get("disable_login") == 'yes' and $row[4] != "administrateur") {
        return "2";
    }
    //
    // 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();
    // 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 " . Settings::get("sessionMaxLength") . " minute where SESSION_ID = '" . session_id() . "' and START = '" . $_SESSION['start'] . "'";
        //  $sql = "update ".TABLE_PREFIX."_log set END = now() + interval " . Settings::get("sessionMaxLength") . " minute where SESSION_ID = '" . session_id() . "'";
        $res = grr_sql_query($sql);
        if (!$res) {
            fatal_error(0, 'erreur mysql' . grr_sql_error());
        }
        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'] = Settings::get("sessionMaxLength");
    if ($row[6] > 0) {
        $_SESSION['default_area'] = $row[6];
    } else {
        $_SESSION['default_area'] = Settings::get("default_area");
    }
    if ($row[7] > 0) {
        $_SESSION['default_room'] = $row[7];
    } else {
        $_SESSION['default_room'] = Settings::get("default_room");
    }
    if ($row[8] != '') {
        $_SESSION['default_style'] = $row[8];
    } else {
        $_SESSION['default_style'] = Settings::get("default_css");
    }
    if ($row[9] != '') {
        $_SESSION['default_list_type'] = $row[9];
    } else {
        $_SESSION['default_list_type'] = Settings::get("area_list_format");
    }
    if ($row[10] != '') {
        $_SESSION['default_language'] = $row[10];
    } else {
        $_SESSION['default_language'] = Settings::get("default_language");
    }
    if ($row[13] > 0) {
        $_SESSION['default_site'] = $row[13];
    } else {
        $_SESSION['default_site'] = Settings::get("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 = '';
    }
    $ua = $_SERVER['HTTP_USER_AGENT'];
    $ua = explode(' ', $ua);
    $count = count($ua);
    for ($i = 0; $i < $count; $i++) {
        if (strncmp($ua[$i], '(Windows', 8) == 0) {
            $os = "Windows ";
            $i += 2;
            switch ($ua[$i]) {
                case '6.1;':
                    $os .= "7";
                    break;
                case '6.2;':
                    $os .= "8";
                    break;
                case '6.3;':
                    $os .= "8.1";
                    break;
                default:
                    $os .= "";
                    break;
            }
        }
        if (strncmp($ua[$i], 'Trident', 7) == 0) {
            $brow = "Internet Explorer ";
            $i += 1;
            $b = explode(':', $ua[$i]);
            $brow .= trim($b[1], ")");
        }
        if (strncmp($ua[$i], 'Firefox', 7) == 0) {
            $b = explode('/', $ua[$i]);
            $brow = $b[0] . ' ' . $b[1];
        }
        if (strncmp($ua[$i], 'Chrome', 6) == 0) {
            $b = explode('/', $ua[$i]);
            $brow = $b[0] . ' ' . $b[1];
        }
    }
    if (isset($os) && isset($brow)) {
        $useragent = $os . ' ' . $brow;
    } else {
        $useragent = substr($_SERVER['HTTP_USER_AGENT'], 0, 254);
    }
    $sql = "INSERT INTO " . TABLE_PREFIX . "_log (LOGIN, START, SESSION_ID, REMOTE_ADDR, USER_AGENT, REFERER, AUTOCLOSE, END) values (\n\t'" . protect_data_sql($_SESSION['login']) . "',\n\t'" . $_SESSION['start'] . "',\n\t'" . session_id() . "',\n\t'" . $_SERVER['REMOTE_ADDR'] . "',\n\t'" . $useragent . "',\n\t'" . $httpreferer . "',\n\t'1',\n\t'" . $_SESSION['start'] . "' + interval " . Settings::get("sessionMaxLength") . " minute\n\t)\n;";
    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
        //A modifier recalcul a chaque boucle
        while ($resgrp = @mysqli_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") {
                @grr_sql_query("INSERT INTO `" . $table_user_se3 . "` (login, " . $type_res . ") values('" . $_login . "'," . $area_se3 . ")");
            } else {
                @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";
}
VerifyModeDemo();
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++) {
Exemple #17
0
            grrDelOverloadFromEntries($id_overload);
            $sql = "delete from ".TABLE_PREFIX."_overload where id=$id_overload;";
            grr_sql_command($sql);
        }
        # OK, nothing there, lets blast it away
        grr_sql_command("delete from ".TABLE_PREFIX."_area where id=$id_area");
        grr_sql_command("update ".TABLE_PREFIX."_utilisateurs set default_area = '-1', default_room = '-1' where default_area='".$id_area."'");
        grr_sql_command("DELETE FROM ".TABLE_PREFIX."_area_periodes WHERE id_area=$id_area");
        grr_sql_command("DELETE FROM ".TABLE_PREFIX."_j_useradmin_area WHERE id_area=$id_area");
        grr_sql_command("DELETE FROM ".TABLE_PREFIX."_j_type_area WHERE id_area=$id_area");
        grr_sql_command("DELETE FROM ".TABLE_PREFIX."_j_user_area WHERE id_area=$id_area");
        grr_sql_command("DELETE FROM ".TABLE_PREFIX."_j_site_area WHERE id_area=$id_area");
        $test = grr_sql_query1("select VALUE from ".TABLE_PREFIX."_setting where NAME='default_area'");
        if ($test==$id_area) {
            grr_sql_command("delete from ".TABLE_PREFIX."_setting where NAME='default_area'");
            grr_sql_command("delete from ".TABLE_PREFIX."_setting where NAME='default_room'");
            // Settings
            require_once("./include/settings.inc.php");
            //Chargement des valeurs de la table settingS
            if (!loadSettings())
                die("Erreur chargement settings");

        }
        # Redirect back to the admin page
        header("Location: admin_room.php?id_site=$id_site");
    }
    else
    {
        # There are rooms left in the area
        # print the page header
        print_header("","","","",$type="with_session", $page="admin");