403Webshell
Server IP : 14.225.204.176  /  Your IP : 216.73.216.6
Web Server : nginx/1.24.0
System : Linux nodejs-ybgk 6.8.0-40-generic #40-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 5 10:34:03 UTC 2024 x86_64
User : root ( 0)
PHP Version : 8.1.34
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/html/php/wit-crm/modules/reminder/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/php/wit-crm/modules/reminder/models/Reminder_model.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Reminder_model extends App_Model
{
	private $statuses;

	public function __construct()
	{
		parent::__construct();
	}
	public function get_statuses()
	{
		return $this->statuses;
	}
	public function get_sale_agents()
	{
		return $this->db->query('SELECT DISTINCT(assigned_to) as sale_agent FROM ' . db_prefix() . 'reminders WHERE assigned_to != 0')->result_array();
	}
	public function get_reminder_years()
	{
		return $this->db->query('SELECT DISTINCT(YEAR(date)) as year FROM ' . db_prefix() . 'reminders')->result_array();
	}
	public function getCustomersData()
	{
		return $this->db->query('SELECT DISTINCT(customer) as userid, ' . db_prefix() . 'clients.company  FROM ' . db_prefix() . 'reminders JOIN ' . db_prefix() . 'clients ON ' . db_prefix() . 'clients.userid=' . db_prefix() . 'reminders.customer')->result_array();
	}
	public function get_related_doc($rel_type, $customer_id)
	{
		if ($rel_type == "quotes") {
			$this->db->where(['rel_id' => $customer_id, 'rel_type' => 'customer']);
			return $this->db->get(db_prefix() . 'proposals')->result_array();
		} else if ($rel_type == "invoice") {
			$this->db->where(['clientid' => $customer_id]);
			return $this->db->get(db_prefix() . 'invoices')->result_array();
		} else if ($rel_type == "estimate") {
			$this->db->where(['clientid' => $customer_id]);
			return $this->db->get(db_prefix() . 'estimates')->result_array();
		} else if ($rel_type == "credit_note") {
			$this->db->where(['clientid' => $customer_id]);
			return $this->db->get(db_prefix() . 'creditnotes')->result_array();
		} elseif ($rel_type == "tickets") {
			$this->db->where(['userid' => $customer_id]);
			return $this->db->get(db_prefix() . 'tickets')->result_array();
		}
	}
	public function get_contact_data_values($rel_id, $rel_type)
	{
		$data = new StdClass();
		if ($rel_type == 'customer') {
			$this->db->where('userid', $rel_id);
			$_data = $this->db->get(db_prefix() . 'clients')->row();
			$primary_contact_id = get_primary_contact_user_id($rel_id);
			if ($primary_contact_id) {
				$contact     = $this->clients_model->get_contact($primary_contact_id);
				$data->email = $contact->email;
			}

			$data->phone            = isset($_data) ? $_data->phonenumber : '';

			$data->is_using_company = false;
			if (isset($contact)) {
				$data->to = $contact->firstname . ' ' . $contact->lastname;
			} else {
				if (isset($_data) && !empty($_data->company)) {
					$data->to               = $_data->company;
					$data->is_using_company = true;
				}
			}
			$data->company = isset($_data) ? $_data->company : '';
			$data->address = isset($_data) ? clear_textarea_breaks($_data->address) : '';
			$data->zip     = isset($_data) ? $_data->zip : '';
			$data->country = isset($_data) ? $_data->country : '';
			$data->state   = isset($_data) ? $_data->state : '';
			$data->city    = isset($_data) ? $_data->city : '';
			$default_currency = $this->clients_model->get_customer_default_currency($rel_id);
			if ($default_currency != 0) {
				$data->currency = $default_currency;
			}
			//Field
			$contacts     = $this->clients_model->get_contacts($rel_id);
			if (isset($contacts)) {
				foreach ($contacts as $key => $contact) {
					$contacts[$key]['id'] = $contact['id'];
					$contacts[$key]['name'] = $contact['firstname'] . ' ' . $contact['lastname'];
				}
			}

			$data->field_to = render_select('contact', $contacts, ['id', 'name'], 'contact');
		} elseif ($rel_type = 'lead') {
			$this->db->where('id', $rel_id);
			$_data       = $this->db->get(db_prefix() . 'leads')->row();
			$data->phone = $_data->phonenumber;
			$data->is_using_company = false;
			if (empty($_data->company)) {
				$data->to = $_data->name;
			} else {
				$data->to               = $_data->company;
				$data->is_using_company = true;
			}
			$data->field_to = render_input('contact', 'contact', $data->to);
		}
		return $data;
	}
	public function add($data)
	{
		$save_and_send = isset($data['save_and_send']);
		$data['notify_by_email'] = isset($data['notify_by_email']) ? 1 : 1;
		$data['notify_by_email_client'] = isset($data['notify_by_email_client']) ? '2' : '0';
		$data['notify_by_sms_client'] = isset($data['notify_by_sms_client']) ? '2' : '0';
		$data['customer'] = $data['customer'];
		$data['description'] = $data['description'];
		$data['contact'] = $data['contact'];
		$data['date'] = to_sql_date($data['date'], true);
		$data['rel_type'] = (isset($data['rel_type'])) ? $data['rel_type'] : '';
		$data['rel_id'] = (isset($data['rel_id'])) ? $data['rel_id'] : 0;
		$data['staff'] = $data['assigned_to'];
		$data['created_by_staff'] = get_staff_user_id();
		if (isset($data['rel_type']) && $data['rel_type'] == 'service') {
			$data['services'] = implode(',', $data['services']);
		} else {
			$data['services'] = "";
		}
		if (isset($data['repeat_every']) && $data['repeat_every'] != '') {
			$data['recurring'] = 1;
			if ($data['repeat_every'] == 'custom') {
				$data['repeat_every']     = $data['repeat_every_custom'];
				$data['recurring_type']   = $data['repeat_type_custom'];
				$data['custom_recurring'] = 1;
			} else {
				$_temp                    = explode('-', $data['repeat_every']);
				$data['recurring_type']   = $_temp[1];
				$data['repeat_every']     = $_temp[0];
				$data['custom_recurring'] = 0;
			}
		} else {
			$data['recurring']    = 0;
			$data['repeat_every'] = 0;
		}
		if (isset($data['repeat_type_custom']) && isset($data['repeat_every_custom'])) {
			unset($data['repeat_type_custom']);
			unset($data['repeat_every_custom']);
		}

		$items = [];
		$hook = hooks()->apply_filters('before_create_reminder', [
			'data'  => $data,
			'items' => $items,
		]);
		$data  = $hook['data'];
		$items = $hook['items'];

		$this->db->insert(db_prefix() . 'reminders', $data);
		$insert_id = $this->db->insert_id();
		if ($insert_id) {
			if (isset($custom_fields)) {
				handle_custom_fields_post($insert_id, $custom_fields);
			}
			foreach ($items as $key => $item) {
				if ($itemid = add_new_sales_item_post($item, $insert_id, 'job')) {
					_maybe_insert_post_item_tax($itemid, $item, $insert_id, 'job');
				}
			}
			$this->log_reminder_activity($insert_id, 'reminder_activity_created', false, serialize([$data['description']]));
			log_activity('New reminder Created [ID: ' . $insert_id . ']');
			hooks()->do_action('reminder_created', $insert_id);
			return $insert_id;
		}
		return false;
	}
	public function log_reminder_activity($id, $description = '', $client = false, $additional_data = '')
	{
		$staffid   = get_staff_user_id();
		$full_name = get_staff_full_name(get_staff_user_id());
		if (DEFINED('CRON')) {
			$staffid   = '[CRON]';
			$full_name = '[CRON]';
		} elseif ($client == true) {
			$staffid   = null;
			$full_name = '';
		}
		$this->db->insert(db_prefix() . 'reminder_activity', [
			'description'     => $description,
			'date'            => date('Y-m-d H:i:s'),
			'reminder_id'          => $id,
			'staffid'         => $staffid,
			'full_name'       => $full_name,
			'additional_data' => $additional_data,
		]);
	}
	public function update($data, $id)
	{
		$affectedRows = 0;
		$save_and_send = isset($data['save_and_send']);
		$data['notify_by_email'] = isset($data['notify_by_email']);
		$data['date'] = to_sql_date($data['date'], true);
		$data['staff'] = get_staff_user_id();
		$original_task = $this->get($id);
		// Recurring task set to NO, Cancelled
		if (isset($data['rel_type']) && $data['rel_type'] == 'service') {
			$data['services'] = implode(',', $data['services']);
		} else {
			$data['services'] = "";
		}
		$data['notify_by_email_client'] = isset($data['notify_by_email_client']) ? '2' : '0';
		$data['notify_by_sms_client'] = isset($data['notify_by_sms_client']) ? '2' : '0';
		if (isset($data['repeat_every'])) {
			if ($original_task->repeat_every != '' && $data['repeat_every'] == '') {
				$data['cycles']              = 0;
				$data['total_cycles']        = 0;
				$data['last_recurring_date'] = null;
			}
			if ($data['repeat_every'] != '') {
				$data['recurring'] = 1;
				if ($data['repeat_every'] == 'custom') {
					$data['repeat_every']     = $data['repeat_every_custom'];
					$data['recurring_type']   = $data['repeat_type_custom'];
					$data['custom_recurring'] = 1;
				} else {
					$_temp                    = explode('-', $data['repeat_every']);
					$data['recurring_type']   = $_temp[1];
					$data['repeat_every']     = $_temp[0];
					$data['custom_recurring'] = 0;
				}
			} else {
				$data['recurring'] = 0;
			}
			if (isset($data['repeat_type_custom']) && isset($data['repeat_every_custom'])) {
				unset($data['repeat_type_custom']);
				unset($data['repeat_every_custom']);
			}
		}
		$items = [];
		$hook = hooks()->apply_filters('before_reminder_updated', [
			'data'          => $data,
			'items'         => $items,
		], $id);
		$data          = $hook['data'];

		$this->db->where('id', $id);
		$query = $this->db->update(db_prefix() . 'reminders', $data);
		$this->log_reminder_activity($id, 'reminder_activity_updated', false, serialize([$data['description']]));
		if ($query) {
			hooks()->do_action('after_reminder_updated', $id);
			return true;
		}
		return false;
	}

	public function update_reminder_service_value($data, $id)
	{
		$this->db->where('rem_id', $id)->delete(db_prefix() . 'reminder_service_value');
		foreach ($data as $res) {
			$inser_data = array(
				'rem_id' => $id,
				'service_id' => $res
			);
			$this->db->insert(db_prefix() . 'reminder_service_value', $inser_data);
		}
		return true; 
	}
	public function getReminderData($id)
	{
		$this->db->select(db_prefix() . 'reminders.id,'.db_prefix() . 'reminders.services,'.db_prefix() . 'reminders.total_amount,' . db_prefix() . 'reminders.description,' . db_prefix() . 'reminders.date,' . db_prefix() . 'reminders.rel_type,' . db_prefix() . 'reminders.rel_id,' . db_prefix() . 'reminders.contact,' . db_prefix() . 'reminders.customer,' . db_prefix() . 'contacts.email,' . db_prefix() . 'contacts.phonenumber,' . db_prefix() . 'reminders.custom_recurring,' . db_prefix() . 'reminders.recurring,' . db_prefix() . 'reminders.cycles,' . db_prefix() . 'reminders.total_cycles,' . db_prefix() . 'reminders.assigned_to,' . db_prefix() . 'reminders.notify_by_email,' . db_prefix() . 'reminders.repeat_every,' . db_prefix() . 'reminders.recurring_type,' . db_prefix() . 'reminders.is_complete,' . db_prefix() . 'clients.company,' . db_prefix() . 'reminders.customer,' . db_prefix() . 'reminders.notify_by_email_client,' . db_prefix() . 'reminders.notify_by_sms_client,' . db_prefix() . 'reminders.isnotified,' .  db_prefix() . 'reminders.total_amount')->from(db_prefix() . 'reminders');
		$this->db->join(db_prefix() . 'contacts', db_prefix() . 'reminders.contact=' . db_prefix() . 'contacts.id', 'left');
		$this->db->join(db_prefix() . 'clients', db_prefix() . 'reminders.customer=' . db_prefix() . 'clients.userid', 'left');
		$this->db->where([db_prefix() . 'reminders.id' => $id]);
		return $this->db->get()->row();
	}
	/**
	 * Get reminder
	 * @param  mixed $id reminder id OPTIONAL
	 * @return mixed
	 */
	public function get($id = '', $where = [], $for_editor = false)
	{
		$this->db->where($where);
		if (is_client_logged_in()) {
			$this->db->where('status !=', 0);
		}
		if (is_numeric($id) || isset($where['estimate_id'])) {
			$this->db->where(db_prefix() . 'reminders.id', $id);
			$job = $this->db->get(db_prefix() . 'reminders')->row();
			return $job;
		}
		return $this->db->get()->result_array();
	}
	public function get_reminder_activity($id)
	{
		$this->db->where('reminder_id', $id);
		$this->db->order_by('date', 'desc');
		return $this->db->get(db_prefix() . 'reminder_activity')->result_array();
	}

	public function delete($id)
	{
		$r_type = $this->db->where('id', $id)->get(db_prefix() . 'reminders')->row('rel_type');
		if ($r_type == 'custom_reminder') {
			$this->delete_attachment($id);
		}
		$this->db->where('id', $id);
		$this->db->delete(db_prefix() . 'reminders');
		if ($this->db->affected_rows() > 0) {
			$this->log_reminder_activity($id, 'reminder_activity_deleted');
			log_activity('reminder  Data Deleted [ID: ' . $id . ']');
			hooks()->do_action('reminder_deleted', $id);
			return true;
		}
		return false;
	}
	public function complete_reminder($id)
	{
		$this->db->where('id', $id);
		$this->db->update(db_prefix() . 'reminders', ['is_complete' => '0']);
		if ($this->db->affected_rows() > 0) {
			$this->log_reminder_activity($id, 'reminder_completed');
			log_activity('reminder  Data Completed [ID: ' . $id . ']');
			hooks()->do_action('reminder_completed', $id);
			return 1;
		} else {
			return 2;
		}
		return 0;
	}
	public function reopen_reminder($id)
	{
		$this->db->where('id', $id);
		$this->db->update(db_prefix() . 'reminders', ['is_complete' => '1']);
		if ($this->db->affected_rows() > 0) {
			$this->log_reminder_activity($id, 'reminder_activity_reopened');
			log_activity('reminder  Data Reopen [ID: ' . $id . ']');
			hooks()->do_action('reminder_completed', $id);
			return 1;
		} else {
			return 2;
		}
		return 0;
	}
	public function add_comment($data, $client = false)
	{
		$this->log_reminder_activity($data['reminder_id'], 'reminder_comment_added', false, serialize([$data['content']]));
		return true;
	}


	public function delete_attachment($rel_id)
	{
		$attachments = $this->getAttachments($rel_id);
		$path = REMINDERS_OTHER_ATTACHMENTS_FOLDER . $rel_id . '/';
		if ($attachments && file_exists($path)) {
			foreach ($attachments as $attachment) {
				unlink($path . $attachment['file_name']);
			}
			rmdir($path);
		}
		$this->db->where('rel_id', $rel_id);
		$this->db->where('rel_type', 'reminder');
		$this->db->delete(db_prefix() . 'files');
		if ($this->db->affected_rows() > 0) {
			return true;
		} else {
			return false;
		}
	}
	public function getAttachments($rel_id, $field = array())
	{
		if (count($field) > 0) {
			$this->db->select('' . implode(',', $field) . '');
		}
		$res =  $this->db->where('rel_id', $rel_id)->where('rel_type', 'reminder')->get(db_prefix() . 'files')->result_array();
		return $res;
	}
	public function get_email_template($where = [], $result_type = 'result_array')
	{
		$this->db->where($where);

		return $this->db->get(db_prefix() . 'emailtemplates')->{$result_type}();
	}
	public function get_created_by_ids()
	{
		return $this->db->query('SELECT DISTINCT(created_by_staff) as by_staff, CONCAT(' . db_prefix() . 'staff.firstname,' . db_prefix() . 'staff.lastname) as full_name FROM ' . db_prefix() . 'reminders JOIN ' . db_prefix() . 'staff ON ' . db_prefix() . 'staff.staffid=' . db_prefix() . 'reminders.created_by_staff')->result_array();
	}
	public function get_all_services($id = '')
	{
		if ($id) {
			$result = $this->db->where('id', $id)->get(db_prefix() . 'reminders')->row_array();
			return $result['services'];
		} else {
			return $this->db->get(db_prefix() . 'reminder_services')->result_array();
		}
	}
	  public function get_notes($rel_id, $rel_type)
    {
        $this->db->where('rel_id', $rel_id);
        $this->db->where('rel_type', $rel_type);
        $this->db->order_by('dateadded', 'desc');
        $notes = $this->db->get(db_prefix() . 'notes')->result_array();
        return hooks()->apply_filters('get_notes', $notes, ['rel_id' => $rel_id, 'rel_type' => $rel_type]);
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit