Exemple #1
0
 /**
  *
  * @param string $logFileName 日志文件名
  */
 function __construct($logFileName = null)
 {
     // 取得云平台 日志模块
     $this->cloudEngineLog = CloudHelper::getCloudModule(CloudHelper::CLOUD_MODULE_Log);
     // 初始化日志引擎
     $this->cloudEngineLog->initLog($logFileName);
 }
Exemple #2
0
 /**
  * 构造函数
  *
  * 一个配置的简单例子
  *
  *  $config = array(
  *       "savePath" => $dataPathRoot . '/upload/image',
  *       "pathFix" => $dataPathRoot,
  *       'urlPrefix' => $dataUrlPrefix,
  *       "maxSize" => 1000, //单位KB
  *       "allowFiles" => array(".gif", ".png", ".jpg", ".jpeg")
  *  );
  *
  * @param string $fileField 表单名称
  * @param array  $config    配置项
  * @param bool   $base64    是否解析base64编码,可省略。若开启,则$fileField代表的是base64编码的字符串表单名
  */
 public function __construct($fileField, $config, $base64 = false)
 {
     // 取得云引擎的 Storage 模块
     $this->cloudStorage = CloudHelper::getCloudModule(CloudHelper::CLOUD_MODULE_STORAGE);
     $this->fileField = $fileField;
     $this->config = $config;
     $this->stateInfo = $this->stateMap[0];
     $this->upFile($base64);
 }
Exemple #3
0
 /**
  * 取得数据库引擎,如果数据库引擎没有初始化,我们这里会做初始化
  */
 public static function getDbEngine()
 {
     if (null == static::$dbEngine) {
         global $f3;
         // 初始化全站数据库
         static::$tablePrefix = $f3->get('sysConfig[db_table_prefix]');
         // 获得云平台的数据库引擎
         $cloudModuleDb = CloudHelper::getCloudModule(CloudHelper::CLOUD_MODULE_DB);
         static::$dbEngine = $cloudModuleDb->getDb();
     }
     return static::$dbEngine;
 }
