mirror of
https://github.com/slawkens/myaac.git
synced 2025-09-14 12:33:35 +02:00
Compare commits
37 Commits
v1.6
...
feature/pl
Author | SHA1 | Date | |
---|---|---|---|
![]() |
7c49c16215 | ||
![]() |
1c6bb2eb8d | ||
![]() |
e91b44f036 | ||
![]() |
b329da52aa | ||
![]() |
c720ccc451 | ||
![]() |
8dc42b6544 | ||
![]() |
dca904e61d | ||
![]() |
29faa4f695 | ||
![]() |
4767120043 | ||
![]() |
9a90e4aae2 | ||
![]() |
ba4ed6a04b | ||
![]() |
a7efacdbac | ||
![]() |
577037becc | ||
![]() |
b8abc11b96 | ||
![]() |
4def6a6cae | ||
![]() |
e6100a1b72 | ||
![]() |
522f6c11d8 | ||
![]() |
00c3635c5f | ||
![]() |
c074a48f24 | ||
![]() |
e222957893 | ||
![]() |
d423ddd07a | ||
![]() |
4d4f7759d3 | ||
![]() |
9510640ba9 | ||
![]() |
98b13c91a4 | ||
![]() |
0c95bcfd06 | ||
![]() |
524e982a0e | ||
![]() |
fffb427eae | ||
![]() |
10cd71a663 | ||
![]() |
0812fe025d | ||
![]() |
309c1fb715 | ||
![]() |
8d29fdb98b | ||
![]() |
f782850307 | ||
![]() |
835dda9659 | ||
![]() |
dcc703b1eb | ||
![]() |
9d8e9d27bd | ||
![]() |
db09980de1 | ||
![]() |
2dba778167 |
@@ -1,5 +1,18 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [1.6.1 - 11.06.2025]
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Fixed "Request has been cancelled due to security reasons", cause of missing csrf() in twig files (https://github.com/slawkens/myaac/commit/10cd71a6630ffec91b43a26a6d685b66c5836a6a)
|
||||||
|
* Fix: Ignore duplicated route exception (https://github.com/slawkens/myaac/commit/9d8e9d27bd87167d8d4005942a6af62bfe4c0892)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
* Move counter & visitors code before router (In case someone wants to include that info on page) (https://github.com/slawkens/myaac/commit/f78285030708ad3c74ab048711f73bbf3ee5281e)
|
||||||
|
* Set TinyMCE license key to gpl (Avoid warning message in browser console) (https://github.com/slawkens/myaac/commit/8d29fdb98b92dbc3d2853ef88a185c67036b4a77)
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
* Remove deprecated TinyMCE plugin - template (https://github.com/slawkens/myaac/commit/309c1fb715b882e67cb673b1544a03befbf64a22)
|
||||||
|
|
||||||
## [1.6 - 03.06.2025]
|
## [1.6 - 03.06.2025]
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
@@ -51,6 +51,56 @@ else {
|
|||||||
} else {
|
} else {
|
||||||
error('Error while disabling plugin ' . $disable . ': ' . Plugins::getError());
|
error('Error while disabling plugin ' . $disable . ': ' . Plugins::getError());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else if (isset($_GET['check-updates'])) {
|
||||||
|
$repoUri = $config['admin_plugins_api_uri'] ?? 'https://plugins.my-aac.org/api/';
|
||||||
|
success("Fetching latest info from $repoUri..");
|
||||||
|
|
||||||
|
$adminPlugins = new \MyAAC\Admin\Plugins();
|
||||||
|
|
||||||
|
$adminPlugins->setApiBaseUri($repoUri);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$plugins = $adminPlugins->getLatestVersions();
|
||||||
|
}
|
||||||
|
catch (Exception $e) {
|
||||||
|
error($e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($plugins) && count($plugins) > 0) {
|
||||||
|
$outdated = [];
|
||||||
|
|
||||||
|
foreach (get_plugins(true) as $plugin) {
|
||||||
|
$string = file_get_contents(BASE . 'plugins/' . $plugin . '.json');
|
||||||
|
$plugin_info = json_decode($string, true);
|
||||||
|
|
||||||
|
if (!$plugin_info) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$disabled = (str_contains($plugin, 'disabled.'));
|
||||||
|
$pluginOriginal = ($disabled ? str_replace('disabled.', '', $plugin) : $plugin);
|
||||||
|
|
||||||
|
$info = $plugins[$pluginOriginal] ?? false;
|
||||||
|
if ($info && version_compare($info['version'], $plugin_info['version'], '>')) {
|
||||||
|
$outdated[] = [
|
||||||
|
'name' => $pluginOriginal,
|
||||||
|
'yourVersion' => $plugin_info['version'],
|
||||||
|
'latestVersion' => $info['version'],
|
||||||
|
'link' => $info['link'] ?? 'Unknown',
|
||||||
|
'download_link' => $info['download_link'] ?? 'Unknown',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($outdated) > 0) {
|
||||||
|
info('Following updates have been found for your plugins:');
|
||||||
|
$twig->display('admin.plugins.outdated.html.twig', ['plugins' => $outdated]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
success('All plugins up to date!');
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (isset($_FILES['plugin']['name'])) {
|
} else if (isset($_FILES['plugin']['name'])) {
|
||||||
$file = $_FILES['plugin'];
|
$file = $_FILES['plugin'];
|
||||||
$filename = $file['name'];
|
$filename = $file['name'];
|
||||||
|
@@ -19,8 +19,7 @@ $use_datatable = true;
|
|||||||
|
|
||||||
if (!setting('core.visitors_counter')): ?>
|
if (!setting('core.visitors_counter')): ?>
|
||||||
Visitors counter is disabled.<br/>
|
Visitors counter is disabled.<br/>
|
||||||
You can enable it by editing this configurable in <b>config.local.php</b> file:<br/>
|
You can enable it in Settings -> General -> Visitors Counter.<br/>
|
||||||
<p style="margin-left: 3em;"><b>$config['visitors_counter'] = true;</b></p>
|
|
||||||
<?php
|
<?php
|
||||||
return;
|
return;
|
||||||
endif;
|
endif;
|
||||||
@@ -46,7 +45,7 @@ foreach ($tmp as &$visitor) {
|
|||||||
if ($dd->isBot()) {
|
if ($dd->isBot()) {
|
||||||
$bot = $dd->getBot();
|
$bot = $dd->getBot();
|
||||||
$message = '(Bot) %s, <a href="%s" target="_blank">%s</a>';
|
$message = '(Bot) %s, <a href="%s" target="_blank">%s</a>';
|
||||||
$browser = sprintf($message, $bot['category'], $bot['url'], $bot['name']);
|
$browser = sprintf($message, $bot['category'] ?? 'Unknown', $bot['url'] ?? '', $bot['name'] ?? 'Unknown name');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$osFamily = OperatingSystem::getOsFamily($dd->getOs('name'));
|
$osFamily = OperatingSystem::getOsFamily($dd->getOs('name'));
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use MyAAC\Hooks;
|
|
||||||
use MyAAC\Settings;
|
use MyAAC\Settings;
|
||||||
|
|
||||||
const MYAAC_ADMIN = true;
|
const MYAAC_ADMIN = true;
|
||||||
|
@@ -26,7 +26,7 @@
|
|||||||
if (version_compare(phpversion(), '8.1', '<')) die('PHP version 8.1 or higher is required.');
|
if (version_compare(phpversion(), '8.1', '<')) die('PHP version 8.1 or higher is required.');
|
||||||
|
|
||||||
const MYAAC = true;
|
const MYAAC = true;
|
||||||
const MYAAC_VERSION = '1.6';
|
const MYAAC_VERSION = '1.6.1';
|
||||||
const DATABASE_VERSION = 45;
|
const DATABASE_VERSION = 45;
|
||||||
const TABLE_PREFIX = 'myaac_';
|
const TABLE_PREFIX = 'myaac_';
|
||||||
define('START_TIME', microtime(true));
|
define('START_TIME', microtime(true));
|
||||||
|
@@ -18,7 +18,8 @@
|
|||||||
"symfony/string": "^6.4",
|
"symfony/string": "^6.4",
|
||||||
"symfony/var-dumper": "^6.4",
|
"symfony/var-dumper": "^6.4",
|
||||||
"filp/whoops": "^2.15",
|
"filp/whoops": "^2.15",
|
||||||
"maximebf/debugbar": "1.*"
|
"maximebf/debugbar": "1.*",
|
||||||
|
"guzzlehttp/guzzle": "7.9.3"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpstan/phpstan": "^1.10"
|
"phpstan/phpstan": "^1.10"
|
||||||
|
537
composer.lock
generated
537
composer.lock
generated
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "be4d1489a53a9cd8eec6bcaa7a096f30",
|
"content-hash": "5317e97a5025ebc2a977214bd3fa964c",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "brick/math",
|
"name": "brick/math",
|
||||||
@@ -493,6 +493,331 @@
|
|||||||
],
|
],
|
||||||
"time": "2024-09-25T12:00:00+00:00"
|
"time": "2024-09-25T12:00:00+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "guzzlehttp/guzzle",
|
||||||
|
"version": "7.9.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/guzzle/guzzle.git",
|
||||||
|
"reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
|
||||||
|
"reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-json": "*",
|
||||||
|
"guzzlehttp/promises": "^1.5.3 || ^2.0.3",
|
||||||
|
"guzzlehttp/psr7": "^2.7.0",
|
||||||
|
"php": "^7.2.5 || ^8.0",
|
||||||
|
"psr/http-client": "^1.0",
|
||||||
|
"symfony/deprecation-contracts": "^2.2 || ^3.0"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"psr/http-client-implementation": "1.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"bamarni/composer-bin-plugin": "^1.8.2",
|
||||||
|
"ext-curl": "*",
|
||||||
|
"guzzle/client-integration-tests": "3.0.2",
|
||||||
|
"php-http/message-factory": "^1.1",
|
||||||
|
"phpunit/phpunit": "^8.5.39 || ^9.6.20",
|
||||||
|
"psr/log": "^1.1 || ^2.0 || ^3.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"ext-curl": "Required for CURL handler support",
|
||||||
|
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
|
||||||
|
"psr/log": "Required for using the Log middleware"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"bamarni-bin": {
|
||||||
|
"bin-links": true,
|
||||||
|
"forward-command": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/functions_include.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"GuzzleHttp\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Graham Campbell",
|
||||||
|
"email": "hello@gjcampbell.co.uk",
|
||||||
|
"homepage": "https://github.com/GrahamCampbell"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Michael Dowling",
|
||||||
|
"email": "mtdowling@gmail.com",
|
||||||
|
"homepage": "https://github.com/mtdowling"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jeremy Lindblom",
|
||||||
|
"email": "jeremeamia@gmail.com",
|
||||||
|
"homepage": "https://github.com/jeremeamia"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "George Mponos",
|
||||||
|
"email": "gmponos@gmail.com",
|
||||||
|
"homepage": "https://github.com/gmponos"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Tobias Nyholm",
|
||||||
|
"email": "tobias.nyholm@gmail.com",
|
||||||
|
"homepage": "https://github.com/Nyholm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Márk Sági-Kazár",
|
||||||
|
"email": "mark.sagikazar@gmail.com",
|
||||||
|
"homepage": "https://github.com/sagikazarmark"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Tobias Schultze",
|
||||||
|
"email": "webmaster@tubo-world.de",
|
||||||
|
"homepage": "https://github.com/Tobion"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Guzzle is a PHP HTTP client library",
|
||||||
|
"keywords": [
|
||||||
|
"client",
|
||||||
|
"curl",
|
||||||
|
"framework",
|
||||||
|
"http",
|
||||||
|
"http client",
|
||||||
|
"psr-18",
|
||||||
|
"psr-7",
|
||||||
|
"rest",
|
||||||
|
"web service"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/guzzle/guzzle/issues",
|
||||||
|
"source": "https://github.com/guzzle/guzzle/tree/7.9.3"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/GrahamCampbell",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/Nyholm",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-03-27T13:37:11+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "guzzlehttp/promises",
|
||||||
|
"version": "2.2.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/guzzle/promises.git",
|
||||||
|
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c",
|
||||||
|
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.2.5 || ^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"bamarni/composer-bin-plugin": "^1.8.2",
|
||||||
|
"phpunit/phpunit": "^8.5.39 || ^9.6.20"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"bamarni-bin": {
|
||||||
|
"bin-links": true,
|
||||||
|
"forward-command": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"GuzzleHttp\\Promise\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Graham Campbell",
|
||||||
|
"email": "hello@gjcampbell.co.uk",
|
||||||
|
"homepage": "https://github.com/GrahamCampbell"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Michael Dowling",
|
||||||
|
"email": "mtdowling@gmail.com",
|
||||||
|
"homepage": "https://github.com/mtdowling"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Tobias Nyholm",
|
||||||
|
"email": "tobias.nyholm@gmail.com",
|
||||||
|
"homepage": "https://github.com/Nyholm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Tobias Schultze",
|
||||||
|
"email": "webmaster@tubo-world.de",
|
||||||
|
"homepage": "https://github.com/Tobion"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Guzzle promises library",
|
||||||
|
"keywords": [
|
||||||
|
"promise"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/guzzle/promises/issues",
|
||||||
|
"source": "https://github.com/guzzle/promises/tree/2.2.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/GrahamCampbell",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/Nyholm",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-03-27T13:27:01+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "guzzlehttp/psr7",
|
||||||
|
"version": "2.7.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/guzzle/psr7.git",
|
||||||
|
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16",
|
||||||
|
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.2.5 || ^8.0",
|
||||||
|
"psr/http-factory": "^1.0",
|
||||||
|
"psr/http-message": "^1.1 || ^2.0",
|
||||||
|
"ralouphie/getallheaders": "^3.0"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"psr/http-factory-implementation": "1.0",
|
||||||
|
"psr/http-message-implementation": "1.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"bamarni/composer-bin-plugin": "^1.8.2",
|
||||||
|
"http-interop/http-factory-tests": "0.9.0",
|
||||||
|
"phpunit/phpunit": "^8.5.39 || ^9.6.20"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"bamarni-bin": {
|
||||||
|
"bin-links": true,
|
||||||
|
"forward-command": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"GuzzleHttp\\Psr7\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Graham Campbell",
|
||||||
|
"email": "hello@gjcampbell.co.uk",
|
||||||
|
"homepage": "https://github.com/GrahamCampbell"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Michael Dowling",
|
||||||
|
"email": "mtdowling@gmail.com",
|
||||||
|
"homepage": "https://github.com/mtdowling"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "George Mponos",
|
||||||
|
"email": "gmponos@gmail.com",
|
||||||
|
"homepage": "https://github.com/gmponos"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Tobias Nyholm",
|
||||||
|
"email": "tobias.nyholm@gmail.com",
|
||||||
|
"homepage": "https://github.com/Nyholm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Márk Sági-Kazár",
|
||||||
|
"email": "mark.sagikazar@gmail.com",
|
||||||
|
"homepage": "https://github.com/sagikazarmark"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Tobias Schultze",
|
||||||
|
"email": "webmaster@tubo-world.de",
|
||||||
|
"homepage": "https://github.com/Tobion"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Márk Sági-Kazár",
|
||||||
|
"email": "mark.sagikazar@gmail.com",
|
||||||
|
"homepage": "https://sagikazarmark.hu"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PSR-7 message implementation that also provides common utility methods",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"message",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response",
|
||||||
|
"stream",
|
||||||
|
"uri",
|
||||||
|
"url"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/guzzle/psr7/issues",
|
||||||
|
"source": "https://github.com/guzzle/psr7/tree/2.7.1"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/GrahamCampbell",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/Nyholm",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-03-27T12:30:47+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "illuminate/collections",
|
"name": "illuminate/collections",
|
||||||
"version": "v10.48.25",
|
"version": "v10.48.25",
|
||||||
@@ -1472,6 +1797,166 @@
|
|||||||
},
|
},
|
||||||
"time": "2021-11-05T16:47:00+00:00"
|
"time": "2021-11-05T16:47:00+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-client",
|
||||||
|
"version": "1.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-client.git",
|
||||||
|
"reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
|
||||||
|
"reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.0 || ^8.0",
|
||||||
|
"psr/http-message": "^1.0 || ^2.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Client\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for HTTP clients",
|
||||||
|
"homepage": "https://github.com/php-fig/http-client",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"http-client",
|
||||||
|
"psr",
|
||||||
|
"psr-18"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/php-fig/http-client"
|
||||||
|
},
|
||||||
|
"time": "2023-09-23T14:17:50+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-factory",
|
||||||
|
"version": "1.1.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-factory.git",
|
||||||
|
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||||
|
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.1",
|
||||||
|
"psr/http-message": "^1.0 || ^2.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Message\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
|
||||||
|
"keywords": [
|
||||||
|
"factory",
|
||||||
|
"http",
|
||||||
|
"message",
|
||||||
|
"psr",
|
||||||
|
"psr-17",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/php-fig/http-factory"
|
||||||
|
},
|
||||||
|
"time": "2024-04-15T12:06:14+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-message",
|
||||||
|
"version": "2.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-message.git",
|
||||||
|
"reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
|
||||||
|
"reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.2 || ^8.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Message\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "https://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for HTTP messages",
|
||||||
|
"homepage": "https://github.com/php-fig/http-message",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"http-message",
|
||||||
|
"psr",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/php-fig/http-message/tree/2.0"
|
||||||
|
},
|
||||||
|
"time": "2023-04-04T09:54:51+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/log",
|
"name": "psr/log",
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
@@ -1573,6 +2058,50 @@
|
|||||||
},
|
},
|
||||||
"time": "2021-10-29T13:26:27+00:00"
|
"time": "2021-10-29T13:26:27+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "ralouphie/getallheaders",
|
||||||
|
"version": "3.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/ralouphie/getallheaders.git",
|
||||||
|
"reference": "120b605dfeb996808c31b6477290a714d356e822"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
|
||||||
|
"reference": "120b605dfeb996808c31b6477290a714d356e822",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.6"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"php-coveralls/php-coveralls": "^2.1",
|
||||||
|
"phpunit/phpunit": "^5 || ^6.5"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/getallheaders.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Ralph Khattar",
|
||||||
|
"email": "ralph.khattar@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A polyfill for getallheaders.",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/ralouphie/getallheaders/issues",
|
||||||
|
"source": "https://github.com/ralouphie/getallheaders/tree/develop"
|
||||||
|
},
|
||||||
|
"time": "2019-03-08T08:55:37+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v6.4.17",
|
"version": "v6.4.17",
|
||||||
@@ -2910,7 +3439,7 @@
|
|||||||
],
|
],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"stability-flags": [],
|
"stability-flags": {},
|
||||||
"prefer-stable": false,
|
"prefer-stable": false,
|
||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
"platform": {
|
"platform": {
|
||||||
@@ -2921,6 +3450,6 @@
|
|||||||
"ext-xml": "*",
|
"ext-xml": "*",
|
||||||
"ext-dom": "*"
|
"ext-dom": "*"
|
||||||
},
|
},
|
||||||
"platform-dev": [],
|
"platform-dev": {},
|
||||||
"plugin-api-version": "2.3.0"
|
"plugin-api-version": "2.6.0"
|
||||||
}
|
}
|
||||||
|
BIN
images/order_asc.gif
Normal file
BIN
images/order_asc.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 56 B |
BIN
images/order_desc.gif
Normal file
BIN
images/order_desc.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 56 B |
16
index.php
16
index.php
@@ -93,6 +93,7 @@ if(setting('core.backward_support')) {
|
|||||||
if($logged && $account_logged)
|
if($logged && $account_logged)
|
||||||
$group_id_of_acc_logged = $account_logged->getGroupId();
|
$group_id_of_acc_logged = $account_logged->getGroupId();
|
||||||
|
|
||||||
|
$config['serverPath'] = $config['server_path'];
|
||||||
$config['site'] = &$config;
|
$config['site'] = &$config;
|
||||||
$config['server'] = &$config['lua'];
|
$config['server'] = &$config['lua'];
|
||||||
$config['site']['shop_system'] = setting('core.gifts_system');
|
$config['site']['shop_system'] = setting('core.gifts_system');
|
||||||
@@ -117,6 +118,14 @@ if(setting('core.backward_support')) {
|
|||||||
$config['status']['serverStatus_' . $key] = $value;
|
$config['status']['serverStatus_' . $key] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(setting('core.views_counter')) {
|
||||||
|
require_once SYSTEM . 'counter.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
if(setting('core.visitors_counter')) {
|
||||||
|
$visitors = new Visitors(setting('core.visitors_counter_ttl'));
|
||||||
|
}
|
||||||
|
|
||||||
require_once SYSTEM . 'router.php';
|
require_once SYSTEM . 'router.php';
|
||||||
|
|
||||||
// anonymous usage statistics
|
// anonymous usage statistics
|
||||||
@@ -153,13 +162,6 @@ if(setting('core.anonymous_usage_statistics')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(setting('core.views_counter'))
|
|
||||||
require_once SYSTEM . 'counter.php';
|
|
||||||
|
|
||||||
if(setting('core.visitors_counter')) {
|
|
||||||
$visitors = new Visitors(setting('core.visitors_counter_ttl'));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var OTS_Account $account_logged
|
* @var OTS_Account $account_logged
|
||||||
*/
|
*/
|
||||||
|
@@ -88,8 +88,8 @@ switch ($action) {
|
|||||||
case 'boostedcreature':
|
case 'boostedcreature':
|
||||||
$clientVersion = (int)setting('core.client');
|
$clientVersion = (int)setting('core.client');
|
||||||
|
|
||||||
// 14.00 and up
|
// 13.40 and up
|
||||||
if ($clientVersion >= 1400) {
|
if ($clientVersion >= 1340) {
|
||||||
$creatureBoost = $db->query("SELECT * FROM " . $db->tableName('boosted_creature'))->fetchAll();
|
$creatureBoost = $db->query("SELECT * FROM " . $db->tableName('boosted_creature'))->fetchAll();
|
||||||
$bossBoost = $db->query("SELECT * FROM " . $db->tableName('boosted_boss'))->fetchAll();
|
$bossBoost = $db->query("SELECT * FROM " . $db->tableName('boosted_boss'))->fetchAll();
|
||||||
die(json_encode([
|
die(json_encode([
|
||||||
|
@@ -51,5 +51,8 @@
|
|||||||
"themes": true,
|
"themes": true,
|
||||||
"admin-pages": true,
|
"admin-pages": true,
|
||||||
"admin-pages-sub-folders": true,
|
"admin-pages-sub-folders": true,
|
||||||
|
"settings": true,
|
||||||
|
"install": true,
|
||||||
|
"init": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1263,6 +1263,10 @@ function clearCache()
|
|||||||
|
|
||||||
global $db;
|
global $db;
|
||||||
$db->setClearCacheAfter(true);
|
$db->setClearCacheAfter(true);
|
||||||
|
|
||||||
|
if (function_exists('apcu_clear_cache')) {
|
||||||
|
apcu_clear_cache();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteDirectory(CACHE . 'signatures', ['index.html'], true);
|
deleteDirectory(CACHE . 'signatures', ['index.html'], true);
|
||||||
|
@@ -2919,6 +2919,32 @@ class OTS_Player extends OTS_Row_DAO
|
|||||||
$this->data['banned'] = $ban['active'];
|
$this->data['banned'] = $ban['active'];
|
||||||
$this->data['banned_time'] = $ban['expires'];
|
$this->data['banned_time'] = $ban['expires'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isNameLocked(): bool
|
||||||
|
{
|
||||||
|
// nothing can't be banned
|
||||||
|
if( !$this->isLoaded() ) {
|
||||||
|
throw new E_OTS_NotLoaded();
|
||||||
|
}
|
||||||
|
|
||||||
|
if($this->db->hasTable('player_namelocks')) {
|
||||||
|
$ban = $this->db->query('SELECT 1 FROM `player_namelocks` WHERE `player_id` = ' . $this->data['id'])->fetch(PDO::FETCH_ASSOC);
|
||||||
|
return (isset($ban['1']));
|
||||||
|
}
|
||||||
|
else if($this->db->hasTable('bans')) {
|
||||||
|
if($this->db->hasColumn('bans', 'active')) {
|
||||||
|
$ban = $this->db->query('SELECT `active`, `expires` FROM `bans` WHERE `type` = 2 AND `active` = 1 AND `value` = ' . $this->data['id'] . ' AND (`expires` > ' . time() .' OR `expires` = -1) ORDER BY `expires` DESC')->fetch();
|
||||||
|
return isset($ban['active']);
|
||||||
|
}
|
||||||
|
else { // tfs 0.2
|
||||||
|
$ban = $this->db->query('SELECT `time` FROM `bans` WHERE `type` = 2 AND `account` = ' . $this->data['account_id'] . ' AND (`time` > ' . time() .' OR `time` = -1) ORDER BY `time` DESC')->fetch();
|
||||||
|
|
||||||
|
return isset($ban['time']) && ($ban['time'] == -1 || $ban['time'] > 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Deletes player.
|
* Deletes player.
|
||||||
*
|
*
|
||||||
@@ -2953,21 +2979,14 @@ class OTS_Player extends OTS_Row_DAO
|
|||||||
* @return string Player proffesion name.
|
* @return string Player proffesion name.
|
||||||
* @throws E_OTS_NotLoaded If player is not loaded or global vocations list is not loaded.
|
* @throws E_OTS_NotLoaded If player is not loaded or global vocations list is not loaded.
|
||||||
*/
|
*/
|
||||||
public function getVocationName()
|
public function getVocationName(): string
|
||||||
{
|
{
|
||||||
if( !isset($this->data['vocation']) )
|
if( !isset($this->data['vocation']) )
|
||||||
{
|
{
|
||||||
throw new E_OTS_NotLoaded();
|
throw new E_OTS_NotLoaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
global $config;
|
return OTS_Toolbox::getVocationName($this->data['vocation'], $this->data['promotion'] ?? 0);
|
||||||
$voc = $this->getVocation();
|
|
||||||
if(!isset($config['vocations'][$voc])) {
|
|
||||||
return 'Unknown';
|
|
||||||
}
|
|
||||||
|
|
||||||
return $config['vocations'][$voc];
|
|
||||||
//return POT::getInstance()->getVocationsList()->getVocationName($this->data['vocation']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Toolbox for common operations.
|
* Toolbox for common operations.
|
||||||
*
|
*
|
||||||
* @package POT
|
* @package POT
|
||||||
* @version 0.1.5
|
* @version 0.1.5
|
||||||
*/
|
*/
|
||||||
@@ -23,41 +23,41 @@ class OTS_Toolbox
|
|||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Calculates experience points needed for given level.
|
* Calculates experience points needed for given level.
|
||||||
*
|
*
|
||||||
* @param int $level Level for which experience should be calculated.
|
* @param int $level Level for which experience should be calculated.
|
||||||
* @param int $experience Current experience points.
|
* @param int $experience Current experience points.
|
||||||
* @return int Experience points for level.
|
* @return int Experience points for level.
|
||||||
*/
|
*/
|
||||||
public static function experienceForLevel($level, $experience = 0)
|
public static function experienceForLevel($level, $experience = 0)
|
||||||
{
|
{
|
||||||
//return 50 * ($level - 1) * ($level * $level - 5 * $level + 12) / 3 - $experience;
|
//return 50 * ($level - 1) * ($level * $level - 5 * $level + 12) / 3 - $experience;
|
||||||
$level = $level - 1;
|
$level = $level - 1;
|
||||||
return ((50 * $level * $level * $level) - (150 * $level * $level) + (400 * $level)) / 3;
|
return ((50 * $level * $level * $level) - (150 * $level * $level) + (400 * $level)) / 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds out which level user have basing on his/her experience.
|
* Finds out which level user have basing on his/her experience.
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* PHP doesn't support complex numbers natively so solving third-level polynomials would be quite hard. Rather then doing this, this method iterates calculating experience for next levels until it finds one which requires enought experience we have. Because of that, for high experience values this function can take relatively long time to be executed.
|
* PHP doesn't support complex numbers natively so solving third-level polynomials would be quite hard. Rather then doing this, this method iterates calculating experience for next levels until it finds one which requires enought experience we have. Because of that, for high experience values this function can take relatively long time to be executed.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param int $experience Current experience points.
|
* @param int $experience Current experience points.
|
||||||
* @return int Experience level.
|
* @return int Experience level.
|
||||||
*/
|
*/
|
||||||
public static function levelForExperience($experience)
|
public static function levelForExperience($experience)
|
||||||
{
|
{
|
||||||
// default level
|
// default level
|
||||||
$level = 1;
|
$level = 1;
|
||||||
|
|
||||||
// until we will find level which requires more experience then we have we will step to next
|
// until we will find level which requires more experience then we have we will step to next
|
||||||
while( self::experienceForLevel($level + 1) <= $experience)
|
while( self::experienceForLevel($level + 1) <= $experience)
|
||||||
{
|
{
|
||||||
$level++;
|
$level++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $level;
|
return $level;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @version 0.1.5
|
* @version 0.1.5
|
||||||
@@ -65,25 +65,25 @@ class OTS_Toolbox
|
|||||||
* @return OTS_Players_List Filtered list.
|
* @return OTS_Players_List Filtered list.
|
||||||
* @deprecated 0.1.5 Use OTS_PlayerBans_List.
|
* @deprecated 0.1.5 Use OTS_PlayerBans_List.
|
||||||
*/
|
*/
|
||||||
public static function bannedPlayers()
|
public static function bannedPlayers()
|
||||||
{
|
{
|
||||||
// creates filter
|
// creates filter
|
||||||
$filter = new OTS_SQLFilter();
|
$filter = new OTS_SQLFilter();
|
||||||
$filter->addFilter( new OTS_SQLField('type', 'bans'), POT::BAN_PLAYER);
|
$filter->addFilter( new OTS_SQLField('type', 'bans'), POT::BAN_PLAYER);
|
||||||
$filter->addFilter( new OTS_SQLField('active', 'bans'), 1);
|
$filter->addFilter( new OTS_SQLField('active', 'bans'), 1);
|
||||||
$filter->addFilter( new OTS_SQLField('value', 'bans'), new OTS_SQLField('id', 'players') );
|
$filter->addFilter( new OTS_SQLField('value', 'bans'), new OTS_SQLField('id', 'players') );
|
||||||
|
|
||||||
// selects only active bans
|
// selects only active bans
|
||||||
$actives = new OTS_SQLFilter();
|
$actives = new OTS_SQLFilter();
|
||||||
$actives->addFilter( new OTS_SQLField('expires', 'bans'), 0);
|
$actives->addFilter( new OTS_SQLField('expires', 'bans'), 0);
|
||||||
$actives->addFilter( new OTS_SQLField('time', 'bans'), time(), OTS_SQLFilter::OPERATOR_GREATER, OTS_SQLFilter::CRITERIUM_OR);
|
$actives->addFilter( new OTS_SQLField('time', 'bans'), time(), OTS_SQLFilter::OPERATOR_GREATER, OTS_SQLFilter::CRITERIUM_OR);
|
||||||
$filter->addFilter($actives);
|
$filter->addFilter($actives);
|
||||||
|
|
||||||
// creates list and aplies filter
|
// creates list and aplies filter
|
||||||
$list = new OTS_Players_List();
|
$list = new OTS_Players_List();
|
||||||
$list->setFilter($filter);
|
$list->setFilter($filter);
|
||||||
return $list;
|
return $list;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @version 0.1.5
|
* @version 0.1.5
|
||||||
@@ -91,25 +91,34 @@ class OTS_Toolbox
|
|||||||
* @return OTS_Accounts_List Filtered list.
|
* @return OTS_Accounts_List Filtered list.
|
||||||
* @deprecated 0.1.5 Use OTS_AccountBans_List.
|
* @deprecated 0.1.5 Use OTS_AccountBans_List.
|
||||||
*/
|
*/
|
||||||
public static function bannedAccounts()
|
public static function bannedAccounts()
|
||||||
{
|
{
|
||||||
// creates filter
|
// creates filter
|
||||||
$filter = new OTS_SQLFilter();
|
$filter = new OTS_SQLFilter();
|
||||||
$filter->addFilter( new OTS_SQLField('type', 'bans'), POT::BAN_ACCOUNT);
|
$filter->addFilter( new OTS_SQLField('type', 'bans'), POT::BAN_ACCOUNT);
|
||||||
$filter->addFilter( new OTS_SQLField('active', 'bans'), 1);
|
$filter->addFilter( new OTS_SQLField('active', 'bans'), 1);
|
||||||
$filter->addFilter( new OTS_SQLField('value', 'bans'), new OTS_SQLField('id', 'accounts') );
|
$filter->addFilter( new OTS_SQLField('value', 'bans'), new OTS_SQLField('id', 'accounts') );
|
||||||
|
|
||||||
// selects only active bans
|
// selects only active bans
|
||||||
$actives = new OTS_SQLFilter();
|
$actives = new OTS_SQLFilter();
|
||||||
$actives->addFilter( new OTS_SQLField('expires', 'bans'), 0);
|
$actives->addFilter( new OTS_SQLField('expires', 'bans'), 0);
|
||||||
$actives->addFilter( new OTS_SQLField('time', 'bans'), time(), OTS_SQLFilter::OPERATOR_GREATER, OTS_SQLFilter::CRITERIUM_OR);
|
$actives->addFilter( new OTS_SQLField('time', 'bans'), time(), OTS_SQLFilter::OPERATOR_GREATER, OTS_SQLFilter::CRITERIUM_OR);
|
||||||
$filter->addFilter($actives);
|
$filter->addFilter($actives);
|
||||||
|
|
||||||
// creates list and aplies filter
|
// creates list and aplies filter
|
||||||
$list = new OTS_Accounts_List();
|
$list = new OTS_Accounts_List();
|
||||||
$list->setFilter($filter);
|
$list->setFilter($filter);
|
||||||
return $list;
|
return $list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getVocationName($id, $promotion = 0): string
|
||||||
|
{
|
||||||
|
if($promotion > 0) {
|
||||||
|
$id = ($id + ($promotion * config('vocations_amount')));
|
||||||
|
}
|
||||||
|
|
||||||
|
return config('vocations')[$id] ?? 'Unknown';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**#@-*/
|
/**#@-*/
|
||||||
|
@@ -166,7 +166,7 @@ if(isset($_POST['emailchangecancel']) && $_POST['emailchangecancel'] == 1) {
|
|||||||
$account_logged->setCustomField("email_new", "");
|
$account_logged->setCustomField("email_new", "");
|
||||||
$account_logged->setCustomField("email_new_time", 0);
|
$account_logged->setCustomField("email_new_time", 0);
|
||||||
|
|
||||||
$custom_buttons = '<div style="text-align:center"><table border="0" cellspacing="0" cellpadding="0" ><form action="' . getLink('account/manage') . '" method="post" ><tr><td style="border:0px;" >' . $twig->render('buttons.back.html.twig') . '</td></tr></form></table></div>';
|
$custom_buttons = '<div style="text-align:center"><table border="0" cellspacing="0" cellpadding="0" ><form action="' . getLink('account/manage') . '" method="post" >' . csrf(true) . '<tr><td style="border:0px;" >' . $twig->render('buttons.back.html.twig') . '</td></tr></form></table></div>';
|
||||||
|
|
||||||
$twig->display('success.html.twig', array(
|
$twig->display('success.html.twig', array(
|
||||||
'title' => 'Email Address Change Cancelled',
|
'title' => 'Email Address Change Cancelled',
|
||||||
|
@@ -1,23 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* Change comment
|
|
||||||
*
|
|
||||||
* @package MyAAC
|
|
||||||
* @author Gesior <jerzyskalski@wp.pl>
|
|
||||||
* @author Slawkens <slawkens@gmail.com>
|
|
||||||
* @copyright 2019 MyAAC
|
|
||||||
* @link https://my-aac.org
|
|
||||||
*/
|
|
||||||
defined('MYAAC') or die('Direct access not allowed!');
|
|
||||||
|
|
||||||
$redirect = urldecode($_REQUEST['redirect']);
|
|
||||||
|
|
||||||
// should never happen, unless hacker modify the URL
|
|
||||||
if (!str_contains($redirect, BASE_URL)) {
|
|
||||||
error('Fatal error: Cannot redirect outside the website.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$twig->display('account.redirect.html.twig', array(
|
|
||||||
'redirect' => $redirect
|
|
||||||
));
|
|
@@ -36,10 +36,9 @@ if(count($guilds_list) > 0) {
|
|||||||
$guildName = $guild->getName();
|
$guildName = $guild->getName();
|
||||||
$guilds[] = array('name' => $guildName, 'logo' => $guild_logo, 'link' => getGuildLink($guildName, false), 'description' => $description);
|
$guilds[] = array('name' => $guildName, 'logo' => $guild_logo, 'link' => getGuildLink($guildName, false), 'description' => $description);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
$twig->display('guilds.list.html.twig', array(
|
$twig->display('guilds.list.html.twig', array(
|
||||||
'guilds' => $guilds,
|
'guilds' => $guilds,
|
||||||
'logged' => $logged ?? false,
|
|
||||||
'isAdmin' => admin(),
|
'isAdmin' => admin(),
|
||||||
));
|
));
|
||||||
|
@@ -22,13 +22,16 @@ $promotion = '';
|
|||||||
if($db->hasColumn('players', 'promotion'))
|
if($db->hasColumn('players', 'promotion'))
|
||||||
$promotion = '`promotion`,';
|
$promotion = '`promotion`,';
|
||||||
|
|
||||||
$order = $_GET['order'] ?? 'name';
|
$order = $_GET['order'] ?? 'name_asc';
|
||||||
if(!in_array($order, array('country', 'name', 'level', 'vocation')))
|
if(!in_array($order, ['country_asc', 'country_desc', 'name_asc', 'name_desc', 'level_asc', 'level_desc', 'vocation_asc', 'vocation_desc'])) {
|
||||||
$order = $db->fieldName('name');
|
$order = 'name_asc';
|
||||||
else if($order == 'country')
|
}
|
||||||
$order = $db->tableName('accounts') . '.' . $db->fieldName('country');
|
else if($order == 'vocation_asc' || $order == 'vocation_desc') {
|
||||||
else if($order == 'vocation')
|
$order = $promotion . 'vocation_' . (str_contains($order, 'asc') ? 'asc' : 'desc');
|
||||||
$order = $promotion . 'vocation ASC';
|
}
|
||||||
|
|
||||||
|
$orderExplode = explode('_', $order);
|
||||||
|
$orderSql = $orderExplode[0] . ' ' . $orderExplode[1];
|
||||||
|
|
||||||
$skull_type = 'skull';
|
$skull_type = 'skull';
|
||||||
if($db->hasColumn('players', 'skull_type')) {
|
if($db->hasColumn('players', 'skull_type')) {
|
||||||
@@ -58,11 +61,11 @@ if (setting('core.online_vocations')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($db->hasTable('players_online')) // tfs 1.0
|
if($db->hasTable('players_online')) // tfs 1.0
|
||||||
$playersOnline = $db->query('SELECT `accounts`.`country`, `players`.`name`, `players`.`level`, `players`.`vocation`' . $outfit . ', `' . $skull_time . '` as `skulltime`, `' . $skull_type . '` as `skull` FROM `accounts`, `players`, `players_online` WHERE `players`.`id` = `players_online`.`player_id` AND `accounts`.`id` = `players`.`account_id` ORDER BY ' . $order);
|
$playersOnline = $db->query('SELECT `accounts`.`country`, `players`.`name`, `players`.`level`, `players`.`vocation`' . $outfit . ', `' . $skull_time . '` as `skulltime`, `' . $skull_type . '` as `skull` FROM `accounts`, `players`, `players_online` WHERE `players`.`id` = `players_online`.`player_id` AND `accounts`.`id` = `players`.`account_id` ORDER BY ' . $orderSql);
|
||||||
else
|
else
|
||||||
$playersOnline = $db->query('SELECT `accounts`.`country`, `players`.`name`, `players`.`level`, `players`.`vocation`' . $outfit . ', ' . $promotion . ' `' . $skull_time . '` as `skulltime`, `' . $skull_type . '` as `skull` FROM `accounts`, `players` WHERE `players`.`online` > 0 AND `accounts`.`id` = `players`.`account_id` ORDER BY ' . $order);
|
$playersOnline = $db->query('SELECT `accounts`.`country`, `players`.`name`, `players`.`level`, `players`.`vocation`' . $outfit . ', ' . $promotion . ' `' . $skull_time . '` as `skulltime`, `' . $skull_type . '` as `skull` FROM `accounts`, `players` WHERE `players`.`online` > 0 AND `accounts`.`id` = `players`.`account_id` ORDER BY ' . $orderSql);
|
||||||
|
|
||||||
$players_data = array();
|
$players_data = [];
|
||||||
$players = 0;
|
$players = 0;
|
||||||
$data = '';
|
$data = '';
|
||||||
foreach($playersOnline as $player) {
|
foreach($playersOnline as $player) {
|
||||||
@@ -115,7 +118,7 @@ if(count($players_data) > 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($result) {
|
if($result) {
|
||||||
$record = 'The maximum on this game world was ' . $result['record'] . ' players' . ($timestamp ? ' on ' . date("M d Y, H:i:s", $result['timestamp']) . '.' : '.');
|
$record = $result['record'] . ' player' . ($result['record'] > 1 ? 's' : '') . ($timestamp ? ' (on ' . date("M d Y, H:i:s", $result['timestamp']) . ')' : '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -124,8 +127,9 @@ $twig->display('online.html.twig', array(
|
|||||||
'players' => $players_data,
|
'players' => $players_data,
|
||||||
'record' => $record,
|
'record' => $record,
|
||||||
'vocs' => $vocs,
|
'vocs' => $vocs,
|
||||||
|
'order' => $order,
|
||||||
));
|
));
|
||||||
|
|
||||||
//search bar
|
//search bar
|
||||||
$twig->display('online.form.html.twig');
|
$twig->display('characters.form.html.twig');
|
||||||
?>
|
?>
|
||||||
|
@@ -174,7 +174,12 @@ $dispatcher = FastRoute\cachedDispatcher(function (FastRoute\RouteCollector $r)
|
|||||||
// apply aliases
|
// apply aliases
|
||||||
$route[1] = str_replace($aliases[0], $aliases[1], $route[1]);
|
$route[1] = str_replace($aliases[0], $aliases[1], $route[1]);
|
||||||
|
|
||||||
$r->addRoute($route[0], $route[1], $route[2]);
|
try {
|
||||||
|
$r->addRoute($route[0], $route[1], $route[2]);
|
||||||
|
}
|
||||||
|
catch (\Exception $e) {
|
||||||
|
// duplicated route, just ignore
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config('env') === 'dev') {
|
if (config('env') === 'dev') {
|
||||||
@@ -321,7 +326,9 @@ if (isset($_REQUEST['_page_only'])) {
|
|||||||
|
|
||||||
if(!isset($title)) {
|
if(!isset($title)) {
|
||||||
$title = str_replace('index.php/', '', $page);
|
$title = str_replace('index.php/', '', $page);
|
||||||
$title = ucfirst($title);
|
$title = str_replace(['_', '-', '/'], ' ', $page);
|
||||||
|
|
||||||
|
$title = ucwords($title);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(setting('core.backward_support')) {
|
if(setting('core.backward_support')) {
|
||||||
|
@@ -22,11 +22,11 @@ return [
|
|||||||
['GET', 'account/confirm-email/{hash:alphanum}', 'account/confirm-email.php'],
|
['GET', 'account/confirm-email/{hash:alphanum}', 'account/confirm-email.php'],
|
||||||
|
|
||||||
['GET', 'bans/{page:int}', 'bans.php'],
|
['GET', 'bans/{page:int}', 'bans.php'],
|
||||||
[['GET', 'POST'], 'characters[/{name:[A-Za-z0-9-_%+\' \[\]]+}]', 'characters.php'],
|
[['GET', 'POST'], 'characters/{name:[A-Za-z0-9-_%+\' \[\]]+}', 'characters.php'],
|
||||||
['GET', 'changelog[/{page:int}]', 'changelog.php'],
|
['GET', 'changelog/{page:int}', 'changelog.php'],
|
||||||
[['GET', 'POST'], 'monsters[/{name:string}]', 'monsters.php'],
|
[['GET', 'POST'], 'monsters/{name:string}', 'monsters.php'],
|
||||||
|
|
||||||
[['GET', 'POST'], 'faq[/{action:string}]', 'faq.php'],
|
[['GET', 'POST'], 'faq/{action:string}', 'faq.php'],
|
||||||
|
|
||||||
[['GET', 'POST'], 'forum/{action:string}', 'forum.php'],
|
[['GET', 'POST'], 'forum/{action:string}', 'forum.php'],
|
||||||
['GET', 'forum/board/{id:int}', 'forum/show_board.php'],
|
['GET', 'forum/board/{id:int}', 'forum/show_board.php'],
|
||||||
|
@@ -1264,6 +1264,12 @@ Sent by MyAAC,<br/>
|
|||||||
'desc' => '',
|
'desc' => '',
|
||||||
'default' => false,
|
'default' => false,
|
||||||
],
|
],
|
||||||
|
'online_datacenter' => [
|
||||||
|
'name' => 'Data Center',
|
||||||
|
'type' => 'text',
|
||||||
|
'desc' => 'Server Location, will be shown on online page',
|
||||||
|
'default' => 'Frankfurt - Germany',
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'type' => 'section',
|
'type' => 'section',
|
||||||
'title' => 'Team Page'
|
'title' => 'Team Page'
|
||||||
|
49
system/src/Admin/Plugins.php
Normal file
49
system/src/Admin/Plugins.php
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MyAAC\Admin;
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
|
||||||
|
class Plugins
|
||||||
|
{
|
||||||
|
private string $api_base_uri = 'https://plugins.my-aac.org/api/';
|
||||||
|
|
||||||
|
public function getLatestVersions(): array
|
||||||
|
{
|
||||||
|
$client = new Client([
|
||||||
|
// Base URI is used with relative requests
|
||||||
|
'base_uri' => $this->api_base_uri,
|
||||||
|
// You can set any number of default request options.
|
||||||
|
'timeout' => 3.0,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$plugins = get_plugins(true);
|
||||||
|
foreach ($plugins as &$plugin) {
|
||||||
|
if (str_contains($plugin, 'disabled.')) {
|
||||||
|
$plugin = str_replace('disabled.', '', $plugin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$response = $client->get('get-latest-versions', [
|
||||||
|
'json' => ['plugins' => $plugins],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
catch (\Exception $e) {
|
||||||
|
error('API Error. Please try again later.');
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$statusCode = $response->getStatusCode();
|
||||||
|
if ($statusCode != 200) {
|
||||||
|
throw new \Exception('Error getting info from plugins repository. Please try again later.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = $response->getBody();
|
||||||
|
return json_decode($data, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setApiBaseUri(string $uri): void {
|
||||||
|
$this->api_base_uri = $uri;
|
||||||
|
}
|
||||||
|
}
|
@@ -54,6 +54,7 @@ define('HOOK_ACCOUNT_MANAGE_BEFORE_GENERAL_INFORMATION', ++$i);
|
|||||||
define('HOOK_ACCOUNT_MANAGE_BEFORE_PUBLIC_INFORMATION', ++$i);
|
define('HOOK_ACCOUNT_MANAGE_BEFORE_PUBLIC_INFORMATION', ++$i);
|
||||||
define('HOOK_ACCOUNT_MANAGE_BEFORE_ACCOUNT_LOGS', ++$i);
|
define('HOOK_ACCOUNT_MANAGE_BEFORE_ACCOUNT_LOGS', ++$i);
|
||||||
define('HOOK_ACCOUNT_MANAGE_BEFORE_CHARACTERS', ++$i);
|
define('HOOK_ACCOUNT_MANAGE_BEFORE_CHARACTERS', ++$i);
|
||||||
|
define('HOOK_ACCOUNT_MANAGE_AFTER_CHARACTERS', ++$i);
|
||||||
define('HOOK_ACCOUNT_LOGIN_BEFORE_PAGE', ++$i);
|
define('HOOK_ACCOUNT_LOGIN_BEFORE_PAGE', ++$i);
|
||||||
define('HOOK_ACCOUNT_LOGIN_BEFORE_ACCOUNT', ++$i);
|
define('HOOK_ACCOUNT_LOGIN_BEFORE_ACCOUNT', ++$i);
|
||||||
define('HOOK_ACCOUNT_LOGIN_AFTER_ACCOUNT', ++$i);
|
define('HOOK_ACCOUNT_LOGIN_AFTER_ACCOUNT', ++$i);
|
||||||
@@ -92,6 +93,7 @@ define('HOOK_EMAIL_CONFIRMED', ++$i);
|
|||||||
define('HOOK_GUILDS_BEFORE_GUILD_HEADER', ++$i);
|
define('HOOK_GUILDS_BEFORE_GUILD_HEADER', ++$i);
|
||||||
define('HOOK_GUILDS_AFTER_GUILD_HEADER', ++$i);
|
define('HOOK_GUILDS_AFTER_GUILD_HEADER', ++$i);
|
||||||
define('HOOK_GUILDS_AFTER_GUILD_INFORMATION', ++$i);
|
define('HOOK_GUILDS_AFTER_GUILD_INFORMATION', ++$i);
|
||||||
|
define('HOOK_GUILDS_AFTER_MANAGE_BUTTON', ++$i);
|
||||||
define('HOOK_GUILDS_AFTER_GUILD_MEMBERS', ++$i);
|
define('HOOK_GUILDS_AFTER_GUILD_MEMBERS', ++$i);
|
||||||
define('HOOK_GUILDS_AFTER_INVITED_CHARACTERS', ++$i);
|
define('HOOK_GUILDS_AFTER_INVITED_CHARACTERS', ++$i);
|
||||||
define('HOOK_TWIG', ++$i);
|
define('HOOK_TWIG', ++$i);
|
||||||
|
@@ -28,7 +28,7 @@ Please enter your password and the new email address. Make sure that you enter a
|
|||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td style="border:0px;">
|
<td style="border:0;">
|
||||||
<form id="form" action="{{ getLink('account/change-email') }}" method="post">
|
<form id="form" action="{{ getLink('account/change-email') }}" method="post">
|
||||||
{{ csrf() }}
|
{{ csrf() }}
|
||||||
<input type="hidden" name="changeemailsave" value="1"/>
|
<input type="hidden" name="changeemailsave" value="1"/>
|
||||||
@@ -40,14 +40,14 @@ Please enter your password and the new email address. Make sure that you enter a
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<form action="{{ getLink('account/manage') }}" method="post">
|
<tr>
|
||||||
{{ csrf() }}
|
<td style="border:0;">
|
||||||
<tr>
|
<form action="{{ getLink('account/manage') }}" method="post">
|
||||||
<td style="border:0px;">
|
{{ csrf() }}
|
||||||
{{ include('buttons.back.html.twig') }}
|
{{ include('buttons.back.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@@ -88,7 +88,7 @@ If you do not want to specify a certain field, just leave it blank.<br/><br/>
|
|||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td style="border:0px;">
|
<td style="border:0;">
|
||||||
<input type="hidden" name="name" value="{{ player.name }}">
|
<input type="hidden" name="name" value="{{ player.name }}">
|
||||||
<input type="hidden" name="changecommentsave" value="1">
|
<input type="hidden" name="changecommentsave" value="1">
|
||||||
{{ include('buttons.submit.html.twig') }}
|
{{ include('buttons.submit.html.twig') }}
|
||||||
@@ -99,15 +99,15 @@ If you do not want to specify a certain field, just leave it blank.<br/><br/>
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<form action="{{ getLink('account/manage') }}" method="post">
|
<tr>
|
||||||
{{ csrf() }}
|
<td style="border:0;">
|
||||||
<tr>
|
<form action="{{ getLink('account/manage') }}" method="post">
|
||||||
<td style="border:0px;">
|
{{ csrf() }}
|
||||||
{{ include('buttons.back.html.twig') }}
|
{{ include('buttons.back.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@@ -24,7 +24,7 @@ To delete a character enter the name of the character and your password.<br/><br
|
|||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td style="border:0px;">
|
<td style="border:0;">
|
||||||
<form id="form" action="{{ getLink('account/characters/delete') }}" method="post">
|
<form id="form" action="{{ getLink('account/characters/delete') }}" method="post">
|
||||||
{{ csrf() }}
|
{{ csrf() }}
|
||||||
<input type="hidden" name="deletecharactersave" value="1"/>
|
<input type="hidden" name="deletecharactersave" value="1"/>
|
||||||
@@ -36,14 +36,14 @@ To delete a character enter the name of the character and your password.<br/><br
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<form action="{{ getLink('account/manage') }}" method="post">
|
<tr>
|
||||||
{{ csrf() }}
|
<td style="border:0;">
|
||||||
<tr>
|
<form action="{{ getLink('account/manage') }}" method="post">
|
||||||
<td style="border:0px;">
|
{{ csrf() }}
|
||||||
{{ include('buttons.back.html.twig') }}
|
{{ include('buttons.back.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@@ -32,14 +32,14 @@ To generate recovery key for your account please enter your password.<br/><br/>
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<form action="{{ getLink('account/manage') }}" method="post">
|
<tr>
|
||||||
{{ csrf() }}
|
<td style="border: 0;">
|
||||||
<tr>
|
<form action="{{ getLink('account/manage') }}" method="post">
|
||||||
<td style="border: 0;">
|
{{ csrf() }}
|
||||||
{{ include('buttons.back.html.twig') }}
|
{{ include('buttons.back.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@@ -228,5 +228,7 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
<br/>
|
||||||
|
{{ hook('HOOK_ACCOUNT_MANAGE_AFTER_CHARACTERS') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
<div id="install_plugin">
|
<div id="install_plugin">
|
||||||
<div class="card card-info card-outline">
|
<div class="card card-info card-outline">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h5 class="m-0">Install plugin</h5>
|
<h5 class="m-0">Install plugin
|
||||||
|
<a href="?p=plugins&check-updates" class="btn btn-primary float-right">Check for updates</a>
|
||||||
|
</h5>
|
||||||
</div>
|
</div>
|
||||||
<form enctype="multipart/form-data" method="post" action="{{ constant('ADMIN_URL') }}?p=plugins">
|
<form enctype="multipart/form-data" method="post" action="{{ constant('ADMIN_URL') }}?p=plugins">
|
||||||
{{ csrf() }}
|
{{ csrf() }}
|
||||||
|
18
system/templates/admin.plugins.outdated.html.twig
Normal file
18
system/templates/admin.plugins.outdated.html.twig
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<table class="table table-bordered table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Plugin Name</th>
|
||||||
|
<th>Your Version</th>
|
||||||
|
<th>Latest Version</th>
|
||||||
|
<th>Download link</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% for plugin in plugins %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ plugin.name }}</td>
|
||||||
|
<td>{{ plugin.yourVersion }}</td>
|
||||||
|
<td>{{ plugin.latestVersion }}</td>
|
||||||
|
<td><a href="{{ plugin.download_link }}" target="_blank">{{ plugin.download_link }}</a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
@@ -1,17 +1,23 @@
|
|||||||
<form action="{{ link }}" method="post">
|
<br/>
|
||||||
<table width="100%" border="0" cellspacing="1" cellpadding="4">
|
<form action="{{ getLink('characters') }}" method="post">
|
||||||
<tr><td bgcolor="{{ config.vdarkborder }}" class="white"><B>Search Character</B></TD></TR>
|
{% set title = 'Search Character' %}
|
||||||
<tr>
|
{% set tableClass = 'Table1' %}
|
||||||
<td bgcolor="{{ config.darkborder }}">
|
{% set background = config('darkborder') %}
|
||||||
<table border="0" cellpadding="1">
|
{% set content %}
|
||||||
<tr>
|
<table width="100%">
|
||||||
<td>Name:</td><td><input name="name" value="" size="29" maxlength="29"{% if autofocus %} autofocus{% endif %}></TD>
|
<tr>
|
||||||
<td>
|
<td style="vertical-align:middle" class="LabelV150">
|
||||||
{{ include('buttons.submit.html.twig') }}
|
Character Name:
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
<td style="width:170px">
|
||||||
</table>
|
<input style="width:165px" name="name" value="" size="29" maxlength="29"/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
<td>
|
||||||
</table>
|
{% set button_name = 'Submit' %}
|
||||||
</form>
|
{{ include('buttons.base.html.twig') }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
{% endset %}
|
||||||
|
{{ include('tables.headline.html.twig') }}
|
||||||
|
</form>
|
||||||
|
@@ -49,6 +49,7 @@
|
|||||||
{% include('buttons.base.html.twig') %}
|
{% include('buttons.base.html.twig') %}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{{ hook('HOOK_GUILDS_AFTER_MANAGE_BUTTON') }}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -61,6 +62,7 @@
|
|||||||
{{ hook('HOOK_GUILDS_AFTER_GUILD_INFORMATION') }}
|
{{ hook('HOOK_GUILDS_AFTER_GUILD_INFORMATION') }}
|
||||||
|
|
||||||
{% set title = 'Guild Members' %}
|
{% set title = 'Guild Members' %}
|
||||||
|
{% set background = config('lightborder') %}
|
||||||
{% set content %}
|
{% set content %}
|
||||||
<table style="width:100%;">
|
<table style="width:100%;">
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -151,6 +153,7 @@
|
|||||||
|
|
||||||
{{ hook('HOOK_GUILDS_AFTER_GUILD_MEMBERS') }}
|
{{ hook('HOOK_GUILDS_AFTER_GUILD_MEMBERS') }}
|
||||||
{% set title = 'Invited Characters' %}
|
{% set title = 'Invited Characters' %}
|
||||||
|
{% set background = config('lightborder') %}
|
||||||
{% set content %}
|
{% set content %}
|
||||||
<table style="width:100%;">
|
<table style="width:100%;">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@@ -1,25 +0,0 @@
|
|||||||
<br/>
|
|
||||||
<form action="{{ getLink('characters') }}" method=post>
|
|
||||||
<table width="100%" border="0" cellspacing="1" cellpadding="4">
|
|
||||||
<tr>
|
|
||||||
<td bgcolor="{{ config.vdarkborder }}" class="white">
|
|
||||||
<b>Search Character</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor="{{ config.darkborder }}">
|
|
||||||
<table border="0" cellpadding="1">
|
|
||||||
<tr>
|
|
||||||
<td>Name:</td>
|
|
||||||
<td>
|
|
||||||
<input name="name" value=""size=29 maxlength=29>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
{{ include('buttons.submit.html.twig') }}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</form>
|
|
@@ -1,39 +1,7 @@
|
|||||||
<table border="0" cellspacing="1" cellpadding="4" width="100%">
|
{# vocation statistics #}
|
||||||
<tr bgcolor="{{ config.vdarkborder }}">
|
{% if setting('core.online_vocations') %}
|
||||||
<td class="white"><b>Server Status</b></td>
|
|
||||||
</tr>
|
|
||||||
{% if players|length == 0 %}
|
|
||||||
<tr bgcolor="{{ config.darkborder }}"><td>Currently no one is playing on {{ config.lua.serverName }}.</td></tr></table>
|
|
||||||
{% else %}
|
|
||||||
<tr bgcolor="{{ config.darkborder }}">
|
|
||||||
<td>
|
|
||||||
{% if not status.online %}
|
|
||||||
Server is offline.<br/>
|
|
||||||
{% else %}
|
|
||||||
{% if setting('core.online_afk') %}
|
|
||||||
{% set players_count = players|length %}
|
|
||||||
{% set afk = players_count - status.players %}
|
|
||||||
{% if afk < 0 %}
|
|
||||||
{% set players_count = players_count + afk|abs %}
|
|
||||||
{% set afk = 0 %}
|
|
||||||
{% endif %}
|
|
||||||
Currently there are <b>{{ status.players }}</b> active and <b>{{ afk }}</b> AFK players.<br/>
|
|
||||||
Total number of players: <b>{{ players_count }}</b>.<br/>
|
|
||||||
{% else %}
|
|
||||||
Currently {{ players|length }} players are online.<br/>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% if setting('core.online_record') %}
|
|
||||||
{{ record }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<br/>
|
<br/>
|
||||||
{# vocation statistics #}
|
{% if setting('core.online_vocations_images') %}
|
||||||
{% if setting('core.online_vocations') %}
|
|
||||||
<br/>
|
|
||||||
{% if setting('core.online_vocations_images') %}
|
|
||||||
<table width="200" cellspacing="1" cellpadding="0" border="0" align="center">
|
<table width="200" cellspacing="1" cellpadding="0" border="0" align="center">
|
||||||
<tr bgcolor="{{ config.darkborder }}">
|
<tr bgcolor="{{ config.darkborder }}">
|
||||||
<td><img src="images/sorcerer.png" /></td>
|
<td><img src="images/sorcerer.png" /></td>
|
||||||
@@ -69,11 +37,13 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
<br/>
|
<br/>
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{# show skulls #}
|
<br/>
|
||||||
{% if setting('core.online_skulls') %}
|
|
||||||
|
{# show skulls #}
|
||||||
|
{% if setting('core.online_skulls') %}
|
||||||
<table width="100%" cellspacing="1">
|
<table width="100%" cellspacing="1">
|
||||||
<tr>
|
<tr>
|
||||||
<td style="background: {{ config.darkborder }};" align="center">
|
<td style="background: {{ config.darkborder }};" align="center">
|
||||||
@@ -83,34 +53,114 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
{% set title = 'World Information' %}
|
||||||
|
{% set tableClass = 'Table3' %}
|
||||||
|
{% set background = config('darkborder') %}
|
||||||
|
{% set content %}
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td class="LabelV150"><b>Status:</b></td>
|
||||||
|
<td>{% if not status.online %}Offline{% else %}Online{% endif %}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="LabelV150"><b>Players Online:</b></td>
|
||||||
|
<td>
|
||||||
|
{% if setting('core.online_afk') %}
|
||||||
|
{% set players_count = players|length %}
|
||||||
|
{% set afk = players_count - status.players %}
|
||||||
|
{% if afk < 0 %}
|
||||||
|
{% set players_count = players_count + afk|abs %}
|
||||||
|
{% set afk = 0 %}
|
||||||
|
{% endif %}
|
||||||
|
Currently there are <b>{{ status.players }}</b> active and <b>{{ afk }}</b> AFK players.<br/>
|
||||||
|
Total number of players: <b>{{ players_count }}</b>.<br/>
|
||||||
|
{% else %}
|
||||||
|
{{ players|length }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
{% if setting('core.online_record') %}
|
||||||
|
<tr>
|
||||||
|
<td class="LabelV150"><b>Online Record:</b></td>
|
||||||
|
<td>
|
||||||
|
{{ record }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<table border="0" cellspacing="1" cellpadding="4" width="100%">
|
<tr>
|
||||||
<tr bgcolor="{{ config.vdarkborder }}">
|
<td class="LabelV150"><b>Location Datacenter:</b></td>
|
||||||
|
<td>{{ setting('core.online_datacenter') }} <small>(Server date & time: - {{ "now"|date("d/m/Y H:i:s") }})</small></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="LabelV150"><b>PvP Type:</b></td>
|
||||||
|
<td>
|
||||||
|
{% set worldType = config('lua')['worldType']|lower %}
|
||||||
|
{% if worldType in ['pvp','2','normal','open','openpvp'] %}
|
||||||
|
Open PvP
|
||||||
|
{% elseif worldType in ['no-pvp','nopvp','non-pvp','nonpvp','1','safe','optional','optionalpvp'] %}
|
||||||
|
Optional PvP
|
||||||
|
{% elseif worldType in ['pvp-enforced','pvpenforced','pvp-enfo','pvpenfo','pvpe','enforced','enfo','3','war','hardcore','hardcorepvp'] %}
|
||||||
|
Hardcore PvP
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
{% endset %}
|
||||||
|
{% include 'tables.headline.html.twig' %}
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
{% set title = 'Players Online' %}
|
||||||
|
{% set tableClass = 'Table2' %}
|
||||||
|
{% set content %}
|
||||||
|
<table width="100%">
|
||||||
|
<tr class="LabelH" style="position: relative; z-index: 20;">
|
||||||
{% if setting('core.account_country') %}
|
{% if setting('core.account_country') %}
|
||||||
<td width="11px"><a href="{{ getLink('online?order=country') }}" class="white">#</A></td>
|
<td width="11px"><a href="{{ getLink('online')}}?order=country_{{ order == 'country_asc' ? 'desc' : 'asc' }}">#  </a>
|
||||||
|
</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if setting('core.online_outfit') %}
|
{% if setting('core.online_outfit') %}
|
||||||
<td class="white"><b>Outfit</b></td>
|
<td><b>Outfit</b></td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<td width="60%"><a href="{{ getLink('online?order=name') }}" class="white">Name</A></td>
|
<td style="text-align:left; width:50%">Name  
|
||||||
<td width="20%"><a href="{{ getLink('online?order=level') }}" class="white">Level</A></td>
|
<small style="font-weight:normal">[<a href="{{ getLink('online')}}?order=name_{{ order == 'name_asc' ? 'desc' : 'asc' }}">sort</a>]</small>
|
||||||
<td width="20%"><a href="{{ getLink('online?order=vocation') }}" class="white">Vocation</td>
|
<img class="sortarrow" src="images/{{ order == 'name_asc' ? 'order_desc' : (order == 'name_desc' ? 'order_asc' : 'news/blank') }}.gif"/></td>
|
||||||
|
<td style="text-align:left;width:30%">Level  
|
||||||
|
<small style="font-weight:normal">[<a href="{{ getLink('online')}}?order=level_{{ order == 'level_asc' ? 'desc' : 'asc' }}">sort</a>]</small>
|
||||||
|
<img class="sortarrow" src="images/{{ order == 'level_asc' ? 'order_desc' : (order == 'level_desc' ? 'order_asc' : 'news/blank') }}.gif"/>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:left;width:50%">Vocation  
|
||||||
|
<small style="font-weight:normal">[<a href="{{ getLink('online')}}?order=vocation_{{ order == 'vocation_asc' ? 'desc' : 'asc' }}">sort</a>]</small>
|
||||||
|
<img class="sortarrow" src="images/{{ order == 'vocation_asc' ? 'order_desc' : (order == 'vocation_desc' ? 'order_asc' : 'news/blank') }}.gif"/>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
{% set i = 0 %}
|
{% set i = 0 %}
|
||||||
{% for player in players %}
|
{% for player in players %}
|
||||||
{% set i = i + 1 %}
|
{% set i = i + 1 %}
|
||||||
<tr bgcolor="{{ getStyle(i) }}">
|
|
||||||
{% if setting('core.account_country') %}
|
<tr style="background: {{ getStyle(i) }}; text-align: right; height: 40px;">
|
||||||
<td>{{ player.country_image|raw }}</td>
|
{% if setting('core.account_country') %}
|
||||||
{% endif %}
|
<td>{{ player.country_image|raw }}</td>
|
||||||
{% if setting('core.online_outfit') %}
|
{% endif %}
|
||||||
<td width="5%"><img style="position:absolute;margin-top:{% if player.player.looktype in setting('core.outfit_images_wrong_looktypes') %}-20px;margin-left:-0px;{% else %}-45px;margin-left:-25px;{% endif %}" src="{{ player.outfit }}" alt="player outfit"/></td>
|
|
||||||
{% endif %}
|
{% if setting('core.online_outfit') %}
|
||||||
<td>{{ player.name|raw }}{{ player.skull }}</td>
|
<td width="5%"><img style="position:absolute;margin-top:-48px;margin-left:-70px;" src="{{ player.outfit }}" alt="player outfit"/></td>
|
||||||
<td>{{ player.level }}</td>
|
{% endif %}
|
||||||
<td>{{ player.vocation }}</td>
|
|
||||||
|
<td style="width:70%; text-align:left">
|
||||||
|
{{ player.name|raw }}{{ player.skull }}
|
||||||
|
</td>
|
||||||
|
<td style="width:10%">{{ player.level }}</td>
|
||||||
|
<td style="width:20%">{{ player.vocation }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
{% endif %}
|
{% endset %}
|
||||||
|
{{ include('tables.headline.html.twig') }}
|
||||||
|
@@ -18,13 +18,14 @@
|
|||||||
{% else %}
|
{% else %}
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<form action="{{ getLink('account/manage') }}" method="post">
|
<tr>
|
||||||
<tr>
|
<td style="border:0;">
|
||||||
<td style="border:0px;">
|
<form action="{{ getLink('account/manage') }}" method="post">
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.back.html.twig') }}
|
{{ include('buttons.back.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
selector: "#editor",
|
selector: "#editor",
|
||||||
content_css: '{{ constant('ADMIN_URL') }}template/style.css',
|
content_css: '{{ constant('ADMIN_URL') }}template/style.css',
|
||||||
theme: "silver",
|
theme: "silver",
|
||||||
plugins: 'preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media template codesample table charmap pagebreak nonbreaking anchor insertdatetime advlist lists wordcount help code emoticons',
|
plugins: 'preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media codesample table charmap pagebreak nonbreaking anchor insertdatetime advlist lists wordcount help code emoticons',
|
||||||
toolbar1: 'formatselect | bold italic strikethrough forecolor backcolor | emoticons link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat code',
|
toolbar1: 'formatselect | bold italic strikethrough forecolor backcolor | emoticons link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat code',
|
||||||
resize: 'both',
|
resize: 'both',
|
||||||
image_advtab: true,
|
image_advtab: true,
|
||||||
@@ -23,6 +23,8 @@
|
|||||||
{title: 'Colored Table', value: 'myaac-table'},
|
{title: 'Colored Table', value: 'myaac-table'},
|
||||||
],
|
],
|
||||||
|
|
||||||
|
license_key: 'gpl',
|
||||||
|
|
||||||
setup: function (ed) {
|
setup: function (ed) {
|
||||||
ed.on('NodeChange', function (e) {
|
ed.on('NodeChange', function (e) {
|
||||||
if (ed.getContent() !== lastContent) {
|
if (ed.getContent() !== lastContent) {
|
||||||
|
@@ -453,6 +453,27 @@ a:hover
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
.LabelV120 {
|
||||||
|
font-weight: bold;
|
||||||
|
padding-right: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 120px;
|
||||||
|
}
|
||||||
|
.LabelV150 {
|
||||||
|
font-weight: bold;
|
||||||
|
padding-right: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
.LabelV200 {
|
||||||
|
font-weight: bold;
|
||||||
|
padding-right: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
.LabelH {
|
.LabelH {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
|
@@ -11,13 +11,14 @@
|
|||||||
<td width="100%"></td>
|
<td width="100%"></td>
|
||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0" >
|
<table border="0" cellspacing="0" cellpadding="0" >
|
||||||
<form action="{{ getLink('account/logout') }}" method="post" >
|
<tr>
|
||||||
<tr>
|
<td style="border:0;">
|
||||||
<td style="border:0px;">
|
<form action="{{ getLink('account/logout') }}" method="post" >
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.logout.html.twig') }}
|
{{ include('buttons.logout.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -59,13 +60,14 @@
|
|||||||
</table>
|
</table>
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<table border="0" cellspacing="0" cellpadding="0" style="margin-left: auto; margin-right: auto;">
|
<table border="0" cellspacing="0" cellpadding="0" style="margin-left: auto; margin-right: auto;">
|
||||||
<form action="{{ getLink('account/register') }}" method="post">
|
<tr>
|
||||||
<tr>
|
<td style="border:0;">
|
||||||
<td style="border:0;">
|
<form action="{{ getLink('account/register') }}" method="post">
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.register_account.html.twig') }}
|
{{ include('buttons.register_account.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -94,13 +96,14 @@
|
|||||||
</table>
|
</table>
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<form action="{{ getLink('account/change-email') }}" method="post">
|
<tr>
|
||||||
<tr>
|
<td style="border:0;">
|
||||||
<td style="border:0px;">
|
<form action="{{ getLink('account/change-email') }}" method="post">
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.edit.html.twig') }}
|
{{ include('buttons.edit.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -177,26 +180,29 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<form action="{{ getLink('account/change-password') }}" method="post">
|
<tr>
|
||||||
<tr>
|
<td style="border:0;" >
|
||||||
<td style="border:0px;" >
|
<form action="{{ getLink('account/change-password') }}" method="post">
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.change_password.html.twig') }}
|
{{ include('buttons.change_password.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<form action="{{ getLink('account/change-email') }}" method="post">
|
<tr>
|
||||||
<tr>
|
<td style="border:0;">
|
||||||
<td style="border:0px;">
|
<form action="{{ getLink('account/change-email') }}" method="post">
|
||||||
|
{{ csrf() }}
|
||||||
|
|
||||||
<input type="hidden" name="newemail" value=""/>
|
<input type="hidden" name="newemail" value=""/>
|
||||||
<input type="hidden" name="newemaildate" value="0">
|
<input type="hidden" name="newemaildate" value="0">
|
||||||
{{ include('buttons.change_email.html.twig') }}
|
{{ include('buttons.change_email.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
<td width="100%"></td>
|
<td width="100%"></td>
|
||||||
@@ -204,13 +210,14 @@
|
|||||||
{% if recovery_key is empty %}
|
{% if recovery_key is empty %}
|
||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<form action="{{ getLink('account/register') }}" method="post">
|
<tr>
|
||||||
<tr>
|
<td style="border:0;">
|
||||||
<td style="border:0px;">
|
<form action="{{ getLink('account/register') }}" method="post">
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.register_account.html.twig') }}
|
{{ include('buttons.register_account.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -258,13 +265,14 @@
|
|||||||
</td>
|
</td>
|
||||||
<td align=right>
|
<td align=right>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<form action="{{ getLink('account/change-info') }}" method="post">
|
<tr>
|
||||||
<tr>
|
<td style="border:0;">
|
||||||
<td style="border:0px;">
|
<form action="{{ getLink('account/change-info') }}" method="post">
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.edit.html.twig') }}
|
{{ include('buttons.edit.html.twig') }}
|
||||||
</td>
|
</form>
|
||||||
</tr>
|
</td>
|
||||||
</form>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -398,8 +406,9 @@
|
|||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0" >
|
<table border="0" cellspacing="0" cellpadding="0" >
|
||||||
<tr>
|
<tr>
|
||||||
<td style="border:0px;">
|
<td style="border:0;">
|
||||||
<form action="{{ getLink('account/characters/create') }}" method="post" >
|
<form action="{{ getLink('account/characters/create') }}" method="post" >
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.create_character.html.twig') }}
|
{{ include('buttons.create_character.html.twig') }}
|
||||||
</form>
|
</form>
|
||||||
</td>
|
</td>
|
||||||
@@ -410,8 +419,9 @@
|
|||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0" >
|
<table border="0" cellspacing="0" cellpadding="0" >
|
||||||
<tr>
|
<tr>
|
||||||
<td style="border:0px;">
|
<td style="border:0;">
|
||||||
<form action="{{ getLink('account/characters/change-name') }}" method="post" >
|
<form action="{{ getLink('account/characters/change-name') }}" method="post" >
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.change_name.html.twig') }}
|
{{ include('buttons.change_name.html.twig') }}
|
||||||
</form>
|
</form>
|
||||||
</td>
|
</td>
|
||||||
@@ -423,8 +433,9 @@
|
|||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0" >
|
<table border="0" cellspacing="0" cellpadding="0" >
|
||||||
<tr>
|
<tr>
|
||||||
<td style="border:0px;">
|
<td style="border:0;">
|
||||||
<form action="{{ getLink('account/characters/change-sex') }}" method="post">
|
<form action="{{ getLink('account/characters/change-sex') }}" method="post">
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.change_sex.html.twig') }}
|
{{ include('buttons.change_sex.html.twig') }}
|
||||||
</form>
|
</form>
|
||||||
</td>
|
</td>
|
||||||
@@ -436,8 +447,9 @@
|
|||||||
<td>
|
<td>
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td style="border: 0px;">
|
<td style="border: 0;">
|
||||||
<form action="{{ getLink('account/characters/delete') }}" method="post">
|
<form action="{{ getLink('account/characters/delete') }}" method="post">
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.delete_character.html.twig') }}
|
{{ include('buttons.delete_character.html.twig') }}
|
||||||
</form>
|
</form>
|
||||||
</td>
|
</td>
|
||||||
@@ -451,4 +463,7 @@
|
|||||||
</table>
|
</table>
|
||||||
{% endset %}
|
{% endset %}
|
||||||
{% include 'tables.headline.html.twig' %}
|
{% include 'tables.headline.html.twig' %}
|
||||||
<br/><br/>
|
<br/>
|
||||||
|
{{ hook('HOOK_ACCOUNT_MANAGE_AFTER_CHARACTERS') }}
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
@@ -1446,6 +1446,27 @@ img {
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
.LabelV120 {
|
||||||
|
font-weight: bold;
|
||||||
|
padding-right: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 120px;
|
||||||
|
}
|
||||||
|
.LabelV150 {
|
||||||
|
font-weight: bold;
|
||||||
|
padding-right: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
.LabelV200 {
|
||||||
|
font-weight: bold;
|
||||||
|
padding-right: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
.LabelH {
|
.LabelH {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
|
@@ -35,6 +35,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td style="border:0;">
|
<td style="border:0;">
|
||||||
<form action="{{ getLink('account/manage') }}" method="post">
|
<form action="{{ getLink('account/manage') }}" method="post">
|
||||||
|
{{ csrf() }}
|
||||||
{{ include('buttons.back.html.twig') }}
|
{{ include('buttons.back.html.twig') }}
|
||||||
</form>
|
</form>
|
||||||
</td>
|
</td>
|
||||||
|
Reference in New Issue
Block a user