/**
  * Tests \Magento\Framework\Object->__construct()
  */
 public function testConstruct()
 {
     $object = new \Magento\Framework\Object();
     $this->assertEquals([], $object->getData());
     $data = ['test' => 'test'];
     $object = new \Magento\Framework\Object($data);
     $this->assertEquals($data, $object->getData());
 }
Exemple #2
0
 /**
  * Edit category page
  *
  * @return void
  */
 public function execute()
 {
     $storeId = (int) $this->getRequest()->getParam('store');
     $parentId = (int) $this->getRequest()->getParam('parent');
     $categoryId = (int) $this->getRequest()->getParam('id');
     if ($storeId && !$categoryId && !$parentId) {
         $store = $this->_objectManager->get('Magento\\Store\\Model\\StoreManagerInterface')->getStore($storeId);
         $this->getRequest()->setParam('id', (int) $store->getRootCategoryId());
     }
     $category = $this->_initCategory(true);
     if (!$category) {
         return;
     }
     $this->_title->add($categoryId ? $category->getName() : __('Categories'));
     /**
      * Check if we have data in session (if during category save was exception)
      */
     $data = $this->_getSession()->getCategoryData(true);
     if (isset($data['general'])) {
         $category->addData($data['general']);
     }
     /**
      * Build response for ajax request
      */
     if ($this->getRequest()->getQuery('isAjax')) {
         // prepare breadcrumbs of selected category, if any
         $breadcrumbsPath = $category->getPath();
         if (empty($breadcrumbsPath)) {
             // but if no category, and it is deleted - prepare breadcrumbs from path, saved in session
             $breadcrumbsPath = $this->_objectManager->get('Magento\\Backend\\Model\\Auth\\Session')->getDeletedPath(true);
             if (!empty($breadcrumbsPath)) {
                 $breadcrumbsPath = explode('/', $breadcrumbsPath);
                 // no need to get parent breadcrumbs if deleting category level 1
                 if (count($breadcrumbsPath) <= 1) {
                     $breadcrumbsPath = '';
                 } else {
                     array_pop($breadcrumbsPath);
                     $breadcrumbsPath = implode('/', $breadcrumbsPath);
                 }
             }
         }
         $this->_view->loadLayout();
         $eventResponse = new \Magento\Framework\Object(array('content' => $this->_view->getLayout()->getBlock('category.edit')->getFormHtml() . $this->_view->getLayout()->getBlock('category.tree')->getBreadcrumbsJavascript($breadcrumbsPath, 'editingCategoryBreadcrumbs'), 'messages' => $this->_view->getLayout()->getMessagesBlock()->getGroupedHtml()));
         $this->_eventManager->dispatch('category_prepare_ajax_response', array('response' => $eventResponse, 'controller' => $this));
         $this->getResponse()->setHeader('Content-type', 'application/json', true);
         $this->getResponse()->representJson($this->_objectManager->get('Magento\\Core\\Helper\\Data')->jsonEncode($eventResponse->getData()));
         return;
     }
     $this->_view->loadLayout();
     $this->_setActiveMenu('Magento_Catalog::catalog_categories');
     $this->_view->getLayout()->getBlock('head')->setCanLoadExtJs(true)->setContainerCssClass('catalog-categories');
     $this->_addBreadcrumb(__('Manage Catalog Categories'), __('Manage Categories'));
     $block = $this->_view->getLayout()->getBlock('catalog.wysiwyg.js');
     if ($block) {
         $block->setStoreId($storeId);
     }
     $this->_view->renderLayout();
 }
