X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fphone.php;h=29449e73ba90cad394c5dc6c48e17803c121018c;hb=a67a14b4ab7ea2661f7cdbd1e201be6a0aaf6193;hp=5dbca0f95c74571a0076987a8739ac9e7491b459;hpb=14aba233ad5ca4fced7d0fa015f0a1f7da6d6c49;p=platal.git diff --git a/classes/phone.php b/classes/phone.php index 5dbca0f..29449e7 100644 --- a/classes/phone.php +++ b/classes/phone.php @@ -1,6 +1,6 @@ link_type; - } - - public function linkId() - { - return $this->link_id; - } - - public function id() - { - return $this->id; - } - - public function pid() - { - return $this->pid; - } - - public function search() - { - return $this->search; - } - public function setId($id) { $this->id = $id; @@ -301,9 +277,9 @@ class Phone { $this->format(); if (!$this->isEmpty()) { - XDB::execute('INSERT INTO profile_phones (pid, link_type, link_id, tel_id, tel_type, - search_tel, display_tel, pub, comment) - VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})', + XDB::execute('INSERT IGNORE INTO profile_phones (pid, link_type, link_id, tel_id, tel_type, + search_tel, display_tel, pub, comment) + VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})', $this->pid, $this->link_type, $this->link_id, $this->id, $this->type, $this->search, $this->display, $this->pub, $this->comment); } @@ -316,14 +292,14 @@ class Phone $this->pid, $this->link_type, $this->link_id, $this->id); } - static public function deletePhones($pid, $link_type, $link_id = null) + static public function deletePhones($pid, $link_type, $link_id = null, $deletePrivate = true) { $where = ''; if (!is_null($link_id)) { $where = XDB::format(' AND link_id = {?}', $link_id); } XDB::execute('DELETE FROM profile_phones - WHERE pid = {?} AND link_type = {?}' . $where, + WHERE pid = {?} AND link_type = {?}' . $where . (($deletePrivate) ? '' : ' AND pub IN (\'public\', \'ax\')'), $pid, $link_type); } @@ -349,27 +325,35 @@ class Phone } } - static private function formArrayWalk(array $data, $function, &$success = true, $requiresEmptyPhone = false) + static private function formArrayWalk(array $data, $function, &$success = true, $requiresEmptyPhone = false, $maxPublicity = null) { $phones = array(); foreach ($data as $item) { $phone = new Phone($item); $success = (!$phone->error && ($phone->format() || $phone->isEmpty()) && $success); if (!$phone->isEmpty()) { + if (!is_null($maxPublicity) && $maxPublicity->isVisible($phone->pub)) { + $phone->pub = $maxPublicity->level(); + } $phones[] = call_user_func(array($phone, $function)); } } if (count($phones) == 0 && $requiresEmptyPhone) { $phone = new Phone(); + if (!is_null($maxPublicity) && $maxPublicity->isVisible($phone->pub)) { + $phone->pub = $maxPublicity->level(); + } $phones[] = call_user_func(array($phone, $function)); } return $phones; } // Formats an array of form phones into an array of form formatted phones. - static public function formatFormArray(array $data, &$success = true) + static public function formatFormArray(array $data, &$success = true, $maxPublicity = null) { - return self::formArrayWalk($data, 'toFormArray', $success, true); + $phones = self::formArrayWalk($data, 'toFormArray', $success, true, $maxPublicity); + usort($phones, 'ProfileVisibility::comparePublicity'); + return $phones; } static public function formArrayToString(array $data) @@ -377,6 +361,16 @@ class Phone return implode(', ', self::formArrayWalk($data, 'toString')); } + static public function hasPrivate(array $phones) + { + foreach ($phones as $phone) { + if ($phone['pub'] == 'private') { + return true; + } + } + return false; + } + static public function iterate(array $pids = array(), array $link_types = array(), array $link_ids = array(), array $pubs = array()) {