/**
  * Constructor
  * @param array An arry of options to oeverride the class defaults
  */
 function JAuthorization($options = NULL)
 {
     parent::gacl($options);
     // ARO value is currently the user type,
     // this changes to user id in proper implementation
     // No hierarchial inheritance so have to do that the long way
     $this->acl = array();
     // special ACl with return value to edit user
     $this->addACL('com_user', 'edit', 'users', 'super administrator', null, null, '');
     $this->addACL('com_user', 'edit', 'users', 'administrator', null, null, '');
     $this->addACL('com_user', 'edit', 'users', 'manager', null, null, '');
     // return value defines xml setup file variant
     $this->addACL('com_user', 'edit', 'users', 'author', null, null, 'author');
     $this->addACL('com_user', 'edit', 'users', 'editor', null, null, 'author');
     $this->addACL('com_user', 'edit', 'users', 'publisher', null, null, 'author');
     $this->addACL('com_user', 'edit', 'users', 'registered', null, null, 'registered');
     // backend login
     $this->addACL('login', 'administrator', 'users', 'administrator');
     $this->addACL('login', 'administrator', 'users', 'super administrator');
     $this->addACL('login', 'administrator', 'users', 'manager');
     $this->addACL('login', 'site', 'users', 'administrator');
     $this->addACL('login', 'site', 'users', 'super administrator');
     $this->addACL('login', 'site', 'users', 'manager');
     $this->addACL('login', 'site', 'users', 'registered');
     $this->addACL('login', 'site', 'users', 'author');
     $this->addACL('login', 'site', 'users', 'editor');
     $this->addACL('login', 'site', 'users', 'publisher');
     // backend menus
     $this->addACL('com_banners', 'manage', 'users', 'super administrator');
     $this->addACL('com_banners', 'manage', 'users', 'administrator');
     $this->addACL('com_banners', 'manage', 'users', 'manager');
     $this->addACL('com_checkin', 'manage', 'users', 'super administrator');
     $this->addACL('com_checkin', 'manage', 'users', 'administrator');
     $this->addACL('com_cache', 'manage', 'users', 'super administrator');
     $this->addACL('com_cache', 'manage', 'users', 'administrator');
     $this->addACL('com_settings', 'manage', 'users', 'super administrator');
     //$this->addACL( 'com_settings', 'manage', 'users', 'administrator' );
     $this->addACL('com_contacts', 'manage', 'users', 'super administrator');
     $this->addACL('com_contacts', 'manage', 'users', 'administrator');
     $this->addACL('com_contacts', 'manage', 'users', 'manager');
     $this->addACL('com_components', 'manage', 'users', 'super administrator');
     $this->addACL('com_components', 'manage', 'users', 'administrator');
     $this->addACL('com_components', 'manage', 'users', 'manager');
     // access to installers and base installer
     $this->addACL('com_installer', 'installer', 'users', 'administrator');
     $this->addACL('com_installer', 'installer', 'users', 'super administrator');
     $this->addACL('com_installer', 'component', 'users', 'administrator');
     $this->addACL('com_installer', 'component', 'users', 'super administrator');
     $this->addACL('com_installer', 'language', 'users', 'super administrator');
     $this->addACL('com_installer', 'language', 'users', 'administrator');
     $this->addACL('com_installer', 'module', 'users', 'administrator');
     $this->addACL('com_installer', 'module', 'users', 'super administrator');
     $this->addACL('com_installer', 'plugin', 'users', 'administrator');
     $this->addACL('com_installer', 'plugin', 'users', 'super administrator');
     $this->addACL('com_installer', 'template', 'users', 'super administrator');
     $this->addACL('com_installer', 'template', 'users', 'administrator');
     $this->addACL('com_languages', 'manage', 'users', 'super administrator');
     $this->addACL('com_plugins', 'manage', 'users', 'super administrator');
     $this->addACL('com_plugins', 'manage', 'users', 'administrator');
     // uncomment following to allow managers to edit modules
     //array( 'administration', 'edit', 'users', 'manager', 'modules', 'all' );
     $this->addACL('com_files', 'manage', 'users', 'super administrator');
     $this->addACL('com_files', 'manage', 'users', 'administrator');
     $this->addACL('com_files', 'manage', 'users', 'manager');
     $this->addACL('com_files', 'popup', 'users', 'super administrator');
     $this->addACL('com_files', 'popup', 'users', 'administrator');
     $this->addACL('com_files', 'popup', 'users', 'manager');
     $this->addACL('com_files', 'popup', 'users', 'registered');
     $this->addACL('com_files', 'popup', 'users', 'author');
     $this->addACL('com_files', 'popup', 'users', 'editor');
     $this->addACL('com_files', 'popup', 'users', 'publisher');
     $this->addACL('com_files', 'upload', 'users', 'super administrator');
     $this->addACL('com_files', 'upload', 'users', 'administrator');
     $this->addACL('com_files', 'upload', 'users', 'manager');
     $this->addACL('com_menus', 'manage', 'users', 'administrator');
     $this->addACL('com_menus', 'manage', 'users', 'super administrator');
     $this->addACL('com_modules', 'manage', 'users', 'super administrator');
     $this->addACL('com_modules', 'manage', 'users', 'administrator');
     $this->addACL('com_newsfeeds', 'manage', 'users', 'super administrator');
     $this->addACL('com_newsfeeds', 'manage', 'users', 'administrator');
     $this->addACL('com_newsfeeds', 'manage', 'users', 'manager');
     $this->addACL('com_templates', 'manage', 'users', 'super administrator');
     //$this->addACL( 'com_templates', 'manage', 'user', 'administrator' )
     $this->addACL('com_trash', 'manage', 'users', 'administrator');
     $this->addACL('com_trash', 'manage', 'users', 'super administrator');
     // email block users property
     $this->addACL('com_users', 'block user', 'users', 'administrator');
     $this->addACL('com_users', 'block user', 'users', 'super administrator');
     $this->addACL('com_users', 'manage', 'users', 'administrator');
     $this->addACL('com_users', 'manage', 'users', 'super administrator');
     $this->addACL('com_weblinks', 'manage', 'users', 'super administrator');
     $this->addACL('com_weblinks', 'manage', 'users', 'administrator');
     $this->addACL('com_weblinks', 'manage', 'users', 'manager');
     // email system events
     $this->addACL('com_users', 'email_events', 'users', 'administrator');
     $this->addACL('com_users', 'email_events', 'users', 'super administrator');
     $this->addACL('workflow', 'email_events', 'users', 'administrator', null, null);
     $this->addACL('workflow', 'email_events', 'users', 'super administrator', null, null);
     // actions
     $this->addACL('com_content', 'add', 'users', 'author', 'content', 'all');
     $this->addACL('com_content', 'add', 'users', 'editor', 'content', 'all');
     $this->addACL('com_content', 'add', 'users', 'publisher', 'content', 'all');
     $this->addACL('com_content', 'edit', 'users', 'author', 'content', 'own');
     $this->addACL('com_content', 'edit', 'users', 'editor', 'content', 'all');
     $this->addACL('com_content', 'edit', 'users', 'publisher', 'content', 'all');
     $this->addACL('com_content', 'publish', 'users', 'publisher', 'content', 'all');
     $this->addACL('com_content', 'add', 'users', 'manager', 'content', 'all');
     $this->addACL('com_content', 'edit', 'users', 'manager', 'content', 'all');
     $this->addACL('com_content', 'publish', 'users', 'manager', 'content', 'all');
     $this->addACL('com_content', 'add', 'users', 'administrator', 'content', 'all');
     $this->addACL('com_content', 'edit', 'users', 'administrator', 'content', 'all');
     $this->addACL('com_content', 'publish', 'users', 'administrator', 'content', 'all');
     $this->addACL('com_content', 'add', 'users', 'super administrator', 'content', 'all');
     $this->addACL('com_content', 'edit', 'users', 'super administrator', 'content', 'all');
     $this->addACL('com_content', 'publish', 'users', 'super administrator', 'content', 'all');
 }