Merge branch 'develop' into seeddms-5.1.x

This commit is contained in:
Uwe Steinmann 2016-04-12 15:27:51 +02:00
commit 1a35ef9cc3
10 changed files with 55 additions and 10 deletions

View File

@ -44,6 +44,13 @@ class SeedDMS_Core_Role { /* {{{ */
*/
var $_role;
/**
* @var array list of status without access
*
* @access protected
*/
var $_noaccess;
/**
* @var object reference to the dms instance this user belongs to
*
@ -55,10 +62,11 @@ class SeedDMS_Core_Role { /* {{{ */
const role_admin = '1';
const role_guest = '2';
function SeedDMS_Core_Role($id, $name, $role) { /* {{{ */
function SeedDMS_Core_Role($id, $name, $role, $noaccess=array()) { /* {{{ */
$this->_id = $id;
$this->_name = $name;
$this->_role = $role;
$this->_noaccess = $noaccess;
$this->_dms = $role;
} /* }}} */
@ -91,7 +99,7 @@ class SeedDMS_Core_Role { /* {{{ */
$resArr = $resArr[0];
$role = new self($resArr["id"], $resArr["name"], $resArr["role"]);
$role = new self($resArr["id"], $resArr["name"], $resArr["role"], $resArr['noaccess'] ? explode(',', $resArr['noaccess']) : array());
$role->setDMS($dms);
return $role;
} /* }}} */
@ -111,7 +119,7 @@ class SeedDMS_Core_Role { /* {{{ */
$roles = array();
for ($i = 0; $i < count($resArr); $i++) {
$role = new self($resArr[$i]["id"], $resArr[$i]["name"], $resArr[$i]["role"]);
$role = new self($resArr[$i]["id"], $resArr[$i]["name"], $resArr[$i]["role"], explode(',', $resArr[$i]['noaccess']));
$role->setDMS($dms);
$roles[$i] = $role;
}
@ -156,6 +164,19 @@ class SeedDMS_Core_Role { /* {{{ */
return true;
} /* }}} */
function getNoAccess() { return $this->_noaccess; }
function setNoAccess($noaccess) { /* {{{ */
$db = $this->_dms->getDB();
$queryStr = "UPDATE tblRoles SET noaccess = " . $db->qstr(implode(',',$noaccess)) . " WHERE id = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
$this->_noaccess = $noaccess;
return true;
} /* }}} */
/**
* Delete role
*

View File

@ -1,7 +1,7 @@
<?php
$EXT_CONF['example'] = array(
'title' => 'Example Extension',
'description' => 'This sample extension demonstrate the use of various hooks',
'description' => 'This sample extension demonstrates the use of various hooks',
'disable' => true,
'version' => '1.0.0',
'releasedate' => '2013-05-03',

View File

@ -92,6 +92,8 @@ $theme = $resArr["theme"];
$lang = $resArr["language"];
$dms->setUser($user);
$role = $user->getRole();
$dms->noReadForStatus = $role->getNoAccess();
$notifier = new SeedDMS_NotificationService();

View File

@ -54,6 +54,7 @@ CREATE TABLE `tblRoles` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
`role` smallint(1) NOT NULL default '0',
`noaccess` varchar(30) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

View File

@ -51,6 +51,7 @@ CREATE TABLE `tblRoles` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`name` varchar(50) default NULL,
`role` INTEGER NOT NULL default '0',
`noaccess` varchar(30) NOT NULL default '',
UNIQUE (`name`)
) ;

View File

@ -77,6 +77,7 @@ CREATE TABLE `tblRoles` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`name` varchar(50) default NULL,
`role` INTEGER NOT NULL default '0',
`noaccess` varchar(30) NOT NULL default '',
UNIQUE (`name`)
);

View File

@ -98,6 +98,7 @@ CREATE TABLE `tblRoles` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
`role` smallint(1) NOT NULL default '0',
`noaccess` varchar(30) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

View File

@ -116,11 +116,13 @@ else if ($action == "editrole") {
$name = $_POST["name"];
$role = preg_replace('/[^0-2]+/', '', $_POST["role"]);
$noaccess = isset($_POST['noaccess']) ? $_POST['noaccess'] : null;
if ($editedRole->getName() != $name)
$editedRole->setName($name);
if ($editedRole->getRole() != $role)
$editedRole->setRole($role);
$editedRole->setNoAccess($noaccess);
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_edit_role')));
add_log_line(".php&action=editrole&roleid=".$roleid);

View File

@ -143,6 +143,7 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe
foreach($hits as $hit) {
if($tmp = $dms->getDocument($hit['document_id'])) {
if($tmp->getAccessMode($user) >= M_READ) {
if($tmp->getLatestContent()) {
$tmp->verifyLastestContentExpriry();
$entries[] = $tmp;
$dcount++;
@ -150,6 +151,7 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe
}
}
}
}
$limit = 20;
if($pageNumber != 'all' && count($entries) > $limit) {
$totalPages = (int) (count($entries)/$limit);
@ -383,12 +385,14 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe
if($resArr['docs']) {
foreach ($resArr['docs'] as $entry) {
if ($entry->getAccessMode($user) >= M_READ) {
if($entry->getLatestContent()) {
$entry->verifyLastestContentExpriry();
$entries[] = $entry;
$dcount++;
}
}
}
}
if(isset($_GET['export']) && $_GET['export']) {
include("../inc/inc.ClassDownloadMgr.php");
$downmgr = new SeedDMS_Download_Mgr();

View File

@ -149,6 +149,18 @@ $(document).ready( function() {
<td><?php printMLText("role_type");?>:</td>
<td><select name="role"><option value="<?php echo SeedDMS_Core_Role::role_user ?>"><?php printMLText("role_user"); ?></option><option value="<?php echo SeedDMS_Core_Role::role_admin ?>" <?php if($currRole && $currRole->getRole() == SeedDMS_Core_Role::role_admin) echo "selected"; ?>><?php printMLText("role_admin"); ?></option><option value="<?php echo SeedDMS_Core_Role::role_guest ?>" <?php if($currRole && $currRole->getRole() == SeedDMS_Core_Role::role_guest) echo "selected"; ?>><?php printMLText("role_guest"); ?></option></select></td>
</tr>
<?php
if($currRole && $currRole->getRole() == SeedDMS_Core_Role::role_user) {
echo "<tr>";
echo "<td>".getMLText('restrict_access')."</td>";
echo "<td>";
foreach(array(S_DRAFT_REV, S_DRAFT_APP, S_IN_WORKFLOW, S_REJECTED, S_RELEASED, S_IN_REVISION, S_DRAFT, S_OBSOLETE) as $status) {
echo "<input type=\"checkbox\" name=\"noaccess[]\" value=\"".$status."\" ".(in_array($status, $currRole->getNoAccess()) ? "checked" : "")."> ".getOverallStatusText($status)."<br />";
}
echo "</td>";
echo "</tr>";
}
?>
<tr>
<td></td>
<td><button type="submit" class="btn"><i class="icon-save"></i> <?php printMLText($currRole ? "save" : "add_role")?></button></td>