示例#1
0
 public function doUpdate($currentVersion)
 {
     // 增加了一个新的参数
     EtaoFeedPlugin::saveOptionValue('etaofeed_goods_url_extra_param', '&utm_source=etao');
     // 把版本升级到 1.0.1
     EtaoFeedPlugin::saveOptionValue('version', $this->targetVersion);
     return true;
 }
示例#2
0
    public function get($f3)
    {
        global $smarty;
        $smartyCacheId = 'EtaoFeed|' . md5(__NAMESPACE__ . '\\' . __CLASS__ . '_\\' . __METHOD__);
        // 判断是否有缓存
        enableSmartyCache(true, 1200);
        // 缓存 20 分钟
        if ($smarty->isCached('empty.tpl', $smartyCacheId)) {
            goto out_display;
        }
        $currentStamp = Time::localTimeStr();
        $sellerId = EtaoFeedPlugin::getOptionValue('etaofeed_seller_id');
        $categoryUrl = RouteHelper::makeUrl('/Thirdpart/EtaoFeed/Category', null, false, true);
        $itemDir = RouteHelper::makeUrl('/Thirdpart/EtaoFeed/Item', null, false, true);
        $itemIdXmlList = '';
        // 处理 delete 的商品
        $currentThemeInstance = ThemeHelper::getCurrentSystemThemeInstance();
        $totalGoodsCount = SearchHelper::count(SearchHelper::Module_Goods, array(array('is_on_sale = 0'), array('update_time', '>=', EtaoFeedPlugin::getOptionValue('etaofeed_query_timestamp')), array(QueryBuilder::buildGoodsFilterForSystem($currentThemeInstance->getGoodsFilterSystemArray()))));
        if ($totalGoodsCount <= 0) {
            goto query_update_goods;
        }
        $totalPageCount = ceil($totalGoodsCount / Item::$pageSize);
        for ($index = 0; $index < $totalPageCount; $index++) {
            $itemIdXmlList .= '<outer_id action="delete">1' . $index . '</outer_id>';
        }
        query_update_goods:
        // 处理修改过的商品
        $totalGoodsCount = SearchHelper::count(SearchHelper::Module_Goods, array(array('is_on_sale = 1'), array('update_time', '>=', EtaoFeedPlugin::getOptionValue('etaofeed_query_timestamp')), array(QueryBuilder::buildGoodsFilterForSystem($currentThemeInstance->getGoodsFilterSystemArray()))));
        if ($totalGoodsCount <= 0) {
            goto out_output;
        }
        $totalPageCount = ceil($totalGoodsCount / Item::$pageSize);
        for ($index = 0; $index < $totalPageCount; $index++) {
            $itemIdXmlList .= '<outer_id action="upload">2' . $index . '</outer_id>';
        }
        out_output:
        $apiXml = <<<XML
<?xml version="1.0" encoding="utf-8" ?>
<root>
  <version>1.0</version>
  <modified>{$currentStamp}</modified>
  <seller_id>{$sellerId}</seller_id>
  <cat_url>{$categoryUrl}</cat_url>
  <dir>{$itemDir}/</dir>
  <item_ids>{$itemIdXmlList}</item_ids>
</root>
XML;
        $smarty->assign('outputContent', $apiXml);
        // 更新查询时间
        //EtaoFeedPlugin::saveOptionValue('etaofeed_query_timestamp', Time::gmTime());
        out_display:
        header('Content-Type:text/xml;charset=utf-8');
        header("Cache-Control: no-cache, must-revalidate");
        // HTTP/1.1 //查询信息
        $smarty->display('empty.tpl', $smartyCacheId);
    }
示例#3
0
 public function post($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_plugin_plugin_configure');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('POST'));
     $etaofeed_seller_id = $validator->required()->validate('etaofeed_seller_id');
     $etaofeed_goods_url_extra_param = $validator->validate('etaofeed_goods_url_extra_param');
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 保存设置
     EtaoFeedPlugin::saveOptionValue('etaofeed_seller_id', $etaofeed_seller_id);
     EtaoFeedPlugin::saveOptionValue('etaofeed_goods_url_extra_param', $etaofeed_goods_url_extra_param);
     $this->addFlashMessage('保存设置成功');
     out_display:
     $smarty->display('etaofeed_configure.tpl', 'post');
 }
