public function before_creer_point()
 {
     $this->header_json();
     try {
         if (empty($_POST['x']) || empty($_POST['y'])) {
             throw new Exception("pas de coordonnées x,y");
         }
         $point = ['x' => $_POST['x'], 'y' => $_POST['y'], 'nom' => '', 'reference' => '', 'id_utilisateur' => $_SESSION['id_utilisateur']];
         $id_espace = bobs_espace_point::insert($this->db, $point);
         $point = new clicnat_espace_hirondelle($this->db, $id_espace);
         $point->ajoute_tag(CLICNAT_HIRONDELLE_TAG);
         if (isset($_POST['occupant'])) {
             $point->ajoute_tag(CLICNAT_HIRONDELLE_ID_TAG_OCCUPANT);
         }
         if (isset($_POST['publique'])) {
             $point->ajoute_tag(CLICNAT_HIRONDELLE_ID_TAG_PUBLIQUE);
         }
         if ($espaces = clicnat_iterateur_espace_hirondelle::from_session($this->db, $_SESSION["id_utilisateur"])) {
             $espaces->ajout_id($id_espace);
             $espaces->to_session();
         }
         echo json_encode(["etat" => "ok", "id_espace" => $id_espace]);
     } catch (Exception $e) {
         echo json_encode(["etat" => "err", "message" => $e->getMessage()]);
     }
     exit(0);
 }
예제 #2
0
 public function __construct($db)
 {
     $this->db = $db;
     $this->msgs = array();
     $this->template_dir = SMARTY_TEMPLATE_POINTSNOIRS;
     $this->compile_dir = SMARTY_COMPILE_POINTSNOIRS;
     if (!file_exists($this->compile_dir)) {
         mkdir($this->compile_dir);
     }
     if (!array_key_exists('p', $_GET)) {
         $_GET['p'] = 'accueil';
     }
     if (!array_key_exists('id_utilisateur', $_SESSION)) {
         $_SESSION['id_utilisateur'] = false;
     }
     switch ($_GET['p']) {
         case 'espece_autocomplete2':
             $this->before_espece_autocomplete2();
             break;
         case 'accueil':
             $this->before_accueil();
             $this->display('accueil.tpl');
             break;
         case 'actu':
             $this->before_actu();
             $this->display('actu.tpl');
             break;
         case 'enregistre':
             $id_utilisateur = get_config()->query_nv('/clicnat/pointsnoirs/id_utilisateur');
             $tag_point_noir = get_config()->query_nv('/clicnat/pointsnoirs/id_tag');
             $tag_mort = get_config()->query_nv('/clicnat/pointsnoirs/id_tag_mort');
             $id_espace = bobs_espace_point::insert($this->db, array('id_utilisateur' => $id_utilisateur, 'reference' => '', 'nom' => '', 'x' => $_GET['lon'], 'y' => $_GET['lat']));
             $id_obs = bobs_observation::insert($this->db, array('id_utilisateur' => $id_utilisateur, 'date_observation' => $_GET['date'], 'id_espace' => $id_espace, 'table_espace' => 'espace_point'));
             $observation = new bobs_observation($this->db, $id_obs);
             if (!empty($_GET['heure_h'])) {
                 $observation->set_heure($_GET['heure_h'], $_GET['heure_m']);
             }
             if (isset($_GET['diff_ok'])) {
                 $_GET['diff_ok'] = false;
             }
             if (isset($_GET['particip_ok'])) {
                 $_GET['diff_ok'] = false;
             }
             $comtr2 = "INFORMATIONS DU FORMULAIRE\n\n";
             $comtr2 .= "Nom: {$_GET['nom']}\n";
             $comtr2 .= "Prenom: {$_GET['prenom']}\n";
             $comtr2 .= "Structure: {$_GET['structure']}\n";
             $comtr2 .= "Adresse:\n";
             $comtr2 .= "{$_GET['adresse']}\n\n";
             $comtr2 .= "Ville: {$_GET['ville']}\n";
             $comtr2 .= "Tel: {$_GET['tel']}\n";
             $comtr2 .= "EMail: {$_GET['email']}\n";
             $comtr2 .= "DiffusionNom: {$_GET['diff_ok']}\n";
             $comtr2 .= "ParticipOk: {$_GET['particip_ok']}\n";
             $a_enregistrer = explode(',', self::elem_a_enregistrer);
             foreach ($a_enregistrer as $k) {
                 $this->sess_store($k, $_GET[$k]);
             }
             $observation->add_observateur($id_utilisateur);
             for ($x = 0; $x < 10; $x++) {
                 if (array_key_exists("id_espece_{$x}", $_GET)) {
                     if ($_GET["n_vivant_{$x}"] > 0) {
                         $id_citation = $observation->add_citation($_GET["id_espece_{$x}"]);
                         $citation = new bobs_citation($this->db, $id_citation);
                         $citation->set_effectif($_GET["n_vivant_{$x}"]);
                         $citation->set_indice_qualite($_GET["indice_q_vivant_{$x}"]);
                         $citation->set_commentaire($_GET["commentaire_0"]);
                         $citation->ajoute_tag($tag_point_noir);
                         $citation->ajoute_commentaire('info', $id_utilisateur, $comtr2);
                     }
                     if ($_GET["n_mort_{$x}"] > 0) {
                         $id_citation = $observation->add_citation($_GET["id_espece_{$x}"]);
                         $citation = new bobs_citation($this->db, $id_citation);
                         $citation->set_effectif($_GET["n_mort_{$x}"]);
                         $citation->set_indice_qualite($_GET["indice_q_mort_{$x}"]);
                         $citation->set_commentaire($_GET["commentaire_0"]);
                         $citation->ajoute_tag($tag_point_noir);
                         $citation->ajoute_tag($tag_mort);
                         $citation->ajoute_commentaire('info', $id_utilisateur, $comtr2);
                     }
                 }
             }
             $observation->send();
             header('Location: ?p=complements');
             $_SESSION['id_observation'] = $observation->id_observation;
             exit;
         case 'complements':
             $id_utilisateur = get_config()->query_nv('/clicnat/pointsnoirs/id_utilisateur');
             $observation = get_observation($this->db, $_SESSION['id_observation']);
             if (!isset($_POST['a'])) {
                 $this->assign_by_ref('obs', $observation);
                 $this->display('complements.tpl');
             } else {
                 // enregistrement
                 $citations = $observation->get_citations()->ids();
                 foreach ($_FILES as $nom => $data) {
                     if ($data['error'] != 0) {
                         continue;
                     }
                     if (preg_match('/^image_(\\d+)$/', $nom, $m)) {
                         echo "{$nom}\n";
                         $citation = get_citation($this->db, $m[1]);
                         if (array_search($citation->id_citation, $citations) === false) {
                             continue;
                         }
                         $doc_id = bobs_document::sauve($_FILES[$nom]);
                         $image = new bobs_document_image($doc_id);
                         $citation->document_associer($doc_id);
                     }
                 }
                 if (!empty($_POST['observateurs_supplementaires'])) {
                     $observation->ajoute_commentaire('info', $id_utilisateur, $_POST['observateurs_supplementaires']);
                 }
                 header('Location: ?p=accueil&eok=1');
                 exit;
             }
             break;
         default:
             echo "404";
             exit;
     }
 }
