Upgraded to latest icehrm core
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
error_reporting(E_ERROR);
|
||||
error_reporting(E_ALL);
|
||||
ini_set("error_log", "/tmp/icehrm_install.log");
|
||||
define('CURRENT_PATH',dirname(__FILE__));
|
||||
define('CLIENT_APP_PATH',realpath(dirname(__FILE__)."/..")."/");
|
||||
|
||||
117
core-ext/common.cron.tasks.ext.php
Normal file
117
core-ext/common.cron.tasks.ext.php
Normal file
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
class DocumentExpiryNotificationTask extends EmailIceTask{
|
||||
|
||||
var $documentCache = array();
|
||||
var $notificationList = array();
|
||||
var $employeeDocList = array();
|
||||
var $employeeEmails = array();
|
||||
|
||||
public function execute($cron){
|
||||
|
||||
if(SettingsManager::getInstance()->getSetting('Notifications: Send Document Expiry Emails') != '1'){
|
||||
LogManager::getInstance()->info("Notifications: Send Document Expiry Emails is set to No. Do not send emails");
|
||||
return;
|
||||
}
|
||||
|
||||
//Get documents
|
||||
|
||||
$dayList = array();
|
||||
$dayList[30] = 'expire_notification_month';
|
||||
$dayList[7] = 'expire_notification_week';
|
||||
$dayList[1] = 'expire_notification_day';
|
||||
$dayList[0] = 'expire_notification';
|
||||
|
||||
foreach($dayList as $k => $v){
|
||||
$this->expiryDayNotification($k, $v);
|
||||
}
|
||||
|
||||
$this->getExpireDocumentHTMLByEmployee();
|
||||
$this->sendEmployeeEmails($this->employeeEmails, "IceHrm Employee Document Expiry Reminder");
|
||||
|
||||
}
|
||||
|
||||
private function expiryDayNotification($day, $param){
|
||||
$date = date('Y-m-d', strtotime("+".$day." days"));
|
||||
|
||||
$employeeDocument = new EmployeeDocument();
|
||||
$employeeDocuments = $employeeDocument->Find("valid_until IS NOT NULL and valid_until = ? and (expire_notification_last > ? or expire_notification_last = -1) and status = ?",
|
||||
array($date, $day, 'Active'));
|
||||
|
||||
if(!$employeeDocuments){
|
||||
LogManager::getInstance()->error("Error :".$employeeDocument->ErrorMsg());
|
||||
return;
|
||||
}
|
||||
|
||||
$query = "valid_until IS NOT NULL and valid_until = $date and
|
||||
(expire_notification_last > $day or expire_notification_last == -1)
|
||||
and status = 'Active';";
|
||||
|
||||
LogManager::getInstance()->debug($query);
|
||||
|
||||
foreach($employeeDocuments as $doc){
|
||||
|
||||
LogManager::getInstance()->debug("Employee Doc :".print_r($doc, true));
|
||||
|
||||
if(empty($doc->document)){
|
||||
continue;
|
||||
}
|
||||
$document = null;
|
||||
if(isset($this->documentCache[$doc->id])){
|
||||
$document = $this->documentCache[$doc->id];
|
||||
}else{
|
||||
$document = new Document();
|
||||
$document->Load("id = ?",array($doc->document));
|
||||
$this->documentCache[$document->id] = $document;
|
||||
}
|
||||
|
||||
if($document->$param == "Yes"){
|
||||
if(!isset($this->notificationList[$doc->employee])){
|
||||
$this->notificationList[$doc->employee] = array();
|
||||
}
|
||||
$this->notificationList[$doc->employee][] = array($doc, $document, $day);
|
||||
}
|
||||
|
||||
$doc->expire_notification_last = $day;
|
||||
$doc->Save();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private function getExpireDocumentHTMLByEmployee(){
|
||||
$row = '<p style="background-color: #EEE;padding: 5px;font-size: 0.9em;font-weight: bold;"><span style="font-size: 1em;font-weight: bold;">#_name_#</span> - Expire in #_days_# day(s)</p><br/><span style="font-size: 0.8em;font-weight: bold;">#_description_#</span><hr/>';
|
||||
|
||||
foreach($this->notificationList as $key => $val){
|
||||
$employeeEmail = "";
|
||||
|
||||
foreach($val as $list){
|
||||
$trow = $row;
|
||||
$doc = $list[0];
|
||||
$document = $list[1];
|
||||
$days = $list[2];
|
||||
|
||||
$trow = str_replace("#_name_#",$document->name,$trow);
|
||||
$trow = str_replace("#_days_#",$days,$trow);
|
||||
$trow = str_replace("#_description_#",$doc->details,$trow);
|
||||
|
||||
$employeeEmail.=$trow;
|
||||
}
|
||||
|
||||
$employee = new Employee();
|
||||
$employee->Load("id = ?",array($key));
|
||||
|
||||
if(empty($employee->id) || $employee->id != $key){
|
||||
LogManager::getInstance()->error("Could not load employee with id");
|
||||
return;
|
||||
}
|
||||
|
||||
$emailBody = file_get_contents(APP_BASE_PATH.'/admin/documents/emailTemplates/documentExpireEmailTemplate.html');
|
||||
$emailBody = str_replace("#_employee_#",$employee->first_name,$emailBody);
|
||||
$emailBody = str_replace("#_documents_#",$employeeEmail,$emailBody);
|
||||
|
||||
$this->employeeEmails[$employee->id] = $emailBody;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -9,13 +9,13 @@ 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");
|
||||
|
||||
//Version
|
||||
define('VERSION', '13.1.OS');
|
||||
define('CACHE_VALUE', '13.1');
|
||||
define('VERSION_DATE', '09/10/2015');
|
||||
define('VERSION', '14.0.OS');
|
||||
define('CACHE_VALUE', '14.0.OS');
|
||||
define('VERSION_DATE', '12/12/2015');
|
||||
|
||||
if(!defined('CONTACT_EMAIL')){define('CONTACT_EMAIL','icehrm@gamonoid.com');}
|
||||
if(!defined('KEY_PREFIX')){define('KEY_PREFIX','IceHrm');}
|
||||
if(!defined('APP_SEC')){define('APP_SEC','dbcs234d2saaqw');}
|
||||
if(!defined('APP_SEC')){define('APP_SEC','dbcs234d2s111');}
|
||||
|
||||
define('UI_SHOW_SWITCH_PROFILE', true);
|
||||
define('CRON_LOG', '/var/log/nginx/icehrmcron.log');
|
||||
@@ -1,519 +0,0 @@
|
||||
.redFont{
|
||||
color: red;
|
||||
}
|
||||
.box_ws{
|
||||
background: white;
|
||||
border-left: 1px solid #DDD;
|
||||
border-right: 1px solid #DDD;
|
||||
border-bottom: 1px solid #DDD;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.cal_box_ws{
|
||||
background: white;
|
||||
border: 1px solid #DDD;
|
||||
color: #555;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.cal_box_ws .wd_date_full{
|
||||
font-weight:bold;
|
||||
font-size:10px;
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.cal_box_ws .wd_date{
|
||||
font-size:10px;
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.nav-pills li a:hover{
|
||||
background: #1D64AD;
|
||||
color:white;
|
||||
};
|
||||
|
||||
.navbar-inverse .brand, .navbar-inverse .nav > li > a {
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.categoryWrap p{
|
||||
font-size:16px;
|
||||
font-weight:bold;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.categoryWrap p:hover{
|
||||
font-size:16px;
|
||||
font-weight:bold;
|
||||
color:white;
|
||||
background: gray;
|
||||
padding: 3px;
|
||||
cursor:pointer;
|
||||
border-radius: 4px;
|
||||
|
||||
}
|
||||
|
||||
.resultLogo{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.pbar{
|
||||
font-weight:bold;
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
.pbar .progress{
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
.bs-docs-sidenav {
|
||||
width: 228px;
|
||||
margin: 30px 0 0;
|
||||
padding: 0;
|
||||
background-color: #fff;
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
border-radius: 6px;
|
||||
-webkit-box-shadow: 0 1px 4px rgba(0,0,0,.065);
|
||||
-moz-box-shadow: 0 1px 4px rgba(0,0,0,.065);
|
||||
box-shadow: 0 1px 4px rgba(0,0,0,.065);
|
||||
}
|
||||
.bs-docs-sidenav > li > a {
|
||||
display: block;
|
||||
*width: 190px;
|
||||
margin: 0 0 -1px;
|
||||
padding: 8px 14px;
|
||||
border: 1px solid #e5e5e5;
|
||||
}
|
||||
.bs-docs-sidenav > li:first-child > a {
|
||||
-webkit-border-radius: 6px 6px 0 0;
|
||||
-moz-border-radius: 6px 6px 0 0;
|
||||
border-radius: 6px 6px 0 0;
|
||||
}
|
||||
.bs-docs-sidenav > li:last-child > a {
|
||||
-webkit-border-radius: 0 0 6px 6px;
|
||||
-moz-border-radius: 0 0 6px 6px;
|
||||
border-radius: 0 0 6px 6px;
|
||||
}
|
||||
.bs-docs-sidenav > .active > a {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
padding: 9px 15px;
|
||||
border: 0;
|
||||
text-shadow: 0 1px 0 rgba(0,0,0,.15);
|
||||
-webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1);
|
||||
-moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1);
|
||||
box-shadow: inset 1px 0 0 rgba(0,0,0,.1), inset -1px 0 0 rgba(0,0,0,.1);
|
||||
}
|
||||
/* Chevrons */
|
||||
.bs-docs-sidenav .icon-chevron-right {
|
||||
float: right;
|
||||
margin-top: 2px;
|
||||
margin-right: -6px;
|
||||
opacity: .25;
|
||||
}
|
||||
.bs-docs-sidenav > li > a:hover {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
.bs-docs-sidenav a:hover .icon-chevron-right {
|
||||
opacity: .5;
|
||||
}
|
||||
.bs-docs-sidenav .active .icon-chevron-right,
|
||||
.bs-docs-sidenav .active a:hover .icon-chevron-right {
|
||||
background-image: url(../img/glyphicons-halflings-white.png);
|
||||
opacity: 1;
|
||||
}
|
||||
.bs-docs-sidenav.affix {
|
||||
top: 40px;
|
||||
}
|
||||
.bs-docs-sidenav.affix-bottom {
|
||||
position: absolute;
|
||||
top: auto;
|
||||
bottom: 270px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Responsive
|
||||
-------------------------------------------------- */
|
||||
|
||||
/* Desktop large
|
||||
------------------------- */
|
||||
@media (min-width: 1200px) {
|
||||
.bs-docs-container {
|
||||
max-width: 970px;
|
||||
}
|
||||
.bs-docs-sidenav {
|
||||
width: 258px;
|
||||
}
|
||||
}
|
||||
|
||||
.reviewPoints{
|
||||
margin-top:10px;
|
||||
}
|
||||
|
||||
.reviewPoints .star{
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.reviewBlock {
|
||||
position: relative;
|
||||
margin: 0px 0;
|
||||
padding: 39px 19px 14px;
|
||||
background-color: white;
|
||||
border: 1px solid #DDD;
|
||||
/*
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
*/
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
/*.reviewBlock::after {
|
||||
content: attr(data-content);
|
||||
position: absolute;
|
||||
top: -1px;
|
||||
left: -1px;
|
||||
padding: 3px 7px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
background-color: whiteSmoke;
|
||||
border: 1px solid #DDD;
|
||||
color: #9DA0A4;
|
||||
-webkit-border-radius: 4px 0 4px 0;
|
||||
-moz-border-radius: 4px 0 4px 0;
|
||||
border-radius: 4px 0 4px 0;
|
||||
}*/
|
||||
|
||||
.box_ws{
|
||||
background: white;
|
||||
border-left: 1px solid #DDD;
|
||||
border-right: 1px solid #DDD;
|
||||
border-bottom: 1px solid #DDD;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.cal_box_ws{
|
||||
background: white;
|
||||
border: 1px solid #DDD;
|
||||
color: #555;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.cal_box_ws .wd_date_full{
|
||||
font-weight:bold;
|
||||
font-size:10px;
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.cal_box_ws .wd_date{
|
||||
font-size:10px;
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.nav-pills li a:hover{
|
||||
background: #1D64AD;
|
||||
color:white;
|
||||
};
|
||||
|
||||
.nav-tabs > li > a {
|
||||
color:white;
|
||||
}
|
||||
|
||||
.nav-tabs > li > a:hover{
|
||||
color:#555;
|
||||
}
|
||||
|
||||
|
||||
.topheader {
|
||||
background: -moz-linear-gradient(#829AA8, #405A6A);
|
||||
background: -webkit-linear-gradient(#829AA8, #405A6A);
|
||||
background: linear-gradient(#829AA8, #405A6A);
|
||||
border: 1px solid #677C89;
|
||||
border-bottom-color: #6B808D;
|
||||
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4),0 0px 10px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
|
||||
.bgbody{
|
||||
background: #FAFAFA;
|
||||
background: -moz-linear-gradient(#FAFAFA, #EAEAEA);
|
||||
background: -webkit-linear-gradient(#FAFAFA, #EAEAEA);
|
||||
background: linear-gradient(#FAFAFA, #EAEAEA);
|
||||
border-bottom: 1px solid #CACACA;
|
||||
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4),0 0px 10px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.leftMenu{
|
||||
background-color: #E9F1F4;
|
||||
border-style: solid;
|
||||
border-width: 1px 1px 2px;
|
||||
border-color: #E9F1F4 #D8DEE2 #D8DEE2;
|
||||
border-radius: 0 0 5px 5px;
|
||||
}
|
||||
|
||||
.nav > li > a:hover {
|
||||
text-decoration: none;
|
||||
background-color: whitesmoke;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
/*
|
||||
.nav-list > .active > a, .nav-list > .active > a:hover{
|
||||
color: white;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
|
||||
background-color: #405A6A;
|
||||
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4),0 0px 10px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 5px;
|
||||
}
|
||||
*/
|
||||
|
||||
a {
|
||||
color: #405A6A;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.nav-header {
|
||||
display: block;
|
||||
padding: 3px 15px;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
line-height: 20px;
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
|
||||
text-transform: none;
|
||||
background: -moz-linear-gradient(#829AA8, #405A6A);
|
||||
background: -webkit-linear-gradient(#829AA8, #405A6A);
|
||||
background: linear-gradient(#829AA8, #405A6A);
|
||||
color: white;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.modal-backdrop,
|
||||
.modal-backdrop.fade.in {
|
||||
opacity: 0.4;
|
||||
filter: alpha(opacity=40);
|
||||
}
|
||||
|
||||
.error{
|
||||
color:red;
|
||||
}
|
||||
|
||||
.columnMain{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.borderBox{
|
||||
padding-bottom: 10px;
|
||||
padding-left: 10px;
|
||||
padding-top: 10px;
|
||||
-moz-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
margin-bottom: 20px;
|
||||
-moz-box-shadow: 1px 3px 3px rgba(0, 0, 0, 0.1);
|
||||
-webkit-box-shadow: 1px 3px 3px rgba(0, 0, 0, 0.1);
|
||||
box-shadow: 1px 3px 3px rgba(0, 0, 0, 0.1);
|
||||
border: 1px solid #EEE;
|
||||
}
|
||||
|
||||
|
||||
.iceicon_edit{
|
||||
background-image: url("../images/edit.png");
|
||||
}
|
||||
|
||||
.iceicon_delete{
|
||||
background-image: url("../images/delete.png");
|
||||
}
|
||||
|
||||
.iceicon_user{
|
||||
background-image: url("../images/user.png");
|
||||
}
|
||||
|
||||
.dropdown-menu{
|
||||
z-index: 10000;
|
||||
}
|
||||
|
||||
.lightface .lightfaceContent .lightfaceTitle {
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
background-color: #405A6A;
|
||||
border: 1px solid #405A6A;
|
||||
font-weight: bold;
|
||||
margin: -1px;
|
||||
margin-bottom: 0;
|
||||
padding: 5px 10px;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
.label-ice, .badge-ice{
|
||||
background-color: #405A6A;
|
||||
}
|
||||
|
||||
.dataTables_processing{
|
||||
position: absolute;
|
||||
margin-left: 40px;
|
||||
font-weight: bold;
|
||||
font-size: 13px;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*changes to full caledar*/
|
||||
.fc-header-title h2 {
|
||||
margin-top: 0;
|
||||
white-space: nowrap;
|
||||
font-size: 20px;
|
||||
margin-left: 10px;
|
||||
color:#405A6A;
|
||||
}
|
||||
|
||||
table.dataTable{
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.form-horizontal{
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.form-horizontal .row{
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.table.dataTable {width:100% !important;}
|
||||
|
||||
.iceLabel{
|
||||
font-size: 12px !important;
|
||||
font-weight: bold;
|
||||
color: #3c8dbc;
|
||||
}
|
||||
|
||||
.nav-tabs>li>a{
|
||||
border-radius:0px;
|
||||
}
|
||||
|
||||
.nav > li > a:hover {
|
||||
border-radius:0px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
-webkit-border-radius: 0px;
|
||||
-moz-border-radius: 0px;
|
||||
border-radius: 0px;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* select2 style overide */
|
||||
.select2-choice{
|
||||
border: none !important;
|
||||
width: 100% !important;
|
||||
border-radius: 0px !important;
|
||||
background-color: #FFF !important;
|
||||
background-image: none !important;
|
||||
}
|
||||
|
||||
|
||||
.select2-container{
|
||||
padding:3px !important;
|
||||
}
|
||||
|
||||
.select2-container-multi{
|
||||
padding:0px !important;
|
||||
border:none;
|
||||
}
|
||||
|
||||
.select2-arrow{
|
||||
background-image: none !important;
|
||||
background: #FFF !important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
.select2-drop-active {
|
||||
/*border: 1px solid black !important;*/
|
||||
border-top: none !important;
|
||||
background: #f0f0f0 !important;
|
||||
}
|
||||
|
||||
.logTime{
|
||||
font-weight: bold;
|
||||
font-size: 13px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.popupForm{
|
||||
border: none !important;
|
||||
padding: 0px 19px 14px !important;
|
||||
}
|
||||
|
||||
.content {
|
||||
background: #FFF;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
background: #FFF;
|
||||
}
|
||||
|
||||
.user-panel > .info > p {
|
||||
margin-bottom: 9px;
|
||||
max-width: 135px;
|
||||
line-height: 17px;
|
||||
}
|
||||
|
||||
.list-group-item-text{
|
||||
margin-bottom:5px;
|
||||
}
|
||||
|
||||
.list-group-item{
|
||||
padding-bottom:30px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/custom for v11.0 */
|
||||
|
||||
|
||||
.table-bordered>thead>tr>th{
|
||||
border:none !important;
|
||||
}
|
||||
|
||||
.table-bordered>thead>tr>th, .table-bordered>thead>tr>td {
|
||||
border-bottom-width: 2px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.table{
|
||||
-webkit-transition: margin-left .15s linear;
|
||||
transition: margin-left .15s linear;
|
||||
-webkit-user-select: none;
|
||||
background-color: #fff;
|
||||
-webkit-box-shadow: 0 1px 2px 0 rgba(0,0,0,.2);
|
||||
box-shadow: 0 1px 2px 0 rgba(0,0,0,.2);
|
||||
}
|
||||
|
||||
.reviewBlock{
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box
|
||||
}
|
||||
|
||||
.treeview-menu li:hover{
|
||||
font-weight:bold;
|
||||
}
|
||||
Reference in New Issue
Block a user