Fix error while requesting an invalid alias.
[platal.git] / modules / profile / jobs.inc.php
index 5927666..7a48ceb 100644 (file)
@@ -19,7 +19,7 @@
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
-class ProfileJob extends ProfileGeocoding
+class ProfileSettingJob extends ProfileSettingGeocoding
 {
     private $pub;
     private $email_new;
@@ -30,12 +30,12 @@ class ProfileJob extends ProfileGeocoding
 
     public function __construct()
     {
-        $this->pub    = new ProfilePub();
+        $this->pub    = new ProfileSettingPub();
         $this->email
                       = $this->email_new
-                      = new ProfileEmail();
-        $this->url    = new ProfileWeb();
-        $this->bool   = new ProfileBool();
+                      = new ProfileSettingEmail();
+        $this->url    = new ProfileSettingWeb();
+        $this->bool   = new ProfileSettingBool();
         $this->checks = array('url'      => array('w_url'),
                               'email'    => array('w_email'),
                               'pub'      => array('pub', 'w_email_pub'),
@@ -153,7 +153,7 @@ class ProfileJob extends ProfileGeocoding
                                 WHERE  name = {?}",
                               $job['name']);
             if ($res->numRows() != 1) {
-                $user = S::user();
+                $user = $page->profile->owner;
                 $this->geocodeAddress($job['hq_address'], $s);
                 if (!$s) {
                     $gmapsGeocoder = new GMapsGeocoder();
@@ -171,7 +171,7 @@ class ProfileJob extends ProfileGeocoding
         if (!isset($job['w_phone'])) {
             $job['w_phone'] = array();
         }
-        $profiletel = new ProfilePhones('pro', $jobid);
+        $profiletel = new ProfileSettingPhones('pro', $jobid);
         $job['w_phone'] = $profiletel->value($page, 'tel', $job['w_phone'], $s);
 
         unset($job['removed']);
@@ -180,8 +180,8 @@ class ProfileJob extends ProfileGeocoding
 
     public function value(ProfilePage &$page, $field, $value, &$success)
     {
-        require_once('validations.inc.php');
-        $entreprise = Validate::get_typed_requests(S::i('uid'), 'entreprise');
+        require_once 'validations.inc.php';
+        $entreprise = Validate::get_typed_requests($page->profile->owner->id(), 'entreprise');
         $entr_val = 0;
 
         $init = false;
@@ -190,17 +190,20 @@ class ProfileJob extends ProfileGeocoding
             $init = true;
         }
         $success = true;
-        foreach ($value as $key=>&$job) {
+        foreach ($value as $key => &$job) {
             $job['name'] = trim($job['name']);
-            if (!$job['name'] && $entreprise) {
+            if ($job['name'] == '' && $entreprise) {
                 $job['tmp_name'] = $entreprise[$entr_val]->name;
-                $entr_val ++;
+                ++$entr_val;
+            } else if ($job['name'] == '') {
+                $job['name_error'] = true;
+                $success = false;
             }
             if (isset($job['removed']) && $job['removed']) {
                 unset($value[$key]);
             }
         }
-        foreach ($value as $key=>&$job) {
+        foreach ($value as $key => &$job) {
             $ls = true;
             $this->geocodeAddress($job['w_address'], $s);
             $ls = ($ls && $s);
@@ -217,43 +220,43 @@ class ProfileJob extends ProfileGeocoding
     {
         // TODO: use address and phone classes to update profile_job_enum and profile_phones once they are done.
 
-        require_once('profil.func.inc.php');
-        require_once('validations.inc.php');
+        require_once 'profil.func.inc.php';
+        require_once 'validations.inc.php';
 
         XDB::execute("DELETE FROM  profile_job
                             WHERE  pid = {?}",
-                     $this->pid());
+                     $page->pid());
         XDB::execute("DELETE FROM  profile_addresses
                             WHERE  pid = {?} AND type = 'job'",
-                     $this->pid());
+                     $page->pid());
         XDB::execute("DELETE FROM  profile_phones
                             WHERE  pid = {?} AND link_type = 'pro'",
-                     $this->pid());
-        foreach ($value as $id=>&$job) {
+                     $page->pid());
+        foreach ($value as $id => &$job) {
             if (isset($job['name']) && $job['name']) {
                 if (isset($job['jobid']) && $job['jobid']) {
                     XDB::execute("INSERT INTO  profile_job (pid, id, description, sectorid, subsectorid,
                                                             subsubsectorid, email, url, pub, email_pub, jobid)
                                        VALUES  ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})",
-                                 $this->pid(), $id, $job['description'], $job['sector'], $job['subSector'],
+                                 $page->pid(), $id, $job['description'], $job['sector'], $job['subSector'],
                                  $job['subSubSector'], $job['w_email'], $job['w_url'], $job['pub'], $job['w_email_pub'], $job['jobid']);
                 } else {
                     XDB::execute("INSERT INTO  profile_job (pid, id, description, sectorid, subsectorid,
                                                             subsubsectorid, email, url, pub, email_pub)
                                        VALUES  ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})",
-                                 $this->pid(), $id, $job['description'], $job['sector'], $job['subSector'],
+                                 $page->pid(), $id, $job['description'], $job['sector'], $job['subSector'],
                                  $job['subSubSector'], $job['w_email'], $job['w_url'], $job['pub'], $job['w_email_pub']);
                 }
-                $address = new ProfileAddress();
-                $address->saveAddress($id, $job['w_address'], 'job');
-                $profiletel = new ProfilePhones('pro', $id);
+                $address = new ProfileSettingAddress();
+                $address->saveAddress($page->pid(), $id, $job['w_address'], 'job');
+                $profiletel = new ProfileSettingPhones('pro', $id);
                 $profiletel->saveTels('tel', $job['w_phone']);
             }
         }
     }
 }
 
-class ProfileJobs extends ProfilePage
+class ProfileSettingJobs extends ProfilePage
 {
     protected $pg_template = 'profile/jobs.tpl';
 
@@ -262,7 +265,7 @@ class ProfileJobs extends ProfilePage
         parent::__construct($wiz);
         $this->settings['cv'] = null;
         $this->settings['corps'] = null;
-        $this->settings['jobs'] = new ProfileJob();
+        $this->settings['jobs'] = new ProfileSettingJob();
         $this->watched = array('cv' => true, 'jobs' => true, 'corps' => true);
     }
 
@@ -378,7 +381,7 @@ class ProfileJobs extends ProfilePage
                                     FROM  profile_phones
                                    WHERE  pid = {?} AND link_type = 'pro'
                                 ORDER BY  link_id",
-                                 S::i('uid'));
+                                 $this->pid());
             $i = 0;
             $jobNb = count($this->values['jobs']);
             while ($phone = $res->next()) {
@@ -471,7 +474,7 @@ class ProfileJobs extends ProfilePage
 
     public function _prepare(PlPage &$page, $id)
     {
-        require_once "emails.combobox.inc.php";
+        require_once 'emails.combobox.inc.php';
         fill_email_combobox($page, $this->owner, $this->profile);
 
         $res = XDB::query("SELECT  id, name AS label