Files
icehrm/src/data.php
Thilina Hasantha 6fd9ba20c8 Release note v15.3
------------------
### Fixes
 * Fix issue: classes should be loaded even the module is disabled
 * Deleting the only Admin user is not allowed
 * Fixes for handling non UTF-8
 * Fix for non-mandatory select boxes are shown as mandatory
2016-04-15 15:53:14 +05:30

158 lines
5.1 KiB
PHP

<?php
define('CLIENT_PATH',dirname(__FILE__));
include ("config.base.php");
include ("include.common.php");
$modulePath = SessionUtils::getSessionObject("modulePath");
if(!defined('MODULE_PATH')){
define('MODULE_PATH',$modulePath);
}
include("server.includes.inc.php");
if(empty($user)){
$ret['status'] = "ERROR";
echo json_encode($ret);
exit();
}
$_REQUEST['sm'] = BaseService::getInstance()->fixJSON($_REQUEST['sm']);
$_REQUEST['cl'] = BaseService::getInstance()->fixJSON($_REQUEST['cl']);
$_REQUEST['ft'] = BaseService::getInstance()->fixJSON($_REQUEST['ft']);
$columns = json_decode($_REQUEST['cl'],true);
$columns[]="id";
$table = $_REQUEST['t'];
$obj = new $table();
$sLimit = "";
if ( isset( $_REQUEST['iDisplayStart'] ) && $_REQUEST['iDisplayLength'] != '-1' ){
$sLimit = " LIMIT ".intval( $_REQUEST['iDisplayStart'] ).", ".intval( $_REQUEST['iDisplayLength'] );
}
$isSubOrdinates = false;
if(isset($_REQUEST['type']) && $_REQUEST['type']="sub"){
$isSubOrdinates = true;
}
$skipProfileRestriction = false;
if(isset($_REQUEST['skip']) && $_REQUEST['type']="1"){
$skipProfileRestriction = true;
}
$sortData = BaseService::getInstance()->getSortingData($_REQUEST);
$data = BaseService::getInstance()->getData($_REQUEST['t'],$_REQUEST['sm'],$_REQUEST['ft'],$_REQUEST['ob'],$sLimit, $_REQUEST['cl'], $_REQUEST['sSearch'],$isSubOrdinates,$skipProfileRestriction,$sortData);
//Get Total row count
$totalRows = 0;
$countFilterQuery = "";
$countFilterQueryData = array();
if(!empty($_REQUEST['ft'])){
$filter = json_decode($_REQUEST['ft']);
if(!empty($filter)){
LogManager::getInstance()->debug("Filter:".print_r($filter,true));
if(method_exists($obj,'getCustomFilterQuery')){
$response = $obj->getCustomFilterQuery($filter);
$countFilterQuery = $response[0];
$countFilterQueryData = $response[1];
}else{
$defaultFilterResp = BaseService::getInstance()->buildDefaultFilterQuery($filter);
$countFilterQuery = $defaultFilterResp[0];
$countFilterQueryData = $defaultFilterResp[1];
}
}
}
LogManager::getInstance()->debug("Row Count Filter Query:".$countFilterQuery);
LogManager::getInstance()->debug("Row Count Filter Query Data:".json_encode($countFilterQueryData));
if(in_array($table, BaseService::getInstance()->userTables) && !$skipProfileRestriction && !$isSubOrdinates){
$cemp = BaseService::getInstance()->getCurrentProfileId();
$sql = "Select count(id) as count from ".$obj->_table." where ".SIGN_IN_ELEMENT_MAPPING_FIELD_NAME." = ? ".$countFilterQuery;
array_unshift($countFilterQueryData,$cemp);
LogManager::getInstance()->debug("Count Filter Query 1:".$sql);
LogManager::getInstance()->debug("Count Filter Query Data 1:".json_encode($countFilterQueryData));
$rowCount = $obj->DB()->Execute($sql, $countFilterQueryData);
}else{
if($isSubOrdinates){
$cemp = BaseService::getInstance()->getCurrentProfileId();
$profileClass = ucfirst(SIGN_IN_ELEMENT_MAPPING_FIELD_NAME);
$subordinate = new $profileClass();
$subordinates = $subordinate->Find("supervisor = ?",array($cemp));
$subordinatesIds = "";
foreach($subordinates as $sub){
if($subordinatesIds != ""){
$subordinatesIds.=",";
}
$subordinatesIds.=$sub->id;
}
if($obj->allowIndirectMapping()){
$indeirectEmployees = $subordinate->Find("indirect_supervisors IS NOT NULL and indirect_supervisors <> '' and status = 'Active'", array());
foreach($indeirectEmployees as $ie){
$indirectSupervisors = json_decode($ie->indirect_supervisors, true);
if(in_array($cemp, $indirectSupervisors)){
if($subordinatesIds != ""){
$subordinatesIds.=",";
}
$subordinatesIds.=$ie->id;
}
}
}
$sql = "Select count(id) as count from ".$obj->_table." where ".SIGN_IN_ELEMENT_MAPPING_FIELD_NAME." in (".$subordinatesIds.") ".$countFilterQuery;
LogManager::getInstance()->debug("Count Filter Query 2:".$sql);
LogManager::getInstance()->debug("Count Filter Query Data 2:".json_encode($countFilterQueryData));
$rowCount = $obj->DB()->Execute($sql,$countFilterQueryData);
}else{
$sql = "Select count(id) as count from ".$obj->_table;
if(!empty($countFilterQuery)){
$sql.=" where 1=1 ".$countFilterQuery;
}
LogManager::getInstance()->debug("Count Filter Query 3:".$sql);
LogManager::getInstance()->debug("Count Filter Query Data 3:".json_encode($countFilterQueryData));
$rowCount = $obj->DB()->Execute($sql,$countFilterQueryData);
}
}
if(!empty($rowCount)){
foreach ($rowCount as $cnt) {
$totalRows = $cnt['count'];
}
}else{
$totalRows = 0;
}
/*
* Output
*/
$output = array(
"sEcho" => intval($_REQUEST['sEcho']),
"iTotalRecords" => $totalRows,
"iTotalDisplayRecords" => $totalRows,
"aaData" => array()
);
/*
$output['debug_data'] = print_r($data,true);
$output['debug_col'] = print_r($columns,true);
$output['debug_col_plain'] = $_REQUEST['cl'];
$output['get_magic_quotes_gpc'] = get_magic_quotes_gpc();
*/
foreach($data as $item){
$row = array();
$colCount = count($columns);
for ($i=0 ; $i<$colCount;$i++){
$row[] = $item->$columns[$i];
}
$row["_org"] = BaseService::getInstance()->cleanUpAdoDB($item);
$output['aaData'][] = $row;
}
echo json_encode($output);