false, * 'notification_email' => false, * 'type_consultation' => avec_avis_attendu, * 'email' => '', * 'edition' => null, * 'adresse' => null, * 'adresse2' => null, * 'cp' => null, * 'ville' => null, * 'delai_type' => null, * 'delai' => null, * 'om_validite_debut' => null, * 'om_validite_fin' => null, * 'edition' => null, * 'service_type' => null, * 'uid_platau_acteur' => null, * 'generate_edition' => null, * 'accepte_notification_email' => null, * 'om_collectivite' * 'delete' => false, * ) * @return string Le résultat du traitement */ public function update_or_create($request_data) { // Check DATA if (isset($request_data["libelle"]) === false && isset($request_data["abrege"]) === false ) { return $this->BAD_DATA; } $delete = false; if (isset($request_data["delete"]) === true) { $delete = $request_data["delete"]; } // Check and Get edition if (empty($request_data["edition"]) === false ) { $request_data['edition'] = $this->get_edition($request_data["edition"]); } // Check and Get edition if (empty($request_data["email"]) === true ) { $request_data['email'] = ''; } // Check and Get type_consultation if (empty($request_data["type_consultation"]) === true ) { $request_data['type_consultation'] = 'avec_avis_attendu'; } // Check and Convert types if (empty($request_data["service_type"]) === false ) { if ($request_data["service_type"] == "Plat'AU") { $request_data['service_type'] = PLATAU; } else { $request_data['service_type'] = 'openads'; } } else { $request_data['service_type'] = 'openads'; } if (empty($request_data["delai_type"]) === false ) { $request_data['delai_type'] = strtolower($request_data["delai_type"]); } else { $request_data['delai_type'] = 'mois'; } // Convert Bool if (empty($request_data["generate_edition"]) === false ) { $request_data['generate_edition'] = $this->f->get_boolean_from_string($request_data["generate_edition"]); } else { $request_data['generate_edition'] = false; } if (empty($request_data["consultation_papier"]) === false ) { $request_data['consultation_papier'] = $this->f->get_boolean_from_string($request_data["consultation_papier"]); }else { $request_data['consultation_papier'] = false; } if (empty($request_data["notification_email"]) === false ) { $request_data['notification_email'] = $this->f->get_boolean_from_string($request_data["notification_email"]); }else { $request_data['notification_email'] = false; } if (empty($request_data["accepte_notification_email"]) === false ) { $request_data['accepte_notification_email'] = $this->f->get_boolean_from_string($request_data["accepte_notification_email"]); } // Check and Get collectivité if (empty($request_data["om_collectivite"]) === true ) { $request_data["om_collectivite"] = "agglo"; } $request_data['om_collectivite'] = $this->get_collectivite($request_data["om_collectivite"]); // Check If Exists service $service = $this->get_service($request_data["abrege"], $request_data["libelle"], $request_data['om_collectivite']); // If Exists Update or delete service if ($service == true ){ if ($delete){ $sql = "DELETE FROM ".DB_PREFIXE."service"; $sql .= " WHERE service=".$service." AND om_collectivite=".$request_data['om_collectivite'].";"; }else{ $sql = "UPDATE ".DB_PREFIXE."service SET "; foreach( $request_data as $colonne => $valeur) { // 'description' => null, $sql .= sprintf(", %s = '%s'", $colonne, $valeur); } $sql .= " WHERE service=".$service." AND om_collectivite=".$request_data['om_collectivite'].";"; } }else{ if (!$delete){ $sucess = $this->creation_service($request_data, $request_data['om_collectivite']); if (!$sucess) return $this->BAD_DATA; return $this->OK; }else{ return $this->BAD_DATA; } } $qres = $this->f->db->query($sql); $this->f->isDatabaseError($qres); return $this->OK; } /** * Cette methode prend les valeurs d'un om_parametre pour le créer * et renvoit l'identifiant du om_parametre créer ou false * * @param array $om_parametre_valeur Les champs renseignés du om_parametre. * @return int L'identifiant de om_parametre. */ private function creation_service($service_valeur, $collectivite_id) { $service = $this->f->get_inst__om_dbform(array( "obj" => "service", "idx" => "]", )); $valAuto = array(); foreach($service->champs as $value) { $valAuto[$value] = null; } foreach ($service_valeur as $colonne => $valeur) { $valAuto[$colonne] = $valeur; } if ($service->ajouter($valAuto) === false) { $this->setMessage(__("Le service n'a pas été créé.")); return false; } $this->setMessage(__("Le service a été créé avec succès.")); return $service->valF['service']; } /** * Cette méthode prend l'abrege et le libelle d'un service et le transforme en * son identifiant en le trouvant dans la base de données et en le * sauvegardant pour réutilisation * * @param string $abrege Abrege du service. * @param string $libelle Libellé du service. * @param int $collectivite_id Id de la collectivité auquel le service doit être liée. * @return int L'identifiant du service. */ private function get_service($abrege, $libelle, $collectivite_id) { if (array_key_exists($abrege, $this->service) === false) { $qres = $this->f->get_one_result_from_db_query( sprintf( 'SELECT service FROM %1$sservice WHERE service.abrege = \'%2$s\' AND service.libelle = \'%3$s\' AND service.om_collectivite = %4$s', DB_PREFIXE, $this->f->db->escapeSimple($abrege), $this->f->db->escapeSimple($libelle), $collectivite_id ), array( "origin" => __METHOD__, ) ); if ($qres["result"] === null) { $this->setMessage(__("Le service dont l'abrege et le libelle sont passés en paramètre n'existe pas.")); return false; } $this->collectivite[$abrege] = $qres["result"]; } return $this->collectivite[$abrege]; } /** * Cette méthode prend le libellé de l'édition et la transforme en * son identifiant en la trouvant dans la base de données et en la * sauvegardant pour réutilisation * * @param string $edition_libelle Libellé de l'edition. * @return int L'identifiant de l'edition. */ private function get_edition($edition_libelle) { if (array_key_exists($edition_libelle, $this->edition) === false) { $qres = $this->f->get_one_result_from_db_query( sprintf( 'SELECT om_etat FROM %1$som_etat WHERE om_etat.libelle = \'%2$s\'', DB_PREFIXE, $this->f->db->escapeSimple($edition_libelle) ), array( "origin" => __METHOD__, ) ); if ($qres["result"] === null) { $this->setMessage(__("L'edition passée en paramètre n'existe pas.")); return false; } $this->collectivite[$edition_libelle] = $qres["result"]; } return $this->collectivite[$edition_libelle]; } /** * Cette méthode prend le libellé de la collectivité et la transforme en * son identifiant en la trouvant dans la base de données et en la * sauvegardant pour réutilisation (ex: la même collectivité pour * le pétitionnaire que la demande) * * @param string $collectivite_libelle Libellé de la collectivité. * @return int L'identifiant de la collectivité. */ private function get_collectivite($collectivite_libelle) { if (array_key_exists($collectivite_libelle, $this->collectivite) === false) { $qres = $this->f->get_one_result_from_db_query( sprintf( 'SELECT om_collectivite FROM %1$som_collectivite WHERE om_collectivite.libelle = \'%2$s\'', DB_PREFIXE, $this->f->db->escapeSimple($collectivite_libelle) ), array( "origin" => __METHOD__, ) ); if ($qres["result"] === null) { $this->setMessage(__("La collectivité passée en paramètre n'existe pas.")); return false; } $this->collectivite[$collectivite_libelle] = $qres["result"]; } return $this->collectivite[$collectivite_libelle]; } } ?>