6.0.0-git
2019-04-24

[#12554] Failing to delete multiple contacts as requested by device
Summary Failing to delete multiple contacts as requested by device
Queue Turba
Queue Version Git master
Type Bug
State Resolved
Priority 2. Medium
Owners mrubinsk (at) horde (dot) org
Requester carlos.velasco (at) nimastelecom (dot) com
Created 2013-08-08 (2085 days ago)
Due
Updated 2013-08-08 (2085 days ago)
Assigned
Resolved 2013-08-08 (2085 days ago)
Milestone
Patch No

History
2013-08-08 22:44:08 Git Commit Comment #5 Reply to this comment
Changes have been made in Git (master):

commit 2440279642f1892a1f7ac9dcb5e7466d283d3165
Author: Michael J Rubinsky <mrubinsk@horde.org>
Date:   Thu Aug 8 18:43:37 2013 -0400

     Fix phpdoc related to Bug: 12554

  .../Core/lib/Horde/Core/ActiveSync/Connector.php   |    4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)

http://git.horde.org/horde-git/-/commit/2440279642f1892a1f7ac9dcb5e7466d283d3165
2013-08-08 22:42:24 Michael Rubinsky Comment #4 Reply to this comment
It's just the phpdoc that is wrong, the method that the connector 
method calls takes an array. The problem is since the driver's delete 
method did not return a boolean, the Turba_Api::delete method would 
exit after the first iteration.
2013-08-08 22:29:08 carlos (dot) velasco (at) nimastelecom (dot) com Comment #3 Reply to this comment
Mike, I am not sure this solves the problem.

I think the function deleteMessage in ActiveSync/Driver.php takes an array:

      * @param array $ids        The message ids to delete
     public function deleteMessage($folderid, array $ids)

