/**
  * show permission panel
  *
  * @param string $name
  * @param array $actions
  * @param array $config
  * @return string
  *
  * config options:
  * bool show_save_button - show save button so that stuff will be saved per ajax - default: false
  * bool add_acl_on_form_submit - should acl be submitted on form submit as value - default: false
  * bool add_user_permissions - add full permissions for the user itself if permissions are empty - default: false
  */
 public function permissionPanel($name, $actions, $config = null)
 {
     $view = new Zend_View();
     $view->name = $name;
     $view->actions = $actions;
     // get actual userid
     $session = new Zend_Session_Namespace('user');
     $view->userId = $session->id;
     if (isset($config['show_save_button']) && $config['show_save_button']) {
         $view->showSaveButton = true;
     } else {
         $view->showSaveButton = false;
     }
     if (isset($config['add_acl_on_form_submit']) && $config['add_acl_on_form_submit']) {
         $view->addAclOnFormSubmit = true;
     } else {
         $view->addAclOnFormSubmit = false;
     }
     if (isset($config['add_user_permissions']) && $config['add_user_permissions']) {
         $view->addUserPermissions = true;
     } else {
         $view->addUserPermissions = false;
     }
     // available roles
     $roles = array();
     $users = Knowledgeroot_User::getUsers();
     foreach ($users as $value) {
         $roles['U_' . $value->getId()] = $value->getLogin() . ' (U)';
     }
     $groups = Knowledgeroot_Group::getGroups();
     foreach ($groups as $value) {
         $roles['G_' . $value->getId()] = $value->getName() . ' (G)';
     }
     $view->roles = $roles;
     $acl = Knowledgeroot_Registry::get('acl');
     // active roles with permissions
     $view->permissions = $acl->getAclForResource($name);
     $view->setScriptPath(APPLICATION_PATH . '/view/scripts/');
     return $view->render('helpers/permissionpanel.phtml');
 }
Example #2
0
 /**
  * delete user or group as member of this group
  *
  * @param Knowledgeroot_User|Knowledgeroot_Group $member
  */
 public function delMember($member)
 {
     $type = '';
     $memberId = null;
     // check if member is a user
     if ($member instanceof Knowledgeroot_User) {
         $type = 'user';
         $memberId = $member->getId();
     }
     // check if member is a group
     if ($member instanceof Knowledgeroot_Group) {
         $type = 'group';
         $memberId = $member->getId();
     }
     $member = new Knowledgeroot_Db_GroupMember();
     $member->delete(array('group_id = ?' => $this->id, 'member_id = ?' => $memberId, 'member_type = ?' => $type));
 }
Example #3
0
 /**
  * show member panel
  *
  * @param string $name
  * @param Knowledgeroot_User|Knowledgeroot_Group $member
  * @param array $config
  * @return string
  */
 public function memberPanel($name, $member, $config = null)
 {
     $view = new Zend_View();
     $view->name = $name;
     // available roles
     $roles = array();
     if (!isset($config['show_users']) || isset($config['show_users']) && $config['show_users']) {
         $users = Knowledgeroot_User::getUsers();
         foreach ($users as $value) {
             $roles['U_' . $value->getId()] = $value->getLogin() . ' (U)';
         }
     }
     if (!isset($config['show_groups']) || isset($config['show_groups']) && $config['show_groups']) {
         $groups = Knowledgeroot_Group::getGroups();
         foreach ($groups as $value) {
             $roles['G_' . $value->getId()] = $value->getName() . ' (G)';
         }
     }
     $view->roles = $roles;
     $memberType = "";
     $memberId = "";
     if ($member instanceof Knowledgeroot_User) {
         $memberType = "user";
         $memberId = $member->getId();
     }
     if ($member instanceof Knowledgeroot_Group) {
         $memberType = "group";
         $memberId = $member->getId();
     }
     $members = array();
     if ($memberId != null) {
         if (isset($config['show_members']) && $config['show_members'] && $memberType == 'group') {
             $members = new Knowledgeroot_Db_GroupMember();
             $select = $members->select();
             $select->where('group_id = ?', $memberId);
         } else {
             $members = new Knowledgeroot_Db_GroupMember();
             $select = $members->select();
             $select->where('member_id = ?', $memberId);
             $select->where('member_type = ?', $memberType);
         }
         $all = $members->fetchAll($select);
         $members = array();
         foreach ($all as $value) {
             if (isset($config['show_members']) && $config['show_members'] && $memberType == 'group') {
                 if ($value['member_type'] == 'user') {
                     $user = new Knowledgeroot_User($value['member_id']);
                     $members['U_' . $user->getId()] = array('name' => $user->getLogin());
                 } else {
                     $group = new Knowledgeroot_Group($value['member_id']);
                     $members['G_' . $group->getId()] = array('name' => $group->getName());
                 }
             } else {
                 $group = new Knowledgeroot_Group($value['group_id']);
                 $members['G_' . $group->getId()] = array('name' => $group->getName());
             }
         }
     }
     $view->permissions = $members;
     $view->setScriptPath(APPLICATION_PATH . '/view/scripts/');
     return $view->render('helpers/memberpanel.phtml');
 }
