public function before_creer_citations_visite() { $this->header_json(); try { $_POST['id_visite_nid'] = (int) $_POST['id_visite_nid']; $visite = new clicnat_visite_espace_hirondelle($this->db, $_POST['id_visite_nid']); if (!$visite) { throw new Exception("pas trouvé de viste avec cet idendifiant : {$_POST['id_visite_nid']}"); } $observation = ['datedeb' => $visite->date_visite_nid, 'datefin' => $visite->date_visite_nid, 'id_utilisateur' => $_SESSION['id_utilisateur'], 'table_espace' => 'espace_point', 'id_espace' => $visite->id_espace]; $id_observation = isset($_POST['id_observation_visite']) ? $_POST['id_observation_visite'] : bobs_observation::insert($this->db, $observation); $retour = ["citations" => [], "id_observation" => $id_observation]; $observation = get_observation($this->db, $id_observation); $observation->ajoute_tag(CLICNAT_HIRONDELLE_TAG, $visite->id_visite_nid, "visite_espace_hirondelle.id_visite"); $observation->add_observateur($_SESSION['id_utilisateur']); $ages = ["ad" => "AD", "juv" => "JUV", "juvmorts" => "JUV", "oeuf" => "P"]; $especes = ["fenetre" => CLICNAT_HIRONDELLE_ID_ESPECE_FENETRE, "rustique" => CLICNAT_HIRONDELLE_ID_ESPECE_RUSTIQUE, "rivage" => CLICNAT_HIRONDELLE_ID_ESPECE_RIVIERE]; foreach ($especes as $e_champ => $id_espece) { foreach ($ages as $a_champ => $age_clicnat) { if (!empty($_POST["nb_{$a_champ}_{$e_champ}"]) or isset($_POST["nb_{$a_champ}_{$e_champ}_ind"]) and $_POST["nb_{$a_champ}_{$e_champ}_ind"] == 1) { if (isset($_POST["nb_{$a_champ}_{$e_champ}_ind"]) && $_POST["nb_{$a_champ}_{$e_champ}_ind"] == 1) { $nb = 0; } else { $nb = (int) $_POST["nb_{$a_champ}_{$e_champ}"]; } $id_citation = $observation->add_citation($id_espece); $retour['citations'][] = $id_citation; $citation = get_citation($this->db, $id_citation); $citation->set_age($age_clicnat); if ($a_champ == "juvmorts") { $citation->ajoute_tag(70); // mort } if (!empty($_POST["commentaire_{$a_champ}_{$e_champ}"]) && $_POST["commentaire_{$a_champ}_{$e_champ}"] != "") { bobs_element::cls($_POST["commentaire_{$a_champ}_{$e_champ}"]); $citation->ajoute_commentaire("info", $_SESSION['id_utilisateur'], htmlentities($_POST["commentaire_{$a_champ}_{$e_champ}"], ENT_COMPAT, 'UTF-8'), true); } if ((int) $_POST["nbs_{$a_champ}_{$e_champ}"] > -1 && (int) $_POST["nbs_{$a_champ}_{$e_champ}"] != $nb) { bobs_element::cli($_POST["nbs_{$a_champ}_{$e_champ}"]); $eff_min = min($nb, $_POST["nbs_{$a_champ}_{$e_champ}"]); $eff_max = max($nb, $_POST["nbs_{$a_champ}_{$e_champ}"]); $citation->set_effectif_min_max($eff_min, $eff_max); } else { $citation->set_effectif($nb); } $citation->ajoute_tag(CLICNAT_HIRONDELLE_TAG, $visite->id_visite_nid, "visite_espace_hirondelle.id_visite"); } } } $observation->send(); $retour['etat'] = 'ok'; } catch (Exception $e) { $retour['etat'] = 'err'; $retour['message'] = $e->getMessage(); } echo json_encode($retour); exit(0); }
public function before_editer_date() { $u = $this->get_user_session(); $sortie = new clicnat_sortie($this->db, (int) $_GET['id_sortie']); $editable = false; if ($sortie->id_utilisateur_propose == $u->id_utilisateur) { $editable = true; } if (!$editable) { if ($this->is_admin($u->id_utilisateur)) { $editable = true; } } $this->assign('edit', $editable); if ($this->is_admin($u->id_utilisateur)) { $this->assign('admin', true); } else { $this->assign('admin', false); } if ($this->is_admin($u->id_utilisateur)) { if (isset($_POST['etat'])) { $date = $sortie->date_par_timestamp((int) $_GET['date']); $date->update_field('etat', (int) $_POST['etat']); } } if ($editable) { if (isset($_POST['inscription_date_limite'])) { $date = $sortie->date_par_timestamp((int) $_GET['date']); if (isset($_POST['inscription_date_limite'])) { if (!empty($_POST['inscription_date_limite'])) { $date->update_field('inscription_date_limite', bobs_element::date_fr2sql($_POST['inscription_date_limite'])); } else { $date->update_field('inscription_date_limite', null); } } $date->update_field('inscription_prealable', isset($_POST['inscription_prealable']) ? 'true' : 'false'); $date->update_field('inscription_participants_max', (int) $_POST['inscription_participants_max']); $h = (int) $_POST['date_sortie_h']; $m = (int) $_POST['date_sortie_m']; $new_date = new DateTime(); list($y, $mo, $d) = explode("-", $date->date_sortie); $new_date->setDate($y, $mo, $d); $new_date->setTime($h, $m); $date->update_field('date_sortie', $new_date->format("Y-m-d H:i:s")); $this->redirect("?t=editer_suiv&id_sortie={$sortie->id_sortie}"); } } $sortie = new clicnat_sortie($this->db, (int) $_GET['id_sortie']); $date = $sortie->date_par_timestamp((int) $_GET['date']); $this->assign_by_ref('sortie', $sortie); $this->assign_by_ref('date', $date); }