diff --git a/controllers/admin/AdminCartsController.php b/controllers/admin/AdminCartsController.php index ebd03b7a4..7fea8741f 100644 --- a/controllers/admin/AdminCartsController.php +++ b/controllers/admin/AdminCartsController.php @@ -134,7 +134,9 @@ class AdminCartsControllerCore extends AdminController $time = time(); $kpis = array(); - /* The data generation is located in AdminStatsControllerCore */ + $statsController = new AdminStatsController(); + $this->context->controller = $this; + $helper = new HelperKpi(); $helper->id = 'box-conversion-rate'; $helper->icon = 'icon-sort-by-attributes-alt'; @@ -144,6 +146,8 @@ class AdminCartsControllerCore extends AdminController $helper->subtitle = $this->l('30 days', null, null, false); if (ConfigurationKPI::get('CONVERSION_RATE') !== false) { $helper->value = ConfigurationKPI::get('CONVERSION_RATE'); + } else { + $helper->value = $statsController->getLatestKpiValue('conversion_rate'); } if (ConfigurationKPI::get('CONVERSION_RATE_CHART') !== false) { $helper->data = ConfigurationKPI::get('CONVERSION_RATE_CHART'); @@ -163,6 +167,8 @@ class AdminCartsControllerCore extends AdminController $helper->href = $this->context->link->getAdminLink('AdminCarts').'&action=filterOnlyAbandonedCarts'; if (ConfigurationKPI::get('ABANDONED_CARTS') !== false) { $helper->value = ConfigurationKPI::get('ABANDONED_CARTS'); + } else { + $helper->value = $statsController->getLatestKpiValue('abandoned_cart'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=abandoned_cart'; $helper->refresh = (bool)(ConfigurationKPI::get('ABANDONED_CARTS_EXPIRE') < $time); @@ -176,6 +182,8 @@ class AdminCartsControllerCore extends AdminController $helper->subtitle = $this->l('30 days', null, null, false); if (ConfigurationKPI::get('AVG_ORDER_VALUE') !== false) { $helper->value = sprintf($this->l('%s tax excl.'), ConfigurationKPI::get('AVG_ORDER_VALUE')); + } else { + $helper->value = $statsController->getLatestKpiValue('average_order_value'); } if (ConfigurationKPI::get('AVG_ORDER_VALUE_EXPIRE') < $time) { $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=average_order_value'; @@ -188,11 +196,13 @@ class AdminCartsControllerCore extends AdminController $helper->color = 'color4'; $helper->title = $this->l('Net Profit per Visitor', null, null, false); $helper->subtitle = $this->l('30 days', null, null, false); - if (ConfigurationKPI::get('NETPROFIT_VISITOR') !== false) { - $helper->value = ConfigurationKPI::get('NETPROFIT_VISITOR'); + if (ConfigurationKPI::get('NETPROFIT_VISIT') !== false) { + $helper->value = ConfigurationKPI::get('NETPROFIT_VISIT'); + } else { + $helper->value = $statsController->getLatestKpiValue('netprofit_visit'); } - $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=netprofit_visitor'; - $helper->refresh = (bool)(ConfigurationKPI::get('NETPROFIT_VISITOR_EXPIRE') < $time); + $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=netprofit_visit'; + $helper->refresh = (bool)(ConfigurationKPI::get('NETPROFIT_VISIT_EXPIRE') < $time); $kpis[] = $helper->generate(); $helper = new HelperKpiRow(); diff --git a/controllers/admin/AdminCustomerThreadsController.php b/controllers/admin/AdminCustomerThreadsController.php index fa01f8cbc..7c3e841d5 100644 --- a/controllers/admin/AdminCustomerThreadsController.php +++ b/controllers/admin/AdminCustomerThreadsController.php @@ -508,7 +508,8 @@ class AdminCustomerThreadsControllerCore extends AdminController $time = time(); $kpis = array(); - /* The data generation is located in AdminStatsControllerCore */ + $statsController = new AdminStatsController(); + $this->context->controller = $this; $helper = new HelperKpi(); $helper->id = 'box-pending-messages'; @@ -518,6 +519,8 @@ class AdminCustomerThreadsControllerCore extends AdminController $helper->title = $this->l('Pending Discussion Threads', null, null, false); if (ConfigurationKPI::get('PENDING_MESSAGES') !== false) { $helper->value = ConfigurationKPI::get('PENDING_MESSAGES'); + } else { + $helper->value = $statsController->getLatestKpiValue('pending_messages'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=pending_messages'; $helper->refresh = (bool)(ConfigurationKPI::get('PENDING_MESSAGES_EXPIRE') < $time); @@ -531,6 +534,8 @@ class AdminCustomerThreadsControllerCore extends AdminController $helper->subtitle = $this->l('30 days', null, null, false); if (ConfigurationKPI::get('AVG_MSG_RESPONSE_TIME') !== false) { $helper->value = ConfigurationKPI::get('AVG_MSG_RESPONSE_TIME'); + } else { + $helper->value = $statsController->getLatestKpiValue('avg_msg_response_time'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=avg_msg_response_time'; $helper->refresh = (bool)(ConfigurationKPI::get('AVG_MSG_RESPONSE_TIME_EXPIRE') < $time); @@ -544,6 +549,8 @@ class AdminCustomerThreadsControllerCore extends AdminController $helper->subtitle = $this->l('30 day', null, null, false); if (ConfigurationKPI::get('MESSAGES_PER_THREAD') !== false) { $helper->value = ConfigurationKPI::get('MESSAGES_PER_THREAD'); + } else { + $helper->value = $statsController->getLatestKpiValue('messages_per_thread'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=messages_per_thread'; $helper->refresh = (bool)(ConfigurationKPI::get('MESSAGES_PER_THREAD_EXPIRE') < $time); diff --git a/controllers/admin/AdminCustomersController.php b/controllers/admin/AdminCustomersController.php index 3150be406..fd4bdacc5 100644 --- a/controllers/admin/AdminCustomersController.php +++ b/controllers/admin/AdminCustomersController.php @@ -642,7 +642,8 @@ class AdminCustomersControllerCore extends AdminController $time = time(); $kpis = array(); - /* The data generation is located in AdminStatsControllerCore */ + $statsController = new AdminStatsController(); + $this->context->controller = $this; $helper = new HelperKpi(); $helper->id = 'box-gender'; @@ -652,6 +653,8 @@ class AdminCustomersControllerCore extends AdminController $helper->subtitle = $this->l('All Time', null, null, false); if (ConfigurationKPI::get('CUSTOMER_MAIN_GENDER', $this->context->language->id) !== false) { $helper->value = ConfigurationKPI::get('CUSTOMER_MAIN_GENDER', $this->context->language->id); + } else { + $helper->value = $statsController->getLatestKpiValue('customer_main_gender'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=customer_main_gender'; $helper->refresh = (bool)(ConfigurationKPI::get('CUSTOMER_MAIN_GENDER_EXPIRE', $this->context->language->id) < $time); @@ -665,6 +668,8 @@ class AdminCustomersControllerCore extends AdminController $helper->subtitle = $this->l('All Time', null, null, false); if (ConfigurationKPI::get('AVG_CUSTOMER_AGE', $this->context->language->id) !== false) { $helper->value = ConfigurationKPI::get('AVG_CUSTOMER_AGE', $this->context->language->id); + } else { + $helper->value = $statsController->getLatestKpiValue('avg_customer_age'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=avg_customer_age'; $helper->refresh = (bool)(ConfigurationKPI::get('AVG_CUSTOMER_AGE_EXPIRE', $this->context->language->id) < $time); @@ -678,6 +683,8 @@ class AdminCustomersControllerCore extends AdminController $helper->subtitle = $this->l('All Time', null, null, false); if (ConfigurationKPI::get('ORDERS_PER_CUSTOMER') !== false) { $helper->value = ConfigurationKPI::get('ORDERS_PER_CUSTOMER'); + } else { + $helper->value = $statsController->getLatestKpiValue('orders_per_customer'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=orders_per_customer'; $helper->refresh = (bool)(ConfigurationKPI::get('ORDERS_PER_CUSTOMER_EXPIRE') < $time); @@ -691,6 +698,8 @@ class AdminCustomersControllerCore extends AdminController $helper->subtitle = $this->l('All Time', null, null, false); if (ConfigurationKPI::get('NEWSLETTER_REGISTRATIONS') !== false) { $helper->value = ConfigurationKPI::get('NEWSLETTER_REGISTRATIONS'); + } else { + $helper->value = $statsController->getLatestKpiValue('newsletter_registrations'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=newsletter_registrations'; $helper->refresh = (bool)(ConfigurationKPI::get('NEWSLETTER_REGISTRATIONS_EXPIRE') < $time); diff --git a/controllers/admin/AdminModulesController.php b/controllers/admin/AdminModulesController.php index 2e9a2e165..8e7ef5a62 100644 --- a/controllers/admin/AdminModulesController.php +++ b/controllers/admin/AdminModulesController.php @@ -1301,7 +1301,8 @@ class AdminModulesControllerCore extends AdminController $time = time(); $kpis = array(); - /* The data generation is located in AdminStatsControllerCore */ + $statsController = new AdminStatsController(); + $this->context->controller = $this; $helper = new HelperKpi(); $helper->id = 'box-installed-modules'; @@ -1310,6 +1311,8 @@ class AdminModulesControllerCore extends AdminController $helper->title = $this->l('Installed Modules', null, null, false); if (ConfigurationKPI::get('INSTALLED_MODULES') !== false && ConfigurationKPI::get('INSTALLED_MODULES') != '') { $helper->value = ConfigurationKPI::get('INSTALLED_MODULES'); + } else { + $helper->value = $statsController->getLatestKpiValue('installed_modules'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=installed_modules'; $helper->refresh = (bool)(ConfigurationKPI::get('INSTALLED_MODULES_EXPIRE') < $time); @@ -1322,6 +1325,8 @@ class AdminModulesControllerCore extends AdminController $helper->title = $this->l('Disabled Modules', null, null, false); if (ConfigurationKPI::get('DISABLED_MODULES') !== false && ConfigurationKPI::get('DISABLED_MODULES') != '') { $helper->value = ConfigurationKPI::get('DISABLED_MODULES'); + } else { + $helper->value = $statsController->getLatestKpiValue('disabled_modules'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=disabled_modules'; $helper->refresh = (bool)(ConfigurationKPI::get('DISABLED_MODULES_EXPIRE') < $time); @@ -1334,6 +1339,8 @@ class AdminModulesControllerCore extends AdminController $helper->title = $this->l('Modules to update', null, null, false); if (ConfigurationKPI::get('UPDATE_MODULES') !== false && ConfigurationKPI::get('UPDATE_MODULES') != '') { $helper->value = ConfigurationKPI::get('UPDATE_MODULES'); + } else { + $helper->value = $statsController->getLatestKpiValue('update_modules'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=update_modules'; $helper->refresh = (bool)(ConfigurationKPI::get('UPDATE_MODULES_EXPIRE') < $time); diff --git a/controllers/admin/AdminOrdersController.php b/controllers/admin/AdminOrdersController.php index b67bb86d9..cb8522118 100644 --- a/controllers/admin/AdminOrdersController.php +++ b/controllers/admin/AdminOrdersController.php @@ -1244,7 +1244,8 @@ class AdminOrdersControllerCore extends AdminController $time = time(); $kpis = array(); - /* The data generation is located in AdminStatsControllerCore */ + $statsController = new AdminStatsController(); + $this->context->controller = $this; $helper = new HelperKpi(); $helper->id = 'box-conversion-rate'; @@ -1255,6 +1256,8 @@ class AdminOrdersControllerCore extends AdminController $helper->subtitle = $this->l('30 days', null, null, false); if (ConfigurationKPI::get('CONVERSION_RATE') !== false) { $helper->value = ConfigurationKPI::get('CONVERSION_RATE'); + } else { + $helper->value = $statsController->getLatestKpiValue('conversion_rate'); } if (ConfigurationKPI::get('CONVERSION_RATE_CHART') !== false) { $helper->data = ConfigurationKPI::get('CONVERSION_RATE_CHART'); @@ -1272,6 +1275,8 @@ class AdminOrdersControllerCore extends AdminController $helper->href = $this->context->link->getAdminLink('AdminCarts').'&action=filterOnlyAbandonedCarts'; if (ConfigurationKPI::get('ABANDONED_CARTS') !== false) { $helper->value = ConfigurationKPI::get('ABANDONED_CARTS'); + } else { + $helper->value = $statsController->getLatestKpiValue('abandoned_cart'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=abandoned_cart'; $helper->refresh = (bool)(ConfigurationKPI::get('ABANDONED_CARTS_EXPIRE') < $time); @@ -1285,6 +1290,8 @@ class AdminOrdersControllerCore extends AdminController $helper->subtitle = $this->l('30 days', null, null, false); if (ConfigurationKPI::get('AVG_ORDER_VALUE') !== false) { $helper->value = sprintf($this->l('%s tax excl.'), ConfigurationKPI::get('AVG_ORDER_VALUE')); + } else { + $helper->value = $statsController->getLatestKpiValue('average_order_value'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=average_order_value'; $helper->refresh = (bool)(ConfigurationKPI::get('AVG_ORDER_VALUE_EXPIRE') < $time); @@ -1298,6 +1305,8 @@ class AdminOrdersControllerCore extends AdminController $helper->subtitle = $this->l('30 days', null, null, false); if (ConfigurationKPI::get('NETPROFIT_VISIT') !== false) { $helper->value = ConfigurationKPI::get('NETPROFIT_VISIT'); + } else { + $helper->value = $statsController->getLatestKpiValue('netprofit_visit'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=netprofit_visit'; $helper->refresh = (bool)(ConfigurationKPI::get('NETPROFIT_VISIT_EXPIRE') < $time); diff --git a/controllers/admin/AdminProductsController.php b/controllers/admin/AdminProductsController.php index c59d1757f..2ef79291e 100644 --- a/controllers/admin/AdminProductsController.php +++ b/controllers/admin/AdminProductsController.php @@ -2705,7 +2705,8 @@ class AdminProductsControllerCore extends AdminController $time = time(); $kpis = array(); - /* The data generation is located in AdminStatsControllerCore */ + $statsController = new AdminStatsController(); + $this->context->controller = $this; // if (Configuration::get('PS_STOCK_MANAGEMENT')) { // $helper = new HelperKpi(); @@ -2730,6 +2731,8 @@ class AdminProductsControllerCore extends AdminController $helper->title = $this->l('Average Gross Margin %', null, null, false); if (ConfigurationKPI::get('PRODUCT_AVG_GROSS_MARGIN') !== false) { $helper->value = ConfigurationKPI::get('PRODUCT_AVG_GROSS_MARGIN'); + } else { + $helper->value = $statsController->getLatestKpiValue('product_avg_gross_margin'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=product_avg_gross_margin'; $helper->tooltip = $this->l('Gross margin expressed in percentage assesses how cost-effectively you sell your room types. Out of $100, you will retain $X to cover profit and expenses.', null, null, false); @@ -2744,9 +2747,11 @@ class AdminProductsControllerCore extends AdminController $helper->subtitle = $this->l('30 days', null, null, false); if (ConfigurationKPI::get('8020_SALES_CATALOG') !== false) { $helper->value = ConfigurationKPI::get('8020_SALES_CATALOG'); + } else { + $helper->value = $statsController->getLatestKpiValue('8020_sales_catalog'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=8020_sales_catalog'; - $helper->tooltip = $this->l('X% of your references have been purchased for the past 30 days', null, null, false); + $helper->tooltip = $this->l('X% of your references have been purchased for the past 30 days.', null, null, false); $helper->refresh = (bool)(ConfigurationKPI::get('8020_SALES_CATALOG_EXPIRE') < $time); if (Module::isInstalled('statsbestproducts')) { $helper->href = Context::getContext()->link->getAdminLink('AdminStats').'&module=statsbestproducts&datepickerFrom='.date('Y-m-d', strtotime('-30 days')).'&datepickerTo='.date('Y-m-d'); @@ -2761,10 +2766,12 @@ class AdminProductsControllerCore extends AdminController $helper->title = $this->l('Disabled Room Types', null, null, false); if (ConfigurationKPI::get('DISABLED_PRODUCTS') !== false) { $helper->value = ConfigurationKPI::get('DISABLED_PRODUCTS'); + } else { + $helper->value = $statsController->getLatestKpiValue('disabled_products'); } $helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=disabled_products'; $helper->refresh = (bool)(ConfigurationKPI::get('DISABLED_PRODUCTS_EXPIRE') < $time); - $helper->tooltip = $this->l('X% of your room types are disabled and not visible to your customers', null, null, false); + $helper->tooltip = $this->l('X% of your room types are disabled and not visible to your customers.', null, null, false); $helper->href = Context::getContext()->link->getAdminLink('AdminProducts').'&productFilter_active=0&submitFilterproduct=1'; $kpis[] = $helper->generate(); diff --git a/controllers/admin/AdminStatsController.php b/controllers/admin/AdminStatsController.php index 218ccbc3f..f3e548ea2 100644 --- a/controllers/admin/AdminStatsController.php +++ b/controllers/admin/AdminStatsController.php @@ -515,9 +515,23 @@ class AdminStatsControllerCore extends AdminStatsTabController } public function displayAjaxGetKpi() + { + $value = $this->getLatestKpiValue(Tools::getValue('kpi')); + if ($value !== false) { + $array = array('value' => $value); + if (isset($data)) { + $array['data'] = $data; + } + die(json_encode($array)); + } + die(json_encode(array('has_errors' => true))); + } + + public function getLatestKpiValue($kpi) { $currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT')); - switch (Tools::getValue('kpi')) { + $value = false; + switch ($kpi) { case 'conversion_rate': $visitors = AdminStatsController::getVisits(true, date('Y-m-d', strtotime('-31 day')), date('Y-m-d', strtotime('-1 day')), false /*'day'*/); $orders = AdminStatsController::getOrders(date('Y-m-d', strtotime('-31 day')), date('Y-m-d', strtotime('-1 day')), false /*'day'*/); @@ -657,16 +671,16 @@ class AdminStatsControllerCore extends AdminStatsTabController case 'newsletter_registrations': $value = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' - SELECT COUNT(*) - FROM `'._DB_PREFIX_.'customer` - WHERE newsletter = 1 - '.Shop::addSqlRestriction(Shop::SHARE_ORDER)); + SELECT COUNT(*) + FROM `'._DB_PREFIX_.'customer` + WHERE newsletter = 1 + '.Shop::addSqlRestriction(Shop::SHARE_ORDER)); if (Module::isInstalled('blocknewsletter')) { $value += Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' - SELECT COUNT(*) - FROM `'._DB_PREFIX_.'newsletter` - WHERE active = 1 - '.Shop::addSqlRestriction(Shop::SHARE_ORDER)); + SELECT COUNT(*) + FROM `'._DB_PREFIX_.'newsletter` + WHERE active = 1 + '.Shop::addSqlRestriction(Shop::SHARE_ORDER)); } ConfigurationKPI::updateValue('NEWSLETTER_REGISTRATIONS', $value); @@ -714,16 +728,16 @@ class AdminStatsControllerCore extends AdminStatsTabController case 'orders_per_customer': $value = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' - SELECT COUNT(*) - FROM `'._DB_PREFIX_.'customer` c - WHERE c.active = 1 - '.Shop::addSqlRestriction()); + SELECT COUNT(*) + FROM `'._DB_PREFIX_.'customer` c + WHERE c.active = 1 + '.Shop::addSqlRestriction()); if ($value) { $orders = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' - SELECT COUNT(*) - FROM `'._DB_PREFIX_.'orders` o - WHERE o.valid = 1 - '.Shop::addSqlRestriction()); + SELECT COUNT(*) + FROM `'._DB_PREFIX_.'orders` o + WHERE o.valid = 1 + '.Shop::addSqlRestriction()); $value = round($orders / $value, 2); } @@ -733,12 +747,12 @@ class AdminStatsControllerCore extends AdminStatsTabController case 'average_order_value': $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' - SELECT - COUNT(`id_order`) as orders, - SUM(`total_paid_tax_excl` / `conversion_rate`) as total_paid_tax_excl - FROM `'._DB_PREFIX_.'orders` - WHERE `invoice_date` BETWEEN "'.pSQL(date('Y-m-d', strtotime('-31 day'))).' 00:00:00" AND "'.pSQL(date('Y-m-d', strtotime('-1 day'))).' 23:59:59" - '.Shop::addSqlRestriction()); + SELECT + COUNT(`id_order`) as orders, + SUM(`total_paid_tax_excl` / `conversion_rate`) as total_paid_tax_excl + FROM `'._DB_PREFIX_.'orders` + WHERE `invoice_date` BETWEEN "'.pSQL(date('Y-m-d', strtotime('-31 day'))).' 00:00:00" AND "'.pSQL(date('Y-m-d', strtotime('-1 day'))).' 23:59:59" + '.Shop::addSqlRestriction()); $value = Tools::displayPrice($row['orders'] ? $row['total_paid_tax_excl'] / $row['orders'] : 0, $currency); ConfigurationKPI::updateValue('AVG_ORDER_VALUE', $value); ConfigurationKPI::updateValue('AVG_ORDER_VALUE_EXPIRE', strtotime(date('Y-m-d 00:00:00', strtotime('+1 day')))); @@ -784,18 +798,10 @@ class AdminStatsControllerCore extends AdminStatsTabController ConfigurationKPI::updateValue('TOP_CATEGORY', array($this->context->language->id => $value)); ConfigurationKPI::updateValue('TOP_CATEGORY_EXPIRE', array($this->context->language->id => strtotime('+1 day'))); break; - default: $value = false; } - if ($value !== false) { - $array = array('value' => $value); - if (isset($data)) { - $array['data'] = $data; - } - die(json_encode($array)); - } - die(json_encode(array('has_errors' => true))); + return $value; } public static function getArrivalsByDate($date)