/** * callback for purchase event * * @see install/index.php * @param $order_id */ public static function purchase($order_id) { $items = array(); foreach (Data::getOrderItems($order_id) as $item) { $items[] = array('item_id' => $item['PRODUCT_ID'], 'amount' => $item['QUANTITY'], 'price' => $item['PRICE']); } Functions::cookiePushPurchase($items, $order_id); }
public static function run($arParams) { if (isset($arParams['recommender'])) { $recommender = $arParams['recommender']; } else { error_log('recommender not specified'); return; } $params = isset($arParams['params']) ? $arParams['params'] : array(); // get current cart items $cart = Functions::getCartItemIds(); if (isset($params['cart']) === false) { $params['cart'] = $cart; } if (empty($params['item_id']) === false) { $params['item_id'] = Functions::getRealItemID($params['item_id']); } if (empty($params['cart']) === false) { $params['cart'] = Functions::getRealItemIDsArray($params['cart']); } $jsonParams = array('recommender_type' => $recommender, 'limit' => Options::getRecommendCount()); // check required params for recommenders switch ($recommender) { case 'buying_now': if (isset($params['cart']) && is_array($params['cart'])) { $jsonParams['cart'] = array_values($params['cart']); } if (isset($params['item_id']) && is_numeric($params['item_id'])) { $jsonParams['item'] = json_encode($params['item_id']); } break; case 'see_also': if (isset($params['cart']) && is_array($params['cart'])) { $jsonParams['cart'] = array_values($params['cart']); } else { error_log('recommender see_also requires cart'); return; } break; case 'recently_viewed': if (isset($params['cart']) && is_array($params['cart'])) { $jsonParams['cart'] = array_values($params['cart']); } // cart is not required break; case 'also_bought': if (isset($params['item_id']) && is_numeric($params['item_id'])) { $jsonParams['item'] = json_encode($params['item_id']); } else { error_log('recommender also_bought requires item_id'); return; } break; case 'similar': if (isset($params['item_id']) && is_numeric($params['item_id'])) { $jsonParams['item'] = json_encode($params['item_id']); } else { error_log('recommender similar requires item_id'); return; } // params2 if (isset($params['cart']) && is_array($params['cart'])) { $jsonParams['cart'] = array_values($params['cart']); } // cart is not required break; case 'interesting': // no params break; case 'popular': if (isset($params['category'])) { $jsonParams['category'] = intval($params['category']); } break; default: error_log('unknown recommender: ' . $recommender); } $uniqid = uniqid('rees46-recommend-'); // render recommender placeholder and corresponding js ?> <div id="<?php echo $uniqid; ?> " class="rees46-recommend"></div> <script> BX.ready(function(){ REES46.addReadyListener(function () { REES46.recommend(<?php echo json_encode($jsonParams); ?> , function (items) { if (items.length > 0) { var data_string = BX.ajax.prepareData({ action: 'recommend', recommended_by: <?php echo json_encode($recommender); ?> , recommended_items: items }); BX.ajax({ url: '<?php echo SITE_DIR; ?> include/rees46-handler.php?' + data_string, method: 'GET', dataType: 'html', async: true, onsuccess: function (html) { if (REES46.showPromotion) { html = html + REES46.getPromotionBlock(); } BX('<?php echo $uniqid; ?> ').innerHTML = html; } }); } }); }); }); </script> <?php }
<?php /* preload module info */ if (class_exists('mk_rees46') === false) { require __DIR__ . '/install/index.php'; } //if (class_exists('Composer\\Autoload\\ClassLoader') === false) { // require __DIR__ . '/classes/Composer/Autoload/ClassLoader.php'; //} // unobstructively add autoloader if (function_exists('__autoload')) { // if we have an old autoload func spl_autoload_register('__autoload'); // register it } // our own autoloader //$loader = new \Composer\Autoload\ClassLoader(); $loader = (require __DIR__ . '/vendor/autoload.php'); $loader->add('Rees46\\', __DIR__ . '/classes/'); //$loader->register(true); \Rees46\Functions::showRecommenderCSS();
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die; } CModule::IncludeModule('mk.rees46'); \Rees46\Functions::includeJs(); // include required js and handle all events