OpenCart 🇺🇦

Класс ControllerCommonHome extends Controller { ... }

Тип Возвр. Описание
public mixed index ( )
Исходный код метода:
$this->language->load('common/home');

$this->document->setTitle($this->language->get('heading_title'));

$this->data['heading_title'] = $this->language->get('heading_title');

$this->data['text_overview'] = $this->language->get('text_overview');
$this->data['text_statistics'] = $this->language->get('text_statistics');
$this->data['text_latest_10_orders'] = $this->language->get('text_latest_10_orders');
$this->data['text_total_sale'] = $this->language->get('text_total_sale');
$this->data['text_total_sale_year'] = $this->language->get('text_total_sale_year');
$this->data['text_total_order'] = $this->language->get('text_total_order');
$this->data['text_total_customer'] = $this->language->get('text_total_customer');
$this->data['text_total_customer_approval'] = $this->language->get('text_total_customer_approval');
$this->data['text_total_review_approval'] = $this->language->get('text_total_review_approval');
$this->data['text_total_affiliate'] = $this->language->get('text_total_affiliate');
$this->data['text_total_affiliate_approval'] = $this->language->get('text_total_affiliate_approval');
$this->data['text_day'] = $this->language->get('text_day');
$this->data['text_week'] = $this->language->get('text_week');
$this->data['text_month'] = $this->language->get('text_month');
$this->data['text_year'] = $this->language->get('text_year');
$this->data['text_no_results'] = $this->language->get('text_no_results');

$this->data['column_order'] = $this->language->get('column_order');
$this->data['column_customer'] = $this->language->get('column_customer');
$this->data['column_status'] = $this->language->get('column_status');
$this->data['column_date_added'] = $this->language->get('column_date_added');
$this->data['column_total'] = $this->language->get('column_total');
$this->data['column_firstname'] = $this->language->get('column_firstname');
$this->data['column_lastname'] = $this->language->get('column_lastname');
$this->data['column_action'] = $this->language->get('column_action');

$this->data['entry_range'] = $this->language->get('entry_range');

// Check install directory exists
if (is_dir(dirname(DIR_APPLICATION) . '/install')) {
	$this->data['error_install'] = $this->language->get('error_install');
} else {
	$this->data['error_install'] = '';
}

// Check image directory is writable
$file = DIR_IMAGE . 'test';

$handle = fopen($file, 'a+'); 

fwrite($handle, '');

fclose($handle); 		

if (!file_exists($file)) {
	$this->data['error_image'] = sprintf($this->language->get('error_image'), DIR_IMAGE);
} else {
	$this->data['error_image'] = '';

	unlink($file);
}

// Check image cache directory is writable
$file = DIR_IMAGE . 'cache/test';

$handle = fopen($file, 'a+'); 

fwrite($handle, '');

fclose($handle); 		

if (!file_exists($file)) {
	$this->data['error_image_cache'] = sprintf($this->language->get('error_image_cache'), DIR_IMAGE . 'cache/');
} else {
	$this->data['error_image_cache'] = '';

	unlink($file);
}

// Check cache directory is writable
$file = DIR_CACHE . 'test';

$handle = fopen($file, 'a+'); 

fwrite($handle, '');

fclose($handle); 		

if (!file_exists($file)) {
	$this->data['error_cache'] = sprintf($this->language->get('error_image_cache'), DIR_CACHE);
} else {
	$this->data['error_cache'] = '';

	unlink($file);
}

// Check download directory is writable
$file = DIR_DOWNLOAD . 'test';

$handle = fopen($file, 'a+'); 

fwrite($handle, '');

fclose($handle); 		

if (!file_exists($file)) {
	$this->data['error_download'] = sprintf($this->language->get('error_download'), DIR_DOWNLOAD);
} else {
	$this->data['error_download'] = '';

	unlink($file);
}

// Check logs directory is writable
$file = DIR_LOGS . 'test';

$handle = fopen($file, 'a+'); 

fwrite($handle, '');

fclose($handle); 		

if (!file_exists($file)) {
	$this->data['error_logs'] = sprintf($this->language->get('error_logs'), DIR_LOGS);
} else {
	$this->data['error_logs'] = '';

	unlink($file);
}

$this->data['breadcrumbs'] = array();

$this->data['breadcrumbs'][] = array(
	'text'      => $this->language->get('text_home'),
	'href'      => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),
	'separator' => false
);

$this->data['token'] = $this->session->data['token'];

$this->load->model('sale/order');

$this->data['total_sale'] = $this->currency->format($this->model_sale_order->getTotalSales(), $this->config->get('config_currency'));
$this->data['total_sale_year'] = $this->currency->format($this->model_sale_order->getTotalSalesByYear(date('Y')), $this->config->get('config_currency'));
$this->data['total_order'] = $this->model_sale_order->getTotalOrders();

$this->load->model('sale/customer');

$this->data['total_customer'] = $this->model_sale_customer->getTotalCustomers();
$this->data['total_customer_approval'] = $this->model_sale_customer->getTotalCustomersAwaitingApproval();

$this->load->model('catalog/review');

$this->data['total_review'] = $this->model_catalog_review->getTotalReviews();
$this->data['total_review_approval'] = $this->model_catalog_review->getTotalReviewsAwaitingApproval();

$this->load->model('sale/affiliate');

$this->data['total_affiliate'] = $this->model_sale_affiliate->getTotalAffiliates();
$this->data['total_affiliate_approval'] = $this->model_sale_affiliate->getTotalAffiliatesAwaitingApproval();

$this->data['orders'] = array(); 

$data = array(
	'sort'  => 'o.date_added',
	'order' => 'DESC',
	'start' => 0,
	'limit' => 10
);

$results = $this->model_sale_order->getOrders($data);

foreach ($results as $result) {
	$action = array();

	$action[] = array(
		'text' => $this->language->get('text_view'),
		'href' => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'], 'SSL')
	);

	$this->data['orders'][] = array(
		'order_id'   => $result['order_id'],
		'customer'   => $result['customer'],
		'status'     => $result['status'],
		'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
		'total'      => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
		'action'     => $action
	);
}

if ($this->config->get('config_currency_auto')) {
	$this->load->model('localisation/currency');

	$this->model_localisation_currency->updateCurrencies();
}

$this->template = 'common/home.tpl';
$this->children = array(
	'common/header',
	'common/footer'
);

$this->response->setOutput($this->render());
public mixed chart ( )
Исходный код метода:
$this->language->load('common/home');

$data = array();

$data['order'] = array();
$data['customer'] = array();
$data['xaxis'] = array();

$data['order']['label'] = $this->language->get('text_order');
$data['customer']['label'] = $this->language->get('text_customer');

if (isset($this->request->get['range'])) {
	$range = $this->request->get['range'];
} else {
	$range = 'month';
}

switch ($range) {
	case 'day':
		for ($i = 0; $i < 24; $i++) {
			$query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "order` WHERE order_status_id > '" . (int)$this->config->get('config_complete_status_id') . "' AND (DATE(date_added) = DATE(NOW()) AND HOUR(date_added) = '" . (int)$i . "') GROUP BY HOUR(date_added) ORDER BY date_added ASC");

			if ($query->num_rows) {
				$data['order']['data'][]  = array($i, (int)$query->row['total']);
			} else {
				$data['order']['data'][]  = array($i, 0);
			}

			$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "customer WHERE DATE(date_added) = DATE(NOW()) AND HOUR(date_added) = '" . (int)$i . "' GROUP BY HOUR(date_added) ORDER BY date_added ASC");

			if ($query->num_rows) {
				$data['customer']['data'][] = array($i, (int)$query->row['total']);
			} else {
				$data['customer']['data'][] = array($i, 0);
			}

			$data['xaxis'][] = array($i, date('H', mktime($i, 0, 0, date('n'), date('j'), date('Y'))));
		}					
		break;
	case 'week':
		$date_start = strtotime('-' . date('w') . ' days'); 

		for ($i = 0; $i < 7; $i++) {
			$date = date('Y-m-d', $date_start + ($i * 86400));

			$query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "order` WHERE order_status_id > '" . (int)$this->config->get('config_complete_status_id') . "' AND DATE(date_added) = '" . $this->db->escape($date) . "' GROUP BY DATE(date_added)");

			if ($query->num_rows) {
				$data['order']['data'][] = array($i, (int)$query->row['total']);
			} else {
				$data['order']['data'][] = array($i, 0);
			}

			$query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "customer` WHERE DATE(date_added) = '" . $this->db->escape($date) . "' GROUP BY DATE(date_added)");

			if ($query->num_rows) {
				$data['customer']['data'][] = array($i, (int)$query->row['total']);
			} else {
				$data['customer']['data'][] = array($i, 0);
			}

			$data['xaxis'][] = array($i, date('D', strtotime($date)));
		}

		break;
	default:
	case 'month':
		for ($i = 1; $i <= date('t'); $i++) {
			$date = date('Y') . '-' . date('m') . '-' . $i;

			$query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "order` WHERE order_status_id > '" . (int)$this->config->get('config_complete_status_id') . "' AND (DATE(date_added) = '" . $this->db->escape($date) . "') GROUP BY DAY(date_added)");

			if ($query->num_rows) {
				$data['order']['data'][] = array($i, (int)$query->row['total']);
			} else {
				$data['order']['data'][] = array($i, 0);
			}	

			$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "customer WHERE DATE(date_added) = '" . $this->db->escape($date) . "' GROUP BY DAY(date_added)");

			if ($query->num_rows) {
				$data['customer']['data'][] = array($i, (int)$query->row['total']);
			} else {
				$data['customer']['data'][] = array($i, 0);
			}	

			$data['xaxis'][] = array($i, date('j', strtotime($date)));
		}
		break;
	case 'year':
		for ($i = 1; $i <= 12; $i++) {
			$query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "order` WHERE order_status_id > '" . (int)$this->config->get('config_complete_status_id') . "' AND YEAR(date_added) = '" . date('Y') . "' AND MONTH(date_added) = '" . $i . "' GROUP BY MONTH(date_added)");

			if ($query->num_rows) {
				$data['order']['data'][] = array($i, (int)$query->row['total']);
			} else {
				$data['order']['data'][] = array($i, 0);
			}

			$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "customer WHERE YEAR(date_added) = '" . date('Y') . "' AND MONTH(date_added) = '" . $i . "' GROUP BY MONTH(date_added)");

			if ($query->num_rows) { 
				$data['customer']['data'][] = array($i, (int)$query->row['total']);
			} else {
				$data['customer']['data'][] = array($i, 0);
			}

			$data['xaxis'][] = array($i, date('M', mktime(0, 0, 0, $i, 1, date('Y'))));
		}			
		break;	
} 