예제 #3
0
 public function before_editer()
 {
     $u = $this->get_user_session();
     $sortie = new clicnat_sortie($this->db, (int) $_GET['sortie']);
     if ($this->is_admin($u->id_utilisateur)) {
         $this->assign('admin', true);
     } else {
         $this->assign('admin', false);
     }
     $editable = false;
     if ($sortie->id_utilisateur_propose == $u->id_utilisateur) {
         $editable = true;
     }
     if (!$editable) {
         if ($this->is_admin($u->id_utilisateur)) {
             $editable = true;
         }
     }
     if ($editable && isset($_GET['annuler_loc'])) {
         $sortie->annuler_localisation();
         $this->redirect("?t=editer&sortie={$sortie->id_sortie}");
     }
     $this->assign('edit', $editable);
     if (isset($_GET['update'])) {
         $champs = explode(',', 'nom,orga_nom,orga_prenom,adresse,tel,portable,mail,id_sortie_type,id_sortie_public,gestion_picnat,accessible_mobilite_reduite,accessible_deficient_auditif,accessible_deficient_visuel,id_sortie_cadre,description,description_lieu,duree_heure,structure,validation_externe,materiel_autre,id_sortie_pole,id_sortie_reseau');
         $bools_f = explode(',', 'gestion_picnat,accessible_mobilite_reduite,accessible_deficient_auditif,accessible_deficient_visuel,validation_externe');
         foreach ($bools_f as $k) {
             $_POST[$k] = isset($_POST[$k]) && $_POST[$k] == 1 ? 't' : 'f';
         }
         if (empty($_POST['duree_heure'])) {
             $_POST['duree_heure'] = 0;
         }
         if (empty($_POST['id_sortie_pole'])) {
             $_POST['id_sortie_pole'] = 1;
         }
         foreach (array_keys($_POST) as $k) {
             if (array_search($k, $champs) !== false) {
                 $sortie->update_field($k, $_POST[$k]);
             }
         }
         if (empty($sortie->id_espace_point)) {
             if (isset($_POST['x']) && isset($_POST['y'])) {
                 if (!empty($_POST['x']) && !empty($_POST['y'])) {
                     $pt = array('id_utilisateur' => $u->id_utilisateur, 'reference' => "sortie {$sortie->id_sortie}", 'nom' => "{$sortie->id_sortie}", 'x' => $_POST['x'], 'y' => $_POST['y']);
                     $id_espace = bobs_espace_point::insert($this->db, $pt);
                     $sortie->update_field('id_espace_point', $id_espace);
                 }
             }
         }
         // on enleve tout pour le remettre après
         $sortie->materiel_vide();
         foreach (array_keys($_POST) as $k) {
             if (preg_match('/^materiel_(\\d+)/', $k)) {
                 $sortie->materiel_ajoute($_POST[$k]);
             }
         }
         $this->redirect("?t=editer_suiv&id_sortie={$sortie->id_sortie}");
     } else {
         if (isset($_GET['ajouter_date'])) {
             $sortie = new clicnat_sortie($this->db, (int) $_GET['sortie']);
             $sortie->ajoute_date(bobs_element::date_fr2sql($_POST['date']));
             $message = new clicnat_mail();
             $message->from('*****@*****.**');
             $vars = ["titre" => $sortie->nom, "description" => $sortie->description, "date" => $_POST['date']];
             $sujet_tpl = clicnat_textes::par_nom(get_db(), 'calendrier/notification_nouvelle_sortie_titre')->texte;
             $texte_tpl = clicnat_textes::par_nom(get_db(), 'calendrier/notification_nouvelle_sortie')->texte;
             $message->sujet(self::mini_template($sujet_tpl, $vars));
             $message->message(self::mini_template($texte_tpl, $vars));
             foreach ($this->dests_notifications as $dest) {
                 $message->envoi($dest);
             }
             $this->redirect("?t=editer_suiv&id_sortie={$sortie->id_sortie}");
         }
     }
     $sortie = new clicnat_sortie($this->db, (int) $_GET['sortie']);
     $this->assign_by_ref('sortie', $sortie);
 }