Exemple #3
0
 /**
  * After save process
  *
  * @param \Magento\Framework\Model\AbstractModel $object
  * @return $this
  */
 protected function _afterSave(\Magento\Framework\Model\AbstractModel $object)
 {
     parent::_afterSave($object);
     $condition = array('option_id = ?' => $object->getId(), 'store_id = ? OR store_id = 0' => $object->getStoreId());
     $write = $this->_getWriteAdapter();
     $write->delete($this->getTable('catalog_product_bundle_option_value'), $condition);
     $data = new \Magento\Framework\Object();
     $data->setOptionId($object->getId())->setStoreId($object->getStoreId())->setTitle($object->getTitle());
     $write->insert($this->getTable('catalog_product_bundle_option_value'), $data->getData());
     /**
      * also saving default value if this store view scope
      */
     if ($object->getStoreId()) {
         $data->setStoreId(0);
         $data->setTitle($object->getDefaultTitle());
         $write->insert($this->getTable('catalog_product_bundle_option_value'), $data->getData());
     }
     return $this;
 }
Exemple #4
0
 public function testBeforeSave()
 {
     $object = new \Magento\Framework\Object([self::ATTRIBUTE_NAME => ['is_in_stock' => 1, 'qty' => 5], 'stock_data' => ['is_in_stock' => 2, 'qty' => 2]]);
     $stockData = $object->getStockData();
     $this->assertEquals(2, $stockData['is_in_stock']);
     $this->assertEquals(2, $stockData['qty']);
     $this->assertNotEmpty($object->getData(self::ATTRIBUTE_NAME));
     $this->model->beforeSave($object);
     $stockData = $object->getStockData();
     $this->assertEquals(1, $stockData['is_in_stock']);
     $this->assertEquals(5, $stockData['qty']);
     $this->assertNull($object->getData(self::ATTRIBUTE_NAME));
 }
