diff options
Diffstat (limited to 'phpBB/includes/avatar/driver/local.php')
-rw-r--r-- | phpBB/includes/avatar/driver/local.php | 197 |
1 files changed, 0 insertions, 197 deletions
diff --git a/phpBB/includes/avatar/driver/local.php b/phpBB/includes/avatar/driver/local.php deleted file mode 100644 index f4bcd4ce74..0000000000 --- a/phpBB/includes/avatar/driver/local.php +++ /dev/null @@ -1,197 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2011 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Handles avatars selected from the board gallery -* @package phpBB3 -*/ -class phpbb_avatar_driver_local extends phpbb_avatar_driver -{ - /** - * @inheritdoc - */ - public function get_data($row) - { - return array( - 'src' => $this->phpbb_root_path . $this->config['avatar_gallery_path'] . '/' . $row['avatar'], - 'width' => $row['avatar_width'], - 'height' => $row['avatar_height'], - ); - } - - /** - * @inheritdoc - */ - public function prepare_form($request, $template, $user, $row, &$error) - { - $avatar_list = $this->get_avatar_list($user); - $category = $request->variable('avatar_local_cat', ''); - - foreach ($avatar_list as $cat => $null) - { - if (!empty($avatar_list[$cat])) - { - $template->assign_block_vars('avatar_local_cats', array( - 'NAME' => $cat, - 'SELECTED' => ($cat == $category), - )); - } - - if ($cat != $category) - { - unset($avatar_list[$cat]); - } - } - - if (!empty($avatar_list[$category])) - { - $template->assign_vars(array( - 'AVATAR_LOCAL_SHOW' => true, - )); - - $table_cols = isset($row['avatar_gallery_cols']) ? $row['avatar_gallery_cols'] : 4; - $row_count = $col_count = $avatar_pos = 0; - $avatar_count = sizeof($avatar_list[$category]); - - reset($avatar_list[$category]); - - while ($avatar_pos < $avatar_count) - { - $img = current($avatar_list[$category]); - next($avatar_list[$category]); - - if ($col_count == 0) - { - ++$row_count; - $template->assign_block_vars('avatar_local_row', array( - )); - } - - $template->assign_block_vars('avatar_local_row.avatar_local_col', array( - 'AVATAR_IMAGE' => $this->phpbb_root_path . $this->config['avatar_gallery_path'] . '/' . $img['file'], - 'AVATAR_NAME' => $img['name'], - 'AVATAR_FILE' => $img['filename'], - )); - - $template->assign_block_vars('avatar_local_row.avatar_local_option', array( - 'AVATAR_FILE' => $img['filename'], - 'S_OPTIONS_AVATAR' => $img['filename'] - )); - - $col_count = ($col_count + 1) % $table_cols; - - ++$avatar_pos; - } - } - - return true; - } - - /** - * @inheritdoc - */ - public function prepare_form_acp($user) - { - return array( - 'avatar_gallery_path' => array('lang' => 'AVATAR_GALLERY_PATH', 'validate' => 'rpath', 'type' => 'text:20:255', 'explain' => true), - ); - } - - /** - * @inheritdoc - */ - public function process_form($request, $template, $user, $row, &$error) - { - $avatar_list = $this->get_avatar_list($user); - $category = $request->variable('avatar_local_cat', ''); - - $file = $request->variable('avatar_local_file', ''); - - if (empty($category) || empty($file)) - { - $error[] = 'NO_AVATAR_SELECTED'; - return false; - } - - if (!isset($avatar_list[$category][urldecode($file)])) - { - $error[] = 'AVATAR_URL_NOT_FOUND'; - return false; - } - - return array( - 'avatar' => ($category != $user->lang['MAIN']) ? $category . '/' . $file : $file, - 'avatar_width' => $avatar_list[$category][urldecode($file)]['width'], - 'avatar_height' => $avatar_list[$category][urldecode($file)]['height'], - ); - } - - /** - * Get a list of avatars that are locally available - * Results get cached for 24 hours (86400 seconds) - * - * @param phpbb_user $user User object - * - * @return array Array containing the locally available avatars - */ - protected function get_avatar_list($user) - { - $avatar_list = ($this->cache == null) ? false : $this->cache->get('avatar_local_list'); - - if ($avatar_list === false) - { - $avatar_list = array(); - $path = $this->phpbb_root_path . $this->config['avatar_gallery_path']; - - $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS), RecursiveIteratorIterator::SELF_FIRST); - foreach ($iterator as $file_info) - { - $file_path = $file_info->getPath(); - $image = $file_info->getFilename(); - - // Match all images in the gallery folder - if (preg_match('#^[^&\'"<>]+\.(?:' . implode('|', $this->allowed_extensions) . ')$#i', $image) && is_file($file_path . '/' . $image)) - { - if (function_exists('getimagesize')) - { - $dims = getimagesize($file_path . '/' . $image); - } - else - { - $dims = array(0, 0); - } - $cat = ($path == $file_path) ? $user->lang['MAIN'] : str_replace("$path/", '', $file_path); - $avatar_list[$cat][$image] = array( - 'file' => ($cat != $user->lang['MAIN']) ? rawurlencode($cat) . '/' . rawurlencode($image) : rawurlencode($image), - 'filename' => rawurlencode($image), - 'name' => ucfirst(str_replace('_', ' ', preg_replace('#^(.*)\..*$#', '\1', $image))), - 'width' => $dims[0], - 'height' => $dims[1], - ); - } - } - ksort($avatar_list); - - if ($this->cache != null) - { - $this->cache->put('avatar_local_list', $avatar_list, 86400); - } - } - - return $avatar_list; - } -} |