acl_get('a_icons')) { return; } $filename = basename(__FILE__); $module['POST']['SMILIES'] = "$filename$SID&mode=smilies"; $module['POST']['ICONS'] = "$filename$SID&mode=icons"; return; } define('IN_PHPBB', 1); // Include files $phpbb_root_path = './../'; $phpEx = substr(strrchr(__FILE__, '.'), 1); require('pagestart.' . $phpEx); // Do we have general permissions? if (!$auth->acl_get('a_icons')) { trigger_error($user->lang['NO_ADMIN']); } // Grab some basic parameters $mode = request_var('mode', ''); $action = request_var('action', ''); $action = (isset($_POST['add'])) ? 'add' : $action; $action = (isset($_POST['edit'])) ? 'edit' : $action; $id = request_var('id', 0); // What are we working on? switch ($mode) { case 'smilies': $table = SMILIES_TABLE; $lang = 'SMILIES'; $fields = 'smiley'; $img_path = $config['smilies_path']; break; case 'icons': $table = ICONS_TABLE; $lang = 'ICONS'; $fields = 'icons'; $img_path = $config['icons_path']; break; } // Clear some arrays $_images = $_paks = array(); $notice = ''; // Grab file list of paks and images if ($action == 'edit' || $action == 'add' || $action == 'import') { $imglist = filelist($phpbb_root_path . $img_path, ''); foreach ($imglist as $path => $img_ary) { foreach ($img_ary as $img) { $img_size = @getimagesize($phpbb_root_path . $img_path . '/' . $path . $img); $_images[$path.$img]['file'] = $path.$img; $_images[$path.$img]['width'] = $img_size[0]; $_images[$path.$img]['height'] = $img_size[1]; } } unset($imglist); $dir = @opendir($phpbb_root_path . $img_path); while ($file = @readdir($dir)) { if (is_file($phpbb_root_path . $img_path . '/' . $file) && preg_match('#\.pak$#i', $file)) { $_paks[] = $file; } } @closedir($dir); } // What shall we do today? Oops, I believe that's trademarked ... switch ($action) { case 'edit': unset($_images); $_images = array(); case 'add': $order_list = ''; $sql = "SELECT * FROM $table ORDER BY {$fields}_order " . (($id || $action == 'add') ? 'DESC' : 'ASC'); $result = $db->sql_query($sql); if ($row = $db->sql_fetchrow($result)) { do { if ($action == 'add') { unset($_images[$row[$fields . '_url']]); } if ($row[$fields . '_id'] == $id) { $after = TRUE; $data[$row[$fields . '_url']] = $row; } else { if ($action == 'edit' && !$id) { $data[$row[$fields . '_url']] = $row; } $selected = ''; if (!empty($after)) { $selected = ' selected="selected"'; $after = FALSE; } $after_txt = ($mode == 'smilies') ? $row['code'] : $row['icons_url']; $order_list = '' . $order_list; } } while ($row = $db->sql_fetchrow($result)); } $db->sql_freeresult($result); $order_list = '' . $order_list; if ($action == 'add') { $data = $_images; } $colspan = (($mode == 'smilies') ? '7' : '5'); $colspan += ($id) ? 1 : 0; $colspan += ($action == 'add') ? 2 : 0; adm_page_header($user->lang[$lang]); ?>

lang[$lang]; ?>

lang[$lang .'_EXPLAIN']; ?>

