Files
php_task_1/application/controllers/Guest/Marketing_controller.php
T
2022-06-30 05:46:02 -04:00

264 lines
7.5 KiB
PHP
Executable File

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/*Powered By: Manaknightdigital Inc. https://manaknightdigital.com/ Year: 2021*/
/**
* Marketing Controller
*
* @copyright 2021 Manaknightdigital Inc.
* @link https://manaknightdigital.com
* @license Proprietary Software licensing
* @author Ryan Wong
*
*/
class Marketing_controller extends Manaknight_Controller
{
public $_data = [
'error' => '',
'success' => ''
];
public function __construct()
{
parent::__construct();
$this->load->database();
$this->load->model('marketing_model');
}
/**
* Debug Controller to error_log and turn off in production
*
* @param mixed $data
* @return void
*/
public function dl($key, $data)
{
if (ENVIRONMENT == 'development')
{
error_log($key . ' CONTROLLER : <pre>' . print_r($data, TRUE) . '</pre>');
}
}
/**
* Debug json Controller to error_log and turn off in production
*
* @param mixed $data
* @return void
*/
public function dj($key, $data)
{
if (ENVIRONMENT == 'development')
{
error_log($key . ' CONTROLLER : ' . json_encode($data));
}
}
public function get_session()
{
if (!$this->_test_mode)
{
return $_SESSION;
}
$session = $this->config->item('session_test');
if (!$session)
{
$session = [];
}
return $session;
}
public function set_session($field, $value)
{
if (!$this->_test_mode)
{
$_SESSION[$field] = $value;
}
else
{
$session = $this->config->item('session_test');
if (!$session)
{
$session = [];
}
$session[$field] = $value;
$this->config->set_item('session_test', $session);
}
}
public function destroy_session()
{
if (!$this->_test_mode)
{
unset($_SESSION);
}
else
{
$this->config->set_item('session_test', []);
}
}
public function get_setting()
{
return $this->_setting;
}
/**
* Function to generate a slug
*/
public function generate_marketing_slug($str)
{
$delimiter = '-';
$slug = strtolower(trim(preg_replace('/[\s-]+/', $delimiter, preg_replace('/[^A-Za-z0-9-]+/', $delimiter, preg_replace('/[&]/', 'and', preg_replace('/[\']/', '', iconv('UTF-8', 'ASCII//TRANSLIT', $str))))), $delimiter));
$full_path = base_url() . 'a/';
$row = $this->marketing_model->get_by_field('slug', $full_path . $slug);
if (empty($row))
{
$output['slug'] = $slug;
echo json_encode($output);
exit;
}
else
{
$i = 1;
$check_me_again = TRUE;
while ($check_me_again)
{
$slug = $slug . '-' . $i;
$row = $this->marketing_model->get_by_field('slug', $full_path . $slug);
if (empty($row))
{
$check_me_again = FALSE;
}
$i++;
}
$output['slug'] = $slug;
echo json_encode($output);
exit;
}
}
/**
* Function to return the generated page
*/
public function generate_custom_marketing_page($slug)
{
$slug_url = base_url() . 'a/';
$slug = $slug_url.$slug;
$marketing_data = $this->marketing_model->get_by_field('slug',$slug);
$this->_data['header'] = '';
$this->_data['footer'] = '';
$this->_data['content_template'] = '';
$this->_data['content'] = '';
$this->_data['success'] = '';
$this->_data['error'] = '';
$this->_data['layout_clean_mode'] = TRUE;
$this->_data['reuse_query_string'] = TRUE;
$this->_data['base_url'] = base_url();
$this->_data['total_rows'] = 25;
$this->_data['per_page'] = 25;
$this->_data['num_links'] = '';
$this->_data['full_tag_open'] = '<ul class="pagination justify-content-end">';
$this->_data['full_tag_close'] = '</ul>';
$this->_data['attributes'] = ['class' => 'page-link'];
$this->_data['first_link'] = FALSE ;
$this->_data['last_link'] = FALSE;
$this->_data['first_tag_open'] = '<li class="page-item">';
$this->_data['first_tag_close'] = '</li>';
$this->_data['prev_link'] = '&laquo';
$this->_data['setting'] = $this->get_setting();
$this->_data['list'] = [];
if($marketing_data)
{
if($marketing_data->header_template_path != '')
{
$this->_data['header'] = $marketing_data->header_template_path ? $marketing_data->header_template_path : '';
}
if($marketing_data->footer_template_path != '')
{
$this->_data['footer'] = $marketing_data->footer_template_path ? $marketing_data->footer_template_path : '';
}
$this->_data['content'] = $marketing_data->content ? $marketing_data->content : '';
$this->_data['content_template'] = $marketing_data->content_template_path ? $marketing_data->content_template_path : '';
if($marketing_data->status == 0)
{
if ($marketing_data->password_protect == '')
{
return $this->generate_marketing_template($this->_data);
}
else
{
$valid_passwords = [
'guest' => $marketing_data->password_protect
];
$valid_users = array_keys($valid_passwords);
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
if (!$validated)
{
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
die ('Not authorized');
}
return $this->generate_marketing_template($this->_data);
}
}
else
{
$this->output->set_status_header('404');
$data['heading'] = '404 Page Not Found';
$data['message'] = 'The page you requested was not found';
$this->load->view('errors/html/error_404',$data);
exit();
}
}
$this->output->set_status_header('404');
$data['heading'] = '404 Page Not Found';
$data['message'] = 'The page you requested was not found';
$this->load->view('errors/html/error_404', $data);
exit();
}
/**
* Function to generate marketing template
*/
public function generate_marketing_template($marketing_data)
{
if($marketing_data['header'] != '')
{
$this->load->view($marketing_data['header'], $marketing_data);
}
if($marketing_data['content_template'] == '')
{
echo $marketing_data['content_template'];
}
else
{
$this->load->view('Guest/Template_page', $marketing_data);
}
if($marketing_data['footer'] != '')
{
$this->load->view($marketing_data['footer'], $marketing_data);
}
}
}