[turba] Some contacts will not update

Simon Brereton simon.buongiorno at gmail.com
Tue Mar 5 08:02:12 UTC 2013


On 4 March 2013 18:49, Michael J Rubinsky <mrubinsk at horde.org> wrote:
>
> Quoting Simon Brereton <simon.buongiorno at gmail.com>:
>
>> On 4 March 2013 18:24, Michael J Rubinsky <mrubinsk at horde.org> wrote:
>>>
>>>
>>> Quoting Simon Brereton <simon.buongiorno at gmail.com>:
>>>
>>>> On 4 March 2013 17:45, Simon Brereton <simon.buongiorno at gmail.com>
>>>> wrote:
>>>>>
>>>>>
>>>>> On 4 March 2013 17:07, Michael J Rubinsky <mrubinsk at horde.org> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Quoting Simon Brereton <simon.buongiorno at gmail.com>:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> I have a few contacts that just refuse to update.  One is a few
>>>>>>> months
>>>>>>> old, one is a few years old.  Neither have any special characters or
>>>>>>> anything weird as far as I can see.  Using the web interface, if I
>>>>>>> try
>>>>>>> to add or change a field, the change is accepted, but as soon as I go
>>>>>>> back into the contact the new/edited data is not there.
>>>>>>>
>>>>>>> If I use an ActiveSync device the data is shown on the device for a
>>>>>>> while (until the next ping, I guess) and then disappears - although
>>>>>>> this can take up to 12 hours.  However, it never shows up in the
>>>>>>> backend.
>>>>>>>
>>>>>>> Any ideas?  What sort of debugging do you need?  There appears
>>>>>>> nothing
>>>>>>> relevant in the horde.log.  Nor anything that I can see in the
>>>>>>> mysql.log
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> So you are saying that using only the web interface of Turba, certain
>>>>>> contacts will not retain changes made to them? I assume from your
>>>>>> comment
>>>>>> about the mysql.log that this is a sql backed source? Do you see the
>>>>>> update
>>>>>> taking place in the mysql log? If not, make sure error reporting is
>>>>>> high
>>>>>> enough and check the web server's error log as well.
>>>>>
>>>>>
>>>>>
>>>>> Correct - this an sql backend source.
>>>>>
>>>>> A good idea to do it while watching the log..  I've removed only
>>>>> personal information from names and numbers..
>>>>>
>>>>>
>>>>>                  1170 Query     SET NAMES 'utf8'
>>>>> 130304 16:37:10  1171 Connect   horde at localhost on hordebeta
>>>>>                  1171 Query     SHOW CHARACTER SET
>>>>>                  1171 Query     SET NAMES 'utf8'
>>>>>                  1169 Query     SELECT * FROM turba_sharesng_users
>>>>> WHERE user_uid = 'simon at example.net' AND (perm_4 = 1)
>>>>>                  1171 Query     SELECT g.group_uid AS group_uid,
>>>>> g.group_name AS group_name FROM horde_groups g, horde_groups_members m
>>>>> WHERE m.user_uid = 'simon at example.net' AND g.group_uid = m.group_uid
>>>>> ORDER BY g.group_name
>>>>>                  1169 Query     SELECT DISTINCT * FROM turba_sharesng
>>>>> s  WHERE share_owner = 'simon at example.net' OR perm_creator_4 = 1 OR
>>>>> perm_default_4 = 1 ORDER BY share_id ASC
>>>>>                  1169 Query     SELECT object_id, owner_id,
>>>>> object_type, object_members, object_uid, object_firstname,
>>>>> object_lastname, object_middlenames, object_nameprefix,
>>>>> object_namesuffix, object_alias, 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_department,
>>>>> object_tz, object_email, object_workemail, object_workphone,
>>>>> object_cellphone, object_cellphone, object_homephone, object_homefax,
>>>>> 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 FROM turba_objects WHERE
>>>>> object_id IN ('IvIgSlyZnp9OhjnOtimny_A') AND owner_id =
>>>>> 'simon at example.net'
>>>>>                  1169 Query     SHOW FIELDS FROM `turba_objects`
>>>>> 130304 16:37:12  1169 Query     DELETE FROM horde_tokens WHERE
>>>>> token_timestamp < 1362328632
>>>>>                  1169 Query     SELECT token_id FROM horde_tokens
>>>>> WHERE token_address = 'MjEzLjE2OC42OC4xODY=' AND token_id =
>>>>> 'MHTKLU3oL1LErLEAbw05sPcZ25A'
>>>>>                  1169 Query     INSERT INTO horde_tokens
>>>>> (token_address, token_id, token_timestamp) VALUES
>>>>> ('MjEzLjE2OC42OC4xODY=', 'MHTKLU3oL1LErLEAbw05sPcZ25A', 1362415032)
>>>>>                  1169 Query     UPDATE turba_objects SET owner_id =
>>>>> 'simon at example.net', object_type = 'Object', object_members = NULL,
>>>>> object_uid =
>>>>> '20110930175110.-WfyEFyZnp9OhjnOth2Xy_A at webmail.example.net',
>>>>> object_firstname = 'Franz', object_lastname = 'Mustermann',
>>>>> object_middlenames = '', object_nameprefix = '', object_namesuffix =
>>>>> '', object_alias = '', object_bday = '1984-09-10', object_anniversary
>>>>> = NULL, object_spouse = '', object_photo = NULL, object_phototype =
>>>>> NULL, 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_department = '', object_tz = '',
>>>>> object_email = 'mustermann at t-online.de', object_workemail =
>>>>> 'mustermann at o2online.de', object_workphone = '', object_cellphone =
>>>>> '+4917900000', object_homephone = '+491700000000', object_homefax =
>>>>> '', object_assistantphone = '', object_fax = '', object_pager = '',
>>>>> object_title = '', object_role = '', object_company = '', object_logo
>>>>> = NULL, object_logotype = NULL, object_category = '', object_notes =
>>>>> '', object_url = '', object_freebusyurl = '', object_pgppublickey =
>>>>> '', object_smimepublickey = '', object_imaddress = '',
>>>>> object_imaddress2 = '', object_imaddress3 = '' WHERE object_id =
>>>>> 'IvIgSlyZnp9OhjnOtimny_A'
>>>>>                  1170 Query     SELECT * FROM horde_histories WHERE
>>>>> object_uid =
>>>>>
>>>>> 'turba:PUXoNFyZnp9Ohjmm32QQhvA:20110930175110.-WfyEFyZnp9OhjnOth2Xy_A at webmail.example.net'
>>>>>                  1170 Query     UPDATE horde_histories SET history_ts
>>>>> = 1362415032, history_who = 'simon at example.net', history_desc = NULL,
>>>>> history_extra = NULL WHERE history_id = '20501'
>>>>>                  1169 Quit
>>>>>
>>>>> The weird thing is the object_cellphone retains its data (it should
>>>>> have changed.  In the display, however, object_workphone has a a
>>>>> value.
>>>>
>>>>
>>>>
>>>> If I manually edit the query with the cellphone number, then it takes.
>>>>
>>>> I wondered if it might be to do with the length (it has an extra 2
>>>> digits than most cell-phone numbers), but checking in attributes.php,
>>>> there is no limit to cellphone fields.
>>>>
>>>> So, now I'm wondering if it's because I made changes and created an
>>>> attributes.local.php - for the record, what I did was:
>>>>
>>>> ✗     cp /usr/share/horde4/turba/config/attributes.php
>>>> /usr/share/horde4/turba/config/attributes.local.php
>>>> ✗     vim /usr/share/horde4/turba/config/attributes.local.php
>>>> $attributes['workEmail'] = array(
>>>>         'label' => _("Work Email"),
>>>>         'type' => 'email',
>>>>         'required' => false,
>>>>         'params' => array('allow_multi' => false, 'strip_domain' =>
>>>> false, 'link_compose' => true)
>>>> );
>>>>
>>>>
>>>> $attributes['workCellPhone'] = array(
>>>>     'label' => _("Work Mobile Phone"),
>>>>     'type' => 'cellphone',
>>>>     'required' => false
>>>> );
>>>>
>>>>
>>>>
>>>>
>>>> ✗     cp /usr/share/horde4/turba/config/backends.php
>>>> /usr/share/horde4/turba/config/backends.local.php
>>>> ✗     vim /usr/share/horde4/turba/config/backends.local.php
>>>>         'workEmail' => 'object_workemail',
>>>>         'homePhone' => 'object_homephone',
>>>>         'workPhone' => 'object_workphone',
>>>>         'cellPhone' => 'object_cellphone',
>>>>         'workCellPhone' => 'object_cellphone',
>>>
>>>
>>>
>>> You've mapped the same database field to two different UI fields.
>>
>>
>>
>> What should it be?  I understood the idea was to create another object
>> of type cellphone and and then map it to that rather than to create an
>> object_workcellphone
>
>
> You are only partially correct. You should create a new *attribute* of type
> cellphone and map that to a *new* field in the database. The way you have it
> right now, you are telling Turba that the values in both cellPhone and
> workCellPhone are to be stored in the object_cellphone field. What happens
> when those values are different, which one gets stored?
>
> Instead, you need to create an object_workcellphone (or whatever you want to
> call it) field in the database to hold the additional field.

Actually, I did that, but didn't link to it!  Thanks Mike.

Simon


More information about the turba mailing list