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);
- }*/
- }
|