Ejemplo n.º 1
0
 /**
  * @return bool|int false on error, count of the orders on success (can be 0)
  */
 public static function exportOrders()
 {
     set_time_limit(0);
     $data = array('shop_id' => Options::getShopID(), 'shop_secret' => Options::getShopSecret(), 'orders' => self::getOrdersForExport());
     if (count($data['orders']) > 0) {
         self::sendData($data);
     }
     return count($data['orders']);
 }
Ejemplo n.º 2
0
 /**
  * get item params for view push
  *
  * @param int $id
  * @param bool $more
  * @return array
  */
 public static function getItemArray($id, $more = false)
 {
     if (isset(self::$itemArraysMoreCache[$id])) {
         return self::$itemArraysMoreCache[$id];
     }
     if (isset(self::$itemArraysCache[$id]) && !$more) {
         return self::$itemArraysCache[$id];
     }
     $libProduct = new \CCatalogProduct();
     $libIBlockElem = new \CIBlockElement();
     $libPrice = new \CPrice();
     $item = $libProduct->GetByID($id);
     // maybe we have complex item, let's find its first child entry
     if ($item === false) {
         $list = $libIBlockElem->GetList(array('ID' => 'ASC'), array('PROPERTY_CML2_LINK' => $id));
         if ($itemBlock = $list->Fetch()) {
             $item = $libProduct->GetByID($itemBlock['ID']);
         } else {
             return null;
             // c'est la vie
         }
         // now $item points to the earliest child
     } else {
         // we have simple item or child
         $itemBlock = $libIBlockElem->GetByID($id)->Fetch();
         $itemFull = $libProduct->GetByIDEx($id);
         if (!empty($itemFull['PROPERTIES']['CML2_LINK']['VALUE'])) {
             $id = $itemFull['PROPERTIES']['CML2_LINK']['VALUE'];
         }
         // set id of the parent if we have child
     }
     $return = array('item_id' => intval($id));
     if (empty($item)) {
         return null;
     }
     // Get categories
     $categories = array();
     $item_categories = CIBlockElement::GetElementGroups($id, true);
     while ($category = $item_categories->Fetch()) {
         $categories[] = $category['ID'];
     }
     $return['categories'] = $categories;
     $has_price = false;
     $return['price'] = self::getFinalPriceInCurrency($return['item_id'], self::getSaleCurrency());
     if (!empty($return['price'])) {
         $has_price = true;
     }
     if (isset($item['QUANTITY'])) {
         $quantity = $item['QUANTITY'] > 0;
         $return['is_available'] = $quantity && $has_price ? 1 : 0;
     }
     if (Options::getRecommendNonAvailable()) {
         $return['is_available'] = 1;
     }
     if ($more) {
         $libMain = new \CMain();
         $libFile = new \CFile();
         $itemFull = $libProduct->GetByIDEx($id);
         $host = ($libMain->IsHTTPS() ? 'https://' : 'http://') . SITE_SERVER_NAME;
         $return['name'] = $itemFull['NAME'];
         $return['url'] = $host . $itemFull['DETAIL_PAGE_URL'];
         $picture_id = Data::getProductPhotoId($id);
         if ($picture_id !== null) {
             $return['image_url'] = $host . $libFile->GetPath($picture_id);
         }
         self::$itemArraysMoreCache[$id] = $return;
     } else {
         self::$itemArraysCache[$id] = $return;
     }
     return $return;
 }
Ejemplo n.º 3
0
    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 
    }
Ejemplo n.º 4
0
	</div>

	<div style="margin-top: 40px; display: none;">
		<label for="REES46_css"><?= GetMessage('REES_OPTIONS_CSS_FIELD') ?></label>
		<br/>
		<textarea id="REES46_css" style="width: 500px; height: 250px;" name="css"><?= strip_tags(\Rees46\Options::getRecommenderCSS()) ?></textarea>
	</div>

	<?php $tabControl->BeginNextTab(); ?>

	<?php if ($export_state === \Rees46\Service\Export::STATUS_NOT_PERFORMED): ?>
		<p>
			<?= GetMessage('REES_QUICK_EXPORT_DESC') ?>
		</p>

		<?php if(\Rees46\Options::getShopSecret() == ''): ?>
			<p><strong><?= GetMessage('REES_QUICK_EXPORT_DESC_NO_SECRET') ?></strong></p>
		<?php else: ?>
			<div>
				<input class="adm-btn-save" type="submit" value="<?= GetMessage('REES_QUICK_EXPORT_BUTTON') ?>" name="do_export">
			</div>
		<?php endif ?>

	<?php elseif ($export_state === \Rees46\Service\Export::STATUS_SUCCESS && $export_count === 0): ?>
		<div>
			<?= GetMessage('REES_QUICK_EXPORT_EMPTY') ?>
		</div>
	<?php elseif ($export_state === \Rees46\Service\Export::STATUS_SUCCESS && $export_count !== 0): ?>
		<div>
			<?= GetMessage('REES_QUICK_EXPORT_SUCCESS') ?>
		</div>
