Compare commits

..

7 Commits

Author SHA1 Message Date
slawkens
94a61f32ae Merge branch 'develop' into feature/debug-bar 2023-11-11 11:11:13 +01:00
slawkens
577725690d Add option to enable debugbar, even if dev mode is disabled 2023-08-21 11:08:12 +02:00
slawkens
c227fd4e96 Merge branch 'develop' into feature/debug-bar 2023-08-21 10:20:04 +02:00
slawkens
9fef84bffe Fix debugBar mysql logs (Thanks @gpedro) 2023-08-11 06:39:50 +02:00
slawkens
dedd54286f Log PDO queries, as stated in docs, but doesn't work yet (don't know the reason) 2023-08-10 13:21:36 +02:00
slawkens
7403a24030 Use dev-master, cause of some bugs appearing 2023-08-10 13:21:20 +02:00
slawkens
cc7aec8e28 Init debugBar 2023-08-10 13:05:02 +02:00
26 changed files with 71 additions and 103 deletions

1
.gitignore vendored
View File

@@ -47,7 +47,6 @@ system/cache/*
!system/cache/twig/index.html !system/cache/twig/index.html
!system/cache/signatures/index.html !system/cache/signatures/index.html
!system/cache/plugins/index.html !system/cache/plugins/index.html
!system/cache/persistent/index.html
# logs # logs
system/logs/* system/logs/*

View File

@@ -1,22 +0,0 @@
<?php
$hooks->register('debugbar_admin_head_end', HOOK_ADMIN_HEAD_END, function ($params) {
global $debugBar;
if (!isset($debugBar)) {
return;
}
$debugBarRenderer = $debugBar->getJavascriptRenderer();
echo $debugBarRenderer->renderHead();
});
$hooks->register('debugbar_admin_body_end', HOOK_ADMIN_BODY_END, function ($params) {
global $debugBar;
if (!isset($debugBar)) {
return;
}
$debugBarRenderer = $debugBar->getJavascriptRenderer();
echo $debugBarRenderer->render();
});

View File

@@ -30,7 +30,27 @@ if(!$db->hasTable('myaac_account_actions')) {
throw new RuntimeException('Seems that the table <strong>myaac_account_actions</strong> of MyAAC doesn\'t exist in the database. This is a fatal error. You can try to reinstall MyAAC by visiting <a href="' . BASE_URL . 'install">this</a> url.'); throw new RuntimeException('Seems that the table <strong>myaac_account_actions</strong> of MyAAC doesn\'t exist in the database. This is a fatal error. You can try to reinstall MyAAC by visiting <a href="' . BASE_URL . 'install">this</a> url.');
} }
require __DIR__ . '/includes/debugbar.php'; $hooks->register('debugbar_admin_head_end', HOOK_ADMIN_HEAD_END, function ($params) {
global $debugBar;
if (!isset($debugBar)) {
return;
}
$debugBarRenderer = $debugBar->getJavascriptRenderer();
echo $debugBarRenderer->renderHead();
});
$hooks->register('debugbar_admin_body_end', HOOK_ADMIN_BODY_END, function ($params) {
global $debugBar;
if (!isset($debugBar)) {
return;
}
$debugBarRenderer = $debugBar->getJavascriptRenderer();
echo $debugBarRenderer->render();
});
require SYSTEM . 'status.php'; require SYSTEM . 'status.php';
require SYSTEM . 'login.php'; require SYSTEM . 'login.php';
require __DIR__ . '/includes/functions.php'; require __DIR__ . '/includes/functions.php';

View File

@@ -50,7 +50,7 @@ if (!empty($action)) {
} }
$php = isset($_POST['php']) && $_POST['php'] == 1; $php = isset($_POST['php']) && $_POST['php'] == 1;
$enable_tinymce = (isset($_POST['enable_tinymce']) && $_POST['enable_tinymce'] == 1) ?: $enable_tinymce; $enable_tinymce = isset($_POST['enable_tinymce']) && $_POST['enable_tinymce'] == 1;
if ($php) { if ($php) {
$body = $_POST['body']; $body = $_POST['body'];
} }

View File

@@ -27,7 +27,7 @@ if (version_compare(phpversion(), '8.0', '<')) die('PHP version 8.0 or higher is
const MYAAC = true; const MYAAC = true;
const MYAAC_VERSION = '1.0-dev'; const MYAAC_VERSION = '1.0-dev';
const DATABASE_VERSION = 38; const DATABASE_VERSION = 36;
const TABLE_PREFIX = 'myaac_'; const TABLE_PREFIX = 'myaac_';
define('START_TIME', microtime(true)); define('START_TIME', microtime(true));
define('MYAAC_OS', stripos(PHP_OS, 'WIN') === 0 ? 'WINDOWS' : (strtoupper(PHP_OS) === 'DARWIN' ? 'MAC' : 'LINUX')); define('MYAAC_OS', stripos(PHP_OS, 'WIN') === 0 ? 'WINDOWS' : (strtoupper(PHP_OS) === 'DARWIN' ? 'MAC' : 'LINUX'));

View File

@@ -13,9 +13,7 @@
"nikic/fast-route": "^1.3", "nikic/fast-route": "^1.3",
"matomo/device-detector": "^6.0", "matomo/device-detector": "^6.0",
"illuminate/database": "^10.18", "illuminate/database": "^10.18",
"illuminate/filesystem": "^10.18", "peppeocchi/php-cron-scheduler": "4.*"
"peppeocchi/php-cron-scheduler": "4.*",
"symfony/process": "^6.3"
}, },
"require-dev": { "require-dev": {
"filp/whoops": "^2.15", "filp/whoops": "^2.15",

View File

@@ -1,15 +0,0 @@
<?php
if(PHP_SAPI !== 'cli') {
echo 'This script can be run only in command line mode.';
exit(1);
}
require_once __DIR__ . '/../../common.php';
require_once SYSTEM . 'functions.php';
require_once SYSTEM . 'init.php';
$test = new \Illuminate\Database\Schema\MySqlSchemaState($eloquentConnection);
$test->dump($eloquentConnection, BASE . 'dump.sql');
echo 'Dumped.';

View File

View File

@@ -111,8 +111,6 @@ try {
$capsule->addConnection([ $capsule->addConnection([
'driver' => 'mysql', 'driver' => 'mysql',
'database' => $config['database_name'], 'database' => $config['database_name'],
'username' => $config['database_user'],
'password' => $config['database_password'],
]); ]);
$capsule->getConnection()->setPdo($db); $capsule->getConnection()->setPdo($db);

View File

@@ -1262,7 +1262,7 @@ function clearCache()
deleteDirectory(CACHE . 'signatures', ['index.html'], true); deleteDirectory(CACHE . 'signatures', ['index.html'], true);
deleteDirectory(CACHE . 'twig', ['index.html'], true); deleteDirectory(CACHE . 'twig', ['index.html'], true);
deleteDirectory(CACHE . 'plugins', ['index.html'], true); deleteDirectory(CACHE . 'plugins', ['index.html'], true);
deleteDirectory(CACHE, ['signatures', 'twig', 'plugins', 'index.html', 'persistent'], true); deleteDirectory(CACHE, ['signatures', 'twig', 'plugins', 'index.html'], true);
// routes cache // routes cache
$routeCacheFile = CACHE . 'route.cache'; $routeCacheFile = CACHE . 'route.cache';

View File

@@ -38,7 +38,7 @@ class DataLoader
{ {
self::$startTime = microtime(true); self::$startTime = microtime(true);
require_once LIBS . 'items.php'; require LIBS . 'items.php';
if(Items::loadFromXML()) { if(Items::loadFromXML()) {
success(self::$locale['step_database_loaded_items'] . self::getLoadedTime()); success(self::$locale['step_database_loaded_items'] . self::getLoadedTime());
} }

View File

@@ -129,9 +129,6 @@ class Settings implements ArrayAccess
if (is_bool($value)) { if (is_bool($value)) {
$settingsDb[$key] = $value ? 'true' : 'false'; $settingsDb[$key] = $value ? 'true' : 'false';
} }
elseif (is_array($value)) {
$settingsDb[$key] = $value;
}
else { else {
$settingsDb[$key] = (string)$value; $settingsDb[$key] = (string)$value;
} }
@@ -376,6 +373,7 @@ class Settings implements ArrayAccess
} }
$this->settingsDatabase[$pluginKeyName][$key] = $value; $this->settingsDatabase[$pluginKeyName][$key] = $value;
$this->updateInDatabase($pluginKeyName, $key, $value);
} }
#[\ReturnTypeWillChange] #[\ReturnTypeWillChange]
@@ -416,6 +414,7 @@ class Settings implements ArrayAccess
unset($this->settingsFile[$pluginKeyName]['settings'][$key]); unset($this->settingsFile[$pluginKeyName]['settings'][$key]);
unset($this->settingsDatabase[$pluginKeyName][$key]); unset($this->settingsDatabase[$pluginKeyName][$key]);
$this->deleteFromDatabase($pluginKeyName, $key);
} }
/** /**
@@ -533,11 +532,8 @@ class Settings implements ArrayAccess
public static function saveConfig($config, $filename, &$content = '') public static function saveConfig($config, $filename, &$content = '')
{ {
$content = "<?php" . PHP_EOL; $content = "<?php" . PHP_EOL .
"\$config['installed'] = true;" . PHP_EOL;
unset($config['installed']);
$content .= "\$config['installed'] = true;" . PHP_EOL;
foreach ($config as $key => $value) { foreach ($config as $key => $value) {
$content .= "\$config['$key'] = "; $content .= "\$config['$key'] = ";

View File

@@ -33,7 +33,7 @@ class Towns
/** /**
* @var string * @var string
*/ */
private static $filename = CACHE . 'persistent/' . 'towns.php'; private static $filename = CACHE . 'towns.php';
/** /**
* Determine towns * Determine towns

View File

@@ -40,7 +40,7 @@ class Items
} }
require_once LIBS . 'cache_php.php'; require_once LIBS . 'cache_php.php';
$cache_php = new Cache_PHP(config('cache_prefix'), CACHE . 'persistent/'); $cache_php = new Cache_PHP(config('cache_prefix'), CACHE);
$cache_php->set('items', $items, 5 * 365 * 24 * 60 * 60); $cache_php->set('items', $items, 5 * 365 * 24 * 60 * 60);
return true; return true;
} }
@@ -68,7 +68,7 @@ class Items
} }
require_once LIBS . 'cache_php.php'; require_once LIBS . 'cache_php.php';
$cache_php = new Cache_PHP(config('cache_prefix'), CACHE . 'persistent/'); $cache_php = new Cache_PHP(config('cache_prefix'), CACHE);
self::$items = $cache_php->get('items'); self::$items = $cache_php->get('items');
} }

View File

@@ -41,7 +41,7 @@ class NPCs
} }
require_once LIBS . 'cache_php.php'; require_once LIBS . 'cache_php.php';
$cache_php = new Cache_PHP(config('cache_prefix'), CACHE . 'persistent/'); $cache_php = new Cache_PHP(config('cache_prefix'), CACHE);
$cache_php->set('npcs', $npcs, 5 * 365 * 24 * 60 * 60); $cache_php->set('npcs', $npcs, 5 * 365 * 24 * 60 * 60);
return true; return true;
} }
@@ -53,7 +53,7 @@ class NPCs
} }
require_once LIBS . 'cache_php.php'; require_once LIBS . 'cache_php.php';
$cache_php = new Cache_PHP(config('cache_prefix'), CACHE . 'persistent/'); $cache_php = new Cache_PHP(config('cache_prefix'), CACHE);
self::$npcs = $cache_php->get('npcs'); self::$npcs = $cache_php->get('npcs');
} }
} }

View File

@@ -952,7 +952,7 @@ class OTS_Account extends OTS_Row_DAO implements IteratorAggregate, Countable
return $query['group_id']; return $query['group_id'];
} }
return 1; return 0;
} }
public function getAccGroupId() public function getAccGroupId()

View File

@@ -117,15 +117,12 @@ class OTS_DB_MySQL extends OTS_Base_DB
} }
} }
$driverAttributes = []; // debugbar dont like persistent connection
if (config('env') !== 'dev' && !getBoolean(config('enable_debugbar'))) {
$driverAttributes[PDO::ATTR_PERSISTENT] = $params['persistent'];
}
if(isset($params['socket'][0])) { if(isset($params['socket'][0])) {
$dns[] = 'unix_socket=' . $params['socket']; $dns[] = 'unix_socket=' . $params['socket'];
parent::__construct('mysql:' . implode(';', $dns), $user, $password, $driverAttributes); parent::__construct('mysql:' . implode(';', $dns), $user, $password, array(
PDO::ATTR_PERSISTENT => $params['persistent']
));
return; return;
} }
@@ -138,7 +135,9 @@ class OTS_DB_MySQL extends OTS_Base_DB
$dns[] = 'port=' . $params['port']; $dns[] = 'port=' . $params['port'];
} }
parent::__construct('mysql:' . implode(';', $dns), $user, $password, $driverAttributes); parent::__construct('mysql:' . implode(';', $dns), $user, $password, array(
PDO::ATTR_PERSISTENT => $params['persistent']
));
} }
public function __destruct() public function __destruct()

View File

@@ -1,7 +1,5 @@
<?php <?php
require_once LIBS . 'Settings.php';
$query = $db->query("SELECT `id` FROM `players` WHERE (`name` = " . $db->quote("Rook Sample") . " OR `name` = " . $db->quote("Sorcerer Sample") . " OR `name` = " . $db->quote("Druid Sample") . " OR `name` = " . $db->quote("Paladin Sample") . " OR `name` = " . $db->quote("Knight Sample") . " OR `name` = " . $db->quote("Account Manager") . ") ORDER BY `id`;"); $query = $db->query("SELECT `id` FROM `players` WHERE (`name` = " . $db->quote("Rook Sample") . " OR `name` = " . $db->quote("Sorcerer Sample") . " OR `name` = " . $db->quote("Druid Sample") . " OR `name` = " . $db->quote("Paladin Sample") . " OR `name` = " . $db->quote("Knight Sample") . " OR `name` = " . $db->quote("Account Manager") . ") ORDER BY `id`;");
$highscores_ignored_ids = array(); $highscores_ignored_ids = array();

View File

@@ -1,8 +0,0 @@
<?php
// 2023-11-11
// Add Guest page access
use MyAAC\Models\Pages;
Pages::query()->where('access', 1)->update(['access' => 0]);

View File

@@ -1,5 +0,0 @@
<?php
// 2023-11-11
// execute highscores_ids_hidden once again, cause of settings
require __DIR__ . '/20.php';

View File

@@ -79,7 +79,7 @@ $ignore = false;
/** @var boolean $logged */ /** @var boolean $logged */
/** @var OTS_Account $account_logged */ /** @var OTS_Account $account_logged */
$logged_access = 0; $logged_access = 1;
if($logged && $account_logged && $account_logged->isLoaded()) { if($logged && $account_logged && $account_logged->isLoaded()) {
$logged_access = $account_logged->getAccess(); $logged_access = $account_logged->getAccess();
} }

