Displays group member count.
[platal.git] / include / validations / entreprises.inc.php
index 8853164..cff4801 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2009 Polytechnique.org                              *
+ *  Copyright (C) 2003-2010 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -21,7 +21,7 @@
 
 // {{{ class EntrReq
 
-class EntrReq extends Validate
+class EntrReq extends ProfileValidate
 {
     // {{{ properties
 
@@ -43,9 +43,9 @@ class EntrReq extends Validate
     // }}}
     // {{{ 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,10 +68,9 @@ class EntrReq extends Validate
                 $where .= "name LIKE '%" . $name_array[$i] . "%'";
             }
         }
-        $res = XDB::iterator("SELECT  name
-                             FROM  profile_job_enum
-                            WHERE  "
-                          . $where);
+        $res = XDB::iterator('SELECT  name
+                                FROM  profile_job_enum
+                               WHERE  ' . $where);
         $this->suggestions = "| ";
         while ($sug = $res->next()) {
             $this->suggestions .= $sug['name'] . " | ";
@@ -100,18 +99,18 @@ class EntrReq extends Validate
     protected function handle_editor()
     {
         if (Env::has('holdingid')) {
-            $this->holdingid = trim(Env::v('holdingid'));
+            $this->holdingid = Env::t('holdingid');
         }
         if (Env::has('name')) {
-            $this->name = trim(Env::v('name'));
+            $this->name = Env::t('name');
             if (Env::has('acronym')) {
-                $this->acronym = trim(Env::v('acronym'));
+                $this->acronym = Env::t('acronym');
                 if (Env::has('url')) {
-                    $this->url = trim(Env::v('url'));
+                    $this->url = Env::t('url');
                     if (Env::has('NAF_code')) {
-                        $this->NAF_code = trim(Env::v('NAF_code'));
+                        $this->NAF_code = Env::t('NAF_code');
                         if (Env::has('AX_code')) {
-                            $this->AX_code = trim(Env::v('AX_code'));
+                            $this->AX_code = Env::t('AX_code');
                             return true;
                         }
                     }
@@ -147,6 +146,8 @@ class EntrReq extends Validate
 
     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 = {?}',
@@ -159,15 +160,22 @@ class EntrReq extends Validate
                                VALUES  ({?}, {?}, {?}, {?}, {?}, {?}, {?})',
                          $this->name, $this->acronym, $this->url, $this->email,
                          $this->holdingid, $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,
+            XDB::execute("INSERT INTO  profile_phones (pid, 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');
+                               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,
@@ -183,12 +191,17 @@ class EntrReq extends Validate
                          $this->address['east'], $this->address['west']);
         } 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;
     }
 
     // }}}