mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-03 20:05:53 +01:00
Fixed some issues found by phpstan, remove deprecated method calls (User)
This commit is contained in:
71
admin.php
71
admin.php
@@ -1,6 +1,8 @@
|
||||
<?php
|
||||
namespace Grav\Plugin;
|
||||
|
||||
use Composer\Autoload\ClassLoader;
|
||||
use Grav\Common\Cache;
|
||||
use Grav\Common\Debugger;
|
||||
use Grav\Common\File\CompiledYamlFile;
|
||||
use Grav\Common\Grav;
|
||||
@@ -13,8 +15,8 @@ use Grav\Common\Page\Pages;
|
||||
use Grav\Common\Plugin;
|
||||
use Grav\Common\Session;
|
||||
use Grav\Common\Uri;
|
||||
use Grav\Common\User\Interfaces\UserCollectionInterface;
|
||||
use Grav\Common\Utils;
|
||||
use Grav\Common\User\User;
|
||||
use Grav\Framework\Session\Exceptions\SessionException;
|
||||
use Grav\Plugin\Admin\Admin;
|
||||
use Grav\Plugin\Admin\Popularity;
|
||||
@@ -31,56 +33,37 @@ class AdminPlugin extends Plugin
|
||||
'blueprints' => 1000,
|
||||
];
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
/** @var bool */
|
||||
protected $active = false;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
/** @var string */
|
||||
protected $template;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
/** @var string */
|
||||
protected $theme;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
/** @var string */
|
||||
protected $route;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
/** @var string */
|
||||
protected $admin_route;
|
||||
|
||||
/**
|
||||
* @var Uri
|
||||
*/
|
||||
/** @var Uri */
|
||||
protected $uri;
|
||||
|
||||
/**
|
||||
* @var Admin
|
||||
*/
|
||||
/** @var Admin */
|
||||
protected $admin;
|
||||
|
||||
/**
|
||||
* @var Session
|
||||
*/
|
||||
/** @var Session */
|
||||
protected $session;
|
||||
|
||||
/**
|
||||
* @var Popularity
|
||||
*/
|
||||
/** @var Popularity */
|
||||
protected $popularity;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
/** @var string */
|
||||
protected $base;
|
||||
|
||||
/** @var string */
|
||||
protected $version;
|
||||
|
||||
/**
|
||||
@@ -90,6 +73,7 @@ class AdminPlugin extends Plugin
|
||||
{
|
||||
return [
|
||||
'onPluginsInitialized' => [
|
||||
['autoload', 100001],
|
||||
['setup', 100000],
|
||||
['onPluginsInitialized', 1001]
|
||||
],
|
||||
@@ -130,6 +114,16 @@ class AdminPlugin extends Plugin
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* [onPluginsInitialized:100000] Composer autoload.
|
||||
*
|
||||
* @return ClassLoader
|
||||
*/
|
||||
public function autoload()
|
||||
{
|
||||
return require __DIR__ . '/vendor/autoload.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* [onPluginsInitialized:100000]
|
||||
*
|
||||
@@ -138,13 +132,6 @@ class AdminPlugin extends Plugin
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
// Autoloader
|
||||
spl_autoload_register(function ($class) {
|
||||
if (Utils::startsWith($class, 'Grav\Plugin\Admin')) {
|
||||
require_once __DIR__ .'/classes/' . strtolower(basename(str_replace("\\", '/', $class))) . '.php';
|
||||
}
|
||||
});
|
||||
|
||||
$route = $this->config->get('plugins.admin.route');
|
||||
if (!$route) {
|
||||
return;
|
||||
@@ -197,10 +184,11 @@ class AdminPlugin extends Plugin
|
||||
// Only activate admin if we're inside the admin path.
|
||||
if ($this->active) {
|
||||
// Store this version.
|
||||
$this->version = $this->getBlueprint()->version;
|
||||
$this->version = $this->getBlueprint()->get('version');
|
||||
|
||||
// Have a unique Admin-only Cache key
|
||||
if (method_exists($this->grav['cache'], 'setKey')) {
|
||||
/** @var Cache $cache */
|
||||
$cache = $this->grav['cache'];
|
||||
$cache_key = $cache->getKey();
|
||||
$cache->setKey($cache_key . '$');
|
||||
@@ -311,8 +299,11 @@ class AdminPlugin extends Plugin
|
||||
$data['state'] = 'enabled';
|
||||
$data['access'] = ['admin' => ['login' => true, 'super' => true], 'site' => ['login' => true]];
|
||||
|
||||
/** @var UserCollectionInterface $users */
|
||||
$users = $this->grav['users'];
|
||||
|
||||
// Create user object and save it
|
||||
$user = User::load($username);
|
||||
$user = $users->load($username);
|
||||
$user->update($data);
|
||||
$user->save();
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Grav\Plugin\Admin\Twig;
|
||||
|
||||
use Grav\Common\Grav;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use DateTime;
|
||||
@@ -15,8 +16,10 @@ use Grav\Common\Page\Page;
|
||||
use Grav\Common\Page\Pages;
|
||||
use Grav\Common\Plugins;
|
||||
use Grav\Common\Security;
|
||||
use Grav\Common\Session;
|
||||
use Grav\Common\Themes;
|
||||
use Grav\Common\Uri;
|
||||
use Grav\Common\User\Interfaces\UserCollectionInterface;
|
||||
use Grav\Common\User\User;
|
||||
use Grav\Common\Utils;
|
||||
use Grav\Framework\Collection\ArrayCollection;
|
||||
@@ -29,7 +32,6 @@ use RocketTheme\Toolbox\File\JsonFile;
|
||||
use RocketTheme\Toolbox\ResourceLocator\UniformResourceIterator;
|
||||
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
|
||||
use RocketTheme\Toolbox\Session\Message;
|
||||
use RocketTheme\Toolbox\Session\Session;
|
||||
use Grav\Common\Yaml;
|
||||
use Composer\Semver\Semver;
|
||||
use PicoFeed\Reader\Reader;
|
||||
@@ -41,82 +43,67 @@ class Admin
|
||||
const MEDIA_PAGINATION_INTERVAL = 20;
|
||||
const TMP_COOKIE_NAME = 'tmp-admin-message';
|
||||
|
||||
/**
|
||||
* @var Grav
|
||||
*/
|
||||
/** @var Grav */
|
||||
public $grav;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
|
||||
/** @var string */
|
||||
public $base;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
|
||||
/** @var string */
|
||||
public $location;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
|
||||
/** @var string */
|
||||
public $route;
|
||||
/**
|
||||
* @var User
|
||||
*/
|
||||
|
||||
/** @var User */
|
||||
public $user;
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
|
||||
/** @var array */
|
||||
public $forgot;
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
|
||||
/** @var string */
|
||||
public $task;
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
|
||||
/** @var array */
|
||||
public $json_response;
|
||||
/**
|
||||
* @var Uri $uri
|
||||
*/
|
||||
|
||||
/** @var Collection */
|
||||
public $collection;
|
||||
|
||||
/** @var bool */
|
||||
public $multilang;
|
||||
|
||||
/** @var array */
|
||||
public $languages_enabled;
|
||||
|
||||
/** @var Uri $uri */
|
||||
protected $uri;
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
|
||||
/** @var array */
|
||||
protected $pages = [];
|
||||
/**
|
||||
* @var Session
|
||||
*/
|
||||
|
||||
/** @var Session */
|
||||
protected $session;
|
||||
/**
|
||||
* @var Data\Blueprints
|
||||
*/
|
||||
|
||||
/** @var Data\Blueprints */
|
||||
protected $blueprints;
|
||||
/**
|
||||
* @var GPM
|
||||
*/
|
||||
|
||||
/** @var GPM */
|
||||
protected $gpm;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
/** @var int */
|
||||
protected $pages_count;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
/** @var array */
|
||||
protected $permissions;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
/** @var bool */
|
||||
protected $load_additional_files_in_background = false;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
/** @var bool */
|
||||
protected $loading_additional_files_in_background = false;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
/** @var array */
|
||||
protected $temp_messages = [];
|
||||
|
||||
/**
|
||||
@@ -145,7 +132,7 @@ class Admin
|
||||
// Load utility class
|
||||
if ($language->enabled()) {
|
||||
$this->multilang = true;
|
||||
$this->languages_enabled = $this->grav['config']->get('system.languages.supported', []);
|
||||
$this->languages_enabled = (array)$this->grav['config']->get('system.languages.supported', []);
|
||||
|
||||
//Set the currently active language for the admin
|
||||
$language = $this->grav['uri']->param('lang');
|
||||
@@ -664,12 +651,18 @@ class Admin
|
||||
|
||||
$data[$type] = $obj;
|
||||
} elseif (preg_match('|users/|', $type)) {
|
||||
$obj = User::load(preg_replace('|users/|', '', $type));
|
||||
/** @var UserCollectionInterface $users */
|
||||
$users = $this->grav['users'];
|
||||
|
||||
$obj = $users->load(preg_replace('|users/|', '', $type));
|
||||
$obj->update($this->cleanUserPost($post));
|
||||
|
||||
$data[$type] = $obj;
|
||||
} elseif (preg_match('|user/|', $type)) {
|
||||
$obj = User::load(preg_replace('|user/|', '', $type));
|
||||
/** @var UserCollectionInterface $users */
|
||||
$users = $this->grav['users'];
|
||||
|
||||
$obj = $users->load(preg_replace('|user/|', '', $type));
|
||||
$obj->update($this->cleanUserPost($post));
|
||||
|
||||
$data[$type] = $obj;
|
||||
@@ -691,7 +684,7 @@ class Admin
|
||||
|
||||
$file = File::instance($filename);
|
||||
|
||||
$obj = new \StdClass();
|
||||
$obj = new \stdClass();
|
||||
$obj->title = $file->basename();
|
||||
$obj->path = $file->filename();
|
||||
$obj->file = $file;
|
||||
@@ -718,7 +711,7 @@ class Admin
|
||||
/**
|
||||
* Clean user form post and remove extra stuff that may be passed along
|
||||
*
|
||||
* @param $post
|
||||
* @param array $post
|
||||
* @return array
|
||||
*/
|
||||
protected function cleanUserPost($post)
|
||||
@@ -800,7 +793,7 @@ class Admin
|
||||
/**
|
||||
* Count the pages
|
||||
*
|
||||
* @return array
|
||||
* @return int
|
||||
*/
|
||||
public function pagesCount()
|
||||
{
|
||||
@@ -996,7 +989,7 @@ class Admin
|
||||
/**
|
||||
* Check the passed packages list can be updated
|
||||
*
|
||||
* @param $packages
|
||||
* @param array $packages
|
||||
*
|
||||
* @throws \Exception
|
||||
* @return bool
|
||||
@@ -1168,7 +1161,7 @@ class Admin
|
||||
/**
|
||||
* Guest date format based on euro/US
|
||||
*
|
||||
* @param $date
|
||||
* @param string $date
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
@@ -1317,7 +1310,7 @@ class Admin
|
||||
/**
|
||||
* Sets the entire permissions array
|
||||
*
|
||||
* @param $permissions
|
||||
* @param array $permissions
|
||||
*/
|
||||
public function setPermissions($permissions)
|
||||
{
|
||||
@@ -1327,7 +1320,7 @@ class Admin
|
||||
/**
|
||||
* Adds a permission to the permissions array
|
||||
*
|
||||
* @param $permissions
|
||||
* @param array $permissions
|
||||
*/
|
||||
public function addPermissions($permissions)
|
||||
{
|
||||
@@ -1584,9 +1577,9 @@ class Admin
|
||||
/**
|
||||
* Returns the page creating it if it does not exist.
|
||||
*
|
||||
* @param $path
|
||||
* @param string $path
|
||||
*
|
||||
* @return PageInterface
|
||||
* @return PageInterface|null
|
||||
*/
|
||||
public function getPage($path)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use Grav\Common\Config\Config;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use Grav\Common\Backup\Backups;
|
||||
@@ -12,11 +13,13 @@ use Grav\Common\Grav;
|
||||
use Grav\Common\Data;
|
||||
use Grav\Common\Page\Interfaces\PageInterface;
|
||||
use Grav\Common\Page\Media;
|
||||
use Grav\Common\Page\Medium\ImageMedium;
|
||||
use Grav\Common\Page\Medium\Medium;
|
||||
use Grav\Common\Page\Page;
|
||||
use Grav\Common\Page\Pages;
|
||||
use Grav\Common\Page\Collection;
|
||||
use Grav\Common\Security;
|
||||
use Grav\Common\User\Interfaces\UserCollectionInterface;
|
||||
use Grav\Common\User\User;
|
||||
use Grav\Common\Utils;
|
||||
use Grav\Plugin\Login\TwoFactorAuth\TwoFactorAuth;
|
||||
@@ -95,7 +98,6 @@ class AdminController extends AdminBaseController
|
||||
}
|
||||
|
||||
/**
|
||||
* @param null $secret
|
||||
* @return bool
|
||||
*/
|
||||
public function taskRegenerate2FASecret()
|
||||
@@ -116,14 +118,14 @@ class AdminController extends AdminBaseController
|
||||
// Save secret into the user file.
|
||||
$file = $user->file();
|
||||
if ($file->exists()) {
|
||||
$content = $file->content();
|
||||
$content = (array)$file->content();
|
||||
$content['twofa_secret'] = $secret;
|
||||
$file->save($content);
|
||||
$file->free();
|
||||
}
|
||||
|
||||
// Change secret in the session.
|
||||
$user->twofa_secret = $secret;
|
||||
$user->set('twofa_secret', $secret);
|
||||
|
||||
$this->admin->json_response = ['status' => 'success', 'image' => $image, 'secret' => preg_replace('|(\w{4})|', '\\1 ', $secret)];
|
||||
} catch (\Exception $e) {
|
||||
@@ -144,13 +146,16 @@ class AdminController extends AdminBaseController
|
||||
$data = $this->data;
|
||||
|
||||
if (isset($data['password'])) {
|
||||
/** @var UserCollectionInterface $users */
|
||||
$users = $this->grav['users'];
|
||||
|
||||
$username = isset($data['username']) ? strip_tags(strtolower($data['username'])) : null;
|
||||
$user = $username ? User::load($username) : null;
|
||||
$user = $username ? $users->load($username) : null;
|
||||
$password = $data['password'] ?? null;
|
||||
$token = $data['token'] ?? null;
|
||||
|
||||
if ($user && $user->exists() && !empty($user->reset)) {
|
||||
list($good_token, $expire) = explode('::', $user->reset);
|
||||
if ($user && $user->exists() && !empty($user->get('reset'))) {
|
||||
list($good_token, $expire) = explode('::', $user->get('reset'));
|
||||
|
||||
if ($good_token === $token) {
|
||||
if (time() > $expire) {
|
||||
@@ -160,8 +165,9 @@ class AdminController extends AdminBaseController
|
||||
return true;
|
||||
}
|
||||
|
||||
unset($user->hashed_password, $user->reset);
|
||||
$user->password = $password;
|
||||
$user->undef('hashed_password');
|
||||
$user->undef('reset');
|
||||
$user->set('password', $password);
|
||||
|
||||
$user->validate();
|
||||
$user->filter();
|
||||
@@ -210,8 +216,11 @@ class AdminController extends AdminBaseController
|
||||
$data = $this->data;
|
||||
$login = $this->grav['login'];
|
||||
|
||||
/** @var UserCollectionInterface $users */
|
||||
$users = $this->grav['users'];
|
||||
|
||||
$username = isset($data['username']) ? strip_tags(strtolower($data['username'])) : '';
|
||||
$user = !empty($username) ? User::load($username) : null;
|
||||
$user = !empty($username) ? $users->load($username) : null;
|
||||
|
||||
if (!isset($this->grav['Email'])) {
|
||||
$this->admin->setMessage($this->admin::translate('PLUGIN_ADMIN.FORGOT_EMAIL_NOT_CONFIGURED'), 'error');
|
||||
@@ -249,7 +258,7 @@ class AdminController extends AdminBaseController
|
||||
$token = md5(uniqid(mt_rand(), true));
|
||||
$expire = time() + 604800; // next week
|
||||
|
||||
$user->reset = $token . '::' . $expire;
|
||||
$user->set('reset', $token . '::' . $expire);
|
||||
$user->save();
|
||||
|
||||
$author = $this->grav['config']->get('site.author.name', '');
|
||||
@@ -504,7 +513,7 @@ class AdminController extends AdminBaseController
|
||||
/**
|
||||
* Get the next available ordering number in a folder
|
||||
*
|
||||
* @param $path
|
||||
* @param string $path
|
||||
*
|
||||
* @return string the correct order string to prepend
|
||||
*/
|
||||
@@ -675,9 +684,12 @@ class AdminController extends AdminBaseController
|
||||
|
||||
if ($this->view === 'user') {
|
||||
if ($obj->username === $this->grav['user']->username) {
|
||||
/** @var UserCollectionInterface $users */
|
||||
$users = $this->grav['users'];
|
||||
|
||||
//Editing current user. Reload user object
|
||||
unset($this->grav['user']->avatar);
|
||||
$this->grav['user']->merge(User::load($this->admin->route)->toArray());
|
||||
$this->grav['user']->merge($users->load($this->admin->route)->toArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -830,19 +842,16 @@ class AdminController extends AdminBaseController
|
||||
}
|
||||
|
||||
// do we need to force a reload
|
||||
$refresh = $this->data['refresh'] === 'true' ? true : false;
|
||||
$refresh = $this->data['refresh'] === 'true';
|
||||
$filter = $this->data['filter'] ?? '';
|
||||
|
||||
if (!empty($filter)) {
|
||||
$filter_types = array_map('trim', explode(',', $filter));
|
||||
}
|
||||
$filter_types = !empty($filter) ? array_map('trim', explode(',', $filter)) : [];
|
||||
|
||||
try {
|
||||
$notifications = $this->admin->getNotifications($refresh);
|
||||
$notification_data = [];
|
||||
|
||||
foreach ($notifications as $type => $type_notifications) {
|
||||
if (empty($filter) || in_array($type, $filter_types)) {
|
||||
if ($filter_types && in_array($type, $filter_types, true)) {
|
||||
$twig_template = 'partials/notification-' . $type . '-block.html.twig';
|
||||
$notification_data[$type] = $this->grav['twig']->processTemplate($twig_template, ['notifications' => $type_notifications]);
|
||||
}
|
||||
@@ -1347,7 +1356,7 @@ class AdminController extends AdminBaseController
|
||||
if ($page) {
|
||||
$child_type = $page->childType();
|
||||
|
||||
if (isset($child_type)) {
|
||||
if ($child_type !== '') {
|
||||
$this->admin->json_response = [
|
||||
'status' => 'success',
|
||||
'child_type' => $child_type
|
||||
@@ -1511,7 +1520,7 @@ class AdminController extends AdminBaseController
|
||||
$media_list = [];
|
||||
/**
|
||||
* @var string $name
|
||||
* @var Medium $medium
|
||||
* @var Medium|ImageMedium $medium
|
||||
*/
|
||||
foreach ($media->all() as $name => $medium) {
|
||||
|
||||
@@ -1522,13 +1531,14 @@ class AdminController extends AdminBaseController
|
||||
}
|
||||
|
||||
// Get original name
|
||||
$source = $medium->higherQualityAlternative();
|
||||
/** @var ImageMedium $source */
|
||||
$source = method_exists($medium, 'higherQualityAlternative') ? $medium->higherQualityAlternative() : null;
|
||||
|
||||
$media_list[$name] = [
|
||||
'url' => $medium->display($medium->get('extension') === 'svg' ? 'source' : 'thumbnail')->cropZoom(400, 300)->url(),
|
||||
'size' => $medium->get('size'),
|
||||
'metadata' => $metadata,
|
||||
'original' => $source->get('filename')
|
||||
'original' => $source ? $source->get('filename') : null
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1577,7 +1587,7 @@ class AdminController extends AdminBaseController
|
||||
/** @var Config $config */
|
||||
$config = $this->grav['config'];
|
||||
|
||||
if (!isset($_FILES) || empty($_FILES)) {
|
||||
if (empty($_FILES)) {
|
||||
$this->admin->json_response = [
|
||||
'status' => 'error',
|
||||
'message' => $this->admin::translate('PLUGIN_ADMIN.EXCEEDED_POSTMAX_LIMIT')
|
||||
@@ -1681,7 +1691,7 @@ class AdminController extends AdminBaseController
|
||||
|
||||
/** @var UniformResourceLocator $locator */
|
||||
$locator = $this->grav['locator'];
|
||||
$path = $media->path();
|
||||
$path = $media->getPath();
|
||||
if ($locator->isStream($path)) {
|
||||
$path = $locator->findResource($path, true, true);
|
||||
}
|
||||
@@ -1763,7 +1773,7 @@ class AdminController extends AdminBaseController
|
||||
/** @var UniformResourceLocator $locator */
|
||||
$locator = $this->grav['locator'];
|
||||
|
||||
$targetPath = $media->path() . '/' . $filename;
|
||||
$targetPath = $media->getPath() . '/' . $filename;
|
||||
if ($locator->isStream($targetPath)) {
|
||||
$targetPath = $locator->findResource($targetPath, true, true);
|
||||
}
|
||||
@@ -1786,10 +1796,10 @@ class AdminController extends AdminBaseController
|
||||
}
|
||||
|
||||
// Remove Extra Files
|
||||
foreach (scandir($media->path(), SCANDIR_SORT_NONE) as $file) {
|
||||
foreach (scandir($media->getPath(), SCANDIR_SORT_NONE) as $file) {
|
||||
if (preg_match("/{$fileParts['filename']}@\d+x\.{$fileParts['extension']}(?:\.meta\.yaml)?$|{$filename}\.meta\.yaml$/", $file)) {
|
||||
|
||||
$targetPath = $media->path() . '/' . $file;
|
||||
$targetPath = $media->getPath() . '/' . $file;
|
||||
if ($locator->isStream($targetPath)) {
|
||||
$targetPath = $locator->findResource($targetPath, true, true);
|
||||
}
|
||||
@@ -1940,7 +1950,7 @@ class AdminController extends AdminBaseController
|
||||
});
|
||||
}
|
||||
$page->header((object)$header);
|
||||
$page->frontmatter(Yaml::dump((array)$page->header()), 20);
|
||||
$page->frontmatter(Yaml::dump((array)$page->header(), 20));
|
||||
}
|
||||
// Fill content last because it also renders the output.
|
||||
if (isset($input['content'])) {
|
||||
|
||||
@@ -27,9 +27,6 @@ class Gpm
|
||||
{
|
||||
if (!static::$GPM) {
|
||||
static::$GPM = new GravGPM();
|
||||
if (method_exists('GravGPM', 'loadRemoteGrav')) {
|
||||
static::$GPM->loadRemoteGrav();
|
||||
}
|
||||
}
|
||||
|
||||
return static::$GPM;
|
||||
@@ -53,7 +50,7 @@ class Gpm
|
||||
* @param Package[]|string[]|string $packages
|
||||
* @param array $options
|
||||
*
|
||||
* @return bool
|
||||
* @return string|bool
|
||||
*/
|
||||
public static function install($packages, array $options)
|
||||
{
|
||||
@@ -128,7 +125,7 @@ class Gpm
|
||||
* @param Package[]|string[]|string $packages
|
||||
* @param array $options
|
||||
*
|
||||
* @return bool
|
||||
* @return string|bool
|
||||
*/
|
||||
public static function update($packages, array $options)
|
||||
{
|
||||
@@ -141,7 +138,7 @@ class Gpm
|
||||
* @param Package[]|string[]|string $packages
|
||||
* @param array $options
|
||||
*
|
||||
* @return bool
|
||||
* @return string|bool
|
||||
*/
|
||||
public static function uninstall($packages, array $options)
|
||||
{
|
||||
@@ -199,9 +196,9 @@ class Gpm
|
||||
/**
|
||||
* Direct install a file
|
||||
*
|
||||
* @param $package_file
|
||||
* @param string $package_file
|
||||
*
|
||||
* @return bool
|
||||
* @return string|bool
|
||||
*/
|
||||
public static function directInstall($package_file)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use Grav\Common\Config\Config;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\User\User;
|
||||
use Grav\Common\User\Interfaces\UserCollectionInterface;
|
||||
use Grav\Common\User\Interfaces\UserInterface;
|
||||
|
||||
/**
|
||||
* Admin utils class
|
||||
@@ -14,26 +16,18 @@ class Utils
|
||||
/**
|
||||
* Matches an email to a user
|
||||
*
|
||||
* @param $email
|
||||
* @param string $email
|
||||
*
|
||||
* @return User
|
||||
* @return UserInterface
|
||||
*/
|
||||
public static function findUserByEmail($email)
|
||||
public static function findUserByEmail(string $email)
|
||||
{
|
||||
$account_dir = Grav::instance()['locator']->findResource('account://');
|
||||
$files = array_diff(scandir($account_dir, SCANDIR_SORT_ASCENDING), ['.', '..']);
|
||||
$grav = Grav::instance();
|
||||
|
||||
foreach ($files as $file) {
|
||||
if (strpos($file, '.yaml') !== false) {
|
||||
$user = User::load(trim(substr($file, 0, -5)));
|
||||
if ($user['email'] === $email) {
|
||||
return $user;
|
||||
}
|
||||
}
|
||||
}
|
||||
/** @var UserCollectionInterface $users */
|
||||
$users = $grav['users'];
|
||||
|
||||
// If a User with the provided email cannot be found, then load user with that email as the username
|
||||
return User::load($email);
|
||||
return $users->find($email, ['email']);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -42,7 +36,7 @@ class Utils
|
||||
* @param string $str
|
||||
* @return string
|
||||
*/
|
||||
public static function slug($str)
|
||||
public static function slug(string $str)
|
||||
{
|
||||
if (function_exists('transliterator_transliterate')) {
|
||||
$str = transliterator_transliterate('Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove;', $str);
|
||||
|
||||
@@ -33,6 +33,12 @@
|
||||
"symfony/finder": "~4.1",
|
||||
"symfony/event-dispatcher": "~4.1"
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"classes/",
|
||||
"admin.php"
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "7.1.3"
|
||||
|
||||
@@ -1 +1 @@
|
||||
<img src="{{ admin.user.avatarUrl() }}?s=47" />
|
||||
<img src="{{ admin.user.getAvatarUrl() }}?s=47" />
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{% if data.avatar %}
|
||||
<label><img src="{{ data.avatarUrl }}" /></label>
|
||||
<label><img src="{{ data.getAvatarUrl() }}" /></label>
|
||||
{% else %}
|
||||
<label><img referrerpolicy="no-referrer" src="https://www.gravatar.com/avatar/{{ data.email|md5 }}?s=200" /></label>
|
||||
{% endif %}
|
||||
4
vendor/composer/ClassLoader.php
vendored
4
vendor/composer/ClassLoader.php
vendored
@@ -279,7 +279,7 @@ class ClassLoader
|
||||
*/
|
||||
public function setApcuPrefix($apcuPrefix)
|
||||
{
|
||||
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
|
||||
$this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -377,7 +377,7 @@ class ClassLoader
|
||||
$subPath = $class;
|
||||
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||
$subPath = substr($subPath, 0, $lastPos);
|
||||
$search = $subPath . '\\';
|
||||
$search = $subPath.'\\';
|
||||
if (isset($this->prefixDirsPsr4[$search])) {
|
||||
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
||||
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||
|
||||
9
vendor/composer/autoload_classmap.php
vendored
9
vendor/composer/autoload_classmap.php
vendored
@@ -6,4 +6,13 @@ $vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'Grav\\Plugin\\AdminPlugin' => $baseDir . '/admin.php',
|
||||
'Grav\\Plugin\\Admin\\Admin' => $baseDir . '/classes/admin.php',
|
||||
'Grav\\Plugin\\Admin\\AdminBaseController' => $baseDir . '/classes/adminbasecontroller.php',
|
||||
'Grav\\Plugin\\Admin\\AdminController' => $baseDir . '/classes/admincontroller.php',
|
||||
'Grav\\Plugin\\Admin\\Gpm' => $baseDir . '/classes/gpm.php',
|
||||
'Grav\\Plugin\\Admin\\Popularity' => $baseDir . '/classes/popularity.php',
|
||||
'Grav\\Plugin\\Admin\\Themes' => $baseDir . '/classes/themes.php',
|
||||
'Grav\\Plugin\\Admin\\Twig\\AdminTwigExtension' => $baseDir . '/classes/Twig/AdminTwigExtension.php',
|
||||
'Grav\\Plugin\\Admin\\Utils' => $baseDir . '/classes/utils.php',
|
||||
);
|
||||
|
||||
13
vendor/composer/autoload_static.php
vendored
13
vendor/composer/autoload_static.php
vendored
@@ -38,12 +38,25 @@ class ComposerStaticInitda370287ab6d5b8a28188afe08f659c5
|
||||
),
|
||||
);
|
||||
|
||||
public static $classMap = array (
|
||||
'Grav\\Plugin\\AdminPlugin' => __DIR__ . '/../..' . '/admin.php',
|
||||
'Grav\\Plugin\\Admin\\Admin' => __DIR__ . '/../..' . '/classes/admin.php',
|
||||
'Grav\\Plugin\\Admin\\AdminBaseController' => __DIR__ . '/../..' . '/classes/adminbasecontroller.php',
|
||||
'Grav\\Plugin\\Admin\\AdminController' => __DIR__ . '/../..' . '/classes/admincontroller.php',
|
||||
'Grav\\Plugin\\Admin\\Gpm' => __DIR__ . '/../..' . '/classes/gpm.php',
|
||||
'Grav\\Plugin\\Admin\\Popularity' => __DIR__ . '/../..' . '/classes/popularity.php',
|
||||
'Grav\\Plugin\\Admin\\Themes' => __DIR__ . '/../..' . '/classes/themes.php',
|
||||
'Grav\\Plugin\\Admin\\Twig\\AdminTwigExtension' => __DIR__ . '/../..' . '/classes/Twig/AdminTwigExtension.php',
|
||||
'Grav\\Plugin\\Admin\\Utils' => __DIR__ . '/../..' . '/classes/utils.php',
|
||||
);
|
||||
|
||||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInitda370287ab6d5b8a28188afe08f659c5::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInitda370287ab6d5b8a28188afe08f659c5::$prefixDirsPsr4;
|
||||
$loader->prefixesPsr0 = ComposerStaticInitda370287ab6d5b8a28188afe08f659c5::$prefixesPsr0;
|
||||
$loader->classMap = ComposerStaticInitda370287ab6d5b8a28188afe08f659c5::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user