Some fixes

* more info displayed when cannot connect to database
* added Cache:delete($key) function
* added support for OTHire 0.0.3
* deleted unused ODBC and PostgreSQL files
* fixed support for Gesior layouts
This commit is contained in:
slawkens1
2017-05-02 21:34:41 +02:00
parent d3395e2eaf
commit 769c2942a4
15 changed files with 61 additions and 232 deletions

View File

@@ -65,12 +65,16 @@ defined('MYAAC') or die('Direct access not allowed!');
);
}
catch(PDOException $error) {
if($cache->enabled()) {
$cache->delete('config_lua');
}
die('ERROR: Cannot connect to MySQL database.<br/>' .
'Possible reasons:' .
'<ul>' .
'<li>MySQL is not configured propertly in <i>config.lua</i>.</li>' .
'<li>MySQL server is not running.</li>' .
'</ul>');
'</ul>' . $error);
}
$db = POT::getInstance()->getDBHandle();
?>

View File

@@ -381,6 +381,8 @@ function delete_guild($id)
foreach($rank_list as $rank_in_guild) {
if(fieldExist('rank_id', 'players'))
$players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank->getId() . ' AND `deleted` = 0;');
else if(tableExist('guild_members'))
$players_with_rank = $db->query('SELECT `players`.`id` as `id`, `guild_members`.`rank_id` as `rank_id` FROM `players`, `guild_members` WHERE `guild_members`.`rank_id` = ' . $rank_in_guild->getId() . ' AND `players`.`id` = `guild_members`.`player_id` ORDER BY `name`;');
else
$players_with_rank = $db->query('SELECT `players`.`id` as `id`, `guild_membership`.`rank_id` as `rank_id` FROM `players`, `guild_membership` WHERE `guild_membership`.`rank_id` = ' . $rank_in_guild->getId() . ' AND `players`.`id` = `guild_membership`.`player_id` ORDER BY `name`;');

View File

@@ -91,6 +91,15 @@ else if(isset($config['lua']['data_directory'][0]))
if($tmp[strlen($tmp) - 1] != '/') // do not forget about trailing slash
$tmp .= '/';
}
else if(isset($config['lua']['datadir'][0]))
{
$tmp = $config['lua']['datadir'];
if($tmp[0] != '/')
$tmp = $config['server_path'] . $tmp;
if($tmp[strlen($tmp) - 1] != '/') // do not forget about trailing slash
$tmp .= '/';
}
else
$tmp = $config['server_path'] . 'data/';

View File

@@ -42,6 +42,10 @@ class Cache_APC
return ($var = apc_fetch($this->prefix . $key)) !== false;
}
public function delete($key) {
apc_delete($key);
}
public function enabled() {
return $this->enabled;
}

View File

@@ -41,6 +41,10 @@ class Cache_eAccelerator
return ($var = eaccelerator_get($this->prefix . $key)) !== null;
}
public function delete($key) {
eaccelerator_rm($key);
}
public function enabled() {
return $this->enabled;
}

View File

@@ -51,6 +51,13 @@ class Cache_File
return true;
}
public function delete($key)
{
$file = $this->_name($key);
if(file_exists($file))
unlink($file);
}
public function enabled() {
return $this->enabled;
}

View File

@@ -47,6 +47,10 @@ class Cache_XCache
return true;
}
public function delete($key) {
xcache_unset($key);
}
public function enabled() {
return $this->enabled;
}

View File

