Example #1
0
 /**
  * 2016-07-28
  * @override
  * @see ObserverInterface::execute()
  * @used-by \Magento\Framework\Event\Invoker\InvokerDefault::_callObserverMethod()
  * @param O $o
  * @return void
  */
 public function execute(O $o)
 {
     /** @var Provider $provider */
     $provider = $o[Plugin::PROVIDER];
     /** @var ISearchResult|ApiSearchResult|UiSearchResult|OrderGC|InvoiceGC|CreditmemoGC $result */
     $result = $o[Plugin::RESULT];
     if (in_array($provider->getName(), ['sales_order_grid_data_source'])) {
         /**
          * 2016-07-28
          * https://github.com/magento/magento2/blob/2.1.0/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/SearchResult.php#L37-L40
          * @see \Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult::$document
          *
          * Структура документа описана здесь: https://mage2.pro/t/1908
          */
         /** @var string $cacheKey */
         $cacheKey = __METHOD__;
         /** @var string $prop */
         $prop = 'payment_method';
         df_map(function (Document $item) use($cacheKey, $prop) {
             /** @var string|null $methodCode */
             $methodCode = $item[$prop];
             if ($methodCode && df_starts_with($methodCode, 'dfe_')) {
                 /** @var int $id */
                 $id = $item['entity_id'];
                 /**
                  * 2016-07-29
                  * Эта операция очень ресурсоёмка:
                  * для каждой строки таблицы заказов она делает кучу запросов к базе данных.
                  * Поэтому кэшируем результаты в постоянном кэше.
                  */
                 $item[$prop] = df_cache_get_simple([$cacheKey, $id], function () use($id) {
                     /** @var Method $method */
                     $method = df_order($id)->getPayment()->getMethodInstance();
                     return $method->titleDetailed();
                 });
             }
         }, $result);
     }
 }
Example #2
0
/**
 * 2016-07-18
 * @param string $urlBase
 * @param array(string => string) $params [optional]
 * @param int|null $timeout [optional]
 * @return array(string => mixed)
 */
function df_http_json_c($urlBase, array $params = [], $timeout = null)
{
    return df_cache_get_simple([$urlBase, $params, $timeout], 'df_http_json', $urlBase, $params, $timeout);
}