Exemple #5
0
 /**
  * Check if product can be bought
  *
  * @param \Magento\Catalog\Model\Product $product
  * @return $this
  * @throws \Magento\Framework\Exception\LocalizedException
  */
 public function checkProductBuyState($product)
 {
     parent::checkProductBuyState($product);
     $option = $product->getCustomOption('info_buyRequest');
     if ($option instanceof \Magento\Quote\Model\Quote\Item\Option) {
         $buyRequest = new \Magento\Framework\Object(unserialize($option->getValue()));
         if (!$buyRequest->hasLinks()) {
             if (!$product->getLinksPurchasedSeparately()) {
                 $allLinksIds = $this->_linksFactory->create()->addProductToFilter($product->getId())->getAllIds();
                 $buyRequest->setLinks($allLinksIds);
                 $product->addCustomOption('info_buyRequest', serialize($buyRequest->getData()));
             } else {
                 throw new \Magento\Framework\Exception\LocalizedException(__('Please specify product link(s).'));
             }
         }
     }
     return $this;
 }
    /**
     * Check for unique values existence
     *
     * @param \Magento\Framework\Model\AbstractModel $object
     * @return $this
     * @throws AlreadyExistsException
     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
     * @SuppressWarnings(PHPMD.NPathComplexity)
     */
    protected function _checkUnique(\Magento\Framework\Model\AbstractModel $object)
    {
        $existent = [];
        $fields = $this->getUniqueFields();
        if (!empty($fields)) {
            if (!is_array($fields)) {
                $this->_uniqueFields = [['field' => $fields, 'title' => $fields]];
            }

            $data = new \Magento\Framework\Object($this->_prepareDataForSave($object));
            $select = $this->_getWriteAdapter()->select()->from($this->getMainTable());

            foreach ($fields as $unique) {
                $select->reset(\Zend_Db_Select::WHERE);
                foreach ((array)$unique['field'] as $field) {
                    $value = $data->getData($field);
                    if ($value === null) {
                        $select->where($field . ' IS NULL');
                    } else {
                        $select->where($field . '=?', trim($value));
                    }
                }

                if ($object->getId() || $object->getId() === '0') {
                    $select->where($this->getIdFieldName() . '!=?', $object->getId());
                }

                $test = $this->_getWriteAdapter()->fetchRow($select);
                if ($test) {
                    $existent[] = $unique['title'];
                }
            }
        }

        if (!empty($existent)) {
            if (count($existent) == 1) {
                $error = new \Magento\Framework\Phrase('%1 already exists.', [$existent[0]]);
            } else {
                $error = new \Magento\Framework\Phrase('%1 already exist.', [implode(', ', $existent)]);
            }
            throw new AlreadyExistsException($error);
        }
        return $this;
    }
 /**
  * Post request to gateway and return response
  *
  * @param \Magento\Framework\Object $request
  * @return \Magento\Framework\Object
  * @throws \Exception
  */
 protected function _postRequest(\Magento\Framework\Object $request)
 {
     $debugData = array('request' => $request->getData());
     /** @var \Magento\Framework\HTTP\ZendClient $client */
     $client = $this->_httpClientFactory->create();
     $result = new \Magento\Framework\Object();
     $_config = array('maxredirects' => 5, 'timeout' => 30, 'verifypeer' => $this->getConfigData('verify_peer'));
     $_isProxy = $this->getConfigData('use_proxy', false);
     if ($_isProxy) {
         $_config['proxy'] = $this->getConfigData('proxy_host') . ':' . $this->getConfigData('proxy_port');
         //http://proxy.shr.secureserver.net:3128',
         $_config['httpproxytunnel'] = true;
         $_config['proxytype'] = CURLPROXY_HTTP;
     }
     $client->setUri($this->_getTransactionUrl())->setConfig($_config)->setMethod(\Zend_Http_Client::POST)->setParameterPost($request->getData())->setHeaders('X-VPS-VIT-CLIENT-CERTIFICATION-ID: 33baf5893fc2123d8b191d2d011b7fdc')->setHeaders('X-VPS-Request-ID: ' . $request->getRequestId())->setHeaders('X-VPS-CLIENT-TIMEOUT: ' . $this->_clientTimeout);
     try {
         /**
          * we are sending request to payflow pro without url encoding
          * so we set up _urlEncodeBody flag to false
          */
         $response = $client->setUrlEncodeBody(false)->request();
     } catch (\Exception $e) {
         $result->setResponseCode(-1)->setResponseReasonCode($e->getCode())->setResponseReasonText($e->getMessage());
         $debugData['result'] = $result->getData();
         $this->_debug($debugData);
         throw $e;
     }
     $response = strstr($response->getBody(), 'RESULT');
     $valArray = explode('&', $response);
     foreach ($valArray as $val) {
         $valArray2 = explode('=', $val);
         $result->setData(strtolower($valArray2[0]), $valArray2[1]);
     }
     $result->setResultCode($result->getResult())->setRespmsg($result->getRespmsg());
     $debugData['result'] = $result->getData();
     $this->_debug($debugData);
     return $result;
 }
Exemple #8
0
 /**
  * Dispatch render after event
  *
  * @param null|string|array|\Magento\Framework\Object &$html
  * @return void
  */
 protected function _dispatchRenderGroupedAfterEvent(&$html)
 {
     $transport = new \Magento\Framework\Object(array('output' => $html));
     $params = array('element_name' => $this->getNameInLayout(), 'layout' => $this->getLayout(), 'transport' => $transport);
     $this->_eventManager->dispatch('view_message_block_render_grouped_html_after', $params);
     $html = $transport->getData('output');
 }
