Add a SIREN field to profile_jobs_enum.
[platal.git] / include / validations / entreprises.inc.php
index 47e6a02..42e1f4a 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2010 Polytechnique.org                              *
+ *  Copyright (C) 2003-2014 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -27,23 +27,27 @@ class EntrReq extends ProfileValidate
 
     public $id;
     public $name;
-    public $acronym;
-    public $url;
-    public $email;
-    public $holdingid;
-    public $NAF_code;
-    public $AX_code;
-
-    public $tel;
-    public $fax;
-    public $address;
+    public $acronym = null;
+    public $url = null;
+    public $email = null;
+    public $holdingid = null;
+    public $SIREN = null;
+    public $NAF_code = null;
+    public $AX_code = null;
+
+    public $tel = null;
+    public $fax = null;
+    public $address = null;
 
     public $suggestions;
+    public $rules = 'Si l\'entreprise est déjà présente sous un autre nom dans la liste des suggestions, remplacer son nom par celui-ci avant de valider. Laisser les autres champs tels quels.';
+
+    public $requireAdmin = false;
 
     // }}}
     // {{{ constructor
 
-    public function __construct(User &$_user, Profile &$_profile, $_id, $_name, $_acronym, $_url, $_email, $_tel, $_fax, $_address, $_stamp = 0)
+    public function __construct(User $_user, Profile $_profile, $_id, $_name, $_acronym, $_url, $_email, $_tel, $_fax, $_address, $_stamp = 0)
     {
         parent::__construct($_user, $_profile, false, 'entreprise', $_stamp);
         $this->id       = $_id;
@@ -100,36 +104,13 @@ class EntrReq extends ProfileValidate
 
     protected function handle_editor()
     {
-        if (Env::has('name')) {
-            $this->name = Env::t('name');
-        }
-        if (Env::has('acronym')) {
-            $this->acronym = Env::t('acronym');
-        }
-        if (Env::has('url')) {
-            $this->url = Env::t('url');
-        }
-        if (Env::has('email')) {
-            $this->email = Env::t('email');
-        }
-        if (Env::has('holdingid')) {
-            $this->holdingid = Env::i('holdingid');
-        }
-        if (Env::has('NAF_code')) {
-            $this->NAF_code = Env::t('NAF_code');
+        foreach (array('name', 'acronym', 'url', 'email', 'SIREN', 'NAF_code', 'tel', 'fax', 'address') as $field) {
+            $this->$field = (Env::t($field) == '' ? null : Env::t($field));
         }
-        if (Env::has('AX_code')) {
-            $this->AX_code = Env::i('AX_code');
-        }
-        if (Env::has('address')) {
-            $this->address['text'] = Env::t('address');
-        }
-        if (Env::has('tel')) {
-            $this->tel = Env::t('tel');
-        }
-        if (Env::has('fax')) {
-            $this->fax = Env::t('fax');
+        foreach (array('AX_code', 'holdingid') as $field) {
+            $this->$field = (Env::i($field) == 0 ? null : Env::i($field));
         }
+
         return true;
     }
 
@@ -138,7 +119,7 @@ class EntrReq extends ProfileValidate
 
     protected function _mail_subj()
     {
-        return "[Polytechnique.org/Entreprises] Demande d'ajout d'une entreprise : " . $this->name;
+        return '[Polytechnique.org/Entreprises] Demande d\'ajout d\'une entreprise';
     }
 
     // }}}
@@ -149,8 +130,7 @@ class EntrReq extends ProfileValidate
         if ($isok) {
             return "  L'entreprise " . $this->name . " vient d'être ajoutée à ta fiche.";
         } else {
-            return "  La demande que tu avais faite pour l'entreprise " . $this->name .
-                   " a été refusée, car elle figure déjà dans notre base.";
+            return '  La demande que tu avais faite pour l\'entreprise ' . $this->name . ' a été refusée.';
         }
     }
 
@@ -159,52 +139,29 @@ class EntrReq extends ProfileValidate
 
     public function commit()
     {
-        // TODO: use address and phone classes to update profile_job_enum and profile_phones once they are done.
-
         $res = XDB::query('SELECT  id
                              FROM  profile_job_enum
                             WHERE  name = {?}',
                           $this->name);
         if ($res->numRows() != 1) {
-            require_once 'profil.func.inc.php';
-            require_once 'geocoding.inc.php';
-
-            XDB::execute('INSERT INTO  profile_job_enum (name, acronym, url, email, holdingid, NAF_code, AX_code)
-                               VALUES  ({?}, {?}, {?}, {?}, {?}, {?}, {?})',
+            XDB::execute('INSERT INTO  profile_job_enum (name, acronym, url, email, holdingid, SIREN_code, NAF_code, AX_code)
+                               VALUES  ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})',
                          $this->name, $this->acronym, $this->url, $this->email,
-                         $this->holdingid, $this->NAF_code, $this->AX_code);
+                         $this->holdingid, $this->SIREN, $this->NAF_code, $this->AX_code);
 
             $jobid = XDB::insertId();
-            $display_tel = format_display_number($this->tel, $error_tel);
-            $display_fax = format_display_number($this->fax, $error_fax);
-            XDB::execute("INSERT INTO  profile_phones (pid, link_type, link_id, tel_id, tel_type,
-                                       search_tel, display_tel, pub)
-                               VALUES  ({?}, 'hq', 0, 0, 'fixed', {?}, {?}, 'public'),
-                                       ({?}, 'hq', 0, 1, 'fax', {?}, {?}, 'public')",
-                         $jobid, format_phone_number($this->tel), $display_tel,
-                         $jobid, format_phone_number($this->fax), $display_fax);
-
-            $gmapsGeocoder = new GMapsGeocoder();
-            $address = $gmapsGeocoder->getGeocodedAddress($this->address);
-            Geocoder::getAreaId($address, 'administrativeArea');
-            Geocoder::getAreaId($address, 'subAdministrativeArea');
-            Geocoder::getAreaId($address, 'locality');
-            XDB::execute("INSERT INTO  profile_addresses (jobid, type, id, accuracy,
-                                                          text, postalText, postalCode, localityId,
-                                                          subAdministrativeAreaId, administrativeAreaId,
-                                                          countryId, latitude, longitude, updateTime,
-                                                          north, south, east, west)
-                               VALUES  ({?}, 'hq', 0, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?},
-                                        {?}, {?}, FROM_UNIXTIME({?}), {?}, {?}, {?}, {?})",
-                         $jobid, $this->address['accuracy'], $this->address['text'], $this->address['postalText'],
-                         $this->address['postalCode'], $this->address['localityId'],
-                         $this->address['subAdministrativeAreaId'], $this->address['administrativeAreaId'],
-                         $this->address['countryId'], $this->address['latitude'], $this->address['longitude'],
-                         $this->address['updateTime'], $this->address['north'], $this->address['south'],
-                         $this->address['east'], $this->address['west']);
+            $phone = new Phone(array('link_type' => 'hq', 'link_id' => $jobid, 'id' => 0,
+                                     'type' => 'fixed', 'display' => $this->tel, 'pub' => 'public'));
+            $fax   = new Phone(array('link_type' => 'hq', 'link_id' => $jobid, 'id' => 1,
+                                     'type' => 'fax', 'display' => $this->fax, 'pub' => 'public'));
+            $address = new Address(array('jobid' => $jobid, 'type' => Address::LINK_COMPANY, 'text' => $this->address));
+            $phone->save();
+            $fax->save();
+            $address->save();
         } else {
             $jobid = $res->fetchOneCell();
         }
+
         XDB::execute('UPDATE  profile_job
                          SET  jobid = {?}
                        WHERE  pid = {?} AND id = {?}',
@@ -222,5 +179,5 @@ class EntrReq extends ProfileValidate
 
 // }}}
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
 ?>