356 lines
10 KiB
PHP
Executable File
356 lines
10 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* upgrade.php
|
|
*
|
|
* ProcessMaker Open Source Edition
|
|
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
|
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
|
*
|
|
*/
|
|
|
|
$REQUEST = (isset($_GET['request']))?$_GET['request']:$_POST['request'];
|
|
|
|
switch ($REQUEST) {
|
|
|
|
case 'newRole':
|
|
$G_PUBLISH = new Publisher();
|
|
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'roles/roles_New', '', '');
|
|
G::RenderPage('publish', 'raw');
|
|
break;
|
|
|
|
case 'saveNewRole':
|
|
$newid = md5($_POST['code'].date("d-M-Y_H:i:s"));
|
|
$aData['ROL_UID'] = $newid;
|
|
//$aData['ROL_PARENT'] = $_POST['parent'];
|
|
$aData['ROL_SYSTEM'] = '00000000000000000000000000000002';
|
|
$aData['ROL_CODE'] = trim($_POST['code']);
|
|
$aData['ROL_NAME'] = $_POST['name'];
|
|
$aData['ROL_CREATE_DATE'] = date("Y-M-d H:i:s");
|
|
$aData['ROL_UPDATE_DATE'] = date("Y-M-d H:i:s");
|
|
$aData['ROL_STATUS'] = $_POST['status'];
|
|
$oCriteria = $RBAC->createRole($aData);
|
|
echo '{success: true}';
|
|
break;
|
|
|
|
case 'editRole':
|
|
|
|
$ROL_UID = $_GET['ROL_UID'];
|
|
$aFields = $RBAC->loadById($ROL_UID);
|
|
|
|
$G_PUBLISH = new Publisher();
|
|
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'roles/roles_Edit', '', $aFields);
|
|
G::RenderPage('publish', 'raw');
|
|
break;
|
|
|
|
case 'updateRole':
|
|
|
|
$aData['ROL_UID'] = $_POST['rol_uid'];
|
|
//$aData['ROL_PARENT'] = $_POST['parent'];
|
|
$aData['ROL_CODE'] = trim($_POST['code']);
|
|
$aData['ROL_NAME'] = $_POST['name'];
|
|
$aData['ROL_UPDATE_DATE'] = date("Y-M-d H:i:s");
|
|
$aData['ROL_STATUS'] = $_POST['status'];
|
|
$oCriteria = $RBAC->updateRole($aData);
|
|
echo '{success: true}';
|
|
break;
|
|
|
|
case 'show':
|
|
G::LoadClass('ArrayPeer');
|
|
$aRoles = $RBAC->getAllRoles();
|
|
|
|
$fields = Array(
|
|
'ROL_UID'=>'char',
|
|
'ROL_PARENT'=>'char',
|
|
'ROL_SYSTEM'=>'char',
|
|
'ROL_CREATE_DATE'=>'char',
|
|
'ROL_UPDATE_DATE'=>'char',
|
|
'ROL_STATUS'=>'char'
|
|
);
|
|
|
|
$rows = array_merge(Array($fields), $aRoles);
|
|
|
|
global $_DBArray;
|
|
$_DBArray['virtual_roles'] = $rows;
|
|
$oCriteria = new Criteria('dbarray');
|
|
$oCriteria->setDBArrayTable('virtual_roles');
|
|
|
|
$G_PUBLISH = new Publisher;
|
|
$G_PUBLISH->AddContent('propeltable', 'paged-table', 'roles/roles_List', $oCriteria);
|
|
G::RenderPage('publish', 'raw');
|
|
break;
|
|
|
|
case 'deleteRole':
|
|
$oCriteria = $RBAC->removeRole($_POST['ROL_UID']);
|
|
break;
|
|
|
|
case 'canDeleteRole':
|
|
|
|
if($RBAC->numUsersWithRole($_POST['ROL_UID']) == 0){
|
|
echo 'true';
|
|
} else {
|
|
echo 'false';
|
|
}
|
|
|
|
break;
|
|
|
|
case 'verifyNewRole':
|
|
$response = ($RBAC->verifyNewRole($_POST['code']))?'true':'false';
|
|
print($response);
|
|
break;
|
|
|
|
case 'updateDataRole':
|
|
require_once 'classes/model/om/BaseRoles.php';
|
|
require_once 'classes/model/Content.php';
|
|
$oCriteria = new Criteria('rbac');
|
|
$oCriteria->addSelectColumn(RolesPeer::ROL_UID);
|
|
$oCriteria->addSelectColumn(RolesPeer::ROL_PARENT);
|
|
$oCriteria->addSelectColumn(RolesPeer::ROL_SYSTEM);
|
|
$oCriteria->addSelectColumn(RolesPeer::ROL_CODE);
|
|
$oCriteria->addSelectColumn(RolesPeer::ROL_CREATE_DATE);
|
|
$oCriteria->addSelectColumn(RolesPeer::ROL_UPDATE_DATE);
|
|
$oCriteria->addSelectColumn(RolesPeer::ROL_STATUS);
|
|
$oCriteria->add(RolesPeer::ROL_CODE, $_GET['code']);
|
|
|
|
$result = RolesPeer::doSelectRS($oCriteria);
|
|
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
$result->next();
|
|
$row = $result->getRow();
|
|
|
|
$oCriteria1 = new Criteria('workflow');
|
|
$oCriteria1->add(ContentPeer::CON_CATEGORY, 'ROL_NAME');
|
|
$oCriteria1->add(ContentPeer::CON_ID, $row['ROL_UID']);
|
|
$oCriteria1->add(ContentPeer::CON_LANG, SYS_LANG);
|
|
$oDataset1 = ContentPeer::doSelectRS($oCriteria1);
|
|
$oDataset1->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
$oDataset1->next();
|
|
$aRow1 = $oDataset1->getRow();
|
|
$row['ROL_NAME'] = $aRow1['CON_VALUE'];
|
|
$row['ROL_UPDATE_DATE'] = date("Y-M-d H:i:s");
|
|
|
|
$RBAC->updateRole($row);
|
|
//$response = ($RBAC->verifyNewRole($_GET['code']))?'true':'false';
|
|
|
|
break;
|
|
|
|
case 'usersIntoRole':
|
|
|
|
$_GET['ROL_UID'] = (isset($_GET['ROL_UID']))?$_GET['ROL_UID']:$_POST['ROL_UID'];
|
|
$G_PUBLISH = new Publisher;
|
|
$G_PUBLISH->AddContent('view', 'roles/roles_Tree' );
|
|
G::RenderPage('publish', 'raw');
|
|
break;
|
|
|
|
|
|
|
|
case 'deleteUserRole':
|
|
$USR_UID = $_POST['USR_UID'];
|
|
$ROL_UID = $_POST['ROL_UID'];
|
|
$RBAC->deleteUserRole($ROL_UID, $USR_UID);
|
|
|
|
$_GET['ROL_UID'] = $ROL_UID;
|
|
$G_PUBLISH = new Publisher;
|
|
$G_PUBLISH->AddContent('view', 'roles/roles_Tree' );
|
|
G::RenderPage('publish', 'raw');
|
|
break;
|
|
|
|
case 'showUsers':
|
|
$ROL_UID = $_POST['ROL_UID'];
|
|
$_GET['ROL_UID'] = $ROL_UID;
|
|
$G_PUBLISH = new Publisher;
|
|
$G_PUBLISH->AddContent('view', 'roles/roles_AssignRole' );
|
|
G::RenderPage('publish', 'raw');
|
|
break;
|
|
|
|
case 'showPermissions':
|
|
$ROL_UID = $_POST['ROL_UID'];
|
|
$_GET['ROL_UID'] = $ROL_UID;
|
|
$G_PUBLISH = new Publisher;
|
|
$G_PUBLISH->AddContent('view', 'roles/roles_AssignPermissions' );
|
|
G::RenderPage('publish', 'raw');
|
|
break;
|
|
|
|
case 'assignUserToRole':
|
|
|
|
$ROL_UID = $_POST['ROL_UID'];
|
|
$aUserIuds = explode(",",$_POST['aUsers']);
|
|
foreach($aUserIuds as $key=>$val){
|
|
$sData['USR_UID'] = $val;
|
|
$sData['ROL_UID'] = $ROL_UID;
|
|
$RBAC->assignUserToRole($sData);
|
|
}
|
|
|
|
// $_GET['ROL_UID'] = $ROL_UID;
|
|
// $G_PUBLISH = new Publisher;
|
|
// $G_PUBLISH->AddContent('view', 'roles/roles_Tree' );
|
|
// G::RenderPage('publish', 'raw');
|
|
break;
|
|
|
|
case 'assignPermissionToRole':
|
|
$USR_UID = $_POST['PER_UID'];
|
|
$ROL_UID = $_POST['ROL_UID'];
|
|
$sData['PER_UID'] = $USR_UID;
|
|
$sData['ROL_UID'] = $ROL_UID;
|
|
$RBAC->assignPermissionRole($sData);
|
|
|
|
// $_GET['ROL_UID'] = $ROL_UID;
|
|
// $G_PUBLISH = new Publisher;
|
|
// $G_PUBLISH->AddContent('view', 'roles/roles_permissionsTree' );
|
|
// G::RenderPage('publish', 'raw');
|
|
break;
|
|
|
|
case 'viewPermitions':
|
|
|
|
$_GET['ROL_UID'] = (isset($_GET['ROL_UID']))?$_GET['ROL_UID']:$_POST['ROL_UID'];
|
|
$G_PUBLISH = new Publisher;
|
|
$G_PUBLISH->AddContent('view', 'roles/roles_permissionsTree' );
|
|
G::RenderPage('publish', 'raw');
|
|
break;
|
|
|
|
case 'deletePermissionRole':
|
|
$PER_UID = $_POST['PER_UID'];
|
|
$ROL_UID = $_POST['ROL_UID'];
|
|
$RBAC->deletePermissionRole($ROL_UID, $PER_UID);
|
|
|
|
$_GET['ROL_UID'] = $ROL_UID;
|
|
$G_PUBLISH = new Publisher;
|
|
$G_PUBLISH->AddContent('view', 'roles/roles_permissionsTree');
|
|
G::RenderPage('publish', 'raw');
|
|
break;
|
|
|
|
case 'assignPermissionToRoleMultiple':
|
|
$USR_UID = $_POST['PER_UID'];
|
|
$ROL_UID = $_POST['ROL_UID'];
|
|
$arrPer = explode(',',$USR_UID);
|
|
foreach ($arrPer as $PER_UID){
|
|
unset($sData);
|
|
$sData['PER_UID'] = $PER_UID;
|
|
$sData['ROL_UID'] = $ROL_UID;
|
|
$RBAC->assignPermissionRole($sData);
|
|
}
|
|
break;
|
|
|
|
case 'deletePermissionToRoleMultiple':
|
|
$USR_UID = $_POST['PER_UID'];
|
|
$ROL_UID = $_POST['ROL_UID'];
|
|
$arrPer = explode(',',$USR_UID);
|
|
foreach ($arrPer as $PER_UID){
|
|
$RBAC->deletePermissionRole($ROL_UID, $PER_UID);
|
|
}
|
|
break;
|
|
case 'deleteUserRoleMultiple':
|
|
$USR_UID = $_POST['USR_UID'];
|
|
$ROL_UID = $_POST['ROL_UID'];
|
|
$arrUsers = explode(',',$USR_UID);
|
|
foreach ($arrUsers as $aUID){
|
|
$RBAC->deleteUserRole($ROL_UID, $aUID);
|
|
}
|
|
break;
|
|
case 'rolesList':
|
|
require_once (PATH_RBAC . "model/RolesPeer.php");
|
|
require_once ("classes/model/Content.php");
|
|
G::LoadClass('configuration');
|
|
$co = new Configurations();
|
|
$config = $co->getConfiguration('rolesList', 'pageSize','',$_SESSION['USER_LOGGED']);
|
|
$limit_size = isset($config['pageSize']) ? $config['pageSize'] : 20;
|
|
|
|
$start = isset($_POST['start']) ? $_POST['start'] : 0;
|
|
$limit = isset($_POST['limit']) ? $_POST['limit'] : $limit_size;
|
|
$filter = isset($_REQUEST['textFilter'])? $_REQUEST['textFilter'] : '';
|
|
|
|
|
|
global $RBAC;
|
|
$Criterias = $RBAC->getAllRolesFilter($start,$limit,$filter);
|
|
|
|
$rs = RolesPeer::DoSelectRs($Criterias['LIST']);
|
|
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
|
|
$content = new Content();
|
|
$rNames = $content->getAllContentsByRole();
|
|
$aUsers = $RBAC->getAllUsersByRole();
|
|
|
|
$aRows = Array();
|
|
while($rs->next()){
|
|
$aRows[] = $rs->getRow();
|
|
$index = sizeof($aRows)-1;
|
|
$aRows[$index]['ROL_NAME'] = isset($rNames[$aRows[$index]['ROL_UID']])? $rNames[$aRows[$index]['ROL_UID']] : '';
|
|
$aRows[$index]['TOTAL_USERS'] = isset($aUsers[$aRows[$index]['ROL_UID']])? $aUsers[$aRows[$index]['ROL_UID']] : 0;
|
|
}
|
|
|
|
$oData = RolesPeer::doSelectRS($Criterias['COUNTER']);
|
|
$oData->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
$oData->next();
|
|
$row = $oData->getRow();
|
|
$total_roles = $row['CNT'];
|
|
|
|
echo '{roles: '.G::json_encode($aRows).', total_roles: '.$total_roles.'}';
|
|
break;
|
|
case 'updatePageSize':
|
|
G::LoadClass('configuration');
|
|
$c = new Configurations();
|
|
$arr['pageSize'] = $_REQUEST['size'];
|
|
$arr['dateSave'] = date('Y-m-d H:i:s');
|
|
$config = Array();
|
|
$config[] = $arr;
|
|
$c->aConfig = $config;
|
|
$c->saveConfig('rolesList', 'pageSize','',$_SESSION['USER_LOGGED']);
|
|
echo '{success: true}';
|
|
break;
|
|
case 'checkRoleCode':
|
|
$rol_code = $_POST['ROL_CODE'];
|
|
$rol_uid = isset($_POST['ROL_UID'])? $_POST['ROL_UID']: '';
|
|
$oCriteria = new Criteria('rbac');
|
|
$oCriteria->addSelectColumn(RolesPeer::ROL_UID);
|
|
$oCriteria->add(RolesPeer::ROL_CODE, $rol_code);
|
|
if ($rol_uid !=''){
|
|
$oCriteria->add(RolesPeer::ROL_UID, $rol_uid, Criteria::NOT_EQUAL);
|
|
}
|
|
$oDataset = RolesPeer::doSelectRS($oCriteria);
|
|
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
if ($oDataset->next()){
|
|
$response = 'false';
|
|
}else{
|
|
$response = 'true';
|
|
}
|
|
echo '{success:'.$response.'}';
|
|
break;
|
|
|
|
default: echo 'default';
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|