![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-new-relic-reporting/Model/Cron/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\NewRelicReporting\Model\Cron; use Magento\NewRelicReporting\Model\Config; use Magento\Catalog\Api\ProductManagementInterface; use Magento\Catalog\Model\Product\Attribute\Source\Status; use Magento\ConfigurableProduct\Api\ConfigurableProductManagementInterface; use Magento\Catalog\Api\CategoryManagementInterface; /** * Class ReportCounts */ class ReportCounts { /** * @var Config */ protected $config; /** * @var ProductManagementInterface */ protected $productManagement; /** * @var ConfigurableProductManagementInterface */ protected $configurableManagement; /** * @var CategoryManagementInterface */ protected $categoryManagement; /** * @var \Magento\NewRelicReporting\Model\CountsFactory */ protected $countsFactory; /** * @var \Magento\NewRelicReporting\Model\ResourceModel\Counts\CollectionFactory */ protected $countsCollectionFactory; /** * Constructor * * @param Config $config * @param ProductManagementInterface $productManagement * @param ConfigurableProductManagementInterface $configurableManagement * @param CategoryManagementInterface $categoryManagement * @param \Magento\NewRelicReporting\Model\CountsFactory $countsFactory * @param \Magento\NewRelicReporting\Model\ResourceModel\Counts\CollectionFactory $countsCollectionFactory */ public function __construct( Config $config, ProductManagementInterface $productManagement, ConfigurableProductManagementInterface $configurableManagement, CategoryManagementInterface $categoryManagement, \Magento\NewRelicReporting\Model\CountsFactory $countsFactory, \Magento\NewRelicReporting\Model\ResourceModel\Counts\CollectionFactory $countsCollectionFactory ) { $this->config = $config; $this->productManagement = $productManagement; $this->configurableManagement = $configurableManagement; $this->categoryManagement = $categoryManagement; $this->countsFactory = $countsFactory; $this->countsCollectionFactory = $countsCollectionFactory; } /** * Updates the count for a specific model in the database * * @param int $count * @param \Magento\NewRelicReporting\Model\Counts $model * @param string $type * @return void */ protected function updateCount($count, \Magento\NewRelicReporting\Model\Counts $model, $type) { /** @var \Magento\NewRelicReporting\Model\ResourceModel\Counts\Collection $collection */ $collection = $this->countsCollectionFactory->create() ->addFieldToFilter( 'type', ['eq' => $type] )->addOrder( 'updated_at', 'DESC' )->setPageSize(1); $latestUpdate = $collection->getFirstItem(); if ((!$latestUpdate) || ($count != $latestUpdate->getCount())) { $model->setEntityId(null); $model->setType($type); $model->setCount($count); $model->save(); } } /** * Reports product size to the database reporting_counts table * * @return void */ protected function reportProductsSize() { $productCount = $this->productManagement->getCount(); /** @var \Magento\NewRelicReporting\Model\Counts $model */ $model = $this->countsFactory->create()->load(Config::PRODUCT_COUNT, 'type'); $this->updateCount($productCount, $model, Config::PRODUCT_COUNT); } /** * Reports configurable product size to the database reporting_counts table * * @return void */ protected function reportConfigurableProductsSize() { $configurableCount = $this->configurableManagement->getCount(); /** @var \Magento\NewRelicReporting\Model\Counts $model */ $model = $this->countsFactory->create()->load(Config::CONFIGURABLE_COUNT, 'type'); $this->updateCount($configurableCount, $model, Config::CONFIGURABLE_COUNT); } /** * Reports number of active products to the database reporting_counts table * * @return void */ protected function reportProductsActive() { $productsActiveCount = $this->productManagement->getCount(Status::STATUS_ENABLED); /** @var \Magento\NewRelicReporting\Model\Counts $model */ $model = $this->countsFactory->create()->load(Config::ACTIVE_COUNT, 'type'); $this->updateCount($productsActiveCount, $model, Config::ACTIVE_COUNT); } /** * Reports category size to the database reporting_counts table * * @return void */ protected function reportCategorySize() { $categoryCount = $this->categoryManagement->getCount(); /** @var \Magento\NewRelicReporting\Model\Counts $model */ $model = $this->countsFactory->create()->load(Config::CATEGORY_SIZE, 'type'); $this->updateCount($categoryCount, $model, Config::CATEGORY_SIZE); } /** * Reports Modules and module changes to the database reporting_module_status table * * @return \Magento\NewRelicReporting\Model\Cron\ReportCounts */ public function report() { if ($this->config->isNewRelicEnabled()) { $this->reportProductsSize(); $this->reportConfigurableProductsSize(); $this->reportProductsActive(); $this->reportCategorySize(); } return $this; } }