| Server IP : 103.161.17.216 / Your IP : 216.73.216.1 Web Server : nginx/1.18.0 System : Linux tipsysaigoncharming 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/app.houseland.info/application/helpers/ |
Upload File : |
<?php
defined('BASEPATH') or exit('No direct script access allowed');
/**
* Get contract short_url
* @since Version 2.7.3
* @param object $contract
* @return string Url
*/
function get_contract_shortlink($contract)
{
$long_url = site_url("contract/{$contract->id}/{$contract->hash}");
if (!get_option('bitly_access_token')) {
return $long_url;
}
// Check if contract has short link, if yes return short link
if (!empty($contract->short_link)) {
return $contract->short_link;
}
// Create short link and return the newly created short link
$short_link = app_generate_short_link([
'long_url' => $long_url,
'title' => 'Contract #' . $contract->id,
]);
if ($short_link) {
$CI = &get_instance();
$CI->db->where('id', $contract->id);
$CI->db->update(db_prefix() . 'contracts', [
'short_link' => $short_link,
]);
return $short_link;
}
return $long_url;
}
/**
* Check the contract view restrictions
*
* @param int $id
* @param string $hash
*
* @return void
*/
function check_contract_restrictions($id, $hash)
{
$CI = &get_instance();
$CI->load->model('contracts_model');
if (!$hash || !$id) {
show_404();
}
if (!is_client_logged_in() && !is_staff_logged_in()) {
if (get_option('view_contract_only_logged_in') == 1) {
redirect_after_login_to_current_url();
redirect(site_url('authentication/login'));
}
}
$contract = $CI->contracts_model->get($id);
if (!$contract || ($contract->hash != $hash)) {
show_404();
}
// Do one more check
if (!is_staff_logged_in()) {
if (get_option('view_contract_only_logged_in') == 1) {
if ($contract->client != get_client_user_id()) {
show_404();
}
}
}
}
/**
* Function that will search possible contracts templates in applicaion/views/admin/contracts/templates
* Will return any found files and user will be able to add new template
*
* @return array
*/
function get_contract_templates()
{
$contract_templates = [];
if (is_dir(VIEWPATH . 'admin/contracts/templates')) {
foreach (list_files(VIEWPATH . 'admin/contracts/templates') as $template) {
$contract_templates[] = $template;
}
}
return $contract_templates;
}
/**
* Send contract signed notification to staff members
*
* @param int $contract_id
*
* @return void
*/
function send_contract_signed_notification_to_staff($contract_id)
{
$CI = &get_instance();
$CI->db->where('id', $contract_id);
$contract = $CI->db->get(db_prefix() . 'contracts')->row();
if (!$contract) {
return false;
}
// Get creator
$CI->db->select('staffid, email');
$CI->db->where('staffid', $contract->addedfrom);
$staff_contract = $CI->db->get(db_prefix() . 'staff')->result_array();
$notifiedUsers = [];
foreach ($staff_contract as $member) {
$notified = add_notification([
'description' => 'not_contract_signed',
'touserid' => $member['staffid'],
'fromcompany' => 1,
'fromuserid' => 0,
'link' => 'contracts/contract/' . $contract->id,
'additional_data' => serialize([
'<b>' . $contract->subject . '</b>',
]),
]);
if ($notified) {
array_push($notifiedUsers, $member['staffid']);
}
send_mail_template('contract_signed_to_staff', $contract, $member);
}
pusher_trigger_notification($notifiedUsers);
}
/**
* Get the recently created contracts in the given days
*
* @param integer $days
* @param integer|null $staffId
*
* @return integer
*/
function count_recently_created_contracts($days = 7, $staffId = null)
{
$diff1 = date('Y-m-d', strtotime('-' . $days . ' days'));
$diff2 = date('Y-m-d', strtotime('+' . $days . ' days'));
$staffId = is_null($staffId) ? get_staff_user_id() : $staffId;
$where_own = [];
if (staff_cant('view', 'contracts')) {
$where_own = ['addedfrom' => $staffId];
}
return total_rows(db_prefix() . 'contracts', 'dateadded BETWEEN "' . $diff1 . '" AND "' . $diff2 . '" AND trash=0' . (count($where_own) > 0 ? ' AND addedfrom=' . $staffId : ''));
}
/**
* Get total number of active contracts
*
* @param integer|null $staffId
*
* @return integer
*/
function count_active_contracts($staffId = null)
{
$where_own = [];
$staffId = is_null($staffId) ? get_staff_user_id() : $staffId;
if (staff_cant('view', 'contracts')) {
$where_own = ['addedfrom' => $staffId];
}
return total_rows(db_prefix() . 'contracts', '(DATE(dateend) >"' . date('Y-m-d') . '" AND trash=0' . (count($where_own) > 0 ? ' AND addedfrom=' . $staffId : '') . ') OR (DATE(dateend) IS NULL AND trash=0' . (count($where_own) > 0 ? ' AND addedfrom=' . $staffId : '') . ')');
}
/**
* Get total number of expired contracts
*
* @param integer|null $staffId
*
* @return integer
*/
function count_expired_contracts($staffId = null)
{
$where_own = [];
$staffId = is_null($staffId) ? get_staff_user_id() : $staffId;
if (staff_cant('view', 'contracts')) {
$where_own = ['addedfrom' => $staffId];
}
return total_rows(db_prefix() . 'contracts', array_merge(['DATE(dateend) <' => date('Y-m-d'), 'trash' => 0], $where_own));
}
/**
* Get total number of trash contracts
*
* @param integer|null $staffId
*
* @return integer
*/
function count_trash_contracts($staffId = null)
{
$where_own = [];
$staffId = is_null($staffId) ? get_staff_user_id() : $staffId;
if (staff_cant('view', 'contracts')) {
$where_own = ['addedfrom' => $staffId];
}
return total_rows(db_prefix() . 'contracts', array_merge(['trash' => 1], $where_own));
}