$this->response->setOutput(json_encode($data));
public mixed login ( )
Исходный код метода:
$route = '';

if (isset($this->request->get['route'])) {
	$part = explode('/', $this->request->get['route']);

	if (isset($part[0])) {
		$route .= $part[0];
	}

	if (isset($part[1])) {
		$route .= '/' . $part[1];
	}
}

$ignore = array(
	'common/login',
	'common/forgotten',
	'common/reset'
);	

if (!$this->user->isLogged() && !in_array($route, $ignore)) {
	return $this->forward('common/login');
}

if (isset($this->request->get['route'])) {
	$ignore = array(
		'common/login',
		'common/logout',
		'common/forgotten',
		'common/reset',
		'error/not_found',
		'error/permission'
	);

	$config_ignore = array();

	if ($this->config->get('config_token_ignore')) {
		$config_ignore = unserialize($this->config->get('config_token_ignore'));
	}

	$ignore = array_merge($ignore, $config_ignore);

	if (!in_array($route, $ignore) && (!isset($this->request->get['token']) || !isset($this->session->data['token']) || ($this->request->get['token'] != $this->session->data['token']))) {
		return $this->forward('common/login');
	}
} else {
	if (!isset($this->request->get['token']) || !isset($this->session->data['token']) || ($this->request->get['token'] != $this->session->data['token'])) {
		return $this->forward('common/login');
	}
}
public mixed permission ( )
Исходный код метода:
if (isset($this->request->get['route'])) {
	$route = '';

	$part = explode('/', $this->request->get['route']);

	if (isset($part[0])) {
		$route .= $part[0];
	}

	if (isset($part[1])) {
		$route .= '/' . $part[1];
	}

	$ignore = array(
		'common/home',
		'common/login',
		'common/logout',
		'common/forgotten',
		'common/reset',
		'error/not_found',
		'error/permission'		
	);			

	if (!in_array($route, $ignore) && !$this->user->hasPermission('access', $route)) {
		return $this->forward('error/permission');
	}
}

Связанные классы:

Название класса Роль
class Config { ... } Компонент Config используется в данном классе
class Currency { ... } Компонент Currency используется в данном классе
class DB { ... } Компонент Db используется в данном классе
class Document { ... } Компонент Document используется в данном классе
class Language { ... } Компонент Language используется в данном классе
class Request { ... } Компонент Request используется в данном классе
class Response { ... } Компонент Response используется в данном классе
class Session { ... } Компонент Session используется в данном классе
class Url { ... } Компонент Url используется в данном классе
class User { ... } Компонент User используется в данном классе

Комментарии