Merge branch 'release/v27.0.2.OS'

This commit is contained in:
Thilina Pituwala
2020-06-10 02:06:25 +02:00
9 changed files with 167 additions and 48 deletions

2
.gitignore vendored
View File

@@ -22,4 +22,4 @@ docker/testing/db_data
test/frontend/cypress/videos/*
test/frontend/cypress/screenshots/*
test/frontend/node_modules/*
!deployment/vagrant/ssl/icehrm.key

25
Vagrantfile vendored Normal file
View File

@@ -0,0 +1,25 @@
Vagrant.configure("2") do |config|
config.vm.box = "icehrm/icehrm"
config.vm.box_version = "1.0.0"
config.vm.network "private_network", ip: "192.168.10.12"
config.vm.synced_folder ".", "/vagrant", type: "nfs"
config.vm.synced_folder "./deployment/vagrant/sites-available", "/etc/nginx/sites-enabled", type: "nfs"
config.vm.synced_folder "./deployment/vagrant/ssl", "/etc/nginx/ssl", type: "nfs"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = "2"
vb.name = "icehrm-os.test"
end
config.vm.provision "shell", inline: <<-SHELL
sudo service nginx restart
SHELL
config.vm.hostname = "icehrm.test"
config.hostsupdater.aliases = [
"icehrm.test"
]
end

View File

@@ -4,4 +4,4 @@ if(php_sapi_name() != 'cli'){
}
include ('config.php');
include (APP_BASE_PATH.'crons/cron.php');
include (APP_BASE_PATH.'crons/cron.php');

View File

@@ -13,20 +13,20 @@ $photoAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendan
$mapAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendance: Request Attendance Location on Mobile');
?><div class="span9">
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabAttendance" href="#tabPageAttendance"><?=t('Monitor Attendance')?></a></li>
<ul class="nav nav-tabs" id="modTab" style="margin-bottom:0px;margin-left:5px;border-bottom: none;">
<li class="active"><a id="tabAttendance" href="#tabPageAttendance"><?=t('Monitor Attendance')?></a></li>
<li class=""><a id="tabAttendanceStatus" href="#tabPageAttendanceStatus"><?=t('Current Clocked In Status')?></a></li>
</ul>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tabPageAttendance">
<div id="Attendance" class="reviewBlock" data-content="List" style="padding-left:5px;">
<div class="tab-content">
<div class="tab-pane active" id="tabPageAttendance">
<div id="Attendance" class="reviewBlock" data-content="List" style="padding-left:5px;">
</div>
<div id="AttendanceForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
<div id="AttendanceForm" class="reviewBlock" data-content="Form" style="padding-left:5px;display:none;">
</div>
</div>
</div>
</div>
<div class="tab-pane" id="tabPageAttendanceStatus">
<div id="AttendanceStatus" class="reviewBlock" data-content="List" style="padding-left:5px;">
@@ -36,20 +36,20 @@ $mapAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendance
</div>
</div>
</div>
</div>
</div>
<div class="modal" id="attendancePhotoModel" tabindex="-1" role="dialog" aria-labelledby="messageModelLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><li class="fa fa-times"/></button>
<h3 style="font-size: 17px;">Attendance Details</h3>
</div>
<div class="modal-body">
<div class="row" style="background: #f3f4f5; padding: 10px;text-align: center;">
<h4 id="attendnaceCanvasEmp"></h4>
</div>
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><li class="fa fa-times"/></button>
<h3 style="font-size: 17px;">Attendance Details</h3>
</div>
<div class="modal-body">
<div class="row" style="background: #f3f4f5; padding: 10px;text-align: center;">
<h4 id="attendnaceCanvasEmp"></h4>
</div>
<div class="row" style="background: #f3f4f5; padding: 10px;">
<div id="attendnaceCanvasPunchInTimeWraper" class="col-sm-6" style="text-align: center;">
<b>In: </b><span id="attendnaceCanvasPunchInTime"></span>
@@ -62,14 +62,14 @@ $mapAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendance
IP Address: <span id="punchOutIp"></span>
</div>
</div>
<div id="attendancePhoto" class="row" style="background: #f3f4f5; padding: 10px;display:none;">
<div class="col-sm-6" style="text-align: center;">
<div id="attendancePhoto" class="row" style="background: #f3f4f5; padding: 10px;display:none;">
<div id="attendnaceCanvasInWrapper" class="col-sm-6" style="text-align: center;">
</div>
<div class="col-sm-6" style="text-align: center;">
</div>
<div id="attendnaceCanvasOutWrapper" class="col-sm-6" style="text-align: center;">
</div>
</div>
</div>
</div>
<div id="attendanceMap" class="row" style="background: #f3f4f5; padding: 10px;display:none;">
<div id="attendnaceMapCanvasInWrapper" class="col-sm-6" style="text-align: center;">
@@ -85,21 +85,21 @@ $mapAttendance = \Classes\SettingsManager::getInstance()->getSetting('Attendance
<span>Location: <span id="punchOutLocation"></span></span>
</div>
</div>
</div>
<div class="modal-footer">
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var modJsList = new Array();
modJsList['tabAttendance'] = new AttendanceAdapter('Attendance','Attendance','','in_time desc');
modJsList['tabAttendance'].setRemoteTable(true);
modJsList['tabAttendance'].setPhotoAttendance(<?=$photoAttendance == '1' || $mapAttendance == '1'?>);
modJsList['tabAttendanceStatus'] = new AttendanceStatusAdapter('AttendanceStatus','AttendanceStatus','','');
modJsList['tabAttendanceStatus'].setShowAddNew(false);
var modJs = modJsList['tabAttendance'];
var modJsList = new Array();
modJsList['tabAttendance'] = new AttendanceAdapter('Attendance','Attendance','','in_time desc');
modJsList['tabAttendance'].setRemoteTable(true);
modJsList['tabAttendance'].setPhotoAttendance(<?=$photoAttendance == '1' || $mapAttendance == '1'?>);
modJsList['tabAttendanceStatus'] = new AttendanceStatusAdapter('AttendanceStatus','AttendanceStatus','','');
modJsList['tabAttendanceStatus'].setShowAddNew(false);
var modJs = modJsList['tabAttendance'];
</script>
<?php include APP_BASE_PATH.'footer.php';?>

View File

@@ -13,10 +13,10 @@ if(!defined('HOME_LINK_OTHERS')){
}
//Version
define('VERSION', '27.0.1.OS');
define('CACHE_VALUE', '27.0.1.OS');
define('VERSION_NUMBER', '270001');
define('VERSION_DATE', '29/05/2020');
define('VERSION', '27.0.2.OS');
define('CACHE_VALUE', '27.0.2.OS');
define('VERSION_NUMBER', '270002');
define('VERSION_DATE', '10/06/2020');
if(!defined('CONTACT_EMAIL')){define('CONTACT_EMAIL','icehrm@gamonoid.com');}
if(!defined('KEY_PREFIX')){define('KEY_PREFIX','IceHrm');}

View File

@@ -1,6 +1,4 @@
<?php
namespace Classes;
class DomainAwareInputCleaner
@@ -92,6 +90,6 @@ class DomainAwareInputCleaner
private function isValidFilterValue($input)
{
return !!preg_match('/^[-_: \p{L}]+$/u', $input);
return !!preg_match('/^[-_: \d\p{L}]+$/u', $input);
}
}

View File

@@ -0,0 +1,50 @@
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
root /vagrant;
# Add index.php to the list if you are using PHP
index index.html index.php;
server_name icehrm.test;
ssl_certificate /etc/nginx/ssl/icehrm.crt;
ssl_certificate_key /etc/nginx/ssl/icehrm.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location /core/ {
deny all;
}
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
location /app/api/ {
try_files $uri /app/api/index.php?/$uri&$args;
}
}

View File

@@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC6zCCAdOgAwIBAgIJAOVbCZJCEmMKMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
BAMMC2ljZWhybS50ZXN0MB4XDTIwMDYwOTE4MDMxM1oXDTMwMDYwNzE4MDMxM1ow
FjEUMBIGA1UEAwwLaWNlaHJtLnRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQDOTSWgFFHOSvoxGGuRfOUZh1Ihu1S1f+q8fJXSmOUhqqe8UDFVcyFW
INoc/cUYoheK3DwVDBOTtrOBr20mq/tNoDyjNELGRVC7UttGUoEG7KSjHpb7xkJ5
ycZf09gTZ/xB/joV6AIkw9YMyqvKEq3s9cfHLr+YCOz3ukPQm8NQ3Hthc+iWHgMP
6Wypapoe+1OV249G5xJjWukQ8GWB7vmCLWpv+u8WgNs7qDV4M3w5v72gBROk5r4h
M8LBFX78eu+YGYxsQB2i/Z+7dWCYtu7LwsrCmc2Ek4HEo0/RP++Ql/FL0J2JlRjb
a2I0MwEN4z648NeWusm2SvgF38VGtMD7AgMBAAGjPDA6MBYGA1UdEQQPMA2CC2lj
ZWhybS50ZXN0MAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkq
hkiG9w0BAQsFAAOCAQEArG936hQSY/E2H2G5KRg/uOq8yMeUdW2IoIZdagcseRF0
i2Y69LEiBq4/syZxgqEZCu7w3aulsdpNR6ZAZvxyj6FPc41sbStNrRUeyaBQvKhe
7QbqbNS+1iO9DadjcXWAnD30x9qxTqEKNvY17ZgnBgP2RDSajpYZxduJRwW4c19V
Qu4YF/CxuwbirSpOANwyMNHy/SyeCwL9W0FFabj5jrHTNWb2IP0IlFEXU4IY4Dlv
K/fvzZjGFX5YayYKx4laP33xvIxlI6d1ewzLGAa8KFCKk/n/6HsmYmdTh6e3193E
FV6nL9dQ/4ggCIPTfIJWS6PcWuJDzNZj6mZNKiHGmQ==
-----END CERTIFICATE-----

View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDOTSWgFFHOSvox
GGuRfOUZh1Ihu1S1f+q8fJXSmOUhqqe8UDFVcyFWINoc/cUYoheK3DwVDBOTtrOB
r20mq/tNoDyjNELGRVC7UttGUoEG7KSjHpb7xkJ5ycZf09gTZ/xB/joV6AIkw9YM
yqvKEq3s9cfHLr+YCOz3ukPQm8NQ3Hthc+iWHgMP6Wypapoe+1OV249G5xJjWukQ
8GWB7vmCLWpv+u8WgNs7qDV4M3w5v72gBROk5r4hM8LBFX78eu+YGYxsQB2i/Z+7
dWCYtu7LwsrCmc2Ek4HEo0/RP++Ql/FL0J2JlRjba2I0MwEN4z648NeWusm2SvgF
38VGtMD7AgMBAAECggEATD9bLqUT7yjq+4ZJC4abrinDg1AXaNWUToHFZga4eQ73
27PP6AMbSRfvRVPNquMNzHbFhgnmmmumQMIzl11tDi2w+6jvHRS1V+axwHXx1jtU
Ri2iJAAMxbJ7rSNA8zs1kraBhWMwl6IB1Mx7Xb41piTY55cxnOF/o7emJM3NDG8m
4xPaDA+I9JapLRbX14XMSMUZNCY3/lYMS0ujoHOmujGFTzEZM3ndvFIuRbnSD88U
pmCXEcxlJd6jQhkX7gxzmunNOCD32iJRwTl1V9Vm73xHF0qOJCs5fduUE1TKchuQ
SeEfyID7o6SC2ZsOyfTLBI4ofGDq3M2iI5knnzD68QKBgQDwz5uaGTVbTE75UEJs
tl/cq/UD0+bukzMXpk4gV8rYmtITVk0EGUeyTP4Dm9r2v24C7LI8xrisZ7DvdqAV
n3RboOPKHtmh1HpMCOf2LCdwSXrLnovUoOjgel/vny06uLLFjebvGoBZOZ2F6485
20YX5NXMyhb20G0+tlpcGd7BrQKBgQDbUE9XxLJ9UWvCeEAd3lPaBdns/K1c27JD
lrpg8FDSkZOy6lj1/vH/SfBS4QQpo1CFBCQ3FUVPkjJtJSr2w2Rev1PxQAoMVdtI
VITDrOVpRvSqUcIdWCnnhQPWElCfFUIWpvafDK0r+lPj3vkLOscJWSJzV1+pk5JF
6ARJyCZyRwKBgQDKBDAyJ0GmtK5v4o/G6XwkALHMI0FRFXXAOkjCQ0QtUDw58qUr
chW+k25pEp+vbkpY875W1BLqtxYs3WRQn3Maxy8xSY4jf7+U98e4sbPoNAxqszf1
CYQzhRXkTLHB2F5I8tEv9xiDQZ1PUpzV2YjE1LkzUrnPFmz/NjU5nI5OBQKBgQC0
hM5KOCWS8Un5sHFWJIJwmxBd+T3ZiRyadZ7D3Asqx5kDU9IV6dvXfkzKa1y5ySul
0Vrd3CxI6tWG8WkD5KDhPCskEMo0jRcJ2kfNqKrMlRMefl2BOeiEIQCfXEPwLddQ
Pe4RzKVd5ZbXodjsXV0nXK72sZyUQFvOHsQo1w6OUQKBgQDNwWNnYYC9oH8/+2mA
j4D1mO4OF1w6rDb+hvp3lggt3yKcvRK4doFJ9LeJ9C0mGz1JJV/O7l+eAv9n0lFS
HGW1YSqbsAwvi8l/qJrYB/gOVfPJPm3GIwX6qBYqiAYb+Fp7igfOZ4ivf2/PhqcU
B4Qq9z9sl149+HlKEHINoQHKdQ==
-----END PRIVATE KEY-----