Exemple #9
0
 /**
  * Return widget XML configuration as \Magento\Framework\Object and makes some data preparations
  *
  * @param string $type Widget type
  * @return \Magento\Framework\Object
  */
 public function getConfigAsObject($type)
 {
     $widget = $this->getWidgetByClassType($type);
     $object = new \Magento\Framework\Object();
     if ($widget === null) {
         return $object;
     }
     $widget = $this->_getAsCanonicalArray($widget);
     // Save all nodes to object data
     $object->setType($type);
     $object->setData($widget);
     // Correct widget parameters and convert its data to objects
     $params = $object->getData('parameters');
     $newParams = array();
     if (is_array($params)) {
         $sortOrder = 0;
         foreach ($params as $key => $data) {
             if (is_array($data)) {
                 $data['key'] = $key;
                 $data['sort_order'] = isset($data['sort_order']) ? (int) $data['sort_order'] : $sortOrder;
                 // prepare values (for drop-dawns) specified directly in configuration
                 $values = array();
                 if (isset($data['values']) && is_array($data['values'])) {
                     foreach ($data['values'] as $value) {
                         if (isset($value['label']) && isset($value['value'])) {
                             $values[] = $value;
                         }
                     }
                 }
                 $data['values'] = $values;
                 // prepare helper block object
                 if (isset($data['helper_block'])) {
                     $helper = new \Magento\Framework\Object();
                     if (isset($data['helper_block']['data']) && is_array($data['helper_block']['data'])) {
                         $helper->addData($data['helper_block']['data']);
                     }
                     if (isset($data['helper_block']['type'])) {
                         $helper->setType($data['helper_block']['type']);
                     }
                     $data['helper_block'] = $helper;
                 }
                 $newParams[$key] = new \Magento\Framework\Object($data);
                 $sortOrder++;
             }
         }
     }
     uasort($newParams, array($this, '_sortParameters'));
     $object->setData('parameters', $newParams);
     return $object;
 }
 /**
  * Report action init operations
  *
  * @param array|\Magento\Framework\Object $blocks
  * @return $this
  */
 public function _initReportAction($blocks)
 {
     if (!is_array($blocks)) {
         $blocks = [$blocks];
     }
     $requestData = $this->_objectManager->get('Magento\\Backend\\Helper\\Data')->prepareFilterString($this->getRequest()->getParam('filter'));
     $inputFilter = new \Zend_Filter_Input(['from' => $this->_dateFilter, 'to' => $this->_dateFilter], [], $requestData);
     $requestData = $inputFilter->getUnescaped();
     $requestData['store_ids'] = $this->getRequest()->getParam('store_ids');
     $params = new \Magento\Framework\Object();
     foreach ($requestData as $key => $value) {
         if (!empty($value)) {
             $params->setData($key, $value);
         }
     }
     foreach ($blocks as $block) {
         if ($block) {
             $block->setPeriodType($params->getData('period_type'));
             $block->setFilterData($params);
         }
     }
     return $this;
 }
Exemple #11
0
 /**
  * Return Wysiwyg config as \Magento\Framework\Object
  *
  * Config options description:
  *
  * enabled:                 Enabled Visual Editor or not
  * hidden:                  Show Visual Editor on page load or not
  * use_container:           Wrap Editor contents into div or not
  * no_display:              Hide Editor container or not (related to use_container)
  * translator:              Helper to translate phrases in lib
  * files_browser_*:         Files Browser (media, images) settings
  * encode_directives:       Encode template directives with JS or not
  *
  * @param array|\Magento\Framework\Object $data Object constructor params to override default config values
  * @return \Magento\Framework\Object
  */
 public function getConfig($data = [])
 {
     $config = new \Magento\Framework\Object();
     $config->setData(['enabled' => $this->isEnabled(), 'hidden' => $this->isHidden(), 'use_container' => false, 'add_variables' => true, 'add_widgets' => true, 'no_display' => false, 'encode_directives' => true, 'directives_url' => $this->_backendUrl->getUrl('cms/wysiwyg/directive'), 'popup_css' => $this->_assetRepo->getUrl('mage/adminhtml/wysiwyg/tiny_mce/themes/advanced/skins/default/dialog.css'), 'content_css' => $this->_assetRepo->getUrl('mage/adminhtml/wysiwyg/tiny_mce/themes/advanced/skins/default/content.css'), 'width' => '100%', 'plugins' => []]);
     $config->setData('directives_url_quoted', preg_quote($config->getData('directives_url')));
     if ($this->_authorization->isAllowed('Magento_Cms::media_gallery')) {
         $config->addData(['add_images' => true, 'files_browser_window_url' => $this->_backendUrl->getUrl('cms/wysiwyg_images/index'), 'files_browser_window_width' => $this->_windowSize['width'], 'files_browser_window_height' => $this->_windowSize['height']]);
     }
     if (is_array($data)) {
         $config->addData($data);
     }
     if ($config->getData('add_variables')) {
         $settings = $this->_variableConfig->getWysiwygPluginSettings($config);
         $config->addData($settings);
     }
     if ($config->getData('add_widgets')) {
         $settings = $this->_widgetConfig->getPluginSettings($config);
         $config->addData($settings);
     }
     return $config;
 }