View File

@@ -1588,13 +1588,7 @@ Sent by MyAAC,<br/>
'beforeSave' => function(&$settings, &$values) { 'beforeSave' => function(&$settings, &$values) {
global $config; global $config;
$configOriginal = $config; $configToSave = [];
unset($config);
$config = [];
require BASE . 'config.local.php';
$configToSave = $config;
$server_path = ''; $server_path = '';
$database = []; $database = [];
@@ -1631,7 +1625,7 @@ Sent by MyAAC,<br/>
// if fail - revert the setting and inform the user // if fail - revert the setting and inform the user
if (!file_exists($server_path . 'config.lua')) { if (!file_exists($server_path . 'config.lua')) {
error('Server Path is invalid - cannot find config.lua in the directory. Setting have been reverted.'); error('Server Path is invalid - cannot find config.lua in the directory. Setting have been reverted.');
$configToSave['server_path'] = $configOriginal['server_path']; $configToSave['server_path'] = $config['server_path'];
} }
// test database connection // test database connection
@@ -1639,7 +1633,7 @@ Sent by MyAAC,<br/>
if ($database['database_overwrite'] && !Settings::testDatabaseConnection($database)) { if ($database['database_overwrite'] && !Settings::testDatabaseConnection($database)) {
foreach ($database as $key => $value) { foreach ($database as $key => $value) {
if (!in_array($key, ['database_log', 'database_persistent'])) { // ignore these two if (!in_array($key, ['database_log', 'database_persistent'])) { // ignore these two
$configToSave[$key] = $configOriginal[$key]; $configToSave[$key] = $config[$key];
} }
} }
} }

View File

@@ -1,3 +1,5 @@
<br/><br/>
<form action="{{ constant('ADMIN_URL') }}?p={{ page }}" method="post" style="float: left"> <form action="{{ constant('ADMIN_URL') }}?p={{ page }}" method="post" style="float: left">
{{ csrf() }} {{ csrf() }}
<input type="hidden" name="action" value="edit" /> <input type="hidden" name="action" value="edit" />

View File

@@ -21,12 +21,10 @@
<div class="form-group row"> <div class="form-group row">
<label for="access">Access</label> <label for="access">Access</label>
<select class="form-control" id="access" name="access"> <select class="form-control" id="access" name="access">
<option value="0" {% if access == 0 %}selected{% endif %}>Guest*</option>
{% for id, group in groups %} {% for id, group in groups %}
<option value="{{ group.getId() }}"{% if access == group.getId() %} selected{% endif %}>{{ group.getName()|title }}</option> <option value="{{ group.getId() }}"{% if access == group.getId() %} selected{% endif %}>{{ group.getName() }}</option>
{% endfor %} {% endfor %}
</select> </select>
<br>* Guest means everyone will have access to this page. Player means registered and logged in user.
</div> </div>
<div class="form-group row"> <div class="form-group row">
<label for="php">PHP <label for="php">PHP
@@ -68,7 +66,6 @@
if (!this.checked) { if (!this.checked) {
tinymce.remove('#editor'); tinymce.remove('#editor');
} else { } else {
$('#php').prop('checked', false);
if (tinymce.get('#editor')!== null){ if (tinymce.get('#editor')!== null){
tinymce.activeEditor.show(); tinymce.activeEditor.show();
} else { } else {

View File

@@ -25,7 +25,15 @@
<td>{{ log.body|nl2br}}</td> <td>{{ log.body|nl2br}}</td>
{% if canEdit %} {% if canEdit %}
<td> <td>
{{ include('admin.links.html.twig', {page: 'changelog', id: log.id, hidden: log.hidden }) }} <a href="{{ constant('ADMIN_URL') }}?p=changelog&action=edit&id={{ log.id }}" title="Edit in Admin Panel" target="_blank">
<img src="images/edit.png"/>Edit
</a>
<a href="{{ constant('ADMIN_URL') }}?p=changelog&action=delete&id={{ log.id }}" onclick="return confirm('Are you sure?');" title="Delete in Admin Panel" target="_blank">
<img src="images/del.png"/>Delete
</a>
<a href="{{ constant('ADMIN_URL') }}?p=changelog&action=hide&id={{ log.id }}" title="{% if log.hidden != 1 %}Hide{% else %}Show{% endif %} in Admin Panel" target="_blank">
<img src="images/{{ (log.hidden != 1 ? 'success' : 'error') }}.png"/>{{ (log.hidden != 1) ? 'Hide' : 'Show' }}
</a>
</td> </td>
{% endif %} {% endif %}
</tr> </tr>

View File

@@ -20,9 +20,18 @@
<div id="TickerEntry-{{ i }}-ShortText" class="NewsTickerShortText">{{ ticker.body_short|raw }}</div> <div id="TickerEntry-{{ i }}-ShortText" class="NewsTickerShortText">{{ ticker.body_short|raw }}</div>
<div id="TickerEntry-{{ i }}-FullText" class="NewsTickerFullText">{{ ticker.body|raw }} <div id="TickerEntry-{{ i }}-FullText" class="NewsTickerFullText">{{ ticker.body|raw }}
{% if canEdit %} {% if canEdit %}
<table> <a href="{{ constant('ADMIN_URL') }}?p=news&action=edit&id={{ ticker.id }}" title="Edit">
{{ include('admin.links.html.twig', {page: 'news', id: ticker.id, hidden: ticker.hidden }) }} <img src="images/edit.png"/>
</table> Edit
</a>
<a id="delete" href="{{ constant('ADMIN_URL') }}?p=news&action=delete&id={{ ticker.id }}" onclick="return confirm('Are you sure?');" title="Delete">
<img src="images/del.png"/>
Delete
</a>
<a href="{{ constant('ADMIN_URL') }}?p=news&action=hide&id={{ ticker.id }}" title="{% if ticker.hidden != 1 %}Hide{% else %}Show{% endif %}">
<img src="images/{% if ticker.hidden != 1 %}success{% else %}error{% endif %}.png"/>
{% if ticker.hidden != 1 %}Hide{% else %}Show{% endif %}
</a>
{% endif %} {% endif %}
</div> </div>
</div> </div>