Inject Horde_Perms object
authorMichael J. Rubinsky <mrubinsk@horde.org>
Thu, 20 May 2010 16:19:54 +0000 (12:19 -0400)
committerMichael J. Rubinsky <mrubinsk@horde.org>
Thu, 20 May 2010 16:20:40 +0000 (12:20 -0400)
framework/Core/lib/Horde/Core/Factory/Share.php
framework/Share/lib/Horde/Share.php
framework/Share/lib/Horde/Share/Object/Datatree.php
framework/Share/lib/Horde/Share/Object/Sql.php

index ddf96fb..950c759 100644 (file)
@@ -79,7 +79,7 @@ class Horde_Core_Factory_Share
                 throw new Horde_Exception((sprintf(_("\"%s\" share driver not found."), $driver)));
             }
 
-            $shares[$signature] = new $class($app);
+            $shares[$signature] = new $class($app, $this->_injector->getInstance('Horde_Perms'));
         }
 
         if (!isset($shares[$signature]) &&
index 7b4d7bf..12215d2 100644 (file)
@@ -71,13 +71,22 @@ class Horde_Share
     protected $_shareObject;
 
     /**
+     * The Horde_Perms object
+     *
+     * @var Horde_Perms
+     */
+    protected $_permsObject;
+
+    /**
      * Constructor.
      *
      * @param string $app  The application that the shares belong to.
+     * @param Horde_Perms  The permissions object
      */
-    public function __construct($app)
+    public function __construct($app, Horde_Perms $perms)
     {
         $this->_app = $app;
+        $this->_permsObject = $perms;
         $this->__wakeup();
     }
 
@@ -393,7 +402,7 @@ class Horde_Share
             $share = $this->getShare($share);
         }
 
-        return $GLOBALS['injector']->getInstance('Horde_Perms')->getPermissions($share->getPermission(), $user);
+        return $this->_permsObject->getPermissions($share->getPermission(), $user);
     }
 
     /**
@@ -407,6 +416,16 @@ class Horde_Share
     }
 
     /**
+     * Getter for Horde_Perms object
+     *
+     * @return Horde_Perms
+     */
+    public function getPermsObject()
+    {
+        return $this->_permsObject;
+    }
+
+    /**
      * Utility function to be used with uasort() for sorting arrays of
      * Horde_Share objects.
      *
index 6b21f27..d772806 100644 (file)
@@ -97,8 +97,8 @@ class Horde_Share_Object_Datatree extends Horde_Share_Object
         if ($userid && $userid == $this->datatreeObject->get('owner')) {
             return true;
         }
-        // TODO: inject
-        return $GLOBALS['injector']->getInstance('Horde_Perms')->hasPermission($this->getPermission(), $userid, $permission, $creator);
+
+        return $this->_shareOb->getPermsObject()->hasPermission($this->getPermission(), $userid, $permission, $creator);
     }
 
     /**
index 2553e3e..6301af0 100644 (file)
@@ -238,8 +238,7 @@ class Horde_Share_Object_Sql extends Horde_Share_Object
         if ($userid == $this->data['share_owner']) {
             return true;
         }
-        // @TODO: inject perms, don't use the injector here
-        return $GLOBALS['injector']->getInstance('Horde_Perms')->hasPermission($this->getPermission(), $userid, $permission, $creator);
+        return $this->_shareOb->getPermsObject()->hasPermission($this->getPermission(), $userid, $permission, $creator);
     }
 
     /**