|
|
@@ -132,8 +132,8 @@ class Przypomnij {
|
|
|
, p.`L_APPOITMENT_USER`
|
|
|
, p.`L_APPOITMENT_INFO`
|
|
|
from `CRM_PROCES` as p
|
|
|
- where p.`TYPE`='PROCES_INIT'
|
|
|
- and p.`A_STATUS` in('NORMAL', 'WAITING')
|
|
|
+ where p.`A_STATUS` in('NORMAL', 'WAITING')
|
|
|
+ and p.`TYPE`='PROCES_INIT'
|
|
|
and p.`L_APPOITMENT_DATE`!=''
|
|
|
and p.`L_APPOITMENT_USER`!=''
|
|
|
{$sqlAclFltrProces}
|
|
|
@@ -333,50 +333,95 @@ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:au
|
|
|
public function getAllowedUsersList() {
|
|
|
$allowedUsers = array();
|
|
|
$db = DB::getDB();
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+ $userLogin = User::getLogin();
|
|
|
+ $usrAclGroups = User::getLdapGroupsNames();
|
|
|
+ //$usrAclGroups[] = '';// TODO: allow empty for everyone?
|
|
|
+ $sqlUsrAclGroups = "'" . implode("','", $usrAclGroups) . "'";
|
|
|
+ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sqlUsrAclGroups (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sqlUsrAclGroups);echo'</pre>';}
|
|
|
+
|
|
|
+ $tblsToSearch = array();
|
|
|
+ $tblsToSearch[] = 'IN7_MK_BAZA_DYSTRYBUCJI';
|
|
|
+ $tblsToSearch[] = 'IN7_DZIENNIK_KORESP';
|
|
|
+ $tblsToSearch[] = 'CRM_PROCES';
|
|
|
+ $tblsToSearch[] = 'CRM_LISTA_ZASOBOW';
|
|
|
+
|
|
|
$userAcl = User::getAcl();
|
|
|
- $tblAcl = $userAcl->getTableAcl(ProcesHelper::getZasobTableID('IN7_MK_BAZA_DYSTRYBUCJI'));
|
|
|
- if($tblAcl)
|
|
|
- if($tblAcl->hasFieldPerm($tblAcl->getFieldIdByName('ID'),'R')) {
|
|
|
- $sql = "select distinct `L_APPOITMENT_USER` from `IN7_MK_BAZA_DYSTRYBUCJI` where `L_APPOITMENT_USER`!='' and `A_STATUS` not in ('OFF_HARD','DELETED') ";
|
|
|
- // TODO: $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `IN7_MK_BAZA_DYSTRYBUCJI` WHERE `L_APPOITMENT_USER` != '' and ( A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or A_CLASSIFIED='' ) ";
|
|
|
- $res = $db->query($sql) or die("blad zapytania do bazy {$sql}");
|
|
|
- while ($r = $db->fetch($res)) {
|
|
|
- $allowedUsers[$r->L_APPOITMENT_USER] = true;
|
|
|
+ foreach ($tblsToSearch as $tblName) {
|
|
|
+ $tblZasobId = ProcesHelper::getZasobTableID($tblName);
|
|
|
+ if ($userAcl->hasTableAcl($tblZasobId)) {
|
|
|
+ $tblAcl = $userAcl->getTableAcl($tblZasobId);
|
|
|
+ if ($tblAcl->hasFieldPerm($tblAcl->getFieldIdByName('ID'), 'R')) {
|
|
|
+ $ds = $tblAcl->getDataSource();
|
|
|
+ $sqlAclFltr = '';
|
|
|
+ if ($ds->hasAclGroupFields()) {
|
|
|
+ $fldGroupWrite = $ds->getFieldGroupWrite();
|
|
|
+ $fldGroupRead = $ds->getFieldGroupRead();
|
|
|
+ $fldOwner = $ds->getFieldOwner();
|
|
|
+ $sqlFltr = "
|
|
|
+ t.`{$fldGroupWrite}` in({$sqlUsrAclGroups})
|
|
|
+ and t.`{$fldGroupRead}` in({$sqlUsrAclGroups})
|
|
|
+ ";
|
|
|
+ if ($fldOwner) {
|
|
|
+ $sqlFltr = "( ({$sqlFltr}) or t.`{$fldOwner}`='{$userLogin}' )";
|
|
|
+ }
|
|
|
+ $sqlAclFltr = " and {$sqlFltr}";
|
|
|
+ }
|
|
|
+ $sql = "select distinct t.`L_APPOITMENT_USER`
|
|
|
+ from `{$tblName}` t
|
|
|
+ where t.`L_APPOITMENT_USER`!=''
|
|
|
+ and t.`A_STATUS` not in ('OFF_HARD','DELETED')
|
|
|
+ {$sqlAclFltr}
|
|
|
+ ";
|
|
|
+ $res = $db->query($sql) or die("blad zapytania do bazy {$sql}");
|
|
|
+ while ($r = $db->fetch($res)) {
|
|
|
+ $allowedUsers[$r->L_APPOITMENT_USER] = true;
|
|
|
+ }
|
|
|
+ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">allowedUsers after '.$tblName.' (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): '.implode(',', array_keys($allowedUsers)).'</pre>';}
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $tblAcl = $userAcl->getTableAcl(ProcesHelper::getZasobTableID('IN7_DZIENNIK_KORESP'));
|
|
|
- if($tblAcl)
|
|
|
- if($tblAcl->hasFieldPerm($tblAcl->getFieldIdByName('ID'),'R')) {
|
|
|
- $sql = "select distinct `L_APPOITMENT_USER` from `IN7_DZIENNIK_KORESP` where `L_APPOITMENT_USER`!='' and `A_STATUS` not in ('OFF_HARD','DELETED') ";
|
|
|
- //TODO: $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `IN7_DZIENNIK_KORESP` WHERE `L_APPOITMENT_USER` != '' and ( A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or A_CLASSIFIED='' ) ; ";
|
|
|
- $res = $db->query($sql) or die("blad zapytania do bazy {$sql}");
|
|
|
- while ($r = $db->fetch($res)) {
|
|
|
- $allowedUsers[$r->L_APPOITMENT_USER] = true;
|
|
|
+ if (!empty($allowedUsers)) {
|
|
|
+ $allowedUsersFiltered = array();
|
|
|
+ $tblName = 'ADMIN_USERS';
|
|
|
+ $tblZasobId = ProcesHelper::getZasobTableID($tblName);
|
|
|
+ if (!$userAcl->hasTableAcl($tblZasobId)) {
|
|
|
+ return null;
|
|
|
}
|
|
|
- }
|
|
|
- $tblAcl = $userAcl->getTableAcl(ProcesHelper::getZasobTableID('CRM_PROCES'));
|
|
|
- if($tblAcl)
|
|
|
- if($tblAcl->hasFieldPerm($tblAcl->getFieldIdByName('ID'),'R')) {
|
|
|
- $sql = "select distinct `L_APPOITMENT_USER` from `CRM_PROCES` where `L_APPOITMENT_USER`!='' and `A_STATUS` not in ('OFF_HARD','DELETED') ";
|
|
|
- //TODO: $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `IN7_DZIENNIK_KORESP` WHERE `L_APPOITMENT_USER` != '' and ( A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or A_CLASSIFIED='' ) ; ";
|
|
|
- $res = $db->query($sql) or die("blad zapytania do bazy {$sql}");
|
|
|
- while ($r = $db->fetch($res)) {
|
|
|
- $allowedUsers[$r->L_APPOITMENT_USER] = true;
|
|
|
+ $tblAcl = $userAcl->getTableAcl($tblZasobId);
|
|
|
+ if (!$tblAcl->hasFieldPerm($tblAcl->getFieldIdByName('ID'), 'R')) {
|
|
|
+ return null;
|
|
|
}
|
|
|
- }
|
|
|
- $tblAcl = $userAcl->getTableAcl(ProcesHelper::getZasobTableID('CRM_LISTA_ZASOBOW'));
|
|
|
- if($tblAcl)
|
|
|
- if($tblAcl->hasFieldPerm($tblAcl->getFieldIdByName('ID'),'R')) {
|
|
|
- $sql = "select distinct `L_APPOITMENT_USER` from `CRM_LISTA_ZASOBOW` where `L_APPOITMENT_USER`!='' and `A_STATUS` not in ('OFF_HARD','DELETED') ";
|
|
|
- //TODO: $zap_sql = "SELECT DISTINCT `L_APPOITMENT_USER` FROM `IN7_DZIENNIK_KORESP` WHERE `L_APPOITMENT_USER` != '' and ( A_CLASSIFIED in ('".implode( "','" , $_SESSION['AUTH_LDAP_CLIENT__LDAP_USERS'][$_SESSION['ADM_ACCOUNT']])."') or A_CLASSIFIED='' ) ; ";
|
|
|
+ $ds = $tblAcl->getDataSource();
|
|
|
+ $sqlAclFltr = '';
|
|
|
+ if ($ds->hasAclGroupFields()) {
|
|
|
+ $fldGroupWrite = $ds->getFieldGroupWrite();
|
|
|
+ $fldGroupRead = $ds->getFieldGroupRead();
|
|
|
+ $sqlFltr = "
|
|
|
+ t.`{$fldGroupWrite}` in({$sqlUsrAclGroups})
|
|
|
+ and t.`{$fldGroupRead}` in({$sqlUsrAclGroups})
|
|
|
+ ";
|
|
|
+ $sqlAclFltr = " and {$sqlFltr}";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">!hasAclGroupFields tblAcl (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($tblAcl);echo'</pre>';}
|
|
|
+ }
|
|
|
+ $sqlFoundUsers = array_keys($allowedUsers);
|
|
|
+ $sqlFoundUsers = "'" . implode("','", $sqlFoundUsers) . "'";
|
|
|
+ $sql = "select t.`ADM_ACCOUNT`
|
|
|
+ from `{$tblName}` t
|
|
|
+ where t.`ADM_ACCOUNT` in({$sqlFoundUsers})
|
|
|
+ {$sqlAclFltr}
|
|
|
+ ";
|
|
|
+ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
|
|
|
$res = $db->query($sql) or die("blad zapytania do bazy {$sql}");
|
|
|
while ($r = $db->fetch($res)) {
|
|
|
- $allowedUsers[$r->L_APPOITMENT_USER] = true;
|
|
|
+ $allowedUsersFiltered[$r->ADM_ACCOUNT] = true;
|
|
|
}
|
|
|
+ $allowedUsers = $allowedUsersFiltered;
|
|
|
}
|
|
|
+ if(V::get('DBG_P', '', $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">allowedUsersFiltered (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($allowedUsersFiltered);echo'</pre>';}
|
|
|
|
|
|
ksort($allowedUsers);
|
|
|
|