123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
- /**
- * Created by PhpStorm.
- * User: 中闽 < 1464674022@qq.com >
- * Date: 2020/2/4
- * Time: 12:47
- */
- namespace app\common\command;
- use app\common\model\Article;
- use app\common\model\Catalog;
- use think\console\Command;
- use think\console\Input;
- use think\console\input\Argument;
- use think\console\Output;
- use think\Db;
- class ImportDedecms extends Command
- {
- /**
- * 导入dedecms数据
- * php think Dedecms
- */
- protected function configure()
- {
- $this->setName('ImportDedecms')
- ->addArgument('db_name', Argument::OPTIONAL, "db_name", "dedecms")
- ->addArgument('db_prefix', Argument::OPTIONAL, "db_prefix", "dede_");
- }
- protected function execute(Input $input, Output $output)
- {
- $db_name = $input->getArgument("db_name");
- $db_prefix = $input->getArgument("db_prefix");
- $dedecms = Db::connect([
- // 数据库类型
- 'type' => 'mysql',
- // 服务器地址
- 'hostname' => \think\Env::get("db_host", "localhost"),
- // 数据库名
- 'database' => $db_name,
- // 数据库用户名
- 'username' => \think\Env::get("db_username", "root"),
- // 数据库密码
- 'password' => \think\Env::get("db_password", ""),
- // 数据库连接端口
- 'hostport' => \think\Env::get("db_port", "3306"),
- ]);
- //导入栏目
- $arctype = $dedecms->query("select * from {$db_prefix}arctype");
- foreach ($arctype as $k => $v) {
- if (Catalog::get($v['id'])) {
- continue;
- }
- (new Catalog())->save([
- 'id' => $v['id'],
- 'pid' => $v['reid'],
- 'title' => $v['typename'],
- 'path' => str_replace('{cmspath}', '', appendEndDS($v['typedir'], '/')) . $v['defaultname'],
- 'sort' => $v['sortrank'],
- 'type' => $v['ispart'] == 0 ? Catalog::TYPE_ARTICLE_LIST : Catalog::TYPE_CATALOG,
- 'catalog_templet' => str_replace(['{style}/', '.htm'], '', $v['ispart'] == 0 ? $v['templist'] : $v['tempindex']),
- 'article_templet' => str_replace(['{style}/', '.htm'], '', $v['temparticle']),
- 'article_rule' => str_replace('{typedir}', '{cpath}', $v['namerule']),
- 'articlelist_rule' => str_replace('{typedir}', '{cpath}', $v['namerule2']),
- 'seo_title' => $v['seotitle'],
- 'seo_keyword' => $v['keywords'],
- 'seo_description' => $v['description'],
- ]);
- $output->writeln("import Catalog id:" . $v['id']);
- }
- //导入文章
- $archives = $dedecms->query("select * from {$db_prefix}archives where arcrank <> -2");
- foreach ($archives as $k => $v) {
- if (Article::get($v['id'])) {
- continue;
- }
- //文章内容
- $addonarticle = $dedecms->query("select * from {$db_prefix}addonarticle where aid=?", [$v['id']]);
- $content = $addonarticle[0]['body'];
- //文章标签
- $taglist = $dedecms->query("select * from {$db_prefix}taglist where aid=?", [$v['id']]);
- $tags = [];
- foreach ($taglist as $tag) {
- $tags[] = $tag['tag'];
- }
- (new Article())->save([
- 'id' => $v['id'],
- 'title' => $v['title'],
- 'seo_title' => $v['shorttitle'],
- 'seo_keyword' => $v['keywords'],
- 'seo_description' => $v['description'],
- 'filename' => $v['filename'],
- 'page_views' => $v['click'],
- 'catalog_id' => $v['typeid'],
- 'content' => $content,
- 'tag' => implode(',', $tags),
- 'status' => $v['arcrank'] == -1 ? Article::STATUS_CLOSE : Article::STATUS_OPEN,
- 'istop_time' => ifContain($v['flag'], 'c') ? time() : 0,
- 'create_time' => $v['senddate'],
- 'update_time' => $v['pubdate']
- ]);
- $output->writeln("import Article id:" . $v['id']);
- }
- }
- }
|