| 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/controllers/admin/ |
Upload File : |
<?php
defined('BASEPATH') or exit('No direct script access allowed');
/**
* @property-read Templates_model $templates_model
*/
class Templates extends AdminController
{
/**
* Initialize Templates controller
*/
public function __construct()
{
parent::__construct();
$this->load->model('templates_model');
}
/**
* Get the template modal content
*
* @return string
*/
public function modal()
{
$data['rel_type'] = $this->input->post('rel_type');
// When modal is submitted, it returns to the proposal/contract that was being edited.
$data['rel_id'] = $this->input->post('rel_id');
if ($this->input->post('slug') == 'new') {
$data['title'] = _l('add_template');
} elseif ($this->input->post('slug') == 'edit') {
$data['title'] = _l('edit_template');
$data['id'] = $this->input->post('id');
$this->authorize($data['id']);
$data['template'] = $this->templates_model->find($data['id']);
}
$this->load->view('admin/includes/modals/template', $data);
}
/**
* Get template(s) data
*
* @param int|null $id
*/
public function index($id = null)
{
$data['rel_type'] = $this->input->post('rel_type');
$data['rel_id'] = $this->input->post('rel_id');
$where = [];
if (staff_cant('view_all_templates', $data['rel_type'])) {
$where['addedfrom'] = get_staff_user_id();
}
$data['templates'] = $this->templates_model->getByType($data['rel_type'], $where);
if (is_numeric($id)) {
$template = $this->templates_model->find($id);
echo json_encode([
'data' => $template,
]);
die;
}
$this->load->view('admin/includes/templates', $data);
}
/**
* Manage template
*
* @param int|null $id
*
*/
public function template($id = null)
{
$content = $this->input->post('content', false);
$content = html_purify($content);
$data['name'] = $this->input->post('name');
$data['content'] = $content;
$data['addedfrom'] = get_staff_user_id();
$data['type'] = $this->input->post('rel_type');
// so when modal is submitted, it returns to the proposal/contract that was being edited.
$rel_id = $this->input->post('rel_id');
if (is_numeric($id)) {
$this->authorize($id);
$success = $this->templates_model->update($id, $data);
$message = _l('template_updated');
} else {
$success = $this->templates_model->create($data);
$message = _l('template_added');
}
if ($success) {
set_alert('success', $message);
}
redirect(
$data['type'] == 'contracts' ?
admin_url('contracts/contract/' . $rel_id) :
admin_url('proposals/list_proposals/' . $rel_id)
);
}
/**
* Delete template by given id
*
* @param int $id
*
* @return array
*/
public function delete($id)
{
$this->authorize($id);
$this->templates_model->delete($id);
echo json_encode([
'success' => true,
]);
}
/**
* Authorize the template for update/delete
*
* @param int $id
*
* @return void
*/
protected function authorize($id)
{
$template = $this->templates_model->find($id);
if (!$template || $template->addedfrom != get_staff_user_id() && !is_admin()) {
if ($this->input->is_ajax_request()) {
ajax_access_denied();
} else {
access_denied();
}
}
}
}