Release note v15.2
------------------ ### Features * Overtime Reports * Overtime calculation for california ### Fixes * Fix issue: uncaught error when placeholder value is empty * Log email sending success status * Fix broken longer company name issue * Make the application accessible when client on an intranet with no internet connection * Fix issue: when a module is disabled other modules depend on it stops working
This commit is contained in:
@@ -9,9 +9,9 @@ define('HOME_LINK_ADMIN', CLIENT_BASE_URL."?g=admin&n=dashboard&m=admin_Admin");
|
|||||||
define('HOME_LINK_OTHERS', CLIENT_BASE_URL."?g=modules&n=dashboard&m=module_Personal_Information");
|
define('HOME_LINK_OTHERS', CLIENT_BASE_URL."?g=modules&n=dashboard&m=module_Personal_Information");
|
||||||
|
|
||||||
//Version
|
//Version
|
||||||
define('VERSION', '15.0.OS');
|
define('VERSION', '15.3.OS');
|
||||||
define('CACHE_VALUE', '15.0.OS');
|
define('CACHE_VALUE', '15.3.OS');
|
||||||
define('VERSION_DATE', '07/02/2016');
|
define('VERSION_DATE', '12/03/2016');
|
||||||
|
|
||||||
if(!defined('CONTACT_EMAIL')){define('CONTACT_EMAIL','icehrm@gamonoid.com');}
|
if(!defined('CONTACT_EMAIL')){define('CONTACT_EMAIL','icehrm@gamonoid.com');}
|
||||||
if(!defined('KEY_PREFIX')){define('KEY_PREFIX','IceHrm');}
|
if(!defined('KEY_PREFIX')){define('KEY_PREFIX','IceHrm');}
|
||||||
|
|||||||
23
core-ext/db_upgrade/upgrade_v15.0.OS_to_v15.2.OS.sql
Normal file
23
core-ext/db_upgrade/upgrade_v15.0.OS_to_v15.2.OS.sql
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
INSERT INTO `Settings` (`name`, `value`, `description`, `meta`) VALUES
|
||||||
|
('System: Default Country', '0', 'Set the default Country','[ "value", {"label":"Country","type":"select2","remote-source":["Country","code","name"]}]');
|
||||||
|
|
||||||
|
INSERT INTO `Settings` (`name`, `value`, `description`, `meta`) VALUES
|
||||||
|
('Attendance: Overtime Calculation Class', 'BasicOvertimeCalculator', 'Set the method used to calculate overtime','["value", {"label":"Value","type":"select","source":[["BasicOvertimeCalculator","BasicOvertimeCalculator"],["CaliforniaOvertimeCalculator","CaliforniaOvertimeCalculator"]]}]');
|
||||||
|
|
||||||
|
INSERT INTO `Settings` (`name`, `value`, `description`, `meta`) VALUES
|
||||||
|
('Attendance: Overtime Start Hour', '8', 'Overtime calculation will start after an employee work this number of hours per day, 0 to indicate no overtime', ''),
|
||||||
|
('Attendance: Double time Start Hour', '12', 'Double time calculation will start after an employee work this number of hours per day, 0 to indicate no double time', '');
|
||||||
|
|
||||||
|
INSERT INTO `Settings` (`name`, `value`, `description`, `meta`) VALUES
|
||||||
|
('Attendance: Work Week Start Day', '0', 'Set the starting day of the work week','["value", {"label":"Value","type":"select","source":[["0","Sunday"],["1","Monday"],["2","Tuesday"],["3","Wednesday"],["4","Thursday"],["5","Friday"],["6","Saturday"]]}]');
|
||||||
|
|
||||||
|
INSERT INTO `Reports` (`name`, `details`, `parameters`, `query`, `paramOrder`, `type`,`report_group`) VALUES
|
||||||
|
('Overtime Report', 'This report list all employee attendance entries by employee with overtime calculations', '[\r\n[ "employee", {"label":"Employee","type":"select2multi","allow-null":true,"null-label":"All Employees","remote-source":["Employee","id","first_name+last_name"]}],\r\n[ "date_start", {"label":"Start Date","type":"date"}],\r\n[ "date_end", {"label":"End Date","type":"date"}]\r\n]', 'OvertimeReport', '["employee","date_start","date_end"]', 'Class','Time Management');
|
||||||
|
|
||||||
|
INSERT INTO `Reports` (`name`, `details`, `parameters`, `query`, `paramOrder`, `type`,`report_group`) VALUES
|
||||||
|
('Overtime Summary Report', 'This report list all employee attendance entries by employee with overtime calculation summary', '[\r\n[ "employee", {"label":"Employee","type":"select2multi","allow-null":true,"null-label":"All Employees","remote-source":["Employee","id","first_name+last_name"]}],\r\n[ "date_start", {"label":"Start Date","type":"date"}],\r\n[ "date_end", {"label":"End Date","type":"date"}]\r\n]', 'OvertimeSummaryReport', '["employee","date_start","date_end"]', 'Class','Time Management');
|
||||||
|
|
||||||
|
Alter table `Employees` modify column `joined_date` date default '0000-00-00';
|
||||||
|
Alter table `Employees` modify column `confirmation_date` date default '0000-00-00';
|
||||||
|
Alter table `Employees` modify column `termination_date` date default '0000-00-00';
|
||||||
|
Alter table `Employees` modify column `birthday` date default '0000-00-00';
|
||||||
@@ -798,6 +798,25 @@ REPLACE INTO `Reports` (`name`, `details`, `parameters`, `query`, `paramOrder`,
|
|||||||
'["employee","date_start","date_end","status"]', 'Class');
|
'["employee","date_start","date_end","status"]', 'Class');
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO `Reports` (`name`, `details`, `parameters`, `query`, `paramOrder`, `type`,`report_group`) VALUES
|
||||||
|
('Overtime Report', 'This report list all employee attendance entries by employee with overtime calculations', '[\r\n[ "employee", {"label":"Employee","type":"select2multi","allow-null":true,"null-label":"All Employees","remote-source":["Employee","id","first_name+last_name"]}],\r\n[ "date_start", {"label":"Start Date","type":"date"}],\r\n[ "date_end", {"label":"End Date","type":"date"}]\r\n]', 'OvertimeReport', '["employee","date_start","date_end"]', 'Class','Time Management');
|
||||||
|
|
||||||
|
INSERT INTO `Reports` (`name`, `details`, `parameters`, `query`, `paramOrder`, `type`,`report_group`) VALUES
|
||||||
|
('Overtime Summary Report', 'This report list all employee attendance entries by employee with overtime calculation summary', '[\r\n[ "employee", {"label":"Employee","type":"select2multi","allow-null":true,"null-label":"All Employees","remote-source":["Employee","id","first_name+last_name"]}],\r\n[ "date_start", {"label":"Start Date","type":"date"}],\r\n[ "date_end", {"label":"End Date","type":"date"}]\r\n]', 'OvertimeSummaryReport', '["employee","date_start","date_end"]', 'Class','Time Management');
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO `Settings` (`name`, `value`, `description`, `meta`) VALUES
|
||||||
|
('Attendance: Overtime Calculation Class', 'BasicOvertimeCalculator', 'Set the method used to calculate overtime','["value", {"label":"Value","type":"select","source":[["BasicOvertimeCalculator","BasicOvertimeCalculator"],["CaliforniaOvertimeCalculator","CaliforniaOvertimeCalculator"]]}]');
|
||||||
|
|
||||||
|
INSERT INTO `Settings` (`name`, `value`, `description`, `meta`) VALUES
|
||||||
|
('Attendance: Overtime Start Hour', '8', 'Overtime calculation will start after an employee work this number of hours per day, 0 to indicate no overtime', ''),
|
||||||
|
('Attendance: Double time Start Hour', '12', 'Double time calculation will start after an employee work this number of hours per day, 0 to indicate no double time', '');
|
||||||
|
|
||||||
|
INSERT INTO `Settings` (`name`, `value`, `description`, `meta`) VALUES
|
||||||
|
('Attendance: Work Week Start Day', '0', 'Set the starting day of the work week','["value", {"label":"Value","type":"select","source":[["0","Sunday"],["1","Monday"],["2","Tuesday"],["3","Wednesday"],["4","Thursday"],["5","Friday"],["6","Saturday"]]}]');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
INSERT INTO `Settings` (`name`, `value`, `description`, `meta`) VALUES
|
INSERT INTO `Settings` (`name`, `value`, `description`, `meta`) VALUES
|
||||||
('Company: Logo', '', '','[ "value", {"label":"Logo","type":"fileupload","validation":"none"}]'),
|
('Company: Logo', '', '','[ "value", {"label":"Logo","type":"fileupload","validation":"none"}]'),
|
||||||
('Company: Name', 'Sample Company Pvt Ltd', 'Update your company name - For updating company logo copy a file named logo.png to /app/data/ folder', ''),
|
('Company: Name', 'Sample Company Pvt Ltd', 'Update your company name - For updating company logo copy a file named logo.png to /app/data/ folder', ''),
|
||||||
|
|||||||
15
readme.md
15
readme.md
@@ -532,6 +532,21 @@ That way you can attach each and every project to a client.
|
|||||||
Under employee projects tab you can assign projects to employees. You need to add projects to employees to enable them to add time against
|
Under employee projects tab you can assign projects to employees. You need to add projects to employees to enable them to add time against
|
||||||
these projects in time-sheets.
|
these projects in time-sheets.
|
||||||
|
|
||||||
|
Release note v15.2
|
||||||
|
------------------
|
||||||
|
|
||||||
|
### Features
|
||||||
|
* Overtime Reports
|
||||||
|
* Overtime calculation for california
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
* Fix issue: uncaught error when placeholder value is empty
|
||||||
|
* Log email sending success status
|
||||||
|
* Fix broken longer company name issue
|
||||||
|
* Make the application accessible when client on an intranet with no internet connection
|
||||||
|
* Fix issue: when a module is disabled other modules depend on it stops working
|
||||||
|
|
||||||
|
|
||||||
Release note v15.0
|
Release note v15.0
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
|||||||
@@ -1678,7 +1678,10 @@ IceHRMBase.method('fillForm', function(object, formId, fields) {
|
|||||||
if(placeHolderVal == undefined || placeHolderVal == null){
|
if(placeHolderVal == undefined || placeHolderVal == null){
|
||||||
placeHolderVal = "";
|
placeHolderVal = "";
|
||||||
}else{
|
}else{
|
||||||
placeHolderVal = placeHolderVal.replace(/(?:\r\n|\r|\n)/g, '<br />');
|
try{
|
||||||
|
placeHolderVal = placeHolderVal.replace(/(?:\r\n|\r|\n)/g, '<br />');
|
||||||
|
}catch(e){}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2160,3 +2163,12 @@ IceHRMBase.method('generateOptions', function (data) {
|
|||||||
|
|
||||||
return options;
|
return options;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
IceHRMBase.method('isModuleInstalled', function (type, name) {
|
||||||
|
if(modulesInstalled == undefined || modulesInstalled == null){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (modulesInstalled[type+"_"+name] == 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -194,5 +194,19 @@ abstract class AbstractModuleManager{
|
|||||||
$this->modelClasses[] = $className;
|
$this->modelClasses[] = $className;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function addHistoryGeneric($type, $table, $refName, $refId, $field, $oldValue, $newValue){
|
||||||
|
$eh = new $table();
|
||||||
|
$eh->type = $type;
|
||||||
|
$eh->$refName = $refId;
|
||||||
|
$eh->field = $field;
|
||||||
|
$eh->user = BaseService::getInstance()->getCurrentUser()->id;
|
||||||
|
$eh->old_value = $oldValue;
|
||||||
|
$eh->new_value = $newValue;
|
||||||
|
$eh->created = date("Y-m-d H:i:s");
|
||||||
|
$eh->updated = date("Y-m-d H:i:s");
|
||||||
|
|
||||||
|
$eh->Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -45,6 +45,7 @@ class BaseService{
|
|||||||
var $moduleManagers = null;
|
var $moduleManagers = null;
|
||||||
var $emailSender = null;
|
var $emailSender = null;
|
||||||
var $user = null;
|
var $user = null;
|
||||||
|
var $historyManagers = array();
|
||||||
|
|
||||||
private static $me = null;
|
private static $me = null;
|
||||||
|
|
||||||
@@ -89,17 +90,23 @@ class BaseService{
|
|||||||
$queryData = array();
|
$queryData = array();
|
||||||
if(!empty($filterStr)){
|
if(!empty($filterStr)){
|
||||||
$filter = json_decode($filterStr, true);
|
$filter = json_decode($filterStr, true);
|
||||||
|
|
||||||
if(!empty($filter)){
|
|
||||||
foreach($filter as $k=>$v){
|
if(!empty($filter)){
|
||||||
LogManager::getInstance()->info($filterStr);
|
LogManager::getInstance()->debug("Building filter query");
|
||||||
if($v == '__myid__'){
|
if(method_exists($obj,'getCustomFilterQuery')){
|
||||||
$v = $this->getCurrentProfileId();
|
LogManager::getInstance()->debug("Method: getCustomFilterQuery exists");
|
||||||
}
|
$response = $obj->getCustomFilterQuery($filter);
|
||||||
$query.=" and ".$k."=?";
|
$query = $response[0];
|
||||||
$queryData[] = $v;
|
$queryData = $response[1];
|
||||||
}
|
}else{
|
||||||
}
|
LogManager::getInstance()->debug("Method: getCustomFilterQuery not found");
|
||||||
|
$defaultFilterResp = $this->buildDefaultFilterQuery($filter);
|
||||||
|
$query = $defaultFilterResp[0];
|
||||||
|
$queryData = $defaultFilterResp[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(empty($orderBy)){
|
if(empty($orderBy)){
|
||||||
@@ -112,13 +119,17 @@ class BaseService{
|
|||||||
if(in_array($table, $this->userTables)){
|
if(in_array($table, $this->userTables)){
|
||||||
$cemp = $this->getCurrentProfileId();
|
$cemp = $this->getCurrentProfileId();
|
||||||
if(!empty($cemp)){
|
if(!empty($cemp)){
|
||||||
$signInMappingField = SIGN_IN_ELEMENT_MAPPING_FIELD_NAME;
|
$signInMappingField = SIGN_IN_ELEMENT_MAPPING_FIELD_NAME;
|
||||||
$list = $obj->Find($signInMappingField." = ?".$query.$orderBy, array_merge(array($cemp),$queryData));
|
LogManager::getInstance()->debug("Query: ".$signInMappingField." = ?".$query.$orderBy);
|
||||||
|
LogManager::getInstance()->debug("Query Data: ".print_r(array_merge(array($cemp),$queryData),true));
|
||||||
|
$list = $obj->Find($signInMappingField." = ?".$query.$orderBy, array_merge(array($cemp),$queryData));
|
||||||
}else{
|
}else{
|
||||||
$list = array();
|
$list = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
LogManager::getInstance()->debug("Query: "."1=1".$query.$orderBy);
|
||||||
|
LogManager::getInstance()->debug("Query Data: ".print_r($queryData,true));
|
||||||
$list = $obj->Find("1=1".$query.$orderBy,$queryData);
|
$list = $obj->Find("1=1".$query.$orderBy,$queryData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,19 +147,19 @@ class BaseService{
|
|||||||
if(empty($v)){
|
if(empty($v)){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$vArr = json_decode($v);
|
if(is_array($v)){
|
||||||
if(is_array($vArr)){
|
if(empty($v)){
|
||||||
if(empty($vArr)){
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$v = $vArr;
|
|
||||||
$length = count($v);
|
$length = count($v);
|
||||||
for($i=0; $i<$length; $i++){
|
for($i=0; $i<$length; $i++){
|
||||||
$query.=$k." like ?";
|
|
||||||
|
|
||||||
if($i == 0){
|
if($i == 0){
|
||||||
$query.=" and (";
|
$query.=" and (";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$query.=$k." like ?";
|
||||||
|
|
||||||
if($i < $length -1){
|
if($i < $length -1){
|
||||||
$query.=" or ";
|
$query.=" or ";
|
||||||
@@ -477,7 +488,7 @@ class BaseService{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $obj;
|
return $obj->postProcessGetData($obj);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -1065,6 +1076,37 @@ class BaseService{
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isModuleAllowedForGivenUser($moduleManagerObj, $user){
|
||||||
|
$moduleObject = $moduleManagerObj->getModuleObject();
|
||||||
|
|
||||||
|
//Check if the module is disabled
|
||||||
|
if($moduleObject['status'] == 'Disabled'){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check if user has permissions to this module
|
||||||
|
//Check Module Permissions
|
||||||
|
$modulePermissions = BaseService::getInstance()->loadModulePermissions($moduleManagerObj->getModuleType(), $moduleObject['name'],$user->user_level);
|
||||||
|
|
||||||
|
|
||||||
|
if(!in_array($user->user_level, $modulePermissions['user'])){
|
||||||
|
|
||||||
|
if(!empty($user->user_roles)){
|
||||||
|
$userRoles = json_decode($user->user_roles,true);
|
||||||
|
}else{
|
||||||
|
$userRoles = array();
|
||||||
|
}
|
||||||
|
$commonRoles = array_intersect($modulePermissions['user_roles'], $userRoles);
|
||||||
|
if(empty($commonRoles)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getGAKey(){
|
public function getGAKey(){
|
||||||
@@ -1123,12 +1165,27 @@ class BaseService{
|
|||||||
if(empty($this->moduleManagers)){
|
if(empty($this->moduleManagers)){
|
||||||
$this->moduleManagers = array();
|
$this->moduleManagers = array();
|
||||||
}
|
}
|
||||||
$this->moduleManagers[] = $moduleManager;
|
$moduleObject = $moduleManager->getModuleObject();
|
||||||
|
$this->moduleManagers[$moduleManager->getModuleType()."_".$moduleObject['name']] = $moduleManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getModuleManagers(){
|
public function getModuleManagers(){
|
||||||
return $this->moduleManagers;
|
return array_values($this->moduleManagers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getModuleManagerNames(){
|
||||||
|
$keys = array_keys($this->moduleManagers);
|
||||||
|
$arr = array();
|
||||||
|
foreach($keys as $key){
|
||||||
|
$arr[$key] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getModuleManager($type, $name){
|
||||||
|
return $this->moduleManagers[$type."_".$name];
|
||||||
|
}
|
||||||
|
|
||||||
public function setEmailSender($emailSender){
|
public function setEmailSender($emailSender){
|
||||||
$this->emailSender = $emailSender;
|
$this->emailSender = $emailSender;
|
||||||
@@ -1173,8 +1230,116 @@ class BaseService{
|
|||||||
return $dept->timezone;
|
return $dept->timezone;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setupHistoryManager($type, $historyManager){
|
||||||
|
$this->historyManagers[$type] = $historyManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addHistoryItem($historyManagerType, $type, $refId , $field, $oldVal, $newVal){
|
||||||
|
if(isset($this->historyManagers[$historyManagerType])){
|
||||||
|
return $this->historyManagers[$historyManagerType]->addHistory($type, $refId , $field, $oldVal, $newVal);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getItemFromCache($class, $id){
|
||||||
|
$data = MemcacheService::getInstance()->get($class."-".$id);
|
||||||
|
if($data !== false){
|
||||||
|
return unserialize($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
$obj = new $class();
|
||||||
|
$obj->Load("id = ?",array($id));
|
||||||
|
if($obj->id != $id){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
MemcacheService::getInstance()->set($class."-".$id, serialize($obj), 10 * 60);
|
||||||
|
|
||||||
|
return $obj;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class MemcacheService {
|
||||||
|
|
||||||
|
private $connection = null;
|
||||||
|
public static $openConnections = array();
|
||||||
|
private static $me = null;
|
||||||
|
|
||||||
|
private function __construct(){}
|
||||||
|
|
||||||
|
public static function getInstance(){
|
||||||
|
if(self::$me == null){
|
||||||
|
self::$me = new MemcacheService();
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$me;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function connect() {
|
||||||
|
|
||||||
|
if($this->connection == null) {
|
||||||
|
$this->connection = new Memcached();
|
||||||
|
$this->connection->addServer(MEMCACHE_HOST, MEMCACHE_PORT);
|
||||||
|
|
||||||
|
if(!$this->isConnected()) {
|
||||||
|
$this->connection = null;
|
||||||
|
} else {
|
||||||
|
self::$openConnections[] = $this->connection;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $this->connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function isConnected(){
|
||||||
|
$statuses = $this->connection->getStats();
|
||||||
|
return isset($statuses[$this->memcacheHost.":".$this->memcachePort]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function compressKey($key) {
|
||||||
|
return crc32(APP_DB.$key).md5(CLIENT_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function set($key, $value, $expiry = 3600) {
|
||||||
|
$key = $this->compressKey($key);
|
||||||
|
$memcache = $this->connect();
|
||||||
|
|
||||||
|
if (!empty($memcache) && $this->isConnected()) {
|
||||||
|
$ok = $memcache->set($key, $value, time() + $expiry);
|
||||||
|
if(!$ok) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function get($key) {
|
||||||
|
$key = $this->compressKey($key);
|
||||||
|
$memcache = $this->connect();
|
||||||
|
if(!empty($memcache) && $this->isConnected()) {
|
||||||
|
return $memcache->get($key);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function close() {
|
||||||
|
if($this->connection != null) {
|
||||||
|
if($this->isConnected()) {
|
||||||
|
$this->connection->quit();
|
||||||
|
}
|
||||||
|
$this->connection = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class IceConstants{
|
class IceConstants{
|
||||||
const AUDIT_AUTHENTICATION = "Authentication";
|
const AUDIT_AUTHENTICATION = "Authentication";
|
||||||
const AUDIT_ADD = "Add";
|
const AUDIT_ADD = "Add";
|
||||||
@@ -1186,4 +1351,8 @@ class IceConstants{
|
|||||||
const NOTIFICATION_LEAVE = "Leave Module";
|
const NOTIFICATION_LEAVE = "Leave Module";
|
||||||
const NOTIFICATION_TIMESHEET = "Time Module";
|
const NOTIFICATION_TIMESHEET = "Time Module";
|
||||||
const NOTIFICATION_TRAINING = "Training Module";
|
const NOTIFICATION_TRAINING = "Training Module";
|
||||||
|
}
|
||||||
|
|
||||||
|
interface HistoryManager{
|
||||||
|
public function addHistory($type, $refId, $field, $oldValue, $newValue);
|
||||||
}
|
}
|
||||||
@@ -40,7 +40,7 @@ abstract class EmailSender{
|
|||||||
array(),
|
array(),
|
||||||
array(),
|
array(),
|
||||||
array()
|
array()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,7 +281,9 @@ class SMTPEmailSender extends EmailSender{
|
|||||||
|
|
||||||
|
|
||||||
$mail = $smtp->send($toEmail, $headers, $body);
|
$mail = $smtp->send($toEmail, $headers, $body);
|
||||||
|
if (PEAR::isError($mail)) {
|
||||||
|
LogManager::getInstance()->info("SMTP Error Response:".$mail->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
return $mail;
|
return $mail;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,17 +41,22 @@ class FileService{
|
|||||||
|
|
||||||
public function getFromCache($key){
|
public function getFromCache($key){
|
||||||
try{
|
try{
|
||||||
|
/*
|
||||||
if(empty($this->memcache)){
|
if(empty($this->memcache)){
|
||||||
$this->memcache = new Memcached();
|
$this->memcache = new Memcached();
|
||||||
$this->memcache->addServer("127.0.0.1", 11211);
|
$this->memcache->addServer("127.0.0.1", 11211);
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $this->memcache->get($key);
|
$data = $this->memcache->get($key);
|
||||||
|
*/
|
||||||
|
|
||||||
|
$data = MemcacheService::getInstance()->get($key);
|
||||||
|
|
||||||
if(!empty($data)){
|
if(!empty($data)){
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
}catch(Exception $e){
|
}catch(Exception $e){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -651,4 +651,14 @@ table.dataTable{
|
|||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
-moz-border-radius: 0px;
|
-moz-border-radius: 0px;
|
||||||
-webkit-border-radius: 0px;
|
-webkit-border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logoResponsive{
|
||||||
|
background: #3c8dbc !important;
|
||||||
|
text-align: left !important;
|
||||||
|
width:50% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 0px) and (max-width: 600px) {
|
||||||
|
.logoResponsive { display: none !important;}
|
||||||
}
|
}
|
||||||
@@ -14,9 +14,9 @@ if($_REQUEST['file_type']=="image"){
|
|||||||
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head>
|
<head>
|
||||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.js?v=1.1"></script>
|
<script type="text/javascript" src="<?=BASE_URL?>js/jquery-1.5.2.js"></script>
|
||||||
<script type="text/javascript" src="https://webstalk-js.s3.amazonaws.com/date.js"></script>
|
<script type="text/javascript" src="<?=BASE_URL?>js/date.js"></script>
|
||||||
<script type="text/javascript" src="https://webstalk-js.s3.amazonaws.com/json2.js"></script>
|
<script type="text/javascript" src="<?=BASE_URL?>js/json2.js"></script>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -105,6 +105,8 @@
|
|||||||
});
|
});
|
||||||
var clientUrl = '<?=CLIENT_BASE_URL?>';
|
var clientUrl = '<?=CLIENT_BASE_URL?>';
|
||||||
|
|
||||||
|
var modulesInstalled = <?=json_encode(BaseService::getInstance()->getModuleManagerNames())?>;
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
$(".dataTables_paginate ul").addClass("pagination");
|
$(".dataTables_paginate ul").addClass("pagination");
|
||||||
|
|||||||
@@ -58,8 +58,12 @@ if(!in_array($user->user_level, $modulePermissions['user'])){
|
|||||||
}
|
}
|
||||||
$commonRoles = array_intersect($modulePermissions['user_roles'], $userRoles);
|
$commonRoles = array_intersect($modulePermissions['user_roles'], $userRoles);
|
||||||
if(empty($commonRoles)){
|
if(empty($commonRoles)){
|
||||||
echo "You are not allowed to access this page";
|
session_start();
|
||||||
header("Location:".CLIENT_BASE_URL."logout.php");
|
$_SESSION['user'] = null;
|
||||||
|
session_destroy();
|
||||||
|
session_write_close();
|
||||||
|
$user = null;
|
||||||
|
header("Location:".CLIENT_BASE_URL."login.php?f=1&fm=You are not allowed to access this module");
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,8 +153,8 @@ include('configureUIManager.php');
|
|||||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
<script src="<?=BASE_URL?>js/html5shiv.js"></script>
|
||||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
|
<script src="<?=BASE_URL?>js/respond.min.js"></script>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
<script>
|
<script>
|
||||||
var baseUrl = '<?=CLIENT_BASE_URL?>service.php';
|
var baseUrl = '<?=CLIENT_BASE_URL?>service.php';
|
||||||
@@ -190,7 +194,7 @@ include('configureUIManager.php');
|
|||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
</a>
|
</a>
|
||||||
<div class="logo" style="background: #3c8dbc;text-align: left;">
|
<div class="logo logoResponsive">
|
||||||
<?=$companyName?>
|
<?=$companyName?>
|
||||||
</div>
|
</div>
|
||||||
<div class="navbar-right">
|
<div class="navbar-right">
|
||||||
|
|||||||
8
src/js/html5.js
Normal file
8
src/js/html5.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
/*
|
||||||
|
HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
||||||
|
*/
|
||||||
|
(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
|
||||||
|
a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>";
|
||||||
|
c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
|
||||||
|
"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);
|
||||||
|
if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
|
||||||
8
src/js/html5shiv.js
vendored
Normal file
8
src/js/html5shiv.js
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
/*
|
||||||
|
HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
||||||
|
*/
|
||||||
|
(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
|
||||||
|
a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>";
|
||||||
|
c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
|
||||||
|
"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);
|
||||||
|
if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
|
||||||
8374
src/js/jquery-1.5.2.js
vendored
Normal file
8374
src/js/jquery-1.5.2.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9301
src/js/jquery-1.8.1.js
vendored
Normal file
9301
src/js/jquery-1.8.1.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
6
src/js/respond.min.js
vendored
Normal file
6
src/js/respond.min.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
|
||||||
|
/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
|
||||||
|
window.matchMedia=window.matchMedia||function(a){"use strict";var c,d=a.documentElement,e=d.firstElementChild||d.firstChild,f=a.createElement("body"),g=a.createElement("div");return g.id="mq-test-1",g.style.cssText="position:absolute;top:-100em",f.style.background="none",f.appendChild(g),function(a){return g.innerHTML='­<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',d.insertBefore(f,e),c=42===g.offsetWidth,d.removeChild(f),{matches:c,media:a}}}(document);
|
||||||
|
|
||||||
|
/*! Respond.js v1.3.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
|
||||||
|
(function(a){"use strict";function x(){u(!0)}var b={};if(a.respond=b,b.update=function(){},b.mediaQueriesSupported=a.matchMedia&&a.matchMedia("only all").matches,!b.mediaQueriesSupported){var q,r,t,c=a.document,d=c.documentElement,e=[],f=[],g=[],h={},i=30,j=c.getElementsByTagName("head")[0]||d,k=c.getElementsByTagName("base")[0],l=j.getElementsByTagName("link"),m=[],n=function(){for(var b=0;l.length>b;b++){var c=l[b],d=c.href,e=c.media,f=c.rel&&"stylesheet"===c.rel.toLowerCase();d&&f&&!h[d]&&(c.styleSheet&&c.styleSheet.rawCssText?(p(c.styleSheet.rawCssText,d,e),h[d]=!0):(!/^([a-zA-Z:]*\/\/)/.test(d)&&!k||d.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&m.push({href:d,media:e}))}o()},o=function(){if(m.length){var b=m.shift();v(b.href,function(c){p(c,b.href,b.media),h[b.href]=!0,a.setTimeout(function(){o()},0)})}},p=function(a,b,c){var d=a.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),g=d&&d.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+b+"$2$3")},i=!g&&c;b.length&&(b+="/"),i&&(g=1);for(var j=0;g>j;j++){var k,l,m,n;i?(k=c,f.push(h(a))):(k=d[j].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1,f.push(RegExp.$2&&h(RegExp.$2))),m=k.split(","),n=m.length;for(var o=0;n>o;o++)l=m[o],e.push({media:l.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:f.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},s=function(){var a,b=c.createElement("div"),e=c.body,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",e||(e=f=c.createElement("body"),e.style.background="none"),e.appendChild(b),d.insertBefore(e,d.firstChild),a=b.offsetWidth,f?d.removeChild(e):e.removeChild(b),a=t=parseFloat(a)},u=function(b){var h="clientWidth",k=d[h],m="CSS1Compat"===c.compatMode&&k||c.body[h]||k,n={},o=l[l.length-1],p=(new Date).getTime();if(b&&q&&i>p-q)return a.clearTimeout(r),r=a.setTimeout(u,i),void 0;q=p;for(var v in e)if(e.hasOwnProperty(v)){var w=e[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?t||s():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?t||s():1)),w.hasquery&&(z&&A||!(z||m>=x)||!(A||y>=m))||(n[w.media]||(n[w.media]=[]),n[w.media].push(f[w.rules]))}for(var C in g)g.hasOwnProperty(C)&&g[C]&&g[C].parentNode===j&&j.removeChild(g[C]);for(var D in n)if(n.hasOwnProperty(D)){var E=c.createElement("style"),F=n[D].join("\n");E.type="text/css",E.media=D,j.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(c.createTextNode(F)),g.push(E)}},v=function(a,b){var c=w();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},w=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}();n(),b.update=n,a.addEventListener?a.addEventListener("resize",x,!1):a.attachEvent&&a.attachEvent("onresize",x)}})(this);
|
||||||
@@ -66,7 +66,7 @@ $logoFileUrl = UIManager::getInstance()->getCompanyLogoUrl();
|
|||||||
<!-- Le styles -->
|
<!-- Le styles -->
|
||||||
<link href="<?=BASE_URL?>bootstrap/css/bootstrap.css" rel="stylesheet">
|
<link href="<?=BASE_URL?>bootstrap/css/bootstrap.css" rel="stylesheet">
|
||||||
|
|
||||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.js"></script>
|
<script type="text/javascript" src="<?=BASE_URL?>js/jquery-1.8.1.js"></script>
|
||||||
<script src="<?=BASE_URL?>bootstrap/js/bootstrap.js"></script>
|
<script src="<?=BASE_URL?>bootstrap/js/bootstrap.js"></script>
|
||||||
<script src="<?=BASE_URL?>js/jquery.placeholder.js"></script>
|
<script src="<?=BASE_URL?>js/jquery.placeholder.js"></script>
|
||||||
<script src="<?=BASE_URL?>js/jquery.dataTables.js"></script>
|
<script src="<?=BASE_URL?>js/jquery.dataTables.js"></script>
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ class Setting extends ICEHRM_Record {
|
|||||||
public function getUserAccess(){
|
public function getUserAccess(){
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
var $_table = 'Settings';
|
var $_table = 'Settings';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,10 +103,6 @@ foreach($ams as $am){
|
|||||||
if($addNewPermissions && isset($meta->permissions)){
|
if($addNewPermissions && isset($meta->permissions)){
|
||||||
createPermissions($meta, $dbModule->id);
|
createPermissions($meta, $dbModule->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($dbModule->status == 'Disabled'){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$arr['name'] = $dbModule->name;
|
$arr['name'] = $dbModule->name;
|
||||||
@@ -140,6 +136,9 @@ foreach($ams as $am){
|
|||||||
}
|
}
|
||||||
|
|
||||||
includeModuleManager('admin',$am, $arr);
|
includeModuleManager('admin',$am, $arr);
|
||||||
|
if($dbModule->status == 'Disabled'){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if(!isset($adminModulesTemp[$arr['menu']])){
|
if(!isset($adminModulesTemp[$arr['menu']])){
|
||||||
$adminModulesTemp[$arr['menu']] = array();
|
$adminModulesTemp[$arr['menu']] = array();
|
||||||
@@ -191,10 +190,7 @@ foreach($ams as $am){
|
|||||||
if($addNewPermissions && isset($meta->permissions)){
|
if($addNewPermissions && isset($meta->permissions)){
|
||||||
createPermissions($meta, $dbModule->id);
|
createPermissions($meta, $dbModule->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($dbModule->status == 'Disabled'){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$arr['name'] = $dbModule->name;
|
$arr['name'] = $dbModule->name;
|
||||||
$arr['label'] = $dbModule->label;
|
$arr['label'] = $dbModule->label;
|
||||||
@@ -226,6 +222,10 @@ foreach($ams as $am){
|
|||||||
}
|
}
|
||||||
|
|
||||||
includeModuleManager('modules',$am, $arr);
|
includeModuleManager('modules',$am, $arr);
|
||||||
|
|
||||||
|
if($dbModule->status == 'Disabled'){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if(!isset($userModulesTemp[$arr['menu']])){
|
if(!isset($userModulesTemp[$arr['menu']])){
|
||||||
$userModulesTemp[$arr['menu']] = array();
|
$userModulesTemp[$arr['menu']] = array();
|
||||||
|
|||||||
Reference in New Issue
Block a user