BaseDiy.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /* diy发布设置
  3. */
  4. namespace plugin\release\diy;
  5. use skycaiji\admin\model\DbCommon;
  6. abstract class BaseDiy extends \skycaiji\admin\event\ReleaseBase{
  7. public $release;//发布对象数据
  8. public $releConfig;//发布配置
  9. public $connection;//数据库配置
  10. protected $db;//数据库对象
  11. public function __construct(){
  12. parent::__construct();
  13. if(config('app_debug')!=true){
  14. config('exception_tmpl',config('app_path').'/public/release_exception.tpl');//定义cms错误模板,ajax出错时方便显示
  15. }
  16. }
  17. public function init($release=null){
  18. if(empty($release)){
  19. $release=array();
  20. }
  21. if(!empty($release)){
  22. //通过发布设置加载配置
  23. $releConfig=$release['config'];
  24. $this->releConfig=$releConfig;//发布数据库配置
  25. $this->release=$release;
  26. }else{
  27. exception('发布错误:配置加载失败!');
  28. }
  29. $this->init_load();
  30. if(empty($this->connection)){
  31. exception('发布错误:没有数据库配置');
  32. }
  33. if(!isset($this->connection['fields_strict'])){
  34. //默认允许字段不存在
  35. $this->connection['fields_strict']=false;
  36. }
  37. //实例化数据库
  38. try {
  39. $mdb=new DbCommon($this->connection);
  40. $this->db=$mdb->db();
  41. }catch (\Exception $ex){
  42. exception('发布错误:'.$ex->getMessage());
  43. }
  44. $this->init_extend();
  45. }
  46. /*初始化载入*/
  47. public function init_load(){}
  48. public function init_extend(){}
  49. /**
  50. * 参照thinkphp5数据库操作
  51. * @return Ambigous <\think\db\Query, NULL>
  52. */
  53. public function db(){
  54. return $this->db;
  55. }
  56. /**
  57. * 导出数据
  58. * @param string $url 采集的页面网址
  59. * @param array $fields 采集到的字段数据
  60. */
  61. public function runExport($url,$fields){
  62. //数据库编码
  63. $dbCharset=strtolower($this->connection['db_charset']);
  64. if(empty($dbCharset)||$dbCharset=='utf-8'||$dbCharset=='utf8'){
  65. //不转码
  66. $dbCharset=null;
  67. }
  68. if(!empty($dbCharset)){
  69. foreach ($fields as $k=>$v){
  70. $fields[$k]['value']=$this->utf8_to_charset($dbCharset, $v['value']);//值转码
  71. }
  72. }
  73. return $this->runImport($url,$fields);
  74. }
  75. /**
  76. * 导入数据
  77. * @param string $url 采集的页面网址
  78. * @param array $fields 采集到的字段数据
  79. */
  80. public abstract function runImport($url,$fields);
  81. }
  82. ?>