[dev] Share locking

Chuck Hagenbuch chuck at horde.org
Thu Oct 23 18:20:30 UTC 2008


Quoting Alfonso Marí­n Marí­n <almarin at um.es>:

> As a previous step to start with CalDAV implementation, it is  
> necessary to implement Kronolith locking capabilities, to have a way  
> to lock calendars and/or events. I discussed with Jan an Ben the  
> best way to do it and we come to the conclusion that share library  
> would be a nice place to implement it to don't duplicate effort,  
> because others application could use it.

Sounds good to me.

> I have done it and i would like to know your opinion. I attach the  
> Horde_Share class modification and the Kronolith's api modification  
> to expose locking capabilities to other applications/entities.

Looks generally good. I would remove "share" from the names of methods  
that are on the share class, and the patch for kronolith/lib/api.php  
repeats _kronolith_unlock instead of implementing  
_kronolith_checklocks. And _unlock doesn't seem to use its parameters  
correctly. Oh, and there's no permissions checking.

> Some things to comment:
>  - I have implemented the methods in Horde_Share. I had some doubts  
> if it would be better in Horde_Share_Object.

I think that would be better; most individual actions are on the share  
objects now.

>  - A lock can be placed for an entire share or for an item_uid  
> associated to it.
>  - For share locks i use the $_app var as the scope and share_id as  
> the principal
>  - For item locks, i use the $_app:share_id as the scope and  
> item_uid as  the principal. to give to a share a way to know which  
> associated items are locked.
>  - It is not necessary at all use $_app information, but i thought  
> that would be good idea to have that information somewhere in the  
> lock information.

I agree.

Thanks,
-chuck


More information about the dev mailing list