Example #4
0
 public function getAclForResource($resource)
 {
     $db = Knowledgeroot_Registry::get('db');
     $acl = $db->fetchAll('SELECT * FROM ' . $db->quoteIdentifier('acl') . ' WHERE resource = ?', array($resource));
     $ret = array();
     foreach ($acl as $value) {
         if (!isset($ret[$value['role_id']]['name'])) {
             if (substr($value['role_id'], 0, 2) == 'U_') {
                 $u = new Knowledgeroot_User(substr($value['role_id'], 2));
                 $ret[$value['role_id']]['name'] = $u->getLogin();
             }
             if (substr($value['role_id'], 0, 2) == 'G_') {
                 $g = new Knowledgeroot_Group(substr($value['role_id'], 2));
                 $ret[$value['role_id']]['name'] = $g->getName();
             }
         }
         $ret[$value['role_id']]['permissions'][$value['action']] = $value['right'];
     }
     return $ret;
 }
 public function disableAction()
 {
     $id = $this->_getParam('id');
     $user = new Knowledgeroot_User($id);
     $user->setActive(false);
     $user->save();
     $this->_redirect('user/');
 }
 public function indexAction()
 {
     // get user session
     $session = new Zend_Session_Namespace('user');
     // check for non guest users
     if (!$session->valid) {
         $this->_redirect('');
     }
     // get user
     $user = new Knowledgeroot_User($session->id);
     // check for post
     if ($this->getRequest()->getMethod() == 'POST') {
         $user->setFirstName($this->_getParam('first_name'));
         $user->setLastName($this->_getParam('last_name'));
         $user->setEmail($this->_getParam('email'));
         $user->setLanguage($this->_getParam('language'));
         $user->setTimezone($this->_getParam('timezone'));
         // check for password change
         if ($this->_getParam('password') != '') {
             if ($this->_getParam('password') == $this->_getParam('password1')) {
                 //  save password
                 $user->setPassword($this->_getParam('password'));
                 // display success message
                 Knowledgeroot_Message::success("Password changed", "Your password was changed!");
             } else {
                 Knowledgeroot_Message::error("Password", "Your password could not changed!");
             }
         }
         // save user
         $user->save();
         // save settings also to session
         $session->language = $this->_getParam('language');
         $session->timezone = $this->_getParam('timezone');
         // display message
         // TODO: translate text to new language here!
         Knowledgeroot_Message::success("Settings", "Your settings were saved");
         // redirect to this page again
         $this->_redirect('settings');
     }
     // prepare view vars
     $this->view->id = $user->getId();
     $this->view->login = $user->getLogin();
     $this->view->first_name = $user->getFirstName();
     $this->view->last_name = $user->getLastName();
     $this->view->email = $user->getEmail();
     $this->view->language = $user->getLanguage();
     $this->view->timezone = $user->getTimezone();
     // get translations
     $translation = Knowledgeroot_Registry::get('translate');
     $this->view->translations = $translation->getTranslations();
     // get timezones
     $this->view->timezones = Knowledgeroot_Timezone::getTimezones();
 }