@@ -1,110 +0,0 @@
<?php
/**#@+
* @version 0.0.4
* @since 0.0.4
*/
/**
* @package POT
* @version 0.1.3
* @author Wrzasq <wrzasq@gmail.com>
* @copyright 2007 - 2008 (C) by Wrzasq
* @license http://www.gnu.org/licenses/lgpl-3.0.txt GNU Lesser General Public License, Version 3
*/
/**
* ODBC connection interface.
*
* <p>
* At all everything that you really need to read from this class documentation is list of parameters for driver's constructor.
* </p>
*
* @package POT
* @version 0.1.3
*/
class OTS_DB_ODBC extends OTS_Base_DB
{
/**
* Creates database connection.
*
* <p>
* Connects to ODBC data source on given arguments.
* </p>
*
* <p>
* List of parameters for this drivers:
* </p>
*
* <ul>
* <li><var>host</var> - database host.</li>
* <li><var>port</var> - ODBC driver.</li>
* <li><var>database</var> - database name.</li>
* <li><var>user</var> - user login.</li>
* <li><var>password</var> - user password.</li>
* <li><var>source</var> - ODBC data source.</li>
* </ul>
*
* <p>
* Note: Since 0.1.3 version <var>source</var> parameter was added.
* </p>
*
* @version 0.1.3
* @param array $params Connection parameters.
* @throws PDOException On PDO operation error.
*/
public function __construct($params)
{
$user = null;
$password = null;
$dns = array();
if( isset($params['host']) )
{
$dns[] = 'HOSTNAME={' . $params['host'] . '}';
}
if( isset($params['port']) )
{
$dns[] = 'DRIVER={' . $params['port'] . '}';
}
if( isset($params['database']) )
{
$dns[] = 'DATABASE={' . $params['database'] . '}';
}
if( isset($params['user']) )
{
$user = $params['user'];
$dns[] = 'UID={' . $user . '}';
}
if( isset($params['password']) )
{
$password = $params['password'];
$dns[] = 'PWD={' . $user . '}';
}
if( isset($params['prefix']) )
{
$this->prefix = $params['prefix'];
}
// composes DNS
$dns = implode(';', $dns);
// source parameter overwrites all other params
if( isset($params['source']) )
{
$dns = $params['source'];
}
// PDO constructor
parent::__construct('odbc:' . $dns, $user, $password);
}
}
/**#@-*/
?>

View File

@@ -1,103 +0,0 @@
<?php
/**#@+
* @version 0.0.4
* @since 0.0.4
*/
/**
* @package POT
* @version 0.1.3
* @author Wrzasq <wrzasq@gmail.com>
* @copyright 2007 (C) by Wrzasq
* @license http://www.gnu.org/licenses/lgpl-3.0.txt GNU Lesser General Public License, Version 3
*/
/**
* PostgreSQL connection interface.
*
* <p>
* At all everything that you really need to read from this class documentation is list of parameters for driver's constructor.
* </p>
*
* @package POT
* @version 0.1.3
*/
class OTS_DB_PostgreSQL extends OTS_Base_DB
{
/**
* Creates database connection.
*
* <p>
* Connects to PgSQL (PostgreSQL) database on given arguments.
* </p>
*
* <p>
* List of parameters for this drivers:
* </p>
*
* <ul>
* <li><var>host</var> - database server.</li>
* <li><var>port</var> - port (optional, also it is possible to use host:port in <var>host</var> parameter).</li>
* <li><var>database</var> - database name.</li>
* <li><var>user</var> - user login.</li>
* <li><var>password</var> - user password.</li>
* </ul>
*
* @version 0.0.6
* @param array $params Connection parameters.
* @throws PDOException On PDO operation error.
*/
public function __construct($params)
{
$user = null;
$password = null;
$dns = array();
// host:port support
if( strpos(':', $params['host']) !== false)
{
$host = explode(':', $params['host'], 2);
$params['host'] = $host[0];
$params['port'] = $host[1];
}
if( isset($params['host']) )
{
$dns[] = 'host=' . $params['host'];
}
if( isset($params['port']) )
{
$dns[] = 'port=' . $params['port'];
}
if( isset($params['database']) )
{
$dns[] = 'dbname=' . $params['database'];
}
if( isset($params['user']) )
{
$user = $params['user'];
}
if( isset($params['password']) )
{
$password = $params['password'];
}
if( isset($params['prefix']) )
{
$this->prefix = $params['prefix'];
}
// PDO constructor
parent::__construct('pgsql:' . implode(' ', $dns), $user, $password);
}
}
/**#@-*/
?>

View File

