X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Fpage.inc.php;h=8d3fb84445d8c4e51651b964b861bfd73079aaf1;hb=7996ae8cd41fbb3ccd748eaed71a50f866269c6e;hp=fa4a27b21befd73ed38dfe35b51f9c58d09a7a8b;hpb=ee71865181e96e7b0754ef9e7da4b3cb26f4c1d7;p=platal.git diff --git a/modules/profile/page.inc.php b/modules/profile/page.inc.php index fa4a27b..8d3fb84 100644 --- a/modules/profile/page.inc.php +++ b/modules/profile/page.inc.php @@ -1,6 +1,6 @@ id = $id; - } else { - $this->id = S::i('uid'); - } - $this->tel = new ProfileTel(); - $this->pub = new ProfilePub(); + $this->tel = new ProfileSettingTel(); + $this->pub = new ProfileSettingPub(); $this->link_type = $type; $this->link_id = $link_id; } @@ -141,11 +135,11 @@ class ProfilePhones implements ProfileSetting $success = true; if (is_null($value)) { $value = array(); - $res = XDB::iterator("SELECT t.display_tel AS tel, t.tel_type AS type, t.pub, t.comment - FROM profile_phones AS t - WHERE t.uid = {?} AND t.link_type = {?} - ORDER BY t.tel_id", - $this->id, $this->link_type); + $res = XDB::iterator('SELECT display_tel AS tel, tel_type AS type, pub, comment + FROM profile_phones + WHERE pid = {?} AND link_type = {?} + ORDER BY tel_id', + $page->pid(), $this->link_type); if ($res->numRows() > 0) { $value = $res->fetchAllAssoc(); } else { @@ -182,14 +176,14 @@ class ProfilePhones implements ProfileSetting return $value; } - private function saveTel($telid, array &$phone) + private function saveTel($pid, $telid, array &$phone) { if ($phone['tel'] != '') { - 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, comment) VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})", - $this->id, $this->link_type, $this->link_id, $telid, $phone['type'], + $pid, $this->link_type, $this->link_id, $telid, $phone['type'], format_phone_number($phone['tel']), $phone['tel'], $phone['pub'], $phone['comment']); } } @@ -197,21 +191,21 @@ class ProfilePhones implements ProfileSetting public function save(ProfilePage &$page, $field, $value) { XDB::execute("DELETE FROM profile_phones - WHERE uid = {?} AND link_type = {?} AND link_id = {?}", - $this->id, $this->link_type, $this->link_id); - $this->saveTels($field, $value); + WHERE pid = {?} AND link_type = {?} AND link_id = {?}", + $page->pid(), $this->link_type, $this->link_id); + $this->saveTels($page->pid(), $field, $value); } //Only saves phones without a delete operation - public function saveTels($field, $value) + public function saveTels($pid, $field, $value) { foreach ($value as $telid=>&$phone) { - $this->saveTel($telid, $phone); + $this->saveTel($pid, $telid, $phone); } } } -class ProfilePub extends ProfileNoSave +class ProfileSettingPub extends ProfileNoSave { public function value(ProfilePage &$page, $field, $value, &$success) { @@ -228,7 +222,7 @@ class ProfilePub extends ProfileNoSave } } -class ProfileBool extends ProfileNoSave +class ProfileSettingBool extends ProfileNoSave { public function value(ProfilePage &$page, $field, $value, &$success) { @@ -240,7 +234,7 @@ class ProfileBool extends ProfileNoSave } } -class ProfileDate extends ProfileNoSave +class ProfileSettingDate extends ProfileNoSave { public function value(ProfilePage &$page, $field, $value, &$success) { @@ -265,7 +259,7 @@ class ProfileDate extends ProfileNoSave } } -abstract class ProfileGeocoding implements ProfileSetting +abstract class ProfileSettingGeocoding implements ProfileSetting { protected function geocodeAddress(array &$address, &$success) { @@ -304,10 +298,14 @@ abstract class ProfilePage implements PlWizardPage public $orig = array(); public $values = array(); + public $profile = null; + public $owner = null; public function __construct(PlWizard &$wiz) { $this->wizard =& $wiz; + $this->profile = $this->wizard->getUserData('profile'); + $this->owner = $this->wizard->getUserData('owner'); } protected function _fetchData() @@ -346,19 +344,17 @@ abstract class ProfilePage implements PlWizardPage $setting->save($this, $field, $this->values[$field]); } if ($this->changed[$field] && @$this->watched[$field]) { - register_profile_update(S::i('uid'), $field); + WatchProfileUpdate::register($this->profile, $field); } } $this->_saveData(); // Update the last modification date - XDB::execute('REPLACE INTO user_changes - SET user_id = {?}', S::v('uid')); - if (!S::has('suid')) { - register_watch_op(S::i('uid'), WATCH_FICHE); - } + XDB::execute('UPDATE profiles + SET last_change = NOW() + WHERE pid = {?}', $this->pid()); global $platal; - S::logger()->log('profil', $platal->pl_self(1)); + S::logger()->log('profil', $platal->pl_self(2)); } protected function checkChanges() @@ -388,6 +384,16 @@ abstract class ProfilePage implements PlWizardPage return 'profile/base.tpl'; } + public function pid() + { + return $this->profile->id(); + } + + public function hrpid() + { + return $this->profile->hrpid(); + } + protected function _prepare(PlPage &$page, $id) { } @@ -401,6 +407,8 @@ abstract class ProfilePage implements PlWizardPage $page->assign($field, $value); } $this->_prepare($page, $id); + $page->assign('profile', $this->profile); + $page->assign('owner', $this->owner); $page->assign('profile_page', $this->pg_template); $page->assign('errors', $this->errors); }