Exemple #4
0
if (!defined('BZF_PHP_VERSION_REQUIRE')) {
    die('illegal call, please call index.php');
}
define('INSTALL_PATH', dirname(__FILE__));
define('INSTALL_DIR', basename(INSTALL_PATH));
// 包含整个系统的初始化
require_once INSTALL_PATH . '/../protected/bootstrap.php';
// ---------------------------------------- 1. 设置系统运行环境 --------------------------------------
// 设置工作时区
if ($f3->get('sysConfig[time_zone]')) {
    date_default_timezone_set($f3->get('sysConfig[time_zone]'));
}
// 设置网站唯一的 key,防止通用模块之间的冲突
RouteHelper::$uniqueKey = 'BZFRouteHelper';
// ------------ 2. 初始化 云服务引擎,云服务引擎会设置好我们的运行环境,包括 可写目录 等 ------------
CloudHelper::initCloudEnv(PluginHelper::SYSTEM_INSTALL);
// RUNTIME_PATH 必须要有读写权限
@file_put_contents(RUNTIME_PATH . '/install.write', 'install.write');
if ('install.write' != @file_get_contents(RUNTIME_PATH . '/install.write')) {
    die('错误:[' . RUNTIME_PATH . ']必须有读写权限');
}
unlink(RUNTIME_PATH . '/install.write');
// ---------------------------------------- 3. 开启系统日志 --------------------------------------
// 设置一个 fileLogger 方便查看所有的日志输出
$fileLogger = new \Core\Log\File('install.log');
$logger->addLogger($fileLogger);
unset($fileLogger);
/* * **************** 如果是调试模式,在这里设置调试 ************************ */
if ($f3->get('DEBUG')) {
    // 调试模式,关闭缓存
    $f3->set('CACHE', false);
Exemple #5
0
 /**
  * 从网络抓取图片进入相册
  *
  * @param $f3
  */
 public function Fetch($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_goods_edit_edit_post');
     // 参数验证
     $validator = new Validator($f3->get('POST'));
     $goods_id = $validator->required('商品ID不能为空')->digits()->min(1)->validate('goods_id');
     $imageUrl = $validator->required('图片地址不能为空')->validate('imageUrl');
     if (!$this->validate($validator)) {
         goto out_fail;
     }
     // 抓取图片,伪装成浏览器防止被某些服务器阻止
     $webInstance = \Web::instance();
     $webInstance->engine('curl');
     $request = $webInstance->request($imageUrl, array('user_agent' => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)'));
     if (!$request || isset($request['http_code']) && 200 != $request['http_code']) {
         $this->addFlashMessage('抓取失败,请检查你的抓取地址');
         goto out;
     }
     // 把图片保存到 Storage 中
     $cloudStorage = CloudHelper::getCloudModule(CloudHelper::CLOUD_MODULE_STORAGE);
     // 图片文件先保存到临时文件中
     $tempSrcFilePath = $cloudStorage->getTempFilePath();
     file_put_contents($tempSrcFilePath, $request['body']);
     // 上传目录
     $dataPathRoot = $f3->get('sysConfig[data_path_root]');
     $saveFilePathRelative = 'upload/image/' . date("Y/m/d") . '/' . date("YmdHis") . '_' . rand(1, 10000) . strtolower(strrchr($imageUrl, '.'));
     // 文件上传到 Storage
     if (!$cloudStorage->moveFileToStorage($dataPathRoot, $saveFilePathRelative, $tempSrcFilePath)) {
         $this->addFlashMessage('保存文件到存储失败,失败');
         goto out;
     }
     @unlink($tempSrcFilePath);
     // 保存 goods_gallery 记录
     $imageOriginalFileRelativeName = $saveFilePathRelative;
     $pathInfoArray = pathinfo($imageOriginalFileRelativeName);
     //生成头图
     $imageFileRelativeName = $pathInfoArray['dirname'] . '/' . $pathInfoArray['filename'] . '_' . $f3->get('sysConfig[image_width]') . 'x' . $f3->get('sysConfig[image_height]') . '.jpg';
     StorageImageHelper::resizeImage($dataPathRoot, $imageOriginalFileRelativeName, $imageFileRelativeName, $f3->get('sysConfig[image_width]'), $f3->get('sysConfig[image_height]'));
     //生成缩略图
     $imageThumbFileRelativeName = $pathInfoArray['dirname'] . '/' . $pathInfoArray['filename'] . '_' . $f3->get('sysConfig[image_thumb_width]') . 'x' . $f3->get('sysConfig[image_thumb_height]') . '.jpg';
     StorageImageHelper::resizeImage($dataPathRoot, $imageOriginalFileRelativeName, $imageThumbFileRelativeName, $f3->get('sysConfig[image_thumb_width]'), $f3->get('sysConfig[image_thumb_height]'));
     //保存 goods_gallery 记录
     $goodsGalleryService = new GoodsGalleryService();
     // ID 为0,返回一个新建的 dataMapper
     $goodsGallery = $goodsGalleryService->_loadById('goods_gallery', 'img_id=?', 0);
     $goodsGallery->goods_id = $goods_id;
     $goodsGallery->img_desc = '网络下载图片';
     $goodsGallery->img_original = $imageOriginalFileRelativeName;
     $goodsGallery->img_url = $imageFileRelativeName;
     $goodsGallery->thumb_url = $imageThumbFileRelativeName;
     $goodsGallery->save();
     $this->addFlashMessage('抓取图片成功');
     //清除缓存,确保商品显示正确
     ClearHelper::clearGoodsCacheById($goodsGallery->goods_id);
     out:
     // 释放资源
     unset($request);
     unset($webInstance);
     RouteHelper::reRoute($this, RouteHelper::makeUrl('/Goods/Edit/Gallery', array('goods_id' => $goods_id), true));
     return;
     // 成功从这里返回
     out_fail:
     RouteHelper::reRoute($this, '/Goods/Search');
 }
Exemple #6
0
require_once PROTECTED_PATH . '/Core/Cloud/CloudHelper.php';
// ---------------------------------------- 1. 设置系统运行环境 --------------------------------------
// 加载全局变量设置
$f3->config(PROTECTED_PATH . '/Config/supplier.cfg');
// 根据环境变量的不同,加载对应的环境变量设置,开发环境和生产环境的配置显然是不一样的
$f3->config(PROTECTED_PATH . '/Config/supplier-' . $f3->get('sysConfig[env]') . '.cfg');
// 设置工作时区
if ($f3->get('sysConfig[time_zone]')) {
    date_default_timezone_set($f3->get('sysConfig[time_zone]'));
}
// 设置网站唯一的 key,防止通用模块之间的冲突
RouteHelper::$uniqueKey = 'SUPPLIER';
AuthHelper::$uniqueKey = 'SUPPLIER';
OrderBasicService::$orderSnPrefix = 'SUPPLIER';
// ------------ 2. 初始化 云服务引擎,云服务引擎会设置好我们的运行环境,包括 可写目录 等 ------------
CloudHelper::initCloudEnv(PluginHelper::SYSTEM_SUPPLIER);
// ---------------------------------------- 3. 开启系统日志 --------------------------------------
// 设置系统的日志
$todayDateStr = \Core\Helper\Utility\Time::localTimeStr('Y-m-d');
$todayDateArray = explode('-', $todayDateStr);
// 设置一个 fileLogger 方便查看所有的日志输出,按照 年/月/年-月-日.log 输出
$fileLogger = new \Core\Log\File($todayDateArray[0] . '/' . $todayDateArray[1] . '/' . implode('-', $todayDateArray) . '.supplier.log');
// 我们不打印 DEBUG 级别的日志,不然数据量太大了
$fileLogger->levelAllow = array(\Core\Log\Base::CRITICAL, \Core\Log\Base::ERROR, \Core\Log\Base::WARN, \Core\Log\Base::NOTICE, \Core\Log\Base::INFO);
$logger->addLogger($fileLogger);
unset($fileLogger);
/* * **************** 如果是调试模式,在这里设置调试 ************************ */
if ($f3->get('DEBUG')) {
    // 调试模式,关闭缓存
    $f3->set('CACHE', false);
    // 调试模式下,弄一个 fileLogger 方便查看所有的日志输出
Exemple #7
0
    date_default_timezone_set($f3->get('sysConfig[time_zone]'));
}
// 设置 session 在多个子域名之间共享
if ($f3->get('sysConfig[cookie_domain]')) {
    $f3->set('JAR.domain', $f3->get('sysConfig[cookie_domain]'));
}
// 设置网站唯一的 key,防止通用模块之间的冲突
RouteHelper::$uniqueKey = 'MOBILE';
OrderBasicService::$orderSnPrefix = 'MB';
ReferHelper::$orderReferStorageKey = 'BZFOrderRefer';
// 记录系统订单来源
CartBasicService::$cartSystemId = \Core\Plugin\PluginHelper::SYSTEM_MOBILE;
// 把几个网站的 key 设置成一样,配合 sysConfig[cookie_domain] 设置,就可以实现几个网站 统一登陆
AuthHelper::$uniqueKey = 'BZFAUTH';
// ------------ 2. 初始化 云服务引擎,云服务引擎会设置好我们的运行环境,包括 可写目录 等 ------------
CloudHelper::initCloudEnv(PluginHelper::SYSTEM_MOBILE);
// ---------------------------------------- 3. 开启系统日志 --------------------------------------
$todayDateStr = \Core\Helper\Utility\Time::localTimeStr('Y-m-d');
$todayDateArray = explode('-', $todayDateStr);
// 设置一个 fileLogger 方便查看所有的日志输出,按照 年/月/年-月-日.log 输出
$fileLogger = new \Core\Log\File($todayDateArray[0] . '/' . $todayDateArray[1] . '/' . implode('-', $todayDateArray) . '.mobile.log');
// 我们不打印 DEBUG 级别的日志,不然数据量太大了
$fileLogger->levelAllow = array(\Core\Log\Base::CRITICAL, \Core\Log\Base::ERROR, \Core\Log\Base::WARN, \Core\Log\Base::NOTICE, \Core\Log\Base::INFO);
$logger->addLogger($fileLogger);
unset($fileLogger);
// 设置支付日志,我们需要把所有的支付都记录到支付日志中方便以后查询,按照日期分目录存储
$fileLogger = new \Core\Log\File('PAYMENT/' . $todayDateArray[0] . '/' . $todayDateArray[1] . '/' . implode('-', $todayDateArray) . '.payment.log');
$fileLogger->sourceAllow[] = 'PAYMENT';
// 只接收支付日志
$logger->addLogger($fileLogger);
// 把 $fileLogger 放到全局日志列表中
Exemple #8
0
 /**
  * 生成一个新的尺寸的图片,并且保存到缓存目录里面
  *
  * @param  string $dataPathRoot          数据存放的根目录
  * @param  string $imageFileRelativeName 源图片文件的相对路径名,相对于 $dataPathRoot
  * @param   int   $width
  * @param   int   $height
  * @param bool    $crop                  如果图片长宽比例不合适,是否剪切掉
  *
  * @return string  返回相对于 $dataPathRoot 的新文件路径
  */
 public static function cropImageIfNotExist($dataPathRoot, $imageFileRelativeName, $width, $height)
 {
     $cloudStorage = CloudHelper::getCloudModule(CloudHelper::CLOUD_MODULE_STORAGE);
     $soureFilePath = $dataPathRoot . '/' . $imageFileRelativeName;
     // 源文件不存在,返回空
     if (!$cloudStorage->fileExists($dataPathRoot, $imageFileRelativeName)) {
         printLog('[' . $soureFilePath . '] does not exist', __CLASS__, \Core\Log\Base::ERROR);
         return '';
     }
     // 自动生成缩率文件,放在 Cache 目录下
     $pathInfoArray = pathinfo($imageFileRelativeName);
     $targetDirPathRelative = static::$cacheDirName . '/' . $pathInfoArray['dirname'];
     $targetFilePathRelative = $targetDirPathRelative . '/' . $pathInfoArray['filename'] . '_' . $width . 'x' . $height . '_' . 'crop' . '.' . $pathInfoArray['extension'];
     if ($cloudStorage->fileExists($dataPathRoot, $targetFilePathRelative)) {
         goto out;
     }
     self::cropImage($dataPathRoot, $imageFileRelativeName, $targetFilePathRelative, $width, $height);
     printLog('crop [' . $soureFilePath . '] to [' . $dataPathRoot . '/' . $targetFilePathRelative . '] width [' . $width . '] height [' . $height . ']', __CLASS__);
     out:
     return $targetFilePathRelative;
 }
define('CONSOLE_PATH', dirname(__FILE__));
define('CONSOLE_DIR', basename(CONSOLE_PATH));
// 包含整个系统的初始化
require_once CONSOLE_PATH . '/../protected/bootstrap-console.php';
// 增加当前项目的 autoload 路径
$f3->set('AUTOLOAD', CONSOLE_PATH . '/;' . $f3->get('AUTOLOAD'));
// 加载全局变量设置
$f3->config(PROTECTED_PATH . '/Config/console.cfg');
// 根据环境变量的不同,加载对应的环境变量设置,开发环境和生产环境的配置显然是不一样的
$f3->config(PROTECTED_PATH . '/Config/console-' . $f3->get('sysConfig[env]') . '.cfg');
// 设置工作时区
if ($f3->get('sysConfig[time_zone]')) {
    date_default_timezone_set($f3->get('sysConfig[time_zone]'));
}
// 初始化 云服务引擎,云服务引擎会设置好我们的运行环境,包括 可写目录 等
CloudHelper::initCloudEnv(PluginHelper::SYSTEM_CONSOLE);
$todayDateStr = \Core\Helper\Utility\Time::localTimeStr('Y-m-d');
$todayDateArray = explode('-', $todayDateStr);
// 设置一个 fileLogger 方便查看所有的日志输出,按照 年/月/年-月-日.log 输出
$fileLogger = new \Core\Log\File($todayDateArray[0] . '/' . $todayDateArray[1] . '/' . implode('-', $todayDateArray) . '.console.log');
// 我们不打印 DEBUG 级别的日志,不然数据量太大了
$fileLogger->levelAllow = array(\Core\Log\Base::CRITICAL, \Core\Log\Base::ERROR, \Core\Log\Base::WARN, \Core\Log\Base::NOTICE, \Core\Log\Base::INFO);
$logger->addLogger($fileLogger);
unset($fileLogger);
// 设置一个 consoleLogger,这样我们可以同步在控制台看到输出结果
$consoleLogger = new \Core\Log\Console();
$consoleLogger->levelAllow = array(\Core\Log\Base::CRITICAL, \Core\Log\Base::ERROR, \Core\Log\Base::WARN, \Core\Log\Base::NOTICE, \Core\Log\Base::INFO);
$logger->addLogger($consoleLogger);
//unset($consoleLogger);
/* * **************** 如果是调试模式,在这里设置调试 ************************ */
if ($f3->get('DEBUG')) {
Exemple #10
0
    date_default_timezone_set($f3->get('sysConfig[time_zone]'));
}
// 设置 session 在多个子域名之间共享
if ($f3->get('sysConfig[cookie_domain]')) {
    $f3->set('JAR.domain', $f3->get('sysConfig[cookie_domain]'));
}
// 设置网站唯一的 key,防止通用模块之间的冲突
RouteHelper::$uniqueKey = 'BZFRouteHelper';
OrderBasicService::$orderSnPrefix = 'SB';
ReferHelper::$orderReferStorageKey = 'BZFOrderRefer';
// 记录系统订单来源
CartBasicService::$cartSystemId = PluginHelper::SYSTEM_SHOP;
// 把几个网站的 key 设置成一样,配合 sysConfig[cookie_domain] 设置,就可以实现几个网站 统一登陆
AuthHelper::$uniqueKey = 'BZFAUTH';
// ------------ 2. 初始化 云服务引擎,云服务引擎会设置好我们的运行环境,包括 可写目录 等 ------------
CloudHelper::initCloudEnv(PluginHelper::SYSTEM_SHOP);
// ---------------------------------------- 3. 开启系统日志 --------------------------------------
$todayDateStr = \Core\Helper\Utility\Time::localTimeStr('Y-m-d');
$todayDateArray = explode('-', $todayDateStr);
// 设置一个 fileLogger 方便查看所有的日志输出,按照 年/月/年-月-日.log 输出
$fileLogger = new \Core\Log\File($todayDateArray[0] . '/' . $todayDateArray[1] . '/' . implode('-', $todayDateArray) . '.shop.log');
// 我们不打印 DEBUG 级别的日志,不然数据量太大了
$fileLogger->levelAllow = array(\Core\Log\Base::CRITICAL, \Core\Log\Base::ERROR, \Core\Log\Base::WARN, \Core\Log\Base::NOTICE, \Core\Log\Base::INFO);
$logger->addLogger($fileLogger);
unset($fileLogger);
// 设置支付日志,我们需要把所有的支付都记录到支付日志中方便以后查询,按照日期分目录存储
$fileLogger = new \Core\Log\File('PAYMENT/' . $todayDateArray[0] . '/' . $todayDateArray[1] . '/' . implode('-', $todayDateArray) . '.payment.log');
$fileLogger->sourceAllow[] = 'PAYMENT';
// 只接收支付日志
$logger->addLogger($fileLogger);
// 把 $fileLogger 放到全局日志列表中
Exemple #11
0
// 加载全局变量设置
$f3->config(PROTECTED_PATH . '/Config/manage.cfg');
// 根据环境变量的不同,加载对应的环境变量设置,开发环境和生产环境的配置显然是不一样的
$f3->config(PROTECTED_PATH . '/Config/manage-' . $f3->get('sysConfig[env]') . '.cfg');
// 设置工作时区
if ($f3->get('sysConfig[time_zone]')) {
    date_default_timezone_set($f3->get('sysConfig[time_zone]'));
}
// 设置网站唯一的 key,防止通用模块之间的冲突
RouteHelper::$uniqueKey = 'MANAGE';
AuthHelper::$uniqueKey = 'MANAGE';
AuthHelper::$enableCookieAuth = true;
// manage 用到了 swfupload 用于上传图片,所以必须开启 CookieAuth
OrderBasicService::$orderSnPrefix = 'MANAGE';
// ------------ 2. 初始化 云服务引擎,云服务引擎会设置好我们的运行环境,包括 可写目录 等 ------------
CloudHelper::initCloudEnv(PluginHelper::SYSTEM_MANAGE);
// ---------------------------------------- 3. 开启系统日志 --------------------------------------
// 设置系统的日志
$todayDateStr = \Core\Helper\Utility\Time::localTimeStr('Y-m-d');
$todayDateArray = explode('-', $todayDateStr);
// 设置一个 fileLogger 方便查看所有的日志输出,按照 年/月/年-月-日.log 输出
$fileLogger = new \Core\Log\File($todayDateArray[0] . '/' . $todayDateArray[1] . '/' . implode('-', $todayDateArray) . '.manage.log');
// 我们不打印 DEBUG 级别的日志,不然数据量太大了
$fileLogger->levelAllow = array(\Core\Log\Base::CRITICAL, \Core\Log\Base::ERROR, \Core\Log\Base::WARN, \Core\Log\Base::NOTICE, \Core\Log\Base::INFO);
$logger->addLogger($fileLogger);
unset($fileLogger);
/* * **************** 如果是调试模式,在这里设置调试 ************************ */
if ($f3->get('DEBUG')) {
    // 调试模式,关闭缓存
    $f3->set('CACHE', false);
    // 调试模式下,弄一个 fileLogger 方便查看所有的日志输出