@@ -12,6 +12,11 @@
defined('MYAAC') or die('Direct access not allowed!');
$title = 'Guilds';
if(tableExist('guild_members'))
define('GUILD_MEMBERS_TABLE', 'guild_members');
else
define('GUILD_MEMBERS_TABLE', 'guild_membership');
if($action == 'login')
{
if(check_guild_name($_REQUEST['guild']))
@@ -261,7 +266,7 @@ if($action == 'show')
if(fieldExist('rank_id', 'players'))
$players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank->getId() . ' AND `deleted` = 0;');
else
$players_with_rank = $db->query('SELECT `players`.`id` as `id`, `guild_membership`.`rank_id` as `rank_id` FROM `players`, `guild_membership` WHERE `guild_membership`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `guild_membership`.`player_id` ORDER BY `name`;');
$players_with_rank = $db->query('SELECT `players`.`id` as `id`, `' . GUILD_MEMBERS_TABLE . '`.`rank_id` as `rank_id` FROM `players`, `' . GUILD_MEMBERS_TABLE . '` WHERE `' . GUILD_MEMBERS_TABLE . '`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `' . GUILD_MEMBERS_TABLE . '`.`player_id` ORDER BY `name`;');
$players_with_rank_number = $players_with_rank->rowCount();
if($players_with_rank_number > 0)
@@ -491,7 +496,7 @@ if($action == 'changerank')
if(fieldExist('rank_id', 'players'))
$players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank->getId() . ' AND `deleted` = 0;');
else
$players_with_rank = $db->query('SELECT `players`.`id` as `id`, `guild_membership`.`rank_id` as `rank_id` FROM `players`, `guild_membership` WHERE `guild_membership`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `guild_membership`.`player_id` ORDER BY `name`;');
$players_with_rank = $db->query('SELECT `players`.`id` as `id`, `' . GUILD_MEMBERS_TABLE . '`.`rank_id` as `rank_id` FROM `players`, `' . GUILD_MEMBERS_TABLE . '` WHERE `' . GUILD_MEMBERS_TABLE . '`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `' . GUILD_MEMBERS_TABLE . '`.`player_id` ORDER BY `name`;');
$players_with_rank_number = $players_with_rank->rowCount();
if(count($players_with_rank) > 0)
@@ -573,7 +578,7 @@ if($action == 'changerank')
if(fieldExist('rank_id', 'players'))
$players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank->getId() . ' AND `deleted` = 0;');
else
$players_with_rank = $db->query('SELECT `players`.`id` as `id`, `guild_membership`.`rank_id` as `rank_id` FROM `players`, `guild_membership` WHERE `guild_membership`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `guild_membership`.`player_id` ORDER BY `name`;');
$players_with_rank = $db->query('SELECT `players`.`id` as `id`, `' . GUILD_MEMBERS_TABLE . '`.`rank_id` as `rank_id` FROM `players`, `' . GUILD_MEMBERS_TABLE . '` WHERE `' . GUILD_MEMBERS_TABLE . '`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `' . GUILD_MEMBERS_TABLE . '`.`player_id` ORDER BY `name`;');
$players_with_rank_number = $players_with_rank->rowCount();
if(count($players_with_rank) > 0)
@@ -1598,7 +1603,7 @@ else
if(fieldExist('rank_id', 'players'))
$players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank->getId() . ' AND `deleted` = 0;');
else
$players_with_rank = $db->query('SELECT `players`.`id` as `id`, `guild_membership`.`rank_id` as `rank_id` FROM `players`, `guild_membership` WHERE `guild_membership`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `guild_membership`.`player_id` ORDER BY `name`;');
$players_with_rank = $db->query('SELECT `players`.`id` as `id`, `' . GUILD_MEMBERS_TABLE . '`.`rank_id` as `rank_id` FROM `players`, `' . GUILD_MEMBERS_TABLE . '` WHERE `' . GUILD_MEMBERS_TABLE . '`.`rank_id` = ' . $rank->getId() . ' AND `players`.`id` = `' . GUILD_MEMBERS_TABLE . '`.`player_id` ORDER BY `name`;');
$players_with_rank_number = $players_with_rank->rowCount();
if($players_with_rank_number > 0) {

View File

@@ -36,7 +36,9 @@ if($config['template_allow_change'])
}
$template_path = 'templates/' . $template_name;
if(!file_exists($template_path . '/config.php'))
if(!file_exists($template_path . '/index.php') &&
!file_exists($template_path . '/template.php') &&
!file_exists($template_path . '/layout.php'))
{
$template_name = 'kathrine';
$template_path = 'templates/' . $template_name;
@@ -66,7 +68,7 @@ if($exists || ($config['backward_support'] && file_exists($template_path . '/lay
foreach($template_ini as $key => $value)
$config[$key] = $value;
}
else
else if(file_exists($template_path . '/config.php'))
require($template_path . '/config.php');
$template = array();
@@ -76,7 +78,7 @@ $template['link_account_lost'] = internalLayoutLink(($config['friendly_urls'] ?
$template['link_account_logout'] = internalLayoutLink(($config['friendly_urls'] ? 'account' : 'accountmanagement'), 'logout');
$template['link_news'] = internalLayoutLink('news');
$template['link_news_archive'] = internalLayoutLink('news' . ($config['friendly_urls'] ? '' : '') . 'archive');
$template['link_news_archive'] = internalLayoutLink('news' . ($config['friendly_urls'] ? '/' : '') . 'archive');
$template['link_changelog'] = internalLayoutLink('changelog');
$template['link_rules'] = internalLayoutLink('rules');
$template['link_downloads'] = internalLayoutLink('downloads');