Exemple #12
0
 /**
  * Saves rewrite history
  *
  * @param array $rewriteData
  * @return $this
  */
 public function saveRewriteHistory($rewriteData)
 {
     $rewriteData = new \Magento\Framework\Object($rewriteData);
     // check if rewrite exists with save request_path
     $rewrite = $this->getRewriteByRequestPath($rewriteData->getRequestPath(), $rewriteData->getStoreId());
     if ($rewrite === false) {
         // create permanent redirect
         $this->_getWriteAdapter()->insert($this->getMainTable(), $rewriteData->getData());
     }
     return $this;
 }
Exemple #13
0
 /**
  * Edit category page
  *
  * @return \Magento\Framework\Controller\ResultInterface
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 public function execute()
 {
     $storeId = (int) $this->getRequest()->getParam('store');
     $parentId = (int) $this->getRequest()->getParam('parent');
     $categoryId = (int) $this->getRequest()->getParam('id');
     if ($storeId && !$categoryId && !$parentId) {
         $store = $this->_objectManager->get('Magento\\Store\\Model\\StoreManagerInterface')->getStore($storeId);
         $this->getRequest()->setParam('id', (int) $store->getRootCategoryId());
     }
     $category = $this->_initCategory(true);
     if (!$category) {
         /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
         return $resultRedirect->setPath('catalog/*/', ['_current' => true, 'id' => null]);
     }
     /**
      * Check if we have data in session (if during category save was exception)
      */
     $data = $this->_getSession()->getCategoryData(true);
     if (isset($data['general'])) {
         $category->addData($data['general']);
     }
     /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
     $resultPage = $this->resultPageFactory->create();
     /**
      * Build response for ajax request
      */
     if ($this->getRequest()->getQuery('isAjax')) {
         // prepare breadcrumbs of selected category, if any
         $breadcrumbsPath = $category->getPath();
         if (empty($breadcrumbsPath)) {
             // but if no category, and it is deleted - prepare breadcrumbs from path, saved in session
             $breadcrumbsPath = $this->_objectManager->get('Magento\\Backend\\Model\\Auth\\Session')->getDeletedPath(true);
             if (!empty($breadcrumbsPath)) {
                 $breadcrumbsPath = explode('/', $breadcrumbsPath);
                 // no need to get parent breadcrumbs if deleting category level 1
                 if (count($breadcrumbsPath) <= 1) {
                     $breadcrumbsPath = '';
                 } else {
                     array_pop($breadcrumbsPath);
                     $breadcrumbsPath = implode('/', $breadcrumbsPath);
                 }
             }
         }
         $eventResponse = new \Magento\Framework\Object(['content' => $resultPage->getLayout()->getBlock('category.edit')->getFormHtml() . $resultPage->getLayout()->getBlock('category.tree')->getBreadcrumbsJavascript($breadcrumbsPath, 'editingCategoryBreadcrumbs'), 'messages' => $resultPage->getLayout()->getMessagesBlock()->getGroupedHtml(), 'toolbar' => $resultPage->getLayout()->getBlock('page.actions.toolbar')->toHtml()]);
         $this->_eventManager->dispatch('category_prepare_ajax_response', ['response' => $eventResponse, 'controller' => $this]);
         /** @var \Magento\Framework\Controller\Result\Json $resultJson */
         $resultJson = $this->resultJsonFactory->create();
         $resultJson->setHeader('Content-type', 'application/json', true);
         $resultJson->setData($eventResponse->getData());
         return $resultJson;
     }
     $resultPage->setActiveMenu('Magento_Catalog::catalog_categories');
     $resultPage->getConfig()->getTitle()->prepend(__('Categories'));
     $resultPage->getConfig()->getTitle()->prepend($categoryId ? $category->getName() : __('Categories'));
     $resultPage->addBreadcrumb(__('Manage Catalog Categories'), __('Manage Categories'));
     $block = $resultPage->getLayout()->getBlock('catalog.wysiwyg.js');
     if ($block) {
         $block->setStoreId($storeId);
     }
     return $resultPage;
 }
