| <?php |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| if (!defined('IN_PHPBB')) |
| { |
| exit; |
| } |
| |
| |
| |
| |
| |
| class cache extends acm |
| { |
| |
| |
| |
| function obtain_config() |
| { |
| global $db; |
| |
| if (($config = $this->get('config')) !== false) |
| { |
| $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; |
| } |
| |
| |
| |
| |
| |
| function obtain_word_list() |
| { |
| global $db; |
| |
| if (($censors = $this->get('_word_censors')) === false) |
| { |
| $sql = 'SELECT word, replacement |
| FROM ' . WORDS_TABLE; |
| $result = $db->sql_query($sql); |
| |
| $censors = array(); |
| while ($row = $db->sql_fetchrow($result)) |
| { |
| $censors['match'][] = '#(?<!\w)(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')(?!\w)#i'; |
| $censors['replace'][] = $row['replacement']; |
| } |
| $db->sql_freeresult($result); |
| |
| $this->put('_word_censors', $censors); |
| } |
| |
| return $censors; |
| } |
| |
| |
| |
| |
| function obtain_icons() |
| { |
| if (($icons = $this->get('_icons')) === false) |
| { |
| global $db; |
| |
| |
| $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 $icons; |
| } |
| |
| |
| |
| |
| function obtain_ranks() |
| { |
| if (($ranks = $this->get('_ranks')) === false) |
| { |
| global $db; |
| |
| $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 $ranks; |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| function obtain_attach_extensions($forum_id) |
| { |
| if (($extensions = $this->get('_extensions')) === false) |
| { |
| global $db; |
| |
| $extensions = array( |
| '_allowed_post' => array(), |
| '_allowed_pm' => array(), |
| ); |
| |
| |
| $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 OR g.allow_in_pm = 1)'; |
| $result = $db->sql_query($sql); |
| |
| 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'], |
| 'allow_group' => $row['allow_group'], |
| 'allow_in_pm' => $row['allow_in_pm'], |
| ); |
| |
| $allowed_forums = ($row['allowed_forums']) ? unserialize(trim($row['allowed_forums'])) : array(); |
| |
| |
| if ($row['allow_group']) |
| { |
| $extensions['_allowed_post'][$extension] = (!sizeof($allowed_forums)) ? 0 : $allowed_forums; |
| } |
| |
| if ($row['allow_in_pm']) |
| { |
| $extensions['_allowed_pm'][$extension] = 0; |
| } |
| } |
| $db->sql_freeresult($result); |
| |
| $this->put('_extensions', $extensions); |
| } |
| |
| |
| if ($forum_id === false) |
| { |
| |
| $return = array('_allowed_' => array()); |
| |
| foreach ($extensions['_allowed_pm'] as $extension => $check) |
| { |
| $return['_allowed_'][$extension] = 0; |
| $return[$extension] = $extensions[$extension]; |
| } |
| |
| $extensions = $return; |
| } |
| else if ($forum_id === true) |
| { |
| return $extensions; |
| } |
| else |
| { |
| $forum_id = (int) $forum_id; |
| $return = array('_allowed_' => array()); |
| |
| foreach ($extensions['_allowed_post'] as $extension => $check) |
| { |
| |
| if (is_array($check)) |
| { |
| $allowed = (!in_array($forum_id, $check)) ? false : true; |
| } |
| else |
| { |
| $allowed = true; |
| } |
| |
| if ($allowed) |
| { |
| $return['_allowed_'][$extension] = 0; |
| $return[$extension] = $extensions[$extension]; |
| } |
| } |
| |
| $extensions = $return; |
| } |
| |
| if (!isset($extensions['_allowed_'])) |
| { |
| $extensions['_allowed_'] = array(); |
| } |
| |
| return $extensions; |
| } |
| |
| |
| |
| |
| function obtain_bots() |
| { |
| if (($bots = $this->get('_bots')) === false) |
| { |
| global $db; |
| |
| switch ($db->sql_layer) |
| { |
| case 'mssql': |
| case 'mssql_odbc': |
| $sql = 'SELECT user_id, bot_agent, bot_ip |
| FROM ' . BOTS_TABLE . ' |
| WHERE bot_active = 1 |
| ORDER BY LEN(bot_agent) DESC'; |
| break; |
| |
| case 'firebird': |
| $sql = 'SELECT user_id, bot_agent, bot_ip |
| FROM ' . BOTS_TABLE . ' |
| WHERE bot_active = 1 |
| ORDER BY CHAR_LENGTH(bot_agent) DESC'; |
| break; |
| |
| |
| default: |
| $sql = 'SELECT user_id, bot_agent, bot_ip |
| FROM ' . BOTS_TABLE . ' |
| WHERE bot_active = 1 |
| ORDER BY LENGTH(bot_agent) DESC'; |
| break; |
| } |
| $result = $db->sql_query($sql); |
| |
| $bots = array(); |
| while ($row = $db->sql_fetchrow($result)) |
| { |
| $bots[] = $row; |
| } |
| $db->sql_freeresult($result); |
| |
| $this->put('_bots', $bots); |
| } |
| |
| return $bots; |
| } |
| |
| |
| |
| |
| function obtain_cfg_items($theme) |
| { |
| global $config, $phpbb_root_path; |
| |
| $parsed_items = array( |
| 'theme' => array(), |
| 'template' => array(), |
| 'imageset' => array() |
| ); |
| |
| foreach ($parsed_items as $key => $parsed_array) |
| { |
| $parsed_array = $this->get('_cfg_' . $key . '_' . $theme[$key . '_path']); |
| |
| if ($parsed_array === false) |
| { |
| $parsed_array = array(); |
| } |
| |
| $reparse = false; |
| $filename = $phpbb_root_path . 'styles/' . $theme[$key . '_path'] . '/' . $key . '/' . $key . '.cfg'; |
| |
| if (!file_exists($filename)) |
| { |
| continue; |
| } |
| |
| if (!isset($parsed_array['filetime']) || (($config['load_tplcompile'] && @filemtime($filename) > $parsed_array['filetime']))) |
| { |
| $reparse = true; |
| } |
| |
| |
| if ($reparse) |
| { |
| $parsed_array = parse_cfg_file($filename); |
| $parsed_array['filetime'] = @filemtime($filename); |
| |
| $this->put('_cfg_' . $key . '_' . $theme[$key . '_path'], $parsed_array); |
| } |
| $parsed_items[$key] = $parsed_array; |
| } |
| |
| return $parsed_items; |
| } |
| |
| |
| |
| |
| function obtain_disallowed_usernames() |
| { |
| if (($usernames = $this->get('_disallowed_usernames')) === false) |
| { |
| global $db; |
| |
| $sql = 'SELECT disallow_username |
| FROM ' . DISALLOW_TABLE; |
| $result = $db->sql_query($sql); |
| |
| $usernames = array(); |
| while ($row = $db->sql_fetchrow($result)) |
| { |
| $usernames[] = str_replace('%', '.*?', preg_quote(utf8_clean_string($row['disallow_username']), '#')); |
| } |
| $db->sql_freeresult($result); |
| |
| $this->put('_disallowed_usernames', $usernames); |
| } |
| |
| return $usernames; |
| } |
| |
| |
| |
| |
| function obtain_hooks() |
| { |
| global $phpbb_root_path, $phpEx; |
| |
| if (($hook_files = $this->get('_hooks')) === false) |
| { |
| $hook_files = array(); |
| |
| |
| $dh = @opendir($phpbb_root_path . 'includes/hooks/'); |
| |
| if ($dh) |
| { |
| while (($file = readdir($dh)) !== false) |
| { |
| if (strpos($file, 'hook_') === 0 && substr($file, -(strlen($phpEx) + 1)) === '.' . $phpEx) |
| { |
| $hook_files[] = substr($file, 0, -(strlen($phpEx) + 1)); |
| } |
| } |
| closedir($dh); |
| } |
| |
| $this->put('_hooks', $hook_files); |
| } |
| |
| return $hook_files; |
| } |
| } |
| |
| ?> |