rendered paste body<?php
class My_Acl extends Zend_Acl {
protected static $_instance = null;
protected function _initialize()
{
$db = Zend_Db_Table::getDefaultAdapter();
$roles = $db->fetchAll("SELECT
acl_role_privilege.acl_role_id,
acl_resource.acl_resource_name,
acl_privilege.acl_privilege_name
FROM acl_role_privilege, acl_resource, acl_privilege WHERE
acl_role_privilege.acl_privilege_id = acl_privilege.acl_privilege_id AND
acl_privilege.acl_resource_id = acl_resource.acl_resource_id");
foreach ($roles as $role) {
if (!$this->has($role['acl_resource_name'])) {
$this->add(new Zend_Acl_Resource($role['acl_resource_name']));
}
if (!$this->hasRole($role['acl_role_id'])) {
$this->addRole(new Zend_Acl_Role($role['acl_role_id']));
}
}
$this->add(new Zend_Acl_Resource('error'));
$this->deny();
$this->allow(null, 'error');
foreach ($roles as $role) {
$this->allow($role['acl_role_id'], $role['acl_resource_name'], $role['acl_privilege_name']);
}
}
public static function getInstance()
{
if (null === self::$_instance) {
self::$_instance = new self();
self::$_instance->_initialize();
}
return self::$_instance;
}
}