Exemple #14
0
 /**
  * Aggregate
  *
  * @param \Magento\Framework\Model\AbstractModel $object
  * @return void
  */
 public function aggregate($object)
 {
     $readAdapter = $this->_getReadAdapter();
     $writeAdapter = $this->_getWriteAdapter();
     if (!$object->getEntityPkValue() && $object->getId()) {
         $object->load($object->getReviewId());
     }
     $ratingModel = $this->_ratingFactory->create();
     $ratingSummaries = $ratingModel->getEntitySummary($object->getEntityPkValue(), false);
     foreach ($ratingSummaries as $ratingSummaryObject) {
         if ($ratingSummaryObject->getCount()) {
             $ratingSummary = round($ratingSummaryObject->getSum() / $ratingSummaryObject->getCount());
         } else {
             $ratingSummary = $ratingSummaryObject->getSum();
         }
         $reviewsCount = $this->getTotalReviews($object->getEntityPkValue(), true, $ratingSummaryObject->getStoreId());
         $select = $readAdapter->select()->from($this->_aggregateTable)->where('entity_pk_value = :pk_value')->where('entity_type = :entity_type')->where('store_id = :store_id');
         $bind = [':pk_value' => $object->getEntityPkValue(), ':entity_type' => $object->getEntityId(), ':store_id' => $ratingSummaryObject->getStoreId()];
         $oldData = $readAdapter->fetchRow($select, $bind);
         $data = new \Magento\Framework\Object();
         $data->setReviewsCount($reviewsCount)->setEntityPkValue($object->getEntityPkValue())->setEntityType($object->getEntityId())->setRatingSummary($ratingSummary > 0 ? $ratingSummary : 0)->setStoreId($ratingSummaryObject->getStoreId());
         $writeAdapter->beginTransaction();
         try {
             if ($oldData['primary_id'] > 0) {
                 $condition = ["{$this->_aggregateTable}.primary_id = ?" => $oldData['primary_id']];
                 $writeAdapter->update($this->_aggregateTable, $data->getData(), $condition);
             } else {
                 $writeAdapter->insert($this->_aggregateTable, $data->getData());
             }
             $writeAdapter->commit();
         } catch (\Exception $e) {
             $writeAdapter->rollBack();
         }
     }
 }
Exemple #15
0
 /**
  * Check for unique values existence
  *
  * @param \Magento\Framework\Model\AbstractModel $object
  * @return $this
  * @throws ModelException
  */
 protected function _checkUnique(\Magento\Framework\Model\AbstractModel $object)
 {
     $existent = array();
     $fields = $this->getUniqueFields();
     if (!empty($fields)) {
         if (!is_array($fields)) {
             $this->_uniqueFields = array(array('field' => $fields, 'title' => $fields));
         }
         $data = new \Magento\Framework\Object($this->_prepareDataForSave($object));
         $select = $this->_getWriteAdapter()->select()->from($this->getMainTable());
         foreach ($fields as $unique) {
             $select->reset(\Zend_Db_Select::WHERE);
             if (is_array($unique['field'])) {
                 foreach ($unique['field'] as $field) {
                     $select->where($field . '=?', trim($data->getData($field)));
                 }
             } else {
                 $select->where($unique['field'] . '=?', trim($data->getData($unique['field'])));
             }
             if ($object->getId() || $object->getId() === '0') {
                 $select->where($this->getIdFieldName() . '!=?', $object->getId());
             }
             $test = $this->_getWriteAdapter()->fetchRow($select);
             if ($test) {
                 $existent[] = $unique['title'];
             }
         }
     }
     if (!empty($existent)) {
         if (count($existent) == 1) {
             $error = __('%1 already exists.', $existent[0]);
         } else {
             $error = __('%1 already exist.', implode(', ', $existent));
         }
         throw new ModelException($error, ModelException::ERROR_CODE_ENTITY_ALREADY_EXISTS);
     }
     return $this;
 }
