From 8cf886dcfce33830ea734835a668bfd636548ea6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rapha=C3=ABl=20Barrois?= Date: Wed, 17 Mar 2010 00:44:37 +0100 Subject: [PATCH] Cleanup profile consolidation code MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Raphaël Barrois --- classes/profile.php | 77 +++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/classes/profile.php b/classes/profile.php index a064402..d0b4c78 100644 --- a/classes/profile.php +++ b/classes/profile.php @@ -310,6 +310,25 @@ class Profile return ProfileField::getForPID($cls, $this->id(), $this->visibility); } + /** Consolidates internal data (addresses, phones, jobs) + */ + private function consolidateFields() + { + if ($this->phones != null) { + if ($this->addresses != null) { + $this->addresses->addPhones($this->phones); + } + + if ($this->jobs != null) { + $this->jobs->addPhones($this->phones); + } + } + + if ($this->addresses != null && $this->jobs != null) { + $this->jobs->addAddresses($this->addresses); + } + } + /* Photo */ private $photo = null; @@ -339,6 +358,7 @@ class Profile public function setAddresses(ProfileAddresses $addr) { $this->addresses = $addr; + $this->consolidateFields(); } public function getAddresses($flags, $limit = null) @@ -781,61 +801,38 @@ class ProfileIterator implements PlIterator $this->iterator = PlIteratorUtils::parallelIterator($subits, $callbacks, 0); } - private function consolidateFields(array $pf) + private function hasData($flag, $vals) { - if ($this->fields & Profile::FETCH_PHONES) { - $phones = $pf[Profile::FETCH_PHONES]; - - if ($this->fields & Profile::FETCH_ADDRESSES && $pf[Profile::FETCH_ADDRESSES] != null) { - $pf[Profile::FETCH_ADDRESSES]->addPhones($phones); - } - if ($this->fields & Profile::FETCH_JOBS && $pf[Profile::FETCH_JOBS] != null) { - $pf[Profile::FETCH_JOBS]->addPhones($phones); - } - } - - if ($this->fields & Profile::FETCH_ADDRESSES) { - $addrs = $pf[Profile::FETCH_ADDRESSES]; - if ($this->fields & Profile::FETCH_JOBS && $pf[Profile::FETCH_JOBS] != null) { - $pf[Profile::FETCH_JOBS]->addAddresses($addrs); - } - } - - return $pf; + return ($this->fields & $flag) && ($vals[$flag] != null); } private function fillProfile(array $vals) { - $vals = $this->consolidateFields($vals); - $pf = Profile::get($vals[0]); - if ($this->fields & Profile::FETCH_ADDRESSES) { - if ($vals[Profile::FETCH_ADDRESSES] != null) { - $pf->setAddresses($vals[Profile::FETCH_ADDRESSES]); - } + if ($this->hasData(Profile::FETCH_PHONES, $vals)) { + $pf->setPhones($vals[Profile::FETCH_PHONES]); } - if ($this->fields & Profile::FETCH_CORPS) { + if ($this->hasData(Profile::FETCH_ADDRESSES, $vals)) { + $pf->setAddresses($vals[Profile::FETCH_ADDRESSES]); + } + if ($this->hasData(Profile::FETCH_JOBS, $vals)) { + $pf->setJobs($vals[Profile::FETCH_JOBS]); + } + + if ($this->hasData(Profile::FETCH_CORPS, $vals)) { $pf->setCorps($vals[Profile::FETCH_CORPS]); } - if ($this->fields & Profile::FETCH_EDU) { + if ($this->hasData(Profile::FETCH_EDU, $vals)) { $pf->setEdu($vals[Profile::FETCH_EDU]); } - if ($this->fields & Profile::FETCH_JOBS) { - $pf->setJobs($vals[Profile::FETCH_JOBS]); - } - if ($this->fields & Profile::FETCH_MEDALS) { + if ($this->hasData(Profile::FETCH_MEDALS, $vals)) { $pf->setMedals($vals[Profile::FETCH_MEDALS]); } - if ($this->fields & Profile::FETCH_NETWORKING) { + if ($this->hasData(Profile::FETCH_NETWORKING, $vals)) { $pf->setNetworking($vals[Profile::FETCH_NETWORKING]); } - if ($this->fields & Profile::FETCH_PHONES) { - $pf->setPhones($vals[Profile::FETCH_PHONES]); - } - if ($this->fields & Profile::FETCH_PHOTO) { - if ($vals[Profile::FETCH_PHOTO] != null) { - $pf->setPhoto($vals[Profile::FETCH_PHOTO]); - } + if ($this->hasData(Profile::FETCH_PHOTO, $vals)) { + $pf->setPhoto($vals[Profile::FETCH_PHOTO]); } return $pf; -- 2.1.4