Merge pull request #1 from KodeStar/shift-58933

Upgrade Checker
This commit is contained in:
KodeStar 2022-03-19 14:27:44 +00:00 committed by GitHub
commit 4ff1a4aec4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
87 changed files with 1061 additions and 1108 deletions

View file

@ -13,14 +13,13 @@ class Application extends Model
//
public function icon()
{
if(!file_exists(storage_path('app/public/'.$this->icon))) {
if (! file_exists(storage_path('app/public/'.$this->icon))) {
$img_src = app_path('SupportedApps/'.$this->name.'/'.str_replace('icons/', '', $this->icon));
$img_dest = storage_path('app/public/'.$this->icon);
//die("i: ".$img_src);
@copy($img_src, $img_dest);
}
return $this->icon;
}
@ -32,7 +31,10 @@ class Application extends Model
public function defaultColour()
{
// check if light or dark
if($this->tile_background == 'light') return '#fafbfc';
if ($this->tile_background == 'light') {
return '#fafbfc';
}
return '#161b1f';
}
@ -42,6 +44,7 @@ class Application extends Model
$name = preg_replace('/[^\p{L}\p{N}]/u', '', $name);
$class = '\App\SupportedApps\\'.$name.'\\'.$name;
return $class;
}
@ -50,15 +53,16 @@ class Application extends Model
$name = preg_replace('/[^\p{L}\p{N}]/u', '', $name);
$class = '\App\SupportedApps\\'.$name.'\\'.$name;
return $class;
}
public static function apps()
{
$json = json_decode(file_get_contents(storage_path('app/supportedapps.json'))) ?? [];
$apps = collect($json->apps);
$sorted = $apps->sortBy('name', SORT_NATURAL|SORT_FLAG_CASE);
$sorted = $apps->sortBy('name', SORT_NATURAL | SORT_FLAG_CASE);
return $sorted;
}
@ -66,49 +70,52 @@ class Application extends Model
{
$apps = self::apps();
$list = [];
foreach($apps as $app) {
$list[] = (object)[
foreach ($apps as $app) {
$list[] = (object) [
'label' => $app->name,
'value' => $app->appid
'value' => $app->appid,
];
}
return $list;
}
public static function getApp($appid)
{
$localapp = Application::where('appid', $appid)->first();
$localapp = self::where('appid', $appid)->first();
$app = self::single($appid);
$application = ($localapp) ? $localapp : new Application;
$application = ($localapp) ? $localapp : new self;
if(!file_exists(app_path('SupportedApps/'.className($app->name)))) {
if (! file_exists(app_path('SupportedApps/'.className($app->name)))) {
SupportedApps::getFiles($app);
SupportedApps::saveApp($app, $application);
} else {
// check if there has been an update for this app
if($localapp) {
if($localapp->sha !== $app->sha) {
if ($localapp) {
if ($localapp->sha !== $app->sha) {
SupportedApps::getFiles($app);
$app = SupportedApps::saveApp($app, $application);
}
} else {
SupportedApps::getFiles($app);
$app = SupportedApps::saveApp($app, $application);
}
}
}
}
return $app;
}
public static function single($appid)
{
$apps = self::apps();
$app = $apps->where('appid', $appid)->first();
if ($app === null) return null;
if ($app === null) {
return null;
}
$classname = preg_replace('/[^\p{L}\p{N}]/u', '', $app->name);
$app->class = '\App\SupportedApps\\'.$classname.'\\'.$classname;
return $app;
}
@ -117,11 +124,10 @@ class Application extends Model
$list = [];
$list['null'] = 'None';
$apps = self::apps();
foreach($apps as $app) {
foreach ($apps as $app) {
$list[$app->appid] = $app->name;
}
return $list;
}
}

View file

@ -2,9 +2,9 @@
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Application;
use App\SupportedApps;
use Illuminate\Console\Command;
class RegisterApp extends Command
{
@ -40,40 +40,38 @@ class RegisterApp extends Command
public function handle()
{
$folder = $this->argument('folder');
if($folder == 'all') {
if ($folder == 'all') {
$apps = scandir(app_path('SupportedApps'));
foreach($apps as $folder) {
if($folder == '.' || $folder == '..') continue;
foreach ($apps as $folder) {
if ($folder == '.' || $folder == '..') {
continue;
}
$this->addApp($folder);
}
} else {
$this->addApp($folder);
}
}
public function addApp($folder)
{
$json = app_path('SupportedApps/'.$folder.'/app.json');
if(file_exists($json)) {
if (file_exists($json)) {
$app = json_decode(file_get_contents($json));
if(isset($app->appid)) {
if (isset($app->appid)) {
$exists = Application::find($app->appid);
if($exists) {
$this->error('Application already registered - '.$exists->name." - ".$exists->appid);
if ($exists) {
$this->error('Application already registered - '.$exists->name.' - '.$exists->appid);
} else {
// Doesn't exist so add it
SupportedApps::saveApp($app, new Application);
$this->info("Application Added - ".$app->name." - ".$app->appid);
$this->info('Application Added - '.$app->name.' - '.$app->appid);
}
} else {
$this->error('No App ID for - '.$folder);
}
} else {
$this->error('Could not find '.$json);
}
}
}

View file

@ -1,12 +1,15 @@
<?php namespace App;
<?php
namespace App;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
interface EnhancedApps
{
public function test();
public function livestats();
public function url($endpoint);
public function livestats();
public function url($endpoint);
}

View file

@ -5,12 +5,17 @@ use Illuminate\Support\Str;
function format_bytes($bytes, $is_drive_size = true, $beforeunit = '', $afterunit = '')
{
$btype = ($is_drive_size === true) ? 1000 : 1024;
$labels = array('B','KB','MB','GB','TB');
for($x = 0; $bytes >= $btype && $x < (count($labels) - 1); $bytes /= $btype, $x++); // use 1000 rather than 1024 to simulate HD size not real size
if($labels[$x] == "TB") return(round($bytes, 3).$beforeunit.$labels[$x].$afterunit);
elseif($labels[$x] == "GB") return(round($bytes, 2).$beforeunit.$labels[$x].$afterunit);
elseif($labels[$x] == "MB") return(round($bytes, 2).$beforeunit.$labels[$x].$afterunit);
else return(round($bytes, 0).$beforeunit.$labels[$x].$afterunit);
$labels = ['B', 'KB', 'MB', 'GB', 'TB'];
for ($x = 0; $bytes >= $btype && $x < (count($labels) - 1); $bytes /= $btype, $x++); // use 1000 rather than 1024 to simulate HD size not real size
if ($labels[$x] == 'TB') {
return round($bytes, 3).$beforeunit.$labels[$x].$afterunit;
} elseif ($labels[$x] == 'GB') {
return round($bytes, 2).$beforeunit.$labels[$x].$afterunit;
} elseif ($labels[$x] == 'MB') {
return round($bytes, 2).$beforeunit.$labels[$x].$afterunit;
} else {
return round($bytes, 0).$beforeunit.$labels[$x].$afterunit;
}
}
function str_slug($title, $separator = '-', $language = 'en')
@ -34,11 +39,12 @@ if (! function_exists('str_is')) {
}
}
function get_brightness($hex) {
function get_brightness($hex)
{
// returns brightness value from 0 to 255
// strip off any leading #
$hex = str_replace('#', '', $hex);
if(strlen($hex) == 3) {
if (strlen($hex) == 3) {
$hex = $hex[0].$hex[0].$hex[1].$hex[1].$hex[2].$hex[2];
}
@ -51,7 +57,7 @@ function get_brightness($hex) {
function title_color($hex)
{
if(get_brightness($hex) > 130) {
if (get_brightness($hex) > 130) {
return ' black';
} else {
return ' white';
@ -62,18 +68,16 @@ function getLinkTargetAttribute()
{
$target = \App\Setting::fetch('window_target');
if($target === 'current') {
if ($target === 'current') {
return '';
} else {
return ' target="' . $target . '"';
return ' target="'.$target.'"';
}
}
function className($name)
{
$name = preg_replace('/[^\p{L}\p{N}]/u', '', $name);
return $name;
}

View file

@ -3,8 +3,8 @@
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use App\User;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
@ -92,6 +92,7 @@ class LoginController extends Controller
{
Auth::logout();
session(['current_user' => $user]);
return redirect()->route('dash');
}
@ -100,6 +101,7 @@ class LoginController extends Controller
$user = User::where('autologin', $uuid)->first();
Auth::login($user, true);
session(['current_user' => $user]);
return redirect()->route('dash');
}
@ -122,5 +124,4 @@ class LoginController extends Controller
{
return Session::get('url.intended') ? Session::get('url.intended') : $this->redirectTo;
}
}

View file

@ -2,10 +2,10 @@
namespace App\Http\Controllers\Auth;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use App\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Validator;
class RegisterController extends Controller
{

View file

@ -2,12 +2,12 @@
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Support\Facades\Auth;
use App\User;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\Auth;
class Controller extends BaseController
{
@ -22,7 +22,6 @@ class Controller extends BaseController
//print_r($this->user);
return $next($request);
});
}
public function user()

View file

@ -2,23 +2,21 @@
namespace App\Http\Controllers;
use Artisan;
use App\Application;
use App\Item;
use App\Setting;
use App\User;
use GrahamCampbell\GitHub\Facades\GitHub;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use App\SupportedApps;
use App\Jobs\ProcessApps;
use App\Search;
use Illuminate\Support\Facades\Route;
use GuzzleHttp\Exception\GuzzleException;
use App\Setting;
use App\SupportedApps;
use App\User;
use Artisan;
use GrahamCampbell\GitHub\Facades\GitHub;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Storage;
class ItemController extends Controller
{
@ -26,6 +24,7 @@ class ItemController extends Controller
{
$this->middleware('allowed');
}
/**
* Display a listing of the resource on the dashboard.
*
@ -54,7 +53,7 @@ class ItemController extends Controller
public function setOrder(Request $request)
{
$order = array_filter($request->input('order'));
foreach($order as $o => $id) {
foreach ($order as $o => $id) {
$item = Item::find($id);
$item->order = $o;
$item->save();
@ -72,6 +71,7 @@ class ItemController extends Controller
$item->pinned = true;
$item->save();
$route = route('dash', []);
return redirect($route);
}
@ -86,6 +86,7 @@ class ItemController extends Controller
$item->pinned = false;
$item->save();
$route = route('dash', []);
return redirect($route);
}
@ -94,28 +95,29 @@ class ItemController extends Controller
*
* @return \Illuminate\Http\Response
*/
public function pinToggle($id, $ajax=false, $tag=false)
public function pinToggle($id, $ajax = false, $tag = false)
{
$item = Item::findOrFail($id);
$new = ((bool)$item->pinned === true) ? false : true;
$new = ((bool) $item->pinned === true) ? false : true;
$item->pinned = $new;
$item->save();
if($ajax) {
if(is_numeric($tag) && $tag > 0) {
if ($ajax) {
if (is_numeric($tag) && $tag > 0) {
$item = Item::whereId($tag)->first();
$data['apps'] = $item->children()->pinned()->orderBy('order', 'asc')->get();
} else {
$data['apps'] = Item::pinned()->orderBy('order', 'asc')->get();
}
$data['ajax'] = true;
return view('sortable', $data);
} else {
$route = route('dash', []);
return redirect($route);
}
}
/**
* Display a listing of the resource.
*
@ -123,18 +125,17 @@ class ItemController extends Controller
*/
public function index(Request $request)
{
$trash = (bool)$request->input('trash');
$trash = (bool) $request->input('trash');
$data['apps'] = Item::ofType('item')->orderBy('title', 'asc')->get();
$data['trash'] = Item::ofType('item')->onlyTrashed()->get();
if($trash) {
if ($trash) {
return view('items.trash', $data);
} else {
return view('items.list', $data);
}
}
/**
* Show the form for creating a new resource.
*
@ -146,8 +147,8 @@ class ItemController extends Controller
$data['tags'] = Item::ofType('tag')->orderBy('title', 'asc')->pluck('title', 'id');
$data['tags']->prepend(__('app.dashboard'), 0);
$data['current_tags'] = '0';
return view('items.create', $data);
return view('items.create', $data);
}
/**
@ -160,9 +161,9 @@ class ItemController extends Controller
{
// Get the item
$item = Item::find($id);
if($item->appid === null && $item->class !== null) { // old apps wont have an app id so set it
if ($item->appid === null && $item->class !== null) { // old apps wont have an app id so set it
$app = Application::where('class', $item->class)->first();
if($app) {
if ($app) {
$item->appid = $app->appid;
}
}
@ -176,7 +177,6 @@ class ItemController extends Controller
return view('items.edit', $data);
}
public function storelogic($request, $id = null)
{
$application = Application::single($request->input('appid'));
@ -185,12 +185,12 @@ class ItemController extends Controller
'url' => 'required',
]);
if($request->hasFile('file')) {
if ($request->hasFile('file')) {
$path = $request->file('file')->store('icons');
$request->merge([
'icon' => $path
'icon' => $path,
]);
} elseif(strpos($request->input('icon'), 'http') === 0) {
} elseif (strpos($request->input('icon'), 'http') === 0) {
$contents = file_get_contents($request->input('icon'));
if ($application) {
@ -204,7 +204,7 @@ class ItemController extends Controller
$path = 'icons/'.$icon;
Storage::disk('public')->put($path, $contents);
$request->merge([
'icon' => $path
'icon' => $path,
]);
}
@ -212,10 +212,10 @@ class ItemController extends Controller
$current_user = User::currentUser();
$request->merge([
'description' => $config,
'user_id' => $current_user->id
'user_id' => $current_user->id,
]);
if($request->input('appid') === 'null') {
if ($request->input('appid') === 'null') {
$request->merge([
'class' => null,
]);
@ -223,20 +223,16 @@ class ItemController extends Controller
$request->merge([
'class' => Application::classFromName($application->name),
]);
}
if($id === null) {
if ($id === null) {
$item = Item::create($request->all());
} else {
$item = Item::find($id);
$item->update($request->all());
}
$item->parents()->sync($request->tags);
}
/**
@ -250,6 +246,7 @@ class ItemController extends Controller
$this->storelogic($request);
$route = route('dash', []);
return redirect($route)
->with('success', __('app.alert.success.item_created'));
}
@ -265,7 +262,6 @@ class ItemController extends Controller
//
}
/**
* Update the specified resource in storage.
*
@ -277,8 +273,9 @@ class ItemController extends Controller
{
$this->storelogic($request, $id);
$route = route('dash', []);
return redirect($route)
->with('success',__('app.alert.success.item_updated'));
->with('success', __('app.alert.success.item_updated'));
}
/**
@ -290,8 +287,8 @@ class ItemController extends Controller
public function destroy(Request $request, $id)
{
//
$force = (bool)$request->input('force');
if($force) {
$force = (bool) $request->input('force');
if ($force) {
Item::withTrashed()
->where('id', $id)
->forceDelete();
@ -300,8 +297,9 @@ class ItemController extends Controller
}
$route = route('items.index', []);
return redirect($route)
->with('success',__('app.alert.success.item_deleted'));
->with('success', __('app.alert.success.item_deleted'));
}
/**
@ -318,8 +316,9 @@ class ItemController extends Controller
->restore();
$route = route('items.index', []);
return redirect($route)
->with('success',__('app.alert.success.item_restored'));
->with('success', __('app.alert.success.item_restored'));
}
/**
@ -332,7 +331,9 @@ class ItemController extends Controller
$output = [];
$appid = $request->input('app');
if($appid === "null") return null;
if ($appid === 'null') {
return null;
}
/*$appname = $request->input('app');
//die($appname);
@ -358,21 +359,18 @@ class ItemController extends Controller
$output['custom'] = null;
$app = Application::single($appid);
$output = (array)$app;
$output = (array) $app;
$appdetails = Application::getApp($appid);
if((boolean)$app->enhanced === true) {
if ((bool) $app->enhanced === true) {
// if(!isset($app->config)) { // class based config
$output['custom'] = className($appdetails->name).'.config';
// }
}
$output['colour'] = ($app->tile_background == 'light') ? '#fafbfc' : '#161b1f';
$output['iconview'] = config('app.appsource').'icons/' . $app->icon;
;
$output['iconview'] = config('app.appsource').'icons/'.$app->icon;
return json_encode($output);
}
@ -385,11 +383,11 @@ class ItemController extends Controller
$app = $single->class;
$app_details = new $app();
$app_details->config = (object)$data;
$app_details->config = (object) $data;
$app_details->test();
}
public function execute($url, $attrs = [], $overridevars=false)
public function execute($url, $attrs = [], $overridevars = false)
{
$res = null;
@ -398,7 +396,7 @@ class ItemController extends Controller
'http_errors' => false,
'timeout' => 15,
'connect_timeout' => 15,
'verify' => false
'verify' => false,
];
$client = new Client($vars);
@ -408,19 +406,20 @@ class ItemController extends Controller
try {
return $client->request($method, $url, $attrs);
} catch (\GuzzleHttp\Exception\ConnectException $e) {
Log::error("Connection refused");
Log::error('Connection refused');
Log::debug($e->getMessage());
} catch (\GuzzleHttp\Exception\ServerException $e) {
Log::debug($e->getMessage());
}
return $res;
}
public function websitelookup($url)
{
$url = \base64_decode($url);
$data = $this->execute($url);
return $data->getBody();
}
@ -429,26 +428,19 @@ class ItemController extends Controller
$item = Item::find($id);
$config = $item->getconfig();
if(isset($item->class)) {
if (isset($item->class)) {
$application = new $item->class;
$application->config = $config;
echo $application->livestats();
}
}
public function checkAppList()
{
ProcessApps::dispatch();
$route = route('items.index');
return redirect($route)
->with('success', __('app.alert.success.updating'));
}
}

View file

@ -2,9 +2,9 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Search;
use Illuminate\Http\Request;
class SearchController extends Controller
{
@ -15,9 +15,9 @@ class SearchController extends Controller
$provider = Search::providerDetails($requestprovider);
if($provider->type == 'standard') {
if ($provider->type == 'standard') {
return redirect($provider->url.'?'.$provider->query.'='.urlencode($query));
} elseif($provider->type == 'external') {
} elseif ($provider->type == 'external') {
$class = new $provider->class;
//print_r($provider);
return $class->getResults($query, $provider);

View file

@ -2,12 +2,12 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Setting;
use App\SettingGroup;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Controller;
class SettingsController extends Controller
{
@ -40,14 +40,17 @@ class SettingsController extends Controller
$setting = Setting::find($id);
//die("s: ".$setting->label);
if((bool)$setting->system === true) return abort(404);
if ((bool) $setting->system === true) {
return abort(404);
}
if (!is_null($setting)) {
if (! is_null($setting)) {
return view('settings.edit')->with([
'setting' => $setting,
]);
} else {
$route = route('settings.list', []);
return redirect($route)
->with([
'error' => __('app.alert.error.not_exist'),
@ -65,19 +68,16 @@ class SettingsController extends Controller
$setting = Setting::find($id);
$user = $this->user();
if (!is_null($setting)) {
if (! is_null($setting)) {
$data = Setting::getInput($request);
$setting_value = null;
if ($setting->type == 'image') {
if($request->hasFile('value')) {
if ($request->hasFile('value')) {
$path = $request->file('value')->store('backgrounds');
$setting_value = $path;
}
} else {
$setting_value = $data->value;
}
@ -86,18 +86,21 @@ class SettingsController extends Controller
$user->settings()->save($setting, ['uservalue' => $setting_value]);
$route = route('settings.index', []);
return redirect($route)
->with([
'success' => __('app.alert.success.setting_updated'),
]);
} else {
$route = route('settings.index', []);
return redirect($route)
->with([
'error' => __('app.alert.error.not_exist'),
]);
}
}
/**
* @param int $id
*
@ -107,21 +110,19 @@ class SettingsController extends Controller
{
$user = $this->user();
$setting = Setting::find($id);
if((bool)$setting->system !== true) {
if ((bool) $setting->system !== true) {
$user->settings()->detach($setting->id);
$user->settings()->save($setting, ['uservalue' => '']);
}
$route = route('settings.index', []);
return redirect($route)
->with([
'success' => __('app.alert.success.setting_updated'),
]);
}
public function search(Request $request)
{
}
}

View file

@ -2,10 +2,10 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Item;
use App\User;
use DB;
use Illuminate\Http\Request;
class TagController extends Controller
{
@ -13,6 +13,7 @@ class TagController extends Controller
{
$this->middleware('allowed');
}
/**
* Display a listing of the resource.
*
@ -20,11 +21,11 @@ class TagController extends Controller
*/
public function index(Request $request)
{
$trash = (bool)$request->input('trash');
$trash = (bool) $request->input('trash');
$data['apps'] = Item::ofType('tag')->where('id', '>', 0)->orderBy('title', 'asc')->get();
$data['trash'] = Item::ofType('tag')->where('id', '>', 0)->onlyTrashed()->get();
if($trash) {
if ($trash) {
return view('tags.trash', $data);
} else {
return view('tags.list', $data);
@ -39,6 +40,7 @@ class TagController extends Controller
public function create()
{
$data = [];
return view('tags.create', $data);
}
@ -54,10 +56,10 @@ class TagController extends Controller
'title' => 'required|max:255',
]);
if($request->hasFile('file')) {
if ($request->hasFile('file')) {
$path = $request->file('file')->store('icons');
$request->merge([
'icon' => $path
'icon' => $path,
]);
}
@ -69,12 +71,13 @@ class TagController extends Controller
$request->merge([
'type' => '1',
'url' => $slug,
'user_id' => $current_user->id
'user_id' => $current_user->id,
]);
//die(print_r($request->all()));
Item::create($request->all());
$route = route('dash', []);
return redirect($route)
->with('success', __('app.alert.success.tag_created'));
}
@ -92,6 +95,7 @@ class TagController extends Controller
$data['apps'] = $item->children()->pinned()->orderBy('order', 'asc')->get();
$data['tag'] = $item->id;
$data['all_apps'] = $item->children;
return view('welcome', $data);
}
@ -124,24 +128,25 @@ class TagController extends Controller
'title' => 'required|max:255',
]);
if($request->hasFile('file')) {
if ($request->hasFile('file')) {
$path = $request->file('file')->store('icons');
$request->merge([
'icon' => $path
'icon' => $path,
]);
}
$slug = str_slug($request->title, '-');
// set item type to tag
$request->merge([
'url' => $slug
'url' => $slug,
]);
Item::find($id)->update($request->all());
$route = route('dash', []);
return redirect($route)
->with('success',__('app.alert.success.tag_updated'));
->with('success', __('app.alert.success.tag_updated'));
}
/**
@ -153,8 +158,8 @@ class TagController extends Controller
public function destroy(Request $request, $id)
{
//
$force = (bool)$request->input('force');
if($force) {
$force = (bool) $request->input('force');
if ($force) {
Item::withTrashed()
->where('id', $id)
->forceDelete();
@ -163,8 +168,9 @@ class TagController extends Controller
}
$route = route('tags.index', []);
return redirect($route)
->with('success',__('app.alert.success.item_deleted'));
->with('success', __('app.alert.success.item_deleted'));
}
/**
@ -180,8 +186,9 @@ class TagController extends Controller
->where('id', $id)
->restore();
$route = route('tags.index', []);
return redirect($route)
->with('success',__('app.alert.success.item_restored'));
->with('success', __('app.alert.success.item_restored'));
}
public function add($tag, $item)
@ -189,14 +196,15 @@ class TagController extends Controller
$output = 0;
$tag = Item::find($tag);
$item = Item::find($item);
if($tag && $item) {
if ($tag && $item) {
// only add items, not cats
if((int)$item->type === 0) {
if ((int) $item->type === 0) {
$tag->children()->attach($item);
return 1;
}
}
return $output;
}
}

View file

@ -2,11 +2,11 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
class UserController extends Controller
{
@ -14,6 +14,7 @@ class UserController extends Controller
{
$this->middleware('allowed')->except(['selectUser']);
}
/**
* Display a listing of the resource.
*
@ -22,6 +23,7 @@ class UserController extends Controller
public function index()
{
$data['users'] = User::all();
return view('users.index', $data);
}
@ -33,6 +35,7 @@ class UserController extends Controller
public function create()
{
$data = [];
return view('users.create', $data);
}
@ -40,8 +43,8 @@ class UserController extends Controller
{
Auth::logout();
$data['users'] = User::all();
return view('userselect', $data);
return view('userselect', $data);
}
/**
@ -56,7 +59,7 @@ class UserController extends Controller
'username' => 'required|max:255|unique:users',
'email' => 'required|email',
'password' => 'nullable|confirmed',
'password_confirmation' => 'nullable'
'password_confirmation' => 'nullable',
]);
$user = new User;
@ -65,24 +68,25 @@ class UserController extends Controller
$user->public_front = $request->input('public_front');
$password = $request->input('password');
if(!empty($password)) {
if (! empty($password)) {
$user->password = bcrypt($password);
}
if($request->hasFile('file')) {
if ($request->hasFile('file')) {
$path = $request->file('file')->store('avatars');
$user->avatar = $path;
}
if ((bool)$request->input('autologin_allow') === true) {
$user->autologin = (string)Str::uuid();
if ((bool) $request->input('autologin_allow') === true) {
$user->autologin = (string) Str::uuid();
}
$user->save();
$route = route('dash', []);
return redirect($route)
->with('success',__('app.alert.success.user_updated'));
->with('success', __('app.alert.success.user_updated'));
}
/**
@ -105,8 +109,8 @@ class UserController extends Controller
public function edit(User $user)
{
$data['user'] = $user;
return view('users.edit', $data);
return view('users.edit', $data);
}
/**
@ -122,7 +126,7 @@ class UserController extends Controller
'username' => 'required|max:255|unique:users,username,'.$user->id,
'email' => 'required|email',
'password' => 'nullable|confirmed',
'password_confirmation' => 'nullable'
'password_confirmation' => 'nullable',
]);
//die(print_r($request->all()));
@ -131,19 +135,19 @@ class UserController extends Controller
$user->public_front = $request->input('public_front');
$password = $request->input('password');
if(!empty($password)) {
if (! empty($password)) {
$user->password = bcrypt($password);
} elseif($password == 'null') {
} elseif ($password == 'null') {
$user->password = null;
}
if($request->hasFile('file')) {
if ($request->hasFile('file')) {
$path = $request->file('file')->store('avatars');
$user->avatar = $path;
}
if ((bool)$request->input('autologin_allow') === true) {
$user->autologin = (is_null($user->autologin)) ? (string)Str::uuid() : $user->autologin;
if ((bool) $request->input('autologin_allow') === true) {
$user->autologin = (is_null($user->autologin)) ? (string) Str::uuid() : $user->autologin;
} else {
$user->autologin = null;
}
@ -151,9 +155,9 @@ class UserController extends Controller
$user->save();
$route = route('dash', []);
return redirect($route)
->with('success',__('app.alert.success.user_updated'));
return redirect($route)
->with('success', __('app.alert.success.user_updated'));
}
/**
@ -164,12 +168,12 @@ class UserController extends Controller
*/
public function destroy(User $user)
{
if($user->id !== 1) {
if ($user->id !== 1) {
$user->delete();
$route = route('dash', []);
return redirect($route)
->with('success',__('app.alert.success.user_deleted'));
return redirect($route)
->with('success', __('app.alert.success.user_deleted'));
}
}
}

View file

@ -2,9 +2,9 @@
namespace App\Http\Middleware;
use App\User;
use Closure;
use Illuminate\Support\Facades\Auth;
use App\User;
use Illuminate\Support\Facades\Route;
use Session;
@ -22,27 +22,32 @@ class CheckAllowed
$route = Route::currentRouteName();
$current_user = User::currentUser();
if(str_is('users*', $route)) {
if($current_user->id !== 1) {
if (str_is('users*', $route)) {
if ($current_user->id !== 1) {
return redirect()->route('dash');
}
}
if($route == 'dash') {
if ($route == 'dash') {
//print_r(User::all());
//die("here".var_dump($current_user->password));
if((bool)$current_user->public_front === true) return $next($request);
if ((bool) $current_user->public_front === true) {
return $next($request);
}
}
if(empty($current_user->password)) return $next($request);
if (empty($current_user->password)) {
return $next($request);
}
// Check if user is logged in as $current_user
if (Auth::check()) {
$loggedin_user = Auth::user();
if($loggedin_user->id === $current_user->id) return $next($request);
if ($loggedin_user->id === $current_user->id) {
return $next($request);
}
}
return Auth::authenticate();
}
}

View file

@ -2,8 +2,8 @@
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
@ -12,7 +12,7 @@ class TrustProxies extends Middleware
*
* @var array
*/
protected $proxies = ['192.168.0.0/16', '172.16.0.0/12','10.0.0.0/8', '127.0.0.1'];
protected $proxies = ['192.168.0.0/16', '172.16.0.0/12', '10.0.0.0/8', '127.0.0.1'];
/**
* The current proxy header mappings.

View file

@ -54,5 +54,4 @@ class VerifyCsrfToken extends Middleware
{
return EncryptCookies::serialized('HEIMDALL-XSRF-TOKEN');
}
}

View file

@ -2,13 +2,13 @@
namespace App;
use Illuminate\Database\Eloquent\Model;
use Symfony\Component\ClassLoader\ClassMapGenerator;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Builder;
use App\User;
use App\ItemTag;
use App\Application;
use App\ItemTag;
use App\User;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Symfony\Component\ClassLoader\ClassMapGenerator;
class Item extends Model
{
@ -20,7 +20,7 @@ class Item extends Model
static::addGlobalScope('user_id', function (Builder $builder) {
$current_user = User::currentUser();
if($current_user) {
if ($current_user) {
$builder->where('user_id', $current_user->id)->orWhere('user_id', 0);
} else {
$builder->where('user_id', 0);
@ -30,15 +30,10 @@ class Item extends Model
//
protected $fillable = [
'title', 'url', 'colour', 'icon', 'appdescription', 'description', 'pinned', 'order', 'type', 'class', 'user_id', 'appid'
'title', 'url', 'colour', 'icon', 'appdescription', 'description', 'pinned', 'order', 'type', 'class', 'user_id', 'appid',
];
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['deleted_at'];
/**
* Scope a query to only include pinned items.
@ -54,46 +49,47 @@ class Item extends Model
public static function checkConfig($config)
{
// die(print_r($config));
if(empty($config)) {
if (empty($config)) {
$config = null;
} else {
$config = json_encode($config);
}
return $config;
}
public function tags()
{
$id = $this->id;
$tags = ItemTag::select('tag_id')->where('item_id', $id)->pluck('tag_id')->toArray();
$tagdetails = Item::select('id', 'title', 'url', 'pinned')->whereIn('id', $tags)->get();
$tagdetails = self::select('id', 'title', 'url', 'pinned')->whereIn('id', $tags)->get();
//print_r($tags);
if(in_array(0, $tags)) {
$details = new Item([
"id" => 0,
"title" => __('app.dashboard'),
"url" => '',
"pinned" => 0
if (in_array(0, $tags)) {
$details = new self([
'id' => 0,
'title' => __('app.dashboard'),
'url' => '',
'pinned' => 0,
]);
$tagdetails->prepend($details);
}
return $tagdetails;
}
public function parents()
{
return $this->belongsToMany('App\Item', 'item_tag', 'item_id', 'tag_id');
return $this->belongsToMany(\App\Item::class, 'item_tag', 'item_id', 'tag_id');
}
public function children()
{
return $this->belongsToMany('App\Item', 'item_tag', 'tag_id', 'item_id');
return $this->belongsToMany(\App\Item::class, 'item_tag', 'tag_id', 'item_id');
}
public function getLinkAttribute()
{
if((int)$this->type === 1) {
if ((int) $this->type === 1) {
return url('tag/'.$this->url);
} else {
return $this->url;
@ -102,7 +98,7 @@ class Item extends Model
public function getDroppableAttribute()
{
if((int)$this->type === 1) {
if ((int) $this->type === 1) {
return ' droppable';
} else {
return '';
@ -113,24 +109,25 @@ class Item extends Model
{
$target = Setting::fetch('window_target');
if((int)$this->type === 1 || $target === 'current') {
if ((int) $this->type === 1 || $target === 'current') {
return '';
} else {
return ' target="' . $target . '"';
return ' target="'.$target.'"';
}
}
public function getLinkIconAttribute()
{
if((int)$this->type === 1) {
if ((int) $this->type === 1) {
return 'fa-tag';
} else {
return 'fa-arrow-alt-to-right';
}
}
public function getLinkTypeAttribute()
{
if((int)$this->type === 1) {
if ((int) $this->type === 1) {
return 'tags';
} else {
return 'items';
@ -147,7 +144,7 @@ class Item extends Model
public function scopeOfType($query, $type)
{
switch($type) {
switch ($type) {
case 'item':
$typeid = 0;
break;
@ -172,25 +169,30 @@ class Item extends Model
public static function isEnhanced($class)
{
if($class === null || $class === 'null') return false;
if ($class === null || $class === 'null') {
return false;
}
$app = new $class;
return (bool)($app instanceof \App\EnhancedApps);
return (bool) ($app instanceof \App\EnhancedApps);
}
public static function isSearchProvider($class)
{
$app = new $class;
return ((bool)($app instanceof \App\SearchInterface)) ? $app : false;
return ((bool) ($app instanceof \App\SearchInterface)) ? $app : false;
}
public function enabled()
{
if($this->enhanced()) {
if ($this->enhanced()) {
$config = $this->getconfig();
if($config) {
if ($config) {
return (bool) $config->enabled;
}
}
return false;
}
@ -198,25 +200,22 @@ class Item extends Model
{
// $explode = explode('\\', $this->class);
if(!isset($this->description) || empty($this->description)) {
if (! isset($this->description) || empty($this->description)) {
$config = new \stdClass;
// $config->name = end($explode);
$config->enabled = false;
$config->override_url = null;
$config->apikey = null;
return $config;
}
$config = json_decode($this->description);
// $config->name = end($explode);
$config->url = $this->url;
if(isset($config->override_url) && !empty($config->override_url)) {
if (isset($config->override_url) && ! empty($config->override_url)) {
$config->url = $config->override_url;
} else {
$config->override_url = null;
@ -227,22 +226,24 @@ class Item extends Model
public static function applicationDetails($class)
{
if(!empty($class)) {
if (! empty($class)) {
$name = self::nameFromClass($class);
$application = Application::where('name', $name)->first();
if($application) return $application;
if ($application) {
return $application;
}
}
return false;
}
public static function getApplicationDescription($class)
{
$details = self::applicationDetails($class);
if($details !== false) {
if ($details !== false) {
return $details->description.' - '.$details->license;
}
return '';
}
@ -251,8 +252,6 @@ class Item extends Model
*/
public function user()
{
return $this->belongsTo('App\User');
return $this->belongsTo(\App\User::class);
}
}

View file

@ -6,5 +6,4 @@ use Illuminate\Database\Eloquent\Relations\Pivot;
class ItemTag extends Pivot
{
}

View file

@ -2,15 +2,15 @@
namespace App\Jobs;
use App\Application;
use App\Item;
use App\SupportedApps;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Storage;
use App\Application;
use App\SupportedApps;
use App\Item;
class ProcessApps implements ShouldQueue
{
@ -38,18 +38,17 @@ class ProcessApps implements ShouldQueue
Storage::disk('local')->put('supportedapps.json', $json);
foreach($localapps as $app) {
foreach ($localapps as $app) {
$app->class = $app->class();
$app->save();
}
$items = Item::whereNotNull('class')->get();
foreach($items as $item) {
if(!file_exists(app_path('SupportedApps/'.Item::nameFromClass($item->class)))) {
foreach ($items as $item) {
if (! file_exists(app_path('SupportedApps/'.Item::nameFromClass($item->class)))) {
$app = Application::where('class', $item->class)->first();
Application::getApp($app->appid);
}
}
}
}

View file

@ -2,13 +2,13 @@
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Artisan;
use Schema;
use App\Setting;
use App\User;
use App\Application;
use App\Jobs\ProcessApps;
use App\Setting;
use App\User;
use Artisan;
use Illuminate\Support\ServiceProvider;
use Schema;
class AppServiceProvider extends ServiceProvider
{
@ -19,36 +19,33 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot()
{
if(!is_file(base_path('.env'))) {
if (! is_file(base_path('.env'))) {
copy(base_path('.env.example'), base_path('.env'));
}
$this->genKey();
if(!is_file(database_path('app.sqlite'))) {
if (! is_file(database_path('app.sqlite'))) {
// first time setup
touch(database_path('app.sqlite'));
Artisan::call('migrate', array('--path' => 'database/migrations', '--force' => true, '--seed' => true));
Artisan::call('migrate', ['--path' => 'database/migrations', '--force' => true, '--seed' => true]);
//Cache
//Artisan::call('config:cache');
//Artisan::call('route:cache');
}
if(is_file(database_path('app.sqlite'))) {
if(Schema::hasTable('settings')) {
if (is_file(database_path('app.sqlite'))) {
if (Schema::hasTable('settings')) {
// check version to see if an upgrade is needed
$db_version = Setting::_fetch('version');
$app_version = config('app.version');
if(version_compare($app_version, $db_version) == 1) { // app is higher than db, so need to run migrations etc
Artisan::call('migrate', array('--path' => 'database/migrations', '--force' => true, '--seed' => true));
if (version_compare($app_version, $db_version) == 1) { // app is higher than db, so need to run migrations etc
Artisan::call('migrate', ['--path' => 'database/migrations', '--force' => true, '--seed' => true]);
}
} else {
Artisan::call('migrate', array('--path' => 'database/migrations', '--force' => true, '--seed' => true));
Artisan::call('migrate', ['--path' => 'database/migrations', '--force' => true, '--seed' => true]);
}
}
}
if(!is_file(public_path('storage/.gitignore'))) {
if (! is_file(public_path('storage/.gitignore'))) {
Artisan::call('storage:link');
\Session::put('current_user', null);
}
@ -56,28 +53,24 @@ class AppServiceProvider extends ServiceProvider
$lang = Setting::fetch('language');
\App::setLocale($lang);
$applications = Application::all();
if($applications->count() <= 0) {
if ($applications->count() <= 0) {
if (class_exists('ZipArchive')) {
ProcessApps::dispatch();
} else {
die("You are missing php-zip");
die('You are missing php-zip');
}
}
// User specific settings need to go here as session isn't available at this point in the app
view()->composer('*', function ($view)
{
if(isset($_SERVER['HTTP_AUTHORIZATION']) && !empty($_SERVER['HTTP_AUTHORIZATION'])) {
view()->composer('*', function ($view) {
if (isset($_SERVER['HTTP_AUTHORIZATION']) && ! empty($_SERVER['HTTP_AUTHORIZATION'])) {
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
}
if(!\Auth::check()) {
if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])
&& !empty($_SERVER['PHP_AUTH_USER']) && !empty($_SERVER['PHP_AUTH_PW'])) {
if (! \Auth::check()) {
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])
&& ! empty($_SERVER['PHP_AUTH_USER']) && ! empty($_SERVER['PHP_AUTH_PW'])) {
$credentials = ['username' => $_SERVER['PHP_AUTH_USER'], 'password' => $_SERVER['PHP_AUTH_PW']];
if (\Auth::attempt($credentials, true)) {
@ -86,8 +79,7 @@ class AppServiceProvider extends ServiceProvider
//\Session::put('current_user', $user);
session(['current_user' => $user]);
}
}
elseif(isset($_SERVER['REMOTE_USER']) && !empty($_SERVER['REMOTE_USER'])) {
} elseif (isset($_SERVER['REMOTE_USER']) && ! empty($_SERVER['REMOTE_USER'])) {
$user = User::where('username', $_SERVER['REMOTE_USER'])->first();
if ($user) {
\Auth::login($user, true);
@ -96,35 +88,28 @@ class AppServiceProvider extends ServiceProvider
}
}
$alt_bg = '';
if($bg_image = Setting::fetch('background_image')) {
if ($bg_image = Setting::fetch('background_image')) {
$alt_bg = ' style="background-image: url(storage/'.$bg_image.')"';
}
$allusers = User::all();
$current_user = User::currentUser();
$view->with('alt_bg', $alt_bg );
$view->with('allusers', $allusers );
$view->with('current_user', $current_user );
$view->with('alt_bg', $alt_bg);
$view->with('allusers', $allusers);
$view->with('current_user', $current_user);
});
$this->app['view']->addNamespace('SupportedApps', app_path('SupportedApps'));
if (env('FORCE_HTTPS') === true) {
\URL::forceScheme('https');
}
if(env('APP_URL') != 'http://localhost') {
if (env('APP_URL') != 'http://localhost') {
\URL::forceRootUrl(env('APP_URL'));
}
}
/**
@ -134,14 +119,13 @@ class AppServiceProvider extends ServiceProvider
*/
public function genKey()
{
if(is_file(base_path('.env'))) {
if(empty(env('APP_KEY'))) {
Artisan::call('key:generate', array('--force' => true, '--no-interaction' => true));
if (is_file(base_path('.env'))) {
if (empty(env('APP_KEY'))) {
Artisan::call('key:generate', ['--force' => true, '--no-interaction' => true]);
}
}
}
/**
* Register any application services.
*

View file

@ -2,8 +2,8 @@
namespace App\Providers;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider
{

View file

@ -2,8 +2,8 @@
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider
{

View file

@ -2,8 +2,8 @@
namespace App\Providers;
use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider
{

View file

@ -2,8 +2,8 @@
namespace App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{

View file

@ -1,44 +1,49 @@
<?php namespace App;
<?php
namespace App;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
use App\Item;
use App\Setting;
use Form;
use Cache;
use Form;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use Yaml;
abstract class Search
{
/**
* List of all search providers
*
* @return Array
* @return array
*/
public static function providers()
{
$providers = self::standardProviders();
$providers = $providers + self::appProviders();
return collect($providers);
}
/**
* Gets details for a single provider
*
* @return Object
* @return object
*/
public static function providerDetails($provider)
{
$providers = self::providers();
if(!isset($providers[$provider])) return false;
return (object)$providers[$provider] ?? false;
if (! isset($providers[$provider])) {
return false;
}
return (object) $providers[$provider] ?? false;
}
/**
* Array of the standard providers
*
* @return Array
* @return array
*/
public static function standardProviders()
{
@ -46,7 +51,7 @@ abstract class Search
// print_r($providers);
$providers = Yaml::parseFile(storage_path('app/searchproviders.yaml'));
$all = [];
foreach($providers as $key => $provider) {
foreach ($providers as $key => $provider) {
$all[$key] = $provider;
$all[$key]['type'] = 'standard';
}
@ -58,15 +63,17 @@ abstract class Search
* Loops through users apps to see if app is a search provider, might be worth
* looking into caching this at some point
*
* @return Array
* @return array
*/
public static function appProviders()
{
$providers = [];
$userapps = Item::all();
foreach($userapps as $app) {
if(empty($app->class)) continue;
if(($provider = Item::isSearchProvider($app->class)) !== false) {
foreach ($userapps as $app) {
if (empty($app->class)) {
continue;
}
if (($provider = Item::isSearchProvider($app->class)) !== false) {
$name = Item::nameFromClass($app->class);
$providers[$app->id] = [
'id' => $app->id,
@ -76,11 +83,11 @@ abstract class Search
'name' => $app->title,
'colour' => $app->colour,
'icon' => $app->icon,
'description' => $app->description
'description' => $app->description,
];
}
}
}
}
return $providers;
}
@ -99,12 +106,13 @@ abstract class Search
//die(var_dump($user_search_provider));
// return early if search isn't applicable
if((bool)$homepage_search !== true) return $output;
if ((bool) $homepage_search !== true) {
return $output;
}
$user_search_provider = $user_search_provider ?? 'none';
if((bool)$homepage_search && (bool)$search_provider) {
if((bool)$user_search_provider) {
if ((bool) $homepage_search && (bool) $search_provider) {
if ((bool) $user_search_provider) {
$name = 'app.options.'.$user_search_provider;
$provider = self::providerDetails($user_search_provider);
@ -112,8 +120,8 @@ abstract class Search
$output .= '<form action="'.url('search').'"'.getLinkTargetAttribute().' method="get">';
$output .= '<div id="search-container" class="input-container">';
$output .= '<select name="provider">';
foreach(self::providers() as $key => $searchprovider) {
$selected = ((string)$key === (string)$user_search_provider) ? ' selected="selected"' : '';
foreach (self::providers() as $key => $searchprovider) {
$selected = ((string) $key === (string) $user_search_provider) ? ' selected="selected"' : '';
$output .= '<option value="'.$key.'"'.$selected.'>'.$searchprovider['name'].'</option>';
}
$output .= '</select>';
@ -124,8 +132,7 @@ abstract class Search
$output .= '</div>';
}
}
return $output;
}
}

View file

@ -1,10 +1,11 @@
<?php namespace App;
<?php
namespace App;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
interface SearchInterface
{
public function getResults($query, $providerdetails);
}

View file

@ -2,13 +2,13 @@
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Input;
use Form;
use Illuminate\Support\Facades\Auth;
use App\User;
use App\Search;
use App\User;
use Form;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Input;
class Setting extends Model
{
@ -20,7 +20,7 @@ class Setting extends Model
protected $table = 'settings';
protected $fillable = [
'id', 'group_id', 'key', 'type', 'options', 'label', 'value', 'order', 'system'
'id', 'group_id', 'key', 'type', 'options', 'label', 'value', 'order', 'system',
];
/**
@ -50,31 +50,31 @@ class Setting extends Model
public function getListValueAttribute()
{
if((bool)$this->system === true) {
if ((bool) $this->system === true) {
$value = self::_fetch($this->key);
} else {
$value = self::fetch($this->key);
}
$this->value = $value;
switch($this->type) {
switch ($this->type) {
case 'image':
if(!empty($this->value)) {
if (! empty($this->value)) {
$value = '<a href="'.asset('storage/'.$this->value).'" title="'.__('app.settings.view').'" target="_blank">'.__('app.settings.view').'</a>';
} else {
$value = __('app.options.none');
}
break;
case 'boolean':
if((bool)$this->value === true) {
if ((bool) $this->value === true) {
$value = __('app.options.yes');
} else {
$value = __('app.options.no');
}
break;
case 'select':
if(!empty($this->value) && $this->value !== 'none') {
$options = (array)json_decode($this->options);
if($this->key === 'search_provider') {
if (! empty($this->value) && $this->value !== 'none') {
$options = (array) json_decode($this->options);
if ($this->key === 'search_provider') {
$options = Search::providers()->pluck('name', 'id')->toArray();
}
$value = __($options[$this->value]);
@ -88,32 +88,33 @@ class Setting extends Model
}
return $value;
}
public function getEditValueAttribute()
{
if((bool)$this->system === true) {
if ((bool) $this->system === true) {
$value = self::_fetch($this->key);
} else {
$value = self::fetch($this->key);
}
$this->value = $value;
switch($this->type) {
switch ($this->type) {
case 'image':
$value = '';
if(isset($this->value) && !empty($this->value)) {
if (isset($this->value) && ! empty($this->value)) {
$value .= '<a class="setting-view-image" href="'.asset('storage/'.$this->value).'" title="'.__('app.settings.view').'" target="_blank"><img src="'.asset('storage/'.$this->value).'" /></a>';
}
$value .= Form::file('value', ['class' => 'form-control']);
if(isset($this->value) && !empty($this->value)) {
if (isset($this->value) && ! empty($this->value)) {
$value .= '<a class="settinglink" href="'.route('settings.clear', $this->id).'" title="'.__('app.settings.remove').'">'.__('app.settings.reset').'</a>';
}
break;
case 'boolean':
$checked = false;
if(isset($this->value) && (bool)$this->value === true) $checked = true;
if (isset($this->value) && (bool) $this->value === true) {
$checked = true;
}
$set_checked = ($checked) ? ' checked="checked"' : '';
$value = '
<input type="hidden" name="value" value="0" />
@ -125,10 +126,10 @@ class Setting extends Model
break;
case 'select':
$options = json_decode($this->options);
if($this->key === 'search_provider') {
if ($this->key === 'search_provider') {
$options = Search::providers()->pluck('name', 'id');
}
foreach($options as $key => $opt) {
foreach ($options as $key => $opt) {
$options->$key = __($opt);
}
$value = Form::select('value', $options, null, ['class' => 'form-control']);
@ -142,15 +143,13 @@ class Setting extends Model
}
return $value;
}
public function group()
{
return $this->belongsTo('App\SettingGroup', 'group_id');
return $this->belongsTo(\App\SettingGroup::class, 'group_id');
}
/**
* @param string $key
*
@ -159,23 +158,25 @@ class Setting extends Model
public static function fetch($key)
{
$user = self::user();
return self::_fetch($key, $user);
}
/**
* @param string $key
*
* @return mixed
*/
public static function _fetch($key, $user=null)
public static function _fetch($key, $user = null)
{
#$cachekey = ($user === null) ? $key : $key.'-'.$user->id;
#if (Setting::cached($cachekey)) {
# return Setting::$cache[$cachekey];
#} else {
//$cachekey = ($user === null) ? $key : $key.'-'.$user->id;
//if (Setting::cached($cachekey)) {
// return Setting::$cache[$cachekey];
//} else {
$find = self::where('key', '=', $key)->first();
if (!is_null($find)) {
if((bool)$find->system === true) { // if system variable use global value
if (! is_null($find)) {
if ((bool) $find->system === true) { // if system variable use global value
$value = $find->value;
} else { // not system variable so use user specific value
// check if user specified value has been set
@ -185,27 +186,26 @@ class Setting extends Model
//die(var_dump($usersetting));
//->pivot->value;
//echo "user: ".$user->id." --- ".$usersettings;
if(isset($usersetting) && !empty($usersetting)) {
if (isset($usersetting) && ! empty($usersetting)) {
$value = $usersetting->pivot->uservalue;
} else { // if not get default from base setting
//$user->settings()->save($find, ['value' => $find->value]);
#$has_setting = $user->settings()->where('id', $find->id)->exists();
#if($has_setting) {
# $user->settings()->updateExistingPivot($find->id, ['uservalue' => (string)$find->value]);
#} else {
# $user->settings()->save($find, ['uservalue' => (string)$find->value]);
#}
//$has_setting = $user->settings()->where('id', $find->id)->exists();
//if($has_setting) {
// $user->settings()->updateExistingPivot($find->id, ['uservalue' => (string)$find->value]);
//} else {
// $user->settings()->save($find, ['uservalue' => (string)$find->value]);
//}
$value = $find->value;
}
}
#Setting::add($cachekey, $value);
//Setting::add($cachekey, $value);
return $value;
} else {
return false;
}
#}
//}
}
/**
@ -214,7 +214,7 @@ class Setting extends Model
*/
public static function add($key, $value)
{
Setting::$cache[$key] = $value;
self::$cache[$key] = $value;
}
/**
@ -224,22 +224,19 @@ class Setting extends Model
*/
public static function cached($key)
{
return array_key_exists($key, Setting::$cache);
return array_key_exists($key, self::$cache);
}
/**
* The users that belong to the setting.
*/
public function users()
{
return $this->belongsToMany('App\User')->using('App\SettingUser')->withPivot('uservalue');
return $this->belongsToMany(\App\User::class)->using(\App\SettingUser::class)->withPivot('uservalue');
}
public static function user()
{
return User::currentUser();
}
}

View file

@ -22,6 +22,6 @@ class SettingGroup extends Model
public function settings()
{
return $this->hasMany('App\Setting', 'group_id');
return $this->hasMany(\App\Setting::class, 'group_id');
}
}

View file

@ -1,34 +1,37 @@
<?php namespace App;
<?php
namespace App;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Support\Facades\Log;
abstract class SupportedApps
{
protected $jar = false;
protected $method = 'GET';
protected $error;
public function appTest($url, $attrs = [], $overridevars=false)
public function appTest($url, $attrs = [], $overridevars = false)
{
if(empty($this->config->url)) {
return (object)[
if (empty($this->config->url)) {
return (object) [
'code' => 404,
'status' => 'No URL has been specified',
'response' => 'No URL has been specified',
];
}
$res = $this->execute($url, $attrs);
if($res == null) {
return (object)[
if ($res == null) {
return (object) [
'code' => null,
'status' => $this->error,
'response' => 'Connection failed',
];
}
switch($res->getStatusCode()) {
switch ($res->getStatusCode()) {
case 200:
$status = 'Successfully communicated with the API';
break;
@ -42,14 +45,15 @@ abstract class SupportedApps
$status = 'Something went wrong... Code: '.$res->getStatusCode();
break;
}
return (object)[
return (object) [
'code' => $res->getStatusCode(),
'status' => $status,
'response' => $res->getBody(),
];
}
public function execute($url, $attrs = [], $overridevars=false, $overridemethod=false)
public function execute($url, $attrs = [], $overridevars = false, $overridemethod = false)
{
$res = null;
@ -67,33 +71,32 @@ abstract class SupportedApps
try {
return $client->request($method, $url, $attrs);
} catch (\GuzzleHttp\Exception\ConnectException $e) {
Log::error("Connection refused");
Log::error('Connection refused');
Log::debug($e->getMessage());
$this->error = "Connection refused - ".(string) $e->getMessage();
$this->error = 'Connection refused - '.(string) $e->getMessage();
} catch (\GuzzleHttp\Exception\ServerException $e) {
Log::debug($e->getMessage());
$this->error = (string) $e->getResponse()->getBody();
}
$this->error = 'General error connecting with API';
return $res;
}
public function login()
{
}
public function normaliseurl($url, $addslash=true)
public function normaliseurl($url, $addslash = true)
{
$url = rtrim($url, '/');
if($addslash) $url .= '/';
if ($addslash) {
$url .= '/';
}
return $url;
}
public function getLiveStats($status, $data)
{
$className = get_class($this);
@ -101,6 +104,7 @@ abstract class SupportedApps
$name = end($explode);
$html = view('SupportedApps::'.$name.'.livestats', $data)->with('data', $data)->render();
return json_encode(['status' => $status, 'html' => $html]);
//return
}
@ -110,14 +114,17 @@ abstract class SupportedApps
// $list_url = 'https://apps.heimdall.site/list';
$list_url = config('app.appsource').'list.json';
$client = new Client(['http_errors' => false, 'timeout' => 15, 'connect_timeout' => 15]);
return $client->request('GET', $list_url);
}
public static function configValue($item=null, $key=null)
public static function configValue($item = null, $key = null)
{
if(isset($item) && !empty($item)) {
if (isset($item) && ! empty($item)) {
return $item->getconfig()->$key;
} else return null;
} else {
return null;
}
}
public static function getFiles($app)
@ -127,7 +134,7 @@ abstract class SupportedApps
$client = new Client(['http_errors' => false, 'timeout' => 60, 'connect_timeout' => 15]);
$res = $client->request('GET', $zipurl);
if(!file_exists(app_path('SupportedApps'))) {
if (! file_exists(app_path('SupportedApps'))) {
mkdir(app_path('SupportedApps'), 0777, true);
}
@ -156,12 +163,12 @@ abstract class SupportedApps
$appclass = $app->class();
$application = new $appclass;
$enhanced = (bool)($application instanceof \App\EnhancedApps);
$enhanced = (bool) ($application instanceof \App\EnhancedApps);
$app->class = $appclass;
$app->enhanced = $enhanced;
$app->tile_background = $details->tile_background;
$app->save();
return $app;
}
}

View file

@ -2,8 +2,8 @@
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
@ -32,7 +32,7 @@ class User extends Authenticatable
*/
public function items()
{
return $this->hasMany('App\Item');
return $this->hasMany(\App\Item::class);
}
/**
@ -40,7 +40,7 @@ class User extends Authenticatable
*/
public function settings()
{
return $this->belongsToMany('App\Setting')->withPivot('uservalue');
return $this->belongsToMany(\App\Setting::class)->withPivot('uservalue');
}
public static function currentUser()
@ -49,15 +49,13 @@ class User extends Authenticatable
if ($current_user) { // if logged in, set this user
return $current_user;
} else { // not logged in, get first user
$user = User::where('public_front',true)->first();
if(!$user) {
$user = User::first();
$user = self::where('public_front', true)->first();
if (! $user) {
$user = self::first();
}
session(['current_user' => $user]);
return $user;
}
}
}

View file

@ -56,7 +56,6 @@ return [
'url' => env('APP_URL', 'http://localhost'),
'appsource' => env('APP_SOURCE', 'https://appslist.heimdall.site/'),
/*
|--------------------------------------------------------------------------
| Application Timezone

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateItemsTable extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateSettingsTable extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateSettingGroupsTable extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddColumnsToItemsForGroups extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class ItemTag extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePasswordResetsTable extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddUserIdToItemsTable extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateSettingUserPivotTable extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateApplicationsTable extends Migration
{
@ -14,7 +14,6 @@ class CreateApplicationsTable extends Migration
public function up()
{
Schema::create('applications', function (Blueprint $table) {
$table->string('appid')->unique();
$table->string('name')->unique();
$table->string('sha')->unique()->nullable();

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddClassToItemsTable extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateJobsTable extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateFailedJobsTable extends Migration
{

View file

@ -1,8 +1,8 @@
<?php
use Illuminate\Database\Seeder;
use App\Setting;
use App\SettingGroup;
use Illuminate\Database\Seeder;
class SettingsSeeder extends Seeder
{
@ -14,7 +14,7 @@ class SettingsSeeder extends Seeder
public function run()
{
// Groups
if(!$setting_group = SettingGroup::find(1)) {
if (! $setting_group = SettingGroup::find(1)) {
$setting_group = new SettingGroup;
$setting_group->id = 1;
$setting_group->title = 'app.settings.system';
@ -24,7 +24,7 @@ class SettingsSeeder extends Seeder
$setting_group->title = 'app.settings.system';
$setting_group->save();
}
if(!$setting_group = SettingGroup::find(2)) {
if (! $setting_group = SettingGroup::find(2)) {
$setting_group = new SettingGroup;
$setting_group->id = 2;
$setting_group->title = 'app.settings.appearance';
@ -34,7 +34,7 @@ class SettingsSeeder extends Seeder
$setting_group->title = 'app.settings.appearance';
$setting_group->save();
}
if(!$setting_group = SettingGroup::find(3)) {
if (! $setting_group = SettingGroup::find(3)) {
$setting_group = new SettingGroup;
$setting_group->id = 3;
$setting_group->title = 'app.settings.miscellaneous';
@ -44,7 +44,7 @@ class SettingsSeeder extends Seeder
$setting_group->title = 'app.settings.miscellaneous';
$setting_group->save();
}
if(!$setting_group = SettingGroup::find(4)) {
if (! $setting_group = SettingGroup::find(4)) {
$setting_group = new SettingGroup;
$setting_group->id = 4;
$setting_group->title = 'app.settings.advanced';
@ -55,7 +55,7 @@ class SettingsSeeder extends Seeder
$setting_group->save();
}
if($version = Setting::find(1)) {
if ($version = Setting::find(1)) {
$version->label = 'app.settings.version';
$version->value = config('app.version');
$version->save();
@ -71,7 +71,7 @@ class SettingsSeeder extends Seeder
$setting->save();
}
if(!$setting = Setting::find(2)) {
if (! $setting = Setting::find(2)) {
$setting = new Setting;
$setting->id = 2;
$setting->group_id = 2;
@ -83,7 +83,7 @@ class SettingsSeeder extends Seeder
$setting->label = 'app.settings.background_image';
$setting->save();
}
if(!$setting = Setting::find(3)) {
if (! $setting = Setting::find(3)) {
$setting = new Setting;
$setting->id = 3;
$setting->group_id = 3;
@ -105,8 +105,7 @@ class SettingsSeeder extends Seeder
'startpage' => 'app.options.startpage',
]);
if(!$setting = Setting::find(4)) {
if (! $setting = Setting::find(4)) {
$setting = new Setting;
$setting->id = 4;
$setting->group_id = 3;
@ -121,7 +120,6 @@ class SettingsSeeder extends Seeder
$setting->save();
}
$language_options = json_encode([
'de' => 'Deutsch (German)',
'en' => 'English',
@ -135,7 +133,7 @@ class SettingsSeeder extends Seeder
'es' => 'Español (Spanish)',
'tr' => 'Türkçe (Turkish)',
]);
if($languages = Setting::find(5)) {
if ($languages = Setting::find(5)) {
$languages->options = $language_options;
$languages->save();
} else {
@ -156,8 +154,7 @@ class SettingsSeeder extends Seeder
'_blank' => 'app.settings.window_target.new',
]);
if(!$setting = Setting::find(7)) {
if (! $setting = Setting::find(7)) {
$setting = new Setting;
$setting->id = 7;
$setting->group_id = 3;
@ -173,7 +170,7 @@ class SettingsSeeder extends Seeder
$setting->save();
}
if($support = Setting::find(8)) {
if ($support = Setting::find(8)) {
$support->label = 'app.settings.support';
$support->value = '<a rel="noopener" target="_blank" href="https://discord.gg/CCjHKn4">Discord</a> | <a rel="noopener" target="_blank" href="https://github.com/linuxserver/Heimdall">Github</a> | <a rel="noopener" target="_blank" href="https://blog.heimdall.site/">Blog</a>';
$support->save();
@ -189,7 +186,7 @@ class SettingsSeeder extends Seeder
$setting->save();
}
if($donate = Setting::find(9)) {
if ($donate = Setting::find(9)) {
$donate->label = 'app.settings.donate';
$donate->value = '<a rel="noopener" target="_blank" href="https://www.paypal.me/heimdall">Paypal</a>';
$donate->save();
@ -205,7 +202,7 @@ class SettingsSeeder extends Seeder
$setting->save();
}
if(!$setting = Setting::find(10)) {
if (! $setting = Setting::find(10)) {
$setting = new Setting;
$setting->id = 10;
$setting->group_id = 4;
@ -221,7 +218,7 @@ class SettingsSeeder extends Seeder
$setting->save();
}
if(!$setting = Setting::find(11)) {
if (! $setting = Setting::find(11)) {
$setting = new Setting;
$setting->id = 11;
$setting->group_id = 4;
@ -237,7 +234,7 @@ class SettingsSeeder extends Seeder
$setting->save();
}
if(!$home_tag = \App\Item::find(0)) {
if (! $home_tag = \App\Item::find(0)) {
$home_tag = new \App\Item;
$home_tag->id = 0;
$home_tag->title = 'app.dashboard';
@ -248,11 +245,12 @@ class SettingsSeeder extends Seeder
$home_tag->save();
$homeapps = \App\Item::withoutGlobalScope('user_id')->doesntHave('parents')->get();
foreach($homeapps as $app) {
if($app->id === 0) continue;
foreach ($homeapps as $app) {
if ($app->id === 0) {
continue;
}
$app->parents()->attach(0);
}
}
}
}

View file

@ -1,7 +1,7 @@
<?php
use Illuminate\Database\Seeder;
use App\User;
use Illuminate\Database\Seeder;
class UsersSeeder extends Seeder
{
@ -13,7 +13,7 @@ class UsersSeeder extends Seeder
public function run()
{
// Groups
if(!$user = User::find(1)) {
if (! $user = User::find(1)) {
$user = new User;
$user->id = 1;
$user->username = 'admin';

View file

@ -29,7 +29,6 @@ return [
'settings.search' => 'busca',
'settings.no_items' => 'Nenhum item encontrado',
'settings.label' => 'Rótulo',
'settings.value' => 'Valor',
'settings.edit' => 'Editar',

View file

@ -29,7 +29,6 @@ return [
'settings.search' => '搜索',
'settings.no_items' => '没有可用项目',
'settings.label' => '设置项',
'settings.value' => '内容',
'settings.edit' => '编辑',
@ -116,5 +115,4 @@ return [
'alert.success.user_deleted' => '用户删除成功',
'alert.success.user_restored' => '用户复位成功',
];

View file

@ -29,7 +29,6 @@ return [
'settings.search' => 'søg',
'settings.no_items' => 'Intet fundet',
'settings.label' => 'Etiket',
'settings.value' => 'Værdi',
'settings.edit' => 'Rediger',
@ -116,5 +115,4 @@ return [
'alert.success.user_deleted' => 'Bruger slettet med succes',
'alert.success.user_restored' => 'Bruger genskabt med succes',
];

View file

@ -17,6 +17,6 @@ return [
'reset' => 'Din adgangskode er nulstillet!',
'sent' => 'Vi har sendt dig en e-mail med et link til nulstilling af adgangskode!',
'token' => 'Dit token er ikke gyldigt!',
'user' => "Vi kan ikke finde en bruger med den e-mail-adresse.",
'user' => 'Vi kan ikke finde en bruger med den e-mail-adresse.',
];

View file

@ -1,6 +1,6 @@
<?php
return array (
return [
'settings.system' => 'System',
'settings.appearance' => 'Aussehen',
'settings.miscellaneous' => 'Sonstiges',
@ -57,4 +57,4 @@ return array (
'alert.success.item_restored' => 'Element erfolgreich wiederhergestellt',
'alert.success.setting_updated' => 'Die Einstellungen wurden übernommen',
'alert.error.not_exist' => 'Diese Einstellung existiert nicht.',
);
];

View file

@ -29,7 +29,6 @@ return [
'settings.search' => 'αναζήτηση',
'settings.no_items' => 'Δε βρεθηκαν αποτελέσματα',
'settings.label' => 'Ετικέτα',
'settings.value' => 'Τιμή',
'settings.edit' => 'Επεξεργασία',
@ -116,5 +115,4 @@ return [
'alert.success.user_deleted' => 'Ο χρήστης διαγράφηκε επιτυχώς',
'alert.success.user_restored' => 'Ο χρήστης επαναφέρθηκε επιτυχώς',
];

View file

@ -17,6 +17,6 @@ return [
'reset' => 'Έχει γίνει επαναφορά του κωδικού σας!',
'sent' => 'Σας στείλαμε ένα Ε-mail με τον σύνδεσμο για την επαναφορά του κωδικού πρόσβασής σας!',
'token' => 'Αυτό το token για την επαναφορά του κωδικού πρόσβασής σας είναι άκυρο.',
'user' => "Δεν μπορούμε να βρόυμε κάποιον χρήστη με αυτή τη διεύθυνση E-mail.",
'user' => 'Δεν μπορούμε να βρόυμε κάποιον χρήστη με αυτή τη διεύθυνση E-mail.',
];

View file

@ -125,5 +125,4 @@ return [
'alert.success.user_deleted' => 'User deleted successfully',
'alert.success.user_restored' => 'User restored successfully',
];

View file

@ -1,6 +1,6 @@
<?php
return array (
return [
'settings.system' => 'Sistema',
'settings.appearance' => 'Apariencia',
'settings.miscellaneous' => 'Miscelánea',
@ -57,4 +57,4 @@ return array (
'alert.success.item_restored' => 'Elemento restaurado con éxito',
'alert.success.setting_updated' => 'Ha editado con éxito esta configuración',
'alert.error.not_exist' => 'Esta configuración no existe.',
);
];

View file

@ -1,6 +1,6 @@
<?php
return array (
return [
'settings.system' => 'Järjestelmä',
'settings.appearance' => 'Ulkonäkö',
'settings.miscellaneous' => 'Sekalainen',
@ -21,13 +21,11 @@ return array (
'settings.search' => 'haku',
'settings.no_items' => 'Kohteita ei löytynyt',
'settings.label' => 'Etiketti',
'settings.value' => 'Arvo',
'settings.edit' => 'Muokkaa',
'settings.view' => 'Näkymä',
'options.none' => '- ei asetettu -',
'options.google' => 'Google',
'options.ddg' => 'DuckDuckGo',
@ -37,21 +35,18 @@ return array (
'options.yes' => 'Kyllä',
'options.no' => 'Ei',
'buttons.save' => 'Tallenna',
'buttons.cancel' => 'Peruuta',
'buttons.add' => 'Lisää',
'buttons.upload' => 'Lataa tiedosto',
'buttons.downloadapps' => 'Päivitä sovelluslistaa',
'dash.pin_item' => 'Kiinnitä kohde hallintapaneliin',
'dash.no_apps' => 'Tällä hetkellä ei ole kiinnitettyjä sovelluksia :link1 tai :link2',
'dash.link1' => 'Lisää sovellus tähän',
'dash.link2' => 'Kiinnitä kohde hallintapaneliin',
'dash.pinned_items' => 'Kiinnitetyt Kohteet',
'apps.app_list' => 'Sovellusluettelo',
'apps.view_trash' => 'Näytä roskakori',
'apps.add_application' => 'Lisää sovellus',
@ -73,7 +68,6 @@ return array (
'apps.override' => 'Jos eri kuin pää-osoite',
'apps.preview' => 'Esikatsele',
'user.user_list' => 'Käyttäjät',
'user.add_user' => 'Lisää käyttäjä',
'user.username' => 'Käyttäjänimi',
@ -83,33 +77,28 @@ return array (
'user.secure_front' => 'Salli yleinen pääsy etusivulle - Pakotetaan ainoastaan jos salasana on asetettu.',
'user.autologin' => 'Salli sisäänkirjautuminen tietystä URLista. Linkilläk uka tahansa pystyy kirjautua.',
'url' => 'Url',
'title' => 'Otsikko',
'delete' => 'Poistaa',
'optional' => 'Valinnainen',
'restore' => 'Palauta',
'alert.success.item_created' => 'Kohde luotu onnistuneesti',
'alert.success.item_updated' => 'Kohde päivitetty onnistuneesti',
'alert.success.item_deleted' => 'Kohde poistettu onnistuneesti',
'alert.success.item_restored' => 'Kohde palautettu onnistuneesti',
'alert.success.tag_created' => 'Tagi luotu onnistuneesti',
'alert.success.tag_updated' => 'Tagi päivitetty onnistuneesti',
'alert.success.tag_deleted' => 'Tagi poistettu onnistuneesti',
'alert.success.tag_restored' => 'Tagi palautettu onnistuneesti',
'alert.success.updating' => 'Päivitetään sovelluslistaa',
'alert.success.setting_updated' => 'Asetus muokattu onnistuneesti',
'alert.error.not_exist' => 'Tätä asetusta ei ole olemassa.',
'alert.success.user_created' => 'Käyttäjä luotu onnistuneesti',
'alert.success.user_updated' => 'Käyttäjä päivitetty onnistuneesti',
'alert.success.user_deleted' => 'Käyttäjä poistettu onnistuneesti',
'alert.success.user_restored' => 'Käyttäjä palautettu onnistuneesti',
);
];

View file

@ -1,6 +1,6 @@
<?php
return array (
return [
'settings.system' => 'Système',
'settings.appearance' => 'Apparence',
'settings.miscellaneous' => 'Divers',
@ -111,4 +111,4 @@ return array (
'alert.success.user_deleted' => 'Utilisateur supprimé avec succès',
'alert.success.user_restored' => 'Utilisateur restoré avec succès',
);
];

View file

@ -17,6 +17,6 @@ return [
'reset' => 'Votre mot de passe a été réinitialisé!',
'sent' => 'Nous avons envoyé votre lien de réinitialisation de mot de passe par e-mail!',
'token' => 'Ce jeton de réinitialisation de mot de passe n\'est pas valide.',
'user' => "Nous ne pouvons pas trouver un utilisateur avec cette adresse e-mail.",
'user' => 'Nous ne pouvons pas trouver un utilisateur avec cette adresse e-mail.',
];

View file

@ -29,7 +29,6 @@ return [
'settings.search' => 'keresés',
'settings.no_items' => 'Nincs találat',
'settings.label' => 'Címke',
'settings.value' => 'Érték',
'settings.edit' => 'Módosítás',
@ -91,7 +90,6 @@ return [
'user.secure_front' => 'Nyilvános hozzáférés engedélyezése - Csak jelszó alkalmazása esetén.',
'user.autologin' => 'Bejelentkezés URL-el, Link birtokában bárki bejelentkezhet.',
'url' => 'URL',
'title' => 'Cím',
'delete' => 'Törlés',
@ -117,5 +115,4 @@ return [
'alert.success.user_deleted' => 'Felhasználó sikeresen törölve',
'alert.success.user_restored' => 'Felhasználó sikeresen visszaállítva',
];

View file

@ -18,6 +18,6 @@ return [
'reset' => 'A jelszó vissza lett állítva',
'sent' => 'A jelszó visszaállító e-mail elküldve!',
'token' => 'A jelszó visszaállító token nem érvényes',
'user' => "Ezzel az e-mail címmel felhasználó nem található",
'user' => 'Ezzel az e-mail címmel felhasználó nem található',
];

View file

@ -1,4 +1,5 @@
<?php
return [
/*
|--------------------------------------------------------------------------

View file

@ -1,4 +1,5 @@
<?php
return [
/*
|--------------------------------------------------------------------------

View file

@ -1,4 +1,5 @@
<?php
return [
/*
|--------------------------------------------------------------------------

View file

@ -29,7 +29,6 @@ return [
'settings.search' => '검색',
'settings.no_items' => '항목을 찾을 수 없음',
'settings.label' => '레이블',
'settings.value' => '값',
'settings.edit' => '편집',
@ -116,5 +115,4 @@ return [
'alert.success.user_deleted' => '사용자를 성공적으로 제거했습니다',
'alert.success.user_restored' => '사용자를 성공적으로 복원했습니다',
];

View file

@ -17,6 +17,6 @@ return [
'reset' => '암호가 재설정되었습니다!',
'sent' => '암호 재설정 링크를 전자 메일로 전송했습니다!',
'token' => '이 암호 재설정 토큰은 잘못되었습니다.',
'user' => "해당 이메일 주소를 가진 사용자를 찾을 수 없습니다.",
'user' => '해당 이메일 주소를 가진 사용자를 찾을 수 없습니다.',
];

View file

@ -29,7 +29,6 @@ return [
'settings.search' => 'Zoeken',
'settings.no_items' => 'Geen items gevonden',
'settings.label' => 'Label',
'settings.value' => 'Waarde',
'settings.edit' => 'Bewerken',
@ -113,5 +112,4 @@ return [
'alert.success.user_deleted' => 'Gebruiker met succes verwijderd',
'alert.success.user_restored' => 'Gebruiker met succes hersteld',
];

View file

@ -17,6 +17,6 @@ return [
'reset' => 'Uw wachtwoord is opnieuw ingesteld!',
'sent' => 'De link voor het opnieuw instellen van uw wachtwoord is naar u gemaild!',
'token' => 'Deze token voor het opnieuw instellen van een wachtwoord is ongeldig.',
'user' => "Er bestaat geen gebruiker met het opgegeven e-mailadres.",
'user' => 'Er bestaat geen gebruiker met het opgegeven e-mailadres.',
];

View file

@ -23,7 +23,6 @@ return [
'settings.search' => 'søk',
'settings.no_items' => 'Ingen funn',
'settings.label' => 'Merkelapp',
'settings.value' => 'Verdi',
'settings.edit' => 'Endre',
@ -77,5 +76,4 @@ return [
'alert.success.setting_updated' => 'Du har oppdatert denne innstillingen',
'alert.error.not_exist' => 'Denne innstillingen eksisterer ikke.',
];

View file

@ -17,6 +17,6 @@ return [
'reset' => 'Passordet ditt har blitt tilbakestilt!',
'sent' => 'Vi har sendt deg en e-post med en tilbakestillingslink for ditt passord!',
'token' => 'Denne tilgangstoken er ikke gyldig.',
'user' => "Vi fant ingen med den e-postadressen.",
'user' => 'Vi fant ingen med den e-postadressen.',
];

View file

@ -23,7 +23,6 @@ return [
'settings.search' => 'szukaj',
'settings.no_items' => 'Nic nie znaleziono',
'settings.label' => 'Etykieta',
'settings.value' => 'Wartość',
'settings.edit' => 'Edytuj',
@ -77,5 +76,4 @@ return [
'alert.success.setting_updated' => 'Ustawienie zostało zaktualizowane',
'alert.error.not_exist' => 'Takie ustawienie nie istnieje',
];

View file

@ -29,7 +29,6 @@ return [
'settings.search' => 'procura',
'settings.no_items' => 'Nenhum item encontrado',
'settings.label' => 'Etiqueta',
'settings.value' => 'Valor',
'settings.edit' => 'Editar',
@ -112,5 +111,4 @@ return [
'alert.success.user_deleted' => 'Utilizador apagada com sucesso',
'alert.success.user_restored' => 'Utilizador restaurada com sucesso',
];

View file

@ -17,6 +17,6 @@ return [
'reset' => 'A sua palavra-passe foi restabelecida!',
'sent' => 'Enviámos-lhe por email o seu link de restauro de palavra-passe!',
'token' => 'Este token de restabelecimento de palavra-passe é inválido.',
'user' => "Não conseguimos encontrar nenhum utilizador com este endereço de email.",
'user' => 'Não conseguimos encontrar nenhum utilizador com este endereço de email.',
];

View file

@ -29,7 +29,6 @@ return [
'settings.search' => 'найти',
'settings.no_items' => 'Ничего не найдено',
'settings.label' => 'Метка',
'settings.value' => 'Значение',
'settings.edit' => 'Редактировать',
@ -116,5 +115,4 @@ return [
'alert.success.user_deleted' => 'Пользователь удален успешно',
'alert.success.user_restored' => 'Пользователь восстановлен успешно',
];

View file

@ -17,6 +17,6 @@ return [
'reset' => 'Ваш пароль сброшен!',
'sent' => 'Мы отправили вам ссылку для сброса пароля!',
'token' => 'Неверный токен для сброса пароля.',
'user' => "Не могу найти пользователя с таким адресом e-mail.",
'user' => 'Не могу найти пользователя с таким адресом e-mail.',
];

View file

@ -29,7 +29,6 @@ return [
'settings.search' => 'išči',
'settings.no_items' => 'Ni najdenih elementov',
'settings.label' => 'Oznaka',
'settings.value' => 'Vrednost',
'settings.edit' => 'Uredi',
@ -116,5 +115,4 @@ return [
'alert.success.user_deleted' => 'Uporabnik uspešno izbrisan',
'alert.success.user_restored' => 'Uporabnik uspešno obnovljen',
];

View file

@ -17,6 +17,6 @@ return [
'reset' => 'Tvoje geslo je bilo ponastavljeno!',
'sent' => 'Na tvoj email smo poslali povezavo za ponastavitev gesla!',
'token' => 'Ta ključ za ponastavitev gesla ni veljaven.',
'user' => "Ne najdemo uporabnika s tem e-naslovom.",
'user' => 'Ne najdemo uporabnika s tem e-naslovom.',
];

View file

@ -1,11 +1,10 @@
<?php
return array (
return [
'settings.system' => 'Systemet',
'settings.appearance' => 'Utseende',
'settings.miscellaneous' => 'Övrigt',
'settings.version' => 'Version',
'settings.background_image' => 'Bakgrundsbild',
'settings.window_target' => 'Länken öppnas i',
@ -20,13 +19,11 @@ return array (
'settings.search' => 'sök',
'settings.no_items' => 'Inga poster hittades',
'settings.label' => 'Etikett',
'settings.value' => 'Värde',
'settings.edit' => 'Ändra',
'settings.view' => 'Visa',
'options.none' => '- inte valt -',
'options.google' => 'Google',
'options.ddg' => 'DuckDuckGo',
@ -36,21 +33,18 @@ return array (
'options.yes' => 'Ja',
'options.no' => 'Nej',
'buttons.save' => 'Spara',
'buttons.cancel' => 'Avbryt',
'buttons.add' => 'Lägg till',
'buttons.upload' => 'Ladda upp en fil',
'buttons.downloadapps' => 'Uppdatera app lista',
'dash.pin_item' => 'Fäst på instrumentpanelen',
'dash.no_apps' => 'Det finns för närvarande inga fästa applikationer, :link1 eller :link2',
'dash.link1' => 'Lägg till en applikation här',
'dash.link2' => 'Fäst ett objekt till instrumentpanelen',
'dash.pinned_items' => 'Fästa Objekt',
'apps.app_list' => 'Applikationslista',
'apps.view_trash' => 'Visa papperskorgen',
'apps.add_application' => 'Lägg till applikation',
@ -72,7 +66,6 @@ return array (
'apps.override' => 'Om annan än huvudlänk',
'apps.preview' => 'Förhandsvisa',
'user.user_list' => 'Användare',
'user.add_user' => 'Lägg till användare',
'user.username' => 'Användarnamn',
@ -82,33 +75,28 @@ return array (
'user.secure_front' => 'Tillåt allmän åtkomst till framsidan - Upprätthålls endast om ett lösenord är satt.',
'user.autologin' => 'Tillåt inloggning från en specifik URL. Vem som helst med länken kan logga in.',
'url' => 'Url',
'title' => 'Titel',
'delete' => 'Radera',
'optional' => 'Valfri',
'restore' => 'Återställ',
'alert.success.item_created' => 'Artikeln skapad',
'alert.success.item_updated' => 'Artikeln uppdaterad',
'alert.success.item_deleted' => 'Artikeln borttagen',
'alert.success.item_restored' => 'Artikeln återställd',
'alert.success.updating' => 'Uppdaterar app lista',
'alert.success.tag_created' => 'Tagg skapad',
'alert.success.tag_updated' => 'Tagg uppdaterad',
'alert.success.tag_deleted' => 'Tagg borttagen',
'alert.success.tag_restored' => 'Tagg återställd',
'alert.success.setting_updated' => 'Inställningen uppdaterad',
'alert.error.not_exist' => 'Denna inställning existerar inte.',
'alert.success.user_created' => 'Användare skapad',
'alert.success.user_updated' => 'Anvädare uppdaterad',
'alert.success.user_deleted' => 'Användare borttagen',
'alert.success.user_restored' => 'Användare återställd',
);
];

View file

@ -23,7 +23,6 @@ return [
'settings.search' => 'ara',
'settings.no_items' => 'Öğe bulunamadı',
'settings.label' => 'Etiket',
'settings.value' => 'Değer',
'settings.edit' => 'Düzenle',
@ -75,5 +74,4 @@ return [
'alert.success.setting_updated' => 'Ayarlama kaydedildi',
'alert.error.not_exist' => 'Böyle bir seçenek yok.',
];

View file

@ -17,6 +17,6 @@ return [
'reset' => 'Şifreniz sıfırlandı!',
'sent' => 'Şifre sıfırlama bağlantısı eposta adresinize yollandı!',
'token' => 'Şifre sıfırlama simgesi geçerli değil.',
'user' => "Adresle ilişkili kullanıcı adı bulunamadı.",
'user' => 'Adresle ilişkili kullanıcı adı bulunamadı.',
];

View file

@ -12,4 +12,3 @@ use Illuminate\Http\Request;
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

View file

@ -13,8 +13,8 @@ use Illuminate\Http\Request;
|
*/
if(\Config::get('app.url') !== 'http://localhost') {
URL::forceRootUrl(\Config::get('app.url'));
if (config('app.url') !== 'http://localhost') {
URL::forceRootUrl(config('app.url'));
}
Route::get('/userselect/{user}', 'Auth\LoginController@setUser')->name('user.set');
@ -23,7 +23,7 @@ Route::get('/autologin/{uuid}', 'Auth\LoginController@autologin')->name('user.au
Route::get('/', 'ItemController@dash')->name('dash');
Route::get('check_app_list', 'ItemController@checkAppList')->name('applist');
Route::get('single/{appid}', function($appid) {
Route::get('single/{appid}', function ($appid) {
return json_encode(\App\Application::single($appid));
})->name('single');
@ -32,8 +32,6 @@ Route::resources([
'tags' => 'TagController',
]);
Route::get('tag/{slug}', 'TagController@show')->name('tags.show');
Route::get('tag/add/{tag}/{item}', 'TagController@add')->name('tags.add');
Route::get('tag/restore/{id}', 'TagController@restore')->name('tags.restore');
@ -57,10 +55,9 @@ Route::get('view/{name_view}', function ($name_view) {
Route::get('titlecolour', function (Request $request) {
$color = $request->input('color');
if($color) {
if ($color) {
return title_color($color);
};
}
})->name('titlecolour');
Route::resource('users', 'UserController');
@ -72,7 +69,6 @@ Route::group([
'as' => 'settings.',
'prefix' => 'settings',
], function () {
Route::get('/', 'SettingsController@index')
->name('index');
Route::get('edit/{id}', 'SettingsController@edit')
@ -80,9 +76,7 @@ Route::group([
Route::get('clear/{id}', 'SettingsController@clear')
->name('clear');
Route::patch('edit/{id}', 'SettingsController@update');
});
Auth::routes();

View file

@ -2,8 +2,8 @@
namespace Tests;
use Illuminate\Support\Facades\Hash;
use Illuminate\Contracts\Console\Kernel;
use Illuminate\Support\Facades\Hash;
trait CreatesApplication
{

View file

@ -2,8 +2,8 @@
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class ExampleTest extends TestCase
{

View file

@ -2,8 +2,8 @@
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class ExampleTest extends TestCase
{