X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=classes%2Fphone.php;h=64dfe0ef2dfcfddcf5a34b055f4e9c843d3611e6;hb=e429cd03ff90d7f50f68775245df33403ddcd986;hp=32eb1688717c8990fd0562239cbe8b9465b108b4;hpb=42ec0fe2dd9e21554460f71ec886eda546ef9cbe;p=platal.git diff --git a/classes/phone.php b/classes/phone.php index 32eb168..64dfe0e 100644 --- a/classes/phone.php +++ b/classes/phone.php @@ -67,7 +67,7 @@ class Phone // The following fields are the fields of the form in the profile edition. private $type = 'fixed'; public $display = ''; - private $pub = 'private'; + public $pub = 'ax'; public $comment = ''; private $error = false; @@ -105,6 +105,11 @@ class Phone return $this->search; } + public function setId($id) + { + $this->id = $id; + } + /** Returns the unique ID of a phone. * This ID will allow to link it to an address, a user or a job. * The format is address_addressId_phoneId (where phoneId is the id @@ -281,8 +286,10 @@ class Phone private function toString() { - return 'type : ' . $this->type .', numéro : ' . $this->display - . ', commentaire : « ' . $this->comment . ' », affichage : ' . $this->pub; + static $pubs = array('public' => 'publique', 'ax' => 'annuaire AX', 'private' => 'privé'); + static $types = array('fax' => 'fax', 'fixed' => 'fixe', 'mobile' => 'mobile'); + return $this->display . ' (' . $types[$this->type] . (($this->comment) ? ', commentaire : « ' . $this->comment . ' »' : '') + . ', affichage ' . $pubs[$this->pub] . ')'; } private function isEmpty() @@ -302,14 +309,21 @@ class Phone } } - static public function deletePhones($pid, $link_type, $link_id = null) + public function delete() + { + XDB::execute('DELETE FROM profile_phones + WHERE pid = {?} AND link_type = {?} AND link_id = {?} AND tel_id = {?}', + $this->pid, $this->link_type, $this->link_id, $this->id); + } + + 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); } @@ -335,32 +349,38 @@ 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); + return self::formArrayWalk($data, 'toFormArray', $success, true, $maxPublicity); } static public function formArrayToString(array $data) { - return implode(' ; ', self::formArrayWalk($data, 'toString')); + return implode(', ', self::formArrayWalk($data, 'toString')); } static public function iterate(array $pids = array(), array $link_types = array(), @@ -399,8 +419,8 @@ class PhoneIterator implements PlIterator $sql = 'SELECT search_tel AS search, display_tel AS display, comment, link_id, tel_type AS type, link_type, tel_id AS id, pid, pub FROM profile_phones - WHERE ' . implode(' AND ', $where) . ' - ORDER BY link_id, tel_id'; + ' . ((count($where) > 0) ? 'WHERE ' . implode(' AND ', $where) : '') . ' + ORDER BY pid, link_id, tel_id'; $this->dbiter = XDB::iterator($sql); }