コード例 #1
0
 public function pluginDeactivate($system)
 {
     ThemeHelper::setSystemThemeDirName(ThemeHelper::SYSTEM_MOBILE_THEME, null);
     // 删除在 Manage 系统中的设置
     ManageThemePlugin::removeSystemUrlBase(PluginHelper::SYSTEM_MOBILE);
     return true;
 }
コード例 #2
0
ファイル: Update_1_0_1.php プロジェクト: jackycgq/bzfshop
        public function doUpdate($currentVersion)
        {
            // 更新数据库表
            $sqlFileContent = <<<SQL
-- 创建 cron 任务列表
CREATE TABLE IF NOT EXISTS `bzf_cron_task` (
  `task_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `user_name` varchar(32) DEFAULT NULL COMMENT '哪个用户添加的',
  `task_name` varchar(16) DEFAULT NULL COMMENT '任务名称',
  `task_desc` varchar(128) DEFAULT NULL COMMENT '任务描述',
  `task_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '任务设定时间',
  `task_run_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '任务实际运行时间',
  `task_class` varchar(128) NOT NULL COMMENT '任务的PHP Class',
  `task_param` text DEFAULT NULL,
  `search_param` varchar(64) DEFAULT NULL COMMENT '用于任务搜索',
  `return_code` int DEFAULT 0 COMMENT '任务设定时间',
  `return_message` varchar(128) DEFAULT NULL COMMENT '任务返回消息',

  PRIMARY KEY (`task_id`)
) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

ALTER TABLE `bzf_cron_task` ADD INDEX ( `task_name` ) ;
ALTER TABLE `bzf_cron_task` ADD INDEX ( `task_time` ) ;
ALTER TABLE `bzf_cron_task` ADD INDEX ( `task_run_time` ) ;
ALTER TABLE `bzf_cron_task` ADD INDEX ( `search_param` ) ;
ALTER TABLE `bzf_cron_task` ADD INDEX ( `return_code` ) ;

-- 记录管理员的行为
CREATE TABLE IF NOT EXISTS `bzf_admin_log` (
  `log_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` mediumint(8) unsigned NOT NULL ,
  `user_name` varchar(60) DEFAULT NULL ,
  `operate` varchar(16) DEFAULT NULL COMMENT '操作名称',
  `operate_desc` varchar(128) DEFAULT NULL COMMENT '操作描述',
  `operate_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '操作时间',
  `operate_data` text DEFAULT NULL COMMENT '操作的数据记录',
  PRIMARY KEY (`log_id`)
) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ALTER TABLE `bzf_admin_log` ADD INDEX ( `user_id` ) ;
ALTER TABLE `bzf_admin_log` ADD INDEX ( `operate` ) ;
ALTER TABLE `bzf_admin_log` ADD INDEX ( `operate_time` ) ;

-- 修改价格表,增加价格说明
ALTER TABLE `bzf_goods` ADD `shop_price_notice` VARCHAR( 32 ) NULL DEFAULT NULL COMMENT '价格说明' AFTER `shop_price`;
ALTER TABLE `bzf_goods` ADD `type_id` SMALLINT( 5 ) NOT NULL DEFAULT '0' COMMENT '商品类型' AFTER `cat_id`;

-- 修改 brand 表
ALTER TABLE `bzf_brand` CHANGE `sort_order` `sort_order` TINYINT( 3 ) UNSIGNED NOT NULL DEFAULT '0';
ALTER TABLE `bzf_brand` CHANGE `brand_logo` `brand_logo` VARCHAR( 128 ) NULL DEFAULT NULL ;
ALTER TABLE `bzf_brand` CHANGE `brand_desc` `brand_desc` VARCHAR( 255 ) NULL DEFAULT NULL ;
ALTER TABLE `bzf_brand` ADD `is_custom` int NULL DEFAULT 0 COMMENT '是否自定义页面';
ALTER TABLE `bzf_brand` ADD `custom_page` TEXT NULL DEFAULT NULL COMMENT '品牌自定义页面';

-- 增加 goods_attr 表记录商品的属性值
CREATE TABLE IF NOT EXISTS `bzf_goods_attr` (
  `goods_attr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `goods_id` int(10) unsigned NOT NULL DEFAULT '0',
  `attr_item_id` int(10) unsigned NOT NULL DEFAULT '0',
  `attr_item_value` varchar(128) NULL,
  PRIMARY KEY (`goods_attr_id`),
  KEY `goods_id` (`goods_id`),
  KEY `attr_item_id` (`attr_item_id`),
  KEY `attr_item_value` (`attr_item_value`)
) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

SQL;
            $dbEngine = DataMapper::getDbEngine();
            // 解析 sql 文件,导入数据
            $sqlFileContent = SqlHelper::removeComment($sqlFileContent);
            $sqlArray = SqlHelper::splitToSqlArray($sqlFileContent, ';');
            unset($sqlFileContent);
            foreach ($sqlArray as $sqlQuery) {
                $queryObject = $dbEngine->prepare($sqlQuery);
                $queryObject->execute();
                unset($sqlQuery);
                unset($queryObject);
            }
            unset($sqlArray);
            // 权限管理
            $metaPrivilegeService = new MetaPrivilegeService();
            // 删除不用的权限
            $metaPrivilegeService->removePrivilegeItem('manage_goods_attrgroup_listattrgroup');
            $metaPrivilegeService->removePrivilegeItem('manage_goods_attrgroup_create');
            $metaPrivilegeService->removePrivilegeItem('manage_goods_attrgroup_edit');
            // 添加执行权限
            $privilegeGroup = $metaPrivilegeService->loadPrivilegeGroup('manage_misc');
            $metaPrivilegeService->savePrivilegeItem($privilegeGroup['meta_id'], 'manage_misc_cron', '定时任务', '管理系统的定时任务');
            $privilegeGroup = $metaPrivilegeService->loadPrivilegeGroup('manage_account');
            $metaPrivilegeService->savePrivilegeItem($privilegeGroup['meta_id'], 'manage_account_admin_listlog', '管理员日志', '查看管理员的操作日志');
            $privilegeGroup = $metaPrivilegeService->loadPrivilegeGroup('manage_goods');
            $metaPrivilegeService->savePrivilegeItem($privilegeGroup['meta_id'], 'manage_goods_brand_listbrand', '商品品牌', '管理商品品牌');
            $metaPrivilegeService->savePrivilegeItem($privilegeGroup['meta_id'], 'manage_goods_type_listtype', '商品类型', '管理商品类型');
            // 把版本设置为 1.0.1
            ManageThemePlugin::saveOptionValue('version', $this->targetVersion);
            return true;
        }
コード例 #3
0
ファイル: smarty_helper.php プロジェクト: jackycgq/bzfshop
/**
 * 取得系统的可显示名字
 *
 */
function smarty_helper_modifier_system_display_name($system)
{
    if (empty($system)) {
        return '';
    }
    $system_url_base_array = json_decode(\Theme\Manage\ManageThemePlugin::getOptionValue('system_url_base_array'), true);
    if (!empty($system_url_base_array)) {
        if (!array_key_exists($system, $system_url_base_array)) {
            // 不存在的系统,跳过
            return '';
        }
        return $system_url_base_array[$system]['name'];
    }
}
コード例 #4
0
ファイル: plugin_load.php プロジェクト: jackycgq/bzfshop
<?php

// 加载 ManageThemePlugin   插件加载文件,用于初始化插件同时返回一个插件的 instance 对象
use Theme\Manage\ManageThemePlugin;
ManageThemePlugin::instance()->setPluginDirAbsolutePath(dirname(__FILE__));
return ManageThemePlugin::instance();
コード例 #5
0
ファイル: Update_1_0_0.php プロジェクト: jackycgq/bzfshop
 public function doUpdate($currentVersion)
 {
     // 简单的把版本设置为 1.0.0 就算完成升级了
     ManageThemePlugin::saveOptionValue('version', $this->targetVersion);
     return true;
 }
コード例 #6
0
ファイル: index.php プロジェクト: jackycgq/bzfshop
    $f3->set('ONERROR', function ($f3) {
        /**
         * Information about the last HTTP error that occurred.
         * ERROR.code is the HTTP status code.
         * ERROR.title contains a brief description of the error.
         * ERROR.text provides greater detail. For HTTP 500 errors, use ERROR.trace to retrieve the stack trace.
         */
        $code = $f3->get('ERROR.code');
        RouteHelper::reRoute(null, '/');
    });
}
// ---------------------------------------- 4. 加载显示主题 --------------------------------------
// 为 Manage 设置网站的 WebRootBase,这样在 Manage 中就可以对相应网站做操作
$systemUrlBase = ManageThemePlugin::getSystemUrlBase(PluginHelper::SYSTEM_MOBILE);
if (empty($systemUrlBase) || $systemUrlBase['base'] != $f3->get('sysConfig[webroot_url_prefix]')) {
    ManageThemePlugin::saveSystemUrlBase(PluginHelper::SYSTEM_MOBILE, '移动', '棒主妇移动端网站', $f3->get('sysConfig[webroot_url_prefix]'));
}
$themeIntance = ThemeHelper::loadSystemTheme(ThemeHelper::SYSTEM_MOBILE_THEME);
if (!$themeIntance) {
    die('没有正确设置 ' . ThemeHelper::SYSTEM_MOBILE_THEME . ' 主题');
}
// 调用主题自己的初始化方法
$themeLoadRet = $themeIntance->pluginLoad(PluginHelper::SYSTEM_MOBILE);
if (true !== $themeLoadRet) {
    die(ThemeHelper::SYSTEM_MOBILE_THEME . ' 主题无法初始化:' . $themeLoadRet);
}
// 调用主题的 action
$themeActionRet = $themeIntance->pluginAction(PluginHelper::SYSTEM_MOBILE);
if (true !== $themeActionRet) {
    die(ThemeHelper::SYSTEM_MOBILE_THEME . ' 主题无法加载:' . $themeActionRet);
}
コード例 #7
0
ファイル: Search.php プロジェクト: jackycgq/bzfshop
 public function get($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_goods_search');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     $pageSize = $validator->digits()->min(0)->validate('pageSize');
     // 设置缺省值
     $pageNo = isset($pageNo) && $pageNo > 0 ? $pageNo : 0;
     $pageSize = isset($pageSize) && $pageSize > 0 ? $pageSize : 10;
     // 搜索参数数组
     $searchFormQuery = array();
     $searchFormQuery['g.is_on_sale'] = $validator->digits()->min(0)->filter('ValidatorIntValue')->validate('is_on_sale');
     $searchFormQuery['g.goods_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('goods_id');
     $searchFormQuery['g.suppliers_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('suppliers_id');
     $searchFormQuery['g.goods_name'] = $validator->validate('goods_name');
     $searchFormQuery['g.cat_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('cat_id');
     $searchFormQuery['g.type_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('type_id');
     $searchFormQuery['g.brand_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('brand_id');
     $searchFormQuery['g.goods_sn'] = $validator->validate('goods_sn');
     $searchFormQuery['g.warehouse'] = $validator->validate('warehouse');
     $searchFormQuery['g.shelf'] = $validator->validate('shelf');
     $searchFormQuery['g.admin_user_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('admin_user_id');
     $systemTag = $validator->validate('system_tag');
     if (!empty($systemTag)) {
         $searchFormQuery['g.system_tag_list'] = Utils::makeTagString(array($systemTag));
     }
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 查询条件
     $searchParamArray = array();
     // 根据推广渠道做搜索
     $goods_promote = $validator->validate('goods_promote');
     if (!empty($goods_promote)) {
         switch ($goods_promote) {
             case '360tequan':
                 $searchParamArray[] = array('gp.360tequan_price > 0');
                 break;
             case '360tegong':
                 $searchParamArray[] = array('gp.360tegong_enable = 1');
                 break;
             default:
                 // do nothing
                 break;
         }
     }
     // 建立查询条件
     $searchParamArray = array_merge($searchParamArray, QueryBuilder::buildSearchParamArray($searchFormQuery));
     // 查询商品列表
     $totalCount = SearchHelper::count(SearchHelper::Module_GoodsGoodsPromote, $searchParamArray);
     if ($totalCount <= 0) {
         // 没商品,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Goods/Search');
     }
     // 商品列表
     $goodsArray = SearchHelper::search(SearchHelper::Module_GoodsGoodsPromote, 'g.goods_id, g.system_tag_list, g.cat_id, g.admin_user_name, g.goods_name, g.goods_number' . ', g.goods_spec, g.is_on_sale, g.type_id' . ', g.market_price, g.shop_price, g.shipping_fee, g.shipping_free_number' . ', g.suppliers_id, g.suppliers_price, g.suppliers_shipping_fee, g.warehouse, g.shelf', $searchParamArray, array(array('g.goods_id', 'desc')), $pageNo * $pageSize, $pageSize);
     // 取得供货商 id 列表,商品分类 id
     $supplierIdArray = array();
     $categoryIdArray = array();
     $typeIdArray = array();
     foreach ($goodsArray as $goodsItem) {
         $supplierIdArray[] = $goodsItem['suppliers_id'];
         $categoryIdArray[] = $goodsItem['cat_id'];
         $typeIdArray[] = $goodsItem['type_id'];
     }
     $supplierIdArray = array_unique($supplierIdArray);
     $categoryIdArray = array_unique($categoryIdArray);
     //取得供货商信息
     $userSupplierService = new UserSupplierService();
     $supplierArray = $userSupplierService->fetchSupplierArrayBySupplierIdArray($supplierIdArray);
     // 建立 suppliers_id --> supplier 的反查表,方便快速查询
     $supplierIdToSupplierArray = array();
     foreach ($supplierArray as $supplier) {
         $supplierIdToSupplierArray[$supplier['suppliers_id']] = $supplier;
     }
     $system_url_base_array = json_decode(ManageThemePlugin::getOptionValue('system_url_base_array'), true);
     // 放入供货商信息
     foreach ($goodsArray as &$goodsItem) {
         if (isset($supplierIdToSupplierArray[$goodsItem['suppliers_id']])) {
             // 很老的订单,用户可能被删除了
             $goodsItem['suppliers_name'] = $supplierIdToSupplierArray[$goodsItem['suppliers_id']]['suppliers_name'];
         }
         // 解析 system_tag_list,放入 system_array 的信息
         $systeArray = Utils::parseTagString($goodsItem['system_tag_list']);
         $goodsItem['system_array'] = array();
         foreach ($systeArray as $systemItem) {
             $goodsItem['system_array'][] = @$system_url_base_array[$systemItem]['name'];
         }
         // 商品规格
         if (!empty($goodsItem['goods_spec'])) {
             $goodsSpecService = new GoodsSpecService();
             $goodsSpecService->initWithJson($goodsItem['goods_spec']);
             $goodsItem['goods_spec'] = $goodsSpecService->getGoodsSpecDataArray();
         }
     }
     unset($goodsItem);
     // 取得分类信息
     $categoryBasicService = new CategoryBasicService();
     $categoryArray = $categoryBasicService->fetchCategoryArrayByIdArray($categoryIdArray);
     // 建立 cat_id  ---> cateogry 信息的反查表
     $categoryIdToCategoryArray = array();
     foreach ($categoryArray as $categoryItem) {
         $categoryIdToCategoryArray[$categoryItem['meta_id']] = $categoryItem;
     }
     // 放入分类信息
     foreach ($goodsArray as &$goodsItem) {
         if (isset($categoryIdToCategoryArray[$goodsItem['cat_id']])) {
             // 很老的商品,分类信息可能已经不存在了
             $goodsItem['cat_name'] = $categoryIdToCategoryArray[$goodsItem['cat_id']]['meta_name'];
         }
     }
     unset($goodsItem);
     // 取得商品类型信息
     $goodsTypeService = new GoodsTypeService();
     $goodsTypeArray = $goodsTypeService->fetchGoodsTypeArrayByTypeIdArray($typeIdArray);
     // 建立 type_id ---> type 信息的反查表
     $typeIdToTypeArray = array();
     foreach ($goodsTypeArray as $goodsType) {
         $typeIdToTypeArray[$goodsType['meta_id']] = $goodsType;
     }
     // 放入类型信息
     foreach ($goodsArray as &$goodsItem) {
         if (isset($typeIdToTypeArray[$goodsItem['type_id']])) {
             $goodsItem['type_name'] = $typeIdToTypeArray[$goodsItem['type_id']]['meta_name'];
         }
     }
     unset($goodsItem);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('goodsArray', $goodsArray);
     $smarty->assign('system_url_base_array', json_decode(ManageThemePlugin::getOptionValue('system_url_base_array'), true));
     out_display:
     $smarty->display('goods_search.tpl');
 }
コード例 #8
0
ファイル: Route.php プロジェクト: jackycgq/bzfshop
 /**
  * 生成不同系统的 URL,比如生成 Shop, Groupon, Mobile 系统的 URL
  * 在 Manage 或者 Supplier 中很有用
  *
  * @param  string $system
  * @param  string $controller
  * @param array   $paramArray
  * @param bool    $static
  *
  * @return string
  * @throws \InvalidArgumentException
  */
 public static function makeShopSystemUrl($system, $controller, array $paramArray = null, $static = null)
 {
     if (empty($system)) {
         throw new \InvalidArgumentException('system can not be empty');
     }
     $systemUrlBase = ManageThemePlugin::getSystemUrlBase($system);
     global $f3;
     if (empty($systemUrlBase) || !isset($systemUrlBase['base'])) {
         if ($f3->get('DEBUG')) {
             throw new \InvalidArgumentException('system [' . $system . '] is invalid');
         }
         return '';
     }
     if (null === $static) {
         $static = $f3->get('sysConfig[enable_static_url][' . $system . ']');
         if (empty($static)) {
             $static = false;
         }
     }
     return self::makeUrlWithSiteBase($systemUrlBase['base'], $controller, $paramArray, false, false, $static);
 }
コード例 #9
0
ファイル: bootstrap.php プロジェクト: jackycgq/bzfshop
         * ERROR.title contains a brief description of the error.
         * ERROR.text provides greater detail. For HTTP 500 errors, use ERROR.trace to retrieve the stack trace.
         */
        $code = $f3->get('ERROR.code');
        if (404 == intval($code)) {
            RouteHelper::reRoute(null, '/Error/E404?url=' . urlencode(RouteHelper::getFullURL()));
        } else {
            RouteHelper::reRoute(null, '/');
        }
    });
}
// ---------------------------------------- 4. 加载显示主题 -----------------------------------
// 为 Manage 设置网站的 WebRootBase,这样在 Manage 中就可以对相应网站做操作
$systemUrlBase = ManageThemePlugin::getSystemUrlBase(PluginHelper::SYSTEM_SHOP);
if (empty($systemUrlBase) || $systemUrlBase['base'] != $f3->get('sysConfig[webroot_url_prefix]')) {
    ManageThemePlugin::saveSystemUrlBase(PluginHelper::SYSTEM_SHOP, '商城', '棒主妇商城', $f3->get('sysConfig[webroot_url_prefix]'));
}
$themeIntance = ThemeHelper::loadSystemTheme(ThemeHelper::SYSTEM_SHOP_THEME);
if (!$themeIntance) {
    die('没有正确设置 ' . ThemeHelper::SYSTEM_SHOP_THEME . ' 主题');
}
// 调用主题自己的初始化方法
$themeLoadRet = $themeIntance->pluginLoad(PluginHelper::SYSTEM_SHOP);
if (true !== $themeLoadRet) {
    die(ThemeHelper::SYSTEM_SHOP_THEME . ' 主题无法初始化:' . $themeLoadRet);
}
// 调用主题的 action
$themeActionRet = $themeIntance->pluginAction(PluginHelper::SYSTEM_SHOP);
if (true !== $themeActionRet) {
    die(ThemeHelper::SYSTEM_SHOP_THEME . ' 主题无法加载:' . $themeActionRet);
}
コード例 #10
0
ファイル: Search.php プロジェクト: jackycgq/bzfshop
 public function get($f3)
 {
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     $pageSize = $validator->digits()->min(0)->validate('pageSize');
     // 设置缺省值
     $pageNo = isset($pageNo) && $pageNo > 0 ? $pageNo : 0;
     $pageSize = isset($pageSize) && $pageSize > 0 ? $pageSize : 10;
     // 查询条件
     $searchFormQuery = array();
     $searchFormQuery['g.is_on_sale'] = $validator->digits()->min(0)->filter('ValidatorIntValue')->validate('is_on_sale');
     $searchFormQuery['g.goods_id'] = $validator->digits()->min(1)->filter('ValidatorIntValue')->validate('goods_id');
     $searchFormQuery['g.goods_name'] = $validator->validate('goods_name');
     $searchFormQuery['g.goods_sn'] = $validator->validate('goods_sn');
     $searchFormQuery['g.warehouse'] = $validator->validate('warehouse');
     $searchFormQuery['g.shelf'] = $validator->validate('shelf');
     if (!$this->validate($validator)) {
         goto out_display;
     }
     // 构造查询条件
     $authSupplierUser = AuthHelper::getAuthUser();
     $searchFormQuery['g.suppliers_id'] = intval($authSupplierUser['suppliers_id']);
     // 建立查询条件
     $searchParamArray = QueryBuilder::buildSearchParamArray($searchFormQuery);
     // 查询商品列表
     $totalCount = SearchHelper::count(SearchHelper::Module_Goods, $searchParamArray);
     if ($totalCount <= 0) {
         // 没商品,可以直接退出了
         goto out_display;
     }
     // 页数超过最大值,返回第一页
     if ($pageNo * $pageSize >= $totalCount) {
         RouteHelper::reRoute($this, '/Goods/Search');
     }
     // 商品列表
     $goodsArray = SearchHelper::search(SearchHelper::Module_Goods, $this->searchFieldSelector, $searchParamArray, array(array('g.goods_id', 'desc')), $pageNo * $pageSize, $pageSize);
     $system_url_base_array = json_decode(ManageThemePlugin::getOptionValue('system_url_base_array'), true);
     foreach ($goodsArray as &$goodsItem) {
         // 解析 system_tag_list,放入 system_array 的信息
         $systeArray = Utils::parseTagString($goodsItem['system_tag_list']);
         $goodsItem['system_array'] = array();
         foreach ($systeArray as $systemItem) {
             $goodsItem['system_array'][] = @$system_url_base_array[$systemItem]['name'];
         }
         // 商品规格
         if (!empty($goodsItem['goods_spec'])) {
             $goodsSpecService = new GoodsSpecService();
             $goodsSpecService->initWithJson($goodsItem['goods_spec']);
             $goodsItem['goods_spec'] = $goodsSpecService->getGoodsSpecDataArray();
         }
     }
     unset($goodsItem);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('goodsArray', $goodsArray);
     out_display:
     $smarty->display('goods_search.tpl');
 }