And in this case, as it is a contact delete:

         case self::CONTACTS_FOLDER_UID:
             try {
                 $this->_connector->contacts_delete($ids);

But param in connector function is string, not array:

      * @param string $uid  The UID of the contact to remove
     public function contacts_delete($uid)

2013-08-08 22:15:34 Michael Rubinsky Version ⇒ Git master
Queue ⇒ Turba
 
2013-08-08 22:15:18 Michael Rubinsky Assigned to Michael Rubinsky
State ⇒ Resolved
 
2013-08-08 22:15:05 Git Commit Comment #2 Reply to this comment
Changes have been made in Git (master):

commit 5777c51990f6b3406d05d29c2d4d8fd1ed3418b9
Author: Michael J Rubinsky <mrubinsk@horde.org>
Date:   Thu Aug 8 18:14:13 2013 -0400

     Bug: 12554 Turba_Driver::delete() does not return a boolean.

  turba/lib/Api.php |    6 +++++-
  1 files changed, 5 insertions(+), 1 deletions(-)

http://git.horde.org/horde-git/-/commit/5777c51990f6b3406d05d29c2d4d8fd1ed3418b9
2013-08-08 21:37:30 carlos (dot) velasco (at) nimastelecom (dot) com Comment #1
Type ⇒ Bug
State ⇒ Unconfirmed
Priority ⇒ 2. Medium
Summary ⇒ Failing to delete multiple contacts as requested by device
Queue ⇒ Synchronization
Milestone ⇒
Patch ⇒ No
Reply to this comment
Using Android 4.1 with contacts synced, if you try to remove more than 
1 contact only the first one in the input is removed (deleted).

Input is like:

2013-08-08T23:15:25+02:00 DEBUG: [6461] I      <Remove>
2013-08-08T23:15:25+02:00 DEBUG: [6461] I       <ServerEntryId>
2013-08-08T23:15:25+02:00 DEBUG: [6461] I         
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2013-08-08T23:15:25+02:00 DEBUG: [6461] I       </ServerEntryId>
2013-08-08T23:15:25+02:00 DEBUG: [6461] I      </Remove>
2013-08-08T23:15:25+02:00 DEBUG: [6461] I      <Remove>
2013-08-08T23:15:25+02:00 DEBUG: [6461] I       <ServerEntryId>
2013-08-08T23:15:25+02:00 DEBUG: [6461] I         
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
2013-08-08T23:15:25+02:00 DEBUG: [6461] I       </ServerEntryId>
2013-08-08T23:15:25+02:00 DEBUG: [6461] I      </Remove>

2013-08-08T23:15:25+02:00 INFO: [6461] 
Horde_Core_ActiveSync_Driver::_smartStatMessage(@Contacts@, Array)
2013-08-08T23:15:25+02:00 INFO: [6461] Updating state during delete
2013-08-08T23:15:25+02:00 INFO: [6461] 
Horde_Core_ActiveSync_Driver::_smartStatMessage(@Contacts@, Array)
2013-08-08T23:15:25+02:00 INFO: [6461] Updating state during delete
2013-08-08T23:15:25+02:00 INFO: [6461] 
Horde_Core_ActiveSync_Driver::deleteMessage() @Contacts@: Array
(
     [0] => xxxxxxxxxxxxxxxxxxxx
     [1] => yyyyyyyyyyyyyyyyyyyy
)

In the debug logs of Horde, there is only *one* delete:

Aug  8 23:15:25 user:debug HORDE: HORDE: [turba] SQL  (0.0403s)
         SELECT object_id, owner_id, object_type, object_members, object_uid,
           object_firstname, object_lastname, object_middlenames,
           object_nameprefix, object_namesuffix, object_alias,
           object_yomifirstname, object_yomilastname, object_bday,
           object_anniversary, object_spouse, object_photo, object_phototype,
           object_homestreet, object_homepob, object_homecity,
           object_homeprovince, object_homepostalcode, object_homecountry,
           object_workstreet, object_workpob, object_workcity,
           object_workprovince, object_workpostalcode, object_workcountry,
           object_otherstreet, object_otherpob, object_othercity,
           object_otherprovince, object_otherpostalcode, object_othercountry,
           object_department, object_manager, object_assistant, object_tz,
           object_homeemail, object_homephone, object_homephone2, 
object_homefax,
           object_workphone, object_workphone2, object_cellphone,
           object_carphone, object_radiophone, object_companyphone,
           object_assistantphone, object_fax, object_pager, object_title,
           object_role, object_company, object_logo, object_logotype,
           object_category, object_notes, object_url, object_freebusyurl,
           object_pgppublickey, object_smimepublickey, object_imaddress,
           object_imaddress2, object_imaddress3, object_workemail FROM
           turba_objects WHERE (object_uid =
           'xxxxxxxxxxxxxxxxxxxxxxxxxxx' AND
           owner_id = 'zzzzzzzzzzzzzzzzzzz') [pid 6461 on line 319 of 
"/usr/share/pear/Horde/Db/Adapter/Mysqli.php"]
Aug  8 23:15:25 user:debug HORDE: HORDE: [turba] SQL  (0.0019s)
         SELECT object_id, owner_id, object_type, object_members, object_uid,
           object_firstname, object_lastname, object_middlenames,
           object_nameprefix, object_namesuffix, object_alias,
           object_yomifirstname, object_yomilastname, object_bday,
           object_anniversary, object_spouse, object_photo, object_phototype,
           object_homestreet, object_homepob, object_homecity,
           object_homeprovince, object_homepostalcode, object_homecountry,
           object_workstreet, object_workpob, object_workcity,
           object_workprovince, object_workpostalcode, object_workcountry,
           object_otherstreet, object_otherpob, object_othercity,
           object_otherprovince, object_otherpostalcode, object_othercountry,
           object_department, object_manager, object_assistant, object_tz,
           object_homeemail, object_homephone, object_homephone2, 
object_homefax,
           object_workphone, object_workphone2, object_cellphone,
           object_carphone, object_radiophone, object_companyphone,
           object_assistantphone, object_fax, object_pager, object_title,
           object_role, object_company, object_logo, object_logotype,
           object_category, object_notes, object_url, object_freebusyurl,
           object_pgppublickey, object_smimepublickey, object_imaddress,
           object_imaddress2, object_imaddress3, object_homeemail,
           object_workemail FROM turba_objects WHERE object_id IN
           ('wwwwwwwwwwwwwwwww') AND owner_id =
           'zzzzzzzzzzzzzzzzzzzzzzzzzzz' [pid 6461 on line 319 of 
"/usr/share/pear/Horde/Db/Adapter/Mysqli.php"]
Aug  8 23:15:25 user:debug HORDE: HORDE: [turba] SQL  (0.0028s)
         DELETE FROM turba_objects WHERE object_id = 
'wwwwwwwwwwwwwwww' [pid 6461 on line 319 of 
"/usr/share/pear/Horde/Db/Adapter/Mysqli.php"]

Saved Queries