Add a SIREN field to profile_jobs_enum.
[platal.git] / include / validations / entreprises.inc.php
index 8853164..42e1f4a 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2009 Polytechnique.org                              *
+ *  Copyright (C) 2003-2014 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
 
 // {{{ class EntrReq
 
-class EntrReq extends Validate
+class EntrReq extends ProfileValidate
 {
     // {{{ properties
 
     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, $_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, false, 'entreprise', $_stamp);
+        parent::__construct($_user, $_profile, false, 'entreprise', $_stamp);
         $this->id       = $_id;
         $this->name     = $_name;
         $this->acronym  = $_acronym;
@@ -68,13 +72,14 @@ class EntrReq extends Validate
                 $where .= "name LIKE '%" . $name_array[$i] . "%'";
             }
         }
-        $res = XDB::iterator("SELECT  name
-                             FROM  profile_job_enum
-                            WHERE  "
-                          . $where);
-        $this->suggestions = "| ";
-        while ($sug = $res->next()) {
-            $this->suggestions .= $sug['name'] . " | ";
+        if ($where != '') {
+            $res = XDB::iterator('SELECT  name
+                                    FROM  profile_job_enum
+                                   WHERE  ' . $where);
+            $this->suggestions = "| ";
+            while ($sug = $res->next()) {
+                $this->suggestions .= $sug['name'] . " | ";
+            }
         }
     }
 
@@ -99,26 +104,14 @@ class EntrReq extends Validate
 
     protected function handle_editor()
     {
-        if (Env::has('holdingid')) {
-            $this->holdingid = trim(Env::v('holdingid'));
+        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('name')) {
-            $this->name = trim(Env::v('name'));
-            if (Env::has('acronym')) {
-                $this->acronym = trim(Env::v('acronym'));
-                if (Env::has('url')) {
-                    $this->url = trim(Env::v('url'));
-                    if (Env::has('NAF_code')) {
-                        $this->NAF_code = trim(Env::v('NAF_code'));
-                        if (Env::has('AX_code')) {
-                            $this->AX_code = trim(Env::v('AX_code'));
-                            return true;
-                        }
-                    }
-                }
-            }
+        foreach (array('AX_code', 'holdingid') as $field) {
+            $this->$field = (Env::i($field) == 0 ? null : Env::i($field));
         }
-        return false;
+
+        return true;
     }
 
     // }}}
@@ -126,7 +119,7 @@ class EntrReq extends Validate
 
     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';
     }
 
     // }}}
@@ -137,8 +130,7 @@ class EntrReq extends Validate
         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.';
         }
     }
 
@@ -152,43 +144,34 @@ class EntrReq extends Validate
                             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 (uid, link_type, link_id, tel_id, tel_type,
-                                       search_tel, display_tel, pub)
-                               VALUES  ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}),
-                                       ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})',
-                         $jobid, 'hq', $this->id, 0, 'fixed', format_phone_number($this->tel), $display_tel, 'public', 
-                         $jobid, 'hq', $this->id, 1, 'fax', format_phone_number($this->fax), $display_fax, 'public');
-            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();
-            $success = true;
         }
-        return XDB::execute('UPDATE  profile_job
-                                SET  jobid = {?}
-                              WHERE  uid = {?} AND id = {?}',
-                            $jobid, $this->user->id(), $this->id);
+
+        XDB::execute('UPDATE  profile_job
+                         SET  jobid = {?}
+                       WHERE  pid = {?} AND id = {?}',
+                     $jobid, $this->profile->id(), $this->id);
+        if (XDB::affectedRows() == 0) {
+            return XDB::execute('INSERT INTO  profile_job (jobid, pid, id)
+                                      VALUES  ({?}, {?}, {?})',
+                                $jobid, $this->profile->id(), $this->id);
+        }
+        return true;
     }
 
     // }}}
@@ -196,5 +179,5 @@ class EntrReq extends Validate
 
 // }}}
 
-// 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:
 ?>