Ejemplo n.º 5
0
 public static function showRecommenderCSS()
 {
     global $APPLICATION;
     static $css_sent = false;
     $shop_id = Options::getShopID();
     if ($APPLICATION && $shop_id && $css_sent === false) {
         $APPLICATION->AddHeadString('<link href="http://rees46.com/shop_css/' . $shop_id . '" rel="stylesheet" type="text/css" />');
     }
     $css_sent = true;
     //		$prefix = SITE_DIR ?: '/';
     //
     //		if ($APPLICATION && $css_sent === false) {
     //			$APPLICATION->AddHeadString('<link href="'. $prefix .'include/rees46-handler.php?action=css" rel="stylesheet" />');
     //			$css_sent = true;
     //		}
 }
Ejemplo n.º 6
0
 public static function renderCss()
 {
     header('Content-type: text/css');
     echo Options::getRecommenderCSS();
 }
Ejemplo n.º 7
0
    /**
     * handler for include/rees46-recommender.php, render recommenders
     */
    public static function run()
    {
        CModule::IncludeModule('catalog');
        CModule::IncludeModule('sale');
        CModule::IncludeModule("iblock");
        global $USER;
        $recommended_by = '';
        // get recommender name
        if (isset($_REQUEST['recommended_by'])) {
            $recommender = strval($_REQUEST['recommended_by']);
            $recommended_by = '?recommended_by=' . urlencode($recommender);
            switch ($recommender) {
                case 'buying_now':
                    $recommender_title = GetMessage('REES_INCLUDE_BUYING_NOW');
                    break;
                case 'see_also':
                    $recommender_title = GetMessage('REES_INCLUDE_SEE_ALSO');
                    break;
                case 'recently_viewed':
                    $recommender_title = GetMessage('REES_INCLUDE_RECENTLY_VIEWED');
                    break;
                case 'also_bought':
                    $recommender_title = GetMessage('REES_INCLUDE_ALSO_BOUGHT');
                    break;
                case 'similar':
                    $recommender_title = GetMessage('REES_INCLUDE_SIMILAR');
                    break;
                case 'interesting':
                    $recommender_title = GetMessage('REES_INCLUDE_INTERESTING');
                    break;
                case 'popular':
                    $recommender_title = GetMessage('REES_INCLUDE_POPULAR');
                    break;
                default:
                    $recommender_title = '';
            }
        }
        $libCatalogProduct = new CCatalogProduct();
        $libFile = new CFile();
        // render items
        if (isset($_REQUEST['recommended_items']) && is_array($_REQUEST['recommended_items']) && count($_REQUEST['recommended_items']) > 0) {
            $found_items = 0;
            // Currency to display
            $sale_currency = Data::getSaleCurrency();
            $html = '';
            $html .= '<div class="recommender-block-title">' . $recommender_title . '</div>';
            $html .= '<div class="recommended-items">';
            foreach ($_REQUEST['recommended_items'] as $item_id) {
                $item_id = intval($item_id);
                $item = $libCatalogProduct->GetByIDEx($item_id);
                // Get price
                $final_price = Data::getFinalPriceInCurrency($item_id, $sale_currency);
                // Check price
                if ($final_price == false) {
                    continue;
                }
                // Url to product with recommended_by attribute
                $link = $item['DETAIL_PAGE_URL'] . $recommended_by;
                // Get photo
                $picture_id = Data::getProductPhotoId($item_id);
                if ($picture_id === null) {
                    continue;
                }
                $file = $libFile->ResizeImageGet($picture_id, array('width' => Options::getImageWidth(), 'height' => Options::getImageHeight()), BX_RESIZE_IMAGE_PROPORTIONAL, true);
                $html .= '<div class="recommended-item">
					<div class="recommended-item-photo"><a href="' . $link . '"><img src="' . $file['src'] . '" class="item_img"/></a></div>
					<div class="recommended-item-title"><a href="' . $link . '">' . $item['NAME'] . '</a></div>
					' . ($final_price ? '<div class="recommended-item-price">' . CCurrencyLang::CurrencyFormat($final_price, $sale_currency, true) . '</div>' : '') . '
					<div class="recommended-item-action"><a href="' . $link . '">' . GetMessage('REES_INCLUDE_MORE') . '</a></div>
				</div>';
                $found_items++;
            }
            $html .= '</div>';
            if ($found_items > 0) {
                echo $html;
            }
        }
    }