21,12 → 21,14 |
*/ |
class GestionObservation extends Cel { |
|
static $cel_obs = ['id_observation', 'ordre', 'ce_utilisateur', 'prenom_utilisateur', 'nom_utilisateur', |
'courriel_utilisateur', 'nom_sel', 'nom_sel_nn', 'nom_ret', 'nom_ret_nn', 'nt', 'famille', |
'nom_referentiel', 'pays', 'ce_zone_geo', 'zone_geo', 'lieudit', 'station', 'milieu', 'latitude', 'longitude', |
'altitude', 'geodatum', 'date_observation', 'mots_cles_texte', 'commentaire', 'transmission', |
'date_creation', 'date_modification', 'date_transmission', 'abondance', 'certitude', 'phenologie', |
'code_insee_calcul']; |
static $cel_obs = ["input_source='widget'", "published_location si tag sensible", "occurrence_type = 'observation de terrain'", |
"is_visible_in_cel =1", "is_visible_in_veglab =0", "is_wild = 1", "sample_herbarium = 0"]; |
static $correspondance_obs_occurrence = ['id_observation' => 'id', 'ce_utilisateur', 'prenom_utilisateur', 'nom_utilisateur', |
'courriel_utilisateur', 'nom_sel', 'nom_sel_nn', 'nom_ret', 'nom_ret_nn', 'nt', 'famille', |
'nom_referentiel', 'pays', 'ce_zone_geo', 'zone_geo', 'lieudit', 'station', 'milieu', 'latitude', 'longitude', |
'altitude', 'geodatum', 'date_observation', 'mots_cles_texte', 'commentaire', 'transmission', |
'date_creation', 'date_modification', 'date_transmission', 'abondance', 'certitude', 'phenologie', |
'code_insee_calcul']; |
|
/** |
* Ajoute une observation grâce aux paramètres fournis |
45,7 → 47,7 |
'nom_referentiel' => NULL); |
$parametres = array_merge($base_param, $parametres); |
|
$parametres['ordre'] = $this->renvoyerDernierOrdreUtilisePlusUn($utilisateur); |
|
|
$this->traiterEspece($parametres); |
|
73,34 → 75,11 |
$retour = false; |
$msg = "Erreur de creation d'une observation : $resultat_ajout_observation"; |
$this->logger('CEL_bugs', $msg); |
} else { |
$retour = $this->renvoyerIdPourOrdre($utilisateur ,$parametres['ordre']); |
} |
return $retour; |
} |
|
/** |
* Renvoie le prochain numero d'ordre relatif à un utilisateur (i.e. dernier ordre + 1) |
* |
* @param int $utilisateur id utilisateur |
* |
* @return int le nouveau numero d'ordre relatif à l'utilisateur ou bien 0 s'il n'a jamais créé d'observations |
*/ |
public function renvoyerDernierOrdreUtilisePlusUn($utilisateur) { |
$idUtilisateurP = Cel::db()->proteger($utilisateur); |
$requete = 'SELECT max(ordre) AS ordre '. |
'FROM cel_obs '. |
"WHERE ce_utilisateur = $idUtilisateurP ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$dernier_ordre = Cel::db()->requeter($requete); |
|
$nouvel_ordre = 0; |
if (is_array($dernier_ordre) && count($dernier_ordre) > 0 && trim($dernier_ordre[0]['ordre']) != '') { |
$nouvel_ordre = $dernier_ordre[0]['ordre'] + 1; |
} |
return $nouvel_ordre; |
} |
|
/** |
* Renvoie l'id d'observation associé à l'utilisateur et l'ordre donné |
* |
202,6 → 181,7 |
|
/** |
* Modifie une observation publique dont l'id et l'utilisateur sont passé en paramètre |
* Utiliser uniquement pour identiplante |
* |
* @param int $utilisateur id utilisateur du proprietaire de l'observation |
* @param int $id identifiant de l'observation |
221,12 → 201,12 |
$this->formaterParametresObservation($parametres); |
|
$champ_maj = self::traiterParametresObservationEtConstruireSousRequeteMaj($parametres); |
$champ_maj[] = 'date_modification = NOW()'; |
$champ_maj[] = 'date_updated = NOW()'; |
|
$requete = "UPDATE cel_obs SET " . |
$requete = "UPDATE occurrence SET " . |
implode(', ', $champ_maj) . |
" WHERE id_observation = ".Cel::db()->proteger($id_obs). |
" AND transmission = 1 ". |
" WHERE id = ".Cel::db()->proteger($id_obs). |
" AND is_public = 1 ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$resultat = Cel::db()->executer($requete); |
|
249,9 → 229,9 |
$etat_transmission = $publier ? 1 : 0; |
$dateTransmission = $publier ? 'NOW()' : 'NULL'; |
|
$requete = 'UPDATE cel_obs '. |
"SET transmission = $etat_transmission , date_transmission = $dateTransmission, date_modification = NOW() ". |
"WHERE id_observation IN ($idsObsConcat) ". |
$requete = 'UPDATE occurrence '. |
"SET is_public = $etat_transmission , date_published = $dateTransmission, date_updated = NOW() ". |
"WHERE id IN ($idsObsConcat) ". |
' -- ' . __FILE__ . ':' . __LINE__; |
$resultat = Cel::db()->executer($requete); |
return $resultat; |
265,7 → 245,7 |
* |
* @return true ou false suivant le succès de l'opération |
*/ |
public function supprimerObservation($utilisateur, $ordre) { |
public function supprimerObservation($utilisateur, $id) { |
// TODO changer le systeme pour n'utiliser plus que les id |
$retour = false; |
$tableau_ordre = explode(',', $ordre); |
273,10 → 253,9 |
$ordre = implode(',', $tableau_ordre); |
$idUtilisateurP = Cel::db()->proteger($utilisateur); |
|
$requete = 'SELECT id_observation AS id_obs '. |
'FROM cel_obs '. |
"WHERE ce_utilisateur = $idUtilisateurP ". |
"AND ordre IN ($ordre) ". |
$requete = 'SELECT id AS id_obs '. |
'FROM occurrence '. |
"WHERE user_id = $idUtilisateurP ". |
' -- '.__FILE__.':'.__LINE__; |
$resultats = Cel::db()->requeter($requete); |
|
289,7 → 268,7 |
} |
|
$chaine_ids_obs = implode(',', $ids_obs); |
$requete = 'DELETE FROM cel_obs WHERE '. |
$requete = 'DELETE FROM occurrence WHERE '. |
"ce_utilisateur = $idUtilisateurP ". |
"AND id_observation IN ($chaine_ids_obs) ". |
' -- '.__FILE__.':'.__LINE__; |
571,13 → 550,25 |
* selon la syntaxe UPDATE table SET colonne1 = valeur1, colonne2 = valeur2 WHERE condition |
*/ |
static function traiterParametresObservationEtConstruireSousRequeteMaj($parametres) { |
$correspondance = array("nom_sel" => "user_sci_name", |
"nom_sel_nn" => "user_sci_name_id", |
"nom_ret" => "accepted_sci_name", |
"nom_ret_nn" => "accepted_sci_name_id", |
"famille" => "family", |
"valide" => "is_identiplante_validated", |
"transmission" => "is_public"); |
// Nullifiage ... |
// TODO: code dupliqué, en faire une fonction à mettre à la place appropriée |
$champs = array(); |
foreach ($parametres as $cle => $valeur) { |
$valeur = self::renvoyerValeurDenullifiee($valeur); |
$champs[] = $cle.' = '.$valeur; |
if (isset($correspondance[$cle])) { |
$champs[] = $correspondance[$cle].' = '.$valeur; |
} |
} |
if (!isset($parametres['transmission'])) { |
$champs[] = "is_identiplante_validated = 1"; |
} |
return $champs; |
} |
|