[Tickets #6048] Re: cannot add ACLs to kolab's default tasklist "Aufgaben" (German)

bugs at horde.org bugs at horde.org
Wed Dec 26 15:42:36 UTC 2007


DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.

Ticket URL: http://bugs.horde.org/ticket/?id=6048
-----------------------------------------------------------------------
 Ticket             | 6048
 Updated By         | m.gabriel at das-netzwerkteam.de
 Summary            | cannot add ACLs to kolab's default tasklist "Aufgaben" (German)
 Queue              | Kolab
 Type               | Bug
 State              | Feedback
 Priority           | 2. Medium
 Owners             | 
-----------------------------------------------------------------------


m.gabriel at das-netzwerkteam.de (2007-12-26 10:42) wrote:

i have played around with it a little more.

i have replaced the original method in lib/Horde/Share.php:

    function &getShareById($cid)
    {
        if (!isset($this->_shareMap[$cid])) {
            $share = &$this->_getShareById($cid);
            if (is_a($share, 'PEAR_Error')) {
                return $share;
            }
            $share->setShareOb($this);
            $name = $share->getName();
            $this->_cache[$name] = &$share;
            $this->_shareMap[$cid] = $name;
        }
        return $this->_cache[$this->_shareMap[$cid]];
    }

by my own debug version (what it does: do not use _cache, but update
_cache):

    function &getShareById($cid)
    {
          $share = &$this->_getShareById($cid);
          if (is_a($share, 'PEAR_Error')) {
              return $share;
          }
          $share->setShareOb($this);
          $name = $share->getName();
          $this->_cache[$name] = &$share;
          $this->_shareMap[$cid] = $name;
          return $share
    }

this debug method raises the same error...

BUT!!! if i comment out one line in my this debug method, it suddenly
works (although on the first spot this does not make sense...):

    function &getShareById($cid)
    {
          $share = &$this->_getShareById($cid);
          if (is_a($share, 'PEAR_Error')) {
              return $share;
          }
          $share->setShareOb($this);
          $name = $share->getName();
          $this->_cache[$name] = &$share;
         /*
          * $this->_shareMap[$cid] = $name;
          */
          return $share
    }

and the return value of the original getShareById() method is exactly what
is stored in $this->_shareMap[$cid] ("INBOX/Aufgaben", "INBOX/Aufgaben
(PRIVAT)", etc. i.e. the corresponding share name).

is it possible that $this->_cache[$name] and $this->_shareMap[$cid] refer
to the same data structure????

weird things going on in php...

BTW: where is the _shareMap stored? datatree, php session, filesystem?

hope this helps...
mike



More information about the bugs mailing list