diff --git a/niucloud/core/core/base/BaseAdminController.php b/niucloud/core/core/base/BaseAdminController.php
deleted file mode 100644
index e9ec2b7c..00000000
--- a/niucloud/core/core/base/BaseAdminController.php
+++ /dev/null
@@ -1,29 +0,0 @@
-username = $this->request->username();
- $this->uid = $this->request->uid();
- }
-}
diff --git a/niucloud/core/core/base/BaseApiController.php b/niucloud/core/core/base/BaseApiController.php
deleted file mode 100644
index 6fac93f0..00000000
--- a/niucloud/core/core/base/BaseApiController.php
+++ /dev/null
@@ -1,29 +0,0 @@
-member_id = $this->request->memberId();
- $this->channel = $this->request->getChannel();
- }
-}
\ No newline at end of file
diff --git a/niucloud/core/core/base/BaseController.php b/niucloud/core/core/base/BaseController.php
deleted file mode 100644
index 793b992b..00000000
--- a/niucloud/core/core/base/BaseController.php
+++ /dev/null
@@ -1,96 +0,0 @@
-app = $app;
- $this->request = $this->app->request;
- // 控制器初始化
- $this->initialize();
- }
-
- // 初始化
- protected function initialize()
- {
- }
-
- /**
- * 验证数据
- * @access protected
- * @param array $data 数据
- * @param string|array $validate 验证器名或者验证规则数组
- * @param array $message 提示信息
- * @param bool $batch 是否批量验证
- * @return array|string|true
- * @throws ValidateException
- */
- protected function validate(array $data, $validate, array $message = [], bool $batch = false)
- {
- if (is_array($validate)) {
- $v = new Validate();
- $v->rule($validate);
- } else {
- if (strpos($validate, '.')) {
- // 支持场景
- [$validate, $scene] = explode('.', $validate);
- }
- $class = str_contains($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
- $v = new $class();
- if (!empty($scene)) {
- $v->scene($scene);
- }
- }
-
- $v->message($message);
-
- // 是否批量验证
- if ($batch || $this->batchValidate) {
- $v->batch();
- }
-
- return $v->failException()->check($data);
- }
-
-
-}
diff --git a/niucloud/core/core/base/BaseCoreService.php b/niucloud/core/core/base/BaseCoreService.php
deleted file mode 100644
index 8f152c27..00000000
--- a/niucloud/core/core/base/BaseCoreService.php
+++ /dev/null
@@ -1,27 +0,0 @@
-runJob($method, $data);
- }
-
-
- /**
- * 执行任务
- * @param string $method
- * @param array $data
- * @param int $error_count
- */
- protected function runJob(string $method, array $data)
- {
- try {
- $method = method_exists($this, $method) ? $method : 'handle';
- if (!method_exists($this, $method)) {
- throw new CommonException('Job "'.static::class.'" not found!');
- }
- $this->{$method}(...$data);
- return true;
- } catch (\Throwable $e) {
- Log::write('队列错误:'.static::class.$method.'_'.'_'.$e->getMessage().'_'.$e->getFile().'_'.$e->getLine());
- throw new CommonException('Job "'.static::class.'" has error!');
- }
-
- }
-
-}
diff --git a/niucloud/core/core/base/BaseModel.php b/niucloud/core/core/base/BaseModel.php
deleted file mode 100644
index dbf71c86..00000000
--- a/niucloud/core/core/base/BaseModel.php
+++ /dev/null
@@ -1,48 +0,0 @@
-getTable();
- $sql = 'SHOW TABLE STATUS WHERE 1=1 ';
- $tablePrefix = config('database.connections.mysql.prefix');
- if (!empty($table_name)) {
- $sql .= "AND name='" .$table_name."'";
- }
- $tables = Db::query($sql);
- $table_info = $tables[0] ?? [];
- $table_name = preg_replace("/^{$tablePrefix}/", '', $table_info['Name'], 1);
- return Db::name($table_name)->getFields();
- }
-
- /**
- * 处理搜索条件特殊字符(%、_)
- * @param $value
- */
- public function handelSpecialCharacter($value)
- {
- $value = str_replace('%', '\%', str_replace('_', '\_', $value));
- return $value;
- }
-}
diff --git a/niucloud/core/core/base/BaseService.php b/niucloud/core/core/base/BaseService.php
deleted file mode 100644
index d3f1ecb7..00000000
--- a/niucloud/core/core/base/BaseService.php
+++ /dev/null
@@ -1,135 +0,0 @@
-request = request();
- }
-
- /**
- * 分页列表参数(页码和每页多少条)
- * @return mixed
- */
- public function getPageParam()
- {
-
- $page = request()->params([
- ['page', 1],
- ['limit', 15]
- ]);
- validate(Page::class)
- ->check($page);
- return $page;
- }
-
- /**
- * 分页列表
- * @param Model $model
- * @param array $where
- * @param string $field
- * @param string $order
- * @param array $append
- * @return array
- * @throws DbException
- */
- public function getPageList(Model $model, array $where, string $field = '*', string $order = '', array $append = [], $with = null, $each = null)
- {
- $page_params = $this->getPageParam();
- $page = $page_params['page'];
- $limit = $page_params['limit'];
-
- $list = $model->where($where)->when($append, function ($query) use ($append) {
- $query->append($append);
- })->when($with, function ($query) use ($with) {
- $query->with($with);
- })->field($field)->order($order)->paginate([
- 'list_rows' => $limit,
- 'page' => $page,
- ]);
- if (!empty($each)) {
- $list = $list->each($each);
- }
- return $list->toArray();
- }
-
- /**
- * 分页数据查询,传入model(查询后结果)
- * @param $model BaseModel
- * @return array
- * @throws DbException
- */
- public function pageQuery($model, $each = null)
- {
- $page_params = $this->getPageParam();
- $page = $page_params['page'];
- $limit = $page_params['limit'];
- $list = $model->paginate([
- 'list_rows' => $limit,
- 'page' => $page,
- ]);
- if (!empty($each)) {
- $list = $list->each($each);
- }
- return $list->toArray();
- }
-
- /**
- * 分页视图列表查询
- * @param Model $model
- * @param array $where
- * @param string $field
- * @param string $order
- * @param array $append
- * @return array
- * @throws DbException
- */
- public function getPageViewList(Model $model, array $where, string $field = '*', string $order = '', array $append = [], $with = null, $each = null)
- {
- $page_params = $this->getPageParam();
- $page = $page_params['page'];
- $limit = $page_params['limit'];
-
- $list = $model->where($where)->when($append, function ($query) use ($append) {
- $query->append($append);
- })->when($with, function ($query) use ($with) {
- $query->withJoin($with);
- })->field($field)->order($order)->paginate([
- 'list_rows' => $limit,
- 'page' => $page,
- ]);
- if (!empty($each)) {
- $list = $list->each($each);
- }
- return $list->toArray();
- }
-
-}
\ No newline at end of file
diff --git a/niucloud/core/core/base/BaseValidate.php b/niucloud/core/core/base/BaseValidate.php
deleted file mode 100644
index 34a2b0a5..00000000
--- a/niucloud/core/core/base/BaseValidate.php
+++ /dev/null
@@ -1,46 +0,0 @@
-parseMsg();
- }
-
- public function parseMsg(){
- if(!empty($this->message))
- {
- foreach ($this->message as $key => $value)
- {
- if(is_array($value))
- {
- $this->message[$key] = get_lang($value[0], $value[1]);
- }
- }
- }
-
- }
-
-}
diff --git a/niucloud/core/core/dict/AdvPosition.php b/niucloud/core/core/dict/AdvPosition.php
deleted file mode 100644
index 188726bb..00000000
--- a/niucloud/core/core/dict/AdvPosition.php
+++ /dev/null
@@ -1,38 +0,0 @@
-getLocalAddons();
- $adv_position_files = [];
- foreach ($addons as $v) {
- $adv_position_path = $this->getAddonDictPath($v) . "web" . DIRECTORY_SEPARATOR . "adv_position.php";
- if (is_file($adv_position_path)) {
- $adv_position_files[] = $adv_position_path;
- }
- }
- $adv_position_file_data = $this->loadFiles($adv_position_files);
- $adv_position = $data;
- foreach ($adv_position_file_data as $file_data) {
- $adv_position = empty($adv_position) ? $file_data : array_merge($adv_position, $file_data);
- }
- return $adv_position;
- }
-}
diff --git a/niucloud/core/core/dict/BaseDict.php b/niucloud/core/core/dict/BaseDict.php
deleted file mode 100644
index 75cdc603..00000000
--- a/niucloud/core/core/dict/BaseDict.php
+++ /dev/null
@@ -1,162 +0,0 @@
-column("key");
- Cache::tag(CoreAddonBaseService::$cache_tag_name)->set("local_install_addons", $addons);
-
- return $addons;
- }
-
- /**
- * 获取所有本地插件(包括未安装,用于系统指令执行)
- * @return array|false
- */
- public function getAllLocalAddons()
- {
- $addon_dir = root_path() . 'addon';
- $addons = array_diff(scandir($addon_dir), ['.', '..']);
- return $addons;
- }
-
- /**
- * 获取插件目录
- * @param string $addon
- * @return string
- */
- protected function getAddonPath(string $addon)
- {
- return root_path() . 'addon' . DIRECTORY_SEPARATOR . $addon . DIRECTORY_SEPARATOR;
-
- }
-
- /**
- * 获取系统整体app目录
- * @return string
- */
- protected function getAppPath()
- {
- return root_path() . "app" . DIRECTORY_SEPARATOR;
- }
-
- /**
- * 获取插件对应app目录
- * @param string $addon
- * @return string
- */
- protected function getAddonAppPath(string $addon)
- {
- return $this->getAddonPath($addon) . "app" . DIRECTORY_SEPARATOR;
- }
-
- /**
- *获取系统dict path
- */
- protected function getDictPath()
- {
- return root_path() . 'app' . DIRECTORY_SEPARATOR . 'dict' . DIRECTORY_SEPARATOR;
- }
-
- /**
- *获取插件对应的dict目录
- * @param string $addon
- * @return string
- */
- protected function getAddonDictPath(string $addon)
- {
- return $this->getAddonPath($addon) . 'app' . DIRECTORY_SEPARATOR . 'dict' . DIRECTORY_SEPARATOR;
- }
-
- /**
- *获取插件对应的config目录
- * @param string $addon
- * @return string
- */
- protected function getAddonConfigPath(string $addon)
- {
- return $this->getAddonPath($addon) . 'config' . DIRECTORY_SEPARATOR;
- }
-
- /**
- * 加载文件数据
- * @param $files
- * @return array
- */
- protected function loadFiles($files)
- {
- $default_sort = 100000;
- $files_data = [];
- if (!empty($files)) {
- foreach ($files as $file) {
- $config = include $file;
- if (!empty($config)) {
- if (isset($config['file_sort'])) {
- $sort = $config['file_sort'];
- unset($config['file_sort']);
- $sort = $sort * 10;
- while (array_key_exists($sort, $files_data)) {
- $sort++;
- }
- $files_data[$sort] = $config;
- } else {
- $files_data[$default_sort] = $config;
- $default_sort++;
- }
- }
- }
- }
- ksort($files_data);
- return $files_data;
- }
-
- /**
- * 加载
- * @return mixed
- */
- abstract public function load(array $data);
-}
diff --git a/niucloud/core/core/dict/Config.php b/niucloud/core/core/dict/Config.php
deleted file mode 100644
index d7f404fd..00000000
--- a/niucloud/core/core/dict/Config.php
+++ /dev/null
@@ -1,41 +0,0 @@
-getAllLocalAddons();
- $config_files = [];
-
- foreach ($addons as $v) {
- $config_path = $this->getAddonAppPath($v) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . $config . '.php';
- if (is_file($config_path)) {
- $config_files[] = $config_path;
- }
- }
- $files_data = $this->loadFiles($config_files);
-
- foreach ($files_data as $file_data) {
- if(!empty($file_data))
- {
- $system_config = empty($system_config) ? $file_data : array_merge2($system_config, $file_data);
- }
-
- }
- return $system_config;
- }
-}
diff --git a/niucloud/core/core/dict/Console.php b/niucloud/core/core/dict/Console.php
deleted file mode 100644
index 3fed813d..00000000
--- a/niucloud/core/core/dict/Console.php
+++ /dev/null
@@ -1,45 +0,0 @@
-getAllLocalAddons();
- $console_files = [];
-
- foreach ($addons as $v) {
- $console_path = $this->getAddonAppPath($v) . "/config/console.php";
- if (is_file($console_path)) {
- $console_files[] = $console_path;
- }
- }
- $files_data = $this->loadFiles($console_files);
-
-
- $console = $data;
- foreach ($files_data as $file_data) {
- if(!empty($file_data))
- {
- $console = empty($console) ? $file_data : array_merge2($console, $file_data);
- }
-
- }
- return $console;
- }
-}
diff --git a/niucloud/core/core/dict/DictLoader.php b/niucloud/core/core/dict/DictLoader.php
deleted file mode 100644
index 8e3e5232..00000000
--- a/niucloud/core/core/dict/DictLoader.php
+++ /dev/null
@@ -1,41 +0,0 @@
-getLocalAddons();
- $components_files = [];
-
- foreach ($addons as $v) {
- $components_path = $this->getAddonDictPath($v) . "diy_form" . DIRECTORY_SEPARATOR . "components.php";
- if (is_file($components_path)) {
- $components_files[] = $components_path;
- }
- }
- $components_files_data = $this->loadFiles($components_files);
- $components = $data;
- foreach ($components_files_data as $file_data) {
- $components = empty($components) ? $file_data : array_merge2($components, $file_data);
- }
- return $components;
- }
-}
diff --git a/niucloud/core/core/dict/DiyFormTemplate.php b/niucloud/core/core/dict/DiyFormTemplate.php
deleted file mode 100644
index 5ac2e130..00000000
--- a/niucloud/core/core/dict/DiyFormTemplate.php
+++ /dev/null
@@ -1,38 +0,0 @@
-getLocalAddons();
- $components_files = [];
-
- foreach ($addons as $v) {
- $components_path = $this->getAddonDictPath($v) . "diy_form" . DIRECTORY_SEPARATOR . "template.php";
- if (is_file($components_path)) {
- $components_files[] = $components_path;
- }
- }
- $components_files_data = $this->loadFiles($components_files);
- $components = $data;
- foreach ($components_files_data as $file_data) {
- $components = empty($components) ? $file_data : array_merge2($components, $file_data);
- }
- return $components;
- }
-}
diff --git a/niucloud/core/core/dict/DiyFormType.php b/niucloud/core/core/dict/DiyFormType.php
deleted file mode 100644
index 7b0caab5..00000000
--- a/niucloud/core/core/dict/DiyFormType.php
+++ /dev/null
@@ -1,38 +0,0 @@
-getLocalAddons();
- $components_files = [];
-
- foreach ($addons as $v) {
- $components_path = $this->getAddonDictPath($v) . "diy_form" . DIRECTORY_SEPARATOR . "type.php";
- if (is_file($components_path)) {
- $components_files[] = $components_path;
- }
- }
- $components_files_data = $this->loadFiles($components_files);
- $components = $data;
- foreach ($components_files_data as $file_data) {
- $components = empty($components) ? $file_data : array_merge2($components, $file_data);
- }
- return $components;
- }
-}
diff --git a/niucloud/core/core/dict/Event.php b/niucloud/core/core/dict/Event.php
deleted file mode 100644
index e9eb7d07..00000000
--- a/niucloud/core/core/dict/Event.php
+++ /dev/null
@@ -1,42 +0,0 @@
-getLocalAddons();
- $event_files = [];
-
- foreach ($addons as $v) {
- $event_path = $this->getAddonAppPath($v) . "event.php";
- if (is_file($event_path)) {
- $event_files[] = $event_path;
- }
- }
- $files_data = $this->loadFiles($event_files);
-
- $files_data[1] = $data;
-
- $events = [];
- foreach ($files_data as $file_data) {
- $events = empty($events) ? $file_data : array_merge2($events, $file_data);
- }
- return $events;
- }
-}
diff --git a/niucloud/core/core/dict/GrowthRule.php b/niucloud/core/core/dict/GrowthRule.php
deleted file mode 100644
index 44faa3b3..00000000
--- a/niucloud/core/core/dict/GrowthRule.php
+++ /dev/null
@@ -1,45 +0,0 @@
-getLocalAddons();
- $account_change_type_files = [];
- $system_change_type_file = $this->getDictPath() . "member" . DIRECTORY_SEPARATOR . "growth_rule.php";
-
-
- if (is_file($system_change_type_file)) {
- $account_change_type_files[] = $system_change_type_file;
- }
- foreach ($addons as $v) {
- $addon_change_type_file = $this->getAddonDictPath($v) . "member" . DIRECTORY_SEPARATOR . "growth_rule.php";
- if (is_file($addon_change_type_file)) {
- $account_change_type_files[] = $addon_change_type_file;
- }
- }
-
- $account_change_type_datas = $this->loadFiles($account_change_type_files);
-
- $account_change_type_array = [];
- foreach ($account_change_type_datas as $account_change_type_data) {
- $account_change_type_array = empty($account_change_type_array) ? $account_change_type_data : array_merge2($account_change_type_array, $account_change_type_data);
- }
- return $account_change_type_array;
- }
-}
diff --git a/niucloud/core/core/dict/Icon.php b/niucloud/core/core/dict/Icon.php
deleted file mode 100644
index 499d14f2..00000000
--- a/niucloud/core/core/dict/Icon.php
+++ /dev/null
@@ -1,50 +0,0 @@
-getRootPath()) . str_replace('/', DIRECTORY_SEPARATOR, '/admin/src/styles/icon');
- $file_arr = getFileMap($sys_path);
- $icon_arr = [];
- if (!empty($file_arr)) {
- foreach ($file_arr as $ck => $cv) {
- if (str_contains($cv, '.json')) {
- $json_string = file_get_contents($ck);
- $icon = json_decode($json_string, true, 512, JSON_THROW_ON_ERROR);
- $icon_arr[] = $icon;
- }
- }
- }
-
- if (count($icon_arr) > 1) {
- $last_icon = array_pop($icon_arr); // 最后一个
- $first_icon = array_shift($icon_arr); // 第一个
-
- array_unshift($icon_arr, $last_icon); // 将系统图标放到第一位置
- $icon_arr[] = $first_icon; // 交换位置
- }
-
- return $icon_arr;
- }
-}
diff --git a/niucloud/core/core/dict/Lang.php b/niucloud/core/core/dict/Lang.php
deleted file mode 100644
index 40a4a0fc..00000000
--- a/niucloud/core/core/dict/Lang.php
+++ /dev/null
@@ -1,56 +0,0 @@
-getLocalAddons();
- $system_lang_path = $this->getAppPath() . "lang" . DIRECTORY_SEPARATOR . $data['lang_type'] . DIRECTORY_SEPARATOR;
- $lang_files = [
- $system_lang_path . "api.php",
- $system_lang_path . "dict.php",
- $system_lang_path . "validate.php",
- ];
-
-
- foreach ($addons as $v) {
- $lang_path = $this->getAddonAppPath($v) . "lang" . DIRECTORY_SEPARATOR . $data['lang_type'] . DIRECTORY_SEPARATOR;
-
- $api_path = $lang_path . "api.php";
- $dict_path = $lang_path . "dict.php";
- $validate_path = $lang_path . "validate.php";
- if (is_file($api_path)) {
- $lang_files[] = $api_path;
-
- }
- if (is_file($dict_path)) {
- $lang_files[] = $dict_path;
- }
- if (is_file($validate_path)) {
- $lang_files[] = $validate_path;
- }
- }
- $files_data = $this->loadFiles($lang_files);
- $lang = [];
- foreach ($files_data as $file_data) {
- $lang = empty($lang) ? $file_data : array_merge2($lang, $file_data);
- }
- return $lang;
- }
-}
diff --git a/niucloud/core/core/dict/MemberAccountChangeType.php b/niucloud/core/core/dict/MemberAccountChangeType.php
deleted file mode 100644
index c7cf0ce8..00000000
--- a/niucloud/core/core/dict/MemberAccountChangeType.php
+++ /dev/null
@@ -1,46 +0,0 @@
-getLocalAddons();
- $account_change_type_files = [];
- $system_change_type_file = $this->getDictPath() . "member" . DIRECTORY_SEPARATOR . "account_change_type.php";
-
-
- if (is_file($system_change_type_file)) {
- $account_change_type_files[] = $system_change_type_file;
- }
- foreach ($addons as $v) {
- $addon_change_type_file = $this->getAddonDictPath($v) . "member" . DIRECTORY_SEPARATOR . "account_change_type.php";
- if (is_file($addon_change_type_file)) {
- $account_change_type_files[] = $addon_change_type_file;
- }
- }
-
- $account_change_type_datas = $this->loadFiles($account_change_type_files);
-
- $account_change_type_array = [];
- foreach ($account_change_type_datas as $account_change_type_data) {
- $account_change_type_array = empty($account_change_type_array) ? $account_change_type_data : array_merge2($account_change_type_array, $account_change_type_data);
- }
- return $account_change_type_array;
- }
-}
diff --git a/niucloud/core/core/dict/MemberBenefits.php b/niucloud/core/core/dict/MemberBenefits.php
deleted file mode 100644
index c22581fc..00000000
--- a/niucloud/core/core/dict/MemberBenefits.php
+++ /dev/null
@@ -1,45 +0,0 @@
-getLocalAddons();
- $account_change_type_files = [];
- $system_change_type_file = $this->getDictPath() . "member" . DIRECTORY_SEPARATOR . "benefits.php";
-
-
- if (is_file($system_change_type_file)) {
- $account_change_type_files[] = $system_change_type_file;
- }
- foreach ($addons as $v) {
- $addon_change_type_file = $this->getAddonDictPath($v) . "member" . DIRECTORY_SEPARATOR . "benefits.php";
- if (is_file($addon_change_type_file)) {
- $account_change_type_files[] = $addon_change_type_file;
- }
- }
-
- $account_change_type_datas = $this->loadFiles($account_change_type_files);
-
- $account_change_type_array = [];
- foreach ($account_change_type_datas as $account_change_type_data) {
- $account_change_type_array = empty($account_change_type_array) ? $account_change_type_data : array_merge2($account_change_type_array, $account_change_type_data);
- }
- return $account_change_type_array;
- }
-}
diff --git a/niucloud/core/core/dict/MemberGift.php b/niucloud/core/core/dict/MemberGift.php
deleted file mode 100644
index 1c8284fe..00000000
--- a/niucloud/core/core/dict/MemberGift.php
+++ /dev/null
@@ -1,45 +0,0 @@
-getLocalAddons();
- $account_change_type_files = [];
- $system_change_type_file = $this->getDictPath() . "member" . DIRECTORY_SEPARATOR . "gift.php";
-
-
- if (is_file($system_change_type_file)) {
- $account_change_type_files[] = $system_change_type_file;
- }
- foreach ($addons as $v) {
- $addon_change_type_file = $this->getAddonDictPath($v) . "member" . DIRECTORY_SEPARATOR . "gift.php";
- if (is_file($addon_change_type_file)) {
- $account_change_type_files[] = $addon_change_type_file;
- }
- }
-
- $account_change_type_datas = $this->loadFiles($account_change_type_files);
-
- $account_change_type_array = [];
- foreach ($account_change_type_datas as $account_change_type_data) {
- $account_change_type_array = empty($account_change_type_array) ? $account_change_type_data : array_merge2($account_change_type_array, $account_change_type_data);
- }
- return $account_change_type_array;
- }
-}
diff --git a/niucloud/core/core/dict/Menu.php b/niucloud/core/core/dict/Menu.php
deleted file mode 100644
index 519ccf2b..00000000
--- a/niucloud/core/core/dict/Menu.php
+++ /dev/null
@@ -1,29 +0,0 @@
-getAddonDictPath($data['addon']) . "menu" . DIRECTORY_SEPARATOR . $data['app_type'] . ".php";
- if (is_file($menu_path)) {
- return include $menu_path;
- }
- return [];
- }
-}
diff --git a/niucloud/core/core/dict/Notice.php b/niucloud/core/core/dict/Notice.php
deleted file mode 100644
index 64f5a14e..00000000
--- a/niucloud/core/core/dict/Notice.php
+++ /dev/null
@@ -1,43 +0,0 @@
-getDictPath() . "notice" . DIRECTORY_SEPARATOR . $data[ 'type' ] . ".php";
- if (is_file($system_path)) {
- $template_files[] = $system_path;
- }
- $addons = $this->getLocalAddons();
- foreach ($addons as $v) {
- $template_path = $this->getAddonDictPath($v) . "notice" . DIRECTORY_SEPARATOR . $data[ 'type' ] . ".php";
- if (is_file($template_path)) {
- $template_files[] = $template_path;
- }
- }
- $template_files_data = $this->loadFiles($template_files);
-
- $template_data_array = [];
- foreach ($template_files_data as $file_data) {
- $template_data_array = empty($template_data_array) ? $file_data : array_merge($template_data_array, $file_data);
- }
- return $template_data_array;
- }
-}
diff --git a/niucloud/core/core/dict/PackageGift.php b/niucloud/core/core/dict/PackageGift.php
deleted file mode 100644
index f790da46..00000000
--- a/niucloud/core/core/dict/PackageGift.php
+++ /dev/null
@@ -1 +0,0 @@
-// | 官方网址:https://www.niucloud.com
diff --git a/niucloud/core/core/dict/PointRule.php b/niucloud/core/core/dict/PointRule.php
deleted file mode 100644
index cdfad3ef..00000000
--- a/niucloud/core/core/dict/PointRule.php
+++ /dev/null
@@ -1,45 +0,0 @@
-getLocalAddons();
- $account_change_type_files = [];
- $system_change_type_file = $this->getDictPath() . "member" . DIRECTORY_SEPARATOR . "point_rule.php";
-
-
- if (is_file($system_change_type_file)) {
- $account_change_type_files[] = $system_change_type_file;
- }
- foreach ($addons as $v) {
- $addon_change_type_file = $this->getAddonDictPath($v) . "member" . DIRECTORY_SEPARATOR . "point_rule.php";
- if (is_file($addon_change_type_file)) {
- $account_change_type_files[] = $addon_change_type_file;
- }
- }
-
- $account_change_type_datas = $this->loadFiles($account_change_type_files);
-
- $account_change_type_array = [];
- foreach ($account_change_type_datas as $account_change_type_data) {
- $account_change_type_array = empty($account_change_type_array) ? $account_change_type_data : array_merge2($account_change_type_array, $account_change_type_data);
- }
- return $account_change_type_array;
- }
-}
diff --git a/niucloud/core/core/dict/Poster.php b/niucloud/core/core/dict/Poster.php
deleted file mode 100644
index 1e6177af..00000000
--- a/niucloud/core/core/dict/Poster.php
+++ /dev/null
@@ -1,95 +0,0 @@
-getDictPath() . 'poster' . DIRECTORY_SEPARATOR . 'template.php';
- if (is_file($system_path)) {
- $schedule_files[] = $system_path;
- }
- $addons = $this->getLocalAddons();
- foreach ($addons as $v) {
- $addon_path = $this->getAddonDictPath($v) . 'poster' . DIRECTORY_SEPARATOR . 'template.php';
- if (is_file($addon_path)) {
- $schedule_files[] = $addon_path;
- }
- }
- } else {
- $schedule_files = [];
- if ($addon == 'system') {
- $system_path = $this->getDictPath() . 'poster' . DIRECTORY_SEPARATOR . 'template.php';
- if (is_file($system_path)) {
- $schedule_files[] = $system_path;
- }
- } else {
- $addon_path = $this->getAddonDictPath($addon) . 'poster' . DIRECTORY_SEPARATOR . 'template.php';
- if (is_file($addon_path)) {
- $schedule_files[] = $addon_path;
- }
- }
-
- }
-
- $schedule_files_data = $this->loadFiles($schedule_files);
- $schedule_data_array = [];
- foreach ($schedule_files_data as $file_data) {
- $schedule_data_array = empty($schedule_data_array) ? $file_data : array_merge($schedule_data_array, $file_data);
- }
-
- if (!empty($type)) {
- foreach ($schedule_data_array as $k => $v) {
- if ($v[ 'type' ] != $type) {
- unset($schedule_data_array[ $k ]);
- }
- }
- $schedule_data_array = array_values($schedule_data_array);
- }
- return $schedule_data_array;
-
- }
-
- /**
- * 获取海报组件
- * @param array $data
- * @return array|mixed
- */
- public function loadComponents(array $data = [])
- {
- $addons = $this->getLocalAddons();
- $components_files = [];
- foreach ($addons as $v) {
- $components_path = $this->getAddonDictPath($v) . "poster" . DIRECTORY_SEPARATOR . "components.php";
- if (is_file($components_path)) {
- $components_files[] = $components_path;
- }
- }
- $components_files_data = $this->loadFiles($components_files);
- $components = $data;
- foreach ($components_files_data as $file_data) {
- $components = empty($components) ? $file_data : array_merge2($components, $file_data);
- }
- return $components;
-
- }
-}
diff --git a/niucloud/core/core/dict/Printer.php b/niucloud/core/core/dict/Printer.php
deleted file mode 100644
index 6e209edc..00000000
--- a/niucloud/core/core/dict/Printer.php
+++ /dev/null
@@ -1,40 +0,0 @@
-getLocalAddons();
- $types_files = [];
-
- foreach ($addons as $v) {
- $types_path = $this->getAddonDictPath($v) . "printer" . DIRECTORY_SEPARATOR . "type.php";
- if (is_file($types_path)) {
- $types_files[] = $types_path;
- }
- }
- $types_files_data = $this->loadFiles($types_files);
- $types = $data;
- foreach ($types_files_data as $file_data) {
- $types = empty($types) ? $file_data : array_merge2($types, $file_data);
- }
- return $types;
- }
-}
diff --git a/niucloud/core/core/dict/RechargeGift.php b/niucloud/core/core/dict/RechargeGift.php
deleted file mode 100644
index f3f1a78b..00000000
--- a/niucloud/core/core/dict/RechargeGift.php
+++ /dev/null
@@ -1,43 +0,0 @@
-getLocalAddons();
- foreach ($addons as $v) {
- $addon_change_type_file = $this->getAddonDictPath($v) . "recharge" . DIRECTORY_SEPARATOR . "package_gift.php";
- if (is_file($addon_change_type_file)) {
- $account_change_type_files[] = $addon_change_type_file;
- }
- }
- $account_change_type_datas = $this->loadFiles($account_change_type_files);
- $account_change_type_array = [];
- foreach ($account_change_type_datas as $account_change_type_data) {
- $account_change_type_array = empty($account_change_type_array) ? $account_change_type_data : array_merge2($account_change_type_array, $account_change_type_data);
- }
- foreach ($account_change_type_array as $key => &$value) {
- $value[ 'key' ] = $key;
- }
- usort($account_change_type_array, function($list_one, $list_two) {
- return $list_one[ 'sort' ] <=> $list_two[ 'sort' ];
- });
- return $account_change_type_array;
-
- }
-}
diff --git a/niucloud/core/core/dict/Route.php b/niucloud/core/core/dict/Route.php
deleted file mode 100644
index b74d8941..00000000
--- a/niucloud/core/core/dict/Route.php
+++ /dev/null
@@ -1,33 +0,0 @@
-getLocalAddons();
-
- foreach ($addons as $k => $v) {
- $route_path = $this->getAddonAppPath($v) . DIRECTORY_SEPARATOR . $data['app_type'] . DIRECTORY_SEPARATOR . "route" . DIRECTORY_SEPARATOR . "route.php";
- if (is_file($route_path)) {
- include $route_path;
- }
- }
- return true;
- }
-}
diff --git a/niucloud/core/core/dict/Schedule.php b/niucloud/core/core/dict/Schedule.php
deleted file mode 100644
index eb824c58..00000000
--- a/niucloud/core/core/dict/Schedule.php
+++ /dev/null
@@ -1,60 +0,0 @@
-getDictPath() . 'schedule' . DIRECTORY_SEPARATOR . 'schedule.php';
- if (is_file($system_path)) {
- $schedule_files[] = $system_path;
- }
- $addons = $this->getLocalAddons();
- foreach ($addons as $v) {
- $addon_path = $this->getAddonDictPath($v) . 'schedule' . DIRECTORY_SEPARATOR . 'schedule.php';
- if (is_file($addon_path)) {
- $schedule_files[] = $addon_path;
- }
- }
- } else {
- $schedule_files = [];
- if ($addon == 'system') {
- $system_path = $this->getDictPath() . 'schedule' . DIRECTORY_SEPARATOR . 'schedule.php';
- if (is_file($system_path)) {
- $schedule_files[] = $system_path;
- }
- } else {
- $addon_path = $this->getAddonDictPath($addon) . 'schedule' . DIRECTORY_SEPARATOR . 'schedule.php';
- if (is_file($addon_path)) {
- $schedule_files[] = $addon_path;
- }
- }
-
- }
- $schedule_files_data = $this->loadFiles($schedule_files);
- $schedule_data_array = [];
- foreach ($schedule_files_data as $file_data) {
- $schedule_data_array = empty($schedule_data_array) ? $file_data : array_merge($schedule_data_array, $file_data);
- }
- return $schedule_data_array;
-
- }
-}
diff --git a/niucloud/core/core/dict/UniappComponent.php b/niucloud/core/core/dict/UniappComponent.php
deleted file mode 100644
index 669b6c91..00000000
--- a/niucloud/core/core/dict/UniappComponent.php
+++ /dev/null
@@ -1,38 +0,0 @@
-getLocalAddons();
- $components_files = [];
- foreach ($addons as $v) {
- $components_path = $this->getAddonDictPath($v) . "diy" . DIRECTORY_SEPARATOR . "components.php";
- if (is_file($components_path)) {
- $components_files[] = $components_path;
- }
- }
- $components_files_data = $this->loadFiles($components_files);
- $components = $data;
- foreach ($components_files_data as $file_data) {
- $components = empty($components) ? $file_data : array_merge2($components, $file_data);
- }
- return $components;
- }
-}
diff --git a/niucloud/core/core/dict/UniappLink.php b/niucloud/core/core/dict/UniappLink.php
deleted file mode 100644
index e2aca6a7..00000000
--- a/niucloud/core/core/dict/UniappLink.php
+++ /dev/null
@@ -1,75 +0,0 @@
-getLocalAddons();
- }
-
- $link_files = [];
-
- foreach ($addons as $v) {
- $link_path = $this->getAddonDictPath($v) . "diy" . DIRECTORY_SEPARATOR . "links.php";
- if (is_file($link_path)) {
- $link_files[ $v ] = $link_path;
- }
- }
-
- $addon_service = new AddonService();
- $addon_info_list = $addon_service->getAddonListByKeys(array_keys($link_files));
-
- if (!empty($params[ 'params' ][ 'query' ]) && $params[ 'params' ][ 'query' ] == 'addon') {
- $list_key = array_column($addon_info_list, 'key');
- $addon_info_list = array_combine($list_key, $addon_info_list);
- return $addon_info_list;
- } else {
-
- $links = $params[ 'data' ];
-
- foreach ($link_files as $k => $v) {
- $addon_link = include $v;
- if (!empty($addon_link)) {
- $addon_info = [];
- foreach ($addon_info_list as $ck => $cv) {
- if ($cv[ 'key' ] == $k) {
- $addon_info = $cv;
- break;
- }
- }
-
- foreach ($addon_link as $ck => $cv) {
- $addon_link[ $ck ][ 'addon_info' ] = $addon_info;
- }
- $links = array_merge($links, $addon_link);
- }
- }
-
- return $links;
- }
- }
-}
diff --git a/niucloud/core/core/dict/UniappPages.php b/niucloud/core/core/dict/UniappPages.php
deleted file mode 100644
index bb154cb3..00000000
--- a/niucloud/core/core/dict/UniappPages.php
+++ /dev/null
@@ -1,52 +0,0 @@
-getLocalAddons();
- }
-
- $page_files = [];
- foreach ($addons as $v) {
- $page_path = $this->getAddonDictPath($v) . "diy" . DIRECTORY_SEPARATOR . "pages.php";
- if (is_file($page_path)) {
- $page_files[] = $page_path;
- }
- }
- $page_files_data = $this->loadFiles($page_files);
- if (!empty($data[ 'addon' ])) {
- $pages = [];
- } else {
- $pages = $data;
- }
- foreach ($page_files_data as $file_data) {
- if (empty($pages)) {
- $pages = $file_data;
- } else {
- $pages = array_merge2($pages, $file_data);
- }
- }
- return $pages;
- }
-}
diff --git a/niucloud/core/core/dict/UniappTemplate.php b/niucloud/core/core/dict/UniappTemplate.php
deleted file mode 100644
index 6dab6e05..00000000
--- a/niucloud/core/core/dict/UniappTemplate.php
+++ /dev/null
@@ -1,95 +0,0 @@
-getLocalAddons();
- }
-
- $app_keys = []; // 应用插件key集合
- $apps = []; // 应用插件集合
- $page_files = []; // 模板页面文件集合
-
- // 筛选插件
- if (!empty($params[ 'params' ]) && !empty($params[ 'params' ][ 'addon' ])) {
- $is_pass = true;
- foreach ($addons as $k => $v) {
- if ($params[ 'params' ][ 'addon' ] == $v) {
- $addons = [ $v ];
- $is_pass = false;
- break;
- }
- }
-
- // 如果没有匹配到,则返回系统的
- if ($is_pass) {
- return $params[ 'data' ];
- }
- }
-
- foreach ($addons as $v) {
- $page_path = $this->getAddonDictPath($v) . "diy" . DIRECTORY_SEPARATOR . "template.php";
- if (is_file($page_path)) {
- if (!empty($params[ 'params' ][ 'query' ]) && $params[ 'params' ][ 'query' ] == 'addon') {
- $file = include $page_path;
- if (!empty($file)) {
- $app_keys[] = $v;
- $apps[ $v ] = $file;
- }
- } else {
- $page_files[] = $page_path;
- }
- }
- }
-
- // 查询存在模板页面的应用插件列表
- if (!empty($params[ 'params' ][ 'query' ]) && $params[ 'params' ][ 'query' ] == 'addon') {
- $addon_service = new AddonService();
- $list = $addon_service->getAddonListByKeys($app_keys);
- $list_key = array_column($list, 'key');
- $list = array_combine($list_key, $list);
- foreach ($list as $k => $v) {
- $list[ $k ][ 'list' ] = $apps[ $k ];
- }
- return $list;
- } else {
- // 查询应用插件下的模板页面数据
- $page_files_data = $this->loadFiles($page_files);
- if (!empty($params[ 'params' ]) && !empty($params[ 'params' ][ 'addon' ])) {
- $pages = [];
- } else {
- $pages = $params[ 'data' ];
- }
- foreach ($page_files_data as $file_data) {
- if (empty($pages)) {
- $pages = $file_data;
- } else {
- $pages = array_merge($pages, $file_data);
- }
- }
- return $pages;
- }
- }
-}
diff --git a/niucloud/core/core/dict/WebLink.php b/niucloud/core/core/dict/WebLink.php
deleted file mode 100644
index da09ff00..00000000
--- a/niucloud/core/core/dict/WebLink.php
+++ /dev/null
@@ -1,75 +0,0 @@
-getLocalAddons();
- }
-
- $link_files = [];
-
- foreach ($addons as $v) {
- $link_path = $this->getAddonDictPath($v) . "web" . DIRECTORY_SEPARATOR . "web_links.php";
- if (is_file($link_path)) {
- $link_files[ $v ] = $link_path;
- }
- }
-
- $addon_service = new AddonService();
- $addon_info_list = $addon_service->getAddonListByKeys(array_keys($link_files));
-
- if (!empty($params[ 'params' ][ 'query' ]) && $params[ 'params' ][ 'query' ] == 'addon') {
- $list_key = array_column($addon_info_list, 'key');
- $addon_info_list = array_combine($list_key, $addon_info_list);
- return $addon_info_list;
- } else {
-
- $links = $params[ 'data' ];
-
- foreach ($link_files as $k => $v) {
- $addon_link = include $v;
- if (!empty($addon_link)) {
- $addon_info = [];
- foreach ($addon_info_list as $ck => $cv) {
- if ($cv[ 'key' ] == $k) {
- $addon_info = $cv;
- break;
- }
- }
-
- foreach ($addon_link as $ck => $cv) {
- $addon_link[ $ck ][ 'addon_info' ] = $addon_info;
- }
- $links = array_merge($links, $addon_link);
- }
- }
-
- return $links;
- }
- }
-}
diff --git a/niucloud/core/core/exception/AddonException.php b/niucloud/core/core/exception/AddonException.php
deleted file mode 100644
index 34a08521..00000000
--- a/niucloud/core/core/exception/AddonException.php
+++ /dev/null
@@ -1,17 +0,0 @@
-job($class)->secs($secs);
- if (is_array($action)) {
- $queue->data(...$action);
- } else if (is_string($action)) {
- $queue->method($action)->data(...$data);
- }
- if ($queue_name) {
- $queue->setQueueName($queue_name);
- }
- return $queue->push();
- } else {
- if($secs == 0){
- $class_name = '\\' . $class;
- $res = new $class_name();
- if (is_array($action)) {
- return $res->doJob(...$action);
- } else {
- return $res->$action(...$data);
- }
- }
- }
- }
-}
diff --git a/niucloud/core/core/loader/Loader.php b/niucloud/core/core/loader/Loader.php
deleted file mode 100644
index e3403f6b..00000000
--- a/niucloud/core/core/loader/Loader.php
+++ /dev/null
@@ -1,118 +0,0 @@
-name = $name;
- }
- $this->config = $config;
- }
-
- /**
- * 获取默认驱动
- * @return mixed
- */
- abstract protected function getDefault();
-
- /**
- * 创建实例对象
- * @param string $type
- * @return object|DbManager
- * @throws Exception
- */
- public function create(string $type)
- {
- $class = $this->getClass($type);
- return self::createFacade($class, [
- $this->name,
- $this->config,
- $this->config_file
- ], true);
- }
-
- /**
- * 获取类
- * @param string $type
- * @return mixed|string
- * @throws Exception
- */
- public function getClass(string $type)
- {
- $class = config($this->config_name . '.drivers.' . $type . '.driver');
- if (!empty($class) && class_exists($class)) {
- return $class;
- } else {
- if ($this->namespace || str_contains($type, '\\')) {
- $class = str_contains($type, '\\') ? $type : $this->namespace . $type;
- if (class_exists($class)) {
- return $class;
- } else {
- $class = str_contains($type, '\\') ? $type : $this->namespace . Str::studly($type);
- if (class_exists($class)) {
- return $class;
- }
- }
- }
- }
- throw new Exception("Driver [$type] not supported.");
- }
-
- /**
- * 通过装载器获取实例
- * @return object|DbManager
- * @throws Exception
- */
- public function getLoader()
- {
-
- if (empty($this->class)) {
- $this->name = $this->name ?: $this->getDefault();
- if (!$this->name) {
- throw new Exception(sprintf(
- 'could not find driver [%s].', static::class
- ));
- }
- $this->class = $this->create($this->name);
- }
- return $this->class;
- }
-
- /**
- * 动态调用
- * @param $method
- * @param $arguments
- * @return mixed
- * @throws Exception
- */
- public function __call($method, $arguments)
- {
- return $this->getLoader()->{$method}(...$arguments);
- }
-
-}
\ No newline at end of file
diff --git a/niucloud/core/core/loader/Storage.php b/niucloud/core/core/loader/Storage.php
deleted file mode 100644
index 50aea02b..00000000
--- a/niucloud/core/core/loader/Storage.php
+++ /dev/null
@@ -1,69 +0,0 @@
-name = $name;
- $this->config_file = $config_file;
- $this->initialize($config);
- }
-
- /**
- * 设置错误信息
- * @param string|null $error
- * @return bool
- */
- protected function setError(?string $error = null)
- {
- $this->error = $error;
- return false;
- }
-
- /**
- * 获取错误信息
- * @return string
- */
- public function getError()
- {
- $error = $this->error;
- $this->error = null;
- return $error;
- }
-
- /**
- * 初始化
- * @param array $config
- * @return mixed
- */
- abstract protected function initialize(array $config);
-
-}
diff --git a/niucloud/core/core/oauth/BaseOauth.php b/niucloud/core/core/oauth/BaseOauth.php
deleted file mode 100644
index 8c536023..00000000
--- a/niucloud/core/core/oauth/BaseOauth.php
+++ /dev/null
@@ -1,42 +0,0 @@
-oauth;
- }
-
- public function oauth(string $code = null, array $options = [])
- {
-// $this->instance()->
- // TODO: Implement oauth() method.
- }
-}
diff --git a/niucloud/core/core/pay/Alipay.php b/niucloud/core/core/pay/Alipay.php
deleted file mode 100644
index 0368a330..00000000
--- a/niucloud/core/core/pay/Alipay.php
+++ /dev/null
@@ -1,389 +0,0 @@
-config = $this->payConfig($config, 'alipay');
- Pay::config($this->config);
- }
-
- public function mp(array $params)
- {
-
- }
-
- /**
- * 网页支付
- * @param array $params
- * @return array
- */
- public function web(array $params)
- {
- return $this->returnFormat(Pay::alipay()->web([
- 'out_trade_no' => $params['out_trade_no'],
- 'total_amount' => $params['money'],
- 'subject' => $params['body'],
- '_method' => 'get',
- ]));
- }
-
- /**
- * 手机网页支付
- * @param array $params
- * @return array
- */
- public function wap(array $params)
- {
- $response = Pay::alipay()->h5([
- 'out_trade_no' => $params['out_trade_no'],
- 'total_amount' => $params['money'],
- 'subject' => $params['body'],
- 'quit_url' => $params['quit_url'] ?? '',//用户付款中途退出返回商户网站的地址, 一般是商品详情页或购物车页
- '_method' => 'get',
- ]);
-
- $redirects = $response->getHeader('Location');
- $effective_url = end($redirects);
- return ['url' => $effective_url];
- }
-
- /**
- * app支付
- * @param array $params
- * @return array
- */
- public function app(array $params)
-
- {
- return $this->returnFormat(Pay::alipay()->app([
- 'out_trade_no' => $params['out_trade_no'],
- 'total_amount' => $params['money'],
- 'subject' => $params['body'],//用户付款中途退出返回商户网站的地址, 一般是商品详情页或购物车页
- ]));
- }
-
- /**
- * 小程序支付
- * @param array $params
- * @return Collection
- */
- public function mini(array $params)
- {
- return Pay::alipay()->mini([
- 'out_trade_no' => $params['out_trade_no'],
- 'total_amount' => $params['money'],
- 'subject' => $params['body'],
- 'buyer_id' => $params['buyer_id'],//买家支付宝用户ID 注:交易的买家与卖家不能相同。
- ]);
- }
-
- /**
- * 付款码支付
- * @param array $params
- * @return Collection
- */
- public function pos(array $params)
- {
- return Pay::alipay()->pos([
- 'out_trade_no' => $params['out_trade_no'],
- 'auth_code' => $params['auth_code'],//付授权码。 当面付场景传买家的付款码(25~30开头的长度为16~24位的数字,实际字符串长度以开发者获取的付款码长度为准)或者刷脸标识串(fp开头的35位字符串)。
- 'total_amount' => $params['money'],
- 'subject' => $params['body'],
- ]);
- }
-
- /**
- * 扫码支付
- * @param array $params
- * @return Collection
- */
- public function scan(array $params)
- {
- return Pay::alipay()->scan([
- 'out_trade_no' => $params['out_trade_no'],
- 'total_amount' => $params['money'],
- 'subject' => $params['body'],
- ]);
- }
-
- /**
- * 转账
- * @param array $params
- * @return array
- */
- public function transfer(array $params)
- {
-
- $result = $this->returnFormat(Pay::alipay()->transfer([
- 'out_biz_no' => $params['transfer_no'],
- 'trans_amount' => $params['money'],
- 'product_code' => $params['product_code'] ?: 'TRANS_ACCOUNT_NO_PWD',//业务产品码,单笔无密转账到支付宝账户固定为 : TRANS_ACCOUNT_NO_PWD; 收发现金红包固定为 : STD_RED_PACKET;
- 'biz_scene' => $params['scene'] ?: 'DIRECT_TRANSFER',//描述特定的业务场景,可传的参数如下:DIRECT_TRANSFER:单笔无密转账到支付宝,B2C现金红包;PERSONAL_COLLECTION:C2C现金红包-领红包
- 'payee_info' => [//收款方信息
- 'identity' => $params['to_no'],//参与方的唯一标识
- 'identity_type' => $params['to_type'] ?: 'ALIPAY_LOGON_ID',//参与方的标识类型,目前支持如下类型:1、ALIPAY_USER_ID 支付宝的会员ID2、ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式3、ALIPAY_OPEN_ID:支付宝openid
- 'name' => $params['to_name'],//参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。当identity_type=ALIPAY_LOGON_ID时,本字段必填。
- ],
- ]));
- if (!empty($result['msg']) && $result['msg'] != 'Success') {
- throw new PayException($result['sub_msg']);
- } else {
- $status = $result['status'];
- $status_array = [
- 'SUCCESS' => TransferDict::SUCCESS,
- 'WAIT_PAY' => TransferDict::WAIT,
- 'CLOSED' => TransferDict::FAIL,
- 'FAIL' => TransferDict::FAIL
- ];
- $res = [
- 'status' => $status_array[$status],
- ];
- if ($status == 'FAIL') {
- $res['fail_reason'] = $result['fail_reason'];
- }
- }
- return $res;
- }
-
- /**
- * 支付关闭
- * @param string $out_trade_no
- * @return bool
- * @throws ContainerException
- * @throws InvalidParamsException
- * @throws ServiceNotFoundException
- */
- public function close(string $out_trade_no)
- {
- $result = $this->returnFormat(Pay::alipay()->close([
- 'out_trade_no' => $out_trade_no,
- ]));
- //todo 支付宝关闭异步回调
- if (isset($result['sub_code']) && in_array($result['sub_code'], ['ACQ.REASON_ILLEGAL_STATUS', 'ACQ.REASON_TRADE_STATUS_INVALID', 'ACQ.TRADE_NOT_EXIST', 'ACQ.TRADE_STATUS_ERROR'])) {
- return true;
- }
- if (!empty($result['msg']) && $result['msg'] == 'Success') {
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * 退款
- * @param array $params
- * @return array|false
- * @throws ContainerException
- * @throws InvalidParamsException
- * @throws ServiceNotFoundException
- */
- public function refund(array $params)
- {
- $out_trade_no = $params['out_trade_no'];
- $money = $params['money'];
-// $total = $params['total'];
- $refund_no = $params['refund_no'];
- $result = $this->returnFormat(Pay::alipay()->refund([
- 'out_trade_no' => $out_trade_no,
- 'refund_amount' => $money,
- 'out_request_no' => $refund_no
- ]));
- if (!empty($result['msg']) && $result['msg'] == 'Success') {
- $fund_change = $result['fund_change'];//退款是否成功可以根据同步响应的 fund_change 参数来判断,fund_change 表示本次退款是否发生了资金变化,返回 Y 表示退款成功,返回 N 则表示本次退款未发生资金变动 。
- if ($fund_change == 'Y') {
- $status = RefundDict::SUCCESS;
- } else {
- $status = RefundDict::DEALING;
- }
- return [
- 'status' => $status,
- 'refund_no' => $refund_no,
- 'out_trade_no' => $out_trade_no
- ];
- } else {
- //todo 这儿可以抛出错误
- return false;
- }
- }
-
-
- /**
- * 支部异步回调
- * @param string $action
- * @param callable $callback
- * @return ResponseInterface|string
- */
- public function notify(string $action, callable $callback)
- {
- try {
- $result = Pay::alipay()->callback();
- //通过返回的值
- if (!empty($result)) {//成功
- if ($action == 'pay') {
- //todo 这儿需要具体设计
- $temp_data = array(
- 'mchid' => $result['seller_id'],
- 'trade_no' => $result['trade_no'],
- 'result' => $result,
- 'status' => OnlinePayDict::getAliPayStatus($result['trade_status'])
- );
- $callback_result = $callback($result['out_trade_no'], $temp_data);
- if (is_bool($callback_result) && $callback_result) {
- return Pay::alipay()->success();
- }
- }
-
- }
- return $this->fail();
- } catch ( Throwable $e ) {
- return $this->fail();
- }
-
-
- }
-
- /**
- * 查询普通支付订单
- * @param array $params
- * @return array
- * @throws ContainerException
- * @throws InvalidParamsException
- * @throws ServiceNotFoundException
- */
- public function getOrder(array $params = [])
- {
- $out_trade_no = $params['out_trade_no'];
- $order = [
- 'out_trade_no' => $out_trade_no,
- ];
- $result = $this->returnFormat(Pay::alipay()->query($order));
- if (!empty($result['msg']) && $result['msg'] == 'Success') {
- return [
- 'status' => OnlinePayDict::getAliPayStatus($result['trade_status'])
- ];
- } else {
- if (!empty($result['sub_code']) && $result['sub_code'] == 'ACQ.ACQ.SYSTEM_ERROR') {
- throw new PayException($result['msg']);
- } else {
- return [];
- }
- }
- }
-
- /**
- * 查询退款单据
- * @param string $out_trade_no
- * @param string|null $refund_no
- * @return array
- * @throws ContainerException
- * @throws InvalidParamsException
- * @throws ServiceNotFoundException
- */
- public function getRefund(string $out_trade_no, ?string $refund_no)
- {
- $order = [
- 'out_trade_no' => $out_trade_no,
- 'out_request_no' => $refund_no,
- '_action' => 'refund', // 默认值,查询退款网页订单
- ];
-
- $result = $this->returnFormat(Pay::alipay()->query($order));
- if (!empty($result['msg']) && $result['msg'] == 'Success') {
- $refund_status = $result['refund_status'] ?? '';
- if ($refund_status == 'REFUND_SUCCESS') {
- $status = RefundDict::SUCCESS;
- } else {
- $status = RefundDict::DEALING;
- }
- return [
- 'status' => $status,
- 'refund_no' => $refund_no,
- 'out_trade_no' => $out_trade_no
- ];
- } else {
- if (!empty($result['sub_code']) && $result['sub_code'] == 'ACQ.ACQ.SYSTEM_ERROR') {
- throw new PayException($result['msg']);
- } else {
- return [];
- }
- }
- }
-
- /**
- * 获取转账订单
- * @param string $transfer_no
- * @return array
- * @throws ContainerException
- * @throws InvalidParamsException
- * @throws ServiceNotFoundException
- */
- public function getTransfer(string $transfer_no, $out_transfer_no = '')
- {
- $order = [
- 'out_biz_no' => $transfer_no,
- '_action' => 'transfer'
- ];
- $result = $this->returnFormat(Pay::alipay()->query($order));
- if (!empty($result['msg']) && $result['msg'] == 'Success') {
- $status = $result['SUCCESS'] ?? '';
- $status_array = array(
- 'SUCCESS' => TransferDict::SUCCESS,
- 'WAIT_PAY' => TransferDict::WAIT,
- 'CLOSED' => TransferDict::FAIL,
- 'FAIL' => TransferDict::FAIL
- );
- return [
- 'status' => $status_array[$status],
- 'transfer_no' => $transfer_no
- ];
- } else {
- if (!empty($result['sub_code']) && $result['sub_code'] == 'ACQ.ACQ.SYSTEM_ERROR') {
- throw new PayException($result['msg']);
- } else {
- return [];
- }
- }
- }
-
- public function fail()
- {
- return 'fail';
- }
-
- public function returnUrl($params)
- {
- return ['url' => $params->getHeader('Location')[0] ?? ''];
- }
-}
diff --git a/niucloud/core/core/pay/BasePay.php b/niucloud/core/core/pay/BasePay.php
deleted file mode 100644
index 439d083f..00000000
--- a/niucloud/core/core/pay/BasePay.php
+++ /dev/null
@@ -1,203 +0,0 @@
- [
- 'enable' => true,
- 'file' => root_path('runtime') . 'paylog' . DIRECTORY_SEPARATOR . date('Ym') . DIRECTORY_SEPARATOR . date('d') . '.log',
- 'level' => env('app_debug') ? 'debug' : 'info', // 建议生产环境等级调整为 info,开发环境为 debug
- 'type' => 'single', // optional, 可选 daily.
- 'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
- ],
- 'http' => [ // optional
- 'timeout' => 5.0,
- ]
- ],
- [
- $type => [
- 'default' => $config
- ]
- ],
- ['_force' => true]
- );
- }
-
- public function returnFormat($param)
- {
- if ($param instanceof MessageInterface || $param instanceof Response) {
- $return_value = $param->getBody()->getContents();
- } else if ($param instanceof Collection) {
- $return_value = $param->toArray();
- } else {
- $return_value = $param;
- }
- return $return_value;
- }
-
- /**
- * 解析退款返回数据并解析
- * @param $our_trade_no
- * @param $refund_no
- * @param $status
- * @param int $success_time
- * @param string $reason
- * @return array
- */
- public function getRefundData($our_trade_no, $refund_no, $status, $success_time = 0, $reason = '')
- {
- return [
- 'our_trade_no' => $our_trade_no,
- 'refund_no' => $refund_no,
- 'status' => $status,
- 'success_time' => $success_time,
- 'reason' => $reason
- ];
- }
-
- /**
- * 获取转账数据并解析
- * @param $transfer_no
- * @param $status
- * @param $reason
- * @return void
- */
- public function getTransferData($transfer_no, $status, $reason)
- {
-
- }
-
-
-}
diff --git a/niucloud/core/core/pay/PayLoader.php b/niucloud/core/core/pay/PayLoader.php
deleted file mode 100644
index b0c34ab6..00000000
--- a/niucloud/core/core/pay/PayLoader.php
+++ /dev/null
@@ -1,42 +0,0 @@
-config = $config;
- $config['mch_secret_cert'] = url_to_path($config['mch_secret_cert'] ?? '');
- $config['mch_public_cert_path'] = url_to_path($config['mch_public_cert_path'] ?? '');
- // 选填-默认为正常模式。可选为: MODE_NORMAL, MODE_SERVICE
- $config['mode'] = Pay::MODE_NORMAL;
- if (!empty($config['wechat_public_cert_path']) && !empty($config['wechat_public_cert_id'])) {
- $config['wechat_public_cert_path'] = [
- $config['wechat_public_cert_id'] => url_to_path($config['wechat_public_cert_path'])
- ];
- } else {
- unset($config['wechat_public_cert_path']);
- unset($config['wechat_public_cert_id']);
- }
- Pay::config($this->payConfig($config, 'wechat'));
- }
-
-
- /**
- * 公众号支付
- * @param array $params
- * @return mixed|Collection
- */
- public function mp(array $params)
- {
- try {
- $result = $this->returnFormat(Pay::wechat()->mp([
- 'out_trade_no' => $params['out_trade_no'],
- 'description' => $params['body'],
- 'amount' => [
- 'total' => $params['money'],
- ],
- 'payer' => [
- 'openid' => $params['openid'],
- ],
- ]));
- $code = $result['code'] ?? 0;
- if ($code == 0) return $result;
- //支付错误抛出
- throw new PayException($result['message']);
- } catch (\Exception $e) {
- if ($e instanceof InvalidResponseException) {
- throw new PayException($e->response->all()['message'] ?? '');
- }
- throw new PayException($e->getMessage());
- }
- }
-
- /**
- * 手机网页支付
- * @param array $params
- * @return mixed
- */
- public function wap(array $params)
- {
- try {
- $order = [
- 'out_trade_no' => $params['out_trade_no'],
- 'description' => $params['body'],
- 'amount' => [
- 'total' => $params['money'],
- ],
- 'scene_info' => [
- 'payer_client_ip' => request()->ip(),
- 'h5_info' => [
- 'type' => 'Wap',
- ]
- ],
- ];
- //这儿有些特殊, 默认情况下,H5 支付所使用的 appid 是微信公众号的 appid,即配置文件中的 mp_app_id 参数,如果想使用关联的小程序的 appid,则只需要在调用参数中增加 ['_type' => 'mini'] 即可
- if (!empty($order['type'])) {
- $order['_type'] = 'mini'; // 注意这一行
- }
- return $this->returnFormat(Pay::wechat()->h5($order));
- } catch (\Exception $e) {
- if ($e instanceof InvalidResponseException) {
- throw new PayException($e->response->all()['message'] ?? '');
- }
- throw new PayException($e->getMessage());
- }
- }
-
- public function web(array $params)
- {
-
- }
-
- /**
- * app支付
- * @param array $params
- * @return mixed|ResponseInterface
- */
- public function app(array $params)
- {
- try {
- return $this->returnFormat(Pay::wechat()->app([
- 'out_trade_no' => $params['out_trade_no'],
- 'description' => $params['body'],
- 'amount' => [
- 'total' => $params['money'],
- ],
- ]));
- } catch (\Exception $e) {
- if ($e instanceof InvalidResponseException) {
- throw new PayException($e->response->all()['message'] ?? '');
- }
- throw new PayException($e->getMessage());
- }
- }
-
- /**
- * 小程序支付
- * @param array $params
- * @return mixed|ResponseInterface
- */
- public function mini(array $params)
- {
- try {
- return $this->returnFormat(Pay::wechat()->mini([
- 'out_trade_no' => $params['out_trade_no'],
- 'description' => $params['body'],
- 'amount' => [
- 'total' => $params['money'],
- 'currency' => 'CNY',//一般是人民币
- ],
- 'payer' => [
- 'openid' => $params['openid'],
- ]
- ]));
- } catch (\Exception $e) {
- if ($e instanceof InvalidResponseException) {
- throw new PayException($e->response->all()['message'] ?? '');
- }
- throw new PayException($e->getMessage());
- }
- }
-
- /**
- * 付款码支付
- * @param array $params
- * @return mixed|Collection
- */
- public function pos(array $params)
- {
- try {
- $order = [
- 'out_trade_no' => $params['out_trade_no'],
- 'body' => $params['body'],
- 'total_fee' => $params['money'],
- 'spbill_create_ip' => request()->ip(),
- 'auth_code' => $params["auth_code"],
- ];
- $result = Pay::wechat()->pos($order);
- return $this->returnFormat($result);
- } catch (\Exception $e) {
- if ($e instanceof InvalidResponseException) {
- throw new PayException($e->response->all()['message'] ?? '');
- }
- throw new PayException($e->getMessage());
- }
- }
-
- /**
- * 扫码支付
- * @param array $params
- * @return mixed|Collection
- */
- public function scan(array $params)
- {
- try {
- return $this->returnFormat(Pay::wechat()->scan([
- 'out_trade_no' => $params['out_trade_no'],
- 'description' => $params['body'],
- 'amount' => [
- 'total' => $params['money'],
- ],
- ]));
- } catch (\Exception $e) {
- if ($e instanceof InvalidResponseException) {
- throw new PayException($e->response->all()['message'] ?? '');
- }
- throw new PayException($e->getMessage());
- }
- }
-
- /**
- * 转账(微信的转账是很多笔的)
- * @param array $params
- * @return array
- */
- public function transfer(array $params)
- {
-
- $to_data = $params['to_no'];//收款人数据
- $channel = $to_data['channel'] ?? '';//渠道
- $open_id = $to_data['open_id'] ?? '';//openid
-
- if(empty($this->config['mch_id']) || empty($this->config['mch_secret_key']) || empty($this->config['mch_secret_cert']) || empty($this->config['mch_public_cert_path'])){
- throw new PayException('WECHAT_TRANSFER_CONFIG_NOT_EXIST');
- }
- //这儿的批次信息可能是这儿生成的,但依然需要记录
- $order = [
- 'out_batch_no' => ($to_data['out_batch_no'] ?? '') . '',//
- 'batch_name' => $params['remark'] ?? '',
- 'batch_remark' => $params['remark'] ?? '',
- ];
- if($channel == ChannelDict::WEAPP){
- $order['_type'] = 'mini';
- }
- $transfer_list = $params['transfer_list'];
- //单笔转账
- if (empty($transfer_list)) {
- $transfer_list = [
- [
- 'transfer_no' => $params['transfer_no'],
- 'money' => (int)$params['money'],
- 'remark' => $params['remark'],
- 'openid' => $open_id
- ]
- ];
- }
- $total_amount = 0;
- $total_num = 0;
-
- foreach ($transfer_list as $k => $v) {
- $item_transfer = [
- 'out_detail_no' => $params['transfer_no'],
- 'transfer_amount' => (int)$v['money'],
- 'transfer_remark' => $v['remark'],
- 'openid' => $v['openid'],
- ];
- $total_amount += (int)$v['money'];
- $total_num++;
- if (!empty($v['user_name'])) {
- $item_transfer['user_name'] = $v['user_name'];// 明文传参即可,sdk 会自动加密
- }
- $order['transfer_detail_list'][] = $item_transfer;
- }
- $order['total_amount'] = $total_amount;
- $order['total_num'] = $total_num;
- $tran_status_list = [
- 'PROCESSING' => TransferDict::DEALING,
- 'ACCEPTED' => TransferDict::DEALING,
- 'CLOSED' => TransferDict::FAIL,
- 'FINISHED' => TransferDict::SUCCESS,
- ];
- try {
- $result = $this->returnFormat(Pay::wechat()->transfer($order));
- if (!empty($result['code'])) {
-// if($result['code'] == 'PARAM_ERROR'){
-// throw new PayException();
-// }else if($result['code'] == 'INVALID_REQUEST'){
-// throw new PayException();
-// }
- if ($result['code'] == 'INVALID_REQUEST') {
- throw new PayException(700010);
- }
- throw new PayException($result['message']);
- }
-
-
- return ['batch_id' => $result['batch_id'], 'out_batch_no' => $result['out_batch_no'], 'status' => $tran_status_list[$result['batch_status']]];
- } catch (\Exception $e) {
- if($e->getCode() == 9402){
- return ['batch_id' => '', 'out_batch_no' => $order['out_batch_no'], 'status' => TransferDict::DEALING];
- }
- if ($e instanceof InvalidResponseException) {
- throw new PayException($e->response->all()['message'] ?? '');
- }
- throw new PayException($e->getMessage());
- }
-
- }
-
- /**
- * 支付关闭
- * @param string $out_trade_no
- * @return void
- * @throws ContainerException
- * @throws InvalidParamsException
- * @throws ServiceNotFoundException
- */
- public function close(string $out_trade_no)
- {
- try {
- $result = Pay::wechat()->close([
- 'out_trade_no' => $out_trade_no,
- ]);
- return $this->returnFormat($result);
- }catch(Throwable $e){
- return false;
- }
- return true;
- }
-
- /**
- * 退款
- * @param array $params
- * @return array
- * @throws ContainerException
- * @throws InvalidParamsException
- * @throws ServiceNotFoundException
- */
- public function refund(array $params)
- {
- $out_trade_no = $params['out_trade_no'];
- $money = $params['money'];
- $total = $params['total'];
- $refund_no = $params['refund_no'];
- $result = Pay::wechat()->refund([
- 'out_trade_no' => $out_trade_no,
- 'out_refund_no' => $refund_no,
- 'amount' => [
- 'refund' => $money,
- 'total' => $total,
- 'currency' => 'CNY',
- ],
- ]);
- $result = $this->returnFormat($result);
-
- $refund_status_array = [
- 'SUCCESS' => RefundDict::SUCCESS,
- 'CLOSED' => RefundDict::FAIL,
- 'PROCESSING' => RefundDict::DEALING,
- 'ABNORMAL' => RefundDict::FAIL,
- ];
- return [
- 'status' => $refund_status_array[$result['status']],
- 'refund_no' => $refund_no,
- 'out_trade_no' => $out_trade_no,
- 'pay_refund_no' => $result['refund_id']
- ];
- }
-
-
- /**
- * 异步回调
- * @param string $action
- * @param callable $callback
- * @return ResponseInterface|Response
- */
- public function notify(string $action, callable $callback)
- {
- try {
- $result = $this->returnFormat(Pay::wechat()->callback());
- if ($action == 'pay') {//支付
- if ($result['event_type'] == 'TRANSACTION.SUCCESS') {
- $pay_trade_data = $result['resource']['ciphertext'];
-
- $temp_params = [
- 'trade_no' => $pay_trade_data['transaction_id'],
- 'mch_id' => $pay_trade_data['mchid'],
- 'status' => OnlinePayDict::getWechatPayStatus($pay_trade_data['trade_state'])
- ];
-
- $callback_result = $callback($pay_trade_data['out_trade_no'], $temp_params);
- if (is_bool($callback_result) && $callback_result) {
- return Pay::wechat()->success();
- }
- }
- } else if ($action == 'refund') {//退款
- if ($result['event_type'] == 'REFUND.SUCCESS') {
- $refund_trade_data = $result['resource']['ciphertext'];
- $refund_status_array = [
- 'SUCCESS' => RefundDict::SUCCESS,
- 'CLOSED' => RefundDict::FAIL,
- 'PROCESSING' => RefundDict::DEALING,
- 'ABNORMAL' => RefundDict::FAIL,
- ];
- $temp_params = [
- 'trade_no' => $refund_trade_data['transaction_id'],
- 'mch_id' => $refund_trade_data['mchid'],
- 'refund_no' => $refund_trade_data['out_refund_no'],
- 'status' => $refund_status_array[$refund_trade_data['refund_status']],
- ];
-
- $callback_result = $callback($refund_trade_data['out_trade_no'], $temp_params);
- if (is_bool($callback_result) && $callback_result) {
- return Pay::wechat()->success();
- }
- }
- }
- return $this->fail();
-
- } catch ( Throwable $e ) {
-// throw new PayException($e->getMessage());
- return $this->fail($e->getMessage());
- }
- }
-
- /**
- * 查询普通支付订单
- * @param array $params
- * @return array|MessageInterface|Collection|null
- * @throws ContainerException
- * @throws InvalidParamsException
- * @throws ServiceNotFoundException
- */
- public function getOrder(array $params = [])
- {
-
- $out_trade_no = $params['out_trade_no'];
- $transaction_id = $params['transaction_id'] ?? '';
- $order = [
-
- ];
- if (!empty($out_trade_no)) {
- $order['out_trade_no'] = $out_trade_no;
- }
- if (!empty($transaction_id)) {
- $order['transaction_id'] = $transaction_id;
- }
- $result = Pay::wechat()->query($order);
- if (empty($result))
- return $result;
- $result = $this->returnFormat($result);
- return [
- 'status' => OnlinePayDict::getWechatPayStatus($result['trade_state']),
- ];
- }
-
- /**
- * 查询退款单据
- * @param string|null $out_trade_no
- * @param string|null $refund_no
- * @return array|Collection|MessageInterface|null
- * @throws ContainerException
- * @throws InvalidParamsException
- * @throws ServiceNotFoundException
- */
- public function getRefund(?string $out_trade_no, ?string $refund_no = '')
- {
- $order = [
- '_action' => 'refund',
- 'transaction_id' => $out_trade_no,
- 'out_refund_no' => $refund_no,
- ''
- ];
- $result = Pay::wechat()->query($order);
- if (empty($result))
- return $result;
- $result = $this->returnFormat($result);
- $refund_status_array = [
- 'SUCCESS' => RefundDict::SUCCESS,
- 'CLOSED' => RefundDict::FAIL,
- 'PROCESSING' => RefundDict::DEALING,
- 'ABNORMAL' => RefundDict::FAIL,
- ];
- return [
- 'status' => $refund_status_array[$result['status']],
- 'refund_no' => $refund_no,
- 'out_trade_no' => $out_trade_no
- ];
- }
-
- /**
- * 获取转账订单(todo 切勿调用)
- * @param string $transfer_no
- * @return array
- * @throws ContainerException
- * @throws InvalidParamsException
- */
- public function getTransfer(string $transfer_no, $out_batch_no = '')
- {
- $order = [
- 'out_batch_no' => $out_batch_no,
- 'out_detail_no' => $transfer_no,
- '_action' => 'transfer',
- ];
-
- try {
- $result = Pay::wechat()->query($order);
- $result = $this->returnFormat($result);
- //微信转账状态
- $transfer_status_array = [
- 'INIT' => TransferDict::DEALING,//初始态。 系统转账校验中
- 'WAIT_PAY' => TransferDict::DEALING,
- 'PROCESSING' => TransferDict::DEALING,
- 'FAIL' => TransferDict::FAIL,
- 'SUCCESS' => TransferDict::SUCCESS,
- ];
- return [
- 'status' => $transfer_status_array[$result['detail_status']],
- 'transfer_no' => $transfer_no
- ];
- }catch(Throwable $e){
- return [
- 'status' => TransferDict::DEALING,
- 'transfer_no' => $transfer_no
- ];
- }
- }
-
-
- public function fail($message = '')
- {
- $response = [
- 'code' => 'FAIL',
- 'message' => $message ?: '失败',
- ];
- return response($response, 400, [], 'json');
- }
-}
diff --git a/niucloud/core/core/poster/BasePoster.php b/niucloud/core/core/poster/BasePoster.php
deleted file mode 100644
index 2822d065..00000000
--- a/niucloud/core/core/poster/BasePoster.php
+++ /dev/null
@@ -1,41 +0,0 @@
-config([ 'path' => realpath($dir) . DIRECTORY_SEPARATOR . $file_path ]);
- $bg_width = $poster_data[ 'global' ][ 'width' ];
- $bg_height = $poster_data[ 'global' ][ 'height' ];
- if ($bg_type == 'url' && !empty($poster_data[ 'global' ][ 'bgUrl' ]) && is_file($poster_data[ 'global' ][ 'bgUrl' ])) {
- $im = $instance->buildIm($bg_width, $bg_height)->buildImage([
- 'src' => $poster_data[ 'global' ][ 'bgUrl' ],
-// 'angle' => 80
- ], 0, 0, 0, 0, $bg_width, $bg_height);
- } else {
- $im = $instance->buildIm($bg_width, $bg_height, $this->getRgbColor($poster_data[ 'global' ][ 'bgColor' ]));
- }
- $align_array = [
- 'center', 'left', 'right', 'top', 'bottom'
- ];
- foreach ($poster_data[ 'value' ] as $k => $v) {
- $type = $v[ 'type' ];
- switch ($type) {
- case 'text':
- $font_size = ceil($v[ 'fontSize' ]);
- $default_font = 'static' . DIRECTORY_SEPARATOR . 'font' . DIRECTORY_SEPARATOR . 'SourceHanSansCN-Regular.ttf';
- $font = $v[ 'fontFamily' ] ? : $default_font;
- $content_list = $this->getText($v[ 'value' ], $font_size, $font, $v[ 'space' ] ?? 0, $v[ 'width' ], $v[ 'height' ], $v[ 'lineHeight' ] + $font_size);
- $base_y = $this->getX($v[ 'y' ]);
- if (is_array($base_y)) {
- $diff_height = count($content_list) * ( $v[ 'lineHeight' ] + $font_size );
- $again_y = $base_y[ 0 ];
- if ($again_y == 'center') {
- $base_y_num = ( $bg_height - $diff_height ) > 0 ? ( $bg_height - $diff_height ) / 2 : 0;
- } else if ($again_y == 'top') {
- $base_y_num = 0;
- } else {
- $base_y_num = $bg_height - $v[ 'height' ];
- }
-
- } else {
- $base_y_num = $base_y;
- }
-// if(in_array($base_y, $align_array)){
-// $diff_height = count($content_list)*($v[ 'lineHeight' ]+$font_size);
-// $base_y_num = ($bg_height-$diff_height) > 0 ? ($bg_height-$diff_height)/2 : 0;
-// }else{
-// $base_y_num = $base_y[0];
-// }
- foreach ($content_list as $ck => $content) {
- if ($ck == 0) {
- if ($v[ 'lineHeight' ] > 0) {
- $item_line = $v[ 'lineHeight' ] / 2;
- } else {
- $item_line = 0;
- }
- } else {
- $item_line = $v[ 'lineHeight' ] + $font_size;
- }
- $base_y_num += $item_line;
- //计算文本框宽度
- $im = $im->buildText($content, $this->getX($v[ 'x' ]), $base_y_num, $font_size, $this->getRgbColor($v[ 'fontColor' ]), $v[ 'width' ], $font, $v[ 'weight' ] ? 10 : null); # 合成文字
- }
- break;
- case 'image':
- if (is_file($v[ 'value' ])) {
- $im = $im->buildImage($v[ 'value' ], $this->getX($v[ 'x' ]), $this->getY($v[ 'y' ]), 0, 0, $v[ 'width' ], $v[ 'height' ], false, $v[ 'shape' ] ?? 'normal'); # 合成图片
- }
- break;
- case 'draw':
- if (!empty($v[ 'draw_type' ]) && $v[ 'draw_type' ] == 'Polygon') {
- $points = $v[ 'points' ];
- $im = $im->buildLine($points[ 0 ][ 0 ], $points[ 0 ][ 1 ], $points[ 2 ][ 0 ], $points[ 2 ][ 1 ], $this->getRgbColor($v[ 'bgColor' ]), 'filled_rectangle');
- }
- break;
- }
- }
-
- $path = $im->getPoster();
-
- return str_replace(DIRECTORY_SEPARATOR, '/', str_replace(realpath(''), '', $path[ 'url' ]));
- }
-
-
- public function getX($dst_x)
- {
- if (is_int($dst_x)) {
- return $dst_x;
- } else {
- return [ $dst_x, 0 ];
- }
- }
-
- public function getY($dst_y)
- {
- if (is_int($dst_y)) {
- return $dst_y;
- } else {
- return [ $dst_y, 0 ];
- }
- }
-
- public function getRgbColor($color)
- {
- $color = $color ? : '#FFFFFF';
- if (!str_contains($color, '#')) {
- $color = str_replace('rgba(', '', $color);
- $color = str_replace(')', '', $color);
- list($r, $g, $b) = explode(',', $color);
- list($r, $g, $b) = array_map(function($v) { return (int) $v; }, [ $r, $g, $b ]);
- } else {
- list($r, $g, $b) = sscanf($color, "#%02x%02x%02x");
- }
- return [ $r, $g, $b, 1 ];
- }
-
- /**
- * 获取高度限制过后的文本
- * @param $content
- * @param $fontSize
- * @param $font
- * @param $space
- * @param $max_ws
- * @param $max_hs
- * @param $line_height
- * @return mixed
- */
- public function getText($content, $fontSize, $font, $space, $max_ws, $max_hs, $line_height)
- {
- $calcSpace = $space > $fontSize ? ( $space - $fontSize ) : 0; // 获取间距计算值
-
- $fontSize = ( $fontSize * 3 ) / 4; // px 转化为 pt
-
- mb_internal_encoding('UTF-8'); // 设置编码
- // 这几个变量分别是 字体大小, 角度, 字体名称, 字符串, 预设宽度
- $contents = '';
- $contentsArr = [];
- $letter = [];
- $line = 1;
- $calcSpaceRes = 0;
- // 将字符串拆分成一个个单字 保存到数组 letter 中
- for ($i = 0; $i < mb_strlen($content); $i++) {
- $letter[] = mb_substr($content, $i, 1);
- }
- $textWidthArr = [];
- $contentStr = '';
- $line_num = 1;
- $total_width = 0;
- $content_list = [];
- foreach ($letter as $l) {
- $textStr = $contentStr . $l;
- $fontBox = imagettfbbox($fontSize, 0, $font, $textStr);
- $textWidth = abs($fontBox[ 2 ]) + $calcSpaceRes;
- $textWidthArr[ $line ] = $textWidth;
- // 判断拼接后的字符串是否超过预设的宽度
- if (( $textWidth > $max_ws ) && ( $contents !== '' )) {
- $line_num++;
- if (( $line_num * $line_height ) > $max_hs) {
- break;
- }
- $contents .= "\n";
- $contentStr = "";
- $line++;
- }
- if (empty($content_list[ $line_num - 1 ])) $content_list[ $line_num - 1 ] = '';
- $content_list[ $line_num - 1 ] .= $l;
- $contents .= $l;
- $contentStr .= $l;
- $line === 1 && $calcSpaceRes += $calcSpace;
- $text_width = max(array_values($textWidthArr));
- }
- return $content_list;
- }
-}
\ No newline at end of file
diff --git a/niucloud/core/core/poster/PosterLoader.php b/niucloud/core/core/poster/PosterLoader.php
deleted file mode 100644
index 82265b01..00000000
--- a/niucloud/core/core/poster/PosterLoader.php
+++ /dev/null
@@ -1,42 +0,0 @@
-config = $config;
- }
-
- /**
- * 打印小票
- * @param array $data
- * @return mixed|void
- */
- public function printTicket(array $data)
- {
- }
-}
\ No newline at end of file
diff --git a/niucloud/core/core/printer/PrinterLoader.php b/niucloud/core/core/printer/PrinterLoader.php
deleted file mode 100644
index 28c2f9c8..00000000
--- a/niucloud/core/core/printer/PrinterLoader.php
+++ /dev/null
@@ -1,39 +0,0 @@
-client->call('expressprint/index', array('machine_code' => $machineCode, 'content' => $content, 'origin_id' => $originId, 'sandbox' => $sandbox));
- }
-
- /**
- * 面单取消接口
- *
- * @param $machineCode
- * @param $content
- * @return mixed
- * @throws \Exception
- */
- public function cancel($machineCode, $content)
- {
- return $this->client->call('expressprint/cancel', array('machine_code' => $machineCode, 'content' => $content));
- }
-
-}
diff --git a/niucloud/core/core/printer/sdk/yilianyun/api/OauthService.php b/niucloud/core/core/printer/sdk/yilianyun/api/OauthService.php
deleted file mode 100644
index c712be22..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/api/OauthService.php
+++ /dev/null
@@ -1,22 +0,0 @@
-client->call('oauth/setpushurl', array('cmd' => $cmd, 'url' => $url, 'status' => $status));
- }
-}
-
-
diff --git a/niucloud/core/core/printer/sdk/yilianyun/api/PicturePrintService.php b/niucloud/core/core/printer/sdk/yilianyun/api/PicturePrintService.php
deleted file mode 100644
index dfb4b4c4..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/api/PicturePrintService.php
+++ /dev/null
@@ -1,22 +0,0 @@
-client->call('pictureprint/index', array('machine_code' => $machineCode, 'picture_url' => $pictureUrl, 'origin_id' => $originId, $idempotence => $idempotence));
- }
-}
diff --git a/niucloud/core/core/printer/sdk/yilianyun/api/PrintMenuService.php b/niucloud/core/core/printer/sdk/yilianyun/api/PrintMenuService.php
deleted file mode 100644
index 6f4a5ede..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/api/PrintMenuService.php
+++ /dev/null
@@ -1,19 +0,0 @@
-client->call('printmenu/addprintmenu', array('machine_code' => $machineCode, 'content' => $content));
- }
-
-}
\ No newline at end of file
diff --git a/niucloud/core/core/printer/sdk/yilianyun/api/PrintService.php b/niucloud/core/core/printer/sdk/yilianyun/api/PrintService.php
deleted file mode 100644
index 7ff2309e..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/api/PrintService.php
+++ /dev/null
@@ -1,20 +0,0 @@
-client->call('print/index', array('machine_code' => $machineCode, 'content' => $content, 'origin_id' => $originId, 'idempotence' => $idempotence));
- }
-}
diff --git a/niucloud/core/core/printer/sdk/yilianyun/api/PrinterService.php b/niucloud/core/core/printer/sdk/yilianyun/api/PrinterService.php
deleted file mode 100644
index d7b6bd66..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/api/PrinterService.php
+++ /dev/null
@@ -1,313 +0,0 @@
- $machineCode,
- 'msign' => $mSign,
- );
- if (!empty($phone)) {
- $params['phone'] = $phone;
- }
- if (!empty($printName)) {
- $params['print_name'] = $printName;
- }
- return $this->client->call('printer/addprinter', $params);
- }
-
-
- /**
- * 设置内置语音接口
- * 注意: 仅支持K4-WA、K4-GAD、K4-WGEAD型号
- *
- * @param $machineCode string 机器码
- * @param $content string 在线语音地址链接 or 自定义语音内容
- * @param bool $isFile true or false
- * @param string $aid int 0~9 , 定义需设置的语音编号,若不提交,默认升序
- * @return mixed
- */
- public function setVoice($machineCode, $content, $isFile = false, $aid = '')
- {
- $params = array(
- 'machine_code' => $machineCode,
- 'content' => $content,
- 'is_file' => $isFile,
- );
- if (!empty($aid)){
- $params ['aid'] = $aid;
- }
- return $this->client->call('printer/setvoice', $params);
- }
-
-
- /**
- * 删除内置语音接口
- * 注意: 仅支持K4-WA、K4-GAD、K4-WGEAD型号
- *
- * @param $machineCode string 机器码
- * @param $aid int 0 ~ 9 编号
- * @return mixed
- */
- public function deleteVoice($machineCode, $aid)
- {
- return $this->client->call('printer/deletevoice', array('machine_code' => $machineCode, 'aid' => $aid));
- }
-
-
- /**
- * 删除终端授权接口
- *
- * @param $machineCode string 机器码
- * @return mixed
- */
- public function deletePrinter($machineCode)
- {
- return $this->client->call('printer/deleteprinter', array('machine_code' => $machineCode));
- }
-
-
- /**
- * 关机重启接口
- *
- * @param $machineCode string 机器码
- * @param $responseType string restart or shutdown
- * @return mixed
- */
- public function shutdownRestart($machineCode, $responseType)
- {
- return $this->client->call('printer/shutdownrestart', array('machine_code' => $machineCode, 'response_type' => $responseType));
- }
-
-
- /**
- * 声音调节接口
- *
- * @param $machineCode string 机器码
- * @param $voice string 音量 0 or 1 or 2 or 3
- * @param $responseType string buzzer (蜂鸣器) or horn (喇叭)
- * @return mixed
- */
- public function setsound($machineCode, $voice, $responseType)
- {
- return $this->client->call('printer/setsound', array('machine_code' => $machineCode, 'voice' => $voice, 'response_type' => $responseType));
- }
-
-
- /**
- * 获取机型打印宽度接口
- *
- * @param $machineCode string 机器码
- * @return mixed
- */
- public function printInfo($machineCode)
- {
- return $this->client->call('printer/printinfo', array('machine_code' => $machineCode));
- }
-
-
- /**
- * 获取机型软硬件版本接口
- *
- * @param $machineCode string 机器码
- * @return mixed
- */
- public function getVersion($machineCode)
- {
- return $this->client->call('printer/getversion', array('machine_code' => $machineCode));
- }
-
-
- /**
- * 取消所有未打印订单接口
- *
- * @param $machineCode string 机器码
- * @return mixed
- */
- public function cancelAll($machineCode)
- {
- return $this->client->call('printer/cancelall', array('machine_code' => $machineCode));
- }
-
-
- /**
- * 取消单条未打印订单接口
- *
- * @param $machineCode string 机器码
- * @param $orderId string 未打印的易联云ID
- * @return mixed
- */
- public function cancelOne($machineCode, $orderId)
- {
- return $this->client->call('printer/cancelone', array('machine_code' => $machineCode, 'order_id' => $orderId));
- }
-
-
- /**
- * 设置logo接口
- *
- * @param $machineCode string 机器码
- * @param $imgUrl string logo链接地址
- * @return mixed
- */
- public function setIcon($machineCode, $imgUrl)
- {
- return $this->client->call('printer/seticon', array('machine_code' => $machineCode, 'img_url' => $imgUrl));
- }
-
-
- /**
- * 取消logo接口
- *
- * @param $machineCode string 机器码
- * @return mixed
- */
- public function deleteIcon($machineCode)
- {
- return $this->client->call('printer/deleteicon', array('machine_code' => $machineCode));
- }
-
-
- /**
- * 打印方式接口
- *
- * @param $machineCode string 机器码
- * @param $responseType string btnopen or btnclose
- * @return mixed
- */
- public function btnPrint($machineCode, $responseType)
- {
- return $this->client->call('printer/btnprint', array('machine_code' => $machineCode, 'response_type' => $responseType));
- }
-
-
- /**
- * 接单拒单设置接口
- *
- * @param $machineCode string 机器码
- * @param $responseType string open or close
- * @return mixed
- */
- public function getOrder($machineCode, $responseType)
- {
- return $this->client->call('printer/getorder', array('machine_code' => $machineCode, 'response_type' => $responseType));
- }
-
-
- /**
- * 获取订单状态接口
- *
- * @param $machineCode string 机器码
- * @param $orderId string 易联云订单id
- * @return mixed
- */
- public function getOrderStatus($machineCode, $orderId)
- {
- return $this->client->call('printer/getorderstatus', array('machine_code' => $machineCode, 'order_id' => $orderId));
- }
-
-
- /**
- * 获取订单列表接口
- *
- * @param $machineCode string 机器码
- * @param $pageIndex int 第几页
- * @param $pageSize int 查询条数
- * @return mixed
- */
- public function getOrderPagingList($machineCode, $pageIndex = 1 , $pageSize = 10)
- {
- return $this->client->call('printer/getorderpaginglist', array('machine_code' => $machineCode, 'page_index' => $pageIndex, 'page_size' => $pageSize));
- }
-
- /**
- * 获取终端状态接口
- *
- * @param $machineCode string 机器码
- * @return mixed
- */
- public function getPrintStatus($machineCode)
- {
- return $this->client->call('printer/getprintstatus', array('machine_code' => $machineCode));
- }
-
- /**
- * 订单重打(单订单)
- *
- * @param $machineCode
- * @param $orderId
- * @return mixed
- * @throws \Exception
- */
- public function reprintOrder($machineCode, $orderId)
- {
- return $this->client->call('printer/reprintorder', array('machine_code' => $machineCode, 'order_id' => $orderId));
- }
-
- /**
- * K8 推送开关设置
- *
- * @param $machineCode
- * @param $status
- * @param $mode
- * @return mixed
- * @throws \Exception
- */
- public function pushSwitch($machineCode, $status, $mode = 1)
- {
- return $this->client->call('printer/pushswitch', array('machine_code' => $machineCode, 'status' => $status, $mode));
- }
-
- /**
- * K8 关键词设置接口
- *
- * @param $machineCode
- * @param $keys
- * @param $type
- * @param $content
- * @return mixed
- * @throws \Exception
- */
- public function setKeyWords($machineCode, $keys, $type, $content)
- {
- return $this->client->call('printer/setkeywords', array('machine_code' => $machineCode, 'keys' => $keys, 'type' => $type, 'content' => $content));
- }
-
- /**
- * K8 高级设置接口
- *
- * @param $machineCode
- * @param null $usbPrintMode
- * @param null $usbInputMode
- * @param null $cameraDecodeTxMode
- * @return mixed
- * @throws \Exception
- */
- public function setting($machineCode, $usbPrintMode = null, $usbInputMode = null, $cameraDecodeTxMode = null)
- {
- $params = array('machine_code' => $machineCode);
- if (!is_null($usbPrintMode) && in_array($usbPrintMode, [0, 1])) {
- $params['usb_print_mode'] = (int)$usbInputMode;
- }
- if (!is_null($usbInputMode) && in_array($usbInputMode, [0, 1])) {
- $params['usb_input_mode'] = (int)$usbInputMode;
- }
- if (!is_null($cameraDecodeTxMode) && in_array($cameraDecodeTxMode, [0, 1])) {
- $params['camera_decode_tx_mode'] = (int)$cameraDecodeTxMode;
- }
- return $this->client->call('printer/setting', $params);
- }
-
-}
diff --git a/niucloud/core/core/printer/sdk/yilianyun/api/RpcService.php b/niucloud/core/core/printer/sdk/yilianyun/api/RpcService.php
deleted file mode 100644
index 22596e68..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/api/RpcService.php
+++ /dev/null
@@ -1,19 +0,0 @@
-client = new YlyRpcClient($token, $config);
- }
-
-}
\ No newline at end of file
diff --git a/niucloud/core/core/printer/sdk/yilianyun/config/YlyConfig.php b/niucloud/core/core/printer/sdk/yilianyun/config/YlyConfig.php
deleted file mode 100644
index cdf00b9e..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/config/YlyConfig.php
+++ /dev/null
@@ -1,68 +0,0 @@
-clientId = $clientId;
- $this->clientSecret = $clientSecret;
- }
-
- public function getClientId()
- {
- return $this->clientId;
- }
-
-
- public function getClientSecret()
- {
- return $this->clientSecret;
- }
-
- public function getRequestUrl()
- {
- return $this->requestUrl;
- }
-
- public function setRequestUrl($requestUrl)
- {
- $this->requestUrl = $requestUrl;
- }
-
- public function getLog()
- {
- return $this->log;
- }
-
- public function setLog($log)
- {
- if (!method_exists($log, "info")) {
- throw new InvalidArgumentException("logger need have method 'info(\$message)'");
- }
- if (!method_exists($log, "error")) {
- throw new InvalidArgumentException("logger need have method 'error(\$message)'");
- }
- $this->log = $log;
- }
-
-}
diff --git a/niucloud/core/core/printer/sdk/yilianyun/demo/authorization_code_mode/callback.php b/niucloud/core/core/printer/sdk/yilianyun/demo/authorization_code_mode/callback.php
deleted file mode 100644
index aa8786c3..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/demo/authorization_code_mode/callback.php
+++ /dev/null
@@ -1,141 +0,0 @@
-getToken($code);
-} catch (Exception $e) {
- echo $e->getMessage() . "\n";
- print_r(json_decode($e->getMessage(), true));
- return;
-}
-
-$access_token = $token->access_token; //调用API凭证AccessToken
-$refresh_token = $token->refresh_token; //刷新AccessToken凭证 失效时间35天
-$machine_code = $token->machine_code; //商户授权机器码
-$expires_in = $token->expires_in; //AccessToken失效时间30天
-$refresh_expires_in = $token->refresh_expires_in; //RefreshToken失效时间35天
-$origin_id = ''; //内部订单号(32位以内)
-
-
-if (empty($machine_code)) {
- echo 'The machine_code cannot be empty';
- return;
-}
-
-if (empty($origin_id)) {
- echo 'The origin_id cannot be empty';
- return;
-}
-
-/**文本接口开始**/
-$print = new PrintService($access_token, $config);
-//58mm排版 排版指令详情请看 http://doc2.10ss.net/332006
-$content = "**#1 美团**";
-$content .= str_repeat('.', 32);
-$content .= "--在线支付--";
-$content .= "张周兄弟烧烤";
-$content .= "订单时间:" . date("Y-m-d H:i") . "\n";
-$content .= "订单编号:40807050607030\n";
-$content .= str_repeat('*', 14) . "商品" . str_repeat("*", 14);
-$content .= "
";
-$content .= "| 烤土豆(超级辣) | x3 | 5.96 |
";
-$content .= "| 烤豆干(超级辣) | x2 | 3.88 |
";
-$content .= "| 烤鸡翅(超级辣) | x3 | 17.96 |
";
-$content .= "| 烤排骨(香辣) | x3 | 12.44 |
";
-$content .= "| 烤韭菜(超级辣) | x3 | 8.96 |
";
-$content .= "
";
-$content .= str_repeat('.', 32);
-$content .= "这是二维码内容";
-$content .= "小计:¥82\n";
-$content .= "折扣:¥4 \n";
-$content .= str_repeat('*', 32);
-$content .= "订单总价:¥78 \n";
-$content .= "**#1 完**";
-
-try {
- var_dump($print->index($machine_code, $content, $origin_id));
-} catch (Exception $e) {
- echo $e->getMessage();
-}
-/**文本接口结束**/
-
-
-///**图形接口开始**/
-//$picturePrint = new PicturePrintService($access_token, $config);
-//$content = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1497000905083&di=7c3cffef1dd40edffbd0a37c4eabb277&imgtype=0&src=http://img1.touxiang.cn/uploads/20131114/14-054929_462.jpg";
-//try{
-// var_dump($picturePrint->index($machine_code, $content, $origin_id));
-//}catch (Exception $e) {
-// echo $e->getMessage();
-//}
-///**图形接口结束**/
-
-
-///**面单接口开始**/ //打印机型必须为k5;
-//$expressPrint = new ExpressPrintService($access_token, $config);
-//$content = array(
-// "OrderCode"=> "0126578665784971",
-// "ShipperCode"=> "SF", //SF YZPY HTKY YD
-// "PayType"=> 1,
-// "ExpType"=> 1,
-// "Cost"=>6.0,
-// "OtherCost"=> 7.0,
-// "CustomerName" => '1264546',
-// "CustomerPwd" => '4545454',
-// "MonthCode" => '',
-// "Sender"=> array(
-// "Company" => "5645645",
-// "Name" => "Taylor",
-// "Mobile" => "15018442396",
-// "ProvinceName" => "上海",
-// "CityName" => "上海",
-// "PostCode" => '61000',
-// "ExpAreaName" => "青浦区",
-// "Address" => "明珠路73号"
-// ),
-// "Receiver"=> array(
-// "Company"=> "789789",
-// "Name"=> "Yann",
-// "Mobile"=> "15018442396",
-// "ProvinceName"=> "北京",
-// "CityName"=> "北京",
-// "PostCode" => '61000',
-// "ExpAreaName"=> "朝阳区",
-// "Address"=> "三里屯街道雅秀大厦"
-// ),
-// "Commodity" => array(
-// array(
-// "GoodsName"=> "鞋子",
-// )
-// ),
-// "AddService"=> array(
-// array(
-// "Name"=> "COD",
-// "Value"=> "1020",
-// "CustomerID" => "44564"
-// )
-// ),
-// "StartDate" => date("y-M-d H:i:s",time() + 7200),
-// "Weight"=> 1.0,
-// "Quantity"=> 1,
-// "Volume"=> 0.0,
-// "Remark"=> "小心轻放",
-//);
-//
-//try{
-// var_dump($expressPrint->index($machine_code, $content, $origin_id));
-//}catch (Exception $e) {
-// echo $e->getMessage();
-//}
-///**面单接口结束**/
diff --git a/niucloud/core/core/printer/sdk/yilianyun/demo/client_mode/callback.php b/niucloud/core/core/printer/sdk/yilianyun/demo/client_mode/callback.php
deleted file mode 100644
index bba4a61e..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/demo/client_mode/callback.php
+++ /dev/null
@@ -1,136 +0,0 @@
-getToken();
-} catch (Exception $e) {
- echo $e->getMessage() . "\n";
- print_r(json_decode($e->getMessage(), true));
- return;
-}
-
-$access_token = $token->access_token; //调用API凭证AccessToken 永久有效,请妥善保存.
-$refresh_token = $token->refresh_token; //刷新AccessToken凭证 失效时间35天
-$expires_in = $token->expires_in; //自有型应用可忽略此回调参数, AccessToken失效时间30天
-$refresh_expires_in = $token->refresh_expires_in; //自有型应用可忽略此回调参数, RefreshToken失效时间35天
-$machine_code = ''; //机器码
-$origin_id = ''; //内部订单号(32位以内)
-
-if (empty($machine_code)) {
- echo 'The machine_code cannot be empty';
- return;
-}
-
-if (empty($origin_id)) {
- echo 'The origin_id cannot be empty';
- return;
-}
-
-
-/**文本接口开始**/
-$print = new PrintService($access_token, $config);
-//58mm排版 排版指令详情请看 http://doc2.10ss.net/332006
-$content = "**#1 美团**";
-$content .= str_repeat('.', 32);
-$content .= "--在线支付--";
-$content .= "张周兄弟烧烤";
-$content .= "订单时间:" . date("Y-m-d H:i") . "\n";
-$content .= "订单编号:40807050607030\n";
-$content .= str_repeat('*', 14) . "商品" . str_repeat("*", 14);
-$content .= "";
-$content .= "| 烤土豆(超级辣) | x3 | 5.96 |
";
-$content .= "| 烤豆干(超级辣) | x2 | 3.88 |
";
-$content .= "| 烤鸡翅(超级辣) | x3 | 17.96 |
";
-$content .= "| 烤排骨(香辣) | x3 | 12.44 |
";
-$content .= "| 烤韭菜(超级辣) | x3 | 8.96 |
";
-$content .= "
";
-$content .= str_repeat('.', 32);
-$content .= "这是二维码内容";
-$content .= "小计:¥82\n";
-$content .= "折扣:¥4 \n";
-$content .= str_repeat('*', 32);
-$content .= "订单总价:¥78 \n";
-$content .= "**#1 完**";
-
-try {
- var_dump($print->index($machine_code, $content, $origin_id));
-} catch (Exception $e) {
- echo $e->getMessage();
-}
-/**文本接口结束**/
-
-
-///**图形接口开始**/
-//$picturePrint = new PicturePrintService($access_token, $config);
-//$content = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1497000905083&di=7c3cffef1dd40edffbd0a37c4eabb277&imgtype=0&src=http://img1.touxiang.cn/uploads/20131114/14-054929_462.jpg";
-//try{
-// var_dump($picturePrint->index($machine_code, $content, $origin_id));
-//}catch (Exception $e) {
-// echo $e->getMessage();
-//}
-///**图形接口结束**/
-
-
-///**面单接口开始**/ //打印机型必须为k5;
-//$expressPrint = new ExpressPrintService($access_token, $config);
-//$content = array(
-// "OrderCode"=> "0126578665784971",
-// "ShipperCode"=> "SF", //SF YZPY HTKY YD
-// "PayType"=> 1,
-// "ExpType"=> 1,
-// "Cost"=>6.0,
-// "OtherCost"=> 7.0,
-// "CustomerName" => '1264546',
-// "CustomerPwd" => '4545454',
-// "MonthCode" => '',
-// "Sender"=> array(
-// "Company" => "5645645",
-// "Name" => "Taylor",
-// "Mobile" => "15018442396",
-// "ProvinceName" => "上海",
-// "CityName" => "上海",
-// "PostCode" => '61000',
-// "ExpAreaName" => "青浦区",
-// "Address" => "明珠路73号"
-// ),
-// "Receiver"=> array(
-// "Company"=> "789789",
-// "Name"=> "Yann",
-// "Mobile"=> "15018442396",
-// "ProvinceName"=> "北京",
-// "CityName"=> "北京",
-// "PostCode" => '61000',
-// "ExpAreaName"=> "朝阳区",
-// "Address"=> "三里屯街道雅秀大厦"
-// ),
-// "Commodity" => array(
-// array(
-// "GoodsName"=> "鞋子",
-// )
-// ),
-// "AddService"=> array(
-// array(
-// "Name"=> "COD",
-// "Value"=> "1020",
-// "CustomerID" => "44564"
-// )
-// ),
-// "StartDate" => date("y-M-d H:i:s",time() + 7200),
-// "Weight"=> 1.0,
-// "Quantity"=> 1,
-// "Volume"=> 0.0,
-// "Remark"=> "小心轻放",
-//);
-//
-//try{
-// var_dump($expressPrint->index($machine_code, $content, $origin_id));
-//}catch (Exception $e) {
-// echo $e->getMessage();
-//}
-///**面单接口结束**/
diff --git a/niucloud/core/core/printer/sdk/yilianyun/demo/index.php b/niucloud/core/core/printer/sdk/yilianyun/demo/index.php
deleted file mode 100644
index 30cabdd0..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/demo/index.php
+++ /dev/null
@@ -1,11 +0,0 @@
-setRequestUrl('https://open-api.10ss.net/v2');
diff --git a/niucloud/core/core/printer/sdk/yilianyun/oauth/YlyOauthClient.php b/niucloud/core/core/printer/sdk/yilianyun/oauth/YlyOauthClient.php
deleted file mode 100644
index ffc8510d..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/oauth/YlyOauthClient.php
+++ /dev/null
@@ -1,152 +0,0 @@
-clientId = $config->getClientId();
- $this->clientSecret = $config->getClientSecret();
- $this->requestUrl = $config->getRequestUrl();
- $this->log = $config->getLog();
- }
-
-
- public function getToken($code = '')
- {
- $time = time();
- $params = array(
- 'client_id' => $this->clientId,
- 'timestamp' => $time,
- 'sign' => $this->getSign($time),
- 'id' => $this->uuid4(),
- 'scope' => 'all'
- );
- $params[ 'grant_type' ] = 'client_credentials';
- if (!empty($code)) {
- $params[ 'code' ] = $code;
- $params[ 'grant_type' ] = 'authorization_code';
- }
-
- $url = sprintf("%s/%s", $this->requestUrl, 'oauth/oauth');
- return $this->send($params, $url);
- }
-
-
- public function getTokenBySecret($machineCode, $secret, $secretType = 0)
- {
- $time = time();
- $params = array(
- 'client_id' => $this->clientId,
- 'timestamp' => $time,
- 'sign' => $this->getSign($time),
- 'id' => $this->uuid4(),
- 'machine_code' => $machineCode,
- 'scope' => 'all'
- );
- if ($secretType == 1) {
- $params[ 'qr_key' ] = $secret;
- } else {
- $params[ 'msign' ] = $secret;
- }
-
- $url = sprintf("%s/%s", $this->requestUrl, 'oauth/scancodemodel');
- return $this->send($params, $url);
- }
-
- public function refreshToken($refreshToken)
- {
- $time = time();
- $params = array(
- 'client_id' => $this->clientId,
- 'timestamp' => $time,
- 'sign' => $this->getSign($time),
- 'id' => $this->uuid4(),
- 'scope' => 'all',
- 'grant_type' => 'refresh_token',
- 'refresh_token' => $refreshToken,
- );
-
- $url = sprintf("%s/%s", $this->requestUrl, 'oauth/oauth');
- return $this->send($params, $url);
- }
-
-
- public function getSign($timestamp)
- {
- return md5(
- $this->clientId .
- $timestamp .
- $this->clientSecret
- );
- }
-
-
- public function uuid4()
- {
- mt_srand(mt_rand());
- $charid = strtolower(md5(uniqid(rand(), true)));
- $hyphen = '-';
- $uuidV4 =
- substr($charid, 0, 8) . $hyphen .
- substr($charid, 8, 4) . $hyphen .
- substr($charid, 12, 4) . $hyphen .
- substr($charid, 16, 4) . $hyphen .
- substr($charid, 20, 12);
- return $uuidV4;
- }
-
-
- public function send($data, $url)
- {
- $requestInfo = http_build_query($data);
- $log = $this->log;
- if ($log != null) {
- $log->info("request data: " . $requestInfo);
- }
- $curl = curl_init(); // 启动一个CURL会话
- curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
- curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Expect:' )); // 解决数据包大不能提交
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
- curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
- curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
- curl_setopt($curl, CURLOPT_POSTFIELDS, $requestInfo); // Post提交的数据包
- curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循
- curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
- $requestResponse = curl_exec($curl); // 执行操作
- $response = json_decode($requestResponse);
- if (curl_errno($curl)) {
- if ($log != null) {
- $log->error("error: " . curl_error($curl));
- }
- throw new Exception(curl_error($curl));
- }
- if (is_null($response)) {
- throw new Exception("illegal response :" . $requestResponse);
- }
-
- if ($response->error != 0 && $response->error_description != 'success') {
- throw new Exception($response->error_description);
- }
- if ($this->log != null) {
- $this->log->info("response: " . json_encode($response));
- }
- curl_close($curl); // 关键CURL会话
- return $response->body; // 返回数据
- }
-
-
-}
diff --git a/niucloud/core/core/printer/sdk/yilianyun/protocol/YlyRpcClient.php b/niucloud/core/core/printer/sdk/yilianyun/protocol/YlyRpcClient.php
deleted file mode 100644
index 4099af9b..00000000
--- a/niucloud/core/core/printer/sdk/yilianyun/protocol/YlyRpcClient.php
+++ /dev/null
@@ -1,104 +0,0 @@
-clientId = $config->getClientId();
- $this->clientSecret = $config->getClientSecret();
- $this->requestUrl = $config->getRequestUrl();
- $this->log = $config->getLog();
- $this->token = $token;
- }
-
-
- public function call($action, array $params)
- {
- $time = time();
- $params = array_merge(array(
- 'client_id' => $this->clientId,
- 'timestamp' => $time,
- 'sign' => $this->getSign($time),
- 'id' => $this->uuid4(),
- 'access_token' => $this->token,
- ), $params);
-
- $result = $this->send($params, $this->requestUrl . '/' . $action);
- $response = json_decode($result, false, 512, JSON_BIGINT_AS_STRING);
-
- return $response;
- }
-
-
- public function getSign($timestamp)
- {
- return md5(
- $this->clientId .
- $timestamp .
- $this->clientSecret
- );
- }
-
-
- public function uuid4()
- {
- mt_srand(mt_rand());
- $charid = strtolower(md5(uniqid(rand(), true)));
- $hyphen = '-';
- $uuidV4 =
- substr($charid, 0, 8) . $hyphen .
- substr($charid, 8, 4) . $hyphen .
- substr($charid, 12, 4) . $hyphen .
- substr($charid, 16, 4) . $hyphen .
- substr($charid, 20, 12);
- return $uuidV4;
- }
-
-
- public function send($data, $url)
- {
- $requestInfo = http_build_query($data);
- $log = $this->log;
- if ($log != null) {
- $log->info("request data: " . $requestInfo);
- }
- $curl = curl_init(); // 启动一个CURL会话
- curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
- curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Expect:' )); // 解决数据包大不能提交
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
- curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
- curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
- curl_setopt($curl, CURLOPT_POSTFIELDS, $requestInfo); // Post提交的数据包
- curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循
- curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
- $response = curl_exec($curl); // 执行操作
- if (curl_errno($curl)) {
- if ($log != null) {
- $log->error("error: " . curl_error($curl));
- }
- throw new Exception(curl_error($curl));
- }
- if ($log != null) {
- $log->info("response: " . $response);
- }
- curl_close($curl); // 关键CURL会话
- return $response; // 返回数据
- }
-
-
-}
diff --git a/niucloud/core/core/sms/Aliyun.php b/niucloud/core/core/sms/Aliyun.php
deleted file mode 100644
index dc66a8ef..00000000
--- a/niucloud/core/core/sms/Aliyun.php
+++ /dev/null
@@ -1,98 +0,0 @@
-app_key = $config[ 'app_key' ] ?? '';
- $this->secret_key = $config[ 'secret_key' ] ?? '';
- $this->sign = $config[ 'sign' ] ?? '';
- }
-
-
- /**
- * 发送短信
- * @param string $mobile
- * @param string $template_id
- * @param array $data
- * @return array
- */
- public function send(string $mobile, string $template_id, array $data = [])
- {
- try {
- AlibabaCloud::accessKeyClient($this->app_key, $this->secret_key)
- ->regionId('cn-hangzhou')
- ->asDefaultClient();
- $result = AlibabaCloud::rpcRequest()
- ->product('Dysmsapi')
- ->host('dysmsapi.aliyuncs.com')
- ->version('2017-05-25')
- ->action('SendSms')
- ->method('POST')
- ->debug(false)
- ->options([
- 'query' => [
- 'PhoneNumbers' => $mobile,
- 'SignName' => $this->sign,
- 'TemplateCode' => $template_id,
- 'TemplateParam' => json_encode($data, JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE),
- ],
- ])
- ->request();
-
- $res = $result->toArray();
- if (isset($res[ 'Code' ]) && $res[ 'Code' ] == 'OK') {
- return $res;
- }
- $message = $res[ 'Message' ] ?? $res;
- throw new NoticeException($message);
- } catch (Exception $e) {
- throw new NoticeException($e->getMessage());
- }
- }
-
- public function modify(string $sign, string $mobile, string $code)
- {
- }
-
- public function template(int $page = 0, int $limit = 10, int $type = 1)
- {
- }
-
- public function apply(string $title, string $content, int $type)
- {
- }
-
- public function localTemplate(int $type, int $page, int $limit)
- {
- }
-
- public function record($id)
- {
- }
-}
\ No newline at end of file
diff --git a/niucloud/core/core/sms/BaseSms.php b/niucloud/core/core/sms/BaseSms.php
deleted file mode 100644
index 4559cf23..00000000
--- a/niucloud/core/core/sms/BaseSms.php
+++ /dev/null
@@ -1,83 +0,0 @@
-secret_id = $config[ 'secret_id' ] ?? '';
- $this->secret_key = $config[ 'secret_key' ] ?? '';
- $this->sign = $config[ 'sign' ] ?? '';
- $this->app_id = $config[ 'app_id' ] ?? '';
- }
-
-
- /**
- * 发送短信
- * @return bool|mixed
- */
- public function send(string $mobile, string $template_id, array $data = [])
- {
- try {
- $cred = new Credential($this->secret_id, $this->secret_key);
- $httpProfile = new HttpProfile();
- $httpProfile->setEndpoint("sms.tencentcloudapi.com");
-
- $clientProfile = new ClientProfile();
- $clientProfile->setHttpProfile($httpProfile);
-
- $client = new SmsClient($cred, 'ap-guangzhou', $clientProfile);
- $params = [
- 'PhoneNumberSet' => [ '+86' . $mobile ],
- 'TemplateID' => $template_id,
- 'Sign' => $this->sign,
- 'TemplateParamSet' => $data,
- 'SmsSdkAppid' => $this->app_id,
- ];
- $req = new SendSmsRequest();
- $req->fromJsonString(json_encode($params, JSON_THROW_ON_ERROR));
- $resp = json_decode($client->SendSms($req)->toJsonString(), true, 512, JSON_THROW_ON_ERROR);
- if (isset($resp[ 'SendStatusSet' ]) && $resp[ 'SendStatusSet' ][ 0 ][ 'Code' ] == 'Ok') {
- return $resp;
- } else {
- $message = $res[ 'SendStatusSet' ][ 0 ][ 'Message' ] ?? json_encode($resp, JSON_THROW_ON_ERROR);
- throw new CommonException($message);
- }
- } catch (Exception $e) {
- throw new NoticeException($e->getMessage());
- }
- }
-
-
- public function modify(string $sign, string $mobile, string $code)
- {
- }
-
- public function template(int $page = 0, int $limit = 15, int $type = 1)
- {
- }
-
- public function apply(string $title, string $content, int $type)
- {
- }
-
- public function localTemplate(int $type, int $page, int $limit)
- {
- }
-
- public function record($id)
- {
- }
-}
\ No newline at end of file
diff --git a/niucloud/core/core/template/BaseTemplate.php b/niucloud/core/core/template/BaseTemplate.php
deleted file mode 100644
index 73d5a978..00000000
--- a/niucloud/core/core/template/BaseTemplate.php
+++ /dev/null
@@ -1,60 +0,0 @@
-postJson('cgi-bin/message/subscribe/send', [
- 'template_id' => $data['template_id'], // 所需下发的订阅模板id
- 'touser' => $data['openid'], // 接收者(用户)的 openid
- 'page' => $data['page'], // 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
- 'data' => $data['data'],
- ]);
- }
-
- /**
- * 添加模板消息
- * @param array $data
- * @return array|Collection|object|ResponseInterface|string
- * @throws GuzzleException
- * @throws InvalidConfigException
- */
- public function addTemplate(array $data)
- {
- $api = CoreWeappService::appApiClient();
- return $api->postJson('wxaapi/newtmpl/addtemplate', [
- 'tid' => $data['tid'],
- 'kidList' => $data['kid_list'],
- 'sceneDesc' => $data['scene_desc'],
- ]);
- }
-
- /**
- * 删除
- * @param array $data
- * @return array|Collection|object|ResponseInterface|string
- * @throws GuzzleException
- * @throws InvalidConfigException
- */
- public function delete(array $data)
- {
- $api = CoreWeappService::appApiClient();
- return $api->postJson('wxaapi/newtmpl/deltemplate', [
- 'priTmplId' => $data['template_id'],
- ]);
- }
-
- /**
- * 获取
- * @return void
- */
- public function get()
- {
-
- }
-}
diff --git a/niucloud/core/core/template/Wechat.php b/niucloud/core/core/template/Wechat.php
deleted file mode 100644
index f9aea6f7..00000000
--- a/niucloud/core/core/template/Wechat.php
+++ /dev/null
@@ -1,111 +0,0 @@
- $v){
- $temp_data[$k] = ['value' => $v];
- }
-
- if (!empty($first)) $data[ 'first' ] = $first;
- if (!empty($remark)) $data[ 'remark' ] = $remark;
- $api = CoreWechatService::appApiClient();
- $param = [
- 'touser' => $openid,
- 'template_id' => $template_id,
- 'url' => $url,
- 'miniprogram' => $miniprogram,
- 'data' => $temp_data,
- ];
- if(!empty($client_msg_id)){
- $param['client_msg_id'] = $client_msg_id;
- }
- return $api->postJson('cgi-bin/message/template/send', $param);
- }
-
- /**
- * 添加模板消息
- * @param array $data
- * @return array|Collection|object|ResponseInterface|string
- * @throws GuzzleException
- * @throws InvalidConfigException
- */
- public function addTemplate(array $data)
- {
- $api = CoreWechatService::appApiClient();
- return $api->postJson('cgi-bin/template/api_add_template', [
- 'template_id_short' => $data[ 'shortId' ],
- 'keyword_name_list' => $data[ 'keyword_name_list' ]
- ]);
- }
-
- /**
- * 删除
- * @param array $data
- * @return array|Collection|object|ResponseInterface|string
- * @throws GuzzleException
- * @throws InvalidConfigException
- */
- public function delete(array $data)
- {
- $api = CoreWechatService::appApiClient();
-
- return $api->postJson('cgi-bin/template/del_private_template', [
- 'template_id' => $data[ 'templateId' ],
- ]);
- }
-
- /**
- * 获取
- * @return void
- */
- public function get()
- {
-
- }
-}
diff --git a/niucloud/core/core/upload/Aliyun.php b/niucloud/core/core/upload/Aliyun.php
deleted file mode 100644
index 238a4c97..00000000
--- a/niucloud/core/core/upload/Aliyun.php
+++ /dev/null
@@ -1,133 +0,0 @@
-config['access_key'];
- $access_key_secret = $this->config['secret_key'];
-
- $endpoint = $this->config['endpoint'];// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
- return new OssClient($access_key_id, $access_key_secret, $endpoint);
- }
-
- /**
- * 执行上传
- * @param string $dir
- * @return true
- */
- public function upload(string $dir)
- {
- $this->validate();
- $bucket = $this->config['bucket'];
- try {
- $this->client()->uploadFile(
- $bucket,
- $this->getFullPath($dir),
- $this->getRealPath()
- );
- return true;
- } catch ( OssException $e ) {
- throw new UploadFileException($e->getMessage());
- }
-
- }
-
- /**
- * base64上云
- * @param string $base64_data
- * @param string|null $key
- * @return true
- */
- public function base64(string $base64_data, ?string $key = null)
- {
- $bucket = $this->config['bucket'];
- try {
- $base64_file = base64_decode($base64_data);
- if (!$base64_file) throw new UploadFileException('FILE_ERROR');
- $this->client()->putObject(
- $bucket,
- $key,
- $base64_file
- );
- return true;
- } catch ( OssException $e ) {
- throw new UploadFileException($e->getMessage());
- }
- }
- /**
- * Notes: 抓取远程资源
- * @param string $url
- * @param string|null $key
- * @return true
- */
- public function fetch(string $url, ?string $key = null)
- {
- $bucket = $this->config['bucket'];
- try {
- $content = file_get_contents($url);
- $this->client()->putObject(
- $bucket,
- $key,
- $content
- );
- return true;
- } catch ( OssException $e ) {
- throw new UploadFileException($e->getMessage());
- }
-
- }
-
- /**
- * 删除文件
- * @param string $file_name
- * @return true
- */
- public function delete(string $file_name)
- {
- $bucket = $this->config['bucket'];
- try {
- $this->client()->deleteObject($bucket, $file_name);
- return true;
- } catch ( OssException $e ) {
- throw new UploadFileException($e->getMessage());
- }
-
- }
-
- public function thumb($file_path, $thumb_type)
- {
- $thumb_config = config('upload.thumb.thumb_type');
- $thumb_data = [];
- foreach ($thumb_config as $k => $v) {
- if ($thumb_type == 'all' || $thumb_type == $k || (is_array($thumb_type) && in_array($k, $thumb_type))) {
- $width = $v['width'];
- $height = $v['height'];
- //拼装缩略路径
- $item_thumb = $file_path . '?x-oss-process=image/resize,h_' . $height . ',w_' . $width;
- $thumb_data[$k] = $item_thumb;
- }
- }
-
- return $thumb_data;
- }
-
-}
diff --git a/niucloud/core/core/upload/BaseUpload.php b/niucloud/core/core/upload/BaseUpload.php
deleted file mode 100644
index 6e367e7d..00000000
--- a/niucloud/core/core/upload/BaseUpload.php
+++ /dev/null
@@ -1,240 +0,0 @@
-config = $config;
- $this->storage_type = $config['storage_type'];
- }
-
- /**
- * 附件上传
- * @param string $dir
- * @return mixed
- */
- abstract protected function upload(string $dir);
-
- /**
- * 抓取远程附件
- * @param string $url
- * @param string|null $key
- * @return mixed
- */
- abstract protected function fetch(string $url, ?string $key);
-
- /**
- * base64文件上云
- * @param string $base64_data
- * @param string|null $key
- * @return mixed
- */
- abstract protected function base64(string $base64_data, ?string $key = null);
- /**
- * 附件删除
- * @param string $file_name
- * @return mixed
- */
- abstract protected function delete(string $file_name);
-
- /**
- * 缩略图
- * @param string $file_path
- * @param $thumb_type
- * @return mixed
- */
- abstract protected function thumb(string $file_path, $thumb_type);
-
- /**
- * 读取文件
- * @param string $name
- * @param bool $is_rename
- */
- public function read(string $name, bool $is_rename = true)
- {
- $this->name = $name;
- $this->file = request()->file($name);
- if (empty($this->file))
- throw new UploadFileException(100012);
- $this->file_info = [
- 'name' => $this->file->getOriginalName(),//文件原始名称
- 'mime' => $this->file->getOriginalMime(),//上传文件类型信息
- 'real_path' => $this->file->getRealPath(),//上传文件真实路径
- 'ext' => $this->file->getOriginalExtension(),//上传文件后缀
- 'size' => $this->file->getSize(),//上传文件大小
- ];
- if ($is_rename) {
- $this->file_name = $this->createFileName();
- } else {
- $this->file_name = $this->file_info['name'];
- }
-
- }
-
- /**
- * 设置文件类型
- * @param string $type
- * @return $this
- */
- public function setType(string $type)
- {
- $this->type = $type;
- return $this;
- }
-
- /**
- * 校验文件是否合法
- */
- public function check()
- {
-
- }
-
- /**
- * 生成新的文件名
- * @return string
- */
- public function createFileName(string $key = '', string $ext = '')
- {
- //DIRECTORY_SEPARATOR 常量
- $storage_tag = '_' . $this->storage_type;
- if (empty($key)) {
- return time() . md5($this->file_info['real_path']) . $storage_tag . '.' . $this->file_info['ext'];
- } else {
- return time() . md5($key) . $storage_tag . '.' . $ext;
- }
-
- }
-
- /**
- * 获取原始附件信息
- * @return mixed
- */
- public function getFileInfo()
- {
- return $this->file_info;
- }
-
- /**
- * 获取上传文件的真实完整路径
- * @return mixed
- */
- public function getRealPath()
- {
- return $this->file_info['real_path'];
- }
-
- /**
- * 获取生成的文件完整地址
- * @return string
- */
- public function getFullPath(string $dir = '')
- {
- return $this->full_path ?: $this->concatFullPath($dir);
- }
-
- /**
- * 合并路径和文件名
- * @param string $dir
- * @return string
- */
- public function concatFullPath(string $dir = '')
- {
- $this->full_path = implode('/', array_filter([$dir, $this->getFileName()]));
- return $this->full_path;
- }
-
- /**
- * 获取文件名
- * @return mixed
- */
- public function getFileName()
- {
- return $this->file_name;
- }
-
- public function getUrl(string $path = '')
- {
- $path = !empty($path) ? $path : $this->getFullPath();
- $domain = $this->config['domain'] ?? '';
- $domain = empty($domain) ? '' : $domain . '/';
- return $domain . $path;
- }
-
- /**
- * 验证
- * @param array $validate
- * @return $this
- */
- public function setValidate(array $validate = [])
- {
- $this->validate = $validate ?: config('upload.rules')[$this->type] ?? [];
- return $this;
- }
-
- /**
- * 根据上传文件的类型来校验文件是否符合配置
- * @return void
- */
- public function validate()
- {
- if (empty($this->file))
- throw new UploadFileException('UPLOAD_FAIL');
- $config['file_ext'] = $this->validate['ext'] ?? [];
- $config['file_mime'] = $this->validate['mime'] ?? [];
- $config['file_size'] = $this->validate['size'] ?? 0;
- $rule = [];
- $file_size = $config['file_size'] ?? 0;
- if ($file_size > 0) {
- $rule[] = 'fileSize:' . $file_size;
- }
- //验证上传文件类型
- $file_mime = $config['file_mime'] ?? [];
- $file_ext = $config['file_ext'] ?? [];
- if (!empty($file_ext)) {
- $rule[] = 'fileExt:' . implode(',', $file_ext);
- }
- if (!empty($rule)) {
- if (!in_array($this->file->getOriginalMime(), $file_mime)) {
- throw new UploadFileException('UPLOAD_TYPE_NOT_SUPPORT');
- }
- validate([$this->name => implode('|', $rule)])->check([$this->name => $this->file]);
- }
-
- }
-}
diff --git a/niucloud/core/core/upload/Local.php b/niucloud/core/core/upload/Local.php
deleted file mode 100644
index 872baa30..00000000
--- a/niucloud/core/core/upload/Local.php
+++ /dev/null
@@ -1,253 +0,0 @@
- 'top-left',
- 'top-center' => 'top-center',
- 'top-right' => 'top-right',
- 'center-left' => 'center-left',
- 'center' => 'center',
- 'center-right' => 'center-right',
- 'bottom-left' => 'bottom-left',
- 'bottom-center' => 'bottom-center',
- 'bottom-right' => 'bottom-right',
- );
-
- protected function initialize(array $config = [])
- {
- parent::initialize($config);
-
- }
-
- public function upload(string $dir)
- {
- $this->validate();
-
- mkdirs_or_notexist($dir, 0777);
- $this->file->move($dir, $this->file_name);
- //错误一般是已经被抛出了
- return true;
- }
-
-
- /**
- * 远程获取图片
- * @param string $url
- * @param string|null $key
- * @return true
- */
- public function fetch(string $url, ?string $key)
- {
- try {
- mkdirs_or_notexist(dirname($key), 0777);
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- $content = curl_exec($ch);
- curl_close($ch);
- // $content = @file_get_contents($url);//file_get_contents下载网络图片慢,更换为curl下载
- if (!empty($content)) {
- file_put_contents($key, $content);
-
-
- $image_info = getimagesize($key);
- $image_type = $image_info[2];
-// if($image_type == IMAGETYPE_JPEG){
-// // 保存图片为PNG格式
-// $image = imagecreatefromjpeg($key);
-// }else if($image_type == IMAGETYPE_PNG){
-// // 保存图片为PNG格式
-// $image = imagecreatefrompng($key);
-// }
- if($image_type == IMAGETYPE_WEBP){
- // 保存图片为PNG格式
- $image = imagecreatefromwebp($key);
- }
- // 创建图片资源
- // 检查图片是否创建成功
- if (!empty($image)){
-
- // 图片类型常量定义:IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF
- if ($image_type == IMAGETYPE_WEBP) {
- $temp_arr = explode('.', $key);
- $ext = end($temp_arr);
- if($ext == 'jpg' || $ext == 'jpeg'){
- // 保存图片为PNG格式
- imagejpeg($image, $key);
- }else if($ext = 'png'){
- // 保存图片为PNG格式
- imagepng($image, $key);
- }
- }
- // 释放内存
- imagedestroy($image);
- }
-
- } else {
- throw new UploadFileException(203006);
- }
- return true;
- } catch ( Exception $e ) {
- throw new UploadFileException($e->getMessage());
- }
- }
-
- /**
- * base64转图片
- * @param string $content
- * @param string|null $key
- * @return true
- */
- public function base64(string $content, ?string $key = null)
- {
-
- mkdirs_or_notexist(dirname($key));
- file_put_contents(url_to_path($key), base64_decode($content));
- return true;
- }
-
- /**
- * 删除本地附件
- * @param string $file_name
- * @return bool
- */
- public function delete(string $file_name)
- {
- $file_path = url_to_path($file_name);
- if (file_exists($file_path)) {
- $result = unlink($file_path);
-// throw new UploadFileException(100013);
- }else{
- $result = true;
- }
- //顺便删除相关的缩略图
- $dirname = dirname($file_name);
- $file_list = [];
- search_dir($dirname, $file_list);
- if(!empty($file_list)){
- $file_arr = explode('/', $file_name);
- $only_file_name = end($file_arr);
- foreach($file_list as $v){
- if(str_contains($v, $only_file_name) && file_exists($v)){
- unlink($v);
- }
- }
- }
- return $result;
- }
-
- /**
- * 缩略图
- * @param $file_path
- * @param $thumb_type
- * @return array
- * @throws Exception
- */
- public function thumb($file_path, $thumb_type)
- {
- //todo 判断缩略图是否存在
- $thumb_config = config('upload.thumb.thumb_type');
- // ……
- //获取文件原名 获取
- $file_arr = explode('/', $file_path);
- $file_name = end($file_arr);
- $thumb_list = [];
- //获取文件后缀
- foreach ($thumb_config as $k => $v) {
- if ($thumb_type == 'all' || $thumb_type == $k || (is_array($thumb_type) && in_array($k, $thumb_type))) {
- $new_width = $v['width'];
- $new_height = $v['height'];
- $new_thumb_path = str_replace($file_name, $new_width . 'x' . $new_height . '_' . $file_name, $file_path);
-
- if (!file_exists($new_thumb_path)) {
- $editor = Grafika::createEditor();
- $editor->open($image, $file_path);
- $editor->resizeFit($image, $new_width, $new_height);
- //新缩略图文件名称
- $editor->save($image, $new_thumb_path, null, null, false, 0777);
- }
- $thumb_list[$k] = $new_thumb_path;
- }
-
- }
- return $thumb_list;
- }
-
- /**
- * 图片水印
- * @param $file_path
- * @return mixed
- * @throws Exception
- */
- public function water($file_path)
- {
- $water_config = [];
- if (!empty($water_config)) {
- $status = $water_config['status'];//是否启用
- if ($status) {
- $editor = Grafika::createEditor();
- $editor->open($image, $file_path);
- if ($water_config['type'] == 'image') {
- $water_image = $water_config['image'];
- if (!empty($water_image)) {
- //判断水印图片是否是本地图片
- if (check_file_is_remote($water_image)) {
- $file_arr = explode('.', $water_image);
- $ext_name = end($file_arr);
- $name = $this->createFileName($water_image, $ext_name);
- $watermark_image = 'upload/water/' . $name;
- $this->fetch($water_image, $watermark_image);
- }
- if (file_exists($water_image)) {
-
- }
- $editor->open($image1, $water_config['image']);
- $editor->blend($image, $image1, 'normal', $water_config['opacity'], $this->position[$water_config['position']], $water_config['offset_x'], $water_config['offset_y']);
- }
- } else {
- if ($water_config['text']) {
- $position = $this->position[$water_config['position']];
- $offset_x = $water_config['offset_x'];//水平偏移值
- $offset_y = $water_config['offset_y'];//垂直偏移值
- $width = $image->getWidth();
- $height = $image->getHeight();
-
- //获取文字信息
- $info = imagettfbbox($water_config['size'], $water_config['angle'], $water_config['font'], $water_config['text']);
- $minx = min($info[0], $info[2], $info[4], $info[6]);
- $maxx = max($info[0], $info[2], $info[4], $info[6]);
- $miny = min($info[1], $info[3], $info[5], $info[7]);
- $maxy = max($info[1], $info[3], $info[5], $info[7]);
- /* 计算文字初始坐标和尺寸 */
- $x = $minx;
- $y = abs($miny);
- $w = $maxx - $minx;
- $h = $maxy - $miny;
- //转化坐标
- $position = new Position($position, $offset_x, $offset_y);
- // Position is for $image2. $image1 is canvas.
- list($offset_x, $offset_y) = $position->getXY($width, $height, $w, $h);
-
- $editor->text($image, $water_config['text'], $water_config['size'], $offset_x, $offset_y, new Color($water_config['color']), $water_config['font'], $water_config['angle']);
- }
- $editor->save($image, $file_path);
-
-
- }
- }
- return $file_path;
- }
- }
-}
diff --git a/niucloud/core/core/upload/Qiniu.php b/niucloud/core/core/upload/Qiniu.php
deleted file mode 100644
index ea3ecbdf..00000000
--- a/niucloud/core/core/upload/Qiniu.php
+++ /dev/null
@@ -1,180 +0,0 @@
- 'NorthWest',
- 'top-center' => 'North',
- 'top-right' => 'NorthEast',
- 'center-left' => 'West',
- 'center' => 'Center',
- 'center-right' => 'East',
- 'bottom-left' => 'SouthWest',
- 'bottom-center' => 'South',
- 'bottom-right' => 'SouthEast',
- );
-
- protected function initialize(array $config = [])
- {
- parent::initialize($config);
- }
-
- /**
- * 获取一个鉴权对象
- * @return Auth
- */
- public function auth()
- {
- $access_key = $this->config['access_key'];
- $secret_key = $this->config['secret_key'];
- return new Auth($access_key, $secret_key);
- }
-
- /**
- * @throws Exception
- */
- public function upload(string $dir)
- {
- $this->validate();
- $bucket = $this->config['bucket'];
- //todo 这儿可以定义凭证的过期时间
- $up_token = $this->auth()->uploadToken($bucket);
- // 初始化 UploadManager 对象并进行文件的上传。
- $upload_mgr = new UploadManager();
- [$ret, $err] = $upload_mgr->putFile($up_token, $this->getFullPath($dir), $this->getRealPath());
- if ($err !== null)
- throw new UploadFileException($err->message());
- return true;
- }
-
- /**
- * 抓取网络资源到空间
- * @param string $url
- * @param string|null $key
- * @return true
- * @throws Exception
- */
- public function fetch(string $url, ?string $key = null)
- {
- $bucket = $this->config['bucket'];
- $auth = $this->auth();
- if (!str_contains($url, 'http://') && !str_contains($url, 'https://')) {
- $token = $auth->uploadToken($bucket);
- $upload_mgr = new UploadManager();
- [$ret, $err] = $upload_mgr->putFile($token, $key, $url);
- } else {
- //抓取网络资源到空间
- $bucket_manager = new BucketManager($auth);
- [$ret, $err] = $bucket_manager->fetch($url, $bucket, $key);//不指定key时,以文件内容的hash作为文件名
- }
-
- if ($err !== null)
- throw new UploadFileException($err->message());
- return true;
- }
-
- /**
- * base64资源上传
- * @param string $base64_data
- * @param string|null $key
- * @return true
- */
- public function base64(string $base64_data, ?string $key = null)
- {
- $bucket = $this->config['bucket'];
- $auth = $this->auth();
- $up_token = $this->auth()->uploadToken($bucket);
- // 初始化 UploadManager 对象并进行文件的上传。
- $upload_mgr = new UploadManager();
- //将 base64 编码的图片数据解码
- $base64_file = base64_decode($base64_data);
- if (!$base64_file) throw new UploadFileException('FILE_ERROR');
- // 初始化 UpLoadManager 对象并进行文件的上传
- list($ret, $err) = $upload_mgr->put($up_token, $key, $base64_file);
- if ($err !== null) throw new UploadFileException($err->message);
- return true;
- }
-
- /**
- * 删除空间中的文件
- * @param string $file_name
- * @return true
- */
- public function delete(string $file_name)
- {
- $bucket = $this->config['bucket'];
- $auth = $this->auth();
- $config = new Config();
- $bucket_manager = new BucketManager($auth, $config);
- [$ret, $err] = $bucket_manager->delete($bucket, $file_name);
- if ($err !== null)
- throw new UploadFileException($err->message());
- return true;
- }
-
- public function thumb($file_path, $thumb_type)
- {
-// mageView2/1/w/400/h/600/q/85
- $thumb_config = config('upload.thumb.thumb_type');
- $thumb_data = [];
- foreach ($thumb_config as $k => $v) {
- if ($thumb_type == 'all' || $thumb_type == $k || (is_array($thumb_type) && in_array($k, $thumb_type))) {
-// ?x-oss-process=image/resize,m_fill,w_200,h_600,quality,q_60
- $width = $v['width'];
- $height = $v['height'];
- //拼装缩略路径
- $item_thumb = $file_path . '?imageView2/2/w/' . $width . '/h/' . $height;
- $thumb_data[$k] = $item_thumb;
- }
- }
-
- return $thumb_data;
- }
-
-
- /**
- * 图片水印
- * @param $file_path
- * @return mixed
- * @throws Exception
- */
- public function water($file_path)
- {
- $water_config = [];
- $water_path = $file_path;
- if (!empty($water_config)) {
- $status = $water_config['status'];//是否启用
- if ($status) {
- //判断当前的云图片是否存在?,存在符号的话需要用|连接
- if (str_contains($file_path, '?')) {
- $water_path .= '|watermark';
- } else {
- $water_path .= '?watermark';
- }
- if ($water_config['type'] == 'image') {
- $water_image = $water_config['image'];
- if (!empty($water_image)) {
- $water_path .= '/1/image/' . base64_encode($water_image) . '/gravity/' . $this->position[$water_config['position']] . '/dissolve/' . $water_config['opacity'] . '/dx/' . $water_config['offset_x'] . '/dy/' . $water_config['offset_y'];
- }
- } else {
- $water_path .= '/2/text/' . base64_encode($water_config['text']) . '/font/' . base64_encode($water_config['font']) . '/fill/' . base64_encode($water_config['color']) . '/fontsize/' . $water_config['size'] . '/gravity/' . $this->position[$water_config['position']] . '/dx/' . $water_config['offset_x'] . '/dy/' . $water_config['offset_y'];
- }
- }
- }
- return $water_path;
- }
-
-}
\ No newline at end of file
diff --git a/niucloud/core/core/upload/Tencent.php b/niucloud/core/core/upload/Tencent.php
deleted file mode 100644
index a5b03ceb..00000000
--- a/niucloud/core/core/upload/Tencent.php
+++ /dev/null
@@ -1,195 +0,0 @@
- 'northwest',
- 'top-center' => 'north',
- 'top-right' => 'northeast',
- 'center-left' => 'west',
- 'center' => 'center',
- 'center-right' => 'east',
- 'bottom-left' => 'southwest',
- 'bottom-center' => 'south',
- 'bottom-right' => 'southeast',
- );
-
- protected function initialize(array $config = [])
- {
- parent::initialize($config);
- }
-
- /**
- * 获取服务主体
- * @return Client
- */
- public function client()
- {
- $secret_id = $this->config['access_key']; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
- $secret_key = $this->config['secret_key']; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
- $region = $this->config['region']; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
-
- return new Client(
- array(
- 'region' => $region,
-// 'schema' => 'https', //协议头部,默认为http
- 'credentials' => array(
- 'secretId' => $secret_id,
- 'secretKey' => $secret_key)
- )
- );
- }
-
-
- /**
- * 执行上传
- * @param string $dir
- * @return true
- */
- public function upload(string $dir)
- {
- $this->validate();
- $bucket = $this->config['bucket'];
- try {
- $result = $this->client()->putObject(array(
- 'Bucket' => $bucket, //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucket
- 'Key' => $this->getFullPath($dir),
- 'Body' => fopen($this->getRealPath(), 'rb'),
- ));
- // 请求成功
- return true;
- } catch ( Exception $e ) {
- throw new UploadFileException($e->getMessage());
- }
- }
-
- /**
- * base文件上云
- * @param string $base64_data
- * @param string|null $key
- * @return true
- */
- public function base64(string $base64_data, ?string $key = null)
- {
- $bucket = $this->config['bucket'];
- try {
- $base64_file = base64_decode($base64_data);
- if (!$base64_file) throw new UploadFileException('FILE_ERROR');
- $result = $this->client()->putObject(array(
- 'Bucket' => $bucket, //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucket
- 'Key' => $key,
- 'Body' => $base64_file,
- ));
- // 请求成功
- return true;
- } catch ( Exception $e ) {
- throw new UploadFileException($e->getMessage());
- }
- }
- /**
- * notes: 抓取远程资源(最大支持上传5G文件)
- * @param string $url
- * @param string|null $key
- * @return true
- */
- public function fetch(string $url, ?string $key = null)
- {
-
- $bucket = $this->config['bucket'];
- try {
- $result = $this->client()->putObject(array(
- 'Bucket' => $bucket, //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucket
- 'Key' => $key,
- 'Body' => fopen($url, 'rb'),
- ));
- // 请求成功
- return true;
- } catch ( Exception $e ) {
- throw new UploadFileException($e->getMessage());
- }
- }
-
- /**
- * 删除一个简单对象
- * @param string $file_name
- * @return true
- */
- public function delete(string $file_name)
- {
- $bucket = $this->config['bucket'];
- try {
- $this->client()->deleteObject(array(
- 'Bucket' => $bucket,
- 'Key' => $file_name
- ));
- return true;
- } catch ( Exception $e ) {
- throw new UploadFileException($e->getMessage());
- }
- }
-
- public function thumb($file_path, $thumb_type)
- {
- //腾讯云缩略图地址
-
- $thumb_config = config('upload.thumb.thumb_type');
- $thumb_data = [];
- foreach ($thumb_config as $k => $v) {
- if ($thumb_type == 'all' || $thumb_type == $k || (is_array($thumb_type) && in_array($k, $thumb_type))) {
-// ?x-oss-process=image/resize,m_fill,w_200,h_600,quality,q_60
- $width = $v['width'];
- $height = $v['height'];
- //拼装缩略路径
- $item_thumb = $file_path . '?imageMogr2/thumbnail/' . $width . 'x' . $height;
- $thumb_data[$k] = $item_thumb;
- }
- }
-
- return $thumb_data;
- }
-
-
- /**
- * 图片水印
- * @param $file_path
- * @return mixed
- * @throws Exception
- */
- public function water($file_path)
- {
- $water_config = [];
- $water_path = $file_path;
- if (!empty($water_config)) {
- $status = $water_config['status'];//是否启用
- if($status){
- //判断当前的云图片是否存在?,存在符号的话需要用|连接
- if(str_contains($file_path, '?')){
- $water_path .= '&watermark';
- }else{
- $water_path .= '?watermark';
- }
- if ($water_config['type'] == 'image') {
- $water_image = $water_config['image'];
- if(!empty($water_image)){
- //http://examples-1251000004.cos.ap-shanghai.myqcloud.com/sample.jpeg?watermark/1/image/aHR0cDovL2V4YW1wbGVzLTEyNTEwMDAwMDQucGljc2gubXlxY2xvdWQuY29tL3NodWl5aW4uanBn/gravity/southeast
- $water_path .= '/1/image/' . base64_encode($water_image) . '/gravity/' . $this->position[$water_config['position']] . '/blogo/1/dx/' . $water_config['offset_x'] . '/dy/' . $water_config['offset_y'].'/dissolve/'.$water_config['opacity'];
- }
- } else {
- //http://examples-1251000004.cos.ap-shanghai.myqcloud.com/sample.jpeg?q-sign-algorithm=&watermark/2/text/6IW-6K6v5LqRwrfkuIfosaHkvJjlm74/fill/IzNEM0QzRA/fontsize/20/dissolve/50/gravity/northeast/dx/20/dy/20/batch/1/degree/45
- $water_path .= '/2/text/' . base64_encode($water_config['text']) . '/font/' . base64_encode($water_config['font']) . '/fill/' . base64_encode($water_config['color']) . '/fontsize/' . $water_config['size'] . '/gravity/' . $this->position[$water_config['position']] . '/dx/' . $water_config['offset_x'] . '/dy/' . $water_config['offset_y'];
- }
- }
- }
- return $water_path;
- }
-}
diff --git a/niucloud/core/core/upload/UploadLoader.php b/niucloud/core/core/upload/UploadLoader.php
deleted file mode 100644
index 75175677..00000000
--- a/niucloud/core/core/upload/UploadLoader.php
+++ /dev/null
@@ -1,44 +0,0 @@
-color_black = new \BCGColor(0, 0, 0);
- $this->color_white = new \BCGColor(255, 255, 255);
- $this->size = $size;
- $this->fontPath = str_replace("\\", "/", root_path() . "core/util/barcode/font/Arial.ttf");
- $this->font = new \BCGFontFile($this->fontPath, $this->size);
- $this->content = $content;
- }
-
- //生成条形码
- public function generateBarcode($path = '', $scale = 2)
- {
- try {
- $code = new \BCGcode128();
- $code->setScale($scale);
- $code->setThickness(30); // 条形码的厚度
- $code->setForegroundColor($this->color_black); // 条形码颜色
- $code->setBackgroundColor($this->color_white); // 空白间隙颜色
- $code->setFont($this->font); //
- $code->parse($this->content); // 条形码需要的数据内容
- } catch (Exception $exception) {
- $this->drawException = $exception;
- }
-
- if ($path == '') {
- $path = 'upload/barcode';//条形码存放路径
- }
-
- if (!is_dir($path)) {
- $mode = intval('0777', 8);
- mkdir($path, $mode, true);
- chmod($path, $mode);
- }
- $path = $path . '/' . $this->content . '.png';
- if (file_exists($path)) {
- unlink($path);
- }
-
- //根据以上条件绘制条形码
- $drawing = new \BCGDrawing('', $this->color_white);
- if ($this->drawException) {
- $drawing->drawException($this->drawException);
- } else {
- $drawing->setBarcode($code);
- $drawing->setFilename($path);
- $drawing->draw();
- }
- // 生成PNG格式的图片
- $drawing->finish(\BCGDrawing::IMG_FORMAT_PNG);
- return $path;
- }
-}
-
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/DbBackup.php b/niucloud/core/core/util/DbBackup.php
deleted file mode 100644
index 5bad871b..00000000
--- a/niucloud/core/core/util/DbBackup.php
+++ /dev/null
@@ -1,532 +0,0 @@
- './backup/',
- // 数据库备份卷大小
- 'part' => 20971520,
- // 数据库备份文件是否启用压缩 0不压缩 1 压缩
- 'compress' => 0,
- // 数据库备份文件压缩级别 1普通 4 一般 9最高
- 'level' => 9,
- );
-
- /**
- * 数据库备份构造方法
- * @param array $file 备份或还原的文件信息
- * @param array $config 备份配置信息
- */
- public function __construct($config = [])
- {
- $this->config = is_array($config) && !empty($config) ? array_merge($this->config, $config) : $this->config;
- //初始化文件名
- $this->setFile();
- //初始化数据库连接参数
- $this->setDbConn();
- //检查文件是否可写
- if (!$this->checkPath($this->config['path'])) {
- throw new \Exception("The current directory is not writable");
- }
- }
-
- /**
- * 设置脚本运行超时时间
- * 0表示不限制,支持连贯操作
- */
- public function setTimeout($time = null)
- {
- if (!is_null($time)) {
- set_time_limit($time) || ini_set("max_execution_time", $time);
- }
- return $this;
- }
-
- /**
- * 设置数据库连接必备参数
- * @param array $dbconfig 数据库连接配置信息
- * @return object
- */
- public function setDbConn($dbconfig = [])
- {
- if (empty($dbconfig)) {
- $this->dbconfig = config('database.connections.'.config('database.default'));
- } else {
- $this->dbconfig = $dbconfig;
- }
- return $this;
- }
-
- /**
- * 设置备份文件名
- *
- * @param Array $file 文件名字
- * @return object
- */
- public function setFile($file = null)
- {
- if (is_null($file)) {
- $this->file = ['name' => date('Ymd-His'), 'part' => 1];
- } else {
- if (!array_key_exists("name", $file) && !array_key_exists("part", $file)) {
- $this->file = $file['1'];
- } else {
- $this->file = $file;
- }
- }
- return $this;
- }
-
- /**
- * 数据库表列表
- *
- * @param null $table
- * @param int $type
- * @return array
- */
- public function dataList($table = null, $type = 1)
- {
- if (is_null($table)) {
- $list = Db::query("SHOW TABLE STATUS");
- } else {
- if ($type) {
- $list = Db::query("SHOW FULL COLUMNS FROM {$table}");
- } else {
- $list = Db::query("show columns from {$table}");
- }
- }
-
- return array_map('array_change_key_case', $list);
- }
-
- /**
- * 数据库备份文件列表
- *
- * @return array
- */
- public function fileList()
- {
- if (!is_dir($this->config['path'])) {
- mkdir($this->config['path'], 0755, true);
- }
- $path = realpath($this->config['path']);
- $flag = \FilesystemIterator::KEY_AS_FILENAME;
- $glob = new \FilesystemIterator($path, $flag);
- $list = array();
- foreach ($glob as $name => $file) {
- if (preg_match('/^\\d{8,8}-\\d{6,6}-\\d+\\.sql(?:\\.gz)?$/', $name)) {
- $name1 = $name;
- $name = sscanf($name, '%4s%2s%2s-%2s%2s%2s-%d');
- $date = "{$name[0]}-{$name[1]}-{$name[2]}";
- $time = "{$name[3]}:{$name[4]}:{$name[5]}";
- $part = $name[6];
- if (isset($list["{$date} {$time}"])) {
- $info = $list["{$date} {$time}"];
- $info['part'] = max($info['part'], $part);
- $info['size'] = $info['size'] + $file->getSize();
- } else {
- $info['part'] = $part;
- $info['size'] = $file->getSize();
- }
- $extension = strtoupper(pathinfo($file->getFilename(), PATHINFO_EXTENSION));
- $info['name'] = $name1;
- $info['compress'] = $extension === 'SQL' ? '-' : $extension;
- $info['time'] = strtotime("{$date} {$time}");
- $list["{$date} {$time}"] = $info;
- }
- }
- return $list;
- }
-
- /**
- * 获取文件名称
- *
- * @param string $type
- * @param int $time
- * @return array|false|mixed|string
- * @throws \Exception
- */
- public function getFile($type = '', $time = 0)
- {
- //
- if (!is_numeric($time)) {
- throw new \Exception("{$time} Illegal data type");
- }
- switch ($type) {
- case 'time':
- $name = date('Ymd-His', $time).'-*.sql*';
- $path = realpath($this->config['path']).DIRECTORY_SEPARATOR.$name;
- return glob($path);
- break;
- case 'timeverif':
- $name = date('Ymd-His', $time).'-*.sql*';
- $path = realpath($this->config['path']).DIRECTORY_SEPARATOR.$name;
- $files = glob($path);
- $list = array();
- foreach ($files as $name) {
- $basename = basename($name);
- $match = sscanf($basename, '%4s%2s%2s-%2s%2s%2s-%d');
- $gz = preg_match('/^\\d{8,8}-\\d{6,6}-\\d+\\.sql.gz$/', $basename);
- $list[$match[6]] = array($match[6], $name, $gz);
- }
- $last = end($list);
- if (count($list) === $last[0]) {
- return $list;
- } else {
- throw new \Exception("File {$files['0']} may be damaged, please check again");
- }
- break;
- case 'pathname':
- return "{$this->config['path']}{$this->file['name']}-{$this->file['part']}.sql";
- break;
- case 'filename':
- return "{$this->file['name']}-{$this->file['part']}.sql";
- break;
- case 'filepath':
- return $this->config['path'];
- break;
- default:
- $arr = array(
- 'pathname' => "{$this->config['path']}{$this->file['name']}-{$this->file['part']}.sql",
- 'filename' => "{$this->file['name']}-{$this->file['part']}.sql",
- 'filepath' => $this->config['path'], 'file' => $this->file
- );
- return $arr;
- }
- }
-
- /**
- * 删除备份文件
- *
- * @param $time
- * @return mixed
- * @throws \Exception
- */
- public function delFile($time)
- {
- if ($time) {
- $file = $this->getFile('time', $time);
- array_map("unlink", $file);
- $file = $this->getFile('time', $time);
- if (count($file)) {
- throw new \Exception("File ".implode('##', $file)." deleted failed");
- } else {
- return $time;
- }
- } else {
- throw new \Exception("{$time} Time parameter is incorrect");
- }
- }
-
- /**
- * 下载备份
- *
- * @param string $time
- * @param integer $part
- * @return array|mixed|string
- */
- public function downloadFile($time, $part = 0)
- {
- $file = $this->getFile('time', $time);
- $fileName = $file[$part];
- if (file_exists($fileName)) {
- ob_end_clean();
- header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
- header('Content-Description: File Transfer');
- header('Content-Type: application/octet-stream');
- header('Content-Length: '.filesize($fileName));
- header('Content-Disposition: attachment; filename='.basename($fileName));
- readfile($fileName);
- } else {
- throw new \Exception("{$time} File is abnormal");
- }
- }
-
- public function setSqlMode() {
- Db::query("SET sql_mode = '';");
- return true;
- }
-
- /**
- * 导入表
- *
- * @param $start
- * @param $time
- * @return array|false|int
- * @throws Exception
- */
- public function import($start, $time)
- {
- //还原数据
- $this->file = $this->getFile('time', $time);
- if ($this->config['compress']) {
- $gz = gzopen($this->file[0], 'r');
- $size = 0;
- } else {
- $size = filesize($this->file[0]);
- $gz = fopen($this->file[0], 'r');
- }
- $sql = '';
- if ($start) {
- $this->config['compress'] ? gzseek($gz, $start) : fseek($gz, $start);
- }
- for ($i = 0; $i < 1000; $i++) {
- $sql .= $this->config['compress'] ? gzgets($gz) : fgets($gz);
- if (preg_match('/.*;$/', trim($sql))) {
- if (false !== Db::query($sql)) {
- $start += strlen($sql);
- } else {
- return false;
- }
- $sql = '';
- } elseif ($this->config['compress'] ? gzeof($gz) : feof($gz)) {
- return 0;
- }
- }
- return array($start, $size);
- }
-
- /**
- * 写入初始数据
- *
- * @return boolean true - 写入成功,false - 写入失败
- */
- public function backupInit()
- {
- $sql = "-- -----------------------------\n";
- $sql .= "-- Think MySQL Data Transfer \n";
- $sql .= "-- \n";
- $sql .= "-- Host : ".$this->dbconfig['hostname']."\n";
- $sql .= "-- Port : ".$this->dbconfig['hostport']."\n";
- $sql .= "-- Database : ".$this->dbconfig['database']."\n";
- $sql .= "-- \n";
- $sql .= "-- Part : #{$this->file['part']}\n";
- $sql .= "-- Date : ".date("Y-m-d H:i:s")."\n";
- $sql .= "-- -----------------------------\n\n";
- $sql .= "SET FOREIGN_KEY_CHECKS = 0;\n\n";
- return $this->write($sql);
- }
-
- /**
- * 查询单条
- * @param $sql
- * @return array|mixed
- */
- public function selectOne($sql) {
- $result = Db::query($sql);
- return $result[0] ?? [];
- }
-
- /**
- * 备份表结构
- *
- * @param string $table 表名
- * @param integer $start 起始行数
- * @return boolean false - 备份失败
- */
- public function backup($table, $start = 0)
- {
- // 备份表结构
- if (0 == $start) {
- $result = $this->selectOne("SHOW CREATE TABLE `{$table}`");
- $sql = "\n";
- $sql .= "-- -----------------------------\n";
- $sql .= "-- Table structure for `{$table}`\n";
- $sql .= "-- -----------------------------\n";
- $sql .= "DROP TABLE IF EXISTS `{$table}`;\n";
- $sql .= trim($result['Create Table']).";\n\n";
- if (false === $this->write($sql)) {
- return false;
- }
- }
- //数据总数
- $result = $this->selectOne("SELECT COUNT(*) AS count FROM `{$table}`");
- $count = $result['count'];
- //备份表数据
- if ($count) {
- //写入数据注释
- if (0 == $start) {
- $sql = "-- -----------------------------\n";
- $sql .= "-- Records of `{$table}`\n";
- $sql .= "-- -----------------------------\n";
- $this->write($sql);
- }
- //备份数据记录
- $result = Db::query("SELECT * FROM `{$table}` LIMIT {$start}, 1000");
- $sql = "INSERT INTO `{$table}` VALUES\n";
- foreach ($result as $index => $row) {
- $row = array_map(function ($item){
- return is_string($item) ? addslashes($item) : $item;
- }, $row);
- $sql .= "('".str_replace(array("\r", "\n"), array('\\r', '\\n'),
- implode("', '", $row))."')";
- $sql .= $index < (count($result) - 1) ? ",\n" : ";\n";
- }
-
- if (false === $this->write($sql)) {
- return false;
- }
- //还有更多数据
- if ($count > $start + 1000) {
- return $this->backup($table, $start + 1000);
- }
- }
- //备份下一表
- return true;
- }
-
- /**
- * 优化表
- *
- * @param String $tables 表名
- * @return String $tables
- */
- public function optimize($tables = null)
- {
- if ($tables) {
- if (is_array($tables)) {
- $tables = implode('`,`', $tables);
- $list = db ::select("OPTIMIZE TABLE `{$tables}`");
- } else {
- $list = Db::query("OPTIMIZE TABLE `{$tables}`");
- }
- if ($list) {
- return $tables;
- } else {
- throw new \Exception("data sheet'{$tables}'Repair mistakes please try again!");
- }
- } else {
- throw new \Exception("Please specify the table to be repaired!");
- }
- }
-
- /**
- * 修复表
- *
- * @param String $tables 表名
- * @return String $tables
- */
- public function repair($tables = null)
- {
- if ($tables) {
- if (is_array($tables)) {
- $tables = implode('`,`', $tables);
- $list = Db::query("REPAIR TABLE `{$tables}`");
- } else {
- $list = Db::query("REPAIR TABLE `{$tables}`");
- }
- if ($list) {
-
- return $list;
- } else {
- throw new \Exception("data sheet'{$tables}'Repair mistakes please try again!");
- }
- } else {
- throw new \Exception("Please specify the table to be repaired!");
- }
- }
-
- /**
- * 写入SQL语句
- *
- * @param string $sql 要写入的SQL语句
- * @return boolean true - 写入成功,false - 写入失败!
- */
- private function write($sql)
- {
- $size = strlen($sql);
- //由于压缩原因,无法计算出压缩后的长度,这里假设压缩率为50%,
- //一般情况压缩率都会高于50%;
- $size = $this->config['compress'] ? $size / 2 : $size;
- $this->open($size);
- return $this->config['compress'] ? @gzwrite($this->fp, $sql) : @fwrite($this->fp, $sql);
- }
-
- /**
- * 打开一个卷,用于写入数据
- *
- * @param integer $size 写入数据的大小
- */
- private function open($size)
- {
- if ($this->fp) {
- $this->size += $size;
- if ($this->size > $this->config['part']) {
- $this->config['compress'] ? @gzclose($this->fp) : @fclose($this->fp);
- $this->fp = null;
- $this->file['part']++;
- session('backup_file', $this->file);
- $this->backupInit();
- }
- } else {
- $backuppath = $this->config['path'];
- $filename = "{$backuppath}{$this->file['name']}-{$this->file['part']}.sql";
- if ($this->config['compress']) {
- $filename = "{$filename}.gz";
- $this->fp = @gzopen($filename, "a{$this->config['level']}");
- } else {
- $this->fp = @fopen($filename, 'a');
- }
- $this->size = filesize($filename) + $size;
- }
- }
-
- /**
- * 检查目录是否可写
- *
- * @param string $path 目录
- * @return boolean
- */
- protected function checkPath($path)
- {
- if (is_dir($path)) {
- return true;
- }
- if (mkdir($path, 0755, true)) {
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * 析构方法,用于关闭文件资源
- */
- public function __destruct()
- {
- if ($this->fp) {
- $this->config['compress'] ? @gzclose($this->fp) : @fclose($this->fp);
- }
- }
-
-}
diff --git a/niucloud/core/core/util/QRcode.php b/niucloud/core/core/util/QRcode.php
deleted file mode 100644
index 52c92ce7..00000000
--- a/niucloud/core/core/util/QRcode.php
+++ /dev/null
@@ -1,3312 +0,0 @@
-
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-
-
-/*
- * Version: 1.1.4
- * Build: 2010100721
- */
-
-
-
-//---- qrconst.php -----------------------------
-
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Common constants
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- // Encoding modes
-
- define('QR_MODE_NUL', -1);
- define('QR_MODE_NUM', 0);
- define('QR_MODE_AN', 1);
- define('QR_MODE_8', 2);
- define('QR_MODE_KANJI', 3);
- define('QR_MODE_STRUCTURE', 4);
-
- // Levels of error correction.
-
- define('QR_ECLEVEL_L', 0);
- define('QR_ECLEVEL_M', 1);
- define('QR_ECLEVEL_Q', 2);
- define('QR_ECLEVEL_H', 3);
-
- // Supported output formats
-
- define('QR_FORMAT_TEXT', 0);
- define('QR_FORMAT_PNG', 1);
-
- class qrstr {
- public static function set(&$srctab, $x, $y, $repl, $replLen = false) {
- $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl));
- }
- }
-
-
-
-//---- merged_config.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Config file, tuned-up for merged verion
- */
-
- define('QR_CACHEABLE', false); // use cache - more disk reads but less CPU power, masks and format templates are stored there
- define('QR_CACHE_DIR', false); // used when QR_CACHEABLE === true
- define('QR_LOG_DIR', false); // default error logs dir
-
- define('QR_FIND_BEST_MASK', true); // if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code
- define('QR_FIND_FROM_RANDOM', 2); // if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly
- define('QR_DEFAULT_MASK', 2); // when QR_FIND_BEST_MASK === false
-
- define('QR_PNG_MAXIMUM_SIZE', 1024); // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images
-
-
-
-
-//---- qrtools.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Toolset, handy and debug utilites.
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRtools {
-
- //----------------------------------------------------------------------
- public static function binarize($frame)
- {
- $len = count($frame);
- foreach ($frame as &$frameLine) {
-
- for($i=0; $i<$len; $i++) {
- $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0';
- }
- }
-
- return $frame;
- }
-
- //----------------------------------------------------------------------
- public static function tcpdfBarcodeArray($code, $mode = 'QR,L', $tcPdfVersion = '4.5.037')
- {
- $barcode_array = array();
-
- if (!is_array($mode))
- $mode = explode(',', $mode);
-
- $eccLevel = 'L';
-
- if (count($mode) > 1) {
- $eccLevel = $mode[1];
- }
-
- $qrTab = QRcode::text($code, false, $eccLevel);
- $size = count($qrTab);
-
- $barcode_array['num_rows'] = $size;
- $barcode_array['num_cols'] = $size;
- $barcode_array['bcode'] = array();
-
- foreach ($qrTab as $line) {
- $arrAdd = array();
- foreach(str_split($line) as $char)
- $arrAdd[] = ($char=='1')?1:0;
- $barcode_array['bcode'][] = $arrAdd;
- }
-
- return $barcode_array;
- }
-
- //----------------------------------------------------------------------
- public static function clearCache()
- {
- self::$frames = array();
- }
-
- //----------------------------------------------------------------------
- public static function buildCache()
- {
- QRtools::markTime('before_build_cache');
-
- $mask = new QRmask();
- for ($a=1; $a <= QRSPEC_VERSION_MAX; $a++) {
- $frame = QRspec::newFrame($a);
- if (QR_IMAGE) {
- $fileName = QR_CACHE_DIR.'frame_'.$a.'.png';
- QRimage::png(self::binarize($frame), $fileName, 1, 0);
- }
-
- $width = count($frame);
- $bitMask = array_fill(0, $width, array_fill(0, $width, 0));
- for ($maskNo=0; $maskNo<8; $maskNo++)
- $mask->makeMaskNo($maskNo, $width, $frame, $bitMask, true);
- }
-
- QRtools::markTime('after_build_cache');
- }
-
- //----------------------------------------------------------------------
- public static function log($outfile, $err)
- {
- if (QR_LOG_DIR !== false) {
- if ($err != '') {
- if ($outfile !== false) {
- file_put_contents(QR_LOG_DIR.basename($outfile).'-errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND);
- } else {
- file_put_contents(QR_LOG_DIR.'errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND);
- }
- }
- }
- }
-
- //----------------------------------------------------------------------
- public static function dumpMask($frame)
- {
- $width = count($frame);
- for($y=0;$y<$width;$y++) {
- for($x=0;$x<$width;$x++) {
- echo ord($frame[$y][$x]).',';
- }
- }
- }
-
- //----------------------------------------------------------------------
- public static function markTime($markerId)
- {
- list($usec, $sec) = explode(" ", microtime());
- $time = ((float)$usec + (float)$sec);
-
- if (!isset($GLOBALS['qr_time_bench']))
- $GLOBALS['qr_time_bench'] = array();
-
- $GLOBALS['qr_time_bench'][$markerId] = $time;
- }
-
- //----------------------------------------------------------------------
- public static function timeBenchmark()
- {
- self::markTime('finish');
-
- $lastTime = 0;
- $startTime = 0;
- $p = 0;
-
- echo '
- | BENCHMARK |
- ';
-
- foreach($GLOBALS['qr_time_bench'] as $markerId=>$thisTime) {
- if ($p > 0) {
- echo '| till '.$markerId.': | '.number_format($thisTime-$lastTime, 6).'s |
';
- } else {
- $startTime = $thisTime;
- }
-
- $p++;
- $lastTime = $thisTime;
- }
-
- echo '
- | TOTAL: | '.number_format($lastTime-$startTime, 6).'s |
-
-
';
- }
-
- }
-
- //##########################################################################
-
- QRtools::markTime('start');
-
-
-
-
-//---- qrspec.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * QR Code specifications
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
- *
- * The following data / specifications are taken from
- * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004)
- * or
- * "Automatic identification and data capture techniques --
- * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('QRSPEC_VERSION_MAX', 40);
- define('QRSPEC_WIDTH_MAX', 177);
-
- define('QRCAP_WIDTH', 0);
- define('QRCAP_WORDS', 1);
- define('QRCAP_REMINDER', 2);
- define('QRCAP_EC', 3);
-
- class QRspec {
-
- public static $capacity = array(
- array( 0, 0, 0, array( 0, 0, 0, 0)),
- array( 21, 26, 0, array( 7, 10, 13, 17)), // 1
- array( 25, 44, 7, array( 10, 16, 22, 28)),
- array( 29, 70, 7, array( 15, 26, 36, 44)),
- array( 33, 100, 7, array( 20, 36, 52, 64)),
- array( 37, 134, 7, array( 26, 48, 72, 88)), // 5
- array( 41, 172, 7, array( 36, 64, 96, 112)),
- array( 45, 196, 0, array( 40, 72, 108, 130)),
- array( 49, 242, 0, array( 48, 88, 132, 156)),
- array( 53, 292, 0, array( 60, 110, 160, 192)),
- array( 57, 346, 0, array( 72, 130, 192, 224)), //10
- array( 61, 404, 0, array( 80, 150, 224, 264)),
- array( 65, 466, 0, array( 96, 176, 260, 308)),
- array( 69, 532, 0, array( 104, 198, 288, 352)),
- array( 73, 581, 3, array( 120, 216, 320, 384)),
- array( 77, 655, 3, array( 132, 240, 360, 432)), //15
- array( 81, 733, 3, array( 144, 280, 408, 480)),
- array( 85, 815, 3, array( 168, 308, 448, 532)),
- array( 89, 901, 3, array( 180, 338, 504, 588)),
- array( 93, 991, 3, array( 196, 364, 546, 650)),
- array( 97, 1085, 3, array( 224, 416, 600, 700)), //20
- array(101, 1156, 4, array( 224, 442, 644, 750)),
- array(105, 1258, 4, array( 252, 476, 690, 816)),
- array(109, 1364, 4, array( 270, 504, 750, 900)),
- array(113, 1474, 4, array( 300, 560, 810, 960)),
- array(117, 1588, 4, array( 312, 588, 870, 1050)), //25
- array(121, 1706, 4, array( 336, 644, 952, 1110)),
- array(125, 1828, 4, array( 360, 700, 1020, 1200)),
- array(129, 1921, 3, array( 390, 728, 1050, 1260)),
- array(133, 2051, 3, array( 420, 784, 1140, 1350)),
- array(137, 2185, 3, array( 450, 812, 1200, 1440)), //30
- array(141, 2323, 3, array( 480, 868, 1290, 1530)),
- array(145, 2465, 3, array( 510, 924, 1350, 1620)),
- array(149, 2611, 3, array( 540, 980, 1440, 1710)),
- array(153, 2761, 3, array( 570, 1036, 1530, 1800)),
- array(157, 2876, 0, array( 570, 1064, 1590, 1890)), //35
- array(161, 3034, 0, array( 600, 1120, 1680, 1980)),
- array(165, 3196, 0, array( 630, 1204, 1770, 2100)),
- array(169, 3362, 0, array( 660, 1260, 1860, 2220)),
- array(173, 3532, 0, array( 720, 1316, 1950, 2310)),
- array(177, 3706, 0, array( 750, 1372, 2040, 2430)) //40
- );
-
- //----------------------------------------------------------------------
- public static function getDataLength($version, $level)
- {
- return self::$capacity[$version][QRCAP_WORDS] - self::$capacity[$version][QRCAP_EC][$level];
- }
-
- //----------------------------------------------------------------------
- public static function getECCLength($version, $level)
- {
- return self::$capacity[$version][QRCAP_EC][$level];
- }
-
- //----------------------------------------------------------------------
- public static function getWidth($version)
- {
- return self::$capacity[$version][QRCAP_WIDTH];
- }
-
- //----------------------------------------------------------------------
- public static function getRemainder($version)
- {
- return self::$capacity[$version][QRCAP_REMINDER];
- }
-
- //----------------------------------------------------------------------
- public static function getMinimumVersion($size, $level)
- {
-
- for($i=1; $i<= QRSPEC_VERSION_MAX; $i++) {
- $words = self::$capacity[$i][QRCAP_WORDS] - self::$capacity[$i][QRCAP_EC][$level];
- if($words >= $size)
- return $i;
- }
-
- return -1;
- }
-
- //######################################################################
-
- public static $lengthTableBits = array(
- array(10, 12, 14),
- array( 9, 11, 13),
- array( 8, 16, 16),
- array( 8, 10, 12)
- );
-
- //----------------------------------------------------------------------
- public static function lengthIndicator($mode, $version)
- {
- if ($mode == QR_MODE_STRUCTURE)
- return 0;
-
- if ($version <= 9) {
- $l = 0;
- } else if ($version <= 26) {
- $l = 1;
- } else {
- $l = 2;
- }
-
- return self::$lengthTableBits[$mode][$l];
- }
-
- //----------------------------------------------------------------------
- public static function maximumWords($mode, $version)
- {
- if($mode == QR_MODE_STRUCTURE)
- return 3;
-
- if($version <= 9) {
- $l = 0;
- } else if($version <= 26) {
- $l = 1;
- } else {
- $l = 2;
- }
-
- $bits = self::$lengthTableBits[$mode][$l];
- $words = (1 << $bits) - 1;
-
- if($mode == QR_MODE_KANJI) {
- $words *= 2; // the number of bytes is required
- }
-
- return $words;
- }
-
- // Error correction code -----------------------------------------------
- // Table of the error correction code (Reed-Solomon block)
- // See Table 12-16 (pp.30-36), JIS X0510:2004.
-
- public static $eccTable = array(
- array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)),
- array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // 1
- array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)),
- array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)),
- array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)),
- array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), // 5
- array(array( 2, 0), array( 4, 0), array( 4, 0), array( 4, 0)),
- array(array( 2, 0), array( 4, 0), array( 2, 4), array( 4, 1)),
- array(array( 2, 0), array( 2, 2), array( 4, 2), array( 4, 2)),
- array(array( 2, 0), array( 3, 2), array( 4, 4), array( 4, 4)),
- array(array( 2, 2), array( 4, 1), array( 6, 2), array( 6, 2)), //10
- array(array( 4, 0), array( 1, 4), array( 4, 4), array( 3, 8)),
- array(array( 2, 2), array( 6, 2), array( 4, 6), array( 7, 4)),
- array(array( 4, 0), array( 8, 1), array( 8, 4), array(12, 4)),
- array(array( 3, 1), array( 4, 5), array(11, 5), array(11, 5)),
- array(array( 5, 1), array( 5, 5), array( 5, 7), array(11, 7)), //15
- array(array( 5, 1), array( 7, 3), array(15, 2), array( 3, 13)),
- array(array( 1, 5), array(10, 1), array( 1, 15), array( 2, 17)),
- array(array( 5, 1), array( 9, 4), array(17, 1), array( 2, 19)),
- array(array( 3, 4), array( 3, 11), array(17, 4), array( 9, 16)),
- array(array( 3, 5), array( 3, 13), array(15, 5), array(15, 10)), //20
- array(array( 4, 4), array(17, 0), array(17, 6), array(19, 6)),
- array(array( 2, 7), array(17, 0), array( 7, 16), array(34, 0)),
- array(array( 4, 5), array( 4, 14), array(11, 14), array(16, 14)),
- array(array( 6, 4), array( 6, 14), array(11, 16), array(30, 2)),
- array(array( 8, 4), array( 8, 13), array( 7, 22), array(22, 13)), //25
- array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)),
- array(array( 8, 4), array(22, 3), array( 8, 26), array(12, 28)),
- array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)),
- array(array( 7, 7), array(21, 7), array( 1, 37), array(19, 26)),
- array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), //30
- array(array(13, 3), array( 2, 29), array(42, 1), array(23, 28)),
- array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)),
- array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)),
- array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)),
- array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), //35
- array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)),
- array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)),
- array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)),
- array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)),
- array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)),//40
- );
-
- //----------------------------------------------------------------------
- // CACHEABLE!!!
-
- public static function getEccSpec($version, $level, array &$spec)
- {
- if (count($spec) < 5) {
- $spec = array(0,0,0,0,0);
- }
-
- $b1 = self::$eccTable[$version][$level][0];
- $b2 = self::$eccTable[$version][$level][1];
- $data = self::getDataLength($version, $level);
- $ecc = self::getECCLength($version, $level);
-
- if($b2 == 0) {
- $spec[0] = $b1;
- $spec[1] = (int)($data / $b1);
- $spec[2] = (int)($ecc / $b1);
- $spec[3] = 0;
- $spec[4] = 0;
- } else {
- $spec[0] = $b1;
- $spec[1] = (int)($data / ($b1 + $b2));
- $spec[2] = (int)($ecc / ($b1 + $b2));
- $spec[3] = $b2;
- $spec[4] = $spec[1] + 1;
- }
- }
-
- // Alignment pattern ---------------------------------------------------
-
- // Positions of alignment patterns.
- // This array includes only the second and the third position of the
- // alignment patterns. Rest of them can be calculated from the distance
- // between them.
-
- // See Table 1 in Appendix E (pp.71) of JIS X0510:2004.
-
- public static $alignmentPattern = array(
- array( 0, 0),
- array( 0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5
- array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10
- array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), //11-15
- array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), //16-20
- array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), //21-25
- array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), //26-30
- array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), //31-35
- array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58), //35-40
- );
-
-
- /** --------------------------------------------------------------------
- * Put an alignment marker.
- * @param frame
- * @param width
- * @param ox,oy center coordinate of the pattern
- */
- public static function putAlignmentMarker(array &$frame, $ox, $oy)
- {
- $finder = array(
- "\xa1\xa1\xa1\xa1\xa1",
- "\xa1\xa0\xa0\xa0\xa1",
- "\xa1\xa0\xa1\xa0\xa1",
- "\xa1\xa0\xa0\xa0\xa1",
- "\xa1\xa1\xa1\xa1\xa1"
- );
-
- $yStart = $oy-2;
- $xStart = $ox-2;
-
- for($y=0; $y<5; $y++) {
- QRstr::set($frame, $xStart, $yStart+$y, $finder[$y]);
- }
- }
-
- //----------------------------------------------------------------------
- public static function putAlignmentPattern($version, &$frame, $width)
- {
- if($version < 2)
- return;
-
- $d = self::$alignmentPattern[$version][1] - self::$alignmentPattern[$version][0];
- if($d < 0) {
- $w = 2;
- } else {
- $w = (int)(($width - self::$alignmentPattern[$version][0]) / $d + 2);
- }
-
- if($w * $w - 3 == 1) {
- $x = self::$alignmentPattern[$version][0];
- $y = self::$alignmentPattern[$version][0];
- self::putAlignmentMarker($frame, $x, $y);
- return;
- }
-
- $cx = self::$alignmentPattern[$version][0];
- for($x=1; $x<$w - 1; $x++) {
- self::putAlignmentMarker($frame, 6, $cx);
- self::putAlignmentMarker($frame, $cx, 6);
- $cx += $d;
- }
-
- $cy = self::$alignmentPattern[$version][0];
- for($y=0; $y<$w-1; $y++) {
- $cx = self::$alignmentPattern[$version][0];
- for($x=0; $x<$w-1; $x++) {
- self::putAlignmentMarker($frame, $cx, $cy);
- $cx += $d;
- }
- $cy += $d;
- }
- }
-
- // Version information pattern -----------------------------------------
-
- // Version information pattern (BCH coded).
- // See Table 1 in Appendix D (pp.68) of JIS X0510:2004.
-
- // size: [QRSPEC_VERSION_MAX - 6]
-
- public static $versionPattern = array(
- 0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d,
- 0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9,
- 0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75,
- 0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64,
- 0x27541, 0x28c69
- );
-
- //----------------------------------------------------------------------
- public static function getVersionPattern($version)
- {
- if($version < 7 || $version > QRSPEC_VERSION_MAX)
- return 0;
-
- return self::$versionPattern[$version -7];
- }
-
- // Format information --------------------------------------------------
- // See calcFormatInfo in tests/test_qrspec.c (orginal qrencode c lib)
-
- public static $formatInfo = array(
- array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976),
- array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0),
- array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed),
- array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b)
- );
-
- public static function getFormatInfo($mask, $level)
- {
- if($mask < 0 || $mask > 7)
- return 0;
-
- if($level < 0 || $level > 3)
- return 0;
-
- return self::$formatInfo[$level][$mask];
- }
-
- // Frame ---------------------------------------------------------------
- // Cache of initial frames.
-
- public static $frames = array();
-
- /** --------------------------------------------------------------------
- * Put a finder pattern.
- * @param frame
- * @param width
- * @param ox,oy upper-left coordinate of the pattern
- */
- public static function putFinderPattern(&$frame, $ox, $oy)
- {
- $finder = array(
- "\xc1\xc1\xc1\xc1\xc1\xc1\xc1",
- "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
- "\xc1\xc1\xc1\xc1\xc1\xc1\xc1"
- );
-
- for($y=0; $y<7; $y++) {
- QRstr::set($frame, $ox, $oy+$y, $finder[$y]);
- }
- }
-
- //----------------------------------------------------------------------
- public static function createFrame($version)
- {
- $width = self::$capacity[$version][QRCAP_WIDTH];
- $frameLine = str_repeat ("\0", $width);
- $frame = array_fill(0, $width, $frameLine);
-
- // Finder pattern
- self::putFinderPattern($frame, 0, 0);
- self::putFinderPattern($frame, $width - 7, 0);
- self::putFinderPattern($frame, 0, $width - 7);
-
- // Separator
- $yOffset = $width - 7;
-
- for($y=0; $y<7; $y++) {
- $frame[$y][7] = "\xc0";
- $frame[$y][$width - 8] = "\xc0";
- $frame[$yOffset][7] = "\xc0";
- $yOffset++;
- }
-
- $setPattern = str_repeat("\xc0", 8);
-
- QRstr::set($frame, 0, 7, $setPattern);
- QRstr::set($frame, $width-8, 7, $setPattern);
- QRstr::set($frame, 0, $width - 8, $setPattern);
-
- // Format info
- $setPattern = str_repeat("\x84", 9);
- QRstr::set($frame, 0, 8, $setPattern);
- QRstr::set($frame, $width - 8, 8, $setPattern, 8);
-
- $yOffset = $width - 8;
-
- for($y=0; $y<8; $y++,$yOffset++) {
- $frame[$y][8] = "\x84";
- $frame[$yOffset][8] = "\x84";
- }
-
- // Timing pattern
-
- for($i=1; $i<$width-15; $i++) {
- $frame[6][7+$i] = chr(0x90 | ($i & 1));
- $frame[7+$i][6] = chr(0x90 | ($i & 1));
- }
-
- // Alignment pattern
- self::putAlignmentPattern($version, $frame, $width);
-
- // Version information
- if($version >= 7) {
- $vinf = self::getVersionPattern($version);
-
- $v = $vinf;
-
- for($x=0; $x<6; $x++) {
- for($y=0; $y<3; $y++) {
- $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1));
- $v = $v >> 1;
- }
- }
-
- $v = $vinf;
- for($y=0; $y<6; $y++) {
- for($x=0; $x<3; $x++) {
- $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1));
- $v = $v >> 1;
- }
- }
- }
-
- // and a little bit...
- $frame[$width - 8][8] = "\x81";
-
- return $frame;
- }
-
- //----------------------------------------------------------------------
- public static function debug($frame, $binary_mode = false)
- {
- if ($binary_mode) {
-
- foreach ($frame as &$frameLine) {
- $frameLine = join(' ', explode('0', $frameLine));
- $frameLine = join('██', explode('1', $frameLine));
- }
-
- ?>
-
-
';
- echo join("
", $frame);
- echo '
';
-
- } else {
-
- foreach ($frame as &$frameLine) {
- $frameLine = join(' ', explode("\xc0", $frameLine));
- $frameLine = join('▒', explode("\xc1", $frameLine));
- $frameLine = join(' ', explode("\xa0", $frameLine));
- $frameLine = join('▒', explode("\xa1", $frameLine));
- $frameLine = join('◇', explode("\x84", $frameLine)); //format 0
- $frameLine = join('◆', explode("\x85", $frameLine)); //format 1
- $frameLine = join('☢', explode("\x81", $frameLine)); //special bit
- $frameLine = join(' ', explode("\x90", $frameLine)); //clock 0
- $frameLine = join('◷', explode("\x91", $frameLine)); //clock 1
- $frameLine = join(' ', explode("\x88", $frameLine)); //version
- $frameLine = join('▒', explode("\x89", $frameLine)); //version
- $frameLine = join('♦', explode("\x01", $frameLine));
- $frameLine = join('⋅', explode("\0", $frameLine));
- }
-
- ?>
-
- ";
- echo join("
", $frame);
- echo "";
-
- }
- }
-
- //----------------------------------------------------------------------
- public static function serial($frame)
- {
- return gzcompress(join("\n", $frame), 9);
- }
-
- //----------------------------------------------------------------------
- public static function unserial($code)
- {
- return explode("\n", gzuncompress($code));
- }
-
- //----------------------------------------------------------------------
- public static function newFrame($version)
- {
- if($version < 1 || $version > QRSPEC_VERSION_MAX)
- return null;
-
- if(!isset(self::$frames[$version])) {
-
- $fileName = QR_CACHE_DIR.'frame_'.$version.'.dat';
-
- if (QR_CACHEABLE) {
- if (file_exists($fileName)) {
- self::$frames[$version] = self::unserial(file_get_contents($fileName));
- } else {
- self::$frames[$version] = self::createFrame($version);
- file_put_contents($fileName, self::serial(self::$frames[$version]));
- }
- } else {
- self::$frames[$version] = self::createFrame($version);
- }
- }
-
- if(is_null(self::$frames[$version]))
- return null;
-
- return self::$frames[$version];
- }
-
- //----------------------------------------------------------------------
- public static function rsBlockNum($spec) { return $spec[0] + $spec[3]; }
- public static function rsBlockNum1($spec) { return $spec[0]; }
- public static function rsDataCodes1($spec) { return $spec[1]; }
- public static function rsEccCodes1($spec) { return $spec[2]; }
- public static function rsBlockNum2($spec) { return $spec[3]; }
- public static function rsDataCodes2($spec) { return $spec[4]; }
- public static function rsEccCodes2($spec) { return $spec[2]; }
- public static function rsDataLength($spec) { return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); }
- public static function rsEccLength($spec) { return ($spec[0] + $spec[3]) * $spec[2]; }
-
- }
-
-
-
-//---- qrimage.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Image output of code using GD2
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('QR_IMAGE', true);
-
- class QRimage {
-
- //----------------------------------------------------------------------
- public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE)
- {
- $image = self::image($frame, $pixelPerPoint, $outerFrame);
-
- if ($filename === false) {
- Header("Content-type: image/png");
- ImagePng($image);
- } else {
- if($saveandprint===TRUE){
- ImagePng($image, $filename);
- header("Content-type: image/png");
- ImagePng($image);
- }else{
- ImagePng($image, $filename);
- }
- }
-
- ImageDestroy($image);
- }
-
- //----------------------------------------------------------------------
- public static function jpg($frame, $filename = false, $pixelPerPoint = 8, $outerFrame = 4, $q = 85)
- {
- $image = self::image($frame, $pixelPerPoint, $outerFrame);
-
- if ($filename === false) {
- Header("Content-type: image/jpeg");
- ImageJpeg($image, null, $q);
- } else {
- ImageJpeg($image, $filename, $q);
- }
-
- ImageDestroy($image);
- }
-
- //----------------------------------------------------------------------
- private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4)
- {
- $h = count($frame);
- $w = strlen($frame[0]);
-
- $imgW = $w + 2*$outerFrame;
- $imgH = $h + 2*$outerFrame;
-
- $base_image =ImageCreate($imgW, $imgH);
-
- $col[0] = ImageColorAllocate($base_image,255,255,255);
- $col[1] = ImageColorAllocate($base_image,0,0,0);
-
- imagefill($base_image, 0, 0, $col[0]);
-
- for($y=0; $y<$h; $y++) {
- for($x=0; $x<$w; $x++) {
- if ($frame[$y][$x] == '1') {
- ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]);
- }
- }
- }
-
- $target_image =ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint);
- ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH);
- ImageDestroy($base_image);
-
- return $target_image;
- }
- }
-
-
-
-//---- qrinput.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Input encoding class
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('STRUCTURE_HEADER_BITS', 20);
- define('MAX_STRUCTURED_SYMBOLS', 16);
-
- class QRinputItem {
-
- public $mode;
- public $size;
- public $data;
- public $bstream;
-
- public function __construct($mode, $size, $data, $bstream = null)
- {
- $setData = array_slice($data, 0, $size);
-
- if (count($setData) < $size) {
- $setData = array_merge($setData, array_fill(0,$size-count($setData),0));
- }
-
- if(!QRinput::check($mode, $size, $setData)) {
- throw new \Exception('Error m:'.$mode.',s:'.$size.',d:'.join(',',$setData));
- return null;
- }
-
- $this->mode = $mode;
- $this->size = $size;
- $this->data = $setData;
- $this->bstream = $bstream;
- }
-
- //----------------------------------------------------------------------
- public function encodeModeNum($version)
- {
- try {
-
- $words = (int)($this->size / 3);
- $bs = new QRbitstream();
-
- $val = 0x1;
- $bs->appendNum(4, $val);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_NUM, $version), $this->size);
-
- for($i=0; $i<$words; $i++) {
- $val = (ord($this->data[$i*3 ]) - ord('0')) * 100;
- $val += (ord($this->data[$i*3+1]) - ord('0')) * 10;
- $val += (ord($this->data[$i*3+2]) - ord('0'));
- $bs->appendNum(10, $val);
- }
-
- if($this->size - $words * 3 == 1) {
- $val = ord($this->data[$words*3]) - ord('0');
- $bs->appendNum(4, $val);
- } else if($this->size - $words * 3 == 2) {
- $val = (ord($this->data[$words*3 ]) - ord('0')) * 10;
- $val += (ord($this->data[$words*3+1]) - ord('0'));
- $bs->appendNum(7, $val);
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeModeAn($version)
- {
- try {
- $words = (int)($this->size / 2);
- $bs = new QRbitstream();
-
- $bs->appendNum(4, 0x02);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_AN, $version), $this->size);
-
- for($i=0; $i<$words; $i++) {
- $val = (int)QRinput::lookAnTable(ord($this->data[$i*2 ])) * 45;
- $val += (int)QRinput::lookAnTable(ord($this->data[$i*2+1]));
-
- $bs->appendNum(11, $val);
- }
-
- if($this->size & 1) {
- $val = QRinput::lookAnTable(ord($this->data[$words * 2]));
- $bs->appendNum(6, $val);
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeMode8($version)
- {
- try {
- $bs = new QRbitstream();
-
- $bs->appendNum(4, 0x4);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_8, $version), $this->size);
-
- for($i=0; $i<$this->size; $i++) {
- $bs->appendNum(8, ord($this->data[$i]));
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeModeKanji($version)
- {
- try {
-
- $bs = new QRbitrtream();
-
- $bs->appendNum(4, 0x8);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_KANJI, $version), (int)($this->size / 2));
-
- for($i=0; $i<$this->size; $i+=2) {
- $val = (ord($this->data[$i]) << 8) | ord($this->data[$i+1]);
- if($val <= 0x9ffc) {
- $val -= 0x8140;
- } else {
- $val -= 0xc140;
- }
-
- $h = ($val >> 8) * 0xc0;
- $val = ($val & 0xff) + $h;
-
- $bs->appendNum(13, $val);
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeModeStructure()
- {
- try {
- $bs = new QRbitstream();
-
- $bs->appendNum(4, 0x03);
- $bs->appendNum(4, ord($this->data[1]) - 1);
- $bs->appendNum(4, ord($this->data[0]) - 1);
- $bs->appendNum(8, ord($this->data[2]));
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function estimateBitStreamSizeOfEntry($version)
- {
- $bits = 0;
-
- if($version == 0)
- $version = 1;
-
- switch($this->mode) {
- case QR_MODE_NUM: $bits = QRinput::estimateBitsModeNum($this->size); break;
- case QR_MODE_AN: $bits = QRinput::estimateBitsModeAn($this->size); break;
- case QR_MODE_8: $bits = QRinput::estimateBitsMode8($this->size); break;
- case QR_MODE_KANJI: $bits = QRinput::estimateBitsModeKanji($this->size);break;
- case QR_MODE_STRUCTURE: return STRUCTURE_HEADER_BITS;
- default:
- return 0;
- }
-
- $l = QRspec::lengthIndicator($this->mode, $version);
- $m = 1 << $l;
- $num = (int)(($this->size + $m - 1) / $m);
-
- $bits += $num * (4 + $l);
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public function encodeBitStream($version)
- {
- try {
-
- unset($this->bstream);
- $words = QRspec::maximumWords($this->mode, $version);
-
- if($this->size > $words) {
-
- $st1 = new QRinputItem($this->mode, $words, $this->data);
- $st2 = new QRinputItem($this->mode, $this->size - $words, array_slice($this->data, $words));
-
- $st1->encodeBitStream($version);
- $st2->encodeBitStream($version);
-
- $this->bstream = new QRbitstream();
- $this->bstream->append($st1->bstream);
- $this->bstream->append($st2->bstream);
-
- unset($st1);
- unset($st2);
-
- } else {
-
- $ret = 0;
-
- switch($this->mode) {
- case QR_MODE_NUM: $ret = $this->encodeModeNum($version); break;
- case QR_MODE_AN: $ret = $this->encodeModeAn($version); break;
- case QR_MODE_8: $ret = $this->encodeMode8($version); break;
- case QR_MODE_KANJI: $ret = $this->encodeModeKanji($version);break;
- case QR_MODE_STRUCTURE: $ret = $this->encodeModeStructure(); break;
-
- default:
- break;
- }
-
- if($ret < 0)
- return -1;
- }
-
- return $this->bstream->size();
-
- } catch (Exception $e) {
- return -1;
- }
- }
- };
-
- //##########################################################################
-
- class QRinput {
-
- public $items;
-
- private $version;
- private $level;
-
- //----------------------------------------------------------------------
- public function __construct($version = 0, $level = QR_ECLEVEL_L)
- {
- if ($version < 0 || $version > QRSPEC_VERSION_MAX || $level > QR_ECLEVEL_H) {
- throw new \Exception('Invalid version no');
- return NULL;
- }
-
- $this->version = $version;
- $this->level = $level;
- }
-
- //----------------------------------------------------------------------
- public function getVersion()
- {
- return $this->version;
- }
-
- //----------------------------------------------------------------------
- public function setVersion($version)
- {
- if($version < 0 || $version > QRSPEC_VERSION_MAX) {
- throw new \Exception('Invalid version no');
- return -1;
- }
-
- $this->version = $version;
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function getErrorCorrectionLevel()
- {
- return $this->level;
- }
-
- //----------------------------------------------------------------------
- public function setErrorCorrectionLevel($level)
- {
- if($level > QR_ECLEVEL_H) {
- throw new \Exception('Invalid ECLEVEL');
- return -1;
- }
-
- $this->level = $level;
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function appendEntry(QRinputItem $entry)
- {
- $this->items[] = $entry;
- }
-
- //----------------------------------------------------------------------
- public function append($mode, $size, $data)
- {
- try {
- $entry = new QRinputItem($mode, $size, $data);
- $this->items[] = $entry;
- return 0;
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
-
- public function insertStructuredAppendHeader($size, $index, $parity)
- {
- if( $size > MAX_STRUCTURED_SYMBOLS ) {
- throw new \Exception('insertStructuredAppendHeader wrong size');
- }
-
- if( $index <= 0 || $index > MAX_STRUCTURED_SYMBOLS ) {
- throw new \Exception('insertStructuredAppendHeader wrong index');
- }
-
- $buf = array($size, $index, $parity);
-
- try {
- $entry = new QRinputItem(QR_MODE_STRUCTURE, 3, buf);
- array_unshift($this->items, $entry);
- return 0;
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function calcParity()
- {
- $parity = 0;
-
- foreach($this->items as $item) {
- if($item->mode != QR_MODE_STRUCTURE) {
- for($i=$item->size-1; $i>=0; $i--) {
- $parity ^= $item->data[$i];
- }
- }
- }
-
- return $parity;
- }
-
- //----------------------------------------------------------------------
- public static function checkModeNum($size, $data)
- {
- for($i=0; $i<$size; $i++) {
- if((ord($data[$i]) < ord('0')) || (ord($data[$i]) > ord('9'))){
- return false;
- }
- }
-
- return true;
- }
-
- //----------------------------------------------------------------------
- public static function estimateBitsModeNum($size)
- {
- $w = (int)$size / 3;
- $bits = $w * 10;
-
- switch($size - $w * 3) {
- case 1:
- $bits += 4;
- break;
- case 2:
- $bits += 7;
- break;
- default:
- break;
- }
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public static $anTable = array(
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1,
- -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
- );
-
- //----------------------------------------------------------------------
- public static function lookAnTable($c)
- {
- return (($c > 127)?-1:self::$anTable[$c]);
- }
-
- //----------------------------------------------------------------------
- public static function checkModeAn($size, $data)
- {
- for($i=0; $i<$size; $i++) {
- if (self::lookAnTable(ord($data[$i])) == -1) {
- return false;
- }
- }
-
- return true;
- }
-
- //----------------------------------------------------------------------
- public static function estimateBitsModeAn($size)
- {
- $w = (int)($size / 2);
- $bits = $w * 11;
-
- if($size & 1) {
- $bits += 6;
- }
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public static function estimateBitsMode8($size)
- {
- return $size * 8;
- }
-
- //----------------------------------------------------------------------
- public function estimateBitsModeKanji($size)
- {
- return (int)(($size / 2) * 13);
- }
-
- //----------------------------------------------------------------------
- public static function checkModeKanji($size, $data)
- {
- if($size & 1)
- return false;
-
- for($i=0; $i<$size; $i+=2) {
- $val = (ord($data[$i]) << 8) | ord($data[$i+1]);
- if( $val < 0x8140
- || ($val > 0x9ffc && $val < 0xe040)
- || $val > 0xebbf) {
- return false;
- }
- }
-
- return true;
- }
-
- /***********************************************************************
- * Validation
- **********************************************************************/
-
- public static function check($mode, $size, $data)
- {
- if($size <= 0)
- return false;
-
- switch($mode) {
- case QR_MODE_NUM: return self::checkModeNum($size, $data); break;
- case QR_MODE_AN: return self::checkModeAn($size, $data); break;
- case QR_MODE_KANJI: return self::checkModeKanji($size, $data); break;
- case QR_MODE_8: return true; break;
- case QR_MODE_STRUCTURE: return true; break;
-
- default:
- break;
- }
-
- return false;
- }
-
-
- //----------------------------------------------------------------------
- public function estimateBitStreamSize($version)
- {
- $bits = 0;
-
- foreach($this->items as $item) {
- $bits += $item->estimateBitStreamSizeOfEntry($version);
- }
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public function estimateVersion()
- {
- $version = 0;
- $prev = 0;
- do {
- $prev = $version;
- $bits = $this->estimateBitStreamSize($prev);
- $version = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level);
- if ($version < 0) {
- return -1;
- }
- } while ($version > $prev);
-
- return $version;
- }
-
- //----------------------------------------------------------------------
- public static function lengthOfCode($mode, $version, $bits)
- {
- $payload = $bits - 4 - QRspec::lengthIndicator($mode, $version);
- switch($mode) {
- case QR_MODE_NUM:
- $chunks = (int)($payload / 10);
- $remain = $payload - $chunks * 10;
- $size = $chunks * 3;
- if($remain >= 7) {
- $size += 2;
- } else if($remain >= 4) {
- $size += 1;
- }
- break;
- case QR_MODE_AN:
- $chunks = (int)($payload / 11);
- $remain = $payload - $chunks * 11;
- $size = $chunks * 2;
- if($remain >= 6)
- $size++;
- break;
- case QR_MODE_8:
- $size = (int)($payload / 8);
- break;
- case QR_MODE_KANJI:
- $size = (int)(($payload / 13) * 2);
- break;
- case QR_MODE_STRUCTURE:
- $size = (int)($payload / 8);
- break;
- default:
- $size = 0;
- break;
- }
-
- $maxsize = QRspec::maximumWords($mode, $version);
- if($size < 0) $size = 0;
- if($size > $maxsize) $size = $maxsize;
-
- return $size;
- }
-
- //----------------------------------------------------------------------
- public function createBitStream()
- {
- $total = 0;
-
- foreach($this->items as $item) {
- $bits = $item->encodeBitStream($this->version);
-
- if($bits < 0)
- return -1;
-
- $total += $bits;
- }
-
- return $total;
- }
-
- //----------------------------------------------------------------------
- public function convertData()
- {
- $ver = $this->estimateVersion();
- if($ver > $this->getVersion()) {
- $this->setVersion($ver);
- }
-
- for(;;) {
- $bits = $this->createBitStream();
-
- if($bits < 0)
- return -1;
-
- $ver = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level);
- if($ver < 0) {
- throw new \Exception('WRONG VERSION');
- return -1;
- } else if($ver > $this->getVersion()) {
- $this->setVersion($ver);
- } else {
- break;
- }
- }
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function appendPaddingBit(&$bstream)
- {
- $bits = $bstream->size();
- $maxwords = QRspec::getDataLength($this->version, $this->level);
- $maxbits = $maxwords * 8;
-
- if ($maxbits == $bits) {
- return 0;
- }
-
- if ($maxbits - $bits < 5) {
- return $bstream->appendNum($maxbits - $bits, 0);
- }
-
- $bits += 4;
- $words = (int)(($bits + 7) / 8);
-
- $padding = new QRbitstream();
- $ret = $padding->appendNum($words * 8 - $bits + 4, 0);
-
- if($ret < 0)
- return $ret;
-
- $padlen = $maxwords - $words;
-
- if($padlen > 0) {
-
- $padbuf = array();
- for($i=0; $i<$padlen; $i++) {
- $padbuf[$i] = ($i&1)?0x11:0xec;
- }
-
- $ret = $padding->appendBytes($padlen, $padbuf);
-
- if($ret < 0)
- return $ret;
-
- }
-
- $ret = $bstream->append($padding);
-
- return $ret;
- }
-
- //----------------------------------------------------------------------
- public function mergeBitStream()
- {
- if($this->convertData() < 0) {
- return null;
- }
-
- $bstream = new QRbitstream();
-
- foreach($this->items as $item) {
- $ret = $bstream->append($item->bstream);
- if($ret < 0) {
- return null;
- }
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public function getBitStream()
- {
-
- $bstream = $this->mergeBitStream();
-
- if($bstream == null) {
- return null;
- }
-
- $ret = $this->appendPaddingBit($bstream);
- if($ret < 0) {
- return null;
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public function getByteStream()
- {
- $bstream = $this->getBitStream();
- if($bstream == null) {
- return null;
- }
-
- return $bstream->toByte();
- }
- }
-
-
-
-
-
-
-//---- qrbitstream.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Bitstream class
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRbitstream {
-
- public $data = array();
-
- //----------------------------------------------------------------------
- public function size()
- {
- return count($this->data);
- }
-
- //----------------------------------------------------------------------
- public function allocate($setLength)
- {
- $this->data = array_fill(0, $setLength, 0);
- return 0;
- }
-
- //----------------------------------------------------------------------
- public static function newFromNum($bits, $num)
- {
- $bstream = new QRbitstream();
- $bstream->allocate($bits);
-
- $mask = 1 << ($bits - 1);
- for($i=0; $i<$bits; $i++) {
- if($num & $mask) {
- $bstream->data[$i] = 1;
- } else {
- $bstream->data[$i] = 0;
- }
- $mask = $mask >> 1;
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public static function newFromBytes($size, $data)
- {
- $bstream = new QRbitstream();
- $bstream->allocate($size * 8);
- $p=0;
-
- for($i=0; $i<$size; $i++) {
- $mask = 0x80;
- for($j=0; $j<8; $j++) {
- if($data[$i] & $mask) {
- $bstream->data[$p] = 1;
- } else {
- $bstream->data[$p] = 0;
- }
- $p++;
- $mask = $mask >> 1;
- }
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public function append(QRbitstream $arg)
- {
- if (is_null($arg)) {
- return -1;
- }
-
- if($arg->size() == 0) {
- return 0;
- }
-
- if($this->size() == 0) {
- $this->data = $arg->data;
- return 0;
- }
-
- $this->data = array_values(array_merge($this->data, $arg->data));
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function appendNum($bits, $num)
- {
- if ($bits == 0)
- return 0;
-
- $b = QRbitstream::newFromNum($bits, $num);
-
- if(is_null($b))
- return -1;
-
- $ret = $this->append($b);
- unset($b);
-
- return $ret;
- }
-
- //----------------------------------------------------------------------
- public function appendBytes($size, $data)
- {
- if ($size == 0)
- return 0;
-
- $b = QRbitstream::newFromBytes($size, $data);
-
- if(is_null($b))
- return -1;
-
- $ret = $this->append($b);
- unset($b);
-
- return $ret;
- }
-
- //----------------------------------------------------------------------
- public function toByte()
- {
-
- $size = $this->size();
-
- if($size == 0) {
- return array();
- }
-
- $data = array_fill(0, (int)(($size + 7) / 8), 0);
- $bytes = (int)($size / 8);
-
- $p = 0;
-
- for($i=0; $i<$bytes; $i++) {
- $v = 0;
- for($j=0; $j<8; $j++) {
- $v = $v << 1;
- $v |= $this->data[$p];
- $p++;
- }
- $data[$i] = $v;
- }
-
- if($size & 7) {
- $v = 0;
- for($j=0; $j<($size & 7); $j++) {
- $v = $v << 1;
- $v |= $this->data[$p];
- $p++;
- }
- $data[$bytes] = $v;
- }
-
- return $data;
- }
-
- }
-
-
-
-
-//---- qrsplit.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Input splitting classes
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
- *
- * The following data / specifications are taken from
- * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004)
- * or
- * "Automatic identification and data capture techniques --
- * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
- class QRsplit {
-
- public $dataStr = '';
- public $input;
- public $modeHint;
-
- //----------------------------------------------------------------------
- public function __construct($dataStr, $input, $modeHint)
- {
- $this->dataStr = $dataStr;
- $this->input = $input;
- $this->modeHint = $modeHint;
- }
-
- //----------------------------------------------------------------------
- public static function isdigitat($str, $pos)
- {
- if ($pos >= strlen($str))
- return false;
-
- return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9')));
- }
-
- //----------------------------------------------------------------------
- public static function isalnumat($str, $pos)
- {
- if ($pos >= strlen($str))
- return false;
-
- return (QRinput::lookAnTable(ord($str[$pos])) >= 0);
- }
-
- //----------------------------------------------------------------------
- public function identifyMode($pos)
- {
- if ($pos >= strlen($this->dataStr))
- return QR_MODE_NUL;
-
- $c = $this->dataStr[$pos];
-
- if(self::isdigitat($this->dataStr, $pos)) {
- return QR_MODE_NUM;
- } else if(self::isalnumat($this->dataStr, $pos)) {
- return QR_MODE_AN;
- } else if($this->modeHint == QR_MODE_KANJI) {
-
- if ($pos+1 < strlen($this->dataStr))
- {
- $d = $this->dataStr[$pos+1];
- $word = (ord($c) << 8) | ord($d);
- if(($word >= 0x8140 && $word <= 0x9ffc) || ($word >= 0xe040 && $word <= 0xebbf)) {
- return QR_MODE_KANJI;
- }
- }
- }
-
- return QR_MODE_8;
- }
-
- //----------------------------------------------------------------------
- public function eatNum()
- {
- $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion());
-
- $p = 0;
- while(self::isdigitat($this->dataStr, $p)) {
- $p++;
- }
-
- $run = $p;
- $mode = $this->identifyMode($p);
-
- if($mode == QR_MODE_8) {
- $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln
- + QRinput::estimateBitsMode8(1) // + 4 + l8
- - QRinput::estimateBitsMode8($run + 1); // - 4 - l8
- if($dif > 0) {
- return $this->eat8();
- }
- }
- if($mode == QR_MODE_AN) {
- $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln
- + QRinput::estimateBitsModeAn(1) // + 4 + la
- - QRinput::estimateBitsModeAn($run + 1);// - 4 - la
- if($dif > 0) {
- return $this->eatAn();
- }
- }
-
- $ret = $this->input->append(QR_MODE_NUM, $run, str_split($this->dataStr));
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function eatAn()
- {
- $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion());
- $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion());
-
- $p = 0;
-
- while(self::isalnumat($this->dataStr, $p)) {
- if(self::isdigitat($this->dataStr, $p)) {
- $q = $p;
- while(self::isdigitat($this->dataStr, $q)) {
- $q++;
- }
-
- $dif = QRinput::estimateBitsModeAn($p) // + 4 + la
- + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln
- - QRinput::estimateBitsModeAn($q); // - 4 - la
-
- if($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else {
- $p++;
- }
- }
-
- $run = $p;
-
- if(!self::isalnumat($this->dataStr, $p)) {
- $dif = QRinput::estimateBitsModeAn($run) + 4 + $la
- + QRinput::estimateBitsMode8(1) // + 4 + l8
- - QRinput::estimateBitsMode8($run + 1); // - 4 - l8
- if($dif > 0) {
- return $this->eat8();
- }
- }
-
- $ret = $this->input->append(QR_MODE_AN, $run, str_split($this->dataStr));
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function eatKanji()
- {
- $p = 0;
-
- while($this->identifyMode($p) == QR_MODE_KANJI) {
- $p += 2;
- }
-
- $ret = $this->input->append(QR_MODE_KANJI, $p, str_split($this->dataStr));
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function eat8()
- {
- $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion());
- $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion());
-
- $p = 1;
- $dataStrLen = strlen($this->dataStr);
-
- while($p < $dataStrLen) {
-
- $mode = $this->identifyMode($p);
- if($mode == QR_MODE_KANJI) {
- break;
- }
- if($mode == QR_MODE_NUM) {
- $q = $p;
- while(self::isdigitat($this->dataStr, $q)) {
- $q++;
- }
- $dif = QRinput::estimateBitsMode8($p) // + 4 + l8
- + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln
- - QRinput::estimateBitsMode8($q); // - 4 - l8
- if($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else if($mode == QR_MODE_AN) {
- $q = $p;
- while(self::isalnumat($this->dataStr, $q)) {
- $q++;
- }
- $dif = QRinput::estimateBitsMode8($p) // + 4 + l8
- + QRinput::estimateBitsModeAn($q - $p) + 4 + $la
- - QRinput::estimateBitsMode8($q); // - 4 - l8
- if($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else {
- $p++;
- }
- }
-
- $run = $p;
- $ret = $this->input->append(QR_MODE_8, $run, str_split($this->dataStr));
-
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function splitString()
- {
- while (strlen($this->dataStr) > 0)
- {
- if($this->dataStr == '')
- return 0;
-
- $mode = $this->identifyMode(0);
-
- switch ($mode) {
- case QR_MODE_NUM: $length = $this->eatNum(); break;
- case QR_MODE_AN: $length = $this->eatAn(); break;
- case QR_MODE_KANJI:
- if ($hint == QR_MODE_KANJI)
- $length = $this->eatKanji();
- else $length = $this->eat8();
- break;
- default: $length = $this->eat8(); break;
-
- }
-
- if($length == 0) return 0;
- if($length < 0) return -1;
-
- $this->dataStr = substr($this->dataStr, $length);
- }
- }
-
- //----------------------------------------------------------------------
- public function toUpper()
- {
- $stringLen = strlen($this->dataStr);
- $p = 0;
-
- while ($p<$stringLen) {
- $mode = self::identifyMode(substr($this->dataStr, $p), $this->modeHint);
- if($mode == QR_MODE_KANJI) {
- $p += 2;
- } else {
- if (ord($this->dataStr[$p]) >= ord('a') && ord($this->dataStr[$p]) <= ord('z')) {
- $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32);
- }
- $p++;
- }
- }
-
- return $this->dataStr;
- }
-
- //----------------------------------------------------------------------
- public static function splitStringToQRinput($string, QRinput $input, $modeHint, $casesensitive = true)
- {
- if(is_null($string) || $string == '\0' || $string == '') {
- throw new \Exception('empty string!!!');
- }
-
- $split = new QRsplit($string, $input, $modeHint);
-
- if(!$casesensitive)
- $split->toUpper();
-
- return $split->splitString();
- }
- }
-
-
-
-//---- qrrscode.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Reed-Solomon error correction support
- *
- * Copyright (C) 2002, 2003, 2004, 2006 Phil Karn, KA9Q
- * (libfec is released under the GNU Lesser General Public License.)
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRrsItem {
-
- public $mm; // Bits per symbol
- public $nn; // Symbols per block (= (1<= $this->nn) {
- $x -= $this->nn;
- $x = ($x >> $this->mm) + ($x & $this->nn);
- }
-
- return $x;
- }
-
- //----------------------------------------------------------------------
- public static function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad)
- {
- // Common code for intializing a Reed-Solomon control block (char or int symbols)
- // Copyright 2004 Phil Karn, KA9Q
- // May be used under the terms of the GNU Lesser General Public License (LGPL)
-
- $rs = null;
-
- // Check parameter ranges
- if($symsize < 0 || $symsize > 8) return $rs;
- if($fcr < 0 || $fcr >= (1<<$symsize)) return $rs;
- if($prim <= 0 || $prim >= (1<<$symsize)) return $rs;
- if($nroots < 0 || $nroots >= (1<<$symsize)) return $rs; // Can't have more roots than symbol values!
- if($pad < 0 || $pad >= ((1<<$symsize) -1 - $nroots)) return $rs; // Too much padding
-
- $rs = new QRrsItem();
- $rs->mm = $symsize;
- $rs->nn = (1<<$symsize)-1;
- $rs->pad = $pad;
-
- $rs->alpha_to = array_fill(0, $rs->nn+1, 0);
- $rs->index_of = array_fill(0, $rs->nn+1, 0);
-
- // PHP style macro replacement ;)
- $NN =& $rs->nn;
- $A0 =& $NN;
-
- // Generate Galois field lookup tables
- $rs->index_of[0] = $A0; // log(zero) = -inf
- $rs->alpha_to[$A0] = 0; // alpha**-inf = 0
- $sr = 1;
-
- for($i=0; $i<$rs->nn; $i++) {
- $rs->index_of[$sr] = $i;
- $rs->alpha_to[$i] = $sr;
- $sr <<= 1;
- if($sr & (1<<$symsize)) {
- $sr ^= $gfpoly;
- }
- $sr &= $rs->nn;
- }
-
- if($sr != 1){
- // field generator polynomial is not primitive!
- $rs = NULL;
- return $rs;
- }
-
- /* Form RS code generator polynomial from its roots */
- $rs->genpoly = array_fill(0, $nroots+1, 0);
-
- $rs->fcr = $fcr;
- $rs->prim = $prim;
- $rs->nroots = $nroots;
- $rs->gfpoly = $gfpoly;
-
- /* Find prim-th root of 1, used in decoding */
- for($iprim=1;($iprim % $prim) != 0;$iprim += $rs->nn)
- ; // intentional empty-body loop!
-
- $rs->iprim = (int)($iprim / $prim);
- $rs->genpoly[0] = 1;
-
- for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) {
- $rs->genpoly[$i+1] = 1;
-
- // Multiply rs->genpoly[] by @**(root + x)
- for ($j = $i; $j > 0; $j--) {
- if ($rs->genpoly[$j] != 0) {
- $rs->genpoly[$j] = $rs->genpoly[$j-1] ^ $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[$j]] + $root)];
- } else {
- $rs->genpoly[$j] = $rs->genpoly[$j-1];
- }
- }
- // rs->genpoly[0] can never be zero
- $rs->genpoly[0] = $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[0]] + $root)];
- }
-
- // convert rs->genpoly[] to index form for quicker encoding
- for ($i = 0; $i <= $nroots; $i++)
- $rs->genpoly[$i] = $rs->index_of[$rs->genpoly[$i]];
-
- return $rs;
- }
-
- //----------------------------------------------------------------------
- public function encode_rs_char($data, &$parity)
- {
- $MM =& $this->mm;
- $NN =& $this->nn;
- $ALPHA_TO =& $this->alpha_to;
- $INDEX_OF =& $this->index_of;
- $GENPOLY =& $this->genpoly;
- $NROOTS =& $this->nroots;
- $FCR =& $this->fcr;
- $PRIM =& $this->prim;
- $IPRIM =& $this->iprim;
- $PAD =& $this->pad;
- $A0 =& $NN;
-
- $parity = array_fill(0, $NROOTS, 0);
-
- for($i=0; $i< ($NN-$NROOTS-$PAD); $i++) {
-
- $feedback = $INDEX_OF[$data[$i] ^ $parity[0]];
- if($feedback != $A0) {
- // feedback term is non-zero
-
- // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
- // always be for the polynomials constructed by init_rs()
- $feedback = $this->modnn($NN - $GENPOLY[$NROOTS] + $feedback);
-
- for($j=1;$j<$NROOTS;$j++) {
- $parity[$j] ^= $ALPHA_TO[$this->modnn($feedback + $GENPOLY[$NROOTS-$j])];
- }
- }
-
- // Shift
- array_shift($parity);
- if($feedback != $A0) {
- array_push($parity, $ALPHA_TO[$this->modnn($feedback + $GENPOLY[0])]);
- } else {
- array_push($parity, 0);
- }
- }
- }
- }
-
- //##########################################################################
-
- class QRrs {
-
- public static $items = array();
-
- //----------------------------------------------------------------------
- public static function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad)
- {
- foreach(self::$items as $rs) {
- if($rs->pad != $pad) continue;
- if($rs->nroots != $nroots) continue;
- if($rs->mm != $symsize) continue;
- if($rs->gfpoly != $gfpoly) continue;
- if($rs->fcr != $fcr) continue;
- if($rs->prim != $prim) continue;
-
- return $rs;
- }
-
- $rs = QRrsItem::init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad);
- array_unshift(self::$items, $rs);
-
- return $rs;
- }
- }
-
-
-
-//---- qrmask.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Masking
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('N1', 3);
- define('N2', 3);
- define('N3', 40);
- define('N4', 10);
-
- class QRmask {
-
- public $runLength = array();
-
- //----------------------------------------------------------------------
- public function __construct()
- {
- $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0);
- }
-
- //----------------------------------------------------------------------
- public function writeFormatInformation($width, &$frame, $mask, $level)
- {
- $blacks = 0;
- $format = QRspec::getFormatInfo($mask, $level);
-
- for($i=0; $i<8; $i++) {
- if($format & 1) {
- $blacks += 2;
- $v = 0x85;
- } else {
- $v = 0x84;
- }
-
- $frame[8][$width - 1 - $i] = chr($v);
- if($i < 6) {
- $frame[$i][8] = chr($v);
- } else {
- $frame[$i + 1][8] = chr($v);
- }
- $format = $format >> 1;
- }
-
- for($i=0; $i<7; $i++) {
- if($format & 1) {
- $blacks += 2;
- $v = 0x85;
- } else {
- $v = 0x84;
- }
-
- $frame[$width - 7 + $i][8] = chr($v);
- if($i == 0) {
- $frame[8][7] = chr($v);
- } else {
- $frame[8][6 - $i] = chr($v);
- }
-
- $format = $format >> 1;
- }
-
- return $blacks;
- }
-
- //----------------------------------------------------------------------
- public function mask0($x, $y) { return ($x+$y)&1; }
- public function mask1($x, $y) { return ($y&1); }
- public function mask2($x, $y) { return ($x%3); }
- public function mask3($x, $y) { return ($x+$y)%3; }
- public function mask4($x, $y) { return (((int)($y/2))+((int)($x/3)))&1; }
- public function mask5($x, $y) { return (($x*$y)&1)+($x*$y)%3; }
- public function mask6($x, $y) { return ((($x*$y)&1)+($x*$y)%3)&1; }
- public function mask7($x, $y) { return ((($x*$y)%3)+(($x+$y)&1))&1; }
-
- //----------------------------------------------------------------------
- private function generateMaskNo($maskNo, $width, $frame)
- {
- $bitMask = array_fill(0, $width, array_fill(0, $width, 0));
-
- for($y=0; $y<$width; $y++) {
- for($x=0; $x<$width; $x++) {
- if(ord($frame[$y][$x]) & 0x80) {
- $bitMask[$y][$x] = 0;
- } else {
- $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y);
- $bitMask[$y][$x] = ($maskFunc == 0)?1:0;
- }
-
- }
- }
-
- return $bitMask;
- }
-
- //----------------------------------------------------------------------
- public static function serial($bitFrame)
- {
- $codeArr = array();
-
- foreach ($bitFrame as $line)
- $codeArr[] = join('', $line);
-
- return gzcompress(join("\n", $codeArr), 9);
- }
-
- //----------------------------------------------------------------------
- public static function unserial($code)
- {
- $codeArr = array();
-
- $codeLines = explode("\n", gzuncompress($code));
- foreach ($codeLines as $line)
- $codeArr[] = str_split($line);
-
- return $codeArr;
- }
-
- //----------------------------------------------------------------------
- public function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly = false)
- {
- $b = 0;
- $bitMask = array();
-
- $fileName = QR_CACHE_DIR.'mask_'.$maskNo.DIRECTORY_SEPARATOR.'mask_'.$width.'_'.$maskNo.'.dat';
-
- if (QR_CACHEABLE) {
- if (file_exists($fileName)) {
- $bitMask = self::unserial(file_get_contents($fileName));
- } else {
- $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d);
- if (!file_exists(QR_CACHE_DIR.'mask_'.$maskNo))
- mkdir(QR_CACHE_DIR.'mask_'.$maskNo);
- file_put_contents($fileName, self::serial($bitMask));
- }
- } else {
- $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d);
- }
-
- if ($maskGenOnly)
- return;
-
- $d = $s;
-
- for($y=0; $y<$width; $y++) {
- for($x=0; $x<$width; $x++) {
- if($bitMask[$y][$x] == 1) {
- $d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]);
- }
- $b += (int)(ord($d[$y][$x]) & 1);
- }
- }
-
- return $b;
- }
-
- //----------------------------------------------------------------------
- public function makeMask($width, $frame, $maskNo, $level)
- {
- $masked = array_fill(0, $width, str_repeat("\0", $width));
- $this->makeMaskNo($maskNo, $width, $frame, $masked);
- $this->writeFormatInformation($width, $masked, $maskNo, $level);
-
- return $masked;
- }
-
- //----------------------------------------------------------------------
- public function calcN1N3($length)
- {
- $demerit = 0;
-
- for($i=0; $i<$length; $i++) {
-
- if($this->runLength[$i] >= 5) {
- $demerit += (N1 + ($this->runLength[$i] - 5));
- }
- if($i & 1) {
- if(($i >= 3) && ($i < ($length-2)) && ($this->runLength[$i] % 3 == 0)) {
- $fact = (int)($this->runLength[$i] / 3);
- if(($this->runLength[$i-2] == $fact) &&
- ($this->runLength[$i-1] == $fact) &&
- ($this->runLength[$i+1] == $fact) &&
- ($this->runLength[$i+2] == $fact)) {
- if(($this->runLength[$i-3] < 0) || ($this->runLength[$i-3] >= (4 * $fact))) {
- $demerit += N3;
- } else if((($i+3) >= $length) || ($this->runLength[$i+3] >= (4 * $fact))) {
- $demerit += N3;
- }
- }
- }
- }
- }
- return $demerit;
- }
-
- //----------------------------------------------------------------------
- public function evaluateSymbol($width, $frame)
- {
- $head = 0;
- $demerit = 0;
-
- for($y=0; $y<$width; $y++) {
- $head = 0;
- $this->runLength[0] = 1;
-
- $frameY = $frame[$y];
-
- if ($y>0)
- $frameYM = $frame[$y-1];
-
- for($x=0; $x<$width; $x++) {
- if(($x > 0) && ($y > 0)) {
- $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]);
- $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]);
-
- if(($b22 | ($w22 ^ 1))&1) {
- $demerit += N2;
- }
- }
- if(($x == 0) && (ord($frameY[$x]) & 1)) {
- $this->runLength[0] = -1;
- $head = 1;
- $this->runLength[$head] = 1;
- } else if($x > 0) {
- if((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) {
- $head++;
- $this->runLength[$head] = 1;
- } else {
- $this->runLength[$head]++;
- }
- }
- }
-
- $demerit += $this->calcN1N3($head+1);
- }
-
- for($x=0; $x<$width; $x++) {
- $head = 0;
- $this->runLength[0] = 1;
-
- for($y=0; $y<$width; $y++) {
- if($y == 0 && (ord($frame[$y][$x]) & 1)) {
- $this->runLength[0] = -1;
- $head = 1;
- $this->runLength[$head] = 1;
- } else if($y > 0) {
- if((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) {
- $head++;
- $this->runLength[$head] = 1;
- } else {
- $this->runLength[$head]++;
- }
- }
- }
-
- $demerit += $this->calcN1N3($head+1);
- }
-
- return $demerit;
- }
-
-
- //----------------------------------------------------------------------
- public function mask($width, $frame, $level)
- {
- $minDemerit = PHP_INT_MAX;
- $bestMaskNum = 0;
- $bestMask = array();
-
- $checked_masks = array(0,1,2,3,4,5,6,7);
-
- if (QR_FIND_FROM_RANDOM !== false) {
-
- $howManuOut = 8-(QR_FIND_FROM_RANDOM % 9);
- for ($i = 0; $i < $howManuOut; $i++) {
- $remPos = rand (0, count($checked_masks)-1);
- unset($checked_masks[$remPos]);
- $checked_masks = array_values($checked_masks);
- }
-
- }
-
- $bestMask = $frame;
-
- foreach($checked_masks as $i) {
- $mask = array_fill(0, $width, str_repeat("\0", $width));
-
- $demerit = 0;
- $blacks = 0;
- $blacks = $this->makeMaskNo($i, $width, $frame, $mask);
- $blacks += $this->writeFormatInformation($width, $mask, $i, $level);
- $blacks = (int)(100 * $blacks / ($width * $width));
- $demerit = (int)((int)(abs($blacks - 50) / 5) * N4);
- $demerit += $this->evaluateSymbol($width, $mask);
-
- if($demerit < $minDemerit) {
- $minDemerit = $demerit;
- $bestMask = $mask;
- $bestMaskNum = $i;
- }
- }
-
- return $bestMask;
- }
-
- //----------------------------------------------------------------------
- }
-
-
-
-
-//---- qrencode.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Main encoder classes.
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRrsblock {
- public $dataLength;
- public $data = array();
- public $eccLength;
- public $ecc = array();
-
- public function __construct($dl, $data, $el, &$ecc, QRrsItem $rs)
- {
- $rs->encode_rs_char($data, $ecc);
-
- $this->dataLength = $dl;
- $this->data = $data;
- $this->eccLength = $el;
- $this->ecc = $ecc;
- }
- };
-
- //##########################################################################
-
- class QRrawcode {
- public $version;
- public $datacode = array();
- public $ecccode = array();
- public $blocks;
- public $rsblocks = array(); //of RSblock
- public $count;
- public $dataLength;
- public $eccLength;
- public $b1;
-
- //----------------------------------------------------------------------
- public function __construct(QRinput $input)
- {
- $spec = array(0,0,0,0,0);
-
- $this->datacode = $input->getByteStream();
- if(is_null($this->datacode)) {
- throw new \Exception('null imput string');
- }
-
- QRspec::getEccSpec($input->getVersion(), $input->getErrorCorrectionLevel(), $spec);
-
- $this->version = $input->getVersion();
- $this->b1 = QRspec::rsBlockNum1($spec);
- $this->dataLength = QRspec::rsDataLength($spec);
- $this->eccLength = QRspec::rsEccLength($spec);
- $this->ecccode = array_fill(0, $this->eccLength, 0);
- $this->blocks = QRspec::rsBlockNum($spec);
-
- $ret = $this->init($spec);
- if($ret < 0) {
- throw new \Exception('block alloc error');
- return null;
- }
-
- $this->count = 0;
- }
-
- //----------------------------------------------------------------------
- public function init(array $spec)
- {
- $dl = QRspec::rsDataCodes1($spec);
- $el = QRspec::rsEccCodes1($spec);
- $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
-
-
- $blockNo = 0;
- $dataPos = 0;
- $eccPos = 0;
- for($i=0; $iecccode,$eccPos);
- $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs);
- $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
-
- $dataPos += $dl;
- $eccPos += $el;
- $blockNo++;
- }
-
- if(QRspec::rsBlockNum2($spec) == 0)
- return 0;
-
- $dl = QRspec::rsDataCodes2($spec);
- $el = QRspec::rsEccCodes2($spec);
- $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
-
- if($rs == NULL) return -1;
-
- for($i=0; $iecccode,$eccPos);
- $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs);
- $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
-
- $dataPos += $dl;
- $eccPos += $el;
- $blockNo++;
- }
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function getCode()
- {
- $ret;
-
- if($this->count < $this->dataLength) {
- $row = $this->count % $this->blocks;
- $col = $this->count / $this->blocks;
- if($col >= $this->rsblocks[0]->dataLength) {
- $row += $this->b1;
- }
- $ret = $this->rsblocks[$row]->data[$col];
- } else if($this->count < $this->dataLength + $this->eccLength) {
- $row = ($this->count - $this->dataLength) % $this->blocks;
- $col = ($this->count - $this->dataLength) / $this->blocks;
- $ret = $this->rsblocks[$row]->ecc[$col];
- } else {
- return 0;
- }
- $this->count++;
-
- return $ret;
- }
- }
-
- //##########################################################################
-
- class QRcode {
-
- public $version;
- public $width;
- public $data;
-
- //----------------------------------------------------------------------
- public function encodeMask(QRinput $input, $mask)
- {
- if($input->getVersion() < 0 || $input->getVersion() > QRSPEC_VERSION_MAX) {
- throw new \Exception('wrong version');
- }
- if($input->getErrorCorrectionLevel() > QR_ECLEVEL_H) {
- throw new \Exception('wrong level');
- }
-
- $raw = new QRrawcode($input);
-
- QRtools::markTime('after_raw');
-
- $version = $raw->version;
- $width = QRspec::getWidth($version);
- $frame = QRspec::newFrame($version);
-
- $filler = new FrameFiller($width, $frame);
- if(is_null($filler)) {
- return NULL;
- }
-
- // inteleaved data and ecc codes
- for($i=0; $i<$raw->dataLength + $raw->eccLength; $i++) {
- $code = $raw->getCode();
- $bit = 0x80;
- for($j=0; $j<8; $j++) {
- $addr = $filler->next();
- $filler->setFrameAt($addr, 0x02 | (($bit & $code) != 0));
- $bit = $bit >> 1;
- }
- }
-
- QRtools::markTime('after_filler');
-
- unset($raw);
-
- // remainder bits
- $j = QRspec::getRemainder($version);
- for($i=0; $i<$j; $i++) {
- $addr = $filler->next();
- $filler->setFrameAt($addr, 0x02);
- }
-
- $frame = $filler->frame;
- unset($filler);
-
-
- // masking
- $maskObj = new QRmask();
- if($mask < 0) {
-
- if (QR_FIND_BEST_MASK) {
- $masked = $maskObj->mask($width, $frame, $input->getErrorCorrectionLevel());
- } else {
- $masked = $maskObj->makeMask($width, $frame, (intval(QR_DEFAULT_MASK) % 8), $input->getErrorCorrectionLevel());
- }
- } else {
- $masked = $maskObj->makeMask($width, $frame, $mask, $input->getErrorCorrectionLevel());
- }
-
- if($masked == NULL) {
- return NULL;
- }
-
- QRtools::markTime('after_mask');
-
- $this->version = $version;
- $this->width = $width;
- $this->data = $masked;
-
- return $this;
- }
-
- //----------------------------------------------------------------------
- public function encodeInput(QRinput $input)
- {
- return $this->encodeMask($input, -1);
- }
-
- //----------------------------------------------------------------------
- public function encodeString8bit($string, $version, $level)
- {
- if(string == NULL) {
- throw new \Exception('empty string!');
- return NULL;
- }
-
- $input = new QRinput($version, $level);
- if($input == NULL) return NULL;
-
- $ret = $input->append($input, QR_MODE_8, strlen($string), str_split($string));
- if($ret < 0) {
- unset($input);
- return NULL;
- }
- return $this->encodeInput($input);
- }
-
- //----------------------------------------------------------------------
- public function encodeString($string, $version, $level, $hint, $casesensitive)
- {
-
- if($hint != QR_MODE_8 && $hint != QR_MODE_KANJI) {
- throw new \Exception('bad hint');
- return NULL;
- }
-
- $input = new QRinput($version, $level);
- if($input == NULL) return NULL;
-
- $ret = QRsplit::splitStringToQRinput($string, $input, $hint, $casesensitive);
- if($ret < 0) {
- return NULL;
- }
-
- return $this->encodeInput($input);
- }
-
- //----------------------------------------------------------------------
- public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false)
- {
- $enc = QRencode::factory($level, $size, $margin);
- return $enc->encodePNG($text, $outfile, $saveandprint=false);
- }
-
- //----------------------------------------------------------------------
- public static function text($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4)
- {
- $enc = QRencode::factory($level, $size, $margin);
- return $enc->encode($text, $outfile);
- }
-
- //----------------------------------------------------------------------
- public static function raw($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4)
- {
- $enc = QRencode::factory($level, $size, $margin);
- return $enc->encodeRAW($text, $outfile);
- }
- }
-
- //##########################################################################
-
- class FrameFiller {
-
- public $width;
- public $frame;
- public $x;
- public $y;
- public $dir;
- public $bit;
-
- //----------------------------------------------------------------------
- public function __construct($width, &$frame)
- {
- $this->width = $width;
- $this->frame = $frame;
- $this->x = $width - 1;
- $this->y = $width - 1;
- $this->dir = -1;
- $this->bit = -1;
- }
-
- //----------------------------------------------------------------------
- public function setFrameAt($at, $val)
- {
- $this->frame[$at['y']][$at['x']] = chr($val);
- }
-
- //----------------------------------------------------------------------
- public function getFrameAt($at)
- {
- return ord($this->frame[$at['y']][$at['x']]);
- }
-
- //----------------------------------------------------------------------
- public function next()
- {
- do {
-
- if($this->bit == -1) {
- $this->bit = 0;
- return array('x'=>$this->x, 'y'=>$this->y);
- }
-
- $x = $this->x;
- $y = $this->y;
- $w = $this->width;
-
- if($this->bit == 0) {
- $x--;
- $this->bit++;
- } else {
- $x++;
- $y += $this->dir;
- $this->bit--;
- }
-
- if($this->dir < 0) {
- if($y < 0) {
- $y = 0;
- $x -= 2;
- $this->dir = 1;
- if($x == 6) {
- $x--;
- $y = 9;
- }
- }
- } else {
- if($y == $w) {
- $y = $w - 1;
- $x -= 2;
- $this->dir = -1;
- if($x == 6) {
- $x--;
- $y -= 8;
- }
- }
- }
- if($x < 0 || $y < 0) return null;
-
- $this->x = $x;
- $this->y = $y;
-
- } while(ord($this->frame[$y][$x]) & 0x80);
-
- return array('x'=>$x, 'y'=>$y);
- }
-
- } ;
-
- //##########################################################################
-
- class QRencode {
-
- public $casesensitive = true;
- public $eightbit = false;
-
- public $version = 0;
- public $size = 3;
- public $margin = 4;
-
- public $structured = 0; // not supported yet
-
- public $level = QR_ECLEVEL_L;
- public $hint = QR_MODE_8;
-
- //----------------------------------------------------------------------
- public static function factory($level = QR_ECLEVEL_L, $size = 3, $margin = 4)
- {
- $enc = new QRencode();
- $enc->size = $size;
- $enc->margin = $margin;
-
- switch ($level.'') {
- case '0':
- case '1':
- case '2':
- case '3':
- $enc->level = $level;
- break;
- case 'l':
- case 'L':
- $enc->level = QR_ECLEVEL_L;
- break;
- case 'm':
- case 'M':
- $enc->level = QR_ECLEVEL_M;
- break;
- case 'q':
- case 'Q':
- $enc->level = QR_ECLEVEL_Q;
- break;
- case 'h':
- case 'H':
- $enc->level = QR_ECLEVEL_H;
- break;
- }
-
- return $enc;
- }
-
- //----------------------------------------------------------------------
- public function encodeRAW($intext, $outfile = false)
- {
- $code = new QRcode();
-
- if($this->eightbit) {
- $code->encodeString8bit($intext, $this->version, $this->level);
- } else {
- $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive);
- }
-
- return $code->data;
- }
-
- //----------------------------------------------------------------------
- public function encode($intext, $outfile = false)
- {
- $code = new QRcode();
-
- if($this->eightbit) {
- $code->encodeString8bit($intext, $this->version, $this->level);
- } else {
- $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive);
- }
-
- QRtools::markTime('after_encode');
-
- if ($outfile!== false) {
- file_put_contents($outfile, join("\n", QRtools::binarize($code->data)));
- } else {
- return QRtools::binarize($code->data);
- }
- }
-
- //----------------------------------------------------------------------
- public function encodePNG($intext, $outfile = false,$saveandprint=false)
- {
- try {
-
- ob_start();
- $tab = $this->encode($intext);
- $err = ob_get_contents();
- ob_end_clean();
-
- if ($err != '')
- QRtools::log($outfile, $err);
-
- $maxSize = (int)(QR_PNG_MAXIMUM_SIZE / (count($tab)+2*$this->margin));
-
- QRimage::png($tab, $outfile, min(max(1, $this->size), $maxSize), $this->margin,$saveandprint);
-
- } catch (Exception $e) {
-
- QRtools::log($outfile, $e->getMessage());
-
- }
- }
- }
-
-
diff --git a/niucloud/core/core/util/Queue.php b/niucloud/core/core/util/Queue.php
deleted file mode 100644
index 912b4db1..00000000
--- a/niucloud/core/core/util/Queue.php
+++ /dev/null
@@ -1,251 +0,0 @@
-default_method = $this->method;
- }
-
- /**
- * 实例化当前队列
- * @return static
- */
- public static function instance()
- {
- if (is_null(self::$instance)) {
- self::$instance = new static();
- }
- return self::$instance;
- }
-
- /**
- * 设置队列名称
- * @param string $queue_name
- * @return $this
- */
- public function setQueueName(string $queue_name)
- {
- $this->queue_name = $queue_name;
- return $this;
- }
-
- /**
- * 加入队列
- * @param array|null $data
- * @return bool
- */
- public function push()
- {
- if (!$this->job) {
- return $this->setError('JOB_NOT_EXISTS');
- }
- $jodValue = $this->getValues();
- $res = $this->send(...$jodValue);
- if (!$res) {
- $res = $this->send(...$jodValue);
- if (!$res) {
- Log::error('队列推送失败,参数:' . json_encode($jodValue, JSON_THROW_ON_ERROR));
- }
- }
-// //todo 队列扩展策略调度,
-
- $this->clean();
- return $res;
- }
-
- /**
- * 向队列发送一条消息
- * @param $queue
- * @param $data
- * @param $delay
- * @return mixed
- */
- public function send($queue, $data, $delay = 0)
- {
- $pre_queue = md5(root_path()); //1.0.5版本之前为redis-queue
- $queue_waiting = $pre_queue.'{redis-queue}-waiting'; //1.0.5版本之前为redis-queue-waiting
- $queue_delay = $pre_queue.'{redis-queue}-delayed';//1.0.5版本之前为redis-queue-delayed
- $now = time();
- if (extension_loaded('redis')) {
- try {
- $redis = new \Redis();
- $redis->connect(env('redis.redis_hostname'), env('redis.port'), 8);
- if (env('redis.redis_password', '')) {
- $redis->auth(env('redis.redis_password', ''));
- }
- $redis->select(env('redis.select'));
- if(!$redis->ping()){
- $redis->connect(env('redis.redis_hostname'), env('redis.port'), 8);
- if (env('redis.redis_password', '')) {
- $redis->auth(env('redis.redis_password', ''));
- }
- $redis->select(env('redis.select'));
- }
- $package_str = json_encode([
- 'id' => rand(),
- 'time' => $now,
- 'delay' => $delay,
- 'attempts' => 0,
- 'queue' => $queue,
- 'data' => $data
- ]);
- if ($delay) {
- if(!$redis->zAdd($queue_delay, ($now + $delay), $package_str)){
- $redis->zAdd($queue_delay, ($now + $delay), $package_str);
- }
- return true;
- }
- if(!$redis->lPush($queue_waiting . $queue, $package_str)){
- $res = $redis->lPush($queue_waiting . $queue, $package_str);
- Log::write($res);
- }
- return true;
- } catch ( Throwable $e ) {
- return false;
- }
- }else{
- return false;
- }
-
- }
-
- /**
- * 清除数据
- */
- public function clean()
- {
- $this->secs = 0;
- $this->data = [];
- $this->queue_name = null;
- $this->method = $this->default_method;
- }
-
- /**
- * 获取参数
- * @param $data
- * @return array
- */
- protected function getValues()
- {
-
- return [$this->job, ['method' => $this->method, 'data' => $this->data], $this->secs];
- }
-
- /**
- * 不可访问时调用
- * @param $method
- * @param $arguments
- * @return $this
- * @throws Exception
- * @throws Exception
- * @throws Exception
- */
- public function __call($method, $arguments)
- {
- if (in_array($method, $this->allow_function)) {
- if ($method === 'data') {
- $this->{$method} = $arguments;
- } else {
- $this->{$method} = $arguments[0] ?? null;
- }
- return $this;
- } else {
- throw new Exception('Method does not exist' . __CLASS__ . '->' . $method . '()');
- }
- }
-
- /**
- * 设置错误信息
- * @param string|null $error
- * @return bool
- */
- protected function setError(?string $error = null)
- {
- $this->error = $error;
- return false;
- }
-
- /**
- * 获取错误信息
- * @return string
- */
- public function getError()
- {
- $error = $this->error;
- $this->error = null;
- return $error;
- }
-}
diff --git a/niucloud/core/core/util/Snowflake.php b/niucloud/core/core/util/Snowflake.php
deleted file mode 100644
index 84f2322c..00000000
--- a/niucloud/core/core/util/Snowflake.php
+++ /dev/null
@@ -1,91 +0,0 @@
- self::MAX_DATA_CENTER_ID || $data_center_id < 0) {
-// throw new Exception('Data center ID can not be greater than ' . self::MAX_DATA_CENTER_ID . ' or less than 0');
-// }
-//
-// if ($machine_id > self::MAX_MACHINE_ID || $machine_id < 0) {
-// throw new Exception('Machine ID can not be greater than ' . self::MAX_MACHINE_ID . ' or less than 0');
-// }
-
-// $this->data_center_id = $data_center_id;
-// $this->machine_id = $machine_id;
- $this->last_timestamp = 0;
- $this->sequence = 0;
- }
-
- /**
- * @throws Exception
- */
- public function generateId()
- {
- $timestamp = $this->getTimestamp();
-
- // 当前时间小于上一次生成时间,发生时钟回拨
- if ($timestamp < $this->last_timestamp) {
- throw new Exception('Clock moved backwards.');
- }
-
- // 当前时间与上一次生成时间相同
- if ($timestamp == $this->last_timestamp) {
- $this->sequence = ($this->sequence + 1) & self::MAX_SEQUENCE;
-
- // 当前毫秒的序列已经达到最大值,等待下一毫秒
- if ($this->sequence == 0) {
- $timestamp = $this->nextMillis($this->last_timestamp);
- }
- } else {
- // 新的一毫秒,序列从0开始
- $this->sequence = 0;
- }
-
- $this->last_timestamp = $timestamp;
-
- return (($timestamp - self::START_EPOCH) << (self::SEQUENCE_BITS))
-// | ($this->data_center_id << (self::SEQUENCE_BITS + self::MACHINE_ID_BITS))
-// | ($this->machine_id << self::SEQUENCE_BITS)
- | $this->sequence;
- }
-
- private function getTimestamp()
- {
- return floor(microtime(true) * 1000);
- }
-
- private function nextMillis($last_timestamp)
- {
- $timestamp = $this->getTimestamp();
-
- while ($timestamp <= $last_timestamp) {
- $timestamp = $this->getTimestamp();
- }
-
- return $timestamp;
- }
-}
\ No newline at end of file
diff --git a/niucloud/core/core/util/Terminal.php b/niucloud/core/core/util/Terminal.php
deleted file mode 100644
index 964097e8..00000000
--- a/niucloud/core/core/util/Terminal.php
+++ /dev/null
@@ -1,56 +0,0 @@
- array("pipe", "r"), // 标准输入,我们不需要
- 1 => array("pipe", "w"), // 标准输出,我们需要将其捕获
- 2 => array("pipe", "w") // 标准错误,我们也需要将其捕获
- );
- $process = proc_open($command, $descriptorspec, $pipes, $cwd);
-
- // 检查进程是否成功创建
- if (!is_resource($process)) {
- return "Could not execute command: $command";
- }
-
- // 从管道中获取命令的输出
- $output = '';
- while (!feof($pipes[1])) {
- $output .= fgets($pipes[1]);
- }
- while (!feof($pipes[2])) {
- $output .= fgets($pipes[2]);
- }
-
- // 关闭管道和进程
- fclose($pipes[0]);
- fclose($pipes[1]);
- fclose($pipes[2]);
- $status = proc_close($process);
-
- // 判断命令的执行结果
- if ($status === 0) {
- return str_contains($output, 'Command failed') ? $output : true;
- } else {
- return $output;
- }
- }
-}
\ No newline at end of file
diff --git a/niucloud/core/core/util/TokenAuth.php b/niucloud/core/core/util/TokenAuth.php
deleted file mode 100644
index 35cd7310..00000000
--- a/niucloud/core/core/util/TokenAuth.php
+++ /dev/null
@@ -1,109 +0,0 @@
-request->host();
- $time = time();
- $params += [
- 'iss' => $host,
- 'aud' => $host,
- 'iat' => $time,
- 'nbf' => $time,
- 'exp' => $time + $expire_time,
- ];
-
- $params['jti'] = $id . "_" . $type;
- $token = JWT::encode($params, Env::get('app.app_key', 'niucloud456$%^'));
- $cache_token = Cache::get("token_" . $params['jti']);
- $cache_token_arr = $cache_token ?: [];
-// if(!empty($cache_token))
-// {
-//
-// $cache_token_arr[] = $token;
-// }
- $cache_token_arr[] = $token;
- Cache::tag("token")->set("token_" . $params['jti'], $cache_token_arr);
- return compact('token', 'params');
- }
-
- /**
- * 解析token
- * @param string $token
- * @param string $type
- * @return array
- */
- public static function parseToken(string $token, string $type): array
- {
- $payload = JWT::decode($token, Env::get('app.app_key', 'niucloud456$%^'), ['HS256']);
- if (!empty($payload)) {
- $token_info = json_decode(json_encode($payload), true, 512, JSON_THROW_ON_ERROR);
-
- if (explode("_", $token_info['jti'])[1] != $type) {
- return [];
- }
- if (!empty($token_info) && !in_array($token, Cache::get('token_' . $token_info['jti'], []))) {
- return [];
- }
- return $token_info;
- } else {
- return [];
- }
- }
-
- /**
- * 清理token
- * @param int $id
- * @param string $type
- * @param string|null $token
- * @return Response
- */
- public static function clearToken(int $id, string $type, ?string $token = '')
- {
- if (!empty($token)) {
- $token_cache = Cache::get("token_" . $id . "_" . $type, []);
- //todo 也可以通过修改过期时间来实现
- if (!empty($token_cache)) {
- if (($key = array_search($token, $token_cache)) !== false) {
- array_splice($token_cache, $key, 1);
- }
- Cache::set("token_" . $id . "_" . $type, $token_cache);
- }
- } else {
- Cache::set("token_" . $id . "_" . $type, []);
- }
- return success();
- }
-}
diff --git a/niucloud/core/core/util/barcode/class/BCGArgumentException.php b/niucloud/core/core/util/barcode/class/BCGArgumentException.php
deleted file mode 100644
index 030f3e46..00000000
--- a/niucloud/core/core/util/barcode/class/BCGArgumentException.php
+++ /dev/null
@@ -1,25 +0,0 @@
-param = $param;
- parent::__construct($message, 20000);
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGBarcode.php b/niucloud/core/core/util/barcode/class/BCGBarcode.php
deleted file mode 100644
index 317e773b..00000000
--- a/niucloud/core/core/util/barcode/class/BCGBarcode.php
+++ /dev/null
@@ -1,436 +0,0 @@
-setOffsetX(0);
- $this->setOffsetY(0);
- $this->setForegroundColor(0x000000);
- $this->setBackgroundColor(0xffffff);
- $this->setScale(1);
- }
-
- /**
- * Parses the text before displaying it.
- *
- * @param mixed $text
- */
- public function parse($text) {
- }
-
- /**
- * Gets the foreground color of the barcode.
- *
- * @return BCGColor
- */
- public function getForegroundColor() {
- return $this->colorFg;
- }
-
- /**
- * Sets the foreground color of the barcode. It could be a BCGColor
- * value or simply a language code (white, black, yellow...) or hex value.
- *
- * @param mixed $code
- */
- public function setForegroundColor($code) {
- if ($code instanceof BCGColor) {
- $this->colorFg = $code;
- } else {
- $this->colorFg = new BCGColor($code);
- }
- }
-
- /**
- * Gets the background color of the barcode.
- *
- * @return BCGColor
- */
- public function getBackgroundColor() {
- return $this->colorBg;
- }
-
- /**
- * Sets the background color of the barcode. It could be a BCGColor
- * value or simply a language code (white, black, yellow...) or hex value.
- *
- * @param mixed $code
- */
- public function setBackgroundColor($code) {
- if ($code instanceof BCGColor) {
- $this->colorBg = $code;
- } else {
- $this->colorBg = new BCGColor($code);
- }
-
- foreach ($this->labels as $label) {
- $label->setBackgroundColor($this->colorBg);
- }
- }
-
- /**
- * Sets the color.
- *
- * @param mixed $fg
- * @param mixed $bg
- */
- public function setColor($fg, $bg) {
- $this->setForegroundColor($fg);
- $this->setBackgroundColor($bg);
- }
-
- /**
- * Gets the scale of the barcode.
- *
- * @return int
- */
- public function getScale() {
- return $this->scale;
- }
-
- /**
- * Sets the scale of the barcode in pixel.
- * If the scale is lower than 1, an exception is raised.
- *
- * @param int $scale
- */
- public function setScale($scale) {
- $scale = intval($scale);
- if ($scale <= 0) {
- throw new BCGArgumentException('The scale must be larger than 0.', 'scale');
- }
-
- $this->scale = $scale;
- }
-
- /**
- * Abstract method that draws the barcode on the resource.
- *
- * @param resource $im
- */
- public abstract function draw($im);
-
- /**
- * Returns the maximal size of a barcode.
- * [0]->width
- * [1]->height
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $labels = $this->getBiggestLabels(false);
- $pixelsAround = array(0, 0, 0, 0); // TRBL
- if (isset($labels[BCGLabel::POSITION_TOP])) {
- $dimension = $labels[BCGLabel::POSITION_TOP]->getDimension();
- $pixelsAround[0] += $dimension[1];
- }
-
- if (isset($labels[BCGLabel::POSITION_RIGHT])) {
- $dimension = $labels[BCGLabel::POSITION_RIGHT]->getDimension();
- $pixelsAround[1] += $dimension[0];
- }
-
- if (isset($labels[BCGLabel::POSITION_BOTTOM])) {
- $dimension = $labels[BCGLabel::POSITION_BOTTOM]->getDimension();
- $pixelsAround[2] += $dimension[1];
- }
-
- if (isset($labels[BCGLabel::POSITION_LEFT])) {
- $dimension = $labels[BCGLabel::POSITION_LEFT]->getDimension();
- $pixelsAround[3] += $dimension[0];
- }
-
- $finalW = ($w + $this->offsetX) * $this->scale;
- $finalH = ($h + $this->offsetY) * $this->scale;
-
- // This section will check if a top/bottom label is too big for its width and left/right too big for its height
- $reversedLabels = $this->getBiggestLabels(true);
- foreach ($reversedLabels as $label) {
- $dimension = $label->getDimension();
- $alignment = $label->getAlignment();
- if ($label->getPosition() === BCGLabel::POSITION_LEFT || $label->getPosition() === BCGLabel::POSITION_RIGHT) {
- if ($alignment === BCGLabel::ALIGN_TOP) {
- $pixelsAround[2] = max($pixelsAround[2], $dimension[1] - $finalH);
- } elseif ($alignment === BCGLabel::ALIGN_CENTER) {
- $temp = ceil(($dimension[1] - $finalH) / 2);
- $pixelsAround[0] = max($pixelsAround[0], $temp);
- $pixelsAround[2] = max($pixelsAround[2], $temp);
- } elseif ($alignment === BCGLabel::ALIGN_BOTTOM) {
- $pixelsAround[0] = max($pixelsAround[0], $dimension[1] - $finalH);
- }
- } else {
- if ($alignment === BCGLabel::ALIGN_LEFT) {
- $pixelsAround[1] = max($pixelsAround[1], $dimension[0] - $finalW);
- } elseif ($alignment === BCGLabel::ALIGN_CENTER) {
- $temp = ceil(($dimension[0] - $finalW) / 2);
- $pixelsAround[1] = max($pixelsAround[1], $temp);
- $pixelsAround[3] = max($pixelsAround[3], $temp);
- } elseif ($alignment === BCGLabel::ALIGN_RIGHT) {
- $pixelsAround[3] = max($pixelsAround[3], $dimension[0] - $finalW);
- }
- }
- }
-
- $this->pushLabel[0] = $pixelsAround[3];
- $this->pushLabel[1] = $pixelsAround[0];
-
- $finalW = ($w + $this->offsetX) * $this->scale + $pixelsAround[1] + $pixelsAround[3];
- $finalH = ($h + $this->offsetY) * $this->scale + $pixelsAround[0] + $pixelsAround[2];
-
- return array($finalW, $finalH);
- }
-
- /**
- * Gets the X offset.
- *
- * @return int
- */
- public function getOffsetX() {
- return $this->offsetX;
- }
-
- /**
- * Sets the X offset.
- *
- * @param int $offsetX
- */
- public function setOffsetX($offsetX) {
- $offsetX = intval($offsetX);
- if ($offsetX < 0) {
- throw new BCGArgumentException('The offset X must be 0 or larger.', 'offsetX');
- }
-
- $this->offsetX = $offsetX;
- }
-
- /**
- * Gets the Y offset.
- *
- * @return int
- */
- public function getOffsetY() {
- return $this->offsetY;
- }
-
- /**
- * Sets the Y offset.
- *
- * @param int $offsetY
- */
- public function setOffsetY($offsetY) {
- $offsetY = intval($offsetY);
- if ($offsetY < 0) {
- throw new BCGArgumentException('The offset Y must be 0 or larger.', 'offsetY');
- }
-
- $this->offsetY = $offsetY;
- }
-
- /**
- * Adds the label to the drawing.
- *
- * @param BCGLabel $label
- */
- public function addLabel(BCGLabel $label) {
- $label->setBackgroundColor($this->colorBg);
- $this->labels[] = $label;
- }
-
- /**
- * Removes the label from the drawing.
- *
- * @param BCGLabel $label
- */
- public function removeLabel(BCGLabel $label) {
- $remove = -1;
- $c = count($this->labels);
- for ($i = 0; $i < $c; $i++) {
- if ($this->labels[$i] === $label) {
- $remove = $i;
- break;
- }
- }
-
- if ($remove > -1) {
- array_splice($this->labels, $remove, 1);
- }
- }
-
- /**
- * Clears the labels.
- */
- public function clearLabels() {
- $this->labels = array();
- }
-
- /**
- * Draws the text.
- * The coordinate passed are the positions of the barcode.
- * $x1 and $y1 represent the top left corner.
- * $x2 and $y2 represent the bottom right corner.
- *
- * @param resource $im
- * @param int $x1
- * @param int $y1
- * @param int $x2
- * @param int $y2
- */
- protected function drawText($im, $x1, $y1, $x2, $y2) {
- foreach ($this->labels as $label) {
- $label->draw($im,
- ($x1 + $this->offsetX) * $this->scale + $this->pushLabel[0],
- ($y1 + $this->offsetY) * $this->scale + $this->pushLabel[1],
- ($x2 + $this->offsetX) * $this->scale + $this->pushLabel[0],
- ($y2 + $this->offsetY) * $this->scale + $this->pushLabel[1]);
- }
- }
-
- /**
- * Draws 1 pixel on the resource at a specific position with a determined color.
- *
- * @param resource $im
- * @param int $x
- * @param int $y
- * @param int $color
- */
- protected function drawPixel($im, $x, $y, $color = self::COLOR_FG) {
- $xR = ($x + $this->offsetX) * $this->scale + $this->pushLabel[0];
- $yR = ($y + $this->offsetY) * $this->scale + $this->pushLabel[1];
-
- // We always draw a rectangle
- imagefilledrectangle($im,
- $xR,
- $yR,
- $xR + $this->scale - 1,
- $yR + $this->scale - 1,
- $this->getColor($im, $color));
- }
-
- /**
- * Draws an empty rectangle on the resource at a specific position with a determined color.
- *
- * @param resource $im
- * @param int $x1
- * @param int $y1
- * @param int $x2
- * @param int $y2
- * @param int $color
- */
- protected function drawRectangle($im, $x1, $y1, $x2, $y2, $color = self::COLOR_FG) {
- if ($this->scale === 1) {
- imagefilledrectangle($im,
- ($x1 + $this->offsetX) + $this->pushLabel[0],
- ($y1 + $this->offsetY) + $this->pushLabel[1],
- ($x2 + $this->offsetX) + $this->pushLabel[0],
- ($y2 + $this->offsetY) + $this->pushLabel[1],
- $this->getColor($im, $color));
- } else {
- imagefilledrectangle($im, ($x1 + $this->offsetX) * $this->scale + $this->pushLabel[0], ($y1 + $this->offsetY) * $this->scale + $this->pushLabel[1], ($x2 + $this->offsetX) * $this->scale + $this->pushLabel[0] + $this->scale - 1, ($y1 + $this->offsetY) * $this->scale + $this->pushLabel[1] + $this->scale - 1, $this->getColor($im, $color));
- imagefilledrectangle($im, ($x1 + $this->offsetX) * $this->scale + $this->pushLabel[0], ($y1 + $this->offsetY) * $this->scale + $this->pushLabel[1], ($x1 + $this->offsetX) * $this->scale + $this->pushLabel[0] + $this->scale - 1, ($y2 + $this->offsetY) * $this->scale + $this->pushLabel[1] + $this->scale - 1, $this->getColor($im, $color));
- imagefilledrectangle($im, ($x2 + $this->offsetX) * $this->scale + $this->pushLabel[0], ($y1 + $this->offsetY) * $this->scale + $this->pushLabel[1], ($x2 + $this->offsetX) * $this->scale + $this->pushLabel[0] + $this->scale - 1, ($y2 + $this->offsetY) * $this->scale + $this->pushLabel[1] + $this->scale - 1, $this->getColor($im, $color));
- imagefilledrectangle($im, ($x1 + $this->offsetX) * $this->scale + $this->pushLabel[0], ($y2 + $this->offsetY) * $this->scale + $this->pushLabel[1], ($x2 + $this->offsetX) * $this->scale + $this->pushLabel[0] + $this->scale - 1, ($y2 + $this->offsetY) * $this->scale + $this->pushLabel[1] + $this->scale - 1, $this->getColor($im, $color));
- }
- }
-
- /**
- * Draws a filled rectangle on the resource at a specific position with a determined color.
- *
- * @param resource $im
- * @param int $x1
- * @param int $y1
- * @param int $x2
- * @param int $y2
- * @param int $color
- */
- protected function drawFilledRectangle($im, $x1, $y1, $x2, $y2, $color = self::COLOR_FG) {
- if ($x1 > $x2) { // Swap
- $x1 ^= $x2 ^= $x1 ^= $x2;
- }
-
- if ($y1 > $y2) { // Swap
- $y1 ^= $y2 ^= $y1 ^= $y2;
- }
-
- imagefilledrectangle($im,
- ($x1 + $this->offsetX) * $this->scale + $this->pushLabel[0],
- ($y1 + $this->offsetY) * $this->scale + $this->pushLabel[1],
- ($x2 + $this->offsetX) * $this->scale + $this->pushLabel[0] + $this->scale - 1,
- ($y2 + $this->offsetY) * $this->scale + $this->pushLabel[1] + $this->scale - 1,
- $this->getColor($im, $color));
- }
-
- /**
- * Allocates the color based on the integer.
- *
- * @param resource $im
- * @param int $color
- * @return resource
- */
- protected function getColor($im, $color) {
- if ($color === self::COLOR_BG) {
- return $this->colorBg->allocate($im);
- } else {
- return $this->colorFg->allocate($im);
- }
- }
-
- /**
- * Returning the biggest label widths for LEFT/RIGHT and heights for TOP/BOTTOM.
- *
- * @param bool $reversed
- * @return BCGLabel[]
- */
- private function getBiggestLabels($reversed = false) {
- $searchLR = $reversed ? 1 : 0;
- $searchTB = $reversed ? 0 : 1;
-
- $labels = array();
- foreach ($this->labels as $label) {
- $position = $label->getPosition();
- if (isset($labels[$position])) {
- $savedDimension = $labels[$position]->getDimension();
- $dimension = $label->getDimension();
- if ($position === BCGLabel::POSITION_LEFT || $position === BCGLabel::POSITION_RIGHT) {
- if ($dimension[$searchLR] > $savedDimension[$searchLR]) {
- $labels[$position] = $label;
- }
- } else {
- if ($dimension[$searchTB] > $savedDimension[$searchTB]) {
- $labels[$position] = $label;
- }
- }
- } else {
- $labels[$position] = $label;
- }
- }
-
- return $labels;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGBarcode1D.php b/niucloud/core/core/util/barcode/class/BCGBarcode1D.php
deleted file mode 100644
index 7202a8cb..00000000
--- a/niucloud/core/core/util/barcode/class/BCGBarcode1D.php
+++ /dev/null
@@ -1,259 +0,0 @@
-setThickness(30);
-
- $this->defaultLabel = new BCGLabel();
- $this->defaultLabel->setPosition(BCGLabel::POSITION_BOTTOM);
- $this->setLabel(self::AUTO_LABEL);
- $this->setFont(new BCGFontPhp(5));
-
- $this->text = '';
- $this->checksumValue = false;
- $this->positionX = 0;
- }
-
- /**
- * Gets the thickness.
- *
- * @return int
- */
- public function getThickness() {
- return $this->thickness;
- }
-
- /**
- * Sets the thickness.
- *
- * @param int $thickness
- */
- public function setThickness($thickness) {
- $thickness = intval($thickness);
- if ($thickness <= 0) {
- throw new BCGArgumentException('The thickness must be larger than 0.', 'thickness');
- }
-
- $this->thickness = $thickness;
- }
-
- /**
- * Gets the label.
- * If the label was set to BCGBarcode1D::AUTO_LABEL, the label will display the value from the text parsed.
- *
- * @return string
- */
- public function getLabel() {
- $label = $this->label;
- if ($this->label === self::AUTO_LABEL) {
- $label = $this->text;
- if ($this->displayChecksum === true && ($checksum = $this->processChecksum()) !== false) {
- $label .= $checksum;
- }
- }
-
- return $label;
- }
-
- /**
- * Sets the label.
- * You can use BCGBarcode::AUTO_LABEL to have the label automatically written based on the parsed text.
- *
- * @param string $label
- */
- public function setLabel($label) {
- $this->label = $label;
- }
-
- /**
- * Gets the font.
- *
- * @return BCGFont
- */
- public function getFont() {
- return $this->font;
- }
-
- /**
- * Sets the font.
- *
- * @param mixed $font BCGFont or int
- */
- public function setFont($font) {
- if (is_int($font)) {
- if ($font === 0) {
- $font = null;
- } else {
- $font = new BCGFontPhp($font);
- }
- }
-
- $this->font = $font;
- }
-
- /**
- * Parses the text before displaying it.
- *
- * @param mixed $text
- */
- public function parse($text) {
- $this->text = $text;
- $this->checksumValue = false; // Reset checksumValue
- $this->validate();
-
- parent::parse($text);
-
- $this->addDefaultLabel();
- }
-
- /**
- * Gets the checksum of a Barcode.
- * If no checksum is available, return FALSE.
- *
- * @return string
- */
- public function getChecksum() {
- return $this->processChecksum();
- }
-
- /**
- * Sets if the checksum is displayed with the label or not.
- * The checksum must be activated in some case to make this variable effective.
- *
- * @param boolean $displayChecksum
- */
- public function setDisplayChecksum($displayChecksum) {
- $this->displayChecksum = (bool)$displayChecksum;
- }
-
- /**
- * Adds the default label.
- */
- protected function addDefaultLabel() {
- $label = $this->getLabel();
- $font = $this->font;
- if ($label !== null && $label !== '' && $font !== null && $this->defaultLabel !== null) {
- $this->defaultLabel->setText($label);
- $this->defaultLabel->setFont($font);
- $this->addLabel($this->defaultLabel);
- }
- }
-
- /**
- * Validates the input
- */
- protected function validate() {
- // No validation in the abstract class.
- }
-
- /**
- * Returns the index in $keys (useful for checksum).
- *
- * @param mixed $var
- * @return mixed
- */
- protected function findIndex($var) {
- return array_search($var, $this->keys);
- }
-
- /**
- * Returns the code of the char (useful for drawing bars).
- *
- * @param mixed $var
- * @return string
- */
- protected function findCode($var) {
- return $this->code[$this->findIndex($var)];
- }
-
- /**
- * Draws all chars thanks to $code. If $startBar is true, the line begins by a space.
- * If $startBar is false, the line begins by a bar.
- *
- * @param resource $im
- * @param string $code
- * @param boolean $startBar
- */
- protected function drawChar($im, $code, $startBar = true) {
- $colors = array(BCGBarcode::COLOR_FG, BCGBarcode::COLOR_BG);
- $currentColor = $startBar ? 0 : 1;
- $c = strlen($code);
- for ($i = 0; $i < $c; $i++) {
- for ($j = 0; $j < intval($code[$i]) + 1; $j++) {
- $this->drawSingleBar($im, $colors[$currentColor]);
- $this->nextX();
- }
-
- $currentColor = ($currentColor + 1) % 2;
- }
- }
-
- /**
- * Draws a Bar of $color depending of the resolution.
- *
- * @param resource $img
- * @param int $color
- */
- protected function drawSingleBar($im, $color) {
- $this->drawFilledRectangle($im, $this->positionX, 0, $this->positionX, $this->thickness - 1, $color);
- }
-
- /**
- * Moving the pointer right to write a bar.
- */
- protected function nextX() {
- $this->positionX++;
- }
-
- /**
- * Method that saves FALSE into the checksumValue. This means no checksum
- * but this method should be overriden when needed.
- */
- protected function calculateChecksum() {
- $this->checksumValue = false;
- }
-
- /**
- * Returns FALSE because there is no checksum. This method should be
- * overriden to return correctly the checksum in string with checksumValue.
- *
- * @return string
- */
- protected function processChecksum() {
- return false;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGColor.php b/niucloud/core/core/util/barcode/class/BCGColor.php
deleted file mode 100644
index 7bd0650d..00000000
--- a/niucloud/core/core/util/barcode/class/BCGColor.php
+++ /dev/null
@@ -1,154 +0,0 @@
-r = intval($args[0]);
- $this->g = intval($args[1]);
- $this->b = intval($args[2]);
- } elseif ($c === 1) {
- if (is_string($args[0]) && strlen($args[0]) === 7 && $args[0][0] === '#') { // Hex Value in String
- $this->r = intval(substr($args[0], 1, 2), 16);
- $this->g = intval(substr($args[0], 3, 2), 16);
- $this->b = intval(substr($args[0], 5, 2), 16);
- } else {
- if (is_string($args[0])) {
- $args[0] = self::getColor($args[0]);
- }
-
- $args[0] = intval($args[0]);
- $this->r = ($args[0] & 0xff0000) >> 16;
- $this->g = ($args[0] & 0x00ff00) >> 8;
- $this->b = ($args[0] & 0x0000ff);
- }
- } else {
- $this->r = $this->g = $this->b = 0;
- }
- }
-
- /**
- * Sets the color transparent.
- *
- * @param bool $transparent
- */
- public function setTransparent($transparent) {
- $this->transparent = $transparent;
- }
-
- /**
- * Returns Red Color.
- *
- * @return int
- */
- public function r() {
- return $this->r;
- }
-
- /**
- * Returns Green Color.
- *
- * @return int
- */
- public function g() {
- return $this->g;
- }
-
- /**
- * Returns Blue Color.
- *
- * @return int
- */
- public function b() {
- return $this->b;
- }
-
- /**
- * Returns the int value for PHP color.
- *
- * @param resource $im
- * @return int
- */
- public function allocate(&$im) {
- $allocated = imagecolorallocate($im, $this->r, $this->g, $this->b);
- if ($this->transparent) {
- return imagecolortransparent($im, $allocated);
- } else {
- return $allocated;
- }
- }
-
- /**
- * Returns class of BCGColor depending of the string color.
- *
- * If the color doens't exist, it takes the default one.
- *
- * @param string $code
- * @param string $default
- */
- public static function getColor($code, $default = 'white') {
- switch(strtolower($code)) {
- case '':
- case 'white':
- return 0xffffff;
- case 'black':
- return 0x000000;
- case 'maroon':
- return 0x800000;
- case 'red':
- return 0xff0000;
- case 'orange':
- return 0xffa500;
- case 'yellow':
- return 0xffff00;
- case 'olive':
- return 0x808000;
- case 'purple':
- return 0x800080;
- case 'fuchsia':
- return 0xff00ff;
- case 'lime':
- return 0x00ff00;
- case 'green':
- return 0x008000;
- case 'navy':
- return 0x000080;
- case 'blue':
- return 0x0000ff;
- case 'aqua':
- return 0x00ffff;
- case 'teal':
- return 0x008080;
- case 'silver':
- return 0xc0c0c0;
- case 'gray':
- return 0x808080;
- default:
- return self::getColor($default, 'white');
- }
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGDrawException.php b/niucloud/core/core/util/barcode/class/BCGDrawException.php
deleted file mode 100644
index 792732d3..00000000
--- a/niucloud/core/core/util/barcode/class/BCGDrawException.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGDrawing.php b/niucloud/core/core/util/barcode/class/BCGDrawing.php
deleted file mode 100644
index 612522cf..00000000
--- a/niucloud/core/core/util/barcode/class/BCGDrawing.php
+++ /dev/null
@@ -1,248 +0,0 @@
-im = null;
- $this->setFilename($filename);
- $this->color = $color;
- $this->dpi = null;
- $this->rotateDegree = 0.0;
- }
-
- /**
- * Destructor.
- */
- public function __destruct() {
- $this->destroy();
- }
-
- /**
- * Gets the filename.
- *
- * @return string
- */
- public function getFilename() {
- return $this->filename;
- }
-
- /**
- * Sets the filename.
- *
- * @param string $filaneme
- */
- public function setFilename($filename) {
- $this->filename = $filename;
- }
-
- /**
- * @return resource.
- */
- public function get_im() {
- return $this->im;
- }
-
- /**
- * Sets the image.
- *
- * @param resource $im
- */
- public function set_im($im) {
- $this->im = $im;
- }
-
- /**
- * Gets Barcode for drawing.
- *
- * @return BCGBarcode
- */
- public function getBarcode() {
- return $this->barcode;
- }
-
- /**
- * Sets Barcode for drawing.
- *
- * @param BCGBarcode $Barcode
- */
- public function setBarcode(BCGBarcode $barcode) {
- $this->barcode = $barcode;
- }
-
- /**
- * Gets the DPI for supported filetype.
- *
- * @return float
- */
- public function getDPI() {
- return $this->dpi;
- }
-
- /**
- * Sets the DPI for supported filetype.
- *
- * @param float $dpi
- */
- public function setDPI($dpi) {
- $this->dpi = $dpi;
- }
-
- /**
- * Gets the rotation angle in degree clockwise.
- *
- * @return float
- */
- public function getRotationAngle() {
- return $this->rotateDegree;
- }
-
- /**
- * Sets the rotation angle in degree clockwise.
- *
- * @param float $degree
- */
- public function setRotationAngle($degree) {
- $this->rotateDegree = (float)$degree;
- }
-
- /**
- * Draws the Barcode on the image $im.
- */
- public function draw() {
- $size = $this->barcode->getDimension(0, 0);
- $this->w = max(1, $size[0]);
- $this->h = max(1, $size[1]);
- $this->init();
- $this->barcode->draw($this->im);
- }
-
- /**
- * Saves $im into the file (many format available).
- *
- * @param int $image_style
- * @param int $quality
- */
- public function finish($image_style = self::IMG_FORMAT_PNG, $quality = 100) {
- $drawer = null;
-
- $im = $this->im;
- if ($this->rotateDegree > 0.0) {
- if (function_exists('imagerotate')) {
- $im = imagerotate($this->im, 360 - $this->rotateDegree, $this->color->allocate($this->im));
- } else {
- throw new BCGDrawException('The method imagerotate doesn\'t exist on your server. Do not use any rotation.');
- }
- }
-
- if ($image_style === self::IMG_FORMAT_PNG) {
- $drawer = new BCGDrawPNG($im);
- $drawer->setFilename($this->filename);
- $drawer->setDPI($this->dpi);
- } elseif ($image_style === self::IMG_FORMAT_JPEG) {
- $drawer = new BCGDrawJPG($im);
- $drawer->setFilename($this->filename);
- $drawer->setDPI($this->dpi);
- $drawer->setQuality($quality);
- } elseif ($image_style === self::IMG_FORMAT_GIF) {
- // Some PHP versions have a bug if passing 2nd argument as null.
- if ($this->filename === null || $this->filename === '') {
- imagegif($im);
- } else {
- imagegif($im, $this->filename);
- }
- } elseif ($image_style === self::IMG_FORMAT_WBMP) {
- imagewbmp($im, $this->filename);
- }
-
- if ($drawer !== null) {
- $drawer->draw();
- }
- }
-
- /**
- * Writes the Error on the picture.
- *
- * @param Exception $exception
- */
- public function drawException($exception) {
- $this->w = 1;
- $this->h = 1;
- $this->init();
-
- // Is the image big enough?
- $w = imagesx($this->im);
- $h = imagesy($this->im);
-
- $text = 'Error: ' . $exception->getMessage();
-
- $width = imagefontwidth(2) * strlen($text);
- $height = imagefontheight(2);
- if ($width > $w || $height > $h) {
- $width = max($w, $width);
- $height = max($h, $height);
-
- // We change the size of the image
- $newimg = imagecreatetruecolor($width, $height);
- imagefill($newimg, 0, 0, imagecolorat($this->im, 0, 0));
- imagecopy($newimg, $this->im, 0, 0, 0, 0, $w, $h);
- $this->im = $newimg;
- }
-
- $black = new BCGColor('black');
- imagestring($this->im, 2, 0, 0, $text, $black->allocate($this->im));
- }
-
- /**
- * Free the memory of PHP (called also by destructor).
- */
- public function destroy() {
- @imagedestroy($this->im);
- }
-
- /**
- * Init Image and color background.
- */
- private function init() {
- if ($this->im === null) {
- $this->im = imagecreatetruecolor($this->w, $this->h)
- or die('Can\'t Initialize the GD Libraty');
- imagefilledrectangle($this->im, 0, 0, $this->w - 1, $this->h - 1, $this->color->allocate($this->im));
- }
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGFont.php b/niucloud/core/core/util/barcode/class/BCGFont.php
deleted file mode 100644
index c58c0de3..00000000
--- a/niucloud/core/core/util/barcode/class/BCGFont.php
+++ /dev/null
@@ -1,23 +0,0 @@
-
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGFontFile.php b/niucloud/core/core/util/barcode/class/BCGFontFile.php
deleted file mode 100644
index 4c304eb5..00000000
--- a/niucloud/core/core/util/barcode/class/BCGFontFile.php
+++ /dev/null
@@ -1,209 +0,0 @@
-path = $fontPath;
- $this->size = $size;
- $this->foregroundColor = new BCGColor('black');
- $this->setRotationAngle(0);
- $this->setBoxFix(self::PHP_BOX_FIX);
- }
-
- /**
- * Gets the text associated to the font.
- *
- * @return string
- */
- public function getText() {
- return $this->text;
- }
-
- /**
- * Sets the text associated to the font.
- *
- * @param string text
- */
- public function setText($text) {
- $this->text = $text;
- $this->box = null;
- }
-
- /**
- * Gets the rotation in degree.
- *
- * @return int
- */
- public function getRotationAngle() {
- return (360 - $this->rotationAngle) % 360;
- }
-
- /**
- * Sets the rotation in degree.
- *
- * @param int
- */
- public function setRotationAngle($rotationAngle) {
- $this->rotationAngle = (int)$rotationAngle;
- if ($this->rotationAngle !== 90 && $this->rotationAngle !== 180 && $this->rotationAngle !== 270) {
- $this->rotationAngle = 0;
- }
-
- $this->rotationAngle = (360 - $this->rotationAngle) % 360;
-
- $this->box = null;
- }
-
- /**
- * Gets the background color.
- *
- * @return BCGColor
- */
- public function getBackgroundColor() {
- }
-
- /**
- * Sets the background color.
- *
- * @param BCGColor $backgroundColor
- */
- public function setBackgroundColor($backgroundColor) {
- }
-
- /**
- * Gets the foreground color.
- *
- * @return BCGColor
- */
- public function getForegroundColor() {
- return $this->foregroundColor;
- }
-
- /**
- * Sets the foreground color.
- *
- * @param BCGColor $foregroundColor
- */
- public function setForegroundColor($foregroundColor) {
- $this->foregroundColor = $foregroundColor;
- }
-
- /**
- * Gets the box fix information.
- *
- * @return int
- */
- public function getBoxFix() {
- return $this->boxFix;
- }
-
- /**
- * Sets the box fix information.
- *
- * @param int $value
- */
- public function setBoxFix($value) {
- $this->boxFix = intval($value);
- }
-
- /**
- * Returns the width and height that the text takes to be written.
- *
- * @return int[]
- */
- public function getDimension() {
- $w = 0.0;
- $h = 0.0;
- $box = $this->getBox();
-
- if ($box !== null) {
- $minX = min(array($box[0], $box[2], $box[4], $box[6]));
- $maxX = max(array($box[0], $box[2], $box[4], $box[6]));
- $minY = min(array($box[1], $box[3], $box[5], $box[7]));
- $maxY = max(array($box[1], $box[3], $box[5], $box[7]));
-
- $w = $maxX - $minX;
- $h = $maxY - $minY;
- }
-
- $rotationAngle = $this->getRotationAngle();
- if ($rotationAngle === 90 || $rotationAngle === 270) {
- return array($h + self::PHP_BOX_FIX, $w);
- } else {
- return array($w + self::PHP_BOX_FIX, $h);
- }
- }
-
- /**
- * Draws the text on the image at a specific position.
- * $x and $y represent the left bottom corner.
- *
- * @param resource $im
- * @param int $x
- * @param int $y
- */
- public function draw($im, $x, $y) {
- $drawingPosition = $this->getDrawingPosition($x, $y);
- imagettftext($im, $this->size, $this->rotationAngle, $drawingPosition[0], $drawingPosition[1], $this->foregroundColor->allocate($im), $this->path, $this->text);
- }
-
- private function getDrawingPosition($x, $y) {
- $dimension = $this->getDimension();
- $box = $this->getBox();
- $rotationAngle = $this->getRotationAngle();
- if ($rotationAngle === 0) {
- $y += abs(min($box[5], $box[7]));
- } elseif ($rotationAngle === 90) {
- $x += abs(min($box[5], $box[7]));
- $y += $dimension[1];
- } elseif ($rotationAngle === 180) {
- $x += $dimension[0];
- $y += abs(max($box[1], $box[3]));
- } elseif ($rotationAngle === 270) {
- $x += abs(max($box[1], $box[3]));
- }
-
- return array($x, $y);
- }
-
- private function getBox() {
- if ($this->box === null) {
- $gd = imagecreate(1, 1);
- $this->box = imagettftext($gd, $this->size, 0, 0, 0, 0, $this->path, $this->text);
- }
-
- return $this->box;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGFontPhp.php b/niucloud/core/core/util/barcode/class/BCGFontPhp.php
deleted file mode 100644
index a2f8ba80..00000000
--- a/niucloud/core/core/util/barcode/class/BCGFontPhp.php
+++ /dev/null
@@ -1,153 +0,0 @@
-font = max(0, intval($font));
- $this->backgroundColor = new BCGColor('white');
- $this->foregroundColor = new BCGColor('black');
- $this->setRotationAngle(0);
- }
-
- /**
- * Gets the text associated to the font.
- *
- * @return string
- */
- public function getText() {
- return $this->text;
- }
-
- /**
- * Sets the text associated to the font.
- *
- * @param string text
- */
- public function setText($text) {
- $this->text = $text;
- }
-
- /**
- * Gets the rotation in degree.
- *
- * @return int
- */
- public function getRotationAngle() {
- return (360 - $this->rotationAngle) % 360;
- }
-
- /**
- * Sets the rotation in degree.
- *
- * @param int
- */
- public function setRotationAngle($rotationAngle) {
- $this->rotationAngle = (int)$rotationAngle;
- if ($this->rotationAngle !== 90 && $this->rotationAngle !== 180 && $this->rotationAngle !== 270) {
- $this->rotationAngle = 0;
- }
-
- $this->rotationAngle = (360 - $this->rotationAngle) % 360;
- }
-
- /**
- * Gets the background color.
- *
- * @return BCGColor
- */
- public function getBackgroundColor() {
- return $this->backgroundColor;
- }
-
- /**
- * Sets the background color.
- *
- * @param BCGColor $backgroundColor
- */
- public function setBackgroundColor($backgroundColor) {
- $this->backgroundColor = $backgroundColor;
- }
-
- /**
- * Gets the foreground color.
- *
- * @return BCGColor
- */
- public function getForegroundColor() {
- return $this->foregroundColor;
- }
-
- /**
- * Sets the foreground color.
- *
- * @param BCGColor $foregroundColor
- */
- public function setForegroundColor($foregroundColor) {
- $this->foregroundColor = $foregroundColor;
- }
-
- /**
- * Returns the width and height that the text takes to be written.
- *
- * @return int[]
- */
- public function getDimension() {
- $w = imagefontwidth($this->font) * strlen($this->text);
- $h = imagefontheight($this->font);
-
- $rotationAngle = $this->getRotationAngle();
- if ($rotationAngle === 90 || $rotationAngle === 270) {
- return array($h, $w);
- } else {
- return array($w, $h);
- }
- }
-
- /**
- * Draws the text on the image at a specific position.
- * $x and $y represent the left bottom corner.
- *
- * @param resource $im
- * @param int $x
- * @param int $y
- */
- public function draw($im, $x, $y) {
- if ($this->getRotationAngle() !== 0) {
- if (!function_exists('imagerotate')) {
- throw new BCGDrawException('The method imagerotate doesn\'t exist on your server. Do not use any rotation.');
- }
-
- $w = imagefontwidth($this->font) * strlen($this->text);
- $h = imagefontheight($this->font);
- $gd = imagecreatetruecolor($w, $h);
- imagefilledrectangle($gd, 0, 0, $w - 1, $h - 1, $this->backgroundColor->allocate($gd));
- imagestring($gd, $this->font, 0, 0, $this->text, $this->foregroundColor->allocate($gd));
- $gd = imagerotate($gd, $this->rotationAngle, 0);
- imagecopy($im, $gd, $x, $y, 0, 0, imagesx($gd), imagesy($gd));
- } else {
- imagestring($im, $this->font, $x, $y, $this->text, $this->foregroundColor->allocate($im));
- }
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGLabel.php b/niucloud/core/core/util/barcode/class/BCGLabel.php
deleted file mode 100644
index 7c933c74..00000000
--- a/niucloud/core/core/util/barcode/class/BCGLabel.php
+++ /dev/null
@@ -1,320 +0,0 @@
-setFont($font);
- $this->setText($text);
- $this->setPosition($position);
- $this->setAlignment($alignment);
- $this->setSpacing(4);
- $this->setOffset(0);
- $this->setRotationAngle(0);
- $this->setBackgroundColor(new BCGColor('white'));
- $this->setForegroundColor(new BCGColor('black'));
- }
-
- /**
- * Gets the text.
- *
- * @return string
- */
- public function getText() {
- return $this->font->getText();
- }
-
- /**
- * Sets the text.
- *
- * @param string $text
- */
- public function setText($text) {
- $this->text = $text;
- $this->font->setText($this->text);
- }
-
- /**
- * Gets the font.
- *
- * @return BCGFont
- */
- public function getFont() {
- return $this->font;
- }
-
- /**
- * Sets the font.
- *
- * @param BCGFont $font
- */
- public function setFont($font) {
- if ($font === null) {
- throw new BCGArgumentException('Font cannot be null.', 'font');
- }
-
- $this->font = clone $font;
- $this->font->setText($this->text);
- $this->font->setRotationAngle($this->rotationAngle);
- $this->font->setBackgroundColor($this->backgroundColor);
- $this->font->setForegroundColor($this->foregroundColor);
- }
-
- /**
- * Gets the text position for drawing.
- *
- * @return int
- */
- public function getPosition() {
- return $this->position;
- }
-
- /**
- * Sets the text position for drawing.
- *
- * @param int $position
- */
- public function setPosition($position) {
- $position = intval($position);
- if ($position !== self::POSITION_TOP && $position !== self::POSITION_RIGHT && $position !== self::POSITION_BOTTOM && $position !== self::POSITION_LEFT) {
- throw new BCGArgumentException('The text position must be one of a valid constant.', 'position');
- }
-
- $this->position = $position;
- }
-
- /**
- * Gets the text alignment for drawing.
- *
- * @return int
- */
- public function getAlignment() {
- return $this->alignment;
- }
-
- /**
- * Sets the text alignment for drawing.
- *
- * @param int $alignment
- */
- public function setAlignment($alignment) {
- $alignment = intval($alignment);
- if ($alignment !== self::ALIGN_LEFT && $alignment !== self::ALIGN_TOP && $alignment !== self::ALIGN_CENTER && $alignment !== self::ALIGN_RIGHT && $alignment !== self::ALIGN_BOTTOM) {
- throw new BCGArgumentException('The text alignment must be one of a valid constant.', 'alignment');
- }
-
- $this->alignment = $alignment;
- }
-
- /**
- * Gets the offset.
- *
- * @return int
- */
- public function getOffset() {
- return $this->offset;
- }
-
- /**
- * Sets the offset.
- *
- * @param int $offset
- */
- public function setOffset($offset) {
- $this->offset = intval($offset);
- }
-
- /**
- * Gets the spacing.
- *
- * @return int
- */
- public function getSpacing() {
- return $this->spacing;
- }
-
- /**
- * Sets the spacing.
- *
- * @param int $spacing
- */
- public function setSpacing($spacing) {
- $this->spacing = max(0, intval($spacing));
- }
-
- /**
- * Gets the rotation angle in degree.
- *
- * @return int
- */
- public function getRotationAngle() {
- return $this->font->getRotationAngle();
- }
-
- /**
- * Sets the rotation angle in degree.
- *
- * @param int $rotationAngle
- */
- public function setRotationAngle($rotationAngle) {
- $this->rotationAngle = intval($rotationAngle);
- $this->font->setRotationAngle($this->rotationAngle);
- }
-
- /**
- * Gets the background color in case of rotation.
- *
- * @return BCGColor
- */
- public function getBackgroundColor() {
- return $this->backgroundColor;
- }
-
- /**
- * Sets the background color in case of rotation.
- *
- * @param BCGColor $backgroundColor
- */
- public /*internal*/ function setBackgroundColor($backgroundColor) {
- $this->backgroundColor = $backgroundColor;
- $this->font->setBackgroundColor($this->backgroundColor);
- }
-
- /**
- * Gets the foreground color.
- *
- * @return BCGColor
- */
- public function getForegroundColor() {
- return $this->font->getForegroundColor();
- }
-
- /**
- * Sets the foreground color.
- *
- * @param BCGColor $foregroundColor
- */
- public function setForegroundColor($foregroundColor) {
- $this->foregroundColor = $foregroundColor;
- $this->font->setForegroundColor($this->foregroundColor);
- }
-
- /**
- * Gets the dimension taken by the label, including the spacing and offset.
- * [0]: width
- * [1]: height
- *
- * @return int[]
- */
- public function getDimension() {
- $w = 0;
- $h = 0;
-
- $dimension = $this->font->getDimension();
- $w = $dimension[0];
- $h = $dimension[1];
-
- if ($this->position === self::POSITION_TOP || $this->position === self::POSITION_BOTTOM) {
- $h += $this->spacing;
- $w += max(0, $this->offset);
- } else {
- $w += $this->spacing;
- $h += max(0, $this->offset);
- }
-
- return array($w, $h);
- }
-
- /**
- * Draws the text.
- * The coordinate passed are the positions of the barcode.
- * $x1 and $y1 represent the top left corner.
- * $x2 and $y2 represent the bottom right corner.
- *
- * @param resource $im
- * @param int $x1
- * @param int $y1
- * @param int $x2
- * @param int $y2
- */
- public /*internal*/ function draw($im, $x1, $y1, $x2, $y2) {
- $x = 0;
- $y = 0;
-
- $fontDimension = $this->font->getDimension();
-
- if ($this->position === self::POSITION_TOP || $this->position === self::POSITION_BOTTOM) {
- if ($this->position === self::POSITION_TOP) {
- $y = $y1 - $this->spacing - $fontDimension[1];
- } elseif ($this->position === self::POSITION_BOTTOM) {
- $y = $y2 + $this->spacing;
- }
-
- if ($this->alignment === self::ALIGN_CENTER) {
- $x = ($x2 - $x1) / 2 + $x1 - $fontDimension[0] / 2 + $this->offset;
- } elseif ($this->alignment === self::ALIGN_LEFT) {
- $x = $x1 + $this->offset;
- } else {
- $x = $x2 + $this->offset - $fontDimension[0];
- }
- } else {
- if ($this->position === self::POSITION_LEFT) {
- $x = $x1 - $this->spacing - $fontDimension[0];
- } elseif ($this->position === self::POSITION_RIGHT) {
- $x = $x2 + $this->spacing;
- }
-
- if ($this->alignment === self::ALIGN_CENTER) {
- $y = ($y2 - $y1) / 2 + $y1 - $fontDimension[1] / 2 + $this->offset;
- } elseif ($this->alignment === self::ALIGN_TOP) {
- $y = $y1 + $this->offset;
- } else {
- $y = $y2 + $this->offset - $fontDimension[1];
- }
- }
-
- $this->font->setText($this->text);
- $this->font->draw($im, $x, $y);
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGParseException.php b/niucloud/core/core/util/barcode/class/BCGParseException.php
deleted file mode 100644
index ce4eeb9f..00000000
--- a/niucloud/core/core/util/barcode/class/BCGParseException.php
+++ /dev/null
@@ -1,25 +0,0 @@
-barcode = $barcode;
- parent::__construct($message, 10000);
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGcodabar.barcode.php b/niucloud/core/core/util/barcode/class/BCGcodabar.barcode.php
deleted file mode 100644
index 91189fed..00000000
--- a/niucloud/core/core/util/barcode/class/BCGcodabar.barcode.php
+++ /dev/null
@@ -1,122 +0,0 @@
-keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '$', ':', '/', '.', '+', 'A', 'B', 'C', 'D');
- $this->code = array( // 0 added to add an extra space
- '00000110', /* 0 */
- '00001100', /* 1 */
- '00010010', /* 2 */
- '11000000', /* 3 */
- '00100100', /* 4 */
- '10000100', /* 5 */
- '01000010', /* 6 */
- '01001000', /* 7 */
- '01100000', /* 8 */
- '10010000', /* 9 */
- '00011000', /* - */
- '00110000', /* $ */
- '10001010', /* : */
- '10100010', /* / */
- '10101000', /* . */
- '00111110', /* + */
- '00110100', /* A */
- '01010010', /* B */
- '00010110', /* C */
- '00011100' /* D */
- );
- }
-
- /**
- * Parses the text before displaying it.
- *
- * @param mixed $text
- */
- public function parse($text) {
- parent::parse(strtoupper($text)); // Only Capital Letters are Allowed
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- $c = strlen($this->text);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->findCode($this->text[$i]), true);
- }
-
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $textLength = 0;
- $c = strlen($this->text);
- for ($i = 0; $i < $c; $i++) {
- $index = $this->findIndex($this->text[$i]);
- if ($index !== false) {
- $textLength += 8;
- $textLength += substr_count($this->code[$index], '1');
- }
- }
-
- $w += $textLength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('codabar', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('codabar', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
-
- // Must start by A, B, C or D
- if ($c == 0 || ($this->text[0] !== 'A' && $this->text[0] !== 'B' && $this->text[0] !== 'C' && $this->text[0] !== 'D')) {
- throw new BCGParseException('codabar', 'The text must start by the character A, B, C, or D.');
- }
-
- // Must end by A, B, C or D
- $c2 = $c - 1;
- if ($c2 === 0 || ($this->text[$c2] !== 'A' && $this->text[$c2] !== 'B' && $this->text[$c2] !== 'C' && $this->text[$c2] !== 'D')) {
- throw new BCGParseException('codabar', 'The text must end by the character A, B, C, or D.');
- }
-
- parent::validate();
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGcode11.barcode.php b/niucloud/core/core/util/barcode/class/BCGcode11.barcode.php
deleted file mode 100644
index 7c11a22c..00000000
--- a/niucloud/core/core/util/barcode/class/BCGcode11.barcode.php
+++ /dev/null
@@ -1,185 +0,0 @@
-keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-');
- $this->code = array( // 0 added to add an extra space
- '000010', /* 0 */
- '100010', /* 1 */
- '010010', /* 2 */
- '110000', /* 3 */
- '001010', /* 4 */
- '101000', /* 5 */
- '011000', /* 6 */
- '000110', /* 7 */
- '100100', /* 8 */
- '100000', /* 9 */
- '001000' /* - */
- );
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- // Starting Code
- $this->drawChar($im, '001100', true);
-
- // Chars
- $c = strlen($this->text);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->findCode($this->text[$i]), true);
- }
-
- // Checksum
- $this->calculateChecksum();
- $c = count($this->checksumValue);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->code[$this->checksumValue[$i]], true);
- }
-
- // Ending Code
- $this->drawChar($im, '00110', true);
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $startlength = 8;
-
- $textlength = 0;
- $c = strlen($this->text);
- for ($i = 0; $i < $c; $i++) {
- $textlength += $this->getIndexLength($this->findIndex($this->text[$i]));
- }
-
- $checksumlength = 0;
- $this->calculateChecksum();
- $c = count($this->checksumValue);
- for ($i = 0; $i < $c; $i++) {
- $checksumlength += $this->getIndexLength($this->checksumValue[$i]);
- }
-
- $endlength = 7;
-
- $w += $startlength + $textlength + $checksumlength + $endlength;
- $h += $this->thickness;
-
- return parent::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('code11', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('code11', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- // Checksum
- // First CheckSUM "C"
- // The "C" checksum character is the modulo 11 remainder of the sum of the weighted
- // value of the data characters. The weighting value starts at "1" for the right-most
- // data character, 2 for the second to last, 3 for the third-to-last, and so on up to 20.
- // After 10, the sequence wraps around back to 1.
-
- // Second CheckSUM "K"
- // Same as CheckSUM "C" but we count the CheckSum "C" at the end
- // After 9, the sequence wraps around back to 1.
- $sequence_multiplier = array(10, 9);
- $temp_text = $this->text;
- $this->checksumValue = array();
- for ($z = 0; $z < 2; $z++) {
- $c = strlen($temp_text);
-
- // We don't display the K CheckSum if the original text had a length less than 10
- if ($c <= 10 && $z === 1) {
- break;
- }
-
- $checksum = 0;
- for ($i = $c, $j = 0; $i > 0; $i--, $j++) {
- $multiplier = $i % $sequence_multiplier[$z];
- if ($multiplier === 0) {
- $multiplier = $sequence_multiplier[$z];
- }
-
- $checksum += $this->findIndex($temp_text[$j]) * $multiplier;
- }
-
- $this->checksumValue[$z] = $checksum % 11;
- $temp_text .= $this->keys[$this->checksumValue[$z]];
- }
- }
-
- /**
- * Overloaded method to display the checksum.
- */
- protected function processChecksum() {
- if ($this->checksumValue === false) { // Calculate the checksum only once
- $this->calculateChecksum();
- }
-
- if ($this->checksumValue !== false) {
- $ret = '';
- $c = count($this->checksumValue);
- for ($i = 0; $i < $c; $i++) {
- $ret .= $this->keys[$this->checksumValue[$i]];
- }
-
- return $ret;
- }
-
- return false;
- }
-
- private function getIndexLength($index) {
- $length = 0;
- if ($index !== false) {
- $length += 6;
- $length += substr_count($this->code[$index], '1');
- }
-
- return $length;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGcode128.barcode.php b/niucloud/core/core/util/barcode/class/BCGcode128.barcode.php
deleted file mode 100644
index 0cfeed6f..00000000
--- a/niucloud/core/core/util/barcode/class/BCGcode128.barcode.php
+++ /dev/null
@@ -1,885 +0,0 @@
-keysA = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_';
- for ($i = 0; $i < 32; $i++) {
- $this->keysA .= chr($i);
- }
-
- /* CODE 128 B */
- $this->keysB = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~' . chr(127);
-
- /* CODE 128 C */
- $this->keysC = '0123456789';
-
- $this->code = array(
- '101111', /* 00 */
- '111011', /* 01 */
- '111110', /* 02 */
- '010112', /* 03 */
- '010211', /* 04 */
- '020111', /* 05 */
- '011102', /* 06 */
- '011201', /* 07 */
- '021101', /* 08 */
- '110102', /* 09 */
- '110201', /* 10 */
- '120101', /* 11 */
- '001121', /* 12 */
- '011021', /* 13 */
- '011120', /* 14 */
- '002111', /* 15 */
- '012011', /* 16 */
- '012110', /* 17 */
- '112100', /* 18 */
- '110021', /* 19 */
- '110120', /* 20 */
- '102101', /* 21 */
- '112001', /* 22 */
- '201020', /* 23 */
- '200111', /* 24 */
- '210011', /* 25 */
- '210110', /* 26 */
- '201101', /* 27 */
- '211001', /* 28 */
- '211100', /* 29 */
- '101012', /* 30 */
- '101210', /* 31 */
- '121010', /* 32 */
- '000212', /* 33 */
- '020012', /* 34 */
- '020210', /* 35 */
- '001202', /* 36 */
- '021002', /* 37 */
- '021200', /* 38 */
- '100202', /* 39 */
- '120002', /* 40 */
- '120200', /* 41 */
- '001022', /* 42 */
- '001220', /* 43 */
- '021020', /* 44 */
- '002012', /* 45 */
- '002210', /* 46 */
- '022010', /* 47 */
- '202010', /* 48 */
- '100220', /* 49 */
- '120020', /* 50 */
- '102002', /* 51 */
- '102200', /* 52 */
- '102020', /* 53 */
- '200012', /* 54 */
- '200210', /* 55 */
- '220010', /* 56 */
- '201002', /* 57 */
- '201200', /* 58 */
- '221000', /* 59 */
- '203000', /* 60 */
- '110300', /* 61 */
- '320000', /* 62 */
- '000113', /* 63 */
- '000311', /* 64 */
- '010013', /* 65 */
- '010310', /* 66 */
- '030011', /* 67 */
- '030110', /* 68 */
- '001103', /* 69 */
- '001301', /* 70 */
- '011003', /* 71 */
- '011300', /* 72 */
- '031001', /* 73 */
- '031100', /* 74 */
- '130100', /* 75 */
- '110003', /* 76 */
- '302000', /* 77 */
- '130001', /* 78 */
- '023000', /* 79 */
- '000131', /* 80 */
- '010031', /* 81 */
- '010130', /* 82 */
- '003101', /* 83 */
- '013001', /* 84 */
- '013100', /* 85 */
- '300101', /* 86 */
- '310001', /* 87 */
- '310100', /* 88 */
- '101030', /* 89 */
- '103010', /* 90 */
- '301010', /* 91 */
- '000032', /* 92 */
- '000230', /* 93 */
- '020030', /* 94 */
- '003002', /* 95 */
- '003200', /* 96 */
- '300002', /* 97 */
- '300200', /* 98 */
- '002030', /* 99 */
- '003020', /* 100*/
- '200030', /* 101*/
- '300020', /* 102*/
- '100301', /* 103*/
- '100103', /* 104*/
- '100121', /* 105*/
- '122000' /*STOP*/
- );
- $this->setStart($start);
- $this->setTilde(true);
-
- // Latches and Shifts
- $this->latch = array(
- array(null, self::KEYA_CODEB, self::KEYA_CODEC),
- array(self::KEYB_CODEA, null, self::KEYB_CODEC),
- array(self::KEYC_CODEA, self::KEYC_CODEB, null)
- );
- $this->shift = array(
- array(null, self::KEYA_SHIFT),
- array(self::KEYB_SHIFT, null)
- );
- $this->fnc = array(
- array(self::KEYA_FNC1, self::KEYA_FNC2, self::KEYA_FNC3, self::KEYA_FNC4),
- array(self::KEYB_FNC1, self::KEYB_FNC2, self::KEYB_FNC3, self::KEYB_FNC4),
- array(self::KEYC_FNC1, null, null, null)
- );
-
- // Method available
- $this->METHOD = array(CODE128_A => 'A', CODE128_B => 'B', CODE128_C => 'C');
- }
-
- /**
- * Specifies the start code. Can be 'A', 'B', 'C', or null
- * - Table A: Capitals + ASCII 0-31 + punct
- * - Table B: Capitals + LowerCase + punct
- * - Table C: Numbers
- *
- * If null is specified, the table selection is automatically made.
- * The default is null.
- *
- * @param string $table
- */
- public function setStart($table) {
- if ($table !== 'A' && $table !== 'B' && $table !== 'C' && $table !== null) {
- throw new BCGArgumentException('The starting table must be A, B, C or null.', 'table');
- }
-
- $this->starting_text = $table;
- }
-
- /**
- * Gets the tilde.
- *
- * @return bool
- */
- public function getTilde() {
- return $this->tilde;
- }
-
- /**
- * Accepts tilde to be process as a special character.
- * If true, you can do this:
- * - ~~ : to make ONE tilde
- * - ~Fx : to insert FCNx. x is equal from 1 to 4.
- *
- * @param boolean $accept
- */
- public function setTilde($accept) {
- $this->tilde = (bool)$accept;
- }
-
- /**
- * Parses the text before displaying it.
- *
- * @param mixed $text
- */
- public function parse($text) {
- $this->setStartFromText($text);
-
- $this->text = '';
- $seq = '';
-
- $currentMode = $this->starting_text;
-
- // Here, we format correctly what the user gives.
- if (!is_array($text)) {
- $seq = $this->getSequence($text, $currentMode);
- $this->text = $text;
- } else {
- // This loop checks for UnknownText AND raises an exception if a character is not allowed in a table
- reset($text);
- while (list($key1, $val1) = each($text)) { // We take each value
- if (!is_array($val1)) { // This is not a table
- if (is_string($val1)) { // If it's a string, parse as unknown
- $seq .= $this->getSequence($val1, $currentMode);
- $this->text .= $val1;
- } else {
- // it's the case of "array(ENCODING, 'text')"
- // We got ENCODING in $val1, calling 'each' again will get 'text' in $val2
- list($key2, $val2) = each($text);
- $seq .= $this->{'setParse' . $this->METHOD[$val1]}($val2, $currentMode);
- $this->text .= $val2;
- }
- } else { // The method is specified
- // $val1[0] = ENCODING
- // $val1[1] = 'text'
- $value = isset($val1[1]) ? $val1[1] : ''; // If data available
- $seq .= $this->{'setParse' . $this->METHOD[$val1[0]]}($value, $currentMode);
- $this->text .= $value;
- }
- }
- }
-
- if ($seq !== '') {
- $bitstream = $this->createBinaryStream($this->text, $seq);
- $this->setData($bitstream);
- }
-
- $this->addDefaultLabel();
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- $c = count($this->data);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->data[$i], true);
- }
-
- $this->drawChar($im, '1', true);
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- // Contains start + text + checksum + stop
- $textlength = count($this->data) * 11;
- $endlength = 2; // + final bar
-
- $w += $textlength + $endlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = count($this->data);
- if ($c === 0) {
- throw new BCGParseException('code128', 'No data has been entered.');
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- // Checksum
- // First Char (START)
- // + Starting with the first data character following the start character,
- // take the value of the character (between 0 and 102, inclusive) multiply
- // it by its character position (1) and add that to the running checksum.
- // Modulated 103
- $this->checksumValue = $this->indcheck[0];
- $c = count($this->indcheck);
- for ($i = 1; $i < $c; $i++) {
- $this->checksumValue += $this->indcheck[$i] * $i;
- }
-
- $this->checksumValue = $this->checksumValue % 103;
- }
-
- /**
- * Overloaded method to display the checksum.
- */
- protected function processChecksum() {
- if ($this->checksumValue === false) { // Calculate the checksum only once
- $this->calculateChecksum();
- }
-
- if ($this->checksumValue !== false) {
- if ($this->lastTable === 'C') {
- return (string)$this->checksumValue;
- }
-
- return $this->{'keys' . $this->lastTable}[$this->checksumValue];
- }
-
- return false;
- }
-
- /**
- * Specifies the starting_text table if none has been specified earlier.
- *
- * @param string $text
- */
- private function setStartFromText($text) {
- if ($this->starting_text === null) {
- // If we have a forced table at the start, we get that one...
- if (is_array($text)) {
- if (is_array($text[0])) {
- // Code like array(array(ENCODING, ''))
- $this->starting_text = $this->METHOD[$text[0][0]];
- return;
- } else {
- if (is_string($text[0])) {
- // Code like array('test') (Automatic text)
- $text = $text[0];
- } else {
- // Code like array(ENCODING, '')
- $this->starting_text = $this->METHOD[$text[0]];
- return;
- }
- }
- }
-
- // At this point, we had an "automatic" table selection...
- // If we can get at least 4 numbers, go in C; otherwise go in B.
- $tmp = preg_quote($this->keysC, '/');
- $length = strlen($text);
- if ($length >= 4 && preg_match('/[' . $tmp . ']/', substr($text, 0, 4))) {
- $this->starting_text = 'C';
- } else {
- if ($length > 0 && strpos($this->keysB, $text[0]) !== false) {
- $this->starting_text = 'B';
- } else {
- $this->starting_text = 'A';
- }
- }
- }
- }
-
- /**
- * Extracts the ~ value from the $text at the $pos.
- * If the tilde is not ~~, ~F1, ~F2, ~F3, ~F4; an error is raised.
- *
- * @param string $text
- * @param int $pos
- * @return string
- */
- private static function extractTilde($text, $pos) {
- if ($text[$pos] === '~') {
- if (isset($text[$pos + 1])) {
- // Do we have a tilde?
- if ($text[$pos + 1] === '~') {
- return '~~';
- } elseif ($text[$pos + 1] === 'F') {
- // Do we have a number after?
- if (isset($text[$pos + 2])) {
- $v = intval($text[$pos + 2]);
- if ($v >= 1 && $v <= 4) {
- return '~F' . $v;
- } else {
- throw new BCGParseException('code128', 'Bad ~F. You must provide a number from 1 to 4.');
- }
- } else {
- throw new BCGParseException('code128', 'Bad ~F. You must provide a number from 1 to 4.');
- }
- } else {
- throw new BCGParseException('code128', 'Wrong code after the ~.');
- }
- } else {
- throw new BCGParseException('code128', 'Wrong code after the ~.');
- }
- } else {
- throw new BCGParseException('code128', 'There is no ~ at this location.');
- }
- }
-
- /**
- * Gets the "dotted" sequence for the $text based on the $currentMode.
- * There is also a check if we use the special tilde ~
- *
- * @param string $text
- * @param string $currentMode
- * @return string
- */
- private function getSequenceParsed($text, $currentMode) {
- if ($this->tilde) {
- $sequence = '';
- $previousPos = 0;
- while (($pos = strpos($text, '~', $previousPos)) !== false) {
- $tildeData = self::extractTilde($text, $pos);
-
- $simpleTilde = ($tildeData === '~~');
- if ($simpleTilde && $currentMode !== 'B') {
- throw new BCGParseException('code128', 'The Table ' . $currentMode . ' doesn\'t contain the character ~.');
- }
-
- // At this point, we know we have ~Fx
- if ($tildeData !== '~F1' && $currentMode === 'C') {
- // The mode C doesn't support ~F2, ~F3, ~F4
- throw new BCGParseException('code128', 'The Table C doesn\'t contain the function ' . $tildeData . '.');
- }
-
- $length = $pos - $previousPos;
- if ($currentMode === 'C') {
- if ($length % 2 === 1) {
- throw new BCGParseException('code128', 'The text "' . $text . '" must have an even number of character to be encoded in Table C.');
- }
- }
-
- $sequence .= str_repeat('.', $length);
- $sequence .= '.';
- $sequence .= (!$simpleTilde) ? 'F' : '';
- $previousPos = $pos + strlen($tildeData);
- }
-
- // Flushing
- $length = strlen($text) - $previousPos;
- if ($currentMode === 'C') {
- if ($length % 2 === 1) {
- throw new BCGParseException('code128', 'The text "' . $text . '" must have an even number of character to be encoded in Table C.');
- }
- }
-
- $sequence .= str_repeat('.', $length);
-
- return $sequence;
- } else {
- return str_repeat('.', strlen($text));
- }
- }
-
- /**
- * Parses the text and returns the appropriate sequence for the Table A.
- *
- * @param string $text
- * @param string $currentMode
- * @return string
- */
- private function setParseA($text, &$currentMode) {
- $tmp = preg_quote($this->keysA, '/');
-
- // If we accept the ~ for special character, we must allow it.
- if ($this->tilde) {
- $tmp .= '~';
- }
-
- $match = array();
- if (preg_match('/[^' . $tmp . ']/', $text, $match) === 1) {
- // We found something not allowed
- throw new BCGParseException('code128', 'The text "' . $text . '" can\'t be parsed with the Table A. The character "' . $match[0] . '" is not allowed.');
- } else {
- $latch = ($currentMode === 'A') ? '' : '0';
- $currentMode = 'A';
-
- return $latch . $this->getSequenceParsed($text, $currentMode);
- }
- }
-
- /**
- * Parses the text and returns the appropriate sequence for the Table B.
- *
- * @param string $text
- * @param string $currentMode
- * @return string
- */
- private function setParseB($text, &$currentMode) {
- $tmp = preg_quote($this->keysB, '/');
-
- $match = array();
- if (preg_match('/[^' . $tmp . ']/', $text, $match) === 1) {
- // We found something not allowed
- throw new BCGParseException('code128', 'The text "' . $text . '" can\'t be parsed with the Table B. The character "' . $match[0] . '" is not allowed.');
- } else {
- $latch = ($currentMode === 'B') ? '' : '1';
- $currentMode = 'B';
-
- return $latch . $this->getSequenceParsed($text, $currentMode);
- }
- }
-
- /**
- * Parses the text and returns the appropriate sequence for the Table C.
- *
- * @param string $text
- * @param string $currentMode
- * @return string
- */
- private function setParseC($text, &$currentMode) {
- $tmp = preg_quote($this->keysC, '/');
-
- // If we accept the ~ for special character, we must allow it.
- if ($this->tilde) {
- $tmp .= '~F';
- }
-
- $match = array();
- if (preg_match('/[^' . $tmp . ']/', $text, $match) === 1) {
- // We found something not allowed
- throw new BCGParseException('code128', 'The text "' . $text . '" can\'t be parsed with the Table C. The character "' . $match[0] . '" is not allowed.');
- } else {
- $latch = ($currentMode === 'C') ? '' : '2';
- $currentMode = 'C';
-
- return $latch . $this->getSequenceParsed($text, $currentMode);
- }
- }
-
- /**
- * Depending on the $text, it will return the correct
- * sequence to encode the text.
- *
- * @param string $text
- * @param string $starting_text
- * @return string
- */
- private function getSequence($text, &$starting_text) {
- $e = 10000;
- $latLen = array(
- array(0, 1, 1),
- array(1, 0, 1),
- array(1, 1, 0)
- );
- $shftLen = array(
- array($e, 1, $e),
- array(1, $e, $e),
- array($e, $e, $e)
- );
- $charSiz = array(2, 2, 1);
-
- $startA = $e;
- $startB = $e;
- $startC = $e;
- if ($starting_text === 'A') { $startA = 0; }
- if ($starting_text === 'B') { $startB = 0; }
- if ($starting_text === 'C') { $startC = 0; }
-
- $curLen = array($startA, $startB, $startC);
- $curSeq = array(null, null, null);
-
- $nextNumber = false;
-
- $x = 0;
- $xLen = strlen($text);
- for ($x = 0; $x < $xLen; $x++) {
- $input = $text[$x];
-
- // 1.
- for ($i = 0; $i < 3; $i++) {
- for ($j = 0; $j < 3; $j++) {
- if (($curLen[$i] + $latLen[$i][$j]) < $curLen[$j]) {
- $curLen[$j] = $curLen[$i] + $latLen[$i][$j];
- $curSeq[$j] = $curSeq[$i] . $j;
- }
- }
- }
-
- // 2.
- $nxtLen = array($e, $e, $e);
- $nxtSeq = array();
-
- // 3.
- $flag = false;
- $posArray = array();
-
- // Special case, we do have a tilde and we process them
- if ($this->tilde && $input === '~') {
- $tildeData = self::extractTilde($text, $x);
-
- if ($tildeData === '~~') {
- // We simply skip a tilde
- $posArray[] = 1;
- $x++;
- } elseif (substr($tildeData, 0, 2) === '~F') {
- $v = intval($tildeData[2]);
- $posArray[] = 0;
- $posArray[] = 1;
- if ($v === 1) {
- $posArray[] = 2;
- }
-
- $x += 2;
- $flag = true;
- }
- } else {
- $pos = strpos($this->keysA, $input);
- if ($pos !== false) {
- $posArray[] = 0;
- }
-
- $pos = strpos($this->keysB, $input);
- if ($pos !== false) {
- $posArray[] = 1;
- }
-
- // Do we have the next char a number?? OR a ~F1
- $pos = strpos($this->keysC, $input);
- if ($nextNumber || ($pos !== false && isset($text[$x + 1]) && strpos($this->keysC, $text[$x + 1]) !== false)) {
- $nextNumber = !$nextNumber;
- $posArray[] = 2;
- }
- }
-
- $c = count($posArray);
- for ($i = 0; $i < $c; $i++) {
- if (($curLen[$posArray[$i]] + $charSiz[$posArray[$i]]) < $nxtLen[$posArray[$i]]) {
- $nxtLen[$posArray[$i]] = $curLen[$posArray[$i]] + $charSiz[$posArray[$i]];
- $nxtSeq[$posArray[$i]] = $curSeq[$posArray[$i]] . '.';
- }
-
- for ($j = 0; $j < 2; $j++) {
- if ($j === $posArray[$i]) { continue; }
- if (($curLen[$j] + $shftLen[$j][$posArray[$i]] + $charSiz[$posArray[$i]]) < $nxtLen[$j]) {
- $nxtLen[$j] = $curLen[$j] + $shftLen[$j][$posArray[$i]] + $charSiz[$posArray[$i]];
- $nxtSeq[$j] = $curSeq[$j] . chr($posArray[$i] + 65) . '.';
- }
- }
- }
-
- if ($c === 0) {
- // We found an unsuported character
- throw new BCGParseException('code128', 'Character ' . $input . ' not supported.');
- }
-
- if ($flag) {
- for ($i = 0; $i < 5; $i++) {
- if (isset($nxtSeq[$i])) {
- $nxtSeq[$i] .= 'F';
- }
- }
- }
-
- // 4.
- for ($i = 0; $i < 3; $i++) {
- $curLen[$i] = $nxtLen[$i];
- if (isset($nxtSeq[$i])) {
- $curSeq[$i] = $nxtSeq[$i];
- }
- }
- }
-
- // Every curLen under $e is possible but we take the smallest
- $m = $e;
- $k = -1;
- for ($i = 0; $i < 3; $i++) {
- if ($curLen[$i] < $m) {
- $k = $i;
- $m = $curLen[$i];
- }
- }
-
- if ($k === -1) {
- return '';
- }
-
- return $curSeq[$k];
- }
-
- /**
- * Depending on the sequence $seq given (returned from getSequence()),
- * this method will return the code stream in an array. Each char will be a
- * string of bit based on the Code 128.
- *
- * Each letter from the sequence represents bits.
- *
- * 0 to 2 are latches
- * A to B are Shift + Letter
- * . is a char in the current encoding
- *
- * @param string $text
- * @param string $seq
- * @return string[][]
- */
- private function createBinaryStream($text, $seq) {
- $c = strlen($seq);
-
- $data = array(); // code stream
- $indcheck = array(); // index for checksum
-
- $currentEncoding = 0;
- if ($this->starting_text === 'A') {
- $currentEncoding = 0;
- $indcheck[] = self::KEY_STARTA;
- $this->lastTable = 'A';
- } elseif ($this->starting_text === 'B') {
- $currentEncoding = 1;
- $indcheck[] = self::KEY_STARTB;
- $this->lastTable = 'B';
- } elseif ($this->starting_text === 'C') {
- $currentEncoding = 2;
- $indcheck[] = self::KEY_STARTC;
- $this->lastTable = 'C';
- }
-
- $data[] = $this->code[103 + $currentEncoding];
-
- $temporaryEncoding = -1;
- for ($i = 0, $counter = 0; $i < $c; $i++) {
- $input = $seq[$i];
- $inputI = intval($input);
- if ($input === '.') {
- $this->encodeChar($data, $currentEncoding, $seq, $text, $i, $counter, $indcheck);
- if ($temporaryEncoding !== -1) {
- $currentEncoding = $temporaryEncoding;
- $temporaryEncoding = -1;
- }
- } elseif ($input >= 'A' && $input <= 'B') {
- // We shift
- $encoding = ord($input) - 65;
- $shift = $this->shift[$currentEncoding][$encoding];
- $indcheck[] = $shift;
- $data[] = $this->code[$shift];
- if ($temporaryEncoding === -1) {
- $temporaryEncoding = $currentEncoding;
- }
-
- $currentEncoding = $encoding;
- } elseif ($inputI >= 0 && $inputI < 3) {
- $temporaryEncoding = -1;
-
- // We latch
- $latch = $this->latch[$currentEncoding][$inputI];
- if ($latch !== null) {
- $indcheck[] = $latch;
- $this->lastTable = chr(65 + $inputI);
- $data[] = $this->code[$latch];
- $currentEncoding = $inputI;
- }
- }
- }
-
- return array($indcheck, $data);
- }
-
- /**
- * Encodes characters, base on its encoding and sequence
- *
- * @param int[] $data
- * @param int $encoding
- * @param string $seq
- * @param string $text
- * @param int $i
- * @param int $counter
- * @param int[] $indcheck
- */
- private function encodeChar(&$data, $encoding, $seq, $text, &$i, &$counter, &$indcheck) {
- if (isset($seq[$i + 1]) && $seq[$i + 1] === 'F') {
- // We have a flag !!
- if ($text[$counter + 1] === 'F') {
- $number = $text[$counter + 2];
- $fnc = $this->fnc[$encoding][$number - 1];
- $indcheck[] = $fnc;
- $data[] = $this->code[$fnc];
-
- // Skip F + number
- $counter += 2;
- } else {
- // Not supposed
- }
-
- $i++;
- } else {
- if ($encoding === 2) {
- // We take 2 numbers in the same time
- $code = (int)substr($text, $counter, 2);
- $indcheck[] = $code;
- $data[] = $this->code[$code];
- $counter++;
- $i++;
- } else {
- $keys = ($encoding === 0) ? $this->keysA : $this->keysB;
- $pos = strpos($keys, $text[$counter]);
- $indcheck[] = $pos;
- $data[] = $this->code[$pos];
- }
- }
-
- $counter++;
- }
-
- /**
- * Saves data into the classes.
- *
- * This method will save data, calculate real column number
- * (if -1 was selected), the real error level (if -1 was
- * selected)... It will add Padding to the end and generate
- * the error codes.
- *
- * @param array $data
- */
- private function setData($data) {
- $this->indcheck = $data[0];
- $this->data = $data[1];
- $this->calculateChecksum();
- $this->data[] = $this->code[$this->checksumValue];
- $this->data[] = $this->code[self::KEY_STOP];
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGcode39.barcode.php b/niucloud/core/core/util/barcode/class/BCGcode39.barcode.php
deleted file mode 100644
index 11e37124..00000000
--- a/niucloud/core/core/util/barcode/class/BCGcode39.barcode.php
+++ /dev/null
@@ -1,193 +0,0 @@
-starting = $this->ending = 43;
- $this->keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%', '*');
- $this->code = array( // 0 added to add an extra space
- '0001101000', /* 0 */
- '1001000010', /* 1 */
- '0011000010', /* 2 */
- '1011000000', /* 3 */
- '0001100010', /* 4 */
- '1001100000', /* 5 */
- '0011100000', /* 6 */
- '0001001010', /* 7 */
- '1001001000', /* 8 */
- '0011001000', /* 9 */
- '1000010010', /* A */
- '0010010010', /* B */
- '1010010000', /* C */
- '0000110010', /* D */
- '1000110000', /* E */
- '0010110000', /* F */
- '0000011010', /* G */
- '1000011000', /* H */
- '0010011000', /* I */
- '0000111000', /* J */
- '1000000110', /* K */
- '0010000110', /* L */
- '1010000100', /* M */
- '0000100110', /* N */
- '1000100100', /* O */
- '0010100100', /* P */
- '0000001110', /* Q */
- '1000001100', /* R */
- '0010001100', /* S */
- '0000101100', /* T */
- '1100000010', /* U */
- '0110000010', /* V */
- '1110000000', /* W */
- '0100100010', /* X */
- '1100100000', /* Y */
- '0110100000', /* Z */
- '0100001010', /* - */
- '1100001000', /* . */
- '0110001000', /* */
- '0101010000', /* $ */
- '0101000100', /* / */
- '0100010100', /* + */
- '0001010100', /* % */
- '0100101000' /* * */
- );
-
- $this->setChecksum(false);
- }
-
- /**
- * Sets if we display the checksum.
- *
- * @param bool $checksum
- */
- public function setChecksum($checksum) {
- $this->checksum = (bool)$checksum;
- }
-
- /**
- * Parses the text before displaying it.
- *
- * @param mixed $text
- */
- public function parse($text) {
- parent::parse(strtoupper($text)); // Only Capital Letters are Allowed
- }
-
- /**
- * Draws the Barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- // Starting *
- $this->drawChar($im, $this->code[$this->starting], true);
-
- // Chars
- $c = strlen($this->text);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->findCode($this->text[$i]), true);
- }
-
- // Checksum (rarely used)
- if ($this->checksum === true) {
- $this->calculateChecksum();
- $this->drawChar($im, $this->code[$this->checksumValue % 43], true);
- }
-
- // Ending *
- $this->drawChar($im, $this->code[$this->ending], true);
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a Barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $textlength = 13 * strlen($this->text);
- $startlength = 13;
- $checksumlength = 0;
- if ($this->checksum === true) {
- $checksumlength = 13;
- }
-
- $endlength = 13;
-
- $w += $startlength + $textlength + $checksumlength + $endlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('code39', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('code39', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
-
- if (strpos($this->text, '*') !== false) {
- throw new BCGParseException('code39', 'The character \'*\' is not allowed.');
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- $this->checksumValue = 0;
- $c = strlen($this->text);
- for ($i = 0; $i < $c; $i++) {
- $this->checksumValue += $this->findIndex($this->text[$i]);
- }
-
- $this->checksumValue = $this->checksumValue % 43;
- }
-
- /**
- * Overloaded method to display the checksum.
- */
- protected function processChecksum() {
- if ($this->checksumValue === false) { // Calculate the checksum only once
- $this->calculateChecksum();
- }
-
- if ($this->checksumValue !== false) {
- return $this->keys[$this->checksumValue];
- }
-
- return false;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGcode39extended.barcode.php b/niucloud/core/core/util/barcode/class/BCGcode39extended.barcode.php
deleted file mode 100644
index fca6f1a2..00000000
--- a/niucloud/core/core/util/barcode/class/BCGcode39extended.barcode.php
+++ /dev/null
@@ -1,208 +0,0 @@
-keys[self::EXTENDED_1] = '($)';
- $this->keys[self::EXTENDED_2] = '(/)';
- $this->keys[self::EXTENDED_3] = '(+)';
- $this->keys[self::EXTENDED_4] = '(%)';
- }
-
- /**
- * Parses the text before displaying it.
- *
- * @param mixed $text
- */
- public function parse($text) {
- $this->text = $text;
-
- $data = array();
- $indcheck = array();
-
- $c = strlen($this->text);
- for ($i = 0; $i < $c; $i++) {
- $pos = array_search($this->text[$i], $this->keys);
- if ($pos === false) {
- // Search in extended?
- $extended = self::getExtendedVersion($this->text[$i]);
- if ($extended === false) {
- throw new BCGParseException('code39extended', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- } else {
- $extc = strlen($extended);
- for ($j = 0; $j < $extc; $j++) {
- $v = $extended[$j];
- if ($v === '$') {
- $indcheck[] = self::EXTENDED_1;
- $data[] = $this->code[self::EXTENDED_1];
- } elseif ($v === '%') {
- $indcheck[] = self::EXTENDED_2;
- $data[] = $this->code[self::EXTENDED_2];
- } elseif ($v === '/') {
- $indcheck[] = self::EXTENDED_3;
- $data[] = $this->code[self::EXTENDED_3];
- } elseif ($v === '+') {
- $indcheck[] = self::EXTENDED_4;
- $data[] = $this->code[self::EXTENDED_4];
- } else {
- $pos2 = array_search($v, $this->keys);
- $indcheck[] = $pos2;
- $data[] = $this->code[$pos2];
- }
- }
- }
- } else {
- $indcheck[] = $pos;
- $data[] = $this->code[$pos];
- }
- }
-
- $this->setData(array($indcheck, $data));
- $this->addDefaultLabel();
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- // Starting *
- $this->drawChar($im, $this->code[$this->starting], true);
- $c = count($this->data);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->data[$i], true);
- }
-
- // Checksum (rarely used)
- if ($this->checksum === true) {
- $this->drawChar($im, $this->code[$this->checksumValue % 43], true);
- }
-
- // Ending *
- $this->drawChar($im, $this->code[$this->ending], true);
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $textlength = 13 * count($this->data);
- $startlength = 13;
- $checksumlength = 0;
- if ($this->checksum === true) {
- $checksumlength = 13;
- }
-
- $endlength = 13;
-
- $w += $startlength + $textlength + $checksumlength + $endlength;
- $h += $this->thickness;
- return BCGBarcode1D::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = count($this->data);
- if ($c === 0) {
- throw new BCGParseException('code39extended', 'No data has been entered.');
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- $this->checksumValue = 0;
- $c = count($this->indcheck);
- for ($i = 0; $i < $c; $i++) {
- $this->checksumValue += $this->indcheck[$i];
- }
-
- $this->checksumValue = $this->checksumValue % 43;
- }
-
- /**
- * Saves data into the classes.
- *
- * This method will save data, calculate real column number
- * (if -1 was selected), the real error level (if -1 was
- * selected)... It will add Padding to the end and generate
- * the error codes.
- *
- * @param array $data
- */
- private function setData($data) {
- $this->indcheck = $data[0];
- $this->data = $data[1];
- $this->calculateChecksum();
- }
-
- /**
- * Returns the extended reprensentation of the character.
- *
- * @param string $char
- * @return string
- */
- private static function getExtendedVersion($char) {
- $o = ord($char);
- if ($o === 0) {
- return '%U';
- } elseif ($o >= 1 && $o <= 26) {
- return '$' . chr($o + 64);
- } elseif (($o >= 33 && $o <= 44) || $o === 47 || $o === 48) {
- return '/' . chr($o + 32);
- } elseif ($o >= 97 && $o <= 122) {
- return '+' . chr($o - 32);
- } elseif ($o >= 27 && $o <= 31) {
- return '%' . chr($o + 38);
- } elseif ($o >= 59 && $o <= 63) {
- return '%' . chr($o + 11);
- } elseif ($o >= 91 && $o <= 95) {
- return '%' . chr($o - 16);
- } elseif ($o >= 123 && $o <= 127) {
- return '%' . chr($o - 43);
- } elseif ($o === 64) {
- return '%V';
- } elseif ($o === 96) {
- return '%W';
- } elseif ($o > 127) {
- return false;
- } else {
- return $char;
- }
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGcode93.barcode.php b/niucloud/core/core/util/barcode/class/BCGcode93.barcode.php
deleted file mode 100644
index 480e2c8f..00000000
--- a/niucloud/core/core/util/barcode/class/BCGcode93.barcode.php
+++ /dev/null
@@ -1,301 +0,0 @@
-starting = $this->ending = 47; /* * */
- $this->keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%', '($)', '(%)', '(/)', '(+)', '(*)');
- $this->code = array(
- '020001', /* 0 */
- '000102', /* 1 */
- '000201', /* 2 */
- '000300', /* 3 */
- '010002', /* 4 */
- '010101', /* 5 */
- '010200', /* 6 */
- '000003', /* 7 */
- '020100', /* 8 */
- '030000', /* 9 */
- '100002', /* A */
- '100101', /* B */
- '100200', /* C */
- '110001', /* D */
- '110100', /* E */
- '120000', /* F */
- '001002', /* G */
- '001101', /* H */
- '001200', /* I */
- '011001', /* J */
- '021000', /* K */
- '000012', /* L */
- '000111', /* M */
- '000210', /* N */
- '010011', /* O */
- '020010', /* P */
- '101001', /* Q */
- '101100', /* R */
- '100011', /* S */
- '100110', /* T */
- '110010', /* U */
- '111000', /* V */
- '001011', /* W */
- '001110', /* X */
- '011010', /* Y */
- '012000', /* Z */
- '010020', /* - */
- '200001', /* . */
- '200100', /* */
- '210000', /* $ */
- '001020', /* / */
- '002010', /* + */
- '100020', /* % */
- '010110', /*($)*/
- '201000', /*(%)*/
- '200010', /*(/)*/
- '011100', /*(+)*/
- '000030' /*(*)*/
- );
- }
-
- /**
- * Parses the text before displaying it.
- *
- * @param mixed $text
- */
- public function parse($text) {
- $this->text = $text;
-
- $data = array();
- $indcheck = array();
-
- $c = strlen($this->text);
- for ($i = 0; $i < $c; $i++) {
- $pos = array_search($this->text[$i], $this->keys);
- if ($pos === false) {
- // Search in extended?
- $extended = self::getExtendedVersion($this->text[$i]);
- if ($extended === false) {
- throw new BCGParseException('code93', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- } else {
- $extc = strlen($extended);
- for ($j = 0; $j < $extc; $j++) {
- $v = $extended[$j];
- if ($v === '$') {
- $indcheck[] = self::EXTENDED_1;
- $data[] = $this->code[self::EXTENDED_1];
- } elseif ($v === '%') {
- $indcheck[] = self::EXTENDED_2;
- $data[] = $this->code[self::EXTENDED_2];
- } elseif ($v === '/') {
- $indcheck[] = self::EXTENDED_3;
- $data[] = $this->code[self::EXTENDED_3];
- } elseif ($v === '+') {
- $indcheck[] = self::EXTENDED_4;
- $data[] = $this->code[self::EXTENDED_4];
- } else {
- $pos2 = array_search($v, $this->keys);
- $indcheck[] = $pos2;
- $data[] = $this->code[$pos2];
- }
- }
- }
- } else {
- $indcheck[] = $pos;
- $data[] = $this->code[$pos];
- }
- }
-
- $this->setData(array($indcheck, $data));
- $this->addDefaultLabel();
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- // Starting *
- $this->drawChar($im, $this->code[$this->starting], true);
- $c = count($this->data);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->data[$i], true);
- }
-
- // Checksum
- $c = count($this->checksumValue);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->code[$this->checksumValue[$i]], true);
- }
-
- // Ending *
- $this->drawChar($im, $this->code[$this->ending], true);
-
- // Draw a Final Bar
- $this->drawChar($im, '0', true);
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $startlength = 9;
- $textlength = 9 * count($this->data);
- $checksumlength = 2 * 9;
- $endlength = 9 + 1; // + final bar
-
- $w += $startlength + $textlength + $checksumlength + $endlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = count($this->data);
- if ($c === 0) {
- throw new BCGParseException('code93', 'No data has been entered.');
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- // Checksum
- // First CheckSUM "C"
- // The "C" checksum character is the modulo 47 remainder of the sum of the weighted
- // value of the data characters. The weighting value starts at "1" for the right-most
- // data character, 2 for the second to last, 3 for the third-to-last, and so on up to 20.
- // After 20, the sequence wraps around back to 1.
-
- // Second CheckSUM "K"
- // Same as CheckSUM "C" but we count the CheckSum "C" at the end
- // After 15, the sequence wraps around back to 1.
- $sequence_multiplier = array(20, 15);
- $this->checksumValue = array();
- $indcheck = $this->indcheck;
- for ($z = 0; $z < 2; $z++) {
- $checksum = 0;
- for ($i = count($indcheck), $j = 0; $i > 0; $i--, $j++) {
- $multiplier = $i % $sequence_multiplier[$z];
- if ($multiplier === 0) {
- $multiplier = $sequence_multiplier[$z];
- }
-
- $checksum += $indcheck[$j] * $multiplier;
- }
-
- $this->checksumValue[$z] = $checksum % 47;
- $indcheck[] = $this->checksumValue[$z];
- }
- }
-
- /**
- * Overloaded method to display the checksum.
- */
- protected function processChecksum() {
- if ($this->checksumValue === false) { // Calculate the checksum only once
- $this->calculateChecksum();
- }
-
- if ($this->checksumValue !== false) {
- $ret = '';
- $c = count($this->checksumValue);
- for ($i = 0; $i < $c; $i++) {
- $ret .= $this->keys[$this->checksumValue[$i]];
- }
-
- return $ret;
- }
-
- return false;
- }
-
- /**
- * Saves data into the classes.
- *
- * This method will save data, calculate real column number
- * (if -1 was selected), the real error level (if -1 was
- * selected)... It will add Padding to the end and generate
- * the error codes.
- *
- * @param array $data
- */
- private function setData($data) {
- $this->indcheck = $data[0];
- $this->data = $data[1];
- $this->calculateChecksum();
- }
-
- /**
- * Returns the extended reprensentation of the character.
- *
- * @param string $char
- * @return string
- */
- private static function getExtendedVersion($char) {
- $o = ord($char);
- if ($o === 0) {
- return '%U';
- } elseif ($o >= 1 && $o <= 26) {
- return '$' . chr($o + 64);
- } elseif (($o >= 33 && $o <= 44) || $o === 47 || $o === 48) {
- return '/' . chr($o + 32);
- } elseif ($o >= 97 && $o <= 122) {
- return '+' . chr($o - 32);
- } elseif ($o >= 27 && $o <= 31) {
- return '%' . chr($o + 38);
- } elseif ($o >= 59 && $o <= 63) {
- return '%' . chr($o + 11);
- } elseif ($o >= 91 && $o <= 95) {
- return '%' . chr($o - 16);
- } elseif ($o >= 123 && $o <= 127) {
- return '%' . chr($o - 43);
- } elseif ($o === 64) {
- return '%V';
- } elseif ($o === 96) {
- return '%W';
- } elseif ($o > 127) {
- return false;
- } else {
- return $char;
- }
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGean13.barcode.php b/niucloud/core/core/util/barcode/class/BCGean13.barcode.php
deleted file mode 100644
index 5289183e..00000000
--- a/niucloud/core/core/util/barcode/class/BCGean13.barcode.php
+++ /dev/null
@@ -1,322 +0,0 @@
-keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
-
- // Left-Hand Odd Parity starting with a space
- // Left-Hand Even Parity is the inverse (0=0012) starting with a space
- // Right-Hand is the same of Left-Hand starting with a bar
- $this->code = array(
- '2100', /* 0 */
- '1110', /* 1 */
- '1011', /* 2 */
- '0300', /* 3 */
- '0021', /* 4 */
- '0120', /* 5 */
- '0003', /* 6 */
- '0201', /* 7 */
- '0102', /* 8 */
- '2001' /* 9 */
- );
-
- // Parity, 0=Odd, 1=Even for manufacturer code. Depending on 1st System Digit
- $this->codeParity = array(
- array(0, 0, 0, 0, 0), /* 0 */
- array(0, 1, 0, 1, 1), /* 1 */
- array(0, 1, 1, 0, 1), /* 2 */
- array(0, 1, 1, 1, 0), /* 3 */
- array(1, 0, 0, 1, 1), /* 4 */
- array(1, 1, 0, 0, 1), /* 5 */
- array(1, 1, 1, 0, 0), /* 6 */
- array(1, 0, 1, 0, 1), /* 7 */
- array(1, 0, 1, 1, 0), /* 8 */
- array(1, 1, 0, 1, 0) /* 9 */
- );
-
- $this->alignDefaultLabel(true);
- }
-
- public function alignDefaultLabel($align) {
- $this->alignLabel = (bool)$align;
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- $this->drawBars($im);
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
-
- if ($this->isDefaultEanLabelEnabled()) {
- $dimension = $this->labelCenter1->getDimension();
- $this->drawExtendedBars($im, $dimension[1] - 2);
- }
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $startlength = 3;
- $centerlength = 5;
- $textlength = 12 * 7;
- $endlength = 3;
-
- $w += $startlength + $centerlength + $textlength + $endlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Adds the default label.
- */
- protected function addDefaultLabel() {
- if ($this->isDefaultEanLabelEnabled()) {
- $this->processChecksum();
- $label = $this->getLabel();
- $font = $this->font;
-
- $this->labelLeft = new BCGLabel(substr($label, 0, 1), $font, BCGLabel::POSITION_LEFT, BCGLabel::ALIGN_BOTTOM);
- $this->labelLeft->setSpacing(4 * $this->scale);
-
- $this->labelCenter1 = new BCGLabel(substr($label, 1, 6), $font, BCGLabel::POSITION_BOTTOM, BCGLabel::ALIGN_LEFT);
- $labelCenter1Dimension = $this->labelCenter1->getDimension();
- $this->labelCenter1->setOffset(($this->scale * 44 - $labelCenter1Dimension[0]) / 2 + $this->scale * 2);
-
- $this->labelCenter2 = new BCGLabel(substr($label, 7, 5) . $this->keys[$this->checksumValue], $font, BCGLabel::POSITION_BOTTOM, BCGLabel::ALIGN_LEFT);
- $this->labelCenter2->setOffset(($this->scale * 44 - $labelCenter1Dimension[0]) / 2 + $this->scale * 48);
-
- if ($this->alignLabel) {
- $labelDimension = $this->labelCenter1->getDimension();
- $this->labelLeft->setOffset($labelDimension[1]);
- } else {
- $labelDimension = $this->labelLeft->getDimension();
- $this->labelLeft->setOffset($labelDimension[1] / 2);
- }
-
- $this->addLabel($this->labelLeft);
- $this->addLabel($this->labelCenter1);
- $this->addLabel($this->labelCenter2);
- }
- }
-
- /**
- * Checks if the default ean label is enabled.
- *
- * @return bool
- */
- protected function isDefaultEanLabelEnabled() {
- $label = $this->getLabel();
- $font = $this->font;
- return $label !== null && $label !== '' && $font !== null && $this->defaultLabel !== null;
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('ean13', 'No data has been entered.');
- }
-
- $this->checkCharsAllowed();
- $this->checkCorrectLength();
-
- parent::validate();
- }
-
- /**
- * Check chars allowed.
- */
- protected function checkCharsAllowed() {
- // Checking if all chars are allowed
- $c = strlen($this->text);
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('ean13', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
- }
-
- /**
- * Check correct length.
- */
- protected function checkCorrectLength() {
- // If we have 13 chars, just flush the last one without throwing anything
- $c = strlen($this->text);
- if ($c === 13) {
- $this->text = substr($this->text, 0, 12);
- } elseif ($c !== 12) {
- throw new BCGParseException('ean13', 'Must contain 12 digits, the 13th digit is automatically added.');
- }
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- // Calculating Checksum
- // Consider the right-most digit of the message to be in an "odd" position,
- // and assign odd/even to each character moving from right to left
- // Odd Position = 3, Even Position = 1
- // Multiply it by the number
- // Add all of that and do 10-(?mod10)
- $odd = true;
- $this->checksumValue = 0;
- $c = strlen($this->text);
- for ($i = $c; $i > 0; $i--) {
- if ($odd === true) {
- $multiplier = 3;
- $odd = false;
- } else {
- $multiplier = 1;
- $odd = true;
- }
-
- if (!isset($this->keys[$this->text[$i - 1]])) {
- return;
- }
-
- $this->checksumValue += $this->keys[$this->text[$i - 1]] * $multiplier;
- }
-
- $this->checksumValue = (10 - $this->checksumValue % 10) % 10;
- }
-
- /**
- * Overloaded method to display the checksum.
- */
- protected function processChecksum() {
- if ($this->checksumValue === false) { // Calculate the checksum only once
- $this->calculateChecksum();
- }
-
- if ($this->checksumValue !== false) {
- return $this->keys[$this->checksumValue];
- }
-
- return false;
- }
-
- /**
- * Draws the bars
- *
- * @param resource $im
- */
- protected function drawBars($im) {
- // Checksum
- $this->calculateChecksum();
- $temp_text = $this->text . $this->keys[$this->checksumValue];
-
- // Starting Code
- $this->drawChar($im, '000', true);
-
- // Draw Second Code
- $this->drawChar($im, $this->findCode($temp_text[1]), false);
-
- // Draw Manufacturer Code
- for ($i = 0; $i < 5; $i++) {
- $this->drawChar($im, self::inverse($this->findCode($temp_text[$i + 2]), $this->codeParity[(int)$temp_text[0]][$i]), false);
- }
-
- // Draw Center Guard Bar
- $this->drawChar($im, '00000', false);
-
- // Draw Product Code
- for ($i = 7; $i < 13; $i++) {
- $this->drawChar($im, $this->findCode($temp_text[$i]), true);
- }
-
- // Draw Right Guard Bar
- $this->drawChar($im, '000', true);
- }
-
- /**
- * Draws the extended bars on the image.
- *
- * @param resource $im
- * @param int $plus
- */
- protected function drawExtendedBars($im, $plus) {
- $rememberX = $this->positionX;
- $rememberH = $this->thickness;
-
- // We increase the bars
- $this->thickness = $this->thickness + intval($plus / $this->scale);
- $this->positionX = 0;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
- $this->positionX += 2;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
-
- // Center Guard Bar
- $this->positionX += 44;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
- $this->positionX += 2;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
-
- // Last Bars
- $this->positionX += 44;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
- $this->positionX += 2;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
-
- $this->positionX = $rememberX;
- $this->thickness = $rememberH;
- }
-
- /**
- * Inverses the string when the $inverse parameter is equal to 1.
- *
- * @param string $text
- * @param int $inverse
- * @return string
- */
- private static function inverse($text, $inverse = 1) {
- if ($inverse === 1) {
- $text = strrev($text);
- }
-
- return $text;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGean8.barcode.php b/niucloud/core/core/util/barcode/class/BCGean8.barcode.php
deleted file mode 100644
index b89eb77b..00000000
--- a/niucloud/core/core/util/barcode/class/BCGean8.barcode.php
+++ /dev/null
@@ -1,244 +0,0 @@
-keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
-
- // Left-Hand Odd Parity starting with a space
- // Right-Hand is the same of Left-Hand starting with a bar
- $this->code = array(
- '2100', /* 0 */
- '1110', /* 1 */
- '1011', /* 2 */
- '0300', /* 3 */
- '0021', /* 4 */
- '0120', /* 5 */
- '0003', /* 6 */
- '0201', /* 7 */
- '0102', /* 8 */
- '2001' /* 9 */
- );
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- // Checksum
- $this->calculateChecksum();
- $temp_text = $this->text . $this->keys[$this->checksumValue];
-
- // Starting Code
- $this->drawChar($im, '000', true);
-
- // Draw First 4 Chars (Left-Hand)
- for ($i = 0; $i < 4; $i++) {
- $this->drawChar($im, $this->findCode($temp_text[$i]), false);
- }
-
- // Draw Center Guard Bar
- $this->drawChar($im, '00000', false);
-
- // Draw Last 4 Chars (Right-Hand)
- for ($i = 4; $i < 8; $i++) {
- $this->drawChar($im, $this->findCode($temp_text[$i]), true);
- }
-
- // Draw Right Guard Bar
- $this->drawChar($im, '000', true);
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
-
- if ($this->isDefaultEanLabelEnabled()) {
- $dimension = $this->labelRight->getDimension();
- $this->drawExtendedBars($im, $dimension[1] - 2);
- }
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $startlength = 3;
- $centerlength = 5;
- $textlength = 8 * 7;
- $endlength = 3;
-
- $w += $startlength + $centerlength + $textlength + $endlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Adds the default label.
- */
- protected function addDefaultLabel() {
- if ($this->isDefaultEanLabelEnabled()) {
- $this->processChecksum();
- $label = $this->getLabel();
- $font = $this->font;
-
- $this->labelLeft = new BCGLabel(substr($label, 0, 4), $font, BCGLabel::POSITION_BOTTOM, BCGLabel::ALIGN_LEFT);
- $labelLeftDimension = $this->labelLeft->getDimension();
- $this->labelLeft->setOffset(($this->scale * 30 - $labelLeftDimension[0]) / 2 + $this->scale * 2);
-
- $this->labelRight = new BCGLabel(substr($label, 4, 3) . $this->keys[$this->checksumValue], $font, BCGLabel::POSITION_BOTTOM, BCGLabel::ALIGN_LEFT);
- $labelRightDimension = $this->labelRight->getDimension();
- $this->labelRight->setOffset(($this->scale * 30 - $labelRightDimension[0]) / 2 + $this->scale * 34);
-
- $this->addLabel($this->labelLeft);
- $this->addLabel($this->labelRight);
- }
- }
-
- /**
- * Checks if the default ean label is enabled.
- *
- * @return bool
- */
- protected function isDefaultEanLabelEnabled() {
- $label = $this->getLabel();
- $font = $this->font;
- return $label !== null && $label !== '' && $font !== null && $this->defaultLabel !== null;
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('ean8', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('ean8', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
-
- // If we have 8 chars just flush the last one
- if ($c === 8) {
- $this->text = substr($this->text, 0, 7);
- } elseif ($c !== 7) {
- throw new BCGParseException('ean8', 'Must contain 7 digits, the 8th digit is automatically added.');
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- // Calculating Checksum
- // Consider the right-most digit of the message to be in an "odd" position,
- // and assign odd/even to each character moving from right to left
- // Odd Position = 3, Even Position = 1
- // Multiply it by the number
- // Add all of that and do 10-(?mod10)
- $odd = true;
- $this->checksumValue = 0;
- $c = strlen($this->text);
- for ($i = $c; $i > 0; $i--) {
- if ($odd === true) {
- $multiplier = 3;
- $odd = false;
- } else {
- $multiplier = 1;
- $odd = true;
- }
-
- if (!isset($this->keys[$this->text[$i - 1]])) {
- return;
- }
-
- $this->checksumValue += $this->keys[$this->text[$i - 1]] * $multiplier;
- }
-
- $this->checksumValue = (10 - $this->checksumValue % 10) % 10;
- }
-
- /**
- * Overloaded method to display the checksum.
- */
- protected function processChecksum() {
- if ($this->checksumValue === false) { // Calculate the checksum only once
- $this->calculateChecksum();
- }
-
- if ($this->checksumValue !== false) {
- return $this->keys[$this->checksumValue];
- }
-
- return false;
- }
-
- /**
- * Draws the extended bars on the image.
- *
- * @param resource $im
- * @param int $plus
- */
- private function drawExtendedBars($im, $plus) {
- $rememberX = $this->positionX;
- $rememberH = $this->thickness;
-
- // We increase the bars
- $this->thickness = $this->thickness + intval($plus / $this->scale);
- $this->positionX = 0;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
- $this->positionX += 2;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
-
- // Center Guard Bar
- $this->positionX += 30;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
- $this->positionX += 2;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
-
- // Last Bars
- $this->positionX += 30;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
- $this->positionX += 2;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
-
- $this->positionX = $rememberX;
- $this->thickness = $rememberH;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGgs1128.barcode.php b/niucloud/core/core/util/barcode/class/BCGgs1128.barcode.php
deleted file mode 100644
index 0393f245..00000000
--- a/niucloud/core/core/util/barcode/class/BCGgs1128.barcode.php
+++ /dev/null
@@ -1,679 +0,0 @@
-identifiersAi = array(
- '00' => array(self::NUMERIC, 18, 18, true),
- '01' => array(self::NUMERIC, 14, 14, true),
- '02' => array(self::NUMERIC, 14, 14, true),
- '10' => array(self::ALPHA_NUMERIC, 1, 20, false),
- '11' => array(self::DATE_YYMMDD, 6, 6, false),
- '12' => array(self::DATE_YYMMDD, 6, 6, false),
- '13' => array(self::DATE_YYMMDD, 6, 6, false),
- '15' => array(self::DATE_YYMMDD, 6, 6, false),
- '17' => array(self::DATE_YYMMDD, 6, 6, false),
- '20' => array(self::NUMERIC, 2, 2, false),
- '21' => array(self::ALPHA_NUMERIC, 1, 20, false),
- '240' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '241' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '250' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '251' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '253' => array(self::NUMERIC, 14, 30, false),
- '30' => array(self::NUMERIC, 1, 8, false),
- '310y' => array(self::NUMERIC, 6, 6, false),
- '311y' => array(self::NUMERIC, 6, 6, false),
- '312y' => array(self::NUMERIC, 6, 6, false),
- '313y' => array(self::NUMERIC, 6, 6, false),
- '314y' => array(self::NUMERIC, 6, 6, false),
- '315y' => array(self::NUMERIC, 6, 6, false),
- '316y' => array(self::NUMERIC, 6, 6, false),
- '320y' => array(self::NUMERIC, 6, 6, false),
- '321y' => array(self::NUMERIC, 6, 6, false),
- '322y' => array(self::NUMERIC, 6, 6, false),
- '323y' => array(self::NUMERIC, 6, 6, false),
- '324y' => array(self::NUMERIC, 6, 6, false),
- '325y' => array(self::NUMERIC, 6, 6, false),
- '326y' => array(self::NUMERIC, 6, 6, false),
- '327y' => array(self::NUMERIC, 6, 6, false),
- '328y' => array(self::NUMERIC, 6, 6, false),
- '329y' => array(self::NUMERIC, 6, 6, false),
- '330y' => array(self::NUMERIC, 6, 6, false),
- '331y' => array(self::NUMERIC, 6, 6, false),
- '332y' => array(self::NUMERIC, 6, 6, false),
- '333y' => array(self::NUMERIC, 6, 6, false),
- '334y' => array(self::NUMERIC, 6, 6, false),
- '335y' => array(self::NUMERIC, 6, 6, false),
- '336y' => array(self::NUMERIC, 6, 6, false),
- '337y' => array(self::NUMERIC, 6, 6, false),
- '340y' => array(self::NUMERIC, 6, 6, false),
- '341y' => array(self::NUMERIC, 6, 6, false),
- '342y' => array(self::NUMERIC, 6, 6, false),
- '343y' => array(self::NUMERIC, 6, 6, false),
- '344y' => array(self::NUMERIC, 6, 6, false),
- '345y' => array(self::NUMERIC, 6, 6, false),
- '346y' => array(self::NUMERIC, 6, 6, false),
- '347y' => array(self::NUMERIC, 6, 6, false),
- '348y' => array(self::NUMERIC, 6, 6, false),
- '349y' => array(self::NUMERIC, 6, 6, false),
- '350y' => array(self::NUMERIC, 6, 6, false),
- '351y' => array(self::NUMERIC, 6, 6, false),
- '352y' => array(self::NUMERIC, 6, 6, false),
- '353y' => array(self::NUMERIC, 6, 6, false),
- '354y' => array(self::NUMERIC, 6, 6, false),
- '355y' => array(self::NUMERIC, 6, 6, false),
- '356y' => array(self::NUMERIC, 6, 6, false),
- '357y' => array(self::NUMERIC, 6, 6, false),
- '360y' => array(self::NUMERIC, 6, 6, false),
- '361y' => array(self::NUMERIC, 6, 6, false),
- '362y' => array(self::NUMERIC, 6, 6, false),
- '363y' => array(self::NUMERIC, 6, 6, false),
- '364y' => array(self::NUMERIC, 6, 6, false),
- '365y' => array(self::NUMERIC, 6, 6, false),
- '366y' => array(self::NUMERIC, 6, 6, false),
- '367y' => array(self::NUMERIC, 6, 6, false),
- '368y' => array(self::NUMERIC, 6, 6, false),
- '369y' => array(self::NUMERIC, 6, 6, false),
- '37' => array(self::NUMERIC, 1, 8, false),
- '390y' => array(self::NUMERIC, 1, 15, false),
- '391y' => array(self::NUMERIC, 4, 18, false),
- '392y' => array(self::NUMERIC, 1, 15, false),
- '393y' => array(self::NUMERIC, 4, 18, false),
- '400' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '401' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '402' => array(self::NUMERIC, 17, 17, false),
- '403' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '410' => array(self::NUMERIC, 13, 13, true),
- '411' => array(self::NUMERIC, 13, 13, true),
- '412' => array(self::NUMERIC, 13, 13, true),
- '413' => array(self::NUMERIC, 13, 13, true),
- '414' => array(self::NUMERIC, 13, 13, true),
- '415' => array(self::NUMERIC, 13, 13, true),
- '420' => array(self::ALPHA_NUMERIC, 1, 20, false),
- '421' => array(self::ALPHA_NUMERIC, 4, 12, false),
- '422' => array(self::NUMERIC, 3, 3, false),
- '8001' => array(self::NUMERIC, 14, 14, false),
- '8002' => array(self::ALPHA_NUMERIC, 1, 20, false),
- '8003' => array(self::ALPHA_NUMERIC, 15, 30, false),
- '8004' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '8005' => array(self::NUMERIC, 6, 6, false),
- '8006' => array(self::NUMERIC, 18, 18, false),
- '8007' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '8018' => array(self::NUMERIC, 18, 18, false),
- '8020' => array(self::ALPHA_NUMERIC, 1, 25, false),
- '8100' => array(self::NUMERIC, 6, 6, false),
- '8101' => array(self::NUMERIC, 10, 10, false),
- '8102' => array(self::NUMERIC, 2, 2, false),
- '90' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '91' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '92' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '93' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '94' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '95' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '96' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '97' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '98' => array(self::ALPHA_NUMERIC, 1, 30, false),
- '99' => array(self::ALPHA_NUMERIC, 1, 30, false)
- );
-
- $this->setStrictMode(true);
- $this->setTilde(true);
- $this->setAllowsUnknownIdentifier(false);
- $this->setNoLengthLimit(false);
- }
-
- /**
- * Gets the content checksum for an identifier.
- * Do not pass the identifier code.
- *
- * @param string $content
- * @return int
- */
- public static function getAiContentChecksum($content) {
- return self::calculateChecksumMod10($content);
- }
-
- /**
- * Enables or disables the strict mode.
- *
- * @param bool $strictMode
- */
- public function setStrictMode($strictMode) {
- $this->strictMode = $strictMode;
- }
-
- /**
- * Gets if the strict mode is activated.
- *
- * @return bool
- */
- public function getStrictMode() {
- return $this->strictMode;
- }
-
- /**
- * Allows unknown identifiers.
- *
- * @param bool $allow
- */
- public function setAllowsUnknownIdentifier($allow) {
- $this->allowsUnknownIdentifier = (bool)$allow;
- }
-
- /**
- * Gets if unkmown identifiers are allowed.
- *
- * @return bool
- */
- public function getAllowsUnknownIdentifier() {
- return $this->allowsUnknownIdentifier;
- }
-
- /**
- * Removes the limit of 48 characters.
- *
- * @param bool $noLengthLimit
- */
- public function setNoLengthLimit($noLengthLimit) {
- $this->noLengthLimit = (bool)$noLengthLimit;
- }
-
- /**
- * Gets if the limit of 48 characters is removed.
- *
- * @return bool
- */
- public function getNoLengthLimit() {
- return $this->noLengthLimit;
- }
-
- /**
- * Parses Text.
- *
- * @param string $text
- */
- public function parse($text) {
- parent::parse($this->parseGs1128($text));
- }
-
- /**
- * Formats data for gs1-128.
- *
- * @return string
- */
- private function formatGs1128() {
- $formatedText = '~F1';
- $formatedLabel = '';
- $c = count($this->identifiersId);
-
- for ($i = 0; $i < $c; $i++) {
- if ($i > 0) {
- $formatedLabel .= ' ';
- }
-
- if ($this->identifiersId[$i] !== null) {
- $formatedLabel .= '(' . $this->identifiersId[$i] . ')';
- }
-
- $formatedText .= $this->identifiersId[$i];
-
- $formatedLabel .= $this->identifiersContent[$i];
- $formatedText .= $this->identifiersContent[$i];
-
- if (isset($this->identifiersAi[$this->identifiersId[$i]])) {
- $ai_data = $this->identifiersAi[$this->identifiersId[$i]];
- } elseif (isset($this->identifiersId[$i][3])) {
- $identifierWithVar = substr($this->identifiersId[$i], 0, -1) . 'y';
- $ai_data = isset($this->identifiersAi[$identifierWithVar]) ? $this->identifiersAi[$identifierWithVar] : null;
- } else {
- $ai_data = null;
- }
-
- /* We'll check if we need to add a ~F1 () char */
- /* If we use the legacy mode, we always add a ~F1 () char between AIs */
- if ($ai_data !== null) {
- if ((strlen($this->identifiersContent[$i]) < $ai_data[self::MAXLENGTH] && ($i + 1) !== $c) || (!$this->strictMode && ($i + 1) !== $c)) {
- $formatedText .= '~F1';
- }
- } elseif ($this->allowsUnknownIdentifier && $this->identifiersId[$i] === null && ($i + 1) !== $c) {
- /* If this id is unknown, we add a ~F1 () char */
- $formatedText .= '~F1';
- }
- }
-
- if ($this->noLengthLimit === false && (strlen(str_replace('~F1', chr(29), $formatedText)) - 1) > self::MAX_GS1128_CHARS) {
- throw new BCGParseException('gs1128', 'The barcode can\'t contain more than ' . self::MAX_GS1128_CHARS . ' characters.');
- }
-
- $this->label = $formatedLabel;
- return $formatedText;
- }
-
- /**
- * Parses the text to gs1-128.
- *
- * @param mixed $text
- * @return mixed
- */
- private function parseGs1128($text) {
- /* We format correctly what the user gives */
- if (is_array($text)) {
- $formatArray = array();
- foreach ($text as $content) {
- if (is_array($content)) { /* double array */
- if (count($content) === 2) {
- if (is_array($content[self::ID]) || is_array($content[self::CONTENT])) {
- throw new BCGParseException('gs1128', 'Double arrays can\'t contain arrays.');
- } else {
- $formatArray[] = '(' . $content[self::ID] . ')' . $content[self::CONTENT];
- }
- } else {
- throw new BCGParseException('gs1128', 'Double arrays must contain 2 values.');
- }
- } else { /* simple array */
- $formatArray[] = $content;
- }
- }
-
- unset($text);
- $text = $formatArray;
- } else { /* string */
- $text = array($text);
- }
-
- $textCount = count($text);
- for ($cmpt = 0; $cmpt < $textCount; $cmpt++) {
- /* We parse the content of the array */
- if (!$this->parseContent($text[$cmpt])) {
- return;
- }
- }
-
- return $this->formatGs1128();
- }
-
- /**
- * Splits the id and the content for each application identifiers (AIs).
- *
- * @param string $text
- * @param int $cmpt
- * @return bool
- */
- private function parseContent($text) {
- /* $yAlreadySet has 3 states: */
- /* null: There is no variable in the ID; true: the variable is already set; false: the variable is not set yet; */
- $content = null;
- $yAlreadySet = null;
- $realNameId = null;
- $separatorsFound = 0;
- $checksumAdded = 0;
- $decimalPointRemoved = 0;
- $toParse = str_replace('~F1', chr(29), $text);
- $nbCharToParse = strlen($toParse);
- $nbCharId = 0;
- $isFormated = $toParse[0] === '(' ? true : false;
- $maxCharId = $isFormated ? self::MAX_ID_FORMATED : self::MAX_ID_NOT_FORMATED;
- $id = strtolower(substr($toParse, 0, min($maxCharId, $nbCharToParse)));
- $id = $isFormated ? $this->findIdFormated($id, $yAlreadySet, $realNameId) : $this->findIdNotFormated($id, $yAlreadySet, $realNameId);
-
- if ($id === false) {
- if ($this->allowsUnknownIdentifier === false) {
- return false;
- }
-
- $id = null;
- $nbCharId = 0;
- $content = $toParse;
- } else {
- $nbCharId = strlen($id) + ($isFormated ? 2 : 0);
- $n = min($this->identifiersAi[$realNameId][self::MAXLENGTH], $nbCharToParse);
- $content = substr($toParse, $nbCharId, $n);
- }
-
- if ($id !== null) {
- /* If we have an AI with an "y" var, we check if there is a decimal point in the next *MAXLENGTH* characters */
- /* if there is one, we take an extra character */
- if ($yAlreadySet !== null) {
- if (strpos($content, '.') !== false || strpos($content, ',') !== false) {
- $n++;
- if ($n <= $nbCharToParse) {
- /* We take an extra char */
- $content = substr($toParse, $nbCharId, $n);
- }
- }
- }
- }
-
- /* We check for separator */
- $separator = strpos($content, chr(29));
- if ($separator !== false) {
- $content = substr($content, 0, $separator);
- $separatorsFound++;
- }
-
- if ($id !== null) {
- /* We check the conformity */
- if (!$this->checkConformity($content, $id, $realNameId)) {
- return false;
- }
-
- /* We check the checksum */
- if (!$this->checkChecksum($content, $id, $realNameId, $checksumAdded)) {
- return false;
- }
-
- /* We check the vars */
- if (!$this->checkVars($content, $id, $yAlreadySet, $decimalPointRemoved)) {
- return false;
- }
- }
-
- $this->identifiersId[] = $id;
- $this->identifiersContent[] = $content;
-
- $nbCharLastContent = (((strlen($content) + $nbCharId) - $checksumAdded) + $decimalPointRemoved) + $separatorsFound;
- if ($nbCharToParse - $nbCharLastContent > 0) {
- /* If there is more than one content in this array, we parse again */
- $otherContent = substr($toParse, $nbCharLastContent, $nbCharToParse);
- $nbCharOtherContent = strlen($otherContent);
-
- if ($otherContent[0] === chr(29)) {
- $otherContent = substr($otherContent, 1);
- $nbCharOtherContent--;
- }
-
- if ($nbCharOtherContent > 0) {
- $text = $otherContent;
- return $this->parseContent($text);
- }
- }
-
- return true;
- }
-
- /**
- * Checks if an id exists.
- *
- * @param string $id
- * @param bool $yAlreadySet
- * @param string $realNameId
- * @return bool
- */
- private function idExists($id, &$yAlreadySet, &$realNameId) {
- $yFound = isset($id[3]) && $id[3] === 'y';
- $idVarAdded = substr($id, 0, -1) . 'y';
-
- if (isset($this->identifiersAi[$id])) {
- if ($yFound) {
- $yAlreadySet = false;
- }
-
- $realNameId = $id;
- return true;
- } elseif (!$yFound && isset($this->identifiersAi[$idVarAdded])) {
- /* if the id don't exist, we try to find this id with "y" at the last char */
- $yAlreadySet = true;
- $realNameId = $idVarAdded;
- return true;
- }
-
- return false;
- }
-
- /**
- * Finds ID with formated content.
- *
- * @param string $id
- * @param bool $yAlreadySet
- * @param string $realNameId
- * @return mixed
- */
- private function findIdFormated($id, &$yAlreadySet, &$realNameId) {
- $pos = strpos($id, ')');
- if ($pos === false) {
- throw new BCGParseException('gs1128', 'Identifiers must have no more than 4 characters.');
- } else {
- if ($pos < 3) {
- throw new BCGParseException('gs1128', 'Identifiers must have at least 2 characters.');
- }
-
- $id = substr($id, 1, $pos - 1);
- if ($this->idExists($id, $yAlreadySet, $realNameId)) {
- return $id;
- }
-
- if ($this->allowsUnknownIdentifier === false) {
- throw new BCGParseException('gs1128', 'The identifier ' . $id . ' doesn\'t exist.');
- }
-
- return false;
- }
- }
-
- /**
- * Finds ID with non-formated content.
- *
- * @param string $id
- * @param bool $yAlreadySet
- * @param string $realNameId
- * @return mixed
- */
- private function findIdNotFormated($id, &$yAlreadySet, &$realNameId) {
- $tofind = $id;
-
- while (strlen($tofind) >= 2) {
- if ($this->idExists($tofind, $yAlreadySet, $realNameId)) {
- return $tofind;
- } else {
- $tofind = substr($tofind, 0, -1);
- }
- }
-
- if ($this->allowsUnknownIdentifier === false) {
- throw new BCGParseException('gs1128', 'Error in formatting, can\'t find an identifier.');
- }
-
- return false;
- }
-
- /**
- * Checks confirmity of the content.
- *
- * @param string $content
- * @param string $id
- * @param string $realNameId
- * @return bool
- */
- private function checkConformity(&$content, $id, $realNameId) {
- switch ($this->identifiersAi[$realNameId][self::KIND_OF_DATA]) {
- case self::NUMERIC:
- $content = str_replace(',', '.', $content);
- if (!preg_match("/^[0-9.]+$/", $content)) {
- throw new BCGParseException('gs1128', 'The value of "' . $id . '" must be numerical.');
- }
-
- break;
- case self::DATE_YYMMDD:
- $valid_date = true;
- if (preg_match("/^[0-9]{6}$/", $content)) {
- $year = substr($content, 0, 2);
- $month = substr($content, 2, 2);
- $day = substr($content, 4, 2);
-
- /* day can be 00 if we only need month and year */
- if (intval($month) < 1 || intval($month) > 12 || intval($day) < 0 || intval($day) > 31) {
- $valid_date = false;
- }
- } else {
- $valid_date = false;
- }
-
- if (!$valid_date) {
- throw new BCGParseException('gs1128', 'The value of "' . $id . '" must be in YYMMDD format.');
- }
-
- break;
- }
-
- // We check the length of the content
- $nbCharContent = strlen($content);
- $checksumChar = 0;
- $minlengthContent = $this->identifiersAi[$realNameId][self::MINLENGTH];
- $maxlengthContent = $this->identifiersAi[$realNameId][self::MAXLENGTH];
-
- if ($this->identifiersAi[$realNameId][self::CHECKSUM]) {
- $checksumChar++;
- }
-
- if ($nbCharContent < ($minlengthContent - $checksumChar)) {
- if ($minlengthContent === $maxlengthContent) {
- throw new BCGParseException('gs1128', 'The value of "' . $id . '" must contain ' . $minlengthContent . ' character(s).');
- } else {
- throw new BCGParseException('gs1128', 'The value of "' . $id . '" must contain between ' . $minlengthContent . ' and ' . $maxlengthContent . ' character(s).');
- }
- }
-
- return true;
- }
-
- /**
- * Verifies the checksum.
- *
- * @param string $content
- * @param string $id
- * @param int $realNameId
- * @param int $checksumAdded
- * @return bool
- */
- private function checkChecksum(&$content, $id, $realNameId, &$checksumAdded) {
- if ($this->identifiersAi[$realNameId][self::CHECKSUM]) {
- $nbCharContent = strlen($content);
- $minlengthContent = $this->identifiersAi[$realNameId][self::MINLENGTH];
- if ($nbCharContent === ($minlengthContent - 1)) {
- /* we need to calculate the checksum */
- $content .= self::getAiContentChecksum($content);
- $checksumAdded++;
- } elseif ($nbCharContent === $minlengthContent) {
- /* we need to check the checksum */
- $checksum = self::getAiContentChecksum(substr($content, 0, -1));
- if (intval($content[$nbCharContent - 1]) !== $checksum) {
- throw new BCGParseException('gs1128', 'The checksum of "(' . $id . ') ' . $content . '" must be: ' . $checksum);
- }
- }
- }
-
- return true;
- }
-
- /**
- * Checks vars "y".
- *
- * @param string $content
- * @param string $id
- * @param bool $yAlreadySet
- * @param int $decimalPointRemoved
- * @return bool
- */
- private function checkVars(&$content, &$id, $yAlreadySet, &$decimalPointRemoved) {
- $nbCharContent = strlen($content);
- /* We check for "y" var in AI */
- if ($yAlreadySet) {
- /* We'll check if we have a decimal point */
- if (strpos($content, '.') !== false) {
- throw new BCGParseException('gs1128', 'If you do not use any "y" variable, you have to insert a whole number.');
- }
- } elseif ($yAlreadySet !== null) {
- /* We need to replace the "y" var with the position of the decimal point */
- $pos = strpos($content, '.');
- if ($pos === false) {
- $pos = $nbCharContent - 1;
- }
-
- $id = str_replace('y', $nbCharContent - ($pos + 1), strtolower($id));
- $content = str_replace('.', '', $content);
- $decimalPointRemoved++;
- }
-
- return true;
- }
-
- /**
- * Checksum Mod10.
- *
- * @param int $content
- * @return int
- */
- private static function calculateChecksumMod10($content) {
- // Calculating Checksum
- // Consider the right-most digit of the message to be in an "odd" position,
- // and assign odd/even to each character moving from right to left
- // Odd Position = 3, Even Position = 1
- // Multiply it by the number
- // Add all of that and do 10-(?mod10)
- $odd = true;
- $checksumValue = 0;
- $c = strlen($content);
-
- for ($i = $c; $i > 0; $i--) {
- if ($odd === true) {
- $multiplier = 3;
- $odd = false;
- } else {
- $multiplier = 1;
- $odd = true;
- }
-
- $checksumValue += ($content[$i - 1] * $multiplier);
- }
-
- return (10 - $checksumValue % 10) % 10;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGi25.barcode.php b/niucloud/core/core/util/barcode/class/BCGi25.barcode.php
deleted file mode 100644
index d4ee00c6..00000000
--- a/niucloud/core/core/util/barcode/class/BCGi25.barcode.php
+++ /dev/null
@@ -1,203 +0,0 @@
-keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
- $this->code = array(
- '00110', /* 0 */
- '10001', /* 1 */
- '01001', /* 2 */
- '11000', /* 3 */
- '00101', /* 4 */
- '10100', /* 5 */
- '01100', /* 6 */
- '00011', /* 7 */
- '10010', /* 8 */
- '01010' /* 9 */
- );
-
- $this->setChecksum(false);
- $this->setRatio(2);
- }
-
- /**
- * Sets the checksum.
- *
- * @param bool $checksum
- */
- public function setChecksum($checksum) {
- $this->checksum = (bool)$checksum;
- }
-
- /**
- * Sets the ratio of the black bar compared to the white bars.
- *
- * @param int $ratio
- */
- public function setRatio($ratio) {
- $this->ratio = $ratio;
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- $temp_text = $this->text;
-
- // Checksum
- if ($this->checksum === true) {
- $this->calculateChecksum();
- $temp_text .= $this->keys[$this->checksumValue];
- }
-
- // Starting Code
- $this->drawChar($im, '0000', true);
-
- // Chars
- $c = strlen($temp_text);
- for ($i = 0; $i < $c; $i += 2) {
- $temp_bar = '';
- $c2 = strlen($this->findCode($temp_text[$i]));
- for ($j = 0; $j < $c2; $j++) {
- $temp_bar .= substr($this->findCode($temp_text[$i]), $j, 1);
- $temp_bar .= substr($this->findCode($temp_text[$i + 1]), $j, 1);
- }
-
- $this->drawChar($im, $this->changeBars($temp_bar), true);
- }
-
- // Ending Code
- $this->drawChar($im, $this->changeBars('100'), true);
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $textlength = (3 + ($this->ratio + 1) * 2) * strlen($this->text);
- $startlength = 4;
- $checksumlength = 0;
- if ($this->checksum === true) {
- $checksumlength = (3 + ($this->ratio + 1) * 2);
- }
-
- $endlength = 2 + ($this->ratio + 1);
-
- $w += $startlength + $textlength + $checksumlength + $endlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('i25', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('i25', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
-
- // Must be even
- if ($c % 2 !== 0 && $this->checksum === false) {
- throw new BCGParseException('i25', 'i25 must contain an even amount of digits if checksum is false.');
- } elseif ($c % 2 === 0 && $this->checksum === true) {
- throw new BCGParseException('i25', 'i25 must contain an odd amount of digits if checksum is true.');
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- // Calculating Checksum
- // Consider the right-most digit of the message to be in an "even" position,
- // and assign odd/even to each character moving from right to left
- // Even Position = 3, Odd Position = 1
- // Multiply it by the number
- // Add all of that and do 10-(?mod10)
- $even = true;
- $this->checksumValue = 0;
- $c = strlen($this->text);
- for ($i = $c; $i > 0; $i--) {
- if ($even === true) {
- $multiplier = 3;
- $even = false;
- } else {
- $multiplier = 1;
- $even = true;
- }
-
- $this->checksumValue += $this->keys[$this->text[$i - 1]] * $multiplier;
- }
-
- $this->checksumValue = (10 - $this->checksumValue % 10) % 10;
- }
-
- /**
- * Overloaded method to display the checksum.
- */
- protected function processChecksum() {
- if ($this->checksumValue === false) { // Calculate the checksum only once
- $this->calculateChecksum();
- }
-
- if ($this->checksumValue !== false) {
- return $this->keys[$this->checksumValue];
- }
-
- return false;
- }
-
- /**
- * Changes the size of the bars based on the ratio
- *
- * @param string $in
- * @return string
- */
- private function changeBars($in) {
- if ($this->ratio > 1) {
- $c = strlen($in);
- for ($i = 0; $i < $c; $i++) {
- $in[$i] = $in[$i] === '1' ? $this->ratio : $in[$i];
- }
- }
-
- return $in;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGintelligentmail.barcode.php b/niucloud/core/core/util/barcode/class/BCGintelligentmail.barcode.php
deleted file mode 100644
index cb2a5f3c..00000000
--- a/niucloud/core/core/util/barcode/class/BCGintelligentmail.barcode.php
+++ /dev/null
@@ -1,649 +0,0 @@
-setQuietZone(true);
- $this->setThickness(9);
- }
-
- /**
- * Gets the Quiet zone.
- *
- * @return bool
- */
- public function getQuietZone() {
- return $this->quietZone;
- }
-
- /**
- * Sets the Quiet zone.
- *
- * @param bool $quietZone
- */
- public function setQuietZone($quietZone) {
- $this->quietZone = (bool)$quietZone;
- }
-
- /**
- * Sets the tracking code.
- *
- * @param int $barcodeIdentifier 2-digit number. 2nd digit must be 0-4
- * @param int $serviceTypeIdentifier 3 digits
- * @param int $mailerIdentifier 6 or 9 digits
- * @param int $serialNumber 9 (if mailerId is 6) or 6 digits (if mailerId is 9)
- */
- public function setTrackingCode($barcodeIdentifier, $serviceTypeIdentifier, $mailerIdentifier, $serialNumber) {
- $barcodeIdentifier = (string)(int)$barcodeIdentifier;
- $serviceTypeIdentifier = (int)$serviceTypeIdentifier;
- $mailerIdentifier = (int)$mailerIdentifier;
- $serialNumber = (string)(int)$serialNumber;
-
- $barcodeIdentifier = str_pad($barcodeIdentifier, 2, '0', STR_PAD_LEFT);
-
- if (strlen($barcodeIdentifier) !== 2) {
- throw new BCGArgumentException('Barcode Identifier must contain 2 digits.', 'barcodeIdentifier');
- }
-
- $barcodeIdentifierSecondNumber = $barcodeIdentifier[1];
- if ($barcodeIdentifierSecondNumber !== '0' && $barcodeIdentifierSecondNumber !== '1' && $barcodeIdentifierSecondNumber !== '2' && $barcodeIdentifierSecondNumber !== '3' && $barcodeIdentifierSecondNumber !== '4') {
- throw new BCGArgumentException('Barcode Identifier second digit must be a number between 0 and 4.', 'barcodeIdentifier');
- }
-
- if ($serviceTypeIdentifier < 0 || $serviceTypeIdentifier > 999) {
- throw new BCGArgumentException('Service Type Identifier must be between 0 and 999.', 'serviceTypeIdentifier');
- }
-
- $mailerIdentifierLength = 6;
- if ($mailerIdentifier > 899999) {
- $mailerIdentifierLength = 9;
- }
-
- if ($mailerIdentifierLength === 9 && strlen($serialNumber) > 6) {
- throw new BCGArgumentException('If the Serial Number has more than 6 digits, the Mailer Identifier must be lower than 900000.', 'mailerIdentifier');
- }
-
- if ($mailerIdentifierLength === 9) {
- if ($mailerIdentifierLength < 0 || $mailerIdentifier > 999999999) {
- throw new BCGArgumentException('Mailer Identifier must be between 0 and 999999999.', 'mailerIdentifier');
- }
- }
-
- $this->barcodeIdentifier = $barcodeIdentifier;
- $this->serviceTypeIdentifier = str_pad($serviceTypeIdentifier, 3, '0', STR_PAD_LEFT);
- $this->mailerIdentifier = str_pad($mailerIdentifier, $mailerIdentifierLength, '0', STR_PAD_LEFT);
- $this->serialNumber = str_pad((int)$serialNumber, $mailerIdentifierLength === 6 ? 9 : 6, '0', STR_PAD_LEFT);
- }
-
- /**
- * Parses the text before displaying it.
- *
- * @param mixed $text
- */
- public function parse($text) {
- parent::parse($text);
-
- $number = self::executeStep1($this->text, $this->barcodeIdentifier, $this->serviceTypeIdentifier, $this->mailerIdentifier, $this->serialNumber);
- $crc = self::executeStep2($number);
- $codewords = self::executeStep3($number);
- $codewords = self::executeStep4($codewords, $crc);
- $characters = self::executeStep5($codewords, $crc);
- $this->data = self::executeStep6($characters);
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- if ($this->quietZone) {
- $this->positionX += 9;
- }
-
- $c = strlen($this->data);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->data[$i]);
- }
-
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness + ($this->quietZone ? 4 : 0));
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $w += 65 * 3;
- $h += $this->thickness;
-
- // We remove the white on the right
- $w -= 1.56;
-
- if ($this->quietZone) {
- $w += 18;
- $h += 4;
- }
-
- return parent::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- // Tracking must have been entered
- if ($this->barcodeIdentifier === null || $this->serviceTypeIdentifier === null || $this->mailerIdentifier === null || $this->serialNumber === null) {
- throw new BCGParseException('intelligentmail', 'The tracking code must be set before calling the parse method.');
- }
-
- // Checking if all chars are allowed
- $match = array();
- if (preg_match('/[^0-9]/', $this->text, $match)) {
- throw new BCGParseException('intelligentmail', 'The character \'' . $match[0] . '\' is not allowed.');
- }
-
- // Must contain 0, 5, 9 or 11 chars
- $c = strlen($this->text);
- if ($c !== 0 && $c !== 5 && $c !== 9 && $c !== 11) {
- throw new BCGParseException('intelligentmail', 'Must contain 0, 5, 9, or 11 characters.');
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method for drawing special barcode.
- *
- * @param resource $im
- * @param string $code
- * @param boolean $startBar
- */
- protected function drawChar($im, $code, $startBar = true) {
- $y1 = 0;
- $y2 = 0;
- switch ($code) {
- case 'A':
- $y1 = 0;
- $y2 = $this->thickness - ($this->thickness / 2.5);
- break;
- case 'D':
- $y1 = 3.096;
- $y2 = $this->thickness - 1;
- break;
- case 'F':
- $y1 = 0;
- $y2 = $this->thickness - 1;
- break;
- case 'T':
- $y1 = 3.096;
- $y2 = $this->thickness - ($this->thickness / 2.5);
- break;
- }
-
- if ($this->quietZone) {
- $y1 += 2;
- $y2 += 2;
- }
-
- $this->drawFilledRectangle($im, $this->positionX, $y1, $this->positionX + 0.44, $y2, BCGBarcode::COLOR_FG);
- $this->positionX += 3;
- }
-
- /**
- * Executes Step 1: Conversion of Data Fields into Binary Data
- *
- * @param string $text
- * @param string $barcodeIdentifier
- * @param string $serviceTypeIdentifier
- * @param string $mailerIdentifier
- * @param string $serialNumber
- * @return string BCNumber
- */
- private static function executeStep1($text, $barcodeIdentifier, $serviceTypeIdentifier, $mailerIdentifier, $serialNumber) {
- $number = self::conversionRoutingCode($text);
- $number = self::conversionTrackingCode($number, $barcodeIdentifier, $serviceTypeIdentifier, $mailerIdentifier, $serialNumber);
-
- return $number;
- }
-
- /**
- * Executes Step 2: Generation of 11-Bit CRC on Binary Data
- *
- * @param $number BCNumber
- * @return int
- */
- private static function executeStep2($number) {
- $byteArray = str_pad(self::bcdecuc($number), 13, chr(0), STR_PAD_LEFT);
-
- $generatorPolynomial = 0x0f35;
- $frameCheckSequence = 0x07ff;
- $data = 0;
- $byteIndex = 0;
- $bit = 0;
-
- $data = (ord($byteArray[$byteIndex]) << 5) & 0xffff;
- for ($bit = 2; $bit < 8; $bit++) {
- if (($frameCheckSequence ^ $data) & 0x400) {
- $frameCheckSequence = ($frameCheckSequence << 1) ^ $generatorPolynomial;
- } else {
- $frameCheckSequence = ($frameCheckSequence << 1);
- }
-
- $frameCheckSequence &= 0x7ff;
- $data <<= 1;
- $data &= 0xffff;
- }
-
- for ($byteIndex = 1; $byteIndex < 13; $byteIndex++) {
- $data = (ord($byteArray[$byteIndex]) << 3) & 0xffff;
- for ($bit = 0; $bit < 8; $bit++) {
- if (($frameCheckSequence ^ $data) & 0x0400) {
- $frameCheckSequence = ($frameCheckSequence << 1) ^ $generatorPolynomial;
- } else {
- $frameCheckSequence = ($frameCheckSequence << 1);
- }
-
- $frameCheckSequence &= 0x7ff;
- $data <<= 1;
- $data &= 0xffff;
- }
- }
-
- return $frameCheckSequence;
- }
-
- /**
- * Executes Step 3: Conversion from Binary Data to Codewords
- *
- * @param string $number BCNumber
- * @return int[]
- */
- private static function executeStep3($number) {
- $codewords = array();
- $codewords[9] = (int)bcmod($number, '636');
- $number = bcdiv($number, '636', 0);
-
- for ($i = 8; $i >= 0; $i--) {
- $codewords[$i] = (int)bcmod($number, '1365');
- $number = bcdiv($number, '1365', 0);
- }
-
- return $codewords;
- }
-
- /**
- * Executes Step 4: Inserting Additional Information into Codewords
- *
- * @param int[] $codewords
- * @param int $crc
- * @return int[]
- */
- private static function executeStep4($codewords, $crc) {
- $codewords[9] *= 2;
- if ($crc & 0x400) {
- $codewords[0] += 659;
- }
-
- return $codewords;
- }
-
- /**
- * Executes Step 5: Conversion from Codewords to Characters
- *
- * @param int[] $codewords
- * @param int $crc
- * @return int[]
- */
- private static function executeStep5($codewords, $crc) {
- $characters = array();
- for ($i = 0; $i < 10; $i++) {
- if ($codewords[$i] <= 1286) {
- $characters[$i] = self::$characterTable1[$codewords[$i]];
- } else {
- $characters[$i] = self::$characterTable2[$codewords[$i] - 1287];
- }
- }
-
- for ($i = 0; $i < 10; $i++) {
- $mask = 1 << $i;
- if ($crc & $mask) {
- $characters[$i] ^= 0x1fff;
- }
- }
-
- return $characters;
- }
-
- /**
- * Executes Step 6: Conversion from Characters to the Intelligent Mail Barcode
- *
- * @param int[] $characters
- * @return string
- */
- private static function executeStep6($characters) {
- $bars = '';
- for ($i = 0; $i < 65; $i++) {
- $barPosition = self::$barPositions[$i];
- $descender = $barPosition[0];
- $ascender = $barPosition[1];
- $extenderDescender = !!($characters[$descender[0]] & (1 << $descender[1]));
- $extenderAscender = !!($characters[$ascender[0]] & (1 << $ascender[1]));
-
- if ($extenderDescender && $extenderAscender) {
- $bars .= 'F';
- } elseif ($extenderDescender) {
- $bars .= 'D';
- } elseif ($extenderAscender) {
- $bars .= 'A';
- } else {
- $bars .= 'T';
- }
- }
-
- return $bars;
- }
-
- /**
- * Converts the routing code zipcode.
- *
- * @param string $zipcode
- * @return string BCNumber
- */
- private static function conversionRoutingCode($zipcode) {
- $number = $zipcode;
- switch (strlen($zipcode)) {
- case 11:
- $number = bcadd($number, '1000000000', 0);
- case 9:
- $number = bcadd($number, '100000', 0);
- case 5:
- $number = bcadd($number, '1', 0);
- default:
- return $number;
- }
- }
-
- /**
- * Converts the tracking code number.
- *
- * @param string $number BCNumber
- * @param string $barcodeIdentifier
- * @param string $serviceTypeIdentifier
- * @param string $mailerIdentifier
- * @param string $serialNumber
- * @return string BCNumber
- */
- private static function conversionTrackingCode($number, $barcodeIdentifier, $serviceTypeIdentifier, $mailerIdentifier, $serialNumber) {
- $number = bcmul($number, 10, 0);
- $number = bcadd($number, $barcodeIdentifier[0], 0);
- $number = bcmul($number, 5, 0);
- $number = bcadd($number, $barcodeIdentifier[1], 0);
-
- $temp = $serviceTypeIdentifier . $mailerIdentifier . $serialNumber;
- for ($i = 0; $i < 18; $i++) {
- $number = bcmul($number, 10, 0);
- $number = bcadd($number, $temp[$i], 0);
- }
-
- return $number;
- }
-
- /**
- * Transforms a BCNumber into unsigned char*.
- *
- * @param string $dec BCNumber
- * @param string
- */
- private static function bcdecuc($dec) {
- $last = bcmod($dec, 256);
- $remain = bcdiv(bcsub($dec, $last), 256, 0);
-
- if ($remain == 0) {
- return pack('C', $last);
- } else {
- return self::bcdecuc($remain) . pack('C', $last);
- }
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGisbn.barcode.php b/niucloud/core/core/util/barcode/class/BCGisbn.barcode.php
deleted file mode 100644
index 867cb0f7..00000000
--- a/niucloud/core/core/util/barcode/class/BCGisbn.barcode.php
+++ /dev/null
@@ -1,164 +0,0 @@
-setGS1($gs1);
- }
-
- /**
- * Adds the default label.
- */
- protected function addDefaultLabel() {
- if ($this->isDefaultEanLabelEnabled()) {
- $isbn = $this->createISBNText();
- $font = $this->font;
-
- $topLabel = new BCGLabel($isbn, $font, BCGLabel::POSITION_TOP, BCGLabel::ALIGN_CENTER);
-
- $this->addLabel($topLabel);
- }
-
- parent::addDefaultLabel();
- }
-
- /**
- * Sets the first numbers of the barcode.
- * - GS1_AUTO: Adds 978 before the code
- * - GS1_PREFIX978: Adds 978 before the code
- * - GS1_PREFIX979: Adds 979 before the code
- *
- * @param int $gs1
- */
- public function setGS1($gs1) {
- $gs1 = (int)$gs1;
- if ($gs1 !== self::GS1_AUTO && $gs1 !== self::GS1_PREFIX978 && $gs1 !== self::GS1_PREFIX979) {
- throw new BCGArgumentException('The GS1 argument must be BCGisbn::GS1_AUTO, BCGisbn::GS1_PREFIX978, or BCGisbn::GS1_PREFIX979', 'gs1');
- }
-
- $this->gs1 = $gs1;
- }
-
- /**
- * Check chars allowed.
- */
- protected function checkCharsAllowed() {
- $c = strlen($this->text);
-
- // Special case, if we have 10 digits, the last one can be X
- if ($c === 10) {
- if (array_search($this->text[9], $this->keys) === false && $this->text[9] !== 'X') {
- throw new BCGParseException('isbn', 'The character \'' . $this->text[9] . '\' is not allowed.');
- }
-
- // Drop the last char
- $this->text = substr($this->text, 0, 9);
- }
-
- return parent::checkCharsAllowed();
- }
-
- /**
- * Check correct length.
- */
- protected function checkCorrectLength() {
- $c = strlen($this->text);
-
- // If we have 13 chars just flush the last one
- if ($c === 13) {
- $this->text = substr($this->text, 0, 12);
- } elseif ($c === 9 || $c === 10) {
- if ($c === 10) {
- // Before dropping it, we check if it's legal
- if (array_search($this->text[9], $this->keys) === false && $this->text[9] !== 'X') {
- throw new BCGParseException('isbn', 'The character \'' . $this->text[9] . '\' is not allowed.');
- }
-
- $this->text = substr($this->text, 0, 9);
- }
-
- if ($this->gs1 === self::GS1_AUTO || $this->gs1 === self::GS1_PREFIX978) {
- $this->text = '978' . $this->text;
- } elseif ($this->gs1 === self::GS1_PREFIX979) {
- $this->text = '979' . $this->text;
- }
- } elseif ($c !== 12) {
- throw new BCGParseException('isbn', 'The code parsed must be 9, 10, 12, or 13 digits long.');
- }
- }
-
- /**
- * Creates the ISBN text.
- *
- * @return string
- */
- private function createISBNText() {
- $isbn = '';
- if (!empty($this->text)) {
- // We try to create the ISBN Text... the hyphen really depends the ISBN agency.
- // We just put one before the checksum and one after the GS1 if present.
- $c = strlen($this->text);
- if ($c === 12 || $c === 13) {
- // If we have 13 characters now, just transform it temporarily to find the checksum...
- // Further in the code we take care of that anyway.
- $lastCharacter = '';
- if ($c === 13) {
- $lastCharacter = $this->text[12];
- $this->text = substr($this->text, 0, 12);
- }
-
- $checksum = $this->processChecksum();
- $isbn = 'ISBN ' . substr($this->text, 0, 3) . '-' . substr($this->text, 3, 9) . '-' . $checksum;
-
- // Put the last character back
- if ($c === 13) {
- $this->text .= $lastCharacter;
- }
- } elseif ($c === 9 || $c === 10) {
- $checksum = 0;
- for ($i = 10; $i >= 2; $i--) {
- $checksum += $this->text[10 - $i] * $i;
- }
-
- $checksum = 11 - $checksum % 11;
- if ($checksum === 10) {
- $checksum = 'X'; // Changing type
- }
-
- $isbn = 'ISBN ' . substr($this->text, 0, 9) . '-' . $checksum;
- }
- }
-
- return $isbn;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGmsi.barcode.php b/niucloud/core/core/util/barcode/class/BCGmsi.barcode.php
deleted file mode 100644
index a322d829..00000000
--- a/niucloud/core/core/util/barcode/class/BCGmsi.barcode.php
+++ /dev/null
@@ -1,184 +0,0 @@
-keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
- $this->code = array(
- '01010101', /* 0 */
- '01010110', /* 1 */
- '01011001', /* 2 */
- '01011010', /* 3 */
- '01100101', /* 4 */
- '01100110', /* 5 */
- '01101001', /* 6 */
- '01101010', /* 7 */
- '10010101', /* 8 */
- '10010110' /* 9 */
- );
-
- $this->setChecksum(0);
- }
-
- /**
- * Sets how many checksums we display. 0 to 2.
- *
- * @param int $checksum
- */
- public function setChecksum($checksum) {
- $checksum = intval($checksum);
- if ($checksum < 0 && $checksum > 2) {
- throw new BCGArgumentException('The checksum must be between 0 and 2 included.', 'checksum');
- }
-
- $this->checksum = $checksum;
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- // Checksum
- $this->calculateChecksum();
-
- // Starting Code
- $this->drawChar($im, '10', true);
-
- // Chars
- $c = strlen($this->text);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->findCode($this->text[$i]), true);
- }
-
- $c = count($this->checksumValue);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->findCode($this->checksumValue[$i]), true);
- }
-
- // Ending Code
- $this->drawChar($im, '010', true);
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $textlength = 12 * strlen($this->text);
- $startlength = 3;
- $checksumlength = $this->checksum * 12;
- $endlength = 4;
-
- $w += $startlength + $textlength + $checksumlength + $endlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('msi', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('msi', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- // Forming a new number
- // If the original number is even, we take all even position
- // If the original number is odd, we take all odd position
- // 123456 = 246
- // 12345 = 135
- // Multiply by 2
- // Add up all the digit in the result (270 : 2+7+0)
- // Add up other digit not used.
- // 10 - (? Modulo 10). If result = 10, change to 0
- $last_text = $this->text;
- $this->checksumValue = array();
- for ($i = 0; $i < $this->checksum; $i++) {
- $new_text = '';
- $new_number = 0;
- $c = strlen($last_text);
- if ($c % 2 === 0) { // Even
- $starting = 1;
- } else {
- $starting = 0;
- }
-
- for ($j = $starting; $j < $c; $j += 2) {
- $new_text .= $last_text[$j];
- }
-
- $new_text = strval(intval($new_text) * 2);
- $c2 = strlen($new_text);
- for ($j = 0; $j < $c2; $j++) {
- $new_number += intval($new_text[$j]);
- }
-
- for ($j = ($starting === 0) ? 1 : 0; $j < $c; $j += 2) {
- $new_number += intval($last_text[$j]);
- }
-
- $new_number = (10 - $new_number % 10) % 10;
- $this->checksumValue[] = $new_number;
- $last_text .= $new_number;
- }
- }
-
- /**
- * Overloaded method to display the checksum.
- */
- protected function processChecksum() {
- if ($this->checksumValue === false) { // Calculate the checksum only once
- $this->calculateChecksum();
- }
-
- if ($this->checksumValue !== false) {
- $ret = '';
- $c = count($this->checksumValue);
- for ($i = 0; $i < $c; $i++) {
- $ret .= $this->keys[$this->checksumValue[$i]];
- }
-
- return $ret;
- }
-
- return false;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGothercode.barcode.php b/niucloud/core/core/util/barcode/class/BCGothercode.barcode.php
deleted file mode 100644
index a9ae2eda..00000000
--- a/niucloud/core/core/util/barcode/class/BCGothercode.barcode.php
+++ /dev/null
@@ -1,88 +0,0 @@
-keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- $this->drawChar($im, $this->text, true);
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Gets the label.
- * If the label was set to BCGBarcode1D::AUTO_LABEL, the label will display the value from the text parsed.
- *
- * @return string
- */
- public function getLabel() {
- $label = $this->label;
- if ($this->label === BCGBarcode1D::AUTO_LABEL) {
- $label = '';
- }
-
- return $label;
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $array = str_split($this->text, 1);
- $textlength = array_sum($array) + count($array);
-
- $w += $textlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('othercode', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('othercode', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
-
- parent::validate();
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGpostnet.barcode.php b/niucloud/core/core/util/barcode/class/BCGpostnet.barcode.php
deleted file mode 100644
index 1988b084..00000000
--- a/niucloud/core/core/util/barcode/class/BCGpostnet.barcode.php
+++ /dev/null
@@ -1,138 +0,0 @@
-keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
- $this->code = array(
- '11000', /* 0 */
- '00011', /* 1 */
- '00101', /* 2 */
- '00110', /* 3 */
- '01001', /* 4 */
- '01010', /* 5 */
- '01100', /* 6 */
- '10001', /* 7 */
- '10010', /* 8 */
- '10100' /* 9 */
- );
-
- $this->setThickness(9);
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- // Checksum
- $checksum = 0;
- $c = strlen($this->text);
- for ($i = 0; $i < $c; $i++) {
- $checksum += intval($this->text[$i]);
- }
-
- $checksum = 10 - ($checksum % 10);
-
- // Starting Code
- $this->drawChar($im, '1');
-
- // Code
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->findCode($this->text[$i]));
- }
-
- // Checksum
- $this->drawChar($im, $this->findCode($checksum));
-
- // Ending Code
- $this->drawChar($im, '1');
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $c = strlen($this->text);
- $startlength = 3;
- $textlength = $c * 5 * 3;
- $checksumlength = 5 * 3;
- $endlength = 3;
-
- // We remove the white on the right
- $removelength = -1.56;
-
- $w += $startlength + $textlength + $checksumlength + $endlength + $removelength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('postnet', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('postnet', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
-
- // Must contain 5, 9 or 11 chars
- if ($c !== 5 && $c !== 9 && $c !== 11) {
- throw new BCGParseException('postnet', 'Must contain 5, 9, or 11 characters.');
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method for drawing special barcode.
- *
- * @param resource $im
- * @param string $code
- * @param boolean $startBar
- */
- protected function drawChar($im, $code, $startBar = true) {
- $c = strlen($code);
- for ($i = 0; $i < $c; $i++) {
- if ($code[$i] === '0') {
- $posY = $this->thickness - ($this->thickness / 2.5);
- } else {
- $posY = 0;
- }
-
- $this->drawFilledRectangle($im, $this->positionX, $posY, $this->positionX + 0.44, $this->thickness - 1, BCGBarcode::COLOR_FG);
- $this->positionX += 3;
- }
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGs25.barcode.php b/niucloud/core/core/util/barcode/class/BCGs25.barcode.php
deleted file mode 100644
index 3312b2cd..00000000
--- a/niucloud/core/core/util/barcode/class/BCGs25.barcode.php
+++ /dev/null
@@ -1,170 +0,0 @@
- 1/3 or 1/2 for the big bar
- *
- *--------------------------------------------------------------------
- * Copyright (C) Jean-Sebastien Goupil
- * http://www.barcodephp.com
- */
-include_once('BCGParseException.php');
-include_once('BCGBarcode1D.php');
-
-class BCGs25 extends BCGBarcode1D {
- private $checksum;
-
- /**
- * Constructor.
- */
- public function __construct() {
- parent::__construct();
-
- $this->keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
- $this->code = array(
- '0000202000', /* 0 */
- '2000000020', /* 1 */
- '0020000020', /* 2 */
- '2020000000', /* 3 */
- '0000200020', /* 4 */
- '2000200000', /* 5 */
- '0020200000', /* 6 */
- '0000002020', /* 7 */
- '2000002000', /* 8 */
- '0020002000' /* 9 */
- );
-
- $this->setChecksum(false);
- }
-
- /**
- * Sets if we display the checksum.
- *
- * @param bool $checksum
- */
- public function setChecksum($checksum) {
- $this->checksum = (bool)$checksum;
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- $temp_text = $this->text;
-
- // Checksum
- if ($this->checksum === true) {
- $this->calculateChecksum();
- $temp_text .= $this->keys[$this->checksumValue];
- }
-
- // Starting Code
- $this->drawChar($im, '101000', true);
-
- // Chars
- $c = strlen($temp_text);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, $this->findCode($temp_text[$i]), true);
- }
-
- // Ending Code
- $this->drawChar($im, '10001', true);
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $c = strlen($this->text);
- $startlength = 8;
- $textlength = $c * 14;
- $checksumlength = 0;
- if ($c % 2 !== 0) {
- $checksumlength = 14;
- }
-
- $endlength = 7;
-
- $w += $startlength + $textlength + $checksumlength + $endlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('s25', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('s25', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
-
- // Must be even
- if ($c % 2 !== 0 && $this->checksum === false) {
- throw new BCGParseException('s25', 's25 must contain an even amount of digits if checksum is false.');
- } elseif ($c % 2 === 0 && $this->checksum === true) {
- throw new BCGParseException('s25', 's25 must contain an odd amount of digits if checksum is true.');
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- // Calculating Checksum
- // Consider the right-most digit of the message to be in an "even" position,
- // and assign odd/even to each character moving from right to left
- // Even Position = 3, Odd Position = 1
- // Multiply it by the number
- // Add all of that and do 10-(?mod10)
- $even = true;
- $this->checksumValue = 0;
- $c = strlen($this->text);
- for ($i = $c; $i > 0; $i--) {
- if ($even === true) {
- $multiplier = 3;
- $even = false;
- } else {
- $multiplier = 1;
- $even = true;
- }
-
- $this->checksumValue += $this->keys[$this->text[$i - 1]] * $multiplier;
- }
- $this->checksumValue = (10 - $this->checksumValue % 10) % 10;
- }
-
- /**
- * Overloaded method to display the checksum.
- */
- protected function processChecksum() {
- if ($this->checksumValue === false) { // Calculate the checksum only once
- $this->calculateChecksum();
- }
-
- if ($this->checksumValue !== false) {
- return $this->keys[$this->checksumValue];
- }
-
- return false;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGupca.barcode.php b/niucloud/core/core/util/barcode/class/BCGupca.barcode.php
deleted file mode 100644
index 37794331..00000000
--- a/niucloud/core/core/util/barcode/class/BCGupca.barcode.php
+++ /dev/null
@@ -1,146 +0,0 @@
-text = '0' . $this->text; // We will remove it at the end... don't worry
-
- parent::draw($im);
-
- // We remove the 0 in front, as we said :)
- $this->text = substr($this->text, 1);
- }
-
- /**
- * Draws the extended bars on the image.
- *
- * @param resource $im
- * @param int $plus
- */
- protected function drawExtendedBars($im, $plus) {
- $temp_text = $this->text . $this->keys[$this->checksumValue];
- $rememberX = $this->positionX;
- $rememberH = $this->thickness;
-
- // We increase the bars
- // First 2 Bars
- $this->thickness = $this->thickness + intval($plus / $this->scale);
- $this->positionX = 0;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
- $this->positionX += 2;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
-
- // Attemping to increase the 2 following bars
- $this->positionX += 1;
- $temp_value = $this->findCode($temp_text[1]);
- $this->drawChar($im, $temp_value, false);
-
- // Center Guard Bar
- $this->positionX += 36;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
- $this->positionX += 2;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
-
- // Attemping to increase the 2 last bars
- $this->positionX += 37;
- $temp_value = $this->findCode($temp_text[12]);
- $this->drawChar($im, $temp_value, true);
-
- // Completly last bars
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
- $this->positionX += 2;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
-
- $this->positionX = $rememberX;
- $this->thickness = $rememberH;
- }
-
- /**
- * Adds the default label.
- */
- protected function addDefaultLabel() {
- if ($this->isDefaultEanLabelEnabled()) {
- $this->processChecksum();
- $label = $this->getLabel();
- $font = $this->font;
-
- $this->labelLeft = new BCGLabel(substr($label, 0, 1), $font, BCGLabel::POSITION_LEFT, BCGLabel::ALIGN_BOTTOM);
- $this->labelLeft->setSpacing(4 * $this->scale);
-
- $this->labelCenter1 = new BCGLabel(substr($label, 1, 5), $font, BCGLabel::POSITION_BOTTOM, BCGLabel::ALIGN_LEFT);
- $labelCenter1Dimension = $this->labelCenter1->getDimension();
- $this->labelCenter1->setOffset(($this->scale * 44 - $labelCenter1Dimension[0]) / 2 + $this->scale * 6);
-
- $this->labelCenter2 = new BCGLabel(substr($label, 6, 5), $font, BCGLabel::POSITION_BOTTOM, BCGLabel::ALIGN_LEFT);
- $this->labelCenter2->setOffset(($this->scale * 44 - $labelCenter1Dimension[0]) / 2 + $this->scale * 45);
-
- $this->labelRight = new BCGLabel($this->keys[$this->checksumValue], $font, BCGLabel::POSITION_RIGHT, BCGLabel::ALIGN_BOTTOM);
- $this->labelRight->setSpacing(4 * $this->scale);
-
- if ($this->alignLabel) {
- $labelDimension = $this->labelCenter1->getDimension();
- $this->labelLeft->setOffset($labelDimension[1]);
- $this->labelRight->setOffset($labelDimension[1]);
- } else {
- $labelDimension = $this->labelLeft->getDimension();
- $this->labelLeft->setOffset($labelDimension[1] / 2);
- $labelDimension = $this->labelLeft->getDimension();
- $this->labelRight->setOffset($labelDimension[1] / 2);
- }
-
- $this->addLabel($this->labelLeft);
- $this->addLabel($this->labelCenter1);
- $this->addLabel($this->labelCenter2);
- $this->addLabel($this->labelRight);
- }
- }
-
- /**
- * Check correct length.
- */
- protected function checkCorrectLength() {
- // If we have 12 chars, just flush the last one without throwing anything
- $c = strlen($this->text);
- if ($c === 12) {
- $this->text = substr($this->text, 0, 11);
- } elseif ($c !== 11) {
- throw new BCGParseException('upca', 'Must contain 11 digits, the 12th digit is automatically added.');
- }
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGupce.barcode.php b/niucloud/core/core/util/barcode/class/BCGupce.barcode.php
deleted file mode 100644
index 5b349289..00000000
--- a/niucloud/core/core/util/barcode/class/BCGupce.barcode.php
+++ /dev/null
@@ -1,336 +0,0 @@
-keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
-
- // Odd Parity starting with a space
- // Even Parity is the inverse (0=0012) starting with a space
- $this->code = array(
- '2100', /* 0 */
- '1110', /* 1 */
- '1011', /* 2 */
- '0300', /* 3 */
- '0021', /* 4 */
- '0120', /* 5 */
- '0003', /* 6 */
- '0201', /* 7 */
- '0102', /* 8 */
- '2001' /* 9 */
- );
-
- // Parity, 0=Odd, 1=Even for manufacturer code. Depending on 1st System Digit and Checksum
- $this->codeParity = array(
- array(
- array(1, 1, 1, 0, 0, 0), /* 0,0 */
- array(1, 1, 0, 1, 0, 0), /* 0,1 */
- array(1, 1, 0, 0, 1, 0), /* 0,2 */
- array(1, 1, 0, 0, 0, 1), /* 0,3 */
- array(1, 0, 1, 1, 0, 0), /* 0,4 */
- array(1, 0, 0, 1, 1, 0), /* 0,5 */
- array(1, 0, 0, 0, 1, 1), /* 0,6 */
- array(1, 0, 1, 0, 1, 0), /* 0,7 */
- array(1, 0, 1, 0, 0, 1), /* 0,8 */
- array(1, 0, 0, 1, 0, 1) /* 0,9 */
- ),
- array(
- array(0, 0, 0, 1, 1, 1), /* 0,0 */
- array(0, 0, 1, 0, 1, 1), /* 0,1 */
- array(0, 0, 1, 1, 0, 1), /* 0,2 */
- array(0, 0, 1, 1, 1, 0), /* 0,3 */
- array(0, 1, 0, 0, 1, 1), /* 0,4 */
- array(0, 1, 1, 0, 0, 1), /* 0,5 */
- array(0, 1, 1, 1, 0, 0), /* 0,6 */
- array(0, 1, 0, 1, 0, 1), /* 0,7 */
- array(0, 1, 0, 1, 1, 0), /* 0,8 */
- array(0, 1, 1, 0, 1, 0) /* 0,9 */
- )
- );
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- $this->calculateChecksum();
-
- // Starting Code
- $this->drawChar($im, '000', true);
- $c = strlen($this->upce);
- for ($i = 0; $i < $c; $i++) {
- $this->drawChar($im, self::inverse($this->findCode($this->upce[$i]), $this->codeParity[intval($this->text[0])][$this->checksumValue][$i]), false);
- }
-
- // Draw Center Guard Bar
- $this->drawChar($im, '00000', false);
-
- // Draw Right Bar
- $this->drawChar($im, '0', true);
- $this->text = $this->text[0] . $this->upce;
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
-
- if ($this->isDefaultEanLabelEnabled()) {
- $dimension = $this->labelCenter->getDimension();
- $this->drawExtendedBars($im, $dimension[1] - 2);
- }
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $startlength = 3;
- $centerlength = 5;
- $textlength = 6 * 7;
- $endlength = 1;
-
- $w += $startlength + $centerlength + $textlength + $endlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Adds the default label.
- */
- protected function addDefaultLabel() {
- if ($this->isDefaultEanLabelEnabled()) {
- $this->processChecksum();
- $font = $this->font;
-
- $this->labelLeft = new BCGLabel(substr($this->text, 0, 1), $font, BCGLabel::POSITION_LEFT, BCGLabel::ALIGN_BOTTOM);
- $labelLeftDimension = $this->labelLeft->getDimension();
- $this->labelLeft->setSpacing(8);
- $this->labelLeft->setOffset($labelLeftDimension[1] / 2);
-
- $this->labelCenter = new BCGLabel($this->upce, $font, BCGLabel::POSITION_BOTTOM, BCGLabel::ALIGN_LEFT);
- $labelCenterDimension = $this->labelCenter->getDimension();
- $this->labelCenter->setOffset(($this->scale * 46 - $labelCenterDimension[0]) / 2 + $this->scale * 2);
-
- $this->labelRight = new BCGLabel($this->keys[$this->checksumValue], $font, BCGLabel::POSITION_RIGHT, BCGLabel::ALIGN_BOTTOM);
- $labelRightDimension = $this->labelRight->getDimension();
- $this->labelRight->setSpacing(8);
- $this->labelRight->setOffset($labelRightDimension[1] / 2);
-
- $this->addLabel($this->labelLeft);
- $this->addLabel($this->labelCenter);
- $this->addLabel($this->labelRight);
- }
- }
-
- /**
- * Checks if the default ean label is enabled.
- *
- * @return bool
- */
- protected function isDefaultEanLabelEnabled() {
- $label = $this->getLabel();
- $font = $this->font;
- return $label !== null && $label !== '' && $font !== null && $this->defaultLabel !== null;
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('upce', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('upce', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
-
- // Must contain 11 chars
- // Must contain 6 chars (if starting with upce directly)
- // First Chars must be 0 or 1
- if ($c !== 11 && $c !== 6) {
- throw new BCGParseException('upce', 'You must provide a UPC-A (11 characters) or a UPC-E (6 characters).');
- } elseif ($this->text[0] !== '0' && $this->text[0] !== '1' && $c !== 6) {
- throw new BCGParseException('upce', 'UPC-A must start with 0 or 1 to be converted to UPC-E.');
- }
-
- // Convert part
- $this->upce = '';
- if ($c !== 6) {
- // Checking if UPC-A is convertible
- $temp1 = substr($this->text, 3, 3);
- if ($temp1 === '000' || $temp1 === '100' || $temp1 === '200') { // manufacturer code ends with 100, 200 or 300
- if (substr($this->text, 6, 2) === '00') { // Product must start with 00
- $this->upce = substr($this->text, 1, 2) . substr($this->text, 8, 3) . substr($this->text, 3, 1);
- }
- } elseif (substr($this->text, 4, 2) === '00') { // manufacturer code ends with 00
- if (substr($this->text, 6, 3) === '000') { // Product must start with 000
- $this->upce = substr($this->text, 1, 3) . substr($this->text, 9, 2) . '3';
- }
- } elseif (substr($this->text, 5, 1) === '0') { // manufacturer code ends with 0
- if (substr($this->text, 6, 4) === '0000') { // Product must start with 0000
- $this->upce = substr($this->text, 1, 4) . substr($this->text, 10, 1) . '4';
- }
- } else { // No zero leading at manufacturer code
- $temp2 = intval(substr($this->text, 10, 1));
- if (substr($this->text, 6, 4) === '0000' && $temp2 >= 5 && $temp2 <= 9) { // Product must start with 0000 and must end by 5, 6, 7, 8 or 9
- $this->upce = substr($this->text, 1, 5) . substr($this->text, 10, 1);
- }
- }
- } else {
- $this->upce = $this->text;
- }
-
- if ($this->upce === '') {
- throw new BCGParseException('upce', 'Your UPC-A can\'t be converted to UPC-E.');
- }
-
- if ($c === 6) {
- $upca = '';
-
- // We convert UPC-E to UPC-A to find the checksum
- if ($this->text[5] === '0' || $this->text[5] === '1' || $this->text[5] === '2') {
- $upca = substr($this->text, 0, 2) . $this->text[5] . '0000' . substr($this->text, 2, 3);
- } elseif ($this->text[5] === '3') {
- $upca = substr($this->text, 0, 3) . '00000' . substr($this->text, 3, 2);
- } elseif ($this->text[5] === '4') {
- $upca = substr($this->text, 0, 4) . '00000' . $this->text[4];
- } else {
- $upca = substr($this->text, 0, 5) . '0000' . $this->text[5];
- }
-
- $this->text = '0' . $upca;
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- // Calculating Checksum
- // Consider the right-most digit of the message to be in an "odd" position,
- // and assign odd/even to each character moving from right to left
- // Odd Position = 3, Even Position = 1
- // Multiply it by the number
- // Add all of that and do 10-(?mod10)
- $odd = true;
- $this->checksumValue = 0;
- $c = strlen($this->text);
- for ($i = $c; $i > 0; $i--) {
- if ($odd === true) {
- $multiplier = 3;
- $odd = false;
- } else {
- $multiplier = 1;
- $odd = true;
- }
-
- if (!isset($this->keys[$this->text[$i - 1]])) {
- return;
- }
-
- $this->checksumValue += $this->keys[$this->text[$i - 1]] * $multiplier;
- }
-
- $this->checksumValue = (10 - $this->checksumValue % 10) % 10;
- }
-
- /**
- * Overloaded method to display the checksum.
- */
- protected function processChecksum() {
- if ($this->checksumValue === false) { // Calculate the checksum only once
- $this->calculateChecksum();
- }
-
- if ($this->checksumValue !== false) {
- return $this->keys[$this->checksumValue];
- }
-
- return false;
- }
-
- /**
- * Draws the extended bars on the image.
- *
- * @param resource $im
- * @param int $plus
- */
- protected function drawExtendedBars($im, $plus) {
- $rememberX = $this->positionX;
- $rememberH = $this->thickness;
-
- // We increase the bars
- $this->thickness = $this->thickness + intval($plus / $this->scale);
- $this->positionX = 0;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
- $this->positionX += 2;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
-
- // Last Bars
- $this->positionX += 46;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
- $this->positionX += 2;
- $this->drawSingleBar($im, BCGBarcode::COLOR_FG);
-
- $this->positionX = $rememberX;
- $this->thickness = $rememberH;
- }
-
- /**
- * Inverses the string when the $inverse parameter is equal to 1.
- *
- * @param string $text
- * @param int $inverse
- * @return string
- */
- private static function inverse($text, $inverse = 1) {
- if ($inverse === 1) {
- $text = strrev($text);
- }
-
- return $text;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGupcext2.barcode.php b/niucloud/core/core/util/barcode/class/BCGupcext2.barcode.php
deleted file mode 100644
index 4399e0e6..00000000
--- a/niucloud/core/core/util/barcode/class/BCGupcext2.barcode.php
+++ /dev/null
@@ -1,138 +0,0 @@
-keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
- $this->code = array(
- '2100', /* 0 */
- '1110', /* 1 */
- '1011', /* 2 */
- '0300', /* 3 */
- '0021', /* 4 */
- '0120', /* 5 */
- '0003', /* 6 */
- '0201', /* 7 */
- '0102', /* 8 */
- '2001' /* 9 */
- );
-
- // Parity, 0=Odd, 1=Even. Depending on ?%4
- $this->codeParity = array(
- array(0, 0), /* 0 */
- array(0, 1), /* 1 */
- array(1, 0), /* 2 */
- array(1, 1) /* 3 */
- );
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- // Starting Code
- $this->drawChar($im, '001', true);
-
- // Code
- for ($i = 0; $i < 2; $i++) {
- $this->drawChar($im, self::inverse($this->findCode($this->text[$i]), $this->codeParity[intval($this->text) % 4][$i]), false);
- if ($i === 0) {
- $this->drawChar($im, '00', false); // Inter-char
- }
- }
-
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $startlength = 4;
- $textlength = 2 * 7;
- $intercharlength = 2;
-
- $w += $startlength + $textlength + $intercharlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Adds the default label.
- */
- protected function addDefaultLabel() {
- parent::addDefaultLabel();
-
- if ($this->defaultLabel !== null) {
- $this->defaultLabel->setPosition(BCGLabel::POSITION_TOP);
- }
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('upcext2', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('upcext2', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
-
- // Must contain 2 digits
- if ($c !== 2) {
- throw new BCGParseException('upcext2', 'Must contain 2 digits.');
- }
-
- parent::validate();
- }
-
- /**
- * Inverses the string when the $inverse parameter is equal to 1.
- *
- * @param string $text
- * @param int $inverse
- * @return string
- */
- private static function inverse($text, $inverse = 1) {
- if ($inverse === 1) {
- $text = strrev($text);
- }
-
- return $text;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/BCGupcext5.barcode.php b/niucloud/core/core/util/barcode/class/BCGupcext5.barcode.php
deleted file mode 100644
index cea96609..00000000
--- a/niucloud/core/core/util/barcode/class/BCGupcext5.barcode.php
+++ /dev/null
@@ -1,200 +0,0 @@
- No suggested Retail Price
- * If 99991 -> Book Complimentary (normally free)
- * If 90001 to 98999 -> Internal Purpose of Publisher
- * If 99990 -> Used by the National Association of College Stores to mark used books
- * If 0xxxx -> Price Expressed in British Pounds (xx.xx)
- * If 5xxxx -> Price Expressed in U.S. dollars (US$xx.xx)
- *
- *--------------------------------------------------------------------
- * Copyright (C) Jean-Sebastien Goupil
- * http://www.barcodephp.com
- */
-include_once('BCGParseException.php');
-include_once('BCGBarcode1D.php');
-include_once('BCGLabel.php');
-
-class BCGupcext5 extends BCGBarcode1D {
- protected $codeParity = array();
-
- /**
- * Constructor.
- */
- public function __construct() {
- parent::__construct();
-
- $this->keys = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
- $this->code = array(
- '2100', /* 0 */
- '1110', /* 1 */
- '1011', /* 2 */
- '0300', /* 3 */
- '0021', /* 4 */
- '0120', /* 5 */
- '0003', /* 6 */
- '0201', /* 7 */
- '0102', /* 8 */
- '2001' /* 9 */
- );
-
- // Parity, 0=Odd, 1=Even. Depending Checksum
- $this->codeParity = array(
- array(1, 1, 0, 0, 0), /* 0 */
- array(1, 0, 1, 0, 0), /* 1 */
- array(1, 0, 0, 1, 0), /* 2 */
- array(1, 0, 0, 0, 1), /* 3 */
- array(0, 1, 1, 0, 0), /* 4 */
- array(0, 0, 1, 1, 0), /* 5 */
- array(0, 0, 0, 1, 1), /* 6 */
- array(0, 1, 0, 1, 0), /* 7 */
- array(0, 1, 0, 0, 1), /* 8 */
- array(0, 0, 1, 0, 1) /* 9 */
- );
- }
-
- /**
- * Draws the barcode.
- *
- * @param resource $im
- */
- public function draw($im) {
- // Checksum
- $this->calculateChecksum();
-
- // Starting Code
- $this->drawChar($im, '001', true);
-
- // Code
- for ($i = 0; $i < 5; $i++) {
- $this->drawChar($im, self::inverse($this->findCode($this->text[$i]), $this->codeParity[$this->checksumValue][$i]), false);
- if ($i < 4) {
- $this->drawChar($im, '00', false); // Inter-char
- }
- }
-
- $this->drawText($im, 0, 0, $this->positionX, $this->thickness);
- }
-
- /**
- * Returns the maximal size of a barcode.
- *
- * @param int $w
- * @param int $h
- * @return int[]
- */
- public function getDimension($w, $h) {
- $startlength = 4;
- $textlength = 5 * 7;
- $intercharlength = 2 * 4;
-
- $w += $startlength + $textlength + $intercharlength;
- $h += $this->thickness;
- return parent::getDimension($w, $h);
- }
-
- /**
- * Adds the default label.
- */
- protected function addDefaultLabel() {
- parent::addDefaultLabel();
-
- if ($this->defaultLabel !== null) {
- $this->defaultLabel->setPosition(BCGLabel::POSITION_TOP);
- }
- }
-
- /**
- * Validates the input.
- */
- protected function validate() {
- $c = strlen($this->text);
- if ($c === 0) {
- throw new BCGParseException('upcext5', 'No data has been entered.');
- }
-
- // Checking if all chars are allowed
- for ($i = 0; $i < $c; $i++) {
- if (array_search($this->text[$i], $this->keys) === false) {
- throw new BCGParseException('upcext5', 'The character \'' . $this->text[$i] . '\' is not allowed.');
- }
- }
-
- // Must contain 5 digits
- if ($c !== 5) {
- throw new BCGParseException('upcext5', 'Must contain 5 digits.');
- }
-
- parent::validate();
- }
-
- /**
- * Overloaded method to calculate checksum.
- */
- protected function calculateChecksum() {
- // Calculating Checksum
- // Consider the right-most digit of the message to be in an "odd" position,
- // and assign odd/even to each character moving from right to left
- // Odd Position = 3, Even Position = 9
- // Multiply it by the number
- // Add all of that and do ?mod10
- $odd = true;
- $this->checksumValue = 0;
- $c = strlen($this->text);
- for ($i = $c; $i > 0; $i--) {
- if ($odd === true) {
- $multiplier = 3;
- $odd = false;
- } else {
- $multiplier = 9;
- $odd = true;
- }
-
- if (!isset($this->keys[$this->text[$i - 1]])) {
- return;
- }
-
- $this->checksumValue += $this->keys[$this->text[$i - 1]] * $multiplier;
- }
-
- $this->checksumValue = $this->checksumValue % 10;
- }
-
- /**
- * Overloaded method to display the checksum.
- */
- protected function processChecksum() {
- if ($this->checksumValue === false) { // Calculate the checksum only once
- $this->calculateChecksum();
- }
-
- if ($this->checksumValue !== false) {
- return $this->keys[$this->checksumValue];
- }
-
- return false;
- }
-
- /**
- * Inverses the string when the $inverse parameter is equal to 1.
- *
- * @param string $text
- * @param int $inverse
- * @return string
- */
- private static function inverse($text, $inverse = 1) {
- if ($inverse === 1) {
- $text = strrev($text);
- }
-
- return $text;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/JoinDraw.php b/niucloud/core/core/util/barcode/class/JoinDraw.php
deleted file mode 100644
index 2d3c35fa..00000000
--- a/niucloud/core/core/util/barcode/class/JoinDraw.php
+++ /dev/null
@@ -1,194 +0,0 @@
-image1 = $image1->get_im();
- } else {
- $this->image1 = $image1;
- }
- if ($image2 instanceof BCGDrawing) {
- $this->image2 = $image2->get_im();
- } else {
- $this->image2 = $image2;
- }
-
- $this->background = $background;
- $this->space = (int)$space;
- $this->position = (int)$position;
- $this->alignment = (int)$alignment;
-
- $this->createIm();
- }
-
- /**
- * Destroys the image.
- */
- public function __destruct() {
- imagedestroy($this->im);
- }
-
- /**
- * Finds the position where the barcode should be aligned.
- *
- * @param int $size1
- * @param int $size2
- * @param int $ailgnment
- * @return int
- */
- private function findPosition($size1, $size2, $alignment) {
- $rsize1 = max($size1, $size2);
- $rsize2 = min($size1, $size2);
-
- if ($alignment === self::ALIGN_LEFT) { // Or TOP
- return 0;
- } elseif ($alignment === self::ALIGN_CENTER) {
- return $rsize1 / 2 - $rsize2 / 2;
- } else { // RIGHT or TOP
- return $rsize1 - $rsize2;
- }
- }
-
- /**
- * Change the alignments.
- *
- * @param int $alignment
- * @return int
- */
- private function changeAlignment($alignment) {
- if ($alignment === 0) {
- return 1;
- } elseif ($alignment === 1) {
- return 0;
- } else {
- return 2;
- }
- }
-
- /**
- * Creates the image.
- */
- private function createIm() {
- $w1 = imagesx($this->image1);
- $w2 = imagesx($this->image2);
- $h1 = imagesy($this->image1);
- $h2 = imagesy($this->image2);
-
- if ($this->position === self::POSITION_LEFT || $this->position === self::POSITION_RIGHT) {
- $w = $w1 + $w2 + $this->space;
- $h = max($h1, $h2);
- } else {
- $w = max($w1, $w2);
- $h = $h1 + $h2 + $this->space;
- }
-
- $this->im = imagecreatetruecolor($w, $h);
- imagefill($this->im, 0, 0, $this->background->allocate($this->im));
-
- // We start defining position of images
- if ($this->position === self::POSITION_TOP) {
- if ($w1 > $w2) {
- $posX1 = 0;
- $posX2 = $this->findPosition($w1, $w2, $this->alignment);
- } else {
- $a = $this->changeAlignment($this->alignment);
- $posX1 = $this->findPosition($w1, $w2, $a);
- $posX2 = 0;
- }
-
- $posY2 = 0;
- $posY1 = $h2 + $this->space;
- } elseif ($this->position === self::POSITION_LEFT) {
- if ($w1 > $w2) {
- $posY1 = 0;
- $posY2 = $this->findPosition($h1, $h2, $this->alignment);
- } else {
- $a = $this->changeAlignment($this->alignment);
- $posY2 = 0;
- $posY1 = $this->findPosition($h1, $h2, $a);
- }
-
- $posX2 = 0;
- $posX1 = $w2 + $this->space;
- } elseif ($this->position === self::POSITION_BOTTOM) {
- if ($w1 > $w2) {
- $posX2 = $this->findPosition($w1, $w2, $this->alignment);
- $posX1 = 0;
- } else {
- $a = $this->changeAlignment($this->alignment);
- $posX2 = 0;
- $posX1 = $this->findPosition($w1, $w2, $a);
- }
-
- $posY1 = 0;
- $posY2 = $h1 + $this->space;
- } else { // defaults to RIGHT
- if ($w1 > $w2) {
- $posY2 = $this->findPosition($h1, $h2, $this->alignment);
- $posY1 = 0;
- } else {
- $a = $this->changeAlignment($this->alignment);
- $posY2 = 0;
- $posY1 = $this->findPosition($h1, $h2, $a);
- }
-
- $posX1 = 0;
- $posX2 = $w1 + $this->space;
- }
-
- imagecopy($this->im, $this->image1, $posX1, $posY1, 0, 0, $w1, $h1);
- imagecopy($this->im, $this->image2, $posX2, $posY2, 0, 0, $w2, $h2);
- }
-
- /**
- * Returns the new $im created.
- *
- * @return resource
- */
- public function get_im() {
- return $this->im;
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/drawer/BCGDraw.php b/niucloud/core/core/util/barcode/class/drawer/BCGDraw.php
deleted file mode 100644
index 2082b5da..00000000
--- a/niucloud/core/core/util/barcode/class/drawer/BCGDraw.php
+++ /dev/null
@@ -1,38 +0,0 @@
-im = $im;
- }
-
- /**
- * Sets the filename.
- *
- * @param string $filename
- */
- public function setFilename($filename) {
- $this->filename = $filename;
- }
-
- /**
- * Method needed to draw the image based on its specification (JPG, GIF, etc.).
- */
- abstract public function draw();
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/drawer/BCGDrawJPG.php b/niucloud/core/core/util/barcode/class/drawer/BCGDrawJPG.php
deleted file mode 100644
index 2e2c9398..00000000
--- a/niucloud/core/core/util/barcode/class/drawer/BCGDrawJPG.php
+++ /dev/null
@@ -1,102 +0,0 @@
-dpi = max(1, $dpi);
- } else {
- $this->dpi = null;
- }
- }
-
- /**
- * Sets the quality of the JPG.
- *
- * @param int $quality
- */
- public function setQuality($quality) {
- $this->quality = $quality;
- }
-
- /**
- * Draws the JPG on the screen or in a file.
- */
- public function draw() {
- ob_start();
- imagejpeg($this->im, null, $this->quality);
- $bin = ob_get_contents();
- ob_end_clean();
-
- $this->setInternalProperties($bin);
-
- if (empty($this->filename)) {
- echo $bin;
- } else {
- file_put_contents($this->filename, $bin);
- }
- }
-
- private function setInternalProperties(&$bin) {
- $this->internalSetDPI($bin);
- $this->internalSetC($bin);
- }
-
- private function internalSetDPI(&$bin) {
- if ($this->dpi !== null) {
- $bin = substr_replace($bin, pack("Cnn", 0x01, $this->dpi, $this->dpi), 13, 5);
- }
- }
-
- private function internalSetC(&$bin) {
- if(strcmp(substr($bin, 0, 4), pack('H*', 'FFD8FFE0')) === 0) {
- $offset = 4 + (ord($bin[4]) << 8 | ord($bin[5]));
- $firstPart = substr($bin, 0, $offset);
- $secondPart = substr($bin, $offset);
- $cr = pack('H*', 'FFFE004447656E657261746564207769746820426172636F64652047656E657261746F7220666F722050485020687474703A2F2F7777772E626172636F64657068702E636F6D');
- $bin = $firstPart;
- $bin .= $cr;
- $bin .= $secondPart;
- }
- }
-}
-?>
\ No newline at end of file
diff --git a/niucloud/core/core/util/barcode/class/drawer/BCGDrawPNG.php b/niucloud/core/core/util/barcode/class/drawer/BCGDrawPNG.php
deleted file mode 100644
index 5b65a3aa..00000000
--- a/niucloud/core/core/util/barcode/class/drawer/BCGDrawPNG.php
+++ /dev/null
@@ -1,202 +0,0 @@
-dpi = max(1, $dpi);
- } else {
- $this->dpi = null;
- }
- }
-
- /**
- * Draws the PNG on the screen or in a file.
- */
- public function draw() {
- ob_start();
- imagepng($this->im);
- $bin = ob_get_contents();
- ob_end_clean();
-
- $this->setInternalProperties($bin);
-
- if (empty($this->filename)) {
- echo $bin;
- } else {
- file_put_contents($this->filename, $bin);
- }
- }
-
- private function setInternalProperties(&$bin) {
- // Scan all the ChunkType
- if (strcmp(substr($bin, 0, 8), pack('H*', '89504E470D0A1A0A')) === 0) {
- $chunks = $this->detectChunks($bin);
-
- $this->internalSetDPI($bin, $chunks);
- $this->internalSetC($bin, $chunks);
- }
- }
-
- private function detectChunks($bin) {
- $data = substr($bin, 8);
- $chunks = array();
- $c = strlen($data);
-
- $offset = 0;
- while ($offset < $c) {
- $packed = unpack('Nsize/a4chunk', $data);
- $size = $packed['size'];
- $chunk = $packed['chunk'];
-
- $chunks[] = array('offset' => $offset + 8, 'size' => $size, 'chunk' => $chunk);
- $jump = $size + 12;
- $offset += $jump;
- $data = substr($data, $jump);
- }
-
- return $chunks;
- }
-
- private function internalSetDPI(&$bin, &$chunks) {
- if ($this->dpi !== null) {
- $meters = (int)($this->dpi * 39.37007874);
-
- $found = -1;
- $c = count($chunks);
- for($i = 0; $i < $c; $i++) {
- // We already have a pHYs
- if($chunks[$i]['chunk'] === 'pHYs') {
- $found = $i;
- break;
- }
- }
-
- $data = 'pHYs' . pack('NNC', $meters, $meters, 0x01);
- $crc = self::crc($data, 13);
- $cr = pack('Na13N', 9, $data, $crc);
-
- // We didn't have a pHYs
- if($found == -1) {
- // Don't do anything if we have a bad PNG
- if($c >= 2 && $chunks[0]['chunk'] === 'IHDR') {
- array_splice($chunks, 1, 0, array(array('offset' => 33, 'size' => 9, 'chunk' => 'pHYs')));
-
- // Push the data
- for($i = 2; $i < $c; $i++) {
- $chunks[$i]['offset'] += 21;
- }
-
- $firstPart = substr($bin, 0, 33);
- $secondPart = substr($bin, 33);
- $bin = $firstPart;
- $bin .= $cr;
- $bin .= $secondPart;
- }
- } else {
- $bin = substr_replace($bin, $cr, $chunks[$i]['offset'], 21);
- }
- }
- }
-
- private function internalSetC(&$bin, &$chunks) {
- if (count($chunks) >= 2 && $chunks[0]['chunk'] === 'IHDR') {
- $firstPart = substr($bin, 0, 33);
- $secondPart = substr($bin, 33);
- $cr = pack('H*', '0000004C74455874436F707972696768740047656E657261746564207769746820426172636F64652047656E657261746F7220666F722050485020687474703A2F2F7777772E626172636F64657068702E636F6D597F70B8');
- $bin = $firstPart;
- $bin .= $cr;
- $bin .= $secondPart;
- }
-
- // Chunks is dirty!! But we are done.
- }
-
- private static $crc_table = array();
- private static $crc_table_computed = false;
-
- private static function make_crc_table() {
- for ($n = 0; $n < 256; $n++) {
- $c = $n;
- for ($k = 0; $k < 8; $k++) {
- if (($c & 1) == 1) {
- $c = 0xedb88320 ^ (self::SHR($c, 1));
- } else {
- $c = self::SHR($c, 1);
- }
- }
- self::$crc_table[$n] = $c;
- }
-
- self::$crc_table_computed = true;
- }
-
- private static function SHR($x, $n) {
- $mask = 0x40000000;
-
- if ($x < 0) {
- $x &= 0x7FFFFFFF;
- $mask = $mask >> ($n - 1);
- return ($x >> $n) | $mask;
- }
-
- return (int)$x >> (int)$n;
- }
-
- private static function update_crc($crc, $buf, $len) {
- $c = $crc;
-
- if (!self::$crc_table_computed) {
- self::make_crc_table();
- }
-
- for ($n = 0; $n < $len; $n++) {
- $c = self::$crc_table[($c ^ ord($buf[$n])) & 0xff] ^ (self::SHR($c, 8));
- }
-
- return $c;
- }
-
- private static function crc($data, $len) {
- return self::update_crc(-1, $data, $len) ^ -1;
- }
-}
-?>
diff --git a/niucloud/core/core/util/barcode/font/Arial.ttf b/niucloud/core/core/util/barcode/font/Arial.ttf
deleted file mode 100644
index 886789b8..00000000
Binary files a/niucloud/core/core/util/barcode/font/Arial.ttf and /dev/null differ
diff --git a/niucloud/core/core/util/niucloud/BaseNiucloudClient.php b/niucloud/core/core/util/niucloud/BaseNiucloudClient.php
deleted file mode 100644
index 22355d98..00000000
--- a/niucloud/core/core/util/niucloud/BaseNiucloudClient.php
+++ /dev/null
@@ -1,309 +0,0 @@
-code = $code;
- $this->secret = $secret;
- }else{
- $auth_config = (new CoreNiucloudConfigService())->getNiucloudConfig();
- if($auth_config['auth_code'] || $auth_config['auth_secret']){
- $this->code = $auth_config['auth_code'];
- $this->secret = $auth_config['auth_secret'];
- }else{
- $this->code = config('niucloud.auth.code');
- $this->secret = config('niucloud.auth.secret');
- }
- }
- $this->access_token = $this->getAccessToken();
- $this->request = request();
- $this->developer_token = (new ConfigService())->getDeveloperToken()['token'] ?? '';
- }
-
- /**
- * @param string $url
- * @param array $data
- * @return array|Response|object|ResponseInterface
- * @throws GuzzleException
- */
- public function httpPost(string $url, array $data = [])
- {
- return $this->request($url, 'POST', [
- 'form_params' => $data,
- ]);
- }
-
- /**
- * @param string $url
- * @param string $method
- * @param array $options
- * @param bool $returnRaw
- *
- * @return ResponseInterface
- * @throws GuzzleException
- */
- public function request(string $url, string $method = 'GET', array $options = [], bool $returnRaw = false)
- {
- if (empty($this->middlewares)) {
- $this->registerHttpMiddlewares();
- }
- $response = $this->toRequest($url, $method, $options);
- return $response;
- }
-
- /**
- * Register Guzzle middlewares.
- */
- protected function registerHttpMiddlewares()
- {
- // retry
- $this->pushMiddleware($this->retryMiddleware(), 'retry');
- //header
- $this->pushMiddleware($this->headerMiddleware(), 'header');
- // access token
- $this->pushMiddleware($this->accessTokenMiddleware(), 'access_token');
- }
-
- /**
- * @return callable
- */
- protected function retryMiddleware()
- {
- return Middleware::retry(
- function (
- $retries,
- RequestInterface $request,
- ResponseInterface $response = null
- ) {
- // Limit the number of retries to 2 重试次数,默认 1,指定当 http 请求失败时重试的次数。
- if ($retries < config('niucloud.http.max_retries', 1) && $response && $body = $response->getBody()) {
- // Retry on server errors
- $response = json_decode($body, true);
- if (isset($response['code'])) {
- if ($response['code'] != 1) {
- if (in_array(abs($response['code']), [401], true)) {
- $this->clearAccessToken();
- $this->refreshAccessToken();
- } else {
- throw new NiucloudException($response['msg']);
- }
- }
- return true;
- }
- }
- return false;
- },
- function () {
- //重试延迟间隔(单位:ms),默认 500
- return abs(config('niucloud.http.retry_delay', 500));
- }
- );
- }
-
- /**
- * 表头属性
- * @return Closure
- */
- public function headerMiddleware(){
- $developer_token = $this->developer_token;
-
- return function (callable $handler) use ($developer_token) {
- return function (RequestInterface $request, array $options) use ($handler, $developer_token) {
- $domain = request()->domain(true);
- $domain = str_replace('http://', '', $domain);
- $domain = str_replace('https://', '', $domain);
- $request = $request->withHeader('Referer', $domain);
- $request = $request->withHeader('developer-token', $developer_token);
- $options['verify'] = config('niucloud.http.verify', true);
- return $handler($request, $options);
- };
- };
- }
-
-
- /**
- * @param string $url
- * @param array $query
- * @return array|object|Response|ResponseInterface
- * @throws GuzzleException
- */
- public function httpGet(string $url, array $query = [])
- {
- return $this->request($url, 'GET', [
- 'query' => $query,
- ]);
- }
-
- /**
- * @return Closure
- */
- protected function accessTokenMiddleware()
- {
- return function (callable $handler) {
- return function (RequestInterface $request, array $options) use ($handler) {
- if ($this->access_token) {
- $request = $this->applyToRequest($request, $options);
- }
- return $handler($request, $options);
- };
- };
- }
-
- /**
- * @param RequestInterface $request
- * @param array $requestOptions
- * @return RequestInterface
- */
- public function applyToRequest(RequestInterface $request, array $requestOptions = []): RequestInterface
- {
- return $request->withHeader($this->access_token_key, $this->access_token);
- }
-
- /**
- * @param string $url
- * @param array $data
- * @param array $query
- * @return array|Response|object|ResponseInterface
- * @throws GuzzleException
- */
- public function httpPostJson(string $url, array $data = [], array $query = [])
- {
- return $this->request($url, 'POST', ['query' => $query, 'json' => $data]);
- }
-
- /**
- * @param string $url
- * @param array $files
- * @param array $form
- * @param array $query
- * @return array|Response|object|ResponseInterface
- * @throws GuzzleException
- */
- public function httpUpload(string $url, array $files = [], array $form = [], array $query = [])
- {
- $multipart = [];
- $headers = [];
-
- if (isset($form['filename'])) {
- $headers = [
- 'Content-Disposition' => 'form-data; name="media"; filename="' . $form['filename'] . '"'
- ];
- }
-
- foreach ($files as $name => $path) {
- $multipart[] = [
- 'name' => $name,
- 'contents' => fopen($path, 'r'),
- 'headers' => $headers
- ];
- }
-
- foreach ($form as $name => $contents) {
- $multipart[] = compact('name', 'contents');
- }
-
- return $this->request(
- $url,
- 'POST',
- ['query' => $query, 'multipart' => $multipart, 'connect_timeout' => 30, 'timeout' => 30, 'read_timeout' => 30]
- );
- }
-
- /**
- * @param string $url
- * @param string $method
- * @param array $options
- * @throws GuzzleException
- */
- public function requestRaw(string $url, string $method = 'GET', array $options = [])
- {
- return Response::buildFromPsrResponse($this->request($url, $method, $options, true));
- }
-
- /**
- * 下载文件
- * @param string $url
- * @param array $query
- * @param string $absolute_path
- * @return string
- * @throws GuzzleException
- */
- public function download(string $url, array $query = [], string $absolute_path = '')
- {
- // 打开即将下载的本地文件,在该文件上打开一个流
- $resource = fopen($absolute_path, 'w');
- $res = $this->request($url, 'GET', ['sink' => $absolute_path, 'query' => $query]);
- // 关闭一个已打开的文件指针
- fclose($resource);
- return $absolute_path;
- }
-
- public function getDomain($is_filter = true){
- $domain = request()->domain(true);
- if($is_filter){
- $domain = str_replace('http://', '', $domain);
- $domain = str_replace('https://', '', $domain);
- }
- return $domain;
- }
-}
diff --git a/niucloud/core/core/util/niucloud/CloudService.php b/niucloud/core/core/util/niucloud/CloudService.php
deleted file mode 100644
index e9323cb5..00000000
--- a/niucloud/core/core/util/niucloud/CloudService.php
+++ /dev/null
@@ -1,37 +0,0 @@
-baseUri = 'http://' . gethostbyname('oss.niucloud.com') . ':8000/';
- }
-
- public function httpPost(string $url, array $options = []) {
- return $this->toRequest($url, 'POST', $options);
- }
-
- public function httpGet(string $url, array $options = []) {
- return $this->toRequest($url, 'GET', $options);
- }
-
- public function request(string $method, string $url, array $options = []) {
- return (new Client(['base_uri' => $this->baseUri ]))->request($method, $url, $options);
- }
-
- public function getUrl(string $url) {
- return $this->baseUri . $url;
- }
-}
diff --git a/niucloud/core/core/util/niucloud/http/AccessToken.php b/niucloud/core/core/util/niucloud/http/AccessToken.php
deleted file mode 100644
index c0315b3e..00000000
--- a/niucloud/core/core/util/niucloud/http/AccessToken.php
+++ /dev/null
@@ -1,73 +0,0 @@
-access_token = '';
- Cache::delete($this->access_token_cache);
- return $this;
- }
- /**
- * 设置access_token
- * @param $access_token
- * @return $this
- */
- public function setAccessToken($access_token)
- {
- $this->access_token = $access_token;
- Cache::set($this->access_token_cache, $access_token, 7200);
- return $this;
- }
- /**
- * @return mixed
- */
- public function getAccessToken()
- {
- if (empty($this->access_token)) {
- $this->access_token = Cache::get($this->access_token_cache, '');
- }
- return $this->access_token;
- }
-
- /**
- * 刷新access_token
- * @return void
- * @throws GuzzleException
- */
- public function refreshAccessToken()
- {
- $access_token_info = $this->httpGet('auth', ['code' => $this->code, 'secret' => $this->secret, 'token' => $this->createToken(), 'product_key' => self::PRODUCT, 'redirect_uri' => $this->getDomain(false)]);
- if (isset($access_token_info['code']) && $access_token_info['code'] != 1) throw new NiucloudException($access_token_info['msg']);
- $this->setAccessToken($access_token_info['data']['token']);
- }
-
-}
diff --git a/niucloud/core/core/util/niucloud/http/HasHttpRequests.php b/niucloud/core/core/util/niucloud/http/HasHttpRequests.php
deleted file mode 100644
index e10925e3..00000000
--- a/niucloud/core/core/util/niucloud/http/HasHttpRequests.php
+++ /dev/null
@@ -1,183 +0,0 @@
- [
- CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4,
- ],
- ];
- /**
- * @var ClientInterface
- */
- protected $httpClient;
- /**
- * @var array
- */
- protected array $middlewares = [];
- /**
- * @var HandlerStack
- */
- protected $handlerStack;
-
- /**
- * @param array $defaults
- * @return void
- */
- public static function setDefaultOptions(array $defaults = [])
- {
- self::$defaults = $defaults;
- }
-
- /**
- * @return array
- */
- public static function getDefaultOptions(): array
- {
- return self::$defaults;
- }
-
- /**
- * @param callable $middleware
- * @param string|null $name
- * @return $this
- */
- public function pushMiddleware(callable $middleware, string $name = null)
- {
- if (!is_null($name)) {
- $this->middlewares[$name] = $middleware;
- } else {
- $this->middlewares[] = $middleware;
- }
-
- return $this;
- }
-
- /**
- * @return array
- */
- public function getMiddlewares(): array
- {
- return $this->middlewares;
- }
-
- /**
- * @param $url
- * @param string $method
- * @param array $options
- * @return ResponseInterface
- * @throws GuzzleException
- */
- public function toRequest($url, string $method = 'GET', array $options = [])
- {
- $method = strtoupper($method);
-
- $options = array_merge(self::$defaults, $options, ['handler' => $this->getHandlerStack()]);
-
- $options = $this->fixJsonIssue($options);
-
- if (property_exists($this, 'baseUri') && !is_null($this->baseUri)) {
- $options['base_uri'] = $this->baseUri;
- }
- $options['connect_timeout'] = config('niucloud.http.connect_timeout', 3);
- $response = $this->getHttpClient()->request($method, $url, $options);
- $response->getBody()->rewind();
- return json_decode($response->getBody()->getContents(), true);
- }
-
- /**
- * @return HandlerStack
- */
- public function getHandlerStack(): HandlerStack
- {
- if ($this->handlerStack) {
- return $this->handlerStack;
- }
-
- $this->handlerStack = HandlerStack::create($this->getGuzzleHandler());
-
- foreach ($this->middlewares as $name => $middleware) {
- $this->handlerStack->push($middleware, $name);
- }
-
- return $this->handlerStack;
- }
-
- /**
- * @param HandlerStack $handlerStack
- *
- * @return $this
- */
- public function setHandlerStack(HandlerStack $handlerStack)
- {
- $this->handlerStack = $handlerStack;
-
- return $this;
- }
-
- /**
- * @return callable
- */
- protected function getGuzzleHandler()
- {
- return choose_handler();
- }
-
- /**
- * @param array $options
- * @return array
- */
- protected function fixJsonIssue(array $options): array
- {
- if (isset($options['json']) && is_array($options['json'])) {
- $options['headers'] = array_merge($options['headers'] ?? [], ['Content-Type' => 'application/json']);
-
- if (empty($options['json'])) {
- $options['body'] = \GuzzleHttp\json_encode($options['json'], JSON_FORCE_OBJECT);
- } else {
- $options['body'] = \GuzzleHttp\json_encode($options['json'], JSON_UNESCAPED_UNICODE);
- }
-
- unset($options['json']);
- }
-
- return $options;
- }
-
- /**
- * @return ClientInterface
- */
- public function getHttpClient(): ClientInterface
- {
- if (!($this->httpClient instanceof ClientInterface)) {
- $this->httpClient = new Client(['handler' => HandlerStack::create($this->getGuzzleHandler())]);
- }
-
- return $this->httpClient;
- }
-
- /**
- * @param ClientInterface $httpClient
- * @return $this
- */
- public function setHttpClient(ClientInterface $httpClient)
- {
- $this->httpClient = $httpClient;
-
- return $this;
- }
-}
diff --git a/niucloud/core/core/util/niucloud/http/Response.php b/niucloud/core/core/util/niucloud/http/Response.php
deleted file mode 100644
index 81e1182c..00000000
--- a/niucloud/core/core/util/niucloud/http/Response.php
+++ /dev/null
@@ -1,95 +0,0 @@
-getStatusCode(),
- $response->getHeaders(),
- $response->getBody(),
- $response->getProtocolVersion(),
- $response->getReasonPhrase()
- );
- }
-
- /**
- * @return object
- */
- public function toObject()
- {
- return json_decode($this->toJson());
- }
-
- /**
- * Build to json.
- *
- * @return string
- */
- public function toJson()
- {
- return json_encode($this->toArray());
- }
-
- /**
- * Build to array.
- *
- * @return array
- */
- public function toArray()
- {
- $content = $this->removeControlCharacters($this->getBodyContents());
-
- if (false !== stripos($this->getHeaderLine('Content-Type'), 'xml') || 0 === stripos($content, 'getBody()->rewind();
- $contents = $this->getBody()->getContents();
- $this->getBody()->rewind();
-
- return $contents;
- }
-
- /**
- * @return string
- */
- public function __toString()
- {
- return $this->getBodyContents();
- }
-}
diff --git a/niucloud/core/core/util/niucloud/http/Token.php b/niucloud/core/core/util/niucloud/http/Token.php
deleted file mode 100644
index bb06d51c..00000000
--- a/niucloud/core/core/util/niucloud/http/Token.php
+++ /dev/null
@@ -1,81 +0,0 @@
-request->get('signature') !== $this->signature([
- $this->getToken(),
- $this->request->get('timestamp'),
- $this->request->get('nonce'),
- ])) {
- throw new NiucloudException('Invalid request signature.');
- }
- return true;
- }
-
- /**
- * 生成临时证书
- * @param array $params
- * @return string
- */
- protected function signature(array $params)
- {
- sort($params, SORT_STRING);
-
- return sha1(implode($params));
- }
-
- /**
- * 获取TOKEN
- * @return void
- */
- public function getToken(){
- return Cache::get($this->token_cache, '');
- }
-
- /**
- * 新创建一个token(todo 临时)
- * @return void
- */
- public function createToken(){
- //根据code和secret生成token
- $token = md5(serialize(
- [
- 'timestamp' => time(),
- 'code' => $this->code,
- 'secret' => $this->secret,
- 'nonce' => mt_rand(0, 100)
- ]
- ));
- $this->clearToken();
- Cache::set($this->token_cache, $token, 3600);
- return $token;
- }
-
- /**
- * @return $this
- */
- public function clearToken()
- {
- $this->access_token = '';
- Cache::delete($this->token_cache);
- return $this;
- }
-}
diff --git a/niucloud/core/core/util/niucloud/support/XML.php b/niucloud/core/core/util/niucloud/support/XML.php
deleted file mode 100644
index d0485bea..00000000
--- a/niucloud/core/core/util/niucloud/support/XML.php
+++ /dev/null
@@ -1,155 +0,0 @@
- $value) {
- $res = self::normalize($value);
- if (('@attributes' === $key) && ($key)) {
- $result = $res;
- } else {
- $result[$key] = $res;
- }
- }
- } else {
- $result = $obj;
- }
-
- return $result;
- }
-
- /**
- * Delete invalid characters in XML.
- *
- * @see https://www.w3.org/TR/2008/REC-xml-20081126/#charsets - XML charset range
- * @see http://php.net/manual/en/regexp.reference.escape.php - escape in UTF-8 mode
- *
- * @param string $xml
- *
- * @return string
- */
- public static function sanitize($xml)
- {
- return preg_replace('/[^\x{9}\x{A}\x{D}\x{20}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]+/u', '', $xml);
- }
-
- /**
- * XML encode.
- *
- * @param mixed $data
- * @param string $root
- * @param string $item
- * @param string $attr
- * @param string $id
- *
- * @return string
- */
- public static function build(
- $data,
- $root = 'xml',
- $item = 'item',
- $attr = '',
- $id = 'id'
- )
- {
- if (is_array($attr)) {
- $_attr = [];
-
- foreach ($attr as $key => $value) {
- $_attr[] = "{$key}=\"{$value}\"";
- }
-
- $attr = implode(' ', $_attr);
- }
-
- $attr = trim($attr);
- $attr = empty($attr) ? '' : " {$attr}";
- $xml = "<{$root}{$attr}>";
- $xml .= self::data2Xml($data, $item, $id);
- $xml .= "{$root}>";
-
- return $xml;
- }
-
- /**
- * Array to XML.
- *
- * @param array $data
- * @param string $item
- * @param string $id
- *
- * @return string
- */
- protected static function data2Xml($data, $item = 'item', $id = 'id')
- {
- $xml = $attr = '';
-
- foreach ($data as $key => $val) {
- if (is_numeric($key)) {
- $id && $attr = " {$id}=\"{$key}\"";
- $key = $item;
- }
-
- $xml .= "<{$key}{$attr}>";
-
- if ((is_array($val) || is_object($val))) {
- $xml .= self::data2Xml((array)$val, $item, $id);
- } else {
- $xml .= is_numeric($val) ? $val : self::cdata($val);
- }
-
- $xml .= "{$key}>";
- }
-
- return $xml;
- }
-
- /**
- * Build CDATA.
- *
- * @param string $string
- *
- * @return string
- */
- public static function cdata($string)
- {
- return sprintf('', $string);
- }
-}