2024-03-14 23:58:11 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Http\Controllers\Theming;
|
|
|
|
|
|
|
|
use App\Http\Controllers\Controller;
|
|
|
|
use App\Interfaces\PageRepositoryInterface;
|
|
|
|
use App\Services\AuthService;
|
|
|
|
use App\Services\ThemeService;
|
|
|
|
use App\Services\SortingService;
|
|
|
|
|
|
|
|
class ThemeController extends Controller
|
|
|
|
{
|
|
|
|
protected PageRepositoryInterface $pages;
|
|
|
|
protected AuthService $auth;
|
|
|
|
protected ThemeService $themes;
|
|
|
|
protected SortingService $sort;
|
|
|
|
|
|
|
|
public function __construct(
|
|
|
|
PageRepositoryInterface $pageRepository,
|
|
|
|
AuthService $authService,
|
|
|
|
ThemeService $themeService,
|
|
|
|
SortingService $sortService,
|
|
|
|
) {
|
|
|
|
$this->pages = $pageRepository;
|
|
|
|
$this->auth = $authService;
|
|
|
|
$this->themes = $themeService;
|
|
|
|
$this->sort = $sortService;
|
|
|
|
$theme = $this->themes->getCurrentTheme();
|
|
|
|
$themeTestImagePath = '../public/theme/images/global/';
|
|
|
|
$themeTestCSSPath = '../public/theme/css/theme/';
|
|
|
|
$themeTestScriptsPath = '../public/theme/scripts/theme/';
|
|
|
|
//TODO: Create assset service class to handle moving theme assets around
|
|
|
|
//move assets to public for testing
|
|
|
|
foreach (
|
|
|
|
new \DirectoryIterator('../content/themes/' . $theme . '/assets/images/global/') as $file
|
|
|
|
) {
|
|
|
|
if ($file->isDot()) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
//make theme directory if not present
|
|
|
|
if (!is_dir($themeTestImagePath)) {
|
|
|
|
mkdir($themeTestImagePath, 0755, true);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!is_file($themeTestImagePath . $file->getFileName())) {
|
|
|
|
copy(
|
|
|
|
'../content/themes/' .
|
|
|
|
$theme .
|
|
|
|
'/assets/images/global/' .
|
|
|
|
$file->getFileName(),
|
|
|
|
$themeTestImagePath . $file->getFileName()
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
//image is already there, so chill
|
|
|
|
}
|
|
|
|
//print $file->getFilename() . "\n";
|
|
|
|
}
|
|
|
|
//clear test theme css and script directories
|
|
|
|
$styles = glob($themeTestCSSPath . '*'); // get all file names
|
|
|
|
foreach ($styles as $file) { // iterate files
|
|
|
|
if (is_file($file)) {
|
|
|
|
unlink($file); // delete file
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$scripts = glob($themeTestScriptsPath . '*'); // get all file names
|
|
|
|
foreach ($scripts as $file) { // iterate files
|
|
|
|
if (is_file($file)) {
|
|
|
|
unlink($file); // delete file
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
//copy theme assets to public
|
|
|
|
$newcss = glob('../content/themes/' . $theme . '/assets/css/*');
|
|
|
|
if (!is_dir($themeTestCSSPath)) {
|
|
|
|
mkdir($themeTestCSSPath, 0755, true);
|
|
|
|
}
|
|
|
|
foreach ($newcss as $file) { // iterate files
|
|
|
|
if (is_file($file)) {
|
|
|
|
$path = explode('/', $file);
|
|
|
|
copy($file, $themeTestCSSPath . $path[6]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$newjs = glob('../content/themes/' . $theme . '/assets/scripts/*');
|
|
|
|
if (!is_dir($themeTestScriptsPath)) {
|
|
|
|
mkdir($themeTestScriptsPath, 0755, true);
|
|
|
|
}
|
|
|
|
foreach ($newjs as $file) { // iterate files
|
|
|
|
if (is_file($file)) {
|
|
|
|
$path = explode('/', $file);
|
|
|
|
copy($file, $themeTestScriptsPath . $path[6]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-03-15 03:03:46 +01:00
|
|
|
public function getView($view = 'index')
|
2024-03-14 23:58:11 +01:00
|
|
|
{
|
2024-03-15 21:28:26 +01:00
|
|
|
$template;
|
|
|
|
$pageData = [];
|
2024-03-15 03:03:46 +01:00
|
|
|
switch ($view) {
|
2024-03-15 21:28:26 +01:00
|
|
|
case "index":
|
2024-03-15 03:03:46 +01:00
|
|
|
case "page":
|
2024-03-15 21:28:26 +01:00
|
|
|
$view == 'index' ?
|
|
|
|
$template = 'fipamo-default-v2.index' :
|
|
|
|
$template = 'fipamo-default-v2.page';
|
|
|
|
$page = $this->pages->getById('09E5A362-BA31-4AE2-9DEE-C93DFBE005C3')->first();
|
|
|
|
$data = $this->sort->page($page);
|
|
|
|
$pageData = [
|
|
|
|
"debug" => "true",
|
|
|
|
"theme" => 'fipamo-default-v2',
|
|
|
|
"status" => $this->auth::status(),
|
|
|
|
"title" => "THEME PAGE",
|
|
|
|
"meta" => $data['meta'],
|
|
|
|
"menu" => $data['menu'],
|
|
|
|
"info" => $data['info'],
|
|
|
|
"media" => $data['media'],
|
|
|
|
"files" => $data['files'],
|
|
|
|
"content" => $data['content'],
|
|
|
|
"recent" => $data['recent'],
|
|
|
|
"feature" => $data['featured'],
|
|
|
|
"tags" => $data['tags'],
|
|
|
|
"dynamicRender" => $data['dynamicRender'],
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
case "tags":
|
|
|
|
$template = 'fipamo-default-v2.tags';
|
|
|
|
$data = $this->sort->tags();
|
|
|
|
$pageData = [
|
|
|
|
'debug' => true, // for theme kit
|
|
|
|
'theme' => 'fipamo-default-v2', // for theme kit
|
|
|
|
'title' => 'Pages Tagged as Tag',
|
|
|
|
'dynamicRender' => $data['info']['dynamicRender'],
|
|
|
|
'tags' => $data['info']['tags'][3]['pages'],
|
|
|
|
'info' => $data['info'],
|
|
|
|
'menu' => $data['info']['menu'],
|
|
|
|
'media' => [
|
|
|
|
['file' => $data['info']['image'],
|
|
|
|
'type' => trim(pathinfo($data['info']['image'], PATHINFO_EXTENSION))]
|
|
|
|
],
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
case "archives":
|
|
|
|
case "archive":
|
|
|
|
$template = 'fipamo-default-v2.archive';
|
|
|
|
$data = $this->sort->archive();
|
|
|
|
$pageData = [
|
|
|
|
'debug' => true, // for theme kit
|
|
|
|
'theme' => 'fipamo-default-v2', // for theme kit
|
|
|
|
'title' => 'Archives',
|
|
|
|
'dynamicRender' => $data['info']['dynamicRender'],
|
|
|
|
'archive' => $data['archive'],
|
|
|
|
'info' => $data['info'],
|
|
|
|
'menu' => $data['info']['menu'],
|
|
|
|
'media' => [
|
|
|
|
['file' => $data['info']['image'],
|
|
|
|
'type' => trim(pathinfo($data['info']['image'], PATHINFO_EXTENSION))]
|
|
|
|
],
|
|
|
|
];
|
2024-03-15 03:03:46 +01:00
|
|
|
break;
|
|
|
|
}
|
2024-03-14 23:58:11 +01:00
|
|
|
if ($this->auth::status()) {
|
2024-03-15 21:28:26 +01:00
|
|
|
return view($template, $pageData);
|
2024-03-14 23:58:11 +01:00
|
|
|
} else {
|
|
|
|
return redirect('dashboard/start');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|