phpgroupware-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [phpGroupWare-developers] is the db class reentrant ? (following an


From: Chris Weiss
Subject: Re: [phpGroupWare-developers] is the db class reentrant ? (following an old post of sigurd in 2005)
Date: Wed, 9 Apr 2008 10:20:01 -0500

On Wed, Apr 9, 2008 at 10:10 AM, Benoit Hamet <address@hidden> wrote:
> Hi all,
>
>  I was trying to "quickly fix" the note apps for some notices about
>  get_var, when I notice some weird thing :
>
>  Notes display only one note ...
>
>  Further investigations let me point this :
>
>  in notes/inc/class.sonotes.inc.php I got :
>
>  around line 130 :
>   while ($this->db->next_record())
>   {
>      $ngrants = $this->grants[$this->db->f('note_owner')];
>      $notes[$this->db->f('note_id')] = array
>      (
>       'note_id'       => $this->db->f('note_id'),
>       'owner_id'      => $this->db->f('note_owner'),
>       'owner'         =>
>  $GLOBALS['phpgw']->accounts->id2name($this->db->f('note_owner')),
>       'access'        => $this->db->f('note_access'),
>       'date'          =>
>  $GLOBALS['phpgw']->common->show_date($this->db->f('note_date')),
>       'cat_id'        => $this->db->f('note_category'),
>       'content'       => $this->db->f('note_content', true),
>       'grants'        => $ngrants
>      );
>   }
>
>  of course, removing the line 'owner'         =>
>  $GLOBALS['phpgw']->accounts->id2name($this->db->f('note_owner')),
>
>  solve the problem, which let me think about a reentrant problem (so a
>  new query is done using the same db object, and so next_record() is
>  totaly wrong next time ...).
>
>  I Guess we already discuss this [Yeah : search for "Is there some
>  problem using adodb?" in 2005 archives] ... but do we have an "elegant"
>  solution for this kind of problem ?
>  clone the db object in the sonotes ? (beurk)
>  perhaps better, let accounts having it's own cloned db object (little
>  better, since like that it won't hurt when using ldap as backend).
>  avoid this kind of code ? :)
>

I'd go for the latter.  if we could always lookup the name int eh db
i'd go with adding a JOIN to the first query, but if that won't work
with ldap, then having the accounts class self contained is the better
option.

however, with adodb we can make it reentrant, just that the old db
class that wraps it wasn't designed that way.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]