[turba] Some contacts will not update

Michael J Rubinsky mrubinsk at horde.org
Mon Mar 4 17:49:35 UTC 2013


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.

-- 
mike

The Horde Project (www.horde.org)
mrubinsk at horde.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 6062 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.horde.org/archives/turba/attachments/20130304/7fce704e/attachment-0001.bin>


More information about the turba mailing list