"> $img_row) { $row_class = (($row % 2) == 0) ? 'row1' : 'row2'; ?>
lang[$lang . '_CONFIG'] ?>
lang[$lang . '_URL'] ?> lang[$lang . '_LOCATION'] ?> lang[$lang . '_CODE'] ?> lang[$lang . '_EMOTION'] ?> lang[$lang . '_WIDTH'] ?> lang[$lang . '_HEIGHT'] ?> lang['DISPLAY_ON_POSTING'] ?> lang[$lang . '_ORDER'] ?> lang['ADD'] ?>
[] />
$image, $fields . '_width' => $image_width[$image], $fields . '_height' => $image_height[$image], 'display_on_posting'=> (isset($image_display_on_posting[$image])) ? 1 : 0, ); if ($mode == 'smilies') { $img_sql = array_merge($img_sql, array( 'emotion' => $image_emotion[$image], 'code' => $image_code[$image]) ); } if (!empty($image_order[$image])) { $img_sql = array_merge($img_sql, array( $fields . '_order' => $image_order[$image] . '.5') ); } if ($action == 'modify') { $sql = "UPDATE $table SET " . $db->sql_build_array('UPDATE', $img_sql) . " WHERE {$fields}_id = " . $image_id[$image]; $db->sql_query($sql); } else { $sql = "INSERT INTO $table " . $db->sql_build_array('INSERT', $img_sql); $db->sql_query($sql); } $update = FALSE; if ($action == 'modify' && !empty($image_order[$image])) { $update = TRUE; $result = $db->sql_query("SELECT {$fields}_order FROM $table WHERE {$fields}_id = " . $image_id[$image]); $order_old = $db->sql_fetchfield($fields . '_order', 0, $result); if ($order_old == $image_order[$image]) { $update = FALSE; } if ($order_old > $image_order[$image]) { $sign = '+'; $where = $fields . '_order >= ' . $image_order[$image] . " AND {$fields}_order < $order_old"; } else if ($order_old < $image_order[$image]) { $sign = '-'; $where = "{$fields}_order > $order_old AND {$fields}_order < " . $image_order[$image]; $sql[$fields . '_order'] = $image_order[$image] - 1; } } if ($update) { $sql = "UPDATE $table SET {$fields}_order = {$fields}_order $sign 1 WHERE $where"; $db->sql_query($sql); } } } $cache->destroy('icons'); if ($action == 'modify') { trigger_error($user->lang[$lang . '_EDITED']); } else { trigger_error($user->lang[$lang . '_ADDED']); } break; case 'import': $pak = request_var('pak', ''); $current = request_var('current', ''); if ($pak != '') { $order = 0; // The user has already selected a smilies_pak file if ($current == 'delete') { $db->sql_query("TRUNCATE $table"); switch ($mode) { case 'smilies': break; case 'icons': // Reset all icon_ids $db->sql_query('UPDATE ' . TOPICS_TABLE . ' SET icon_id = 0'); $db->sql_query('UPDATE ' . POSTS_TABLE . ' SET icon_id = 0'); break; } } else { $cur_img = array(); $field_sql = ($mode == 'smilies') ? 'code' : 'icons_url'; $result = $db->sql_query("SELECT $field_sql FROM $table"); while ($row = $db->sql_fetchrow($result)) { ++$order; $cur_img[$row[$field_sql]] = 1; } $db->sql_freeresult($result); } if (!($pak_ary = @file($phpbb_root_path . $img_path . '/' . $pak))) { trigger_error('Could not read pak file', E_USER_ERROR); } foreach ($pak_ary as $pak_entry) { $data = array(); if (preg_match_all("#'(.*?)', #", $pak_entry, $data)) { if ((sizeof($data[1]) != 3 && $mode == 'icons') || (sizeof($data[1]) != 5 && $mode == 'smilies')) { trigger_error($user->lang['WRONG_PAK_TYPE']); } $img = stripslashes($data[1][0]); $width = stripslashes($data[1][1]); $height = stripslashes($data[1][2]); if (isset($data[1][3]) && isset($data[1][4])) { $emotion = stripslashes($data[1][3]); $code = htmlentities(stripslashes($data[1][4])); } if ($current == 'replace' && (($mode == 'smilies' && !empty($cur_img[$code])) || ($mode == 'icons' && !empty($cur_img[$img])))) { $replace_sql = ($mode == 'smilies') ? $code : $img; $sql = array( $fields . '_url' => $img, $fields . '_height' => (int) $height, $fields . '_width' => (int) $width, ); if ($mode == 'smilies') { $sql = array_merge($sql, array( 'emotion' => $emotion )); } $db->sql_query("UPDATE $table SET " . $db->sql_build_array('UPDATE', $sql) . " WHERE $field_sql = '" . $db->sql_escape($replace_sql) . "'"); } else { ++$order; $sql = array( $fields . '_url' => $img, $fields . '_height' => (int) $height, $fields . '_width' => (int) $width, $fields . '_order' => (int) $order, ); if ($mode == 'smilies') { $sql = array_merge($sql, array( 'code' => $code, 'emotion' => $emotion )); } $db->sql_query("INSERT INTO $table " . $db->sql_build_array('INSERT', $sql)); } } } $cache->destroy('icons'); trigger_error($user->lang[$lang . '_IMPORT_SUCCESS']); } else { $pak_options = ''; foreach ($_paks as $pak) { $pak_options .= ''; } adm_page_header($user->lang[$lang]); ?>

lang[$lang] ?>

lang[$lang .'_EXPLAIN'] ?>

lang[$lang . '_IMPORT'] ?>
lang['NO_' . $lang . '_PAK']; ?>
lang['SELECT_PACKAGE'] ?>
lang['CURRENT_' . $lang] ?>
lang['CURRENT_' . $lang . '_EXPLAIN'] ?>
lang['KEEP_ALL'] ?>    lang['REPLACE_MATCHES'] ?>    lang['DELETE_ALL'] ?> 
lang['EXPORT_' . $lang]); trigger_error(sprintf($user->lang['EXPORT_' . $lang . '_EXPLAIN'], '', '')); break; case 'send': $sql = "SELECT * FROM $table ORDER BY {$fields}_order"; $result = $db->sql_query($sql); $pak = ''; while ($row = $db->sql_fetchrow($result)) { $pak .= "'" . addslashes($row[$fields . '_url']) . "', "; $pak .= "'" . addslashes($row[$fields . '_height']) . "', "; $pak .= "'" . addslashes($row[$fields . '_width']) . "', "; if ($mode == 'smilies') { $pak .= "'" . addslashes($row['emotion']) . "', "; $pak .= "'" . addslashes($row['code']) . "', "; } $pak .= "\n"; } $db->sql_freeresult($result); if ($pak != '') { $db->sql_close(); header('Content-Type: text/x-delimtext; name="' . $fields . '.pak"'); header('Content-disposition: attachment; filename=' . $fields . '.pak"'); echo $pak; exit; } else { trigger_error($user->lang['NO_' . $fields . '_EXPORT']); } break; case 'delete': $db->sql_query("DELETE FROM $table WHERE {$fields}_id = $id"); switch ($mode) { case 'smilies': break; case 'icons': // Reset appropriate icon_ids $db->sql_query('UPDATE ' . TOPICS_TABLE . " SET icon_id = 0 WHERE icon_id = $id"); $db->sql_query('UPDATE ' . POSTS_TABLE . " SET icon_id = 0 WHERE icon_id = $id"); break; } $notice = $user->lang[$lang . '_DELETED']; case 'move_up': case 'move_down': if ($action != 'delete') { $image_order = intval($_GET['order']); $order_total = $image_order * 2 + (($action == 'move_up') ? -1 : 1); $sql = 'UPDATE ' . $table . ' SET ' . $fields . "_order = $order_total - " . $fields . '_order WHERE ' . $fields . "_order IN ($image_order, " . (($action == 'move_up') ? $image_order - 1 : $image_order + 1) . ')'; $db->sql_query($sql); $cache->destroy('icons'); } // No break; here, display the smilies admin back default: // By default, check that image_order is valid and fix it if necessary $sql = "SELECT {$fields}_id AS order_id, {$fields}_order AS fields_order FROM $table ORDER BY {$fields}_order"; $result = $db->sql_query($sql); if ($row = $db->sql_fetchrow($result)) { $order = 0; do { ++$order; if ($row['fields_order'] != $order) { $db->sql_query("UPDATE $table SET {$fields}_order = $order WHERE {$fields}_id = " . $row['order_id']); } } while ($row = $db->sql_fetchrow($result)); } $db->sql_freeresult($result); // Output the page adm_page_header($user->lang[$lang]); ?>

lang[$lang]; ?>

lang[$lang .'_EXPLAIN']; ?>

   lang['IMPORT_' . $lang]; ?> | lang['EXPORT_' . $lang]; ?>
sql_query($sql); while ($row = $db->sql_fetchrow($result)) { if (!$spacer && !$row['display_on_posting']) { $spacer = TRUE; ?> sql_freeresult($result); ?>
lang[$lang]; ?> lang['CODE']; ?> lang['EMOTION']; ?> lang['ACTION']; ?> lang['REORDER']; ?>
lang[$lang . '_NOT_DISPLAYED'] ?>
<?php echo $alt_text; ?> ">lang['EDIT']; ?> | ">lang['DELETE']; ?> ">lang['MOVE_UP']; ?>
">lang['MOVE_DOWN']; ?>