예제 #1
0
 public function addAction()
 {
     SxCms_Acl::requireAcl('group', 'group.add');
     $group = new SxCms_Group();
     if ($this->getRequest()->isPost()) {
         $group->setName($this->_getParam('name'))->setIdentifier($this->_getParam('identifier'));
         $acl = $group->getAcl();
         $acl->addRole(new Zend_Acl_Role($group->getName()));
         foreach ($this->_getParam('acl') as $resourceId => $priveleges) {
             if (!$acl->has($resourceId)) {
                 $acl->add(new Zend_Acl_Resource($resourceId));
             }
             $acl->allow($group->getName(), $resourceId, $priveleges);
         }
         $group->setAcl($acl);
         $validator = new SxCms_Group_BaseValidator();
         if ($validator->validate($group)) {
             $mapper = new SxCms_Group_DataMapper();
             $mapper->save($group);
             $flashMessenger = $this->_helper->getHelper('FlashMessenger');
             $flashMessenger->addMessage($this->admin_tmx->_('usergroupsaved'));
             $this->_helper->redirector->gotoSimple('index', 'group');
         }
     }
     $xml = simplexml_load_file(APPLICATION_PATH . '/var/acl-resources.xml');
     $this->view->acl = $xml;
     $this->view->group = $group;
     $this->view->messages = Sanmax_MessageStack::getInstance('SxCms_Group');
 }
예제 #2
0
 public function save(SxCms_Group $group)
 {
     $db = Zend_Registry::get('db');
     $data = array('identifier' => $group->getIdentifier(), 'name' => $group->getName());
     file_put_contents(APPLICATION_PATH . '/var/acl.php', serialize($group->getAcl()));
     if ($group->getId()) {
         $data['date_updated'] = new Zend_Db_Expr('CURDATE()');
         $db->update('Group', $data, 'group_id = ' . $group->getId());
         return true;
     }
     $data['date_created'] = new Zend_Db_Expr('CURDATE()');
     $db->insert('Group', $data);
     $group->setId($db->lastInsertId());
     return true;
 }