ro
36d04c8f68
service classes are beginning to swell as there functionality is being fleshed out, so a new organizational structure was needed to make sure class sizes don't become too large and to increase site managability and legibilty as more features get added and the code base grows. data is for retrieving, managing site information, assets interact with external files and upkeep is for maintenance. some additional tweaks were also made to the options menu template to prep it for it's transition to a toolbar component
186 lines
5 KiB
PHP
186 lines
5 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Assets;
|
|
|
|
class DocService
|
|
{
|
|
public function __construct()
|
|
{
|
|
}
|
|
|
|
public static function writePages($task, $path, $fileLocation, $fileContents)
|
|
{
|
|
try {
|
|
if ($task == 'create') {
|
|
if (!is_dir('../content/pages/' . $path)) {
|
|
//Directory does not exist, so lets create it.
|
|
mkdir('../content/pages/' . $path, 0755, true);
|
|
}
|
|
file_put_contents($fileLocation, $fileContents);
|
|
} else {
|
|
($new = fopen($fileLocation, 'w')) or die('Unable to open file!');
|
|
fwrite($new, $fileContents);
|
|
fclose($new);
|
|
}
|
|
return true;
|
|
} catch (Error $error) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function updateMenu($body)
|
|
{
|
|
$settings = self::$settings;
|
|
//$menu = $settings["menu"];
|
|
$item = [
|
|
'title' => $body['title'],
|
|
'id' => $body['id'],
|
|
'uuid' => $body['uuid'],
|
|
'slug' => $body['slug'],
|
|
'path' => $body['path'],
|
|
];
|
|
if ($body['menu'] == 'true') {
|
|
if (!find($settings['menu'], ['uuid' => $item['uuid']])) {
|
|
array_push($settings['menu'], $item);
|
|
}
|
|
} else {
|
|
if (find($settings['menu'], ['uuid' => $item['uuid']])) {
|
|
pull($settings['menu'], $item);
|
|
}
|
|
}
|
|
DocTools::writeSettings('../config/settings.json', $settings);
|
|
}
|
|
|
|
public static function writeSettings($fileContents, $location = null)
|
|
{
|
|
if (is_null($location)) {
|
|
$fileLocation = env('SETTINGS_PATH');
|
|
} else {
|
|
$fileLocation = $location;
|
|
}
|
|
|
|
$message = [];
|
|
try {
|
|
if (!is_file($fileLocation)) {
|
|
file_put_contents($fileLocation, json_encode($fileContents));
|
|
} else {
|
|
($new = fopen($fileLocation, 'w')) or die('Unable to open file!');
|
|
fwrite($new, json_encode($fileContents));
|
|
fclose($new);
|
|
}$message = [
|
|
'message' => "Settings Synced. You're doing great!",
|
|
'type' => 'settingsUpdated',
|
|
];
|
|
} catch (Error $error) {
|
|
$message = [
|
|
'message' => "Settings Not Synced. We'll figure it out",
|
|
'type' => 'settingsUpdated',
|
|
];
|
|
}
|
|
|
|
return $message;
|
|
}
|
|
|
|
public static function writeHTML($location, $html, $path = null)
|
|
{
|
|
if ($path != null) {
|
|
if (!is_dir($path)) {
|
|
//Directory does not exist, so lets create it.
|
|
mkdir($path, 0755, true);
|
|
}
|
|
}
|
|
if (!is_file($location)) {
|
|
file_put_contents($location, $html);
|
|
} else {
|
|
($new = fopen($location, 'w')) or die('Unable to open file!');
|
|
fwrite($new, $html);
|
|
fclose($new);
|
|
}
|
|
}
|
|
|
|
public static function deleteFolder($path)
|
|
{
|
|
if (!empty($path) && is_dir($path)) {
|
|
$dir = new \RecursiveDirectoryIterator(
|
|
$path,
|
|
\RecursiveDirectoryIterator::SKIP_DOTS
|
|
); //upper dirs are not included,otherwise DISASTER HAPPENS :)
|
|
$files = new \RecursiveIteratorIterator(
|
|
$dir,
|
|
\RecursiveIteratorIterator::CHILD_FIRST
|
|
);
|
|
foreach ($files as $f) {
|
|
if (is_file($f)) {
|
|
unlink($f);
|
|
} else {
|
|
$empty_dirs[] = $f;
|
|
}
|
|
}
|
|
if (!empty($empty_dirs)) {
|
|
foreach ($empty_dirs as $eachDir) {
|
|
rmdir($eachDir);
|
|
}
|
|
}
|
|
rmdir($path);
|
|
}
|
|
}
|
|
|
|
public static function objectToMD($object)
|
|
{
|
|
$markdown = "---\n" .
|
|
'id: ' .
|
|
$object->id .
|
|
"\n" .
|
|
'uuid: ' .
|
|
$object->uuid .
|
|
"\n" .
|
|
'title: ' .
|
|
"'" .
|
|
$object->title .
|
|
"'" .
|
|
"\n" .
|
|
'feature: ' .
|
|
$object->imageList .
|
|
"\n" .
|
|
'files: ' .
|
|
$object->fileList .
|
|
"\n" .
|
|
'path: ' .
|
|
$object->path .
|
|
"\n" .
|
|
'layout: ' .
|
|
$object->layout .
|
|
"\n" .
|
|
'tags: ' .
|
|
$object->tags .
|
|
"\n" .
|
|
'author: ' .
|
|
$object->author .
|
|
"\n" .
|
|
'created: ' .
|
|
$object->created .
|
|
"\n" .
|
|
'updated: ' .
|
|
$object->updated .
|
|
"\n" .
|
|
'deleted: ' .
|
|
$object->deleted .
|
|
"\n" .
|
|
'slug: ' .
|
|
$object->slug .
|
|
"\n" .
|
|
'menu: ' .
|
|
$object->menu .
|
|
"\n" .
|
|
'published: ' .
|
|
$object->published .
|
|
"\n" .
|
|
'featured: ' .
|
|
$object->featured .
|
|
"\n---\n" .
|
|
$object->content;
|
|
|
|
return $markdown;
|
|
}
|
|
}
|