示例#4
0
    public function get($f3)
    {
        global $smarty;
        $smartyCacheId = 'EtaoFeed|' . md5(__NAMESPACE__ . '\\' . __CLASS__ . '_\\' . __METHOD__);
        // 判断是否有缓存
        enableSmartyCache(true, 1800);
        // 缓存 30 分钟
        if ($smarty->isCached('empty.tpl', $smartyCacheId)) {
            goto out_display;
        }
        // 取得商品分类树形结构
        $goodsCategoryService = new GoodsCategoryService();
        $goodsCategoryTreeArray = $goodsCategoryService->fetchCategoryTreeArray(0);
        $currentStamp = Time::localTimeStr();
        $sellerId = EtaoFeedPlugin::getOptionValue('etaofeed_seller_id');
        // 生成商品分类 XML
        $categoryXmlList = '';
        foreach ($goodsCategoryTreeArray as $goodsCategoryItem) {
            $categoryXmlList .= $this->getGoodsCategoryXml($goodsCategoryItem);
        }
        $apiXml = <<<XML
<?xml version="1.0" encoding="utf-8" ?>
<root>
  <version>1.0</version>
  <modified>{$currentStamp}</modified>
  <seller_id>{$sellerId}</seller_id>
  <seller_cats>{$categoryXmlList}</seller_cats>
</root>
XML;
        $smarty->assign('outputContent', $apiXml);
        out_display:
        header('Content-Type:text/xml;charset=utf-8');
        header("Cache-Control: no-cache, must-revalidate");
        // HTTP/1.1 //查询信息
        $smarty->display('empty.tpl', $smartyCacheId);
    }
示例#5
0
文件: Item.php 项目: jackycgq/bzfshop
    private function getGoodsItemXml($goodsItem, $goodsIdToGalleryArray)
    {
        // 截取描述,不能太长
        $goodsItem['goods_desc'] = mb_substr($goodsItem['goods_name'] . ' ' . strip_tags($goodsItem['goods_desc']), 0, 1000);
        // 截取商品标题,标题不能太长了
        $goodsItem['goods_name'] = mb_substr($goodsItem['goods_name'], 0, 60);
        $goodsViewUrl = RouteHelper::makeUrl('/Goods/View', array('goods_id' => $goodsItem['goods_id']), false, true);
        // 增加额外的链接参数
        $goodsViewUrl .= EtaoFeedPlugin::getOptionValue('etaofeed_goods_url_extra_param');
        // 处理图片列表
        $goodsGalleryArray = array();
        if (array_key_exists($goodsItem['goods_id'], $goodsIdToGalleryArray)) {
            $goodsGalleryArray = $goodsIdToGalleryArray[$goodsItem['goods_id']];
        }
        $goodsItemImageXml = '';
        if (!empty($goodsGalleryArray)) {
            $goodsItemImageXml = '<image is_default="true">' . RouteHelper::makeImageUrl($goodsGalleryArray[0]['img_original']) . '</image>';
            array_shift($goodsGalleryArray);
            // 去掉第一个图片
            $goodsItemImageXml .= '<more_images>';
            // 图片集中的图片
            foreach ($goodsGalleryArray as $goodsGalleryItem) {
                $goodsItemImageXml .= '<img>' . RouteHelper::makeImageUrl($goodsGalleryItem['img_original']) . '</img>';
            }
            $goodsItemImageXml .= '</more_images>';
        }
        // 转换数据显示
        $goodsItem['shop_price'] = Money::toSmartyDisplay($goodsItem['shop_price']);
        $goodsItem['shipping_fee'] = Money::toSmartyDisplay($goodsItem['shipping_fee']);
        $goodsItemXml = <<<XML
<item>
\t<seller_id><![CDATA[{$this->sellerId}]]></seller_id>
\t<outer_id>{$goodsItem['goods_id']}</outer_id>
\t<title><![CDATA[{$goodsItem['goods_name']}]]></title>
\t<product_id>{$goodsItem['goods_sn']}</product_id>
\t<type>fixed</type>
\t<available>1</available>
\t<price>{$goodsItem['shop_price']}</price>
\t<desc><![CDATA[{$goodsItem['goods_desc']}]]></desc>
\t{$goodsItemImageXml}
\t<scids>{$goodsItem['cat_id']}</scids>
\t<post_fee>{$goodsItem['shipping_fee']}</post_fee>
\t<href><![CDATA[{$goodsViewUrl}]]></href>
</item>
XML;
        return $goodsItemXml;
    }