00001 <?php
00002
00003 lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
00004 lt_include( PLOG_CLASS_PATH."class/view/admin/admintemplatedview.class.php" );
00005 lt_include( PLOG_CLASS_PATH."class/view/admin/adminpermissionslistview.class.php" );
00006 lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
00007 lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
00008 lt_include( PLOG_CLASS_PATH."class/dao/permissions.class.php" );
00009
00016 class AdminAddPermissionAction extends AdminAction
00017 {
00018 function AdminAddPermissionAction( $actionInfo, $request )
00019 {
00020 $this->AdminAction( $actionInfo, $request );
00021
00022
00023 $this->registerFieldValidator( "permissionName", new StringValidator());
00024 $this->registerFieldValidator( "permissionDescription", new StringValidator());
00025 $this->registerFieldValidator( "corePermission", new IntegerValidator(), true );
00026 $this->registerFieldValidator( "adminOnlyPermission", new IntegerValidator(), true );
00027
00028 $errorView = new AdminTemplatedView( $this->_blogInfo, "newpermission" );
00029 $errorView->setErrorMessage( $this->_locale->tr("error_adding_permission" ));
00030 $this->setValidationErrorView( $errorView );
00031
00032 $this->requireAdminPermission( "add_permission" );
00033 }
00034
00035 function perform()
00036 {
00037
00038 $perm = new Permission(
00039 $this->_request->getValue( "permissionName"),
00040 $this->_request->getValue( "permissionDescription" )
00041 );
00042 if( $this->_request->getValue( "corePermission" ) == 1 )
00043 $perm->setCorePermission( true );
00044 if( $this->_request->getValue( "adminOnlyPermission" ) == 1 )
00045 $perm->setAdminOnlyPermission( true );
00046
00047 $perms = new Permissions();
00048 $this->notifyEvent( EVENT_PRE_PERMISSION_ADD, Array( "permission" => &$perm ));
00049 if( $perms->addPermission( $perm )) {
00050 $this->notifyEvent( EVENT_POST_PERMISSION_ADD, Array( "permission" => &$perm ));
00051 if( $this->_userInfo->hasPermissionByName( "view_permissions", 0 ))
00052 $this->_view = new AdminPermissionsListView( $this->_blogInfo );
00053 else
00054 $this->_view = new AdminTemplatedView( $this->_blogInfo, "newpermission" );
00055 $this->_view->setSuccessMessage( $this->_locale->tr("permission_added_ok" ));
00056 $this->setCommonData();
00057 }
00058 else {
00059 $this->_view->setErrorMessage( $this->_locale->tr("error_adding_permission" ));
00060 $this->_view->setError( true );
00061 $this->setCommonData( true );
00062 }
00063 }
00064 }
00065 ?>