mirror of
https://github.com/slawkens/myaac.git
synced 2025-07-09 13:28:32 +02:00
Compare commits
20 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2fe9924437 | ||
![]() |
f0f2e3785f | ||
![]() |
36ca755243 | ||
![]() |
f17269e44c | ||
![]() |
dcb96f4ce1 | ||
![]() |
a89f9a8484 | ||
![]() |
45d6047031 | ||
![]() |
c92148d467 | ||
![]() |
b4b62442fe | ||
![]() |
047742848b | ||
![]() |
fe8281594e | ||
![]() |
0bff910a05 | ||
![]() |
6d43fc181f | ||
![]() |
13d33822b5 | ||
![]() |
f78ebad136 | ||
![]() |
d90fa323d7 | ||
![]() |
181131f7f3 | ||
![]() |
0da524fefe | ||
![]() |
6cf4b9dac5 | ||
![]() |
5cfa3a697f |
@ -1,5 +1,14 @@
|
||||
# Changelog
|
||||
|
||||
## [1.7.1 - 27.06.2025]
|
||||
|
||||
### Changed
|
||||
* Rename plugin:install:install to plugin:setup, also add alias to previous command (https://github.com/slawkens/myaac/commit/13d33822b59df349199e885a78a3d6beb0863d0b)
|
||||
|
||||
### Fixed
|
||||
* Fix commands: setup + cache:clear (https://github.com/slawkens/myaac/commit/0da524fefe93b3028392e9014550eea3324d3a22, https://github.com/slawkens/myaac/commit/fe8281594e989f00280ba1adc734a9198c6b5cc1)
|
||||
* Fix polls link in tibiacom template (https://github.com/slawkens/myaac/commit/d90fa323d7c77d81768df60feeb1c374b1650a0c)
|
||||
|
||||
## [1.7 - 22.06.2025]
|
||||
|
||||
### Added
|
||||
|
@ -27,6 +27,13 @@ $nameOrNumberColumn = getAccountIdentityColumn();
|
||||
|
||||
$hasSecretColumn = $db->hasColumn('accounts', 'secret');
|
||||
$hasCoinsColumn = $db->hasColumn('accounts', 'coins');
|
||||
|
||||
$hasCoinsTransferableColumn = $db->hasColumn('accounts', 'coins_transferable');
|
||||
$hasTransferableCoinsColumn = $db->hasColumn('accounts', 'transferable_coins');
|
||||
$coinsTransferableColumn =
|
||||
$hasTransferableCoinsColumn ?
|
||||
'transferable_coins' : 'coins_transferable';
|
||||
|
||||
$hasPointsColumn = $db->hasColumn('accounts', 'premium_points');
|
||||
$hasTypeColumn = $db->hasColumn('accounts', 'type');
|
||||
$hasGroupColumn = $db->hasColumn('accounts', 'group_id');
|
||||
@ -136,11 +143,18 @@ else if (isset($_REQUEST['search'])) {
|
||||
if (!Validator::email($email))
|
||||
$errors['email'] = Validator::getLastError();
|
||||
|
||||
//tibia coins
|
||||
// tibia coins
|
||||
if ($hasCoinsColumn) {
|
||||
$t_coins = $_POST['t_coins'];
|
||||
verify_number($t_coins, 'Tibia coins', 12);
|
||||
}
|
||||
|
||||
// transferable tibia coins
|
||||
if ($hasCoinsTransferableColumn || $hasTransferableCoinsColumn) {
|
||||
$t_coins_transferable = $_POST['t_coins_transferable'];
|
||||
verify_number($t_coins_transferable, 'Transferable Tibia coins', 12);
|
||||
}
|
||||
|
||||
// prem days
|
||||
$p_days = (int)$_POST['p_days'];
|
||||
verify_number($p_days, 'Prem days', 11);
|
||||
@ -185,12 +199,18 @@ else if (isset($_REQUEST['search'])) {
|
||||
if ($hasSecretColumn) {
|
||||
$account->setCustomField('secret', $secret);
|
||||
}
|
||||
|
||||
$account->setCustomField('key', $key);
|
||||
$account->setEMail($email);
|
||||
|
||||
if ($hasCoinsColumn) {
|
||||
$account->setCustomField('coins', $t_coins);
|
||||
}
|
||||
|
||||
if ($hasCoinsTransferableColumn || $hasTransferableCoinsColumn) {
|
||||
$account->setCustomField($coinsTransferableColumn, $t_coins_transferable);
|
||||
}
|
||||
|
||||
$lastDay = 0;
|
||||
if($p_days != 0 && $p_days != OTS_Account::GRATIS_PREMIUM_DAYS) {
|
||||
$lastDay = time();
|
||||
@ -401,6 +421,12 @@ else if (isset($_REQUEST['search'])) {
|
||||
<input type="text" class="form-control" id="t_coins" name="t_coins" autocomplete="off" maxlength="11" value="<?php echo $account->getCustomField('coins') ?>"/>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php if ($hasCoinsTransferableColumn || $hasTransferableCoinsColumn): ?>
|
||||
<div class="col-12 col-sm-12 col-lg-6">
|
||||
<label for="t_coins_transferable">Transferable Tibia Coins:</label>
|
||||
<input type="text" class="form-control" id="t_coins_transferable" name="t_coins_transferable" autocomplete="off" maxlength="11" value="<?php echo $account->getCustomField($coinsTransferableColumn) ?>"/>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="col-12 col-sm-12 col-lg-6">
|
||||
<label for="p_days">Premium Days:</label>
|
||||
<input type="text" class="form-control" id="p_days" name="p_days" autocomplete="off" maxlength="11" value="<?php echo $account->getPremDays(); ?>"/>
|
||||
|
@ -26,7 +26,7 @@
|
||||
if (version_compare(phpversion(), '8.1', '<')) die('PHP version 8.1 or higher is required.');
|
||||
|
||||
const MYAAC = true;
|
||||
const MYAAC_VERSION = '1.7';
|
||||
const MYAAC_VERSION = '1.7.2-dev';
|
||||
const DATABASE_VERSION = 45;
|
||||
const TABLE_PREFIX = 'myaac_';
|
||||
define('START_TIME', microtime(true));
|
||||
|
@ -162,15 +162,6 @@ if(setting('core.anonymous_usage_statistics')) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @var OTS_Account $account_logged
|
||||
*/
|
||||
if ($logged && admin()) {
|
||||
$content .= $twig->render('admin-bar.html.twig', [
|
||||
'username' => USE_ACCOUNT_NAME ? $account_logged->getName() : $account_logged->getId()
|
||||
]);
|
||||
}
|
||||
|
||||
$title_full = (isset($title) ? $title . ' - ' : '') . $config['lua']['serverName'];
|
||||
require $template_path . '/' . $template_index;
|
||||
|
||||
|
@ -512,6 +512,13 @@ function template_place_holder($type): string
|
||||
}
|
||||
elseif ($type === 'body_start') {
|
||||
$ret .= $twig->render('browsehappy.html.twig');
|
||||
|
||||
if (admin()) {
|
||||
global $account_logged;
|
||||
$ret .= $twig->render('admin-bar.html.twig', [
|
||||
'username' => USE_ACCOUNT_NAME ? $account_logged->getName() : $account_logged->getId()
|
||||
]);
|
||||
}
|
||||
}
|
||||
elseif($type === 'body_end') {
|
||||
$ret .= template_ga_code();
|
||||
@ -982,11 +989,12 @@ function load_config_lua($filename)
|
||||
foreach($lines as $ln => $line)
|
||||
{
|
||||
$line = trim($line);
|
||||
if(@$line[0] === '{' || @$line[0] === '}') {
|
||||
if(isset($line[0]) && ($line[0] === '{' || $line[0] === '}')) {
|
||||
// arrays are not supported yet
|
||||
// just ignore the error
|
||||
continue;
|
||||
}
|
||||
|
||||
$tmp_exp = explode('=', $line, 2);
|
||||
if(str_contains($line, 'dofile')) {
|
||||
$delimiter = '"';
|
||||
@ -1274,9 +1282,6 @@ function clearCache()
|
||||
deleteDirectory(CACHE . 'plugins', ['index.html'], true);
|
||||
deleteDirectory(CACHE, ['signatures', 'twig', 'plugins', 'index.html', 'persistent'], true);
|
||||
|
||||
// routes cache
|
||||
clearRouteCache();
|
||||
|
||||
global $hooks;
|
||||
$hooks->trigger(HOOK_CACHE_CLEAR, ['cache' => Cache::getInstance()]);
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
* @link https://my-aac.org
|
||||
*/
|
||||
defined('MYAAC') or die('Direct access not allowed!');
|
||||
$title = '404 Not Found';
|
||||
$title = 'Not Found';
|
||||
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
?>
|
||||
|
@ -8,7 +8,7 @@
|
||||
* @link https://my-aac.org
|
||||
*/
|
||||
defined('MYAAC') or die('Direct access not allowed!');
|
||||
$title = '405 Method Not Allowed';
|
||||
$title = 'Method Not Allowed';
|
||||
|
||||
header('HTTP/1.0 405 Method Not Allowed');
|
||||
?>
|
||||
|
@ -1062,6 +1062,12 @@ Sent by MyAAC,<br/>
|
||||
'desc' => 'How often to update highscores from database in minutes. Too low may slow down your website.<br/>0 to disable.',
|
||||
'default' => 15,
|
||||
],
|
||||
'highscores_skills_box' => [
|
||||
'name' => 'Display Skills Box',
|
||||
'type' => 'boolean',
|
||||
'desc' => 'show "Choose a skill" box on the highscores (allowing peoples to sort highscores by skill)?',
|
||||
'default' => true,
|
||||
],
|
||||
'highscores_vocation_box' => [
|
||||
'name' => 'Display Vocation Box',
|
||||
'type' => 'boolean',
|
||||
|
@ -17,10 +17,7 @@ class CacheClearCommand extends Command
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||
{
|
||||
global $hooks;
|
||||
$hooks = new Hooks();
|
||||
$hooks->load();
|
||||
$hooks->trigger(HOOK_INIT);
|
||||
require SYSTEM . 'init.php';
|
||||
|
||||
$io = new SymfonyStyle($input, $output);
|
||||
|
||||
|
@ -12,9 +12,10 @@ class MailSendCommand extends Command
|
||||
{
|
||||
protected function configure(): void
|
||||
{
|
||||
$this->setName('mail:send')
|
||||
$this->setName('email:send')
|
||||
->setAliases(['mail:send'])
|
||||
->setDescription('This command sends E-Mail to single user. Message can be provided as follows: ' . PHP_EOL
|
||||
. ' echo "Hello World" | php sa email:send --subject="This is the subject" test@test.com')
|
||||
. ' echo "Hello World" | php aac email:send --subject="This is the subject" test@test.com')
|
||||
->addArgument('recipient', InputArgument::REQUIRED, 'Email, Account Name, Account id or Player Name')
|
||||
->addOption('subject', 's', InputOption::VALUE_REQUIRED, 'Subject');
|
||||
}
|
||||
|
@ -12,7 +12,8 @@ class PluginInstallInstallCommand extends Command
|
||||
{
|
||||
protected function configure(): void
|
||||
{
|
||||
$this->setName('plugin:install:install')
|
||||
$this->setName('plugin:setup')
|
||||
->setAliases(['plugin:install:install'])
|
||||
->setDescription('This command executes the "install" part of the plugin')
|
||||
->addArgument('plugin', InputArgument::REQUIRED, 'Plugin name');
|
||||
}
|
||||
|
@ -532,193 +532,192 @@ class Plugins {
|
||||
self::$plugin_json = $plugin_json;
|
||||
if ($plugin_json == null) {
|
||||
self::$warnings[] = 'Cannot load ' . $file_name . '. File might be not a valid json code.';
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
$continue = true;
|
||||
|
||||
if(!isset($plugin_json['name']) || empty(trim($plugin_json['name']))) {
|
||||
self::$error = 'Plugin "name" tag is not set.';
|
||||
$continue = true;
|
||||
|
||||
if(!isset($plugin_json['name']) || empty(trim($plugin_json['name']))) {
|
||||
self::$error = 'Plugin "name" tag is not set.';
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!isset($plugin_json['version']) || empty(trim($plugin_json['version']))) {
|
||||
self::$warnings[] = 'Plugin "version" tag is not set.';
|
||||
}
|
||||
|
||||
if(isset($plugin_json['require'])) {
|
||||
$require = $plugin_json['require'];
|
||||
|
||||
$myaac_satified = true;
|
||||
if(isset($require['myaac_'])) {
|
||||
$require_myaac = $require['myaac_'];
|
||||
if(!Semver::satisfies(MYAAC_VERSION, $require_myaac)) {
|
||||
$myaac_satified = false;
|
||||
}
|
||||
}
|
||||
else if(isset($require['myaac'])) {
|
||||
$require_myaac = $require['myaac'];
|
||||
if(version_compare(MYAAC_VERSION, $require_myaac, '<')) {
|
||||
$myaac_satified = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$myaac_satified) {
|
||||
self::$error = "Your AAC version doesn't meet the requirement of this plugin. Required version is: " . $require_myaac . ", and you're using version " . MYAAC_VERSION . ".";
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!isset($plugin_json['version']) || empty(trim($plugin_json['version']))) {
|
||||
self::$warnings[] = 'Plugin "version" tag is not set.';
|
||||
$php_satisfied = true;
|
||||
if(isset($require['php_'])) {
|
||||
$require_php = $require['php_'];
|
||||
if(!Semver::satisfies(phpversion(), $require_php)) {
|
||||
$php_satisfied = false;
|
||||
}
|
||||
}
|
||||
else if(isset($require['php'])) {
|
||||
$require_php = $require['php'];
|
||||
if(version_compare(phpversion(), $require_php, '<')) {
|
||||
$php_satisfied = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($plugin_json['require'])) {
|
||||
$require = $plugin_json['require'];
|
||||
if(!$php_satisfied) {
|
||||
self::$error = "Your PHP version doesn't meet the requirement of this plugin. Required version is: " . $require_php . ", and you're using version " . phpversion() . ".";
|
||||
$continue = false;
|
||||
}
|
||||
|
||||
$myaac_satified = true;
|
||||
if(isset($require['myaac_'])) {
|
||||
$require_myaac = $require['myaac_'];
|
||||
if(!Semver::satisfies(MYAAC_VERSION, $require_myaac)) {
|
||||
$myaac_satified = false;
|
||||
$database_satisfied = true;
|
||||
if(isset($require['database_'])) {
|
||||
$require_database = $require['database_'];
|
||||
if(!Semver::satisfies(DATABASE_VERSION, $require_database)) {
|
||||
$database_satisfied = false;
|
||||
}
|
||||
}
|
||||
else if(isset($require['database'])) {
|
||||
$require_database = $require['database'];
|
||||
if(version_compare(DATABASE_VERSION, $require_database, '<')) {
|
||||
$database_satisfied = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$database_satisfied) {
|
||||
self::$error = "Your database version doesn't meet the requirement of this plugin. Required version is: " . $require_database . ", and you're using version " . DATABASE_VERSION . ".";
|
||||
$continue = false;
|
||||
}
|
||||
|
||||
if($continue) {
|
||||
foreach($require as $req => $version) {
|
||||
$req = strtolower(trim($req));
|
||||
$version = trim($version);
|
||||
|
||||
if(in_array($req, array('myaac', 'myaac_', 'php', 'php_', 'database', 'database_'))) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if(isset($require['myaac'])) {
|
||||
$require_myaac = $require['myaac'];
|
||||
if(version_compare(MYAAC_VERSION, $require_myaac, '<')) {
|
||||
$myaac_satified = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$myaac_satified) {
|
||||
self::$error = "Your AAC version doesn't meet the requirement of this plugin. Required version is: " . $require_myaac . ", and you're using version " . MYAAC_VERSION . ".";
|
||||
return false;
|
||||
}
|
||||
if(in_array($req, array('php-ext', 'php-extension'))) { // require php extension
|
||||
$tmpDisplayError = false;
|
||||
$explode = explode(',', $version);
|
||||
|
||||
$php_satisfied = true;
|
||||
if(isset($require['php_'])) {
|
||||
$require_php = $require['php_'];
|
||||
if(!Semver::satisfies(phpversion(), $require_php)) {
|
||||
$php_satisfied = false;
|
||||
}
|
||||
}
|
||||
else if(isset($require['php'])) {
|
||||
$require_php = $require['php'];
|
||||
if(version_compare(phpversion(), $require_php, '<')) {
|
||||
$php_satisfied = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$php_satisfied) {
|
||||
self::$error = "Your PHP version doesn't meet the requirement of this plugin. Required version is: " . $require_php . ", and you're using version " . phpversion() . ".";
|
||||
$continue = false;
|
||||
}
|
||||
|
||||
$database_satisfied = true;
|
||||
if(isset($require['database_'])) {
|
||||
$require_database = $require['database_'];
|
||||
if(!Semver::satisfies(DATABASE_VERSION, $require_database)) {
|
||||
$database_satisfied = false;
|
||||
}
|
||||
}
|
||||
else if(isset($require['database'])) {
|
||||
$require_database = $require['database'];
|
||||
if(version_compare(DATABASE_VERSION, $require_database, '<')) {
|
||||
$database_satisfied = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$database_satisfied) {
|
||||
self::$error = "Your database version doesn't meet the requirement of this plugin. Required version is: " . $require_database . ", and you're using version " . DATABASE_VERSION . ".";
|
||||
$continue = false;
|
||||
}
|
||||
|
||||
if($continue) {
|
||||
foreach($require as $req => $version) {
|
||||
$req = strtolower(trim($req));
|
||||
$version = trim($version);
|
||||
|
||||
if(in_array($req, array('myaac', 'myaac_', 'php', 'php_', 'database', 'database_'))) {
|
||||
continue;
|
||||
foreach ($explode as $item) {
|
||||
if(!extension_loaded($item)) {
|
||||
$errors[] = "This plugin requires php extension: " . $item . " to be installed.";
|
||||
$tmpDisplayError = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(in_array($req, array('php-ext', 'php-extension'))) { // require php extension
|
||||
$tmpDisplayError = false;
|
||||
$explode = explode(',', $version);
|
||||
|
||||
foreach ($explode as $item) {
|
||||
if(!extension_loaded($item)) {
|
||||
$errors[] = "This plugin requires php extension: " . $item . " to be installed.";
|
||||
$tmpDisplayError = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($tmpDisplayError) {
|
||||
self::$error = implode('<br/>', $errors);
|
||||
$continue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if($req == 'table') {
|
||||
$tmpDisplayError = false;
|
||||
$explode = explode(',', $version);
|
||||
foreach ($explode as $item) {
|
||||
if(!$db->hasTable($item)) {
|
||||
$errors[] = "This plugin requires table: " . $item . " to exist in the database.";
|
||||
$tmpDisplayError = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($tmpDisplayError) {
|
||||
self::$error = implode('<br/>', $errors);
|
||||
$continue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if($req == 'column') {
|
||||
$tmpDisplayError = false;
|
||||
$explode = explode(',', $version);
|
||||
foreach ($explode as $item) {
|
||||
$tmp = explode('.', $item);
|
||||
|
||||
if(count($tmp) == 2) {
|
||||
if(!$db->hasColumn($tmp[0], $tmp[1])) {
|
||||
$errors[] = "This plugin requires database column: " . $tmp[0] . "." . $tmp[1] . " to exist in database.";
|
||||
$tmpDisplayError = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
self::$warnings[] = "Invalid plugin require column: " . $item;
|
||||
}
|
||||
}
|
||||
|
||||
if ($tmpDisplayError) {
|
||||
self::$error = implode('<br/>', $errors);
|
||||
$continue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(strpos($req, 'ext-') !== false) {
|
||||
$tmp = explode('-', $req);
|
||||
if(count($tmp) == 2) {
|
||||
if(!extension_loaded($tmp[1]) || !Semver::satisfies(phpversion($tmp[1]), $version)) {
|
||||
self::$error = "This plugin requires php extension: " . $tmp[1] . ", version " . $version . " to be installed.";
|
||||
$continue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(!self::is_installed($req, $version)) {
|
||||
self::$error = "This plugin requires another plugin to run correctly. The another plugin is: " . $req . ", with version " . $version . ".";
|
||||
if ($tmpDisplayError) {
|
||||
self::$error = implode('<br/>', $errors);
|
||||
$continue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if($req == 'table') {
|
||||
$tmpDisplayError = false;
|
||||
$explode = explode(',', $version);
|
||||
foreach ($explode as $item) {
|
||||
if(!$db->hasTable($item)) {
|
||||
$errors[] = "This plugin requires table: " . $item . " to exist in the database.";
|
||||
$tmpDisplayError = true;
|
||||
}
|
||||
}
|
||||
|
||||
if($continue) {
|
||||
if(!$zip->extractTo(BASE)) { // "Real" Install
|
||||
self::$error = 'There was a problem with extracting zip archive to base directory.';
|
||||
$zip->close();
|
||||
return false;
|
||||
}
|
||||
|
||||
$install = $plugin_json['install'] ?? '';
|
||||
if (self::getAutoLoadOption($plugin_json, 'install', true) && is_file(PLUGINS . $pluginFilename . '/install.php')) {
|
||||
$install = 'plugins/' . $pluginFilename . '/install.php';
|
||||
}
|
||||
|
||||
if (!empty($install)) {
|
||||
if (file_exists(BASE . $install)) {
|
||||
$db->revalidateCache();
|
||||
require BASE . $install;
|
||||
$db->revalidateCache();
|
||||
if ($tmpDisplayError) {
|
||||
self::$error = implode('<br/>', $errors);
|
||||
$continue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
self::$warnings[] = 'Cannot load install script. Your plugin might be not working correctly.';
|
||||
else if($req == 'column') {
|
||||
$tmpDisplayError = false;
|
||||
$explode = explode(',', $version);
|
||||
foreach ($explode as $item) {
|
||||
$tmp = explode('.', $item);
|
||||
|
||||
if(count($tmp) == 2) {
|
||||
if(!$db->hasColumn($tmp[0], $tmp[1])) {
|
||||
$errors[] = "This plugin requires database column: " . $tmp[0] . "." . $tmp[1] . " to exist in database.";
|
||||
$tmpDisplayError = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
self::$warnings[] = "Invalid plugin require column: " . $item;
|
||||
}
|
||||
}
|
||||
|
||||
if ($tmpDisplayError) {
|
||||
self::$error = implode('<br/>', $errors);
|
||||
$continue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(strpos($req, 'ext-') !== false) {
|
||||
$tmp = explode('-', $req);
|
||||
if(count($tmp) == 2) {
|
||||
if(!extension_loaded($tmp[1]) || !Semver::satisfies(phpversion($tmp[1]), $version)) {
|
||||
self::$error = "This plugin requires php extension: " . $tmp[1] . ", version " . $version . " to be installed.";
|
||||
$continue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(!self::is_installed($req, $version)) {
|
||||
self::$error = "This plugin requires another plugin to run correctly. The another plugin is: " . $req . ", with version " . $version . ".";
|
||||
$continue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
clearCache();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
if(!$continue) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!$zip->extractTo(BASE)) { // "Real" Install
|
||||
self::$error = 'There was a problem with extracting zip archive to base directory.';
|
||||
$zip->close();
|
||||
return false;
|
||||
}
|
||||
|
||||
$install = $plugin_json['install'] ?? '';
|
||||
if (self::getAutoLoadOption($plugin_json, 'install', true) && is_file(PLUGINS . $pluginFilename . '/install.php')) {
|
||||
$install = 'plugins/' . $pluginFilename . '/install.php';
|
||||
}
|
||||
|
||||
if (!empty($install)) {
|
||||
if (file_exists(BASE . $install)) {
|
||||
$db->revalidateCache();
|
||||
require BASE . $install;
|
||||
$db->revalidateCache();
|
||||
}
|
||||
else {
|
||||
self::$warnings[] = 'Cannot load install script. Your plugin might be not working correctly.';
|
||||
}
|
||||
}
|
||||
|
||||
clearCache();
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function isEnabled($pluginFileName): bool
|
||||
@ -781,15 +780,20 @@ class Plugins {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!isset($plugin_json['install'])) {
|
||||
self::$error = "Plugin doesn't have install options defined. Skipping...";
|
||||
$install = $plugin_json['install'] ?? '';
|
||||
if (self::getAutoLoadOption($plugin_json, 'install', true) && is_file(PLUGINS . $plugin_name . '/install.php')) {
|
||||
$install = 'plugins/' . $plugin_name . '/install.php';
|
||||
}
|
||||
|
||||
if (empty($install)) {
|
||||
self::$error = "This plugin doesn't seem to have install script defined.";
|
||||
return false;
|
||||
}
|
||||
|
||||
global $db;
|
||||
if (file_exists(BASE . $plugin_json['install'])) {
|
||||
if (file_exists(BASE . $install)) {
|
||||
$db->revalidateCache();
|
||||
require BASE . $plugin_json['install'];
|
||||
require BASE . $install;
|
||||
$db->revalidateCache();
|
||||
}
|
||||
else {
|
||||
|
@ -91,7 +91,7 @@ else {
|
||||
$file = BASE . $template_path . '/layout_config.ini';
|
||||
}
|
||||
|
||||
$template_ini = parse_ini_file($file);
|
||||
$template_ini = parse_ini_file($file, true);
|
||||
unset($file);
|
||||
|
||||
if ($cache->enabled()) {
|
||||
|
@ -94,8 +94,10 @@
|
||||
{% endif %}
|
||||
</table>
|
||||
</td>
|
||||
{% if setting('core.highscores_skills_box') or setting('core.highscores_vocation_box') %}
|
||||
<td width="5%"></td>
|
||||
<td width="15%" valign="top" align="right">
|
||||
{% if setting('core.highscores_skills_box') %}
|
||||
<table style="border: 0; width: 100%" cellpadding="4" cellspacing="1">
|
||||
<tr bgcolor="{{ config.vdarkborder }}">
|
||||
<td class="white"><B>Choose a skill</B></TD>
|
||||
@ -109,7 +111,8 @@
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
{% if config.highscores_vocation_box %}
|
||||
{% endif %}
|
||||
{% if setting('core.highscores_vocation_box') %}
|
||||
<table border="0" width="100%" cellpadding="4" cellspacing="1">
|
||||
<tr bgcolor="{{ config.vdarkborder }}">
|
||||
<td class="white"><b>Choose a vocation</b></td>
|
||||
@ -126,5 +129,6 @@
|
||||
{% endif %}
|
||||
</td>
|
||||
<td style="width: 18px"></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<div id="CurrentPollBox" class="Themebox" style="background-image:url({{ template_path }}/images/themeboxes/current-poll/currentpollbox.gif);">
|
||||
<div id="CurrentPollText">{{ poll.question }}</div>
|
||||
<a class="ThemeboxButton" href="{{ getLink('polls') }}/{{ poll.id }}" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" style="background-image:url({{ template_path }}/images/global/buttons/sbutton.gif);"><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/global/buttons/sbutton_over.gif);"></div><div class="ButtonText" style="background-image:url({{ template_path }}/images/global/buttons/_sbutton_votenow.gif);"></div>
|
||||
<a class="ThemeboxButton" href="{{ getLink('polls') }}?ìd={{ poll.id }}" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" style="background-image:url({{ template_path }}/images/global/buttons/sbutton.gif);"><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/global/buttons/sbutton_over.gif);"></div><div class="ButtonText" style="background-image:url({{ template_path }}/images/global/buttons/_sbutton_votenow.gif);"></div>
|
||||
</a>
|
||||
<div class="Bottom" style="background-image:url({{ template_path }}/images/general/box-bottom.gif);"></div>
|
||||
</div>
|
||||
|
@ -454,7 +454,7 @@ foreach($config['menu_categories'] as $id => $cat) {
|
||||
|
||||
foreach($config['boxes'] as $box) {
|
||||
/** @var string $template_name */
|
||||
$file = TEMPLATES . $template_name . '/boxes/' . $box . '.php';
|
||||
$file = __DIR__ . '/boxes/' . $box . '.php';
|
||||
if(file_exists($file)) {
|
||||
include($file); ?>
|
||||
<?php
|
||||
|
Loading…
x
Reference in New Issue
Block a user