mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-25 19:38:53 +00:00
acm_main file for grouping cache-related functions.
git-svn-id: file:///svn/phpbb/trunk@5229 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
db5eb3acef
commit
1224110694
1 changed files with 295 additions and 0 deletions
295
phpBB/includes/acm/acm_main.php
Normal file
295
phpBB/includes/acm/acm_main.php
Normal file
|
@ -0,0 +1,295 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* @package acm
|
||||
* @version $Id$
|
||||
* @copyright (c) 2005 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @package acm
|
||||
* Class for grabbing/handling cached entries, extends acm_file or acm_db depending on the setup
|
||||
*/
|
||||
class cache extends acm
|
||||
{
|
||||
/**
|
||||
* Get config values
|
||||
*/
|
||||
function obtain_config()
|
||||
{
|
||||
global $db;
|
||||
|
||||
if ($config = $this->get('config'))
|
||||
{
|
||||
$sql = 'SELECT config_name, config_value
|
||||
FROM ' . CONFIG_TABLE . '
|
||||
WHERE is_dynamic = 1';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$config[$row['config_name']] = $row['config_value'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
else
|
||||
{
|
||||
$config = $cached_config = array();
|
||||
|
||||
$sql = 'SELECT config_name, config_value, is_dynamic
|
||||
FROM ' . CONFIG_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if (!$row['is_dynamic'])
|
||||
{
|
||||
$cached_config[$row['config_name']] = $row['config_value'];
|
||||
}
|
||||
|
||||
$config[$row['config_name']] = $row['config_value'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$this->put('config', $cached_config);
|
||||
}
|
||||
|
||||
return $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtain list of naughty words and build preg style replacement arrays for use by the
|
||||
* calling script
|
||||
*/
|
||||
function obtain_word_list(&$censors)
|
||||
{
|
||||
global $db, $user;
|
||||
|
||||
if (!$user->optionget('viewcensors') && $config['allow_nocensors'])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->exists('word_censors'))
|
||||
{
|
||||
$censors = $this->get('word_censors');
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'SELECT word, replacement
|
||||
FROM ' . WORDS_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$censors = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$censors['match'][] = '#\b(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')\b#i';
|
||||
$censors['replace'][] = $row['replacement'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$this->put('word_censors', $censors);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtain currently listed icons
|
||||
*/
|
||||
function obtain_icons(&$icons)
|
||||
{
|
||||
global $db;
|
||||
|
||||
if ($this->exists('icons'))
|
||||
{
|
||||
$icons = $this->get('icons');
|
||||
}
|
||||
else
|
||||
{
|
||||
// Topic icons
|
||||
$sql = 'SELECT *
|
||||
FROM ' . ICONS_TABLE . '
|
||||
ORDER BY icons_order';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$icons = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$icons[$row['icons_id']]['img'] = $row['icons_url'];
|
||||
$icons[$row['icons_id']]['width'] = (int) $row['icons_width'];
|
||||
$icons[$row['icons_id']]['height'] = (int) $row['icons_height'];
|
||||
$icons[$row['icons_id']]['display'] = (bool) $row['display_on_posting'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$this->put('icons', $icons);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtain ranks
|
||||
*/
|
||||
function obtain_ranks(&$ranks)
|
||||
{
|
||||
global $db;
|
||||
|
||||
if ($this->exists('ranks'))
|
||||
{
|
||||
$ranks = $this->get('ranks');
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'SELECT *
|
||||
FROM ' . RANKS_TABLE . '
|
||||
ORDER BY rank_min DESC';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$ranks = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if ($row['rank_special'])
|
||||
{
|
||||
$ranks['special'][$row['rank_id']] = array(
|
||||
'rank_title' => $row['rank_title'],
|
||||
'rank_image' => $row['rank_image']
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$ranks['normal'][] = array(
|
||||
'rank_title' => $row['rank_title'],
|
||||
'rank_min' => $row['rank_min'],
|
||||
'rank_image' => $row['rank_image']
|
||||
);
|
||||
}
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$this->put('ranks', $ranks);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtain allowed extensions
|
||||
*/
|
||||
function obtain_attach_extensions(&$extensions, $forum_id = false)
|
||||
{
|
||||
global $db;
|
||||
|
||||
if ($this->exists('extensions'))
|
||||
{
|
||||
$extensions = $this->get('extensions');
|
||||
}
|
||||
else
|
||||
{
|
||||
// The rule is to only allow those extensions defined. ;)
|
||||
$sql = 'SELECT e.extension, g.*
|
||||
FROM ' . EXTENSIONS_TABLE . ' e, ' . EXTENSION_GROUPS_TABLE . ' g
|
||||
WHERE e.group_id = g.group_id
|
||||
AND g.allow_group = 1';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$extensions = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$extension = strtolower(trim($row['extension']));
|
||||
|
||||
$extensions[$extension] = array(
|
||||
'display_cat' => (int) $row['cat_id'],
|
||||
'download_mode' => (int) $row['download_mode'],
|
||||
'upload_icon' => trim($row['upload_icon']),
|
||||
'max_filesize' => (int) $row['max_filesize']
|
||||
);
|
||||
|
||||
$allowed_forums = ($row['allowed_forums']) ? unserialize(trim($row['allowed_forums'])) : array();
|
||||
|
||||
if ($row['allow_in_pm'])
|
||||
{
|
||||
$allowed_forums = array_merge($allowed_forums, array(0));
|
||||
}
|
||||
|
||||
// Store allowed extensions forum wise
|
||||
$extensions['_allowed_'][$extension] = (!sizeof($allowed_forums)) ? 0 : $allowed_forums;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$this->put('extensions', $extensions);
|
||||
}
|
||||
|
||||
if ($forum_id !== false)
|
||||
{
|
||||
$return = array();
|
||||
|
||||
foreach ($extensions['_allowed_'] as $extension => $check)
|
||||
{
|
||||
$allowed = false;
|
||||
|
||||
if (is_array($check))
|
||||
{
|
||||
// Check for private messaging
|
||||
if (sizeof($check) == 1 && $check[0] == 0)
|
||||
{
|
||||
$allowed = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
$allowed = (!in_array($forum_id, $check)) ? false : true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$allowed = ($forum_id == 0) ? false : true;
|
||||
}
|
||||
|
||||
if ($allowed)
|
||||
{
|
||||
$return['_allowed_'][$extension] = 0;
|
||||
$return[$extension] = $extensions[$extension];
|
||||
}
|
||||
}
|
||||
|
||||
$extensions = $return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtain active bots
|
||||
*/
|
||||
function obtain_bots(&$bots)
|
||||
{
|
||||
global $db;
|
||||
|
||||
if ($this->exists('bots'))
|
||||
{
|
||||
$bots = $this->get('bots');
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'SELECT user_id, bot_agent, bot_ip
|
||||
FROM ' . BOTS_TABLE . '
|
||||
WHERE bot_active = 1';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$bots[] = $row;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$this->put('bots', $bots);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
Loading…
Add table
Reference in a new issue