public function doUpdate($currentVersion) { // 增加了一个新的参数 EtaoFeedPlugin::saveOptionValue('etaofeed_goods_url_extra_param', '&utm_source=etao'); // 把版本升级到 1.0.1 EtaoFeedPlugin::saveOptionValue('version', $this->targetVersion); return true; }
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); }
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'); }
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); }
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; }