Adds delete method for phone and address classes.
[platal.git] / classes / phone.php
index cf227ed..948894f 100644 (file)
@@ -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
@@ -302,6 +307,13 @@ class Phone
         }
     }
 
+    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)
     {
         $where = '';
@@ -340,7 +352,7 @@ class Phone
         $phones = array();
         foreach ($data as $item) {
             $phone = new Phone($item);
-            $success = ($phone->format() && $success);
+            $success = (!$phone->error && ($phone->format() || $phone->isEmpty()) && $success);
             if (!$phone->isEmpty()) {
                 $phones[] = call_user_func(array($phone, $function));
             }
@@ -399,8 +411,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);
     }