From 07ccb6a9f839f39ab6c1763dc4f49e6d29b98147 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Mon, 14 Mar 2011 17:27:50 -0700 Subject: [PATCH] Extended profile - make experience save and display --- plugins/ExtendedProfile/extendedprofile.php | 28 ++++++--- .../ExtendedProfile/extendedprofilewidget.php | 4 ++ .../profiledetailsettingsaction.php | 61 +++++++++++++------ 3 files changed, 65 insertions(+), 28 deletions(-) diff --git a/plugins/ExtendedProfile/extendedprofile.php b/plugins/ExtendedProfile/extendedprofile.php index 2277e4d769..b6844e205f 100644 --- a/plugins/ExtendedProfile/extendedprofile.php +++ b/plugins/ExtendedProfile/extendedprofile.php @@ -131,24 +131,36 @@ class ExtendedProfile function getExperiences() { - $companies = (isset($this->fields['companies'])) ? $this->fields['company'] : null; + $companies = (isset($this->fields['company'])) ? $this->fields['company'] : null; $start = (isset($this->fields['start'])) ? $this->fields['start'] : null; $end = (isset($this->fields['end'])) ? $this->fields['end'] : null; - $cArrays = array(); + $eArrays = array(); - if (empty($experiences)) { + if (empty($companies)) { $eArrays[] = array( 'label' => _m('Employer'), 'type' => 'experience', - 'company' => "Bozotronix", - 'start' => '1/5/10', - 'end' => '2/3/11', - 'current' => true, + 'company' => null, + 'start' => null, + 'end' => null, + 'current' => false, 'index' => 0 ); + } else { + for ($i = 0; $i < sizeof($companies); $i++) { + $ea = array( + 'label' => _m('Employer'), + 'type' => 'experience', + 'company' => $companies[$i]->field_value, + 'index' => intval($companies[$i]->value_index), + 'current' => $end[$i]->rel, + 'start' => $start[$i]->date, + 'end' => $end[$i]->date + ); + $eArrays[] = $ea; + } } - return $eArrays; } diff --git a/plugins/ExtendedProfile/extendedprofilewidget.php b/plugins/ExtendedProfile/extendedprofilewidget.php index 9dfbaa716e..478990ac63 100644 --- a/plugins/ExtendedProfile/extendedprofilewidget.php +++ b/plugins/ExtendedProfile/extendedprofilewidget.php @@ -241,6 +241,10 @@ class ExtendedProfileWidget extends Form ); $this->out->elementEnd('li'); $this->out->elementStart('li'); + $this->out->hidden( + $id . '-current', + 'false' + ); $this->out->checkbox( $id . '-current', _m('Current'), diff --git a/plugins/ExtendedProfile/profiledetailsettingsaction.php b/plugins/ExtendedProfile/profiledetailsettingsaction.php index 5e505f6c28..56f81d7a2d 100644 --- a/plugins/ExtendedProfile/profiledetailsettingsaction.php +++ b/plugins/ExtendedProfile/profiledetailsettingsaction.php @@ -95,26 +95,27 @@ class ProfileDetailSettingsAction extends ProfileSettingsAction $user = common_current_user(); try { - $this->saveStandardProfileDetails($user); + $this->saveStandardProfileDetails($user); + + $profile = $user->getProfile(); + + $simpleFieldNames = array('title', 'spouse', 'kids'); + + foreach ($simpleFieldNames as $name) { + $value = $this->trimmed('extprofile-' . $name); + if (!empty($value)) { + $this->saveField($user, $name, $value); + } + } + + $this->savePhoneNumbers($user); + $this->saveExperiences($user); + } catch (Exception $e) { $this->showForm($e->getMessage(), false); return; } - $profile = $user->getProfile(); - - $simpleFieldNames = array('title', 'spouse', 'kids'); - - foreach ($simpleFieldNames as $name) { - $value = $this->trimmed('extprofile-' . $name); - if (!empty($value)) { - $this->saveField($user, $name, $value); - } - } - - $this->savePhoneNumbers($user); - $this->saveExperiences($user); - $this->showForm(_('Details saved.'), true); } @@ -170,11 +171,31 @@ class ProfileDetailSettingsAction extends ProfileSettingsAction $expArray = array(); foreach ($experiences as $exp) { - list($company, $current, $start, $end) = array_values($exp); + + common_debug('Experience: ' . var_export($exp, true)); + + list($company, $current, $end, $start) = array_values($exp); + + $startTs = strtotime($start); + + if ($startTs === false) { + throw new Exception( + sprintf(_m("Invalid start date: %s"), $start) + ); + } + + $endTs = strtotime($end); + + if ($current === 'false' && $endTs === false) { + throw new Exception( + sprintf(_m("Invalid end date: %s"), $start) + ); + } + $expArray[] = array( 'company' => $company, - 'start' => $start, - 'end' => $end, + 'start' => common_sql_date($startTs), + 'end' => common_sql_date($endTs), 'current' => $current, ); } @@ -201,7 +222,7 @@ class ProfileDetailSettingsAction extends ProfileSettingsAction null, $i ); - /* + $this->saveField( $user, 'start', @@ -230,7 +251,7 @@ class ProfileDetailSettingsAction extends ProfileSettingsAction $experience['end'] ); } - */ + } } }