Exemple #16
0
 /**
  * Load data
  *
  * @param bool $printQuery
  * @param bool $logQuery
  * @return $this
  */
 public function load($printQuery = false, $logQuery = false)
 {
     if ($this->isLoaded()) {
         return $this;
     }
     $this->_beforeLoad();
     $this->_renderFilters()->_renderOrders()->_renderLimit();
     $this->printLogQuery($printQuery, $logQuery);
     $data = $this->getData();
     $this->resetData();
     $stores = $this->_storeCollectionFactory->create()->setWithoutDefaultFilter()->load()->toOptionHash();
     $this->_items = array();
     foreach ($data as $v) {
         $storeObject = new \Magento\Framework\Object($v);
         $storeId = $v['store_id'];
         $storeName = isset($stores[$storeId]) ? $stores[$storeId] : null;
         $storeObject->setStoreName($storeName)->setWebsiteId($this->_storeManager->getStore($storeId)->getWebsiteId())->setAvgNormalized($v['avgsale'] * $v['num_orders']);
         $this->_items[$storeId] = $storeObject;
         foreach (array_keys($this->_totals) as $key) {
             $this->_totals[$key] += $storeObject->getData($key);
         }
     }
     if ($this->_totals['num_orders']) {
         $this->_totals['avgsale'] = $this->_totals['base_lifetime'] / $this->_totals['num_orders'];
     }
     $this->_setIsLoaded();
     $this->_afterLoad();
     return $this;
 }
Exemple #17
0
 /**
  * Process $buyRequest and sets its options before saving configuration to some product item.
  * This method is used to attach additional parameters to processed buyRequest.
  *
  * $params holds parameters of what operation must be performed:
  * - 'current_config', \Magento\Framework\Object or array - current buyRequest that configures product in this item,
  *   used to restore currently attached files
  * - 'files_prefix': string[a-z0-9_] - prefix that was added at frontend to names of file inputs,
  *   so they won't intersect with other submitted options
  *
  * @param \Magento\Framework\Object|array $buyRequest
  * @param \Magento\Framework\Object|array $params
  * @return \Magento\Framework\Object
  */
 public function addParamsToBuyRequest($buyRequest, $params)
 {
     if (is_array($buyRequest)) {
         $buyRequest = new \Magento\Framework\Object($buyRequest);
     }
     if (is_array($params)) {
         $params = new \Magento\Framework\Object($params);
     }
     // Ensure that currentConfig goes as \Magento\Framework\Object - for easier work with it later
     $currentConfig = $params->getCurrentConfig();
     if ($currentConfig) {
         if (is_array($currentConfig)) {
             $params->setCurrentConfig(new \Magento\Framework\Object($currentConfig));
         } elseif (!$currentConfig instanceof \Magento\Framework\Object) {
             $params->unsCurrentConfig();
         }
     }
     /*
      * Notice that '_processing_params' must always be object to protect processing forged requests
      * where '_processing_params' comes in $buyRequest as array from user input
      */
     $processingParams = $buyRequest->getData('_processing_params');
     if (!$processingParams || !$processingParams instanceof \Magento\Framework\Object) {
         $processingParams = new \Magento\Framework\Object();
         $buyRequest->setData('_processing_params', $processingParams);
     }
     $processingParams->addData($params->getData());
     return $buyRequest;
 }