Beispiel #1
0
    /**
     * Create a new resource and optionally privileges, menu item relationships and plugin dependency
     * @param $resourceName - unique identifier or resource key
     * @param array|null $privileges - optionally array [a,b,c] of new privileges
     * @param null $menuItemName - optionally s_core_menu.name item to link to this resource
     * @param null $pluginID - optionally pluginID that implements this resource
     * @throws Enlight_Exception
     */
    public function createResource($resourceName,array $privileges = null,$menuItemName = null, $pluginID = null)
    {
        // Check if resource already exists
        if (!$this->hasResourceInDatabase($resourceName)) {

            $resource = new \Shopware\Models\User\Resource();
            $resource->setName($resourceName);
            $resource->setPluginId($pluginID);

            Shopware()->Models()->persist($resource);
            Shopware()->Models()->flush();

            if (!empty($privileges)) {
                foreach ($privileges as $privilege) {
                    $this->createPrivilege($resource->getId(), $privilege);
                }
            }
            if (!empty($menuItemName)) {
                $this->databaseObject->query("UPDATE s_core_menu SET resourceID = ? WHERE name = ?",array($resource->getId(),$menuItemName));
            }
        } else {
            throw new Enlight_Exception("Resource $resourceName already exists");
        }
    }
 private function createAclResource()
 {
     // If exists: find existing SwagImportExport resource
     $pluginId = $this->db->fetchRow('SELECT pluginID FROM s_core_acl_resources WHERE name = ? ', ["swagimportexport"]);
     $pluginId = isset($pluginId['pluginID']) ? $pluginId['pluginID'] : null;
     if ($pluginId) {
         // prevent creation of new acl resource
         return;
     }
     $resource = new \Shopware\Models\User\Resource();
     $resource->setName('swagimportexport');
     $resource->setPluginId($this->getId());
     foreach (['export', 'import', 'profile', 'read'] as $action) {
         $privilege = new \Shopware\Models\User\Privilege();
         $privilege->setResource($resource);
         $privilege->setName($action);
         $this->em->persist($privilege);
     }
     $this->em->persist($resource);
     $this->em->flush();
 }