first commit
This commit is contained in:
@@ -0,0 +1,785 @@
|
||||
<?php
|
||||
class ControllerCommonColumnLeft extends Controller {
|
||||
public function index() {
|
||||
if (isset($this->request->get['user_token']) && isset($this->session->data['user_token']) && ($this->request->get['user_token'] == $this->session->data['user_token'])) {
|
||||
$this->load->language('common/column_left');
|
||||
|
||||
// Create a 3 level menu array
|
||||
// Level 2 can not have children
|
||||
|
||||
// Menu
|
||||
$data['menus'][] = array(
|
||||
'id' => 'menu-dashboard',
|
||||
'icon' => 'fa-dashboard',
|
||||
'name' => $this->language->get('text_dashboard'),
|
||||
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
|
||||
// Catalog
|
||||
$catalog = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'catalog/category')) {
|
||||
$catalog[] = array(
|
||||
'name' => $this->language->get('text_category'),
|
||||
'href' => $this->url->link('catalog/category', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'catalog/product')) {
|
||||
$catalog[] = array(
|
||||
'name' => $this->language->get('text_product'),
|
||||
'href' => $this->url->link('catalog/product', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'catalog/recurring')) {
|
||||
$catalog[] = array(
|
||||
'name' => $this->language->get('text_recurring'),
|
||||
'href' => $this->url->link('catalog/recurring', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'catalog/filter')) {
|
||||
$catalog[] = array(
|
||||
'name' => $this->language->get('text_filter'),
|
||||
'href' => $this->url->link('catalog/filter', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
// Attributes
|
||||
$attribute = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'catalog/attribute')) {
|
||||
$attribute[] = array(
|
||||
'name' => $this->language->get('text_attribute'),
|
||||
'href' => $this->url->link('catalog/attribute', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'catalog/attribute_group')) {
|
||||
$attribute[] = array(
|
||||
'name' => $this->language->get('text_attribute_group'),
|
||||
'href' => $this->url->link('catalog/attribute_group', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($attribute) {
|
||||
$catalog[] = array(
|
||||
'name' => $this->language->get('text_attribute'),
|
||||
'href' => '',
|
||||
'children' => $attribute
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'catalog/option')) {
|
||||
$catalog[] = array(
|
||||
'name' => $this->language->get('text_option'),
|
||||
'href' => $this->url->link('catalog/option', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'catalog/manufacturer')) {
|
||||
$catalog[] = array(
|
||||
'name' => $this->language->get('text_manufacturer'),
|
||||
'href' => $this->url->link('catalog/manufacturer', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'catalog/download')) {
|
||||
$catalog[] = array(
|
||||
'name' => $this->language->get('text_download'),
|
||||
'href' => $this->url->link('catalog/download', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'catalog/review')) {
|
||||
$catalog[] = array(
|
||||
'name' => $this->language->get('text_review'),
|
||||
'href' => $this->url->link('catalog/review', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'catalog/information')) {
|
||||
$catalog[] = array(
|
||||
'name' => $this->language->get('text_information'),
|
||||
'href' => $this->url->link('catalog/information', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($catalog) {
|
||||
$data['menus'][] = array(
|
||||
'id' => 'menu-catalog',
|
||||
'icon' => 'fa-tags',
|
||||
'name' => $this->language->get('text_catalog'),
|
||||
'href' => '',
|
||||
'children' => $catalog
|
||||
);
|
||||
}
|
||||
|
||||
// BLOG
|
||||
$blog = array();
|
||||
if ($this->user->hasPermission('access', 'blog/article')) {
|
||||
$blog[] = array(
|
||||
'name' => $this->language->get('text_blog_article'),
|
||||
'href' => $this->url->link('blog/article', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'blog/category')) {
|
||||
$blog[] = array(
|
||||
'name' => $this->language->get('text_blog_category'),
|
||||
'href' => $this->url->link('blog/category', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'blog/review')) {
|
||||
$blog[] = array(
|
||||
'name' => $this->language->get('text_blog_review'),
|
||||
'href' => $this->url->link('blog/review', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'blog/setting')) {
|
||||
$blog[] = array(
|
||||
'name' => $this->language->get('text_blog_setting'),
|
||||
'href' => $this->url->link('blog/setting', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($blog) {
|
||||
$data['menus'][] = array(
|
||||
'id' => 'menu-blog',
|
||||
'icon' => 'fa-book',
|
||||
'name' => $this->language->get('text_blog'),
|
||||
'href' => '',
|
||||
'children' => $blog
|
||||
);
|
||||
}
|
||||
|
||||
// SERVICES
|
||||
$service = array();
|
||||
if ($this->user->hasPermission('access', 'service/service')) {
|
||||
$service[] = array(
|
||||
'name' => $this->language->get('text_service'),
|
||||
'href' => $this->url->link('service/service', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($service) {
|
||||
$data['menus'][] = array(
|
||||
'id' => 'menu-service',
|
||||
'icon' => 'fa-wrench',
|
||||
'name' => $this->language->get('text_service_title'),
|
||||
'href' => '',
|
||||
'children' => $service
|
||||
);
|
||||
}
|
||||
|
||||
// Extension
|
||||
$marketplace = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'marketplace/opencartforum')) {
|
||||
$marketplace[] = array(
|
||||
'name' => $this->language->get('text_opencartforum'),
|
||||
'href' => $this->url->link('marketplace/opencartforum', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'marketplace/marketplace')) {
|
||||
$marketplace[] = array(
|
||||
'name' => $this->language->get('text_marketplace'),
|
||||
'href' => $this->url->link('marketplace/marketplace', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'marketplace/installer')) {
|
||||
$marketplace[] = array(
|
||||
'name' => $this->language->get('text_installer'),
|
||||
'href' => $this->url->link('marketplace/installer', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'marketplace/extension')) {
|
||||
$marketplace[] = array(
|
||||
'name' => $this->language->get('text_extension'),
|
||||
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'].'&type=module', true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'marketplace/modification')) {
|
||||
$marketplace[] = array(
|
||||
'name' => $this->language->get('text_modification'),
|
||||
'href' => $this->url->link('marketplace/modification', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'marketplace/event')) {
|
||||
$marketplace[] = array(
|
||||
'name' => $this->language->get('text_event'),
|
||||
'href' => $this->url->link('marketplace/event', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($marketplace) {
|
||||
$data['menus'][] = array(
|
||||
'id' => 'menu-extension',
|
||||
'icon' => 'fa-puzzle-piece',
|
||||
'name' => $this->language->get('text_extension'),
|
||||
'href' => '',
|
||||
'children' => $marketplace
|
||||
);
|
||||
}
|
||||
|
||||
// Design
|
||||
$design = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'design/layout')) {
|
||||
$design[] = array(
|
||||
'name' => $this->language->get('text_layout'),
|
||||
'href' => $this->url->link('design/layout', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'design/theme')) {
|
||||
$design[] = array(
|
||||
'name' => $this->language->get('text_theme'),
|
||||
'href' => $this->url->link('design/theme', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'design/translation')) {
|
||||
$design[] = array(
|
||||
'name' => $this->language->get('text_language_editor'),
|
||||
'href' => $this->url->link('design/translation', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'design/banner')) {
|
||||
$design[] = array(
|
||||
'name' => $this->language->get('text_banner'),
|
||||
'href' => $this->url->link('design/banner', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'design/seo_url')) {
|
||||
$design[] = array(
|
||||
'name' => $this->language->get('text_seo_url'),
|
||||
'href' => $this->url->link('design/seo_url', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($design) {
|
||||
$data['menus'][] = array(
|
||||
'id' => 'menu-design',
|
||||
'icon' => 'fa-television',
|
||||
'name' => $this->language->get('text_design'),
|
||||
'href' => '',
|
||||
'children' => $design
|
||||
);
|
||||
}
|
||||
|
||||
// Sales
|
||||
$sale = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'sale/order')) {
|
||||
$sale[] = array(
|
||||
'name' => $this->language->get('text_order'),
|
||||
'href' => $this->url->link('sale/order', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'sale/recurring')) {
|
||||
$sale[] = array(
|
||||
'name' => $this->language->get('text_order_recurring'),
|
||||
'href' => $this->url->link('sale/recurring', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'sale/return')) {
|
||||
$sale[] = array(
|
||||
'name' => $this->language->get('text_return'),
|
||||
'href' => $this->url->link('sale/return', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
// Voucher
|
||||
$voucher = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'sale/voucher')) {
|
||||
$voucher[] = array(
|
||||
'name' => $this->language->get('text_voucher'),
|
||||
'href' => $this->url->link('sale/voucher', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'sale/voucher_theme')) {
|
||||
$voucher[] = array(
|
||||
'name' => $this->language->get('text_voucher_theme'),
|
||||
'href' => $this->url->link('sale/voucher_theme', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($voucher) {
|
||||
$sale[] = array(
|
||||
'name' => $this->language->get('text_voucher'),
|
||||
'href' => '',
|
||||
'children' => $voucher
|
||||
);
|
||||
}
|
||||
|
||||
if ($sale) {
|
||||
$data['menus'][] = array(
|
||||
'id' => 'menu-sale',
|
||||
'icon' => 'fa-shopping-cart',
|
||||
'name' => $this->language->get('text_sale'),
|
||||
'href' => '',
|
||||
'children' => $sale
|
||||
);
|
||||
}
|
||||
|
||||
// Customer
|
||||
$customer = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'customer/customer')) {
|
||||
$customer[] = array(
|
||||
'name' => $this->language->get('text_customer'),
|
||||
'href' => $this->url->link('customer/customer', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'customer/customer_group')) {
|
||||
$customer[] = array(
|
||||
'name' => $this->language->get('text_customer_group'),
|
||||
'href' => $this->url->link('customer/customer_group', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'customer/customer_approval')) {
|
||||
$customer[] = array(
|
||||
'name' => $this->language->get('text_customer_approval'),
|
||||
'href' => $this->url->link('customer/customer_approval', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'customer/custom_field')) {
|
||||
$customer[] = array(
|
||||
'name' => $this->language->get('text_custom_field'),
|
||||
'href' => $this->url->link('customer/custom_field', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($customer) {
|
||||
$data['menus'][] = array(
|
||||
'id' => 'menu-customer',
|
||||
'icon' => 'fa-user',
|
||||
'name' => $this->language->get('text_customer'),
|
||||
'href' => '',
|
||||
'children' => $customer
|
||||
);
|
||||
}
|
||||
|
||||
// Marketing
|
||||
$marketing = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'marketing/marketing')) {
|
||||
$marketing[] = array(
|
||||
'name' => $this->language->get('text_marketing'),
|
||||
'href' => $this->url->link('marketing/marketing', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'marketing/coupon')) {
|
||||
$marketing[] = array(
|
||||
'name' => $this->language->get('text_coupon'),
|
||||
'href' => $this->url->link('marketing/coupon', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'marketing/contact')) {
|
||||
$marketing[] = array(
|
||||
'name' => $this->language->get('text_contact'),
|
||||
'href' => $this->url->link('marketing/contact', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($marketing) {
|
||||
$data['menus'][] = array(
|
||||
'id' => 'menu-marketing',
|
||||
'icon' => 'fa-share-alt',
|
||||
'name' => $this->language->get('text_marketing'),
|
||||
'href' => '',
|
||||
'children' => $marketing
|
||||
);
|
||||
}
|
||||
|
||||
// System
|
||||
$system = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'setting/setting')) {
|
||||
$system[] = array(
|
||||
'name' => $this->language->get('text_setting'),
|
||||
'href' => $this->url->link('setting/store', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
// Users
|
||||
$user = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'user/user')) {
|
||||
$user[] = array(
|
||||
'name' => $this->language->get('text_users'),
|
||||
'href' => $this->url->link('user/user', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'user/user_permission')) {
|
||||
$user[] = array(
|
||||
'name' => $this->language->get('text_user_group'),
|
||||
'href' => $this->url->link('user/user_permission', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'user/api')) {
|
||||
$user[] = array(
|
||||
'name' => $this->language->get('text_api'),
|
||||
'href' => $this->url->link('user/api', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($user) {
|
||||
$system[] = array(
|
||||
'name' => $this->language->get('text_users'),
|
||||
'href' => '',
|
||||
'children' => $user
|
||||
);
|
||||
}
|
||||
|
||||
// Localisation
|
||||
$localisation = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/location')) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_location'),
|
||||
'href' => $this->url->link('localisation/location', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/language')) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_language'),
|
||||
'href' => $this->url->link('localisation/language', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/currency')) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_currency'),
|
||||
'href' => $this->url->link('localisation/currency', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/stock_status')) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_stock_status'),
|
||||
'href' => $this->url->link('localisation/stock_status', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/order_status')) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_order_status'),
|
||||
'href' => $this->url->link('localisation/order_status', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
// Returns
|
||||
$return = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/return_status')) {
|
||||
$return[] = array(
|
||||
'name' => $this->language->get('text_return_status'),
|
||||
'href' => $this->url->link('localisation/return_status', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/return_action')) {
|
||||
$return[] = array(
|
||||
'name' => $this->language->get('text_return_action'),
|
||||
'href' => $this->url->link('localisation/return_action', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/return_reason')) {
|
||||
$return[] = array(
|
||||
'name' => $this->language->get('text_return_reason'),
|
||||
'href' => $this->url->link('localisation/return_reason', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($return) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_return'),
|
||||
'href' => '',
|
||||
'children' => $return
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/country')) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_country'),
|
||||
'href' => $this->url->link('localisation/country', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/zone')) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_zone'),
|
||||
'href' => $this->url->link('localisation/zone', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/geo_zone')) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_geo_zone'),
|
||||
'href' => $this->url->link('localisation/geo_zone', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
// Tax
|
||||
$tax = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/tax_class')) {
|
||||
$tax[] = array(
|
||||
'name' => $this->language->get('text_tax_class'),
|
||||
'href' => $this->url->link('localisation/tax_class', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/tax_rate')) {
|
||||
$tax[] = array(
|
||||
'name' => $this->language->get('text_tax_rate'),
|
||||
'href' => $this->url->link('localisation/tax_rate', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($tax) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_tax'),
|
||||
'href' => '',
|
||||
'children' => $tax
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/length_class')) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_length_class'),
|
||||
'href' => $this->url->link('localisation/length_class', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'localisation/weight_class')) {
|
||||
$localisation[] = array(
|
||||
'name' => $this->language->get('text_weight_class'),
|
||||
'href' => $this->url->link('localisation/weight_class', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($localisation) {
|
||||
$system[] = array(
|
||||
'name' => $this->language->get('text_localisation'),
|
||||
'href' => '',
|
||||
'children' => $localisation
|
||||
);
|
||||
}
|
||||
|
||||
// Tools
|
||||
$maintenance = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'tool/upgrade')) {
|
||||
$maintenance[] = array(
|
||||
'name' => $this->language->get('text_upgrade'),
|
||||
'href' => $this->url->link('tool/upgrade', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'tool/backup')) {
|
||||
$maintenance[] = array(
|
||||
'name' => $this->language->get('text_backup'),
|
||||
'href' => $this->url->link('tool/backup', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'tool/upload')) {
|
||||
$maintenance[] = array(
|
||||
'name' => $this->language->get('text_upload'),
|
||||
'href' => $this->url->link('tool/upload', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'tool/log')) {
|
||||
$maintenance[] = array(
|
||||
'name' => $this->language->get('text_log'),
|
||||
'href' => $this->url->link('tool/log', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($maintenance) {
|
||||
$system[] = array(
|
||||
'id' => 'menu-maintenance',
|
||||
'icon' => 'fa-cog',
|
||||
'name' => $this->language->get('text_maintenance'),
|
||||
'href' => '',
|
||||
'children' => $maintenance
|
||||
);
|
||||
}
|
||||
|
||||
if ($system) {
|
||||
$data['menus'][] = array(
|
||||
'id' => 'menu-system',
|
||||
'icon' => 'fa-cog',
|
||||
'name' => $this->language->get('text_system'),
|
||||
'href' => '',
|
||||
'children' => $system
|
||||
);
|
||||
}
|
||||
|
||||
$report = array();
|
||||
|
||||
if ($this->user->hasPermission('access', 'report/report')) {
|
||||
$report[] = array(
|
||||
'name' => $this->language->get('text_reports'),
|
||||
'href' => $this->url->link('report/report', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'report/online')) {
|
||||
$report[] = array(
|
||||
'name' => $this->language->get('text_online'),
|
||||
'href' => $this->url->link('report/online', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->user->hasPermission('access', 'report/statistics')) {
|
||||
$report[] = array(
|
||||
'name' => $this->language->get('text_statistics'),
|
||||
'href' => $this->url->link('report/statistics', 'user_token=' . $this->session->data['user_token'], true),
|
||||
'children' => array()
|
||||
);
|
||||
}
|
||||
|
||||
if ($report) {
|
||||
$data['menus'][] = array(
|
||||
'id' => 'menu-report',
|
||||
'icon' => 'fa-bar-chart',
|
||||
'name' => $this->language->get('text_reports'),
|
||||
'href' => '',
|
||||
'children' => $report
|
||||
);
|
||||
}
|
||||
|
||||
// Stats
|
||||
if ($this->user->hasPermission('access', 'report/statistics')) {
|
||||
$this->load->model('sale/order');
|
||||
|
||||
$order_total = (float)$this->model_sale_order->getTotalOrders();
|
||||
|
||||
$this->load->model('report/statistics');
|
||||
|
||||
$complete_total = (float)$this->model_report_statistics->getValue('order_complete');
|
||||
|
||||
if ($complete_total && $order_total) {
|
||||
$data['complete_status'] = round(($complete_total / $order_total) * 100);
|
||||
} else {
|
||||
$data['complete_status'] = 0;
|
||||
}
|
||||
|
||||
$processing_total = (float)$this->model_report_statistics->getValue('order_processing');
|
||||
|
||||
if ($processing_total && $order_total) {
|
||||
$data['processing_status'] = round(($processing_total / $order_total) * 100);
|
||||
} else {
|
||||
$data['processing_status'] = 0;
|
||||
}
|
||||
|
||||
$other_total = (float)$this->model_report_statistics->getValue('order_other');
|
||||
|
||||
if ($other_total && $order_total) {
|
||||
$data['other_status'] = round(($other_total / $order_total) * 100);
|
||||
} else {
|
||||
$data['other_status'] = 0;
|
||||
}
|
||||
|
||||
$data['statistics_status'] = true;
|
||||
} else {
|
||||
$data['statistics_status'] = false;
|
||||
}
|
||||
|
||||
return $this->load->view('common/column_left', $data);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
class ControllerCommonDashboard extends Controller {
|
||||
public function index() {
|
||||
$this->load->language('common/dashboard');
|
||||
|
||||
$this->document->setTitle($this->language->get('heading_title'));
|
||||
|
||||
$data['user_token'] = $this->session->data['user_token'];
|
||||
|
||||
$data['breadcrumbs'] = array();
|
||||
|
||||
$data['breadcrumbs'][] = array(
|
||||
'text' => $this->language->get('text_home'),
|
||||
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
|
||||
);
|
||||
|
||||
$data['breadcrumbs'][] = array(
|
||||
'text' => $this->language->get('heading_title'),
|
||||
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
|
||||
);
|
||||
|
||||
// Check install directory exists
|
||||
if (is_dir(DIR_CATALOG . '../install')) {
|
||||
$data['error_install'] = $this->language->get('error_install');
|
||||
} else {
|
||||
$data['error_install'] = '';
|
||||
}
|
||||
|
||||
// Dashboard Extensions
|
||||
$dashboards = array();
|
||||
|
||||
$this->load->model('setting/extension');
|
||||
|
||||
// Get a list of installed modules
|
||||
$extensions = $this->model_setting_extension->getInstalled('dashboard');
|
||||
|
||||
// Add all the modules which have multiple settings for each module
|
||||
foreach ($extensions as $code) {
|
||||
if ($this->config->get('dashboard_' . $code . '_status') && $this->user->hasPermission('access', 'extension/dashboard/' . $code)) {
|
||||
$output = $this->load->controller('extension/dashboard/' . $code . '/dashboard');
|
||||
|
||||
if ($output) {
|
||||
$dashboards[] = array(
|
||||
'code' => $code,
|
||||
'width' => $this->config->get('dashboard_' . $code . '_width'),
|
||||
'sort_order' => $this->config->get('dashboard_' . $code . '_sort_order'),
|
||||
'output' => $output
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$sort_order = array();
|
||||
|
||||
foreach ($dashboards as $key => $value) {
|
||||
$sort_order[$key] = $value['sort_order'];
|
||||
}
|
||||
|
||||
array_multisort($sort_order, SORT_ASC, $dashboards);
|
||||
|
||||
// Split the array so the columns width is not more than 12 on each row.
|
||||
$width = 0;
|
||||
$column = array();
|
||||
$data['rows'] = array();
|
||||
|
||||
foreach ($dashboards as $dashboard) {
|
||||
$column[] = $dashboard;
|
||||
|
||||
$width = ($width + $dashboard['width']);
|
||||
|
||||
if ($width >= 12) {
|
||||
$data['rows'][] = $column;
|
||||
|
||||
$width = 0;
|
||||
$column = array();
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($column)) {
|
||||
$data['rows'][] = $column;
|
||||
}
|
||||
|
||||
if (DIR_STORAGE == DIR_SYSTEM . 'storage/') {
|
||||
$data['security'] = $this->load->controller('common/security');
|
||||
} else {
|
||||
$data['security'] = '';
|
||||
}
|
||||
|
||||
$data['header'] = $this->load->controller('common/header');
|
||||
$data['column_left'] = $this->load->controller('common/column_left');
|
||||
$data['footer'] = $this->load->controller('common/footer');
|
||||
|
||||
// Run currency update
|
||||
if ($this->config->get('config_currency_auto')) {
|
||||
$this->load->model('localisation/currency');
|
||||
$this->load->controller('extension/currency/' . $this->config->get('config_currency_engine')."/currency" , $this->config->get('config_currency'));
|
||||
}
|
||||
|
||||
$this->response->setOutput($this->load->view('common/dashboard', $data));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,195 @@
|
||||
<?php
|
||||
class ControllerCommonDeveloper extends Controller {
|
||||
public function index() {
|
||||
$this->load->language('common/developer');
|
||||
|
||||
$data['user_token'] = $this->session->data['user_token'];
|
||||
|
||||
$data['developer_theme'] = $this->config->get('developer_theme');
|
||||
|
||||
$eval = false;
|
||||
|
||||
$eval = '$eval = true;';
|
||||
|
||||
eval($eval);
|
||||
|
||||
if ($eval === true) {
|
||||
$data['eval'] = true;
|
||||
} else {
|
||||
$this->load->model('setting/setting');
|
||||
|
||||
$this->model_setting_setting->editSetting('developer', array('developer_theme' => 1), 0);
|
||||
|
||||
$data['eval'] = false;
|
||||
}
|
||||
|
||||
$this->response->setOutput($this->load->view('common/developer', $data));
|
||||
}
|
||||
|
||||
public function edit() {
|
||||
$this->load->language('common/developer');
|
||||
|
||||
$json = array();
|
||||
|
||||
if (!$this->user->hasPermission('modify', 'common/developer')) {
|
||||
$json['error'] = $this->language->get('error_permission');
|
||||
} else {
|
||||
$this->load->model('setting/setting');
|
||||
|
||||
$this->model_setting_setting->editSetting('developer', $this->request->post, 0);
|
||||
|
||||
$json['success'] = $this->language->get('text_success');
|
||||
}
|
||||
|
||||
$this->response->addHeader('Content-Type: application/json');
|
||||
$this->response->setOutput(json_encode($json));
|
||||
}
|
||||
|
||||
public function theme() {
|
||||
$this->load->language('common/developer');
|
||||
|
||||
$json = array();
|
||||
|
||||
if (!$this->user->hasPermission('modify', 'common/developer')) {
|
||||
$json['error'] = $this->language->get('error_permission');
|
||||
} else {
|
||||
$directories = glob(DIR_CACHE . '/template/*', GLOB_ONLYDIR);
|
||||
|
||||
if ($directories) {
|
||||
foreach ($directories as $directory) {
|
||||
$files = glob($directory . '/*');
|
||||
|
||||
foreach ($files as $file) {
|
||||
if (is_file($file)) {
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
|
||||
if (is_dir($directory)) {
|
||||
rmdir($directory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$json['success'] = sprintf($this->language->get('text_cache'), $this->language->get('text_theme'));
|
||||
}
|
||||
|
||||
$this->response->addHeader('Content-Type: application/json');
|
||||
$this->response->setOutput(json_encode($json));
|
||||
}
|
||||
|
||||
public function systemcache() {
|
||||
$this->load->language('common/developer');
|
||||
|
||||
$json = array();
|
||||
|
||||
if (!$this->user->hasPermission('modify', 'common/developer')) {
|
||||
$json['error'] = $this->language->get('error_permission');
|
||||
} else {
|
||||
$files = glob(DIR_CACHE . 'cache.*');
|
||||
|
||||
if (!empty($files)) {
|
||||
foreach($files as $file){
|
||||
$this->deldir($file);
|
||||
}
|
||||
}
|
||||
|
||||
$json['success'] = sprintf($this->language->get('text_cache'), $this->language->get('text_systemcache'));
|
||||
}
|
||||
|
||||
$this->response->addHeader('Content-Type: application/json');
|
||||
$this->response->setOutput(json_encode($json));
|
||||
}
|
||||
|
||||
public function imgcache() {
|
||||
$this->load->language('common/developer');
|
||||
|
||||
$json = array();
|
||||
|
||||
if (!$this->user->hasPermission('modify', 'common/developer')) {
|
||||
$json['error'] = $this->language->get('error_permission');
|
||||
} else {
|
||||
$imgfiles = glob(DIR_IMAGE . 'cache/*');
|
||||
|
||||
if (!empty($imgfiles)) {
|
||||
foreach($imgfiles as $imgfile){
|
||||
$this->deldir($imgfile);
|
||||
}
|
||||
}
|
||||
|
||||
$json['success'] = sprintf($this->language->get('text_img_cache'), $this->language->get('text_imgcache'));
|
||||
}
|
||||
|
||||
$this->response->addHeader('Content-Type: application/json');
|
||||
$this->response->setOutput(json_encode($json));
|
||||
}
|
||||
|
||||
public function allcache() {
|
||||
$this->load->language('common/developer');
|
||||
|
||||
$json = array();
|
||||
|
||||
if (!$this->user->hasPermission('modify', 'common/developer')) {
|
||||
$json['error'] = $this->language->get('error_permission');
|
||||
} else {
|
||||
$files = glob(DIR_CACHE . 'cache.*');
|
||||
|
||||
if (!empty($files)) {
|
||||
foreach($files as $file){
|
||||
$this->deldir($file);
|
||||
}
|
||||
}
|
||||
|
||||
$imgfiles = glob(DIR_IMAGE . 'cache/*');
|
||||
|
||||
if (!empty($imgfiles)) {
|
||||
foreach($imgfiles as $imgfile){
|
||||
$this->deldir($imgfile);
|
||||
}
|
||||
}
|
||||
|
||||
$directories = glob(DIR_CACHE . '*', GLOB_ONLYDIR);
|
||||
|
||||
if ($directories) {
|
||||
foreach ($directories as $directory) {
|
||||
$files = glob($directory . '/*');
|
||||
|
||||
foreach ($files as $file) {
|
||||
if (is_file($file)) {
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
|
||||
if (is_dir($directory)) {
|
||||
$this->deldir($directory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
$json['success'] = sprintf($this->language->get('text_cache'), $this->language->get('text_allcache'));
|
||||
}
|
||||
|
||||
$this->response->addHeader('Content-Type: application/json');
|
||||
$this->response->setOutput(json_encode($json));
|
||||
}
|
||||
|
||||
public function deldir($dirname){
|
||||
if(file_exists($dirname)) {
|
||||
if(is_dir($dirname)){
|
||||
$dir=opendir($dirname);
|
||||
while(($filename=readdir($dir)) !== false){
|
||||
if($filename!="." && $filename!=".."){
|
||||
$file=$dirname."/".$filename;
|
||||
$this->deldir($file);
|
||||
}
|
||||
}
|
||||
closedir($dir);
|
||||
rmdir($dirname);
|
||||
} else {
|
||||
@unlink($dirname);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,437 @@
|
||||
<?php
|
||||
class ControllerCommonFileManager extends Controller {
|
||||
public function index() {
|
||||
$this->load->language('common/filemanager');
|
||||
|
||||
// Find which protocol to use to pass the full image link back
|
||||
if ($this->request->server['HTTPS']) {
|
||||
$server = HTTPS_CATALOG;
|
||||
} else {
|
||||
$server = HTTP_CATALOG;
|
||||
}
|
||||
|
||||
if (isset($this->request->get['filter_name'])) {
|
||||
$filter_name = rtrim(str_replace(array('*', '/', '\\'), '', $this->request->get['filter_name']), '/');
|
||||
} else {
|
||||
$filter_name = '';
|
||||
}
|
||||
|
||||
// Make sure we have the correct directory
|
||||
if (isset($this->request->get['directory'])) {
|
||||
$directory = rtrim(DIR_IMAGE . 'catalog/' . trim(str_replace('*', '', $this->request->get['directory']), '/'), '/');
|
||||
} else if (!empty($this->session->data['file_manager_directory'])) {
|
||||
$directory = $this->session->data['file_manager_directory'];
|
||||
} else {
|
||||
$directory = DIR_IMAGE . 'catalog';
|
||||
}
|
||||
|
||||
if (!file_exists($directory)) $directory = DIR_IMAGE . 'catalog';
|
||||
$this->session->data['file_manager_directory'] = $directory;
|
||||
|
||||
$path = '/' . trim(utf8_substr($directory, utf8_strlen(DIR_IMAGE . 'catalog')), '/');
|
||||
|
||||
if ($directory != DIR_IMAGE . 'catalog' && !isset($this->request->get['directory'])) $this->request->get['directory'] = $path;
|
||||
|
||||
$data['heading_title'] = $this->language->get('heading_title') . ' - ' . $path;
|
||||
|
||||
|
||||
if (isset($this->request->get['page'])) {
|
||||
$page = $this->request->get['page'];
|
||||
} else {
|
||||
$page = 1;
|
||||
}
|
||||
|
||||
$directories = array();
|
||||
$files = array();
|
||||
|
||||
$data['images'] = array();
|
||||
|
||||
$this->load->model('tool/image');
|
||||
|
||||
if (utf8_substr(str_replace('\\', '/', realpath($directory) . '/' . $filter_name), 0, utf8_strlen(DIR_IMAGE . 'catalog')) == str_replace('\\', '/', DIR_IMAGE . 'catalog')) {
|
||||
// Get directories
|
||||
$directories = glob($directory . '/' . $filter_name . '*', GLOB_ONLYDIR);
|
||||
|
||||
if (!$directories) {
|
||||
$directories = array();
|
||||
}
|
||||
|
||||
// Get files
|
||||
$files = glob($directory . '/' . $filter_name . '*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}', GLOB_BRACE);
|
||||
|
||||
if (!$files) {
|
||||
$files = array();
|
||||
}
|
||||
}
|
||||
|
||||
// Merge directories and files
|
||||
$images = array_merge($directories, $files);
|
||||
|
||||
// Get total number of files and directories
|
||||
$image_total = count($images);
|
||||
|
||||
// Split the array based on current page number and max number of items per page of 10
|
||||
$images = array_splice($images, ($page - 1) * 16, 16);
|
||||
|
||||
foreach ($images as $image) {
|
||||
$name = $this->basename_fixed($image);
|
||||
|
||||
if (is_dir($image)) {
|
||||
$url = '';
|
||||
|
||||
if (isset($this->request->get['target'])) {
|
||||
$url .= '&target=' . $this->request->get['target'];
|
||||
}
|
||||
|
||||
if (isset($this->request->get['thumb'])) {
|
||||
$url .= '&thumb=' . $this->request->get['thumb'];
|
||||
}
|
||||
|
||||
$data['images'][] = array(
|
||||
'thumb' => '',
|
||||
'name' => $name,
|
||||
'type' => 'directory',
|
||||
'path' => utf8_substr($image, utf8_strlen(DIR_IMAGE)),
|
||||
'href' => $this->url->link('common/filemanager', 'user_token=' . $this->session->data['user_token'] . '&directory=' . urlencode(utf8_substr($image, utf8_strlen(DIR_IMAGE . 'catalog/'))) . $url, true)
|
||||
);
|
||||
} elseif (is_file($image)) {
|
||||
$data['images'][] = array(
|
||||
'thumb' => $this->model_tool_image->resize(utf8_substr($image, utf8_strlen(DIR_IMAGE)), 100, 100),
|
||||
'name' => $name,
|
||||
'type' => 'image',
|
||||
'path' => utf8_substr($image, utf8_strlen(DIR_IMAGE)),
|
||||
'href' => $server . 'image/' . utf8_substr($image, utf8_strlen(DIR_IMAGE))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$data['user_token'] = $this->session->data['user_token'];
|
||||
|
||||
if (isset($this->request->get['directory'])) {
|
||||
$data['directory'] = urlencode($this->request->get['directory']);
|
||||
} else {
|
||||
$data['directory'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->request->get['filter_name'])) {
|
||||
$data['filter_name'] = $this->request->get['filter_name'];
|
||||
} else {
|
||||
$data['filter_name'] = '';
|
||||
}
|
||||
|
||||
// Return the target ID for the file manager to set the value
|
||||
if (isset($this->request->get['target'])) {
|
||||
$data['target'] = $this->request->get['target'];
|
||||
} else {
|
||||
$data['target'] = '';
|
||||
}
|
||||
|
||||
// Return the thumbnail for the file manager to show a thumbnail
|
||||
if (isset($this->request->get['thumb'])) {
|
||||
$data['thumb'] = $this->request->get['thumb'];
|
||||
} else {
|
||||
$data['thumb'] = '';
|
||||
}
|
||||
|
||||
// Parent
|
||||
$url = '';
|
||||
|
||||
if (isset($this->request->get['directory'])) {
|
||||
$dir_part = explode('/', $this->request->get['directory']);
|
||||
|
||||
array_pop($dir_part);
|
||||
|
||||
$url .= '&directory=' . urlencode(implode('/', $dir_part));
|
||||
}
|
||||
|
||||
if (isset($this->request->get['target'])) {
|
||||
$url .= '&target=' . $this->request->get['target'];
|
||||
}
|
||||
|
||||
if (isset($this->request->get['thumb'])) {
|
||||
$url .= '&thumb=' . $this->request->get['thumb'];
|
||||
}
|
||||
|
||||
$data['parent'] = $this->url->link('common/filemanager', 'user_token=' . $this->session->data['user_token'] . $url, true);
|
||||
|
||||
// Refresh
|
||||
$url = '';
|
||||
|
||||
if (isset($this->request->get['directory'])) {
|
||||
$url .= '&directory=' . urlencode($this->request->get['directory']);
|
||||
}
|
||||
|
||||
if (isset($this->request->get['target'])) {
|
||||
$url .= '&target=' . $this->request->get['target'];
|
||||
}
|
||||
|
||||
if (isset($this->request->get['thumb'])) {
|
||||
$url .= '&thumb=' . $this->request->get['thumb'];
|
||||
}
|
||||
|
||||
$data['refresh'] = $this->url->link('common/filemanager', 'user_token=' . $this->session->data['user_token'] . $url, true);
|
||||
|
||||
$url = '';
|
||||
|
||||
if (isset($this->request->get['directory'])) {
|
||||
$url .= '&directory=' . urlencode(html_entity_decode($this->request->get['directory'], ENT_QUOTES, 'UTF-8'));
|
||||
}
|
||||
|
||||
if (isset($this->request->get['filter_name'])) {
|
||||
$url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8'));
|
||||
}
|
||||
|
||||
if (isset($this->request->get['target'])) {
|
||||
$url .= '&target=' . $this->request->get['target'];
|
||||
}
|
||||
|
||||
if (isset($this->request->get['thumb'])) {
|
||||
$url .= '&thumb=' . $this->request->get['thumb'];
|
||||
}
|
||||
|
||||
$pagination = new Pagination();
|
||||
$pagination->total = $image_total;
|
||||
$pagination->page = $page;
|
||||
$pagination->limit = 16;
|
||||
$pagination->url = $this->url->link('common/filemanager', 'user_token=' . $this->session->data['user_token'] . $url . '&page={page}', true);
|
||||
|
||||
$data['pagination'] = $pagination->render();
|
||||
|
||||
$this->response->setOutput($this->load->view('common/filemanager', $data));
|
||||
}
|
||||
|
||||
// FIX: basename not work with UTF-8 multibyte names
|
||||
private function basename_fixed($path) {
|
||||
$path_part = explode('/', $path);
|
||||
return array_pop($path_part);
|
||||
}
|
||||
|
||||
public function upload() {
|
||||
$this->load->language('common/filemanager');
|
||||
|
||||
$json = array();
|
||||
|
||||
// Check user has permission
|
||||
if (!$this->user->hasPermission('modify', 'common/filemanager')) {
|
||||
$json['error'] = $this->language->get('error_permission');
|
||||
}
|
||||
|
||||
// Make sure we have the correct directory
|
||||
if (isset($this->request->get['directory'])) {
|
||||
$directory = rtrim(DIR_IMAGE . 'catalog/' . $this->request->get['directory'], '/');
|
||||
} else {
|
||||
$directory = DIR_IMAGE . 'catalog';
|
||||
}
|
||||
|
||||
// Check its a directory
|
||||
if (!is_dir($directory) || utf8_substr(str_replace('\\', '/', realpath($directory)), 0, utf8_strlen(DIR_IMAGE . 'catalog')) != str_replace('\\', '/', DIR_IMAGE . 'catalog')) {
|
||||
$json['error'] = $this->language->get('error_directory');
|
||||
}
|
||||
|
||||
if (!$json) {
|
||||
// Check if multiple files are uploaded or just one
|
||||
$files = array();
|
||||
|
||||
if (!empty($this->request->files['file']['name']) && is_array($this->request->files['file']['name'])) {
|
||||
foreach (array_keys($this->request->files['file']['name']) as $key) {
|
||||
$files[] = array(
|
||||
'name' => $this->request->files['file']['name'][$key],
|
||||
'type' => $this->request->files['file']['type'][$key],
|
||||
'tmp_name' => $this->request->files['file']['tmp_name'][$key],
|
||||
'error' => $this->request->files['file']['error'][$key],
|
||||
'size' => $this->request->files['file']['size'][$key]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($files as $file) {
|
||||
if (is_file($file['tmp_name'])) {
|
||||
// Sanitize the filename
|
||||
$filename = $this->basename_fixed(html_entity_decode($file['name'], ENT_QUOTES, 'UTF-8'));
|
||||
|
||||
// Validate the filename length
|
||||
if ((utf8_strlen($filename) < 3) || (utf8_strlen($filename) > 255)) {
|
||||
$json['error'] = $this->language->get('error_filename');
|
||||
}
|
||||
|
||||
// Allowed file extension types
|
||||
$allowed = array(
|
||||
'jpg',
|
||||
'jpeg',
|
||||
'gif',
|
||||
'png'
|
||||
);
|
||||
|
||||
if (!in_array(utf8_strtolower(utf8_substr(strrchr($filename, '.'), 1)), $allowed)) {
|
||||
$json['error'] = $this->language->get('error_filetype');
|
||||
}
|
||||
|
||||
// Allowed file mime types
|
||||
$allowed = array(
|
||||
'image/jpeg',
|
||||
'image/pjpeg',
|
||||
'image/png',
|
||||
'image/x-png',
|
||||
'image/gif'
|
||||
);
|
||||
|
||||
if (!in_array($file['type'], $allowed)) {
|
||||
$json['error'] = $this->language->get('error_filetype');
|
||||
}
|
||||
|
||||
if ($file['size'] > $this->config->get('config_file_max_size')) {
|
||||
$json['error'] = $this->language->get('error_filesize');
|
||||
}
|
||||
|
||||
// Return any upload error
|
||||
if ($file['error'] != UPLOAD_ERR_OK) {
|
||||
$json['error'] = $this->language->get('error_upload_' . $file['error']);
|
||||
}
|
||||
} else {
|
||||
$json['error'] = $this->language->get('error_upload');
|
||||
}
|
||||
|
||||
if (!$json) {
|
||||
move_uploaded_file($file['tmp_name'], $directory . '/' . $filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$json) {
|
||||
$json['success'] = $this->language->get('text_uploaded');
|
||||
}
|
||||
|
||||
$this->response->addHeader('Content-Type: application/json');
|
||||
$this->response->setOutput(json_encode($json));
|
||||
}
|
||||
|
||||
public function folder() {
|
||||
$this->load->language('common/filemanager');
|
||||
|
||||
$json = array();
|
||||
|
||||
// Check user has permission
|
||||
if (!$this->user->hasPermission('modify', 'common/filemanager')) {
|
||||
$json['error'] = $this->language->get('error_permission');
|
||||
}
|
||||
|
||||
// Make sure we have the correct directory
|
||||
if (isset($this->request->get['directory'])) {
|
||||
$directory = rtrim(DIR_IMAGE . 'catalog/' . $this->request->get['directory'], '/');
|
||||
} else {
|
||||
$directory = DIR_IMAGE . 'catalog';
|
||||
}
|
||||
|
||||
// Check its a directory
|
||||
if (!is_dir($directory) || utf8_substr(str_replace('\\', '/', realpath($directory)), 0, utf8_strlen(DIR_IMAGE . 'catalog')) != str_replace('\\', '/', DIR_IMAGE . 'catalog')) {
|
||||
$json['error'] = $this->language->get('error_directory');
|
||||
}
|
||||
|
||||
if ($this->request->server['REQUEST_METHOD'] == 'POST') {
|
||||
// Sanitize the folder name
|
||||
$folder = $this->basename_fixed(html_entity_decode($this->request->post['folder'], ENT_QUOTES, 'UTF-8'));
|
||||
|
||||
// Validate the filename length
|
||||
if ((utf8_strlen($folder) < 3) || (utf8_strlen($folder) > 128)) {
|
||||
$json['error'] = $this->language->get('error_folder');
|
||||
}
|
||||
|
||||
// Check if directory already exists or not
|
||||
if (is_dir($directory . '/' . $folder)) {
|
||||
$json['error'] = $this->language->get('error_exists');
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($json['error'])) {
|
||||
mkdir($directory . '/' . $folder, 0777);
|
||||
chmod($directory . '/' . $folder, 0777);
|
||||
|
||||
@touch($directory . '/' . $folder . '/' . 'index.html');
|
||||
|
||||
$json['success'] = $this->language->get('text_directory');
|
||||
}
|
||||
|
||||
$this->response->addHeader('Content-Type: application/json');
|
||||
$this->response->setOutput(json_encode($json));
|
||||
}
|
||||
|
||||
public function delete() {
|
||||
$this->load->language('common/filemanager');
|
||||
|
||||
$json = array();
|
||||
|
||||
// Check user has permission
|
||||
if (!$this->user->hasPermission('modify', 'common/filemanager')) {
|
||||
$json['error'] = $this->language->get('error_permission');
|
||||
}
|
||||
|
||||
if (isset($this->request->post['path'])) {
|
||||
$paths = $this->request->post['path'];
|
||||
} else {
|
||||
$paths = array();
|
||||
}
|
||||
|
||||
// Loop through each path to run validations
|
||||
foreach ($paths as $path) {
|
||||
// Check path exsists
|
||||
if ($path == DIR_IMAGE . 'catalog' || utf8_substr(str_replace('\\', '/', realpath(DIR_IMAGE . $path)), 0, utf8_strlen(DIR_IMAGE . 'catalog')) != str_replace('\\', '/', DIR_IMAGE . 'catalog')) {
|
||||
$json['error'] = $this->language->get('error_delete');
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$json) {
|
||||
// Loop through each path
|
||||
foreach ($paths as $path) {
|
||||
$path = rtrim(DIR_IMAGE . $path, '/');
|
||||
|
||||
// If path is just a file delete it
|
||||
if (is_file($path)) {
|
||||
unlink($path);
|
||||
|
||||
// If path is a directory beging deleting each file and sub folder
|
||||
} elseif (is_dir($path)) {
|
||||
$files = array();
|
||||
|
||||
// Make path into an array
|
||||
$path = array($path);
|
||||
|
||||
// While the path array is still populated keep looping through
|
||||
while (count($path) != 0) {
|
||||
$next = array_shift($path);
|
||||
|
||||
foreach (glob($next) as $file) {
|
||||
// If directory add to path array
|
||||
if (is_dir($file)) {
|
||||
$path[] = $file . '/*';
|
||||
}
|
||||
|
||||
// Add the file to the files to be deleted array
|
||||
$files[] = $file;
|
||||
}
|
||||
}
|
||||
|
||||
// Reverse sort the file array
|
||||
rsort($files);
|
||||
|
||||
foreach ($files as $file) {
|
||||
// If file just delete
|
||||
if (is_file($file)) {
|
||||
unlink($file);
|
||||
|
||||
// If directory use the remove directory function
|
||||
} elseif (is_dir($file)) {
|
||||
rmdir($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$json['success'] = $this->language->get('text_delete');
|
||||
}
|
||||
|
||||
$this->response->addHeader('Content-Type: application/json');
|
||||
$this->response->setOutput(json_encode($json));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
class ControllerCommonFooter extends Controller {
|
||||
public function index() {
|
||||
$this->load->language('common/footer');
|
||||
|
||||
if ($this->user->isLogged() && isset($this->request->get['user_token']) && ($this->request->get['user_token'] == $this->session->data['user_token'])) {
|
||||
$data['text_version'] = sprintf($this->language->get('text_version'), VERSION);
|
||||
} else {
|
||||
$data['text_version'] = '';
|
||||
}
|
||||
|
||||
return $this->load->view('common/footer', $data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
class ControllerCommonForgotten extends Controller {
|
||||
private $error = array();
|
||||
|
||||
public function index() {
|
||||
if ($this->user->isLogged() && isset($this->request->get['user_token']) && ($this->request->get['user_token'] == $this->session->data['user_token'])) {
|
||||
$this->response->redirect($this->url->link('common/dashboard', '', true));
|
||||
}
|
||||
|
||||
if (!$this->config->get('config_password')) {
|
||||
$this->response->redirect($this->url->link('common/login', '', true));
|
||||
}
|
||||
|
||||
$this->load->language('common/forgotten');
|
||||
|
||||
$this->document->setTitle($this->language->get('heading_title'));
|
||||
|
||||
$this->load->model('user/user');
|
||||
|
||||
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
|
||||
$this->model_user_user->editCode($this->request->post['email'], token(40));
|
||||
|
||||
$this->session->data['success'] = $this->language->get('text_success');
|
||||
|
||||
$this->response->redirect($this->url->link('common/login', '', true));
|
||||
}
|
||||
|
||||
if (isset($this->error['warning'])) {
|
||||
$data['error_warning'] = $this->error['warning'];
|
||||
} else {
|
||||
$data['error_warning'] = '';
|
||||
}
|
||||
|
||||
$data['breadcrumbs'] = array();
|
||||
|
||||
$data['breadcrumbs'][] = array(
|
||||
'text' => $this->language->get('text_home'),
|
||||
'href' => $this->url->link('common/dashboard', '', true)
|
||||
);
|
||||
|
||||
$data['breadcrumbs'][] = array(
|
||||
'text' => $this->language->get('heading_title'),
|
||||
'href' => $this->url->link('common/forgotten', 'user_token=' . '', true)
|
||||
);
|
||||
|
||||
$data['action'] = $this->url->link('common/forgotten', '', true);
|
||||
|
||||
$data['cancel'] = $this->url->link('common/login', '', true);
|
||||
|
||||
if (isset($this->request->post['email'])) {
|
||||
$data['email'] = $this->request->post['email'];
|
||||
} else {
|
||||
$data['email'] = '';
|
||||
}
|
||||
|
||||
$data['header'] = $this->load->controller('common/header');
|
||||
$data['footer'] = $this->load->controller('common/footer');
|
||||
|
||||
$this->response->setOutput($this->load->view('common/forgotten', $data));
|
||||
}
|
||||
|
||||
protected function validate() {
|
||||
if (!isset($this->request->post['email'])) {
|
||||
$this->error['warning'] = $this->language->get('error_email');
|
||||
} elseif (!$this->model_user_user->getTotalUsersByEmail($this->request->post['email'])) {
|
||||
$this->error['warning'] = $this->language->get('error_email');
|
||||
}
|
||||
|
||||
return !$this->error;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
// * @source See SOURCE.txt for source and other copyright.
|
||||
// * @license GNU General Public License version 3; see LICENSE.txt
|
||||
|
||||
class ControllerCommonHeader extends Controller {
|
||||
public function index() {
|
||||
$data['title'] = $this->document->getTitle();
|
||||
|
||||
if ($this->request->server['HTTPS']) {
|
||||
$data['base'] = HTTPS_SERVER;
|
||||
} else {
|
||||
$data['base'] = HTTP_SERVER;
|
||||
}
|
||||
|
||||
$data['description'] = $this->document->getDescription();
|
||||
$data['keywords'] = $this->document->getKeywords();
|
||||
$data['links'] = $this->document->getLinks();
|
||||
$data['styles'] = $this->document->getStyles();
|
||||
$data['scripts'] = $this->document->getScripts();
|
||||
$data['lang'] = $this->language->get('code');
|
||||
$data['direction'] = $this->language->get('direction');
|
||||
|
||||
$this->load->language('common/header');
|
||||
|
||||
$data['text_logged'] = sprintf($this->language->get('text_logged'), $this->user->getUserName());
|
||||
|
||||
if (!isset($this->request->get['user_token']) || !isset($this->session->data['user_token']) || ($this->request->get['user_token'] != $this->session->data['user_token'])) {
|
||||
$data['logged'] = '';
|
||||
|
||||
$data['home'] = $this->url->link('common/login', '', true);
|
||||
} else {
|
||||
$data['logged'] = true;
|
||||
|
||||
$data['home'] = $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true);
|
||||
$data['logout'] = $this->url->link('common/logout', 'user_token=' . $this->session->data['user_token'], true);
|
||||
$data['profile'] = $this->url->link('common/profile', 'user_token=' . $this->session->data['user_token'], true);
|
||||
$data['new_category'] = $this->url->link('catalog/category/add', 'user_token=' . $this->session->data['user_token'], true);
|
||||
$data['new_customer'] = $this->url->link('user/user/add', 'user_token=' . $this->session->data['user_token'], true);
|
||||
$data['new_download'] = $this->url->link('catalog/download/add', 'user_token=' . $this->session->data['user_token'], true);
|
||||
$data['new_manufacturer'] = $this->url->link('catalog/manufacturer/add', 'user_token=' . $this->session->data['user_token'], true);
|
||||
$data['new_product'] = $this->url->link('catalog/product/add', 'user_token=' . $this->session->data['user_token'], true);
|
||||
|
||||
$this->load->model('user/user');
|
||||
|
||||
$this->load->model('tool/image');
|
||||
|
||||
$user_info = $this->model_user_user->getUser($this->user->getId());
|
||||
|
||||
if ($user_info) {
|
||||
$data['firstname'] = $user_info['firstname'];
|
||||
$data['lastname'] = $user_info['lastname'];
|
||||
$data['username'] = $user_info['username'];
|
||||
$data['user_group'] = $user_info['user_group'];
|
||||
|
||||
if (is_file(DIR_IMAGE . $user_info['image'])) {
|
||||
$data['image'] = $this->model_tool_image->resize($user_info['image'], 45, 45);
|
||||
} else {
|
||||
$data['image'] = $this->model_tool_image->resize('profile.png', 45, 45);
|
||||
}
|
||||
} else {
|
||||
$data['firstname'] = '';
|
||||
$data['lastname'] = '';
|
||||
$data['user_group'] = '';
|
||||
$data['image'] = '';
|
||||
}
|
||||
|
||||
// Online Stores
|
||||
$data['stores'] = array();
|
||||
|
||||
$data['stores'][] = array(
|
||||
'name' => $this->config->get('config_name'),
|
||||
'href' => HTTP_CATALOG
|
||||
);
|
||||
|
||||
$this->load->model('setting/store');
|
||||
|
||||
$results = $this->model_setting_store->getStores();
|
||||
|
||||
foreach ($results as $result) {
|
||||
$data['stores'][] = array(
|
||||
'name' => $result['name'],
|
||||
'href' => $result['url']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$data['search'] = $this->load->controller('search/search');
|
||||
|
||||
return $this->load->view('common/header', $data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
class ControllerCommonLogin extends Controller {
|
||||
private $error = array();
|
||||
|
||||
public function index() {
|
||||
$this->load->language('common/login');
|
||||
|
||||
$this->document->setTitle($this->language->get('heading_title'));
|
||||
|
||||
if ($this->user->isLogged() && isset($this->request->get['user_token']) && ($this->request->get['user_token'] == $this->session->data['user_token'])) {
|
||||
$this->response->redirect($this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true));
|
||||
}
|
||||
|
||||
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
|
||||
$this->session->data['user_token'] = token(32);
|
||||
|
||||
if (isset($this->request->post['redirect']) && (strpos($this->request->post['redirect'], HTTP_SERVER) === 0 || strpos($this->request->post['redirect'], HTTPS_SERVER) === 0)) {
|
||||
$this->response->redirect($this->request->post['redirect'] . '&user_token=' . $this->session->data['user_token']);
|
||||
} else {
|
||||
$this->response->redirect($this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true));
|
||||
}
|
||||
}
|
||||
|
||||
if ((isset($this->session->data['user_token']) && !isset($this->request->get['user_token'])) || ((isset($this->request->get['user_token']) && (isset($this->session->data['user_token']) && ($this->request->get['user_token'] != $this->session->data['user_token']))))) {
|
||||
$this->error['warning'] = $this->language->get('error_token');
|
||||
}
|
||||
|
||||
if (isset($this->error['error_attempts'])) {
|
||||
$data['error_warning'] = $this->error['error_attempts'];
|
||||
} elseif (isset($this->error['warning'])) {
|
||||
$data['error_warning'] = $this->error['warning'];
|
||||
} else {
|
||||
$data['error_warning'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->session->data['success'])) {
|
||||
$data['success'] = $this->session->data['success'];
|
||||
|
||||
unset($this->session->data['success']);
|
||||
} else {
|
||||
$data['success'] = '';
|
||||
}
|
||||
|
||||
$data['action'] = $this->url->link('common/login', '', true);
|
||||
|
||||
if (isset($this->request->post['username'])) {
|
||||
$data['username'] = $this->request->post['username'];
|
||||
} else {
|
||||
$data['username'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->request->post['password'])) {
|
||||
$data['password'] = $this->request->post['password'];
|
||||
} else {
|
||||
$data['password'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->request->get['route'])) {
|
||||
$route = $this->request->get['route'];
|
||||
|
||||
unset($this->request->get['route']);
|
||||
unset($this->request->get['user_token']);
|
||||
|
||||
$url = '';
|
||||
|
||||
if ($this->request->get) {
|
||||
$url .= http_build_query($this->request->get);
|
||||
}
|
||||
|
||||
$data['redirect'] = $this->url->link($route, $url, true);
|
||||
} else {
|
||||
$data['redirect'] = '';
|
||||
}
|
||||
|
||||
if ($this->config->get('config_password')) {
|
||||
$data['forgotten'] = $this->url->link('common/forgotten', '', true);
|
||||
} else {
|
||||
$data['forgotten'] = '';
|
||||
}
|
||||
|
||||
$data['header'] = $this->load->controller('common/header');
|
||||
$data['footer'] = $this->load->controller('common/footer');
|
||||
|
||||
$this->response->setOutput($this->load->view('common/login', $data));
|
||||
}
|
||||
|
||||
protected function validate() {
|
||||
if(!isset($this->request->post['username']) || !isset($this->request->post['password']) || !$this->request->post['username'] || !$this->request->post['password']) {
|
||||
$this->error['warning'] = $this->language->get('error_login');
|
||||
} else {
|
||||
$this->load->model('user/user');
|
||||
|
||||
// Check how many login attempts have been made.
|
||||
$login_info = $this->model_user_user->getLoginAttempts($this->request->post['username']);
|
||||
|
||||
if ($login_info && ($login_info['total'] >= $this->config->get('config_login_attempts')) && strtotime('-1 hour') < strtotime($login_info['date_modified'])) {
|
||||
$this->error['error_attempts'] = $this->language->get('error_attempts');
|
||||
}
|
||||
}
|
||||
|
||||
if(!$this->error) {
|
||||
if (!$this->user->login($this->request->post['username'], html_entity_decode($this->request->post['password'], ENT_QUOTES, 'UTF-8'))) {
|
||||
$this->error['warning'] = $this->language->get('error_login');
|
||||
|
||||
$this->model_user_user->addLoginAttempt($this->request->post['username']);
|
||||
|
||||
unset($this->session->data['user_token']);
|
||||
} else {
|
||||
$this->model_user_user->deleteLoginAttempts($this->request->post['username']);
|
||||
}
|
||||
}
|
||||
|
||||
return !$this->error;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
class ControllerCommonLogout extends Controller {
|
||||
public function index() {
|
||||
$this->user->logout();
|
||||
|
||||
unset($this->session->data['user_token']);
|
||||
|
||||
$this->response->redirect($this->url->link('common/login', '', true));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,211 @@
|
||||
<?php
|
||||
class ControllerCommonProfile extends Controller {
|
||||
private $error = array();
|
||||
|
||||
public function index() {
|
||||
$this->load->language('common/profile');
|
||||
|
||||
$this->document->setTitle($this->language->get('heading_title'));
|
||||
|
||||
$this->load->model('user/user');
|
||||
|
||||
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) {
|
||||
$user_data = array_merge($this->request->post, array(
|
||||
'user_group_id' => $this->user->getGroupId(),
|
||||
'status' => 1,
|
||||
));
|
||||
|
||||
$this->model_user_user->editUser($this->user->getId(), $user_data);
|
||||
|
||||
$this->session->data['success'] = $this->language->get('text_success');
|
||||
|
||||
$this->response->redirect($this->url->link('common/profile', 'user_token=' . $this->session->data['user_token'], true));
|
||||
}
|
||||
|
||||
if (isset($this->session->data['success'])) {
|
||||
$data['success'] = $this->session->data['success'];
|
||||
|
||||
unset($this->session->data['success']);
|
||||
} else {
|
||||
$data['success'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->error['warning'])) {
|
||||
$data['error_warning'] = $this->error['warning'];
|
||||
} else {
|
||||
$data['error_warning'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->error['username'])) {
|
||||
$data['error_username'] = $this->error['username'];
|
||||
} else {
|
||||
$data['error_username'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->error['password'])) {
|
||||
$data['error_password'] = $this->error['password'];
|
||||
} else {
|
||||
$data['error_password'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->error['confirm'])) {
|
||||
$data['error_confirm'] = $this->error['confirm'];
|
||||
} else {
|
||||
$data['error_confirm'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->error['firstname'])) {
|
||||
$data['error_firstname'] = $this->error['firstname'];
|
||||
} else {
|
||||
$data['error_firstname'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->error['lastname'])) {
|
||||
$data['error_lastname'] = $this->error['lastname'];
|
||||
} else {
|
||||
$data['error_lastname'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->error['email'])) {
|
||||
$data['error_email'] = $this->error['email'];
|
||||
} else {
|
||||
$data['error_email'] = '';
|
||||
}
|
||||
|
||||
$data['breadcrumbs'] = array();
|
||||
|
||||
$data['breadcrumbs'][] = array(
|
||||
'text' => $this->language->get('text_home'),
|
||||
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
|
||||
);
|
||||
|
||||
$data['breadcrumbs'][] = array(
|
||||
'text' => $this->language->get('heading_title'),
|
||||
'href' => $this->url->link('common/profile', 'user_token=' . $this->session->data['user_token'], true)
|
||||
);
|
||||
|
||||
$data['action'] = $this->url->link('common/profile', 'user_token=' . $this->session->data['user_token'], true);
|
||||
|
||||
$data['cancel'] = $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true);
|
||||
|
||||
if ($this->request->server['REQUEST_METHOD'] != 'POST') {
|
||||
$user_info = $this->model_user_user->getUser($this->user->getId());
|
||||
}
|
||||
|
||||
if (isset($this->request->post['username'])) {
|
||||
$data['username'] = $this->request->post['username'];
|
||||
} elseif (!empty($user_info)) {
|
||||
$data['username'] = $user_info['username'];
|
||||
} else {
|
||||
$data['username'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->request->post['password'])) {
|
||||
$data['password'] = $this->request->post['password'];
|
||||
} else {
|
||||
$data['password'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->request->post['confirm'])) {
|
||||
$data['confirm'] = $this->request->post['confirm'];
|
||||
} else {
|
||||
$data['confirm'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->request->post['firstname'])) {
|
||||
$data['firstname'] = $this->request->post['firstname'];
|
||||
} elseif (!empty($user_info)) {
|
||||
$data['firstname'] = $user_info['firstname'];
|
||||
} else {
|
||||
$data['firstname'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->request->post['lastname'])) {
|
||||
$data['lastname'] = $this->request->post['lastname'];
|
||||
} elseif (!empty($user_info)) {
|
||||
$data['lastname'] = $user_info['lastname'];
|
||||
} else {
|
||||
$data['lastname'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->request->post['email'])) {
|
||||
$data['email'] = $this->request->post['email'];
|
||||
} elseif (!empty($user_info)) {
|
||||
$data['email'] = $user_info['email'];
|
||||
} else {
|
||||
$data['email'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->request->post['image'])) {
|
||||
$data['image'] = $this->request->post['image'];
|
||||
} elseif (!empty($user_info)) {
|
||||
$data['image'] = $user_info['image'];
|
||||
} else {
|
||||
$data['image'] = '';
|
||||
}
|
||||
|
||||
$this->load->model('tool/image');
|
||||
|
||||
if (isset($this->request->post['image']) && is_file(DIR_IMAGE . $this->request->post['image'])) {
|
||||
$data['thumb'] = $this->model_tool_image->resize($this->request->post['image'], 100, 100);
|
||||
} elseif (!empty($user_info) && $user_info['image'] && is_file(DIR_IMAGE . $user_info['image'])) {
|
||||
$data['thumb'] = $this->model_tool_image->resize($user_info['image'], 100, 100);
|
||||
} else {
|
||||
$data['thumb'] = $this->model_tool_image->resize('no_image.png', 100, 100);
|
||||
}
|
||||
|
||||
$data['placeholder'] = $this->model_tool_image->resize('no_image.png', 100, 100);
|
||||
|
||||
$data['header'] = $this->load->controller('common/header');
|
||||
$data['column_left'] = $this->load->controller('common/column_left');
|
||||
$data['footer'] = $this->load->controller('common/footer');
|
||||
|
||||
$this->response->setOutput($this->load->view('common/profile', $data));
|
||||
}
|
||||
|
||||
protected function validateForm() {
|
||||
if (!$this->user->hasPermission('modify', 'common/profile')) {
|
||||
$this->error['warning'] = $this->language->get('error_permission');
|
||||
}
|
||||
|
||||
if ((utf8_strlen($this->request->post['username']) < 3) || (utf8_strlen($this->request->post['username']) > 20)) {
|
||||
$this->error['username'] = $this->language->get('error_username');
|
||||
}
|
||||
|
||||
$user_info = $this->model_user_user->getUserByUsername($this->request->post['username']);
|
||||
|
||||
if ($user_info && ($this->user->getId() != $user_info['user_id'])) {
|
||||
$this->error['warning'] = $this->language->get('error_exists_username');
|
||||
}
|
||||
|
||||
if ((utf8_strlen(trim($this->request->post['firstname'])) < 1) || (utf8_strlen(trim($this->request->post['firstname'])) > 32)) {
|
||||
$this->error['firstname'] = $this->language->get('error_firstname');
|
||||
}
|
||||
|
||||
if ((utf8_strlen(trim($this->request->post['lastname'])) < 1) || (utf8_strlen(trim($this->request->post['lastname'])) > 32)) {
|
||||
$this->error['lastname'] = $this->language->get('error_lastname');
|
||||
}
|
||||
|
||||
if ((utf8_strlen($this->request->post['email']) > 96) || !filter_var($this->request->post['email'], FILTER_VALIDATE_EMAIL)) {
|
||||
$this->error['email'] = $this->language->get('error_email');
|
||||
}
|
||||
|
||||
$user_info = $this->model_user_user->getUserByEmail($this->request->post['email']);
|
||||
|
||||
if ($user_info && ($this->user->getId() != $user_info['user_id'])) {
|
||||
$this->error['warning'] = $this->language->get('error_exists_email');
|
||||
}
|
||||
|
||||
if ($this->request->post['password']) {
|
||||
if ((utf8_strlen(html_entity_decode($this->request->post['password'], ENT_QUOTES, 'UTF-8')) < 4) || (utf8_strlen(html_entity_decode($this->request->post['password'], ENT_QUOTES, 'UTF-8')) > 40)) {
|
||||
$this->error['password'] = $this->language->get('error_password');
|
||||
}
|
||||
|
||||
if ($this->request->post['password'] != $this->request->post['confirm']) {
|
||||
$this->error['confirm'] = $this->language->get('error_confirm');
|
||||
}
|
||||
}
|
||||
|
||||
return !$this->error;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
class ControllerCommonReset extends Controller {
|
||||
private $error = array();
|
||||
|
||||
public function index() {
|
||||
if ($this->user->isLogged() && isset($this->request->get['user_token']) && ($this->request->get['user_token'] == $this->session->data['user_token'])) {
|
||||
$this->response->redirect($this->url->link('common/dashboard', '', true));
|
||||
}
|
||||
|
||||
if (!$this->config->get('config_password')) {
|
||||
$this->response->redirect($this->url->link('common/login', '', true));
|
||||
}
|
||||
|
||||
if (isset($this->request->get['code'])) {
|
||||
$code = $this->request->get['code'];
|
||||
} else {
|
||||
$code = '';
|
||||
}
|
||||
|
||||
$this->load->model('user/user');
|
||||
|
||||
$user_info = $this->model_user_user->getUserByCode($code);
|
||||
|
||||
if ($user_info) {
|
||||
$this->load->language('common/reset');
|
||||
|
||||
$this->document->setTitle($this->language->get('heading_title'));
|
||||
|
||||
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
|
||||
$this->model_user_user->editPassword($user_info['user_id'], $this->request->post['password']);
|
||||
|
||||
$this->model_user_user->deleteLoginAttempts($user_info['username']);
|
||||
|
||||
$this->session->data['success'] = $this->language->get('text_success');
|
||||
|
||||
$this->response->redirect($this->url->link('common/login', '', true));
|
||||
}
|
||||
|
||||
$data['breadcrumbs'] = array();
|
||||
|
||||
$data['breadcrumbs'][] = array(
|
||||
'text' => $this->language->get('text_home'),
|
||||
'href' => $this->url->link('common/dashboard', '', true)
|
||||
);
|
||||
|
||||
$data['breadcrumbs'][] = array(
|
||||
'text' => $this->language->get('heading_title'),
|
||||
'href' => $this->url->link('common/reset', '', true)
|
||||
);
|
||||
|
||||
if (isset($this->error['password'])) {
|
||||
$data['error_password'] = $this->error['password'];
|
||||
} else {
|
||||
$data['error_password'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->error['confirm'])) {
|
||||
$data['error_confirm'] = $this->error['confirm'];
|
||||
} else {
|
||||
$data['error_confirm'] = '';
|
||||
}
|
||||
|
||||
$data['action'] = $this->url->link('common/reset', 'code=' . $code, true);
|
||||
|
||||
$data['cancel'] = $this->url->link('common/login', '', true);
|
||||
|
||||
if (isset($this->request->post['password'])) {
|
||||
$data['password'] = $this->request->post['password'];
|
||||
} else {
|
||||
$data['password'] = '';
|
||||
}
|
||||
|
||||
if (isset($this->request->post['confirm'])) {
|
||||
$data['confirm'] = $this->request->post['confirm'];
|
||||
} else {
|
||||
$data['confirm'] = '';
|
||||
}
|
||||
|
||||
$data['header'] = $this->load->controller('common/header');
|
||||
$data['footer'] = $this->load->controller('common/footer');
|
||||
|
||||
$this->response->setOutput($this->load->view('common/reset', $data));
|
||||
} else {
|
||||
$this->load->model('setting/setting');
|
||||
|
||||
$this->model_setting_setting->editSettingValue('config', 'config_password', '0');
|
||||
|
||||
return new Action('common/login');
|
||||
}
|
||||
}
|
||||
|
||||
protected function validate() {
|
||||
if ((utf8_strlen(html_entity_decode($this->request->post['password'], ENT_QUOTES, 'UTF-8')) < 4) || (utf8_strlen(html_entity_decode($this->request->post['password'], ENT_QUOTES, 'UTF-8')) > 40)) {
|
||||
$this->error['password'] = $this->language->get('error_password');
|
||||
}
|
||||
|
||||
if ($this->request->post['confirm'] != $this->request->post['password']) {
|
||||
$this->error['confirm'] = $this->language->get('error_confirm');
|
||||
}
|
||||
|
||||
return !$this->error;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
<?php
|
||||
class ControllerCommonSecurity extends Controller {
|
||||
public function index() {
|
||||
$this->load->language('common/security');
|
||||
|
||||
$data['text_instruction'] = $this->language->get('text_instruction');
|
||||
|
||||
$data['user_token'] = $this->session->data['user_token'];
|
||||
|
||||
$data['storage'] = DIR_SYSTEM . 'storage/';
|
||||
|
||||
$path = '';
|
||||
|
||||
$data['paths'] = array();
|
||||
|
||||
$parts = explode('/', str_replace('\\', '/', rtrim(DIR_SYSTEM, '/')));
|
||||
|
||||
foreach ($parts as $part) {
|
||||
$path .= $part . '/';
|
||||
|
||||
$data['paths'][] = $path;
|
||||
}
|
||||
|
||||
rsort($data['paths']);
|
||||
|
||||
$data['document_root'] = str_replace('\\', '/', realpath($this->request->server['DOCUMENT_ROOT'] . '/../') . '/');
|
||||
|
||||
return $this->load->view('common/security', $data);
|
||||
}
|
||||
|
||||
public function move() {
|
||||
$this->load->language('common/security');
|
||||
|
||||
$json = array();
|
||||
|
||||
if ($this->request->post['path']) {
|
||||
$path = $this->request->post['path'];
|
||||
} else {
|
||||
$path = '';
|
||||
}
|
||||
|
||||
if ($this->request->post['directory']) {
|
||||
$directory = $this->request->post['directory'];
|
||||
} else {
|
||||
$directory = '';
|
||||
}
|
||||
|
||||
if (!$this->user->hasPermission('modify', 'common/security')) {
|
||||
$json['error'] = $this->language->get('error_permission');
|
||||
} else {
|
||||
if (DIR_STORAGE != DIR_SYSTEM . 'storage/') {
|
||||
$data['error'] = $this->language->get('error_path');
|
||||
}
|
||||
|
||||
if (!$path || str_replace('\\', '/', realpath($path)) . '/' != str_replace('\\', '/', substr(DIR_SYSTEM, 0, strlen($path)))) {
|
||||
$json['error'] = $this->language->get('error_path');
|
||||
}
|
||||
|
||||
if (!$directory || !preg_match('/^[a-zA-Z0-9_-]+$/', $directory)) {
|
||||
$json['error'] = $this->language->get('error_directory');
|
||||
}
|
||||
|
||||
if (is_dir($path . $directory)) {
|
||||
$json['error'] = $this->language->get('error_exists');
|
||||
}
|
||||
|
||||
if (!is_writable(realpath(DIR_APPLICATION . '/../') . '/config.php') || !is_writable(DIR_APPLICATION . 'config.php')) {
|
||||
$json['error'] = $this->language->get('error_writable');
|
||||
}
|
||||
|
||||
if (!$json) {
|
||||
$files = array();
|
||||
|
||||
// Make path into an array
|
||||
$source = array(DIR_SYSTEM . 'storage/');
|
||||
|
||||
// While the path array is still populated keep looping through
|
||||
while (count($source) != 0) {
|
||||
$next = array_shift($source);
|
||||
|
||||
foreach (glob($next) as $file) {
|
||||
// If directory add to path array
|
||||
if (is_dir($file)) {
|
||||
$source[] = $file . '/*';
|
||||
}
|
||||
|
||||
// Add the file to the files to be deleted array
|
||||
$files[] = $file;
|
||||
}
|
||||
}
|
||||
|
||||
// Create the new storage folder
|
||||
if (!is_dir($path . $directory)) {
|
||||
mkdir($path . $directory, 0777);
|
||||
}
|
||||
|
||||
// Copy the
|
||||
foreach ($files as $file) {
|
||||
$destination = $path . $directory . substr($file, strlen(DIR_SYSTEM . 'storage/'));
|
||||
|
||||
if (is_dir($file) && !is_dir($destination)) {
|
||||
mkdir($destination, 0777);
|
||||
}
|
||||
|
||||
if (is_file($file)) {
|
||||
copy($file, $destination);
|
||||
}
|
||||
}
|
||||
|
||||
// Modify the config files
|
||||
$files = array(
|
||||
DIR_APPLICATION . 'config.php',
|
||||
realpath(DIR_APPLICATION . '/../') . '/config.php'
|
||||
);
|
||||
|
||||
foreach ($files as $file) {
|
||||
$output = '';
|
||||
|
||||
$lines = file($file);
|
||||
|
||||
foreach ($lines as $line_id => $line) {
|
||||
if (strpos($line, 'define(\'DIR_STORAGE') !== false) {
|
||||
$output .= 'define(\'DIR_STORAGE\', \'' . $path . $directory . '/\');' . "\n";
|
||||
} else {
|
||||
$output .= $line;
|
||||
}
|
||||
}
|
||||
|
||||
$file = fopen($file, 'w');
|
||||
|
||||
fwrite($file, $output);
|
||||
|
||||
fclose($file);
|
||||
}
|
||||
|
||||
$json['success'] = $this->language->get('text_success');
|
||||
}
|
||||
}
|
||||
|
||||
$this->response->addHeader('Content-Type: application/json');
|
||||
$this->response->setOutput(json_encode($json));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user