| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873 | <?php/** * 页面管理 * @copyright 2021-浙江引擎力营销策划有限公司 * @author Lc<sunshinecc1@163.com> * @since 2021-08-01 */namespace App\Http\Controllers\Admin\Stencil;use App\Http\Controllers\Controller;use App\Http\Models\Site;use App\Http\Services\TemplateLibraryApiService;use Illuminate\Http\Request;use Illuminate\Support\Facades\DB;use Illuminate\Contracts\View\Factory;use Illuminate\View\View;use Illuminate\Http\JsonResponse;class IndexController extends Controller{    private $templateLibraryApiService;    /**     * 模版库服务类     * IndexController constructor.     * @param TemplateLibraryApiService $templateLibraryApiService     */    public function __construct(TemplateLibraryApiService $templateLibraryApiService)    {        $this->templateLibraryApiService = $templateLibraryApiService;    }    /**     * 页面管理     * @param $siteId     * @return Factory|View     */    public function index($siteId)    {        try {            $site = DB::connection($this->templateLibraryApiService->connection($siteId))->table('content_template')->first();            $trees = list_to_tree($this->templateLibraryApiService->getWebSitePage($siteId), 'id', 'parent_id', 'children');            $templateList = DB::connection($this->templateLibraryApiService->connection($siteId))->table('content_template')                    ->where('level', 2)                    ->orderBy('rank', 'ASC')                    ->orderBy('id', 'ASC')->get() ?? [];            return view('admin.stencil.index', [                'trees' => $trees,                'siteId' => $siteId,                'templateList' => $templateList,                'site' => $site,            ]);        } catch (\Throwable $exception) {            echo $exception->getMessage();        }    }    /**     * 内容列表以及选中     * @param Request $request     * @param $siteId     * @return JsonResponse     */    public function getResourceList(Request $request, $siteId)    {        $result = $request->all();        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));        $contentModel = $connection->table('content');        if (!empty($result['content'])) {            $contentModel = $contentModel->where('title', 'like', '%' . $result['content'] . '%');        }        $list = $contentModel->where('is_enabled', 1)->paginate($request->input('pageSize') ?? 6);        $defaultList = $connection->table('content_var')->where('content_id', $result['contentId'] ?? 0)->get() ?? [];        $defaultResultList = [];        foreach ($defaultList as $value) {            $result = unserialize($value->value);            foreach ($result as $vv) {                $defaultResultList[] = $vv;            }        }        foreach ($list as $value) {            $value->default = 0;            $value->sort = 0;            foreach ($defaultResultList as $vv) {                if ($value->id == $vv['id']) {                    $value->default = 1;                    $value->sort = 1;                }            }        }        return response()->json(['message' => '操作成功', 'list' => $list]);    }    /**     * 添加页面管理顶级菜单     * @param Request $request     * @param $siteId     * @return JsonResponse     */    public function addParentMenu(Request $request, $siteId)    {        $result = $request->all();        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));        $list = $this->templateLibraryApiService->getIndexFieldList(0, $result['name'] ?? '');        $connection->table('content')->insert($list);        return response()->json(['message' => '操作成功']);    }    /**     * 复制模版库列表节点     * @param Request $request     * @param $siteId     * @return JsonResponse     */    public function indexCopyNode(Request $request, $siteId)    {        $result = $request->all();        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));        $array = \GuzzleHttp\json_decode($connection->table('content')->get()->toJson(), true) ?? [];        $parentList = get_object_vars($connection->table('content')->where('id', $result['id'])->first()) ?? [];        $childList = $this->getIndexList($array, $result['id']);        $childList[] = $parentList;        $list = $this->arraySort($childList, 'id');        $list = array_merge($list);        $ids = [];        foreach ($list as $key => $item) {            if ($item['parent_id'] == 0 && $key == 0) {                $update = $this->templateLibraryApiService->getFieldList2($item, $ids);            } elseif ($item['parent_id'] != 0 && $key == 0) {                $ids[$item['parent_id']] = $item['parent_id'];                $update = $this->templateLibraryApiService->getFieldList2($item, $ids);            } else {                $update = $this->templateLibraryApiService->getFieldList2($item, $ids);            }            $id = $connection->table('content')->insertGetId($update);            $ids[$item['id']] = $id;        }        return response()->json(['message' => '添加成功']);    }    /**     * 递归父级目录     * @param $array     * @param int $pid     * @return array     */    public function getIndexList($array, $pid = 0)    {        static $data = [];        foreach ($array as $key => $item) {            if ($item['parent_id'] == $pid) {                $data[] = $this->templateLibraryApiService->getFieldList($item);                unset($array[$key]);                $this->getIndexList($array, $item['id']);            }        }        return $data;    }    /**     * 添加页面管理子菜单     * @param Request $request     * @param $siteId     * @return JsonResponse     */    public function indexAddNode(Request $request, $siteId)    {        $result = $request->all();        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));        $filed = $this->templateLibraryApiService->getIndexFieldList($result['pid'], $result['node']);        $connection->table('content')->insert($filed);        return response()->json(['message' => '操作成功']);    }    /**     * 拖动子节点     * @param Request $request     * @param $siteId     * @return JsonResponse     */    public function indexMoveNode(Request $request, $siteId)    {        $result = $request->all();        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));        $parent = $connection->table('content')->where('id', $result['pid'])->first();        $child = $connection->table('content')            ->select('id', 'title', 'rank')            ->where('id', '=', $result['id'])            ->first();        if ($result['type'] == 'next') {            $contentList = $connection->table('content')                ->select('id', 'title', 'rank')                ->where('id', '!=', $result['id'])                ->where('parent_id', $parent->parent_id)                ->orderBy('rank', 'asc')                ->get()->toArray();            $list = [];            foreach ($contentList as $value) {                if ($value->id == $result['pid']) {                    $list[] = $value;                    $list[] = $child;                } else {                    $list[] = $value;                }            }            $num = 0;            foreach ($list as $item) {                $connection->table('content')                    ->where('id', $item->id)                    ->update(['parent_id' => $parent->parent_id ?? 0, 'rank' => ++$num]);            }        }        if ($result['type'] == 'prev') {            $connection->table('content')                ->where('id', $result['id'])                ->update(['parent_id' => $parent->id ?? 0, 'rank' => 1]);        }        if ($result['type'] == 'inner') {            $contentList = $connection->table('content')                ->select('id', 'title', 'rank')                ->where('id', '!=', $result['id'])                ->where('parent_id', $parent->id)                ->orderBy('rank', 'asc')                ->get()->toArray();            if (!empty($contentList)) {                $contentList[] = $child;                $num = 0;                foreach ($contentList as $item) {                    $connection->table('content')                        ->where('id', $item->id)                        ->update(['parent_id' => $parent->id ?? 0, 'rank' => ++$num]);                }            } else {                $connection->table('content')                    ->where('id', $result['id'])                    ->update(['parent_id' => $parent->id ?? 0, 'rank' => 1]);            }        }        return response()->json(['message' => '操作成功']);    }    /**     * 删除页面管理子菜单     * @param Request $request     * @param $siteId     * @return JsonResponse     */    public function indexDelNode(Request $request, $siteId)    {        $result = $request->all();        if (empty($result['id']) || $result['id'] == 1) {            return response()->json(['message' => '操作失败'], 400);        }        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));        $contentInfo = $connection->table('content')->where('id', $result['id'])->first();        if (!empty($contentInfo)) {            if ($contentInfo->status == 2 && $result['type'] == 2) {                $result['type'] = 99;//如果已经被删掉了,再次删除就隐藏            }            $array[] = $contentInfo;            $array = $this->templateLibraryApiService->recursion($array, $siteId);            $ids = array_column($array, 'id');            $connection->table('content')                ->whereIn('id', $ids)                ->update(['status' => $result['type']]);        }        return response()->json(['message' => '操作成功']);    }    /**     * 图片上传页面     * @param Request $request     * @param $siteId     * @param $type     * @return Factory|JsonResponse|View     */    public function images(Request $request, $siteId, $type)    {        if (!$request->ajax()) {            return view('admin.stencil.image', [                'siteId' => $siteId,                'type' => $type            ]);        }        $result = $request->all();        $connection = DB::connection($this->templateLibraryApiService->connection($siteId))->table('image');        if (!empty($result['title'])) {            $connection->where('name', 'like', '%' . $result['title'] . '%');        }        $items = $connection->orderByDesc('id')->paginate(12);        return response()->json([            'rows' => $items->items(),            'total' => $items->total(),        ]);    }    /**     * 批量上传图片     * @param Request $request     * @param $siteId     * @return JsonResponse     */    public function uploadImages(Request $request, $siteId)    {        $images = [];        if ($request->hasFile('files')) {            foreach ($request->file('files') as $file) {                [$name, $alt] = $this->fileRename($file);                $fileData['file_url'] = $file->storeAs($siteId, $name, 'download');                $fileData['file_url'] = asset('download/' . $fileData['file_url']);                $fileData['original_name'] = $name;                $fileData['time'] = time();                $images[] = [                    'ref' =>'',                    'sign' => md5($fileData['file_url']),                    'name' => $alt,                    'src' => $fileData['file_url'],                    'size' => $file->getSize(),//bytes                    'format' => '',                    'site_id' => $siteId,                    'create_time' => time(),                ];            }        }        DB::connection($this->templateLibraryApiService->connection($siteId))->table('image')->insert($images);        return response()->json(['message' => '上传成功', 'data' => $images]);    }    /**     * 保存页面信息     * @param Request $request     * @param $siteId     * @return JsonResponse     */    public function indexSave(Request $request, $siteId)    {        $request = $request->all();        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));        if (empty($request['title'])) {            return response()->json(['message' => '请填写标题'], 400);        }        if (empty($request['tpl_id'])) {            return response()->json(['message' => '请选择模版'], 400);        }        if (!empty($request['new_pid']) && empty($request['index_id'])) {            $filed = $this->templateLibraryApiService->getIndexFieldList($request['new_pid'], $request['title']);            $insertGetId = $connection->table('content')->insertGetId($filed);            $request['index_id'] = $insertGetId;            $request['parent_id'] = $request['new_pid'];        }        if (empty($request['index_id'])) {            return response()->json(['message' => '请选择页面'], 400);        }        $publishTime = time();        if (!empty($request['publish_time'])) {            $publishTime = strtotime($request['publish_time']);        }        $expiredTime = time();        if (!empty($request['expired_time'])) {            $expiredTime = strtotime($request['expired_time']);        }        $alias = strtolower(str_replace(' ', '-', $request['title'])) ?? '';        $template = $connection->table('content_template')            ->where('id', $request['tpl_id'])            ->value('name');        if ($template == 'basic' || $template == 'product_faq') {            $request['deny_spider'] = 1;            $request['is_hidemenu'] = 1;            $request['is_enabled'] = 1;        }        //没有绑定绑定uri就自动生成uri        if (empty($request['is_freeze_url'])) {            $urlLevel = $connection->table('content_template')                    ->where('id', $request['tpl_id'])                    ->value('url_level') ?? 0;            $parentId = $connection->table('content')                    ->where('id', $request['index_id'])                    ->value('parent_id') ?? 0;            if (empty($urlLevel)) {                $uri = $alias;                if ($template == 'basic') {                    $uri = $request['index_id'] . '-' . $alias;                }            } elseif ($parentId == 0) {                $uri = $alias;                if ($template == 'basic') {                    $uri = $request['index_id'] . '-' . $alias;                }            } else {                $uri = $this->getUriLevel($siteId, $parentId);                $uri = array_reverse($uri);                $uri = array_splice($uri, 0, $urlLevel - 1);                if ($template == 'basic') {                    $uri = implode('/', $uri) . '/' . $request['index_id'] . '-' . $alias;                } else {                    $uri = implode('/', $uri) . '/' . $alias;                }            }        } else {            //绑定的以手写的为主            $uri = $request['uri'] ?? '';        }        //查询生成的uri是否是重复的        $uriResult = $connection->table('content')            ->where('status', 1)            ->where('id', '!=', $request['index_id'])            ->where('uri', $uri)            ->first();        if (!empty($uriResult)) {            if (!empty($insertGetId)) {                $connection->table('content')->where('id', $insertGetId)->delete();            }            return response()->json(['message' => 'uri重复'], 400);        }        $data = [            'parent_id' => $request['parent_id'] ?? 0,      //父级id            'tpl_id' => $request['tpl_id'] ?? 0,            //模版id            'title' => $request['title'] ?? '',             //标题            'subtitle' => $request['subtitle'] ?? '',       //副标题            'summary' => $request['summary'] ?? '',         //内容摘要            'thumb' => $request['thumb'] ?? '',             //缩略图            'content' => $request['content'] ?? '',         //内容            'menu_text' => $request['menu_text'] ?? '',     //导航标题            'alias' => $request['index_id'] . '-' . $alias, //URL别名            'uri' => $uri,            'seo_title' => $request['seo_title'] ?? '{$title} - {$setting.sitename}',            'seo_keywords' => $request['seo_keywords'] ?? '',            'seo_description' => $request['seo_description'] ?? '{$summary}',            'path_ids' => $request['path_ids'] ?? '',            'lang' => $request['lang'] ?? '',            'rank' => $request['rank'] ?? 0,            'level' => $request['level'] ?? 0,            'redirect' => $request['redirect'] ?? '',            'content_type' => $request['content_type'] ?? 'html',            'childs_num' => $request['childs_num'] ?? 0,            'views_num' => $request['views_num'] ?? 0,            'is_enabled' => $request['is_enabled'] ?? 0,            'is_hidemenu' => $request['is_hidemenu'] ?? 0,            'is_translated' => $request['is_translated'] ?? 0,            'is_freeze_url' => $request['is_freeze_url'] ?? 0,            'is_301' => $request['is_301'] ?? 0,            'deny_spider' => $request['deny_spider'] ?? 0,            'trans_src_id' => $request['trans_src_id'] ?? 0,            'create_time' => time(),            'update_time' => time(),            'publish_time' => $publishTime,            'expired_time' => $expiredTime,            'tmp_xcode' => $request['tmp_xcode'] ?? '',            'css_id' => $request['css_id'] ?? '',        ];        $connection->table('content')->where('id', $request['index_id'])->update($data);        $templateVarList = $connection->table('content_template_var')->get();        $variable = [];        foreach ($templateVarList as $item) {            $variable[] = [                'type' => $item->input_type,                'key' => $item->name,                'value' => $request[$item->name] ?? '',                'content_id' => $request['index_id'],                'lang' => 'en',                'allow_translate' => 0,            ];        }        foreach ($variable as $key => $item) {            if ($item['type'] == 'resource' || $item['type'] == 'checkbox' || $item['type'] == 'file' || $item['type'] == 'image') {                $variable[$key]['value'] = serialize($item['value'] ?? '');            }        }        //事务        DB::transaction(function () use ($connection, $variable, $request) {            $connection->table('content_var')->where('content_id', $request['index_id'])->delete();            $connection->table('content_var')->insert($variable);        });        return response()->json(['message' => '保存成功']);    }    /**     * 添加内容     * @param Request $request     * @param $siteId     * @param $type     * @return Factory|JsonResponse|View     */    public function resources(Request $request, $siteId, $type)    {        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));        if (!$request->ajax()) {            $templateList = $connection->table('content_template')                    ->where('level', 2)                    ->pluck('name', 'id') ?? [];            return view('admin.stencil.resources', [                'templateList' => $templateList,                'siteId' => $siteId,                'type' => $type            ]);        }        $resources = $connection->table('content');        $title = $request->input('title');        if (!empty($title)) {            $resources = $resources->where('title', 'like', '%' . $title . '%');        }        $ref = $request->input('ref');        if ($ref == 'now') {            $resources = $resources->where('tpl_id', 193);        }        $tplId = $request->input('tplId');        if (!empty($tplId)) {            $resources = $resources->where('tpl_id', $tplId);        }        $resources = $resources->whereIn('status', [1, 2])->orderByDesc('id')->paginate(12);        return response()->json([            'rows' => $resources->items(),            'total' => $resources->total(),        ]);    }    /**     * 批量上传保留上传文件名     * @param Request $request     * @return JsonResponse     */    public function bulkUpload(Request $request)    {        $files = [];        $siteId = $request->input('siteId') ?? 0;        if ($request->hasFile('files')) {            foreach ($request->file('files') as $file) {                [$name, $alt] = $this->fileRename($file);                $fileUrl = $file->storeAs($siteId, $name, 'download');                $fileData['file_url'] = asset('download/' . $fileUrl);                $fileData['file_size'] = $file->getSize();                $fileData['original_name'] = $file->getClientOriginalName();                $fileData['time'] = date('Y-m-d H:i:s');                $files[] = $fileData;            }        }        return response()->json(['message' => '上传成功', 'data' => $files]);    }    /**     * 文件重命名     * @param $file object     * @return array     */    protected function fileRename($file)    {        $name = strtolower(str_replace(' ', '-', $file->getClientOriginalName()));        $array = explode('.', $name);        $alt = str_replace('-', ' ', $array[0] ?? '');        $rename = $array[0] . '-' . rand(1000000, 9999999) . '.' . $array[1];        return [$rename, $alt];    }    /**     * 富文本多图上传接口     * @param Request $request     * @param $siteId     * @return JsonResponse     */    public function editorUpload(Request $request, $siteId)    {        $imageFileList = [];        $file = $request->file('editorFile');        if ($file) {            $imageFileList[] = $file;        }        $editorFile1 = $request->file('editorFile1');        if ($editorFile1) {            $imageFileList[] = $editorFile1;        }        $editorFile2 = $request->file('editorFile2');        if ($editorFile2) {            $imageFileList[] = $editorFile2;        }        $editorFile3 = $request->file('editorFile3');        if ($editorFile3) {            $imageFileList[] = $editorFile3;        }        $editorFile4 = $request->file('editorFile4');        if ($editorFile4) {            $imageFileList[] = $editorFile4;        }        $editorFile5 = $request->file('editorFile5');        if ($editorFile5) {            $imageFileList[] = $editorFile5;        }        $data = [];        foreach ($imageFileList as $item) {            [$name, $alt] = $this->fileRename($item);            $fileUrl = $item->storeAs($siteId, $name, 'download');            $data[] = [                'url' => asset('download/' . $fileUrl),                'alt' => $alt,                'href' => asset('download/' . $fileUrl),            ];        }        $result = [            'errno' => 0,            'data' => $data        ];        return response()->json($result);    }    /**     * 获取模版下面的css列表     * @param Request $request     * @return JsonResponse     */    public function getCssList(Request $request)    {        $request = $request->all();        $cssList = DB::connection($this->templateLibraryApiService->connection($request['siteId']))                ->table('content_template')                ->select('name', 'id')                ->where('level', 3)//css                ->where('parent_id', $request['tpl_id'])                ->get() ?? [];        return response()->json(['data' => $cssList]);    }    /**     *根据模版ip 获取关联变量列表     * @param Request $request     * @return JsonResponse     */    public function getTemplateVariableByTplId(Request $request)    {        $request = $request->all();        $connection = DB::connection($this->templateLibraryApiService->connection($request['siteId']));        $variableIds = $connection            ->table('content_template_relate')            ->where('tid', $request['tpl_id'])            ->pluck('vid');        $variableList = $connection                ->table('content_template_var')                ->whereIn('id', $variableIds)                ->get() ?? [];        $variable = [];        if (!empty($request['content_id'])) {            $variable = $connection->table('content_var')                    ->where('content_id', $request['content_id'])                    ->pluck('value', 'key') ?? [];        }        foreach ($variableList as $item) {            $item->input_opts = explode("\r\n", $item->input_opts) ?? [];            $item->value = $item->input_value ?? '';            if ($item->input_type == 'checkbox' || $item->input_type == 'resource' || $item->input_type == 'file' || $item->input_type == 'image') {                $item->value = [];            }            if ($item->input_type == 'date') {                $item->value = date('Y-m-d');            }            if (count($variable) > 0) {                $item->value = $variable[$item->name] ?? '';                if ($item->input_type == 'checkbox' || $item->input_type == 'resource' || $item->input_type == 'file' || $item->input_type == 'image') {                    $item->value = unserialize($item->value) ?? '';                }                if ($item->input_type == 'date') {                    $item->value = date('Y-m-d', strtotime($item->value));                }            }        }        return response()->json(['data' => $variableList]);    }    /**     * 递归uri层级     * @param $siteId     * @param $parentId     * @return array     */    public function getUriLevel($siteId, $parentId)    {        static $array = [];        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));        $indexInfo = $connection->table('content')->where('id', $parentId)->first();        if (!empty($indexInfo)) {            $array[] = strtolower(str_replace(' ', '-', $indexInfo->title)) ?? '';            $this->getUriLevel($siteId, $indexInfo->parent_id);        }        return $array;    }    public function ftp()    {        try {            $siteId = 360;            $connection = DB::connection($this->templateLibraryApiService->connection($siteId));            //同步所有页面的内容正文富文本图片            $imagesList = $connection->table('content')->get();            $images = [];            foreach ($imagesList as $item) {                preg_match_all('/<img(.*?)src=\"(.*?)\"(.*?)>/is', $item->content, $matches);//图片的url                if (!empty($matches[2])) {                    foreach ($matches[2] as $match) {                        $images[] = urldecode($match);                    }                }            }            $imagesPathList = [];            if (!empty($images)) {                foreach ($images as $image) {                    $imagePathArray = explode('storage', $image);                    if (!empty($imagePathArray[1])) {                        $imagesPathList[] = $imagePathArray[1];                    }                }                $imagesPathList = array_unique($imagesPathList);            }            pre_dump($imagesPathList);            //同步图片图里面的所有图片            $images2 = [];            $imagesList = $connection->table('image')->get();            foreach ($imagesList as $item) {                $imagePathArray = explode('storage', $item->src);                if (!empty($imagePathArray)) {                    $images2[] = $imagePathArray[1];                }            }            $images2 = array_unique($images2);            pre_dump($images2);            //同步所有页面上面的file变量文件            $file = [];            $imagesList = $connection->table('content_var')                ->where('type', 'file')->get();            foreach ($imagesList as $item) {                $fileList = unserialize($item->value);                if (is_array($fileList)) {                    foreach ($fileList as $value) {                        $imagePathArray = explode('storage', $value['file']);                        if (!empty($imagePathArray[1])) {                            $file[] = $imagePathArray[1];                        }                    }                }            }            $file = array_unique($file);            pre_dump($file);            //同步所有页面上面的file变量文件            $richText = [];            $imagesList = $connection->table('content_var')                ->where('type', 'richtext')->get();            foreach ($imagesList as $item) {                preg_match_all('/<img(.*?)src=\"(.*?)\"(.*?)>/is', $item->value, $matches);//图片的url                if (!empty($matches[2])) {                    foreach ($matches[2] as $match) {                        $richText[] = urldecode($match);                    }                }            }            $richTextImages = [];            if (!empty($richText)) {                foreach ($richText as $image) {                    $imagePathArray = explode('storage', $image);                    if (!empty($imagePathArray[1])) {                        $imagesPathList[] = $imagePathArray[1];                    }                }                $richTextImages = array_unique($imagesPathList);            }            pre_dump($richTextImages);            $result = array_merge($imagesPathList, $images2, $file, $richTextImages);            $result = array_unique($result);            pre_dump($result);            $ssh_host = '121.199.40.85';            $ssh2 = ssh2_connect($ssh_host, 22);            $user = 'root';            $password = 'JGJHD84@8&a';            ssh2_auth_password($ssh2, $user, $password);            $domain = Site::query()                ->where('id', $siteId)                ->value('domain');            //远程目录            $targetDirectory = '/www/wwwroot/' . $domain . '/sepSsr/uploads';            //递归创建目录            $sftp = ssh2_sftp($ssh2);            ssh2_sftp_mkdir($sftp, $targetDirectory, 0755, true);            foreach ($result as $item) {                $fileName = explode('/', $item);                $file = array_pop($fileName);                //本地目录                $sourceDirectory = base_path() . '/storage/app/public' . $item;                $stream = ssh2_scp_send($ssh2, $sourceDirectory, $targetDirectory . '/' . $file, 0644);                pre_dump($stream);            }        } catch (\Exception $exception) {            echo $exception->getMessage();        }    }    /*public function automatedDeployment()    {        $db_config = [            'connection_name' => 'new_db',            'host' => $site->server->server_ip,            'port' => '3306',            'database' => 'sdb_sucocms',            'username' => $site->server->mysql_user_name,            'password' => $site->server->mysql_passwd        ];        $new_db = config_connection($db_config);        DB::connection($new_db)->statement('create database ' . $dbName);        Ssh::exec("mysqldump sdb_sucocms -u root -p" . $site->server->mysql_passwd . " --add-drop-table | mysql " . $dbName . " -u root -p" . $site->server->mysql_passwd);    }*/}
 |