get_acl_admin('general') ) { return; } $filename = basename(__FILE__); $module['General']['Emoticons'] = $filename . $SID . '&mode=emoticons'; return; } define('IN_PHPBB', 1); // // Include files // $phpbb_root_path = '../'; require($phpbb_root_path . 'extension.inc'); require('pagestart.' . $phpEx); // // Do we have general permissions? // if (!$acl->get_acl_admin('general')) { message_die(MESSAGE, $lang['No_admin']); } // // Check to see what mode we should operate in. // if (isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode'])) { $mode = (!empty($HTTP_POST_VARS['mode'])) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode']; } else { $mode = ''; } $delimiter = '=+:'; $smilies_images = $smilies_paks = array(); $click_return = '

' . sprintf($lang['Click_return_smileadmin'], '', ''); $click_return .= '

' . sprintf($lang['Click_return_admin_index'], '', ''); if ($mode == 'edit' || !empty($HTTP_POST_VARS['add']) || !empty($HTTP_POST_VARS['import_pak'])) { $dir = @opendir($phpbb_root_path . $board_config['smilies_path']); while ($file = @readdir($dir)) { if (is_file($phpbb_root_path . $board_config['smilies_path'] . '/' . $file)) { $img_size = @getimagesize($phpbb_root_path . $board_config['smilies_path'] . '/' . $file); if (preg_match('/\.(gif|png|jpg)$/i', $file) || (!empty($img_size[0]) && !empty($img_size[1]))) { $smilies_images[] = $file; } elseif (preg_match('/\.pak$/i', $file)) { $smilies_paks[] = $file; } } } @closedir($dir); } // // Select main mode // if (isset($HTTP_POST_VARS['import_pak'])) { if (!empty($HTTP_POST_VARS['smilies_pak'])) { $smile_order = 0; // // The user has already selected a smilies_pak file.. Import it. // if (!empty($HTTP_POST_VARS['clear_current'])) { $db->sql_query('DELETE FROM ' . SMILIES_TABLE); } else { $result = $db->sql_query('SELECT code FROM ' . SMILIES_TABLE); $smilies = array(); while ($row = $db->sql_fetchrow($result)) { ++$smile_order; $smilies[$row['code']] = 1; } } $fcontents = @file($phpbb_root_path . $board_config['smilies_path'] . '/'. $smilies_pak); if (empty($fcontents)) { message_die(ERROR, 'Could not read smiley pak file' . $click_return); } foreach ($fcontents as $line) { $smile_data = explode($delimiter, trim($line)); $smile_url = $smile_data[0]; $emotion = $smile_data[1]; $code = htmlentities($smile_data[2]); if (!isset($smile_data[4])) { // // The size isn't specified, try to get it from the file and if it fails // arbitrary set it to 15 and let the user correct it later. // $size = @getimagesize($phpbb_root_path . $board_config['smilies_path'] . '/' . $smile_url); $smile_width = (!empty($size[0])) ? $size[0] : 15; $smile_height = (!empty($size[1])) ? $size[1] : 15; } else { $smile_width = $smile_data[3]; $smile_height = $smile_data[4]; } if (!empty($smilies[$code])) { if (!empty($HTTP_POST_VARS['replace_existing'])) { $code_sql = str_replace("'", "''", str_replace('\\', '\\\\', $code)); $sql = array( 'smile_url' => $smile_url, 'smile_height' => $smile_height, 'smile_width' => $smile_width, 'emoticon' => $emotion ); $db->sql_query_array('UPDATE ' . SMILIES_TABLE . " SET WHERE code = '$code_sql'", $sql); } } else { ++$smile_order; $sql = array( 'code' => $code, 'smile_url' => $smile_url, 'smile_height' => $smile_height, 'smile_width' => $smile_width, 'smile_order' => $smile_order, 'emoticon' => $emotion ); $db->sql_query_array('INSERT INTO ' . SMILIES_TABLE, $sql); } } message_die(MESSAGE, $lang['Smilies_import_success'] . $click_return); } else { if (!count($smilies_paks)) { $smilies_paks_select = $lang['No_smilies_pak']; } else { $smilies_paks_select = ''; } page_header($lang['Import_smilies']); ?>


   
   
sql_query('SELECT * FROM ' . SMILIES_TABLE); while ($row = $db->sql_fetchrow($result)) { $smilies_pak .= $row['smile_url'] . $delimiter; $smilies_pak .= $row['emoticon'] . $delimiter; $smilies_pak .= $row['code'] . $delimiter; $smilies_pak .= $row['smile_height'] . $delimiter; $smilies_pak .= $row['smile_width'] . "\n"; } $db->sql_close(); header('Content-Type: text/x-delimtext; name="smilies.pak"'); header('Content-disposition: attachment; filename=smilies.pak"'); echo $smilies_pak; exit; } elseif (isset($HTTP_POST_VARS['export_pak'])) { page_header($lang['Export_smilies']); message_die(MESSAGE, sprintf($lang['Export_smilies_explain'], '', '') . $click_return); } elseif (isset($HTTP_POST_VARS['add'])) { $filename_list = ''; foreach ($smilies_images as $smile_url) { if (!isset($default_image)) { $default_image = $smile_url; } $filename_list .= ''; } page_header($lang['Add_smile']); ?>

   
sql_query('DELETE FROM ' . SMILIES_TABLE . ' WHERE smilies_id = ' . intval($HTTP_GET_VARS['smile_id'])); message_die(MESSAGE, $lang['Smile_deleted'] . $click_return); break; case 'edit': $smile_id = intval($HTTP_GET_VARS['smile_id']); /* $sql = 'SELECT * FROM ' . SMILIES_TABLE . " WHERE smilies_id = $smile_id"; $result = $db->sql_query($sql); $smile_data = $db->sql_fetchrow($result); */ $order_list = ''; $result = $db->sql_query('SELECT * FROM ' . SMILIES_TABLE . ' ORDER BY smile_order DESC'); while ($row = $db->sql_fetchrow($result)) { if ($row['smilies_id'] == $smile_id) { $after = TRUE; $smile_data = $row; } else { $selected = ''; if (!empty($after)) { $selected = ' selected="selected"'; $after = FALSE; } $order_list = '' . $order_list; } } $order_list = '' . $order_list; $filename_list = ''; foreach ($smilies_images as $smile_url) { if ($smile_url == $smile_data['smile_url']) { $smile_selected = ' selected="selected"'; $smile_edit_img = $smile_url; } else { $smile_selected = ''; } $filename_list .= ''; } page_header($lang['Edit_smile']); ?>

   
/>
htmlspecialchars(stripslashes($HTTP_POST_VARS['smile_code'])), 'smile_url' => stripslashes($HTTP_POST_VARS['smile_url']), 'smile_width' => $smile_width, 'smile_height' => $smile_height, 'smile_order' => $smile_order, 'emoticon' => stripslashes($HTTP_POST_VARS['smile_emotion']), 'smile_on_posting' => (!empty($HTTP_POST_VARS['smile_on_posting'])) ? 1 : 0 ); $smile_id = $HTTP_POST_VARS['smile_id']; $smile_order = $HTTP_POST_VARS['smile_order']; if ($mode == 'modify') { $result = $db->sql_query('SELECT smile_order FROM ' . SMILIES_TABLE . " WHERE smilies_id = $smile_id"); $order_old = $db->sql_fetchfield('smile_order', 0, $result); if ($order_old == $smile_order) { $no_update = TRUE; } if ($order_old > $smile_order) { $sign = '+'; $where = "smile_order >= $smile_order AND smile_order < $order_old"; } else { $sign = '-'; $where = "smile_order > $order_old AND smile_order < $smile_order"; $sql['smile_order'] = $smile_order - 1; } } else { $sign = '+'; $where = "smile_order > $smile_order"; } if (empty($no_update)) { $qry = 'UPDATE ' . SMILIES_TABLE . " SET smile_order = smile_order $sign 1 WHERE $where"; $db->sql_query($qry); } if ($mode == 'modify') { $db->sql_query_array('UPDATE ' . SMILIES_TABLE . " SET WHERE smilies_id = $smile_id", $sql); message_die(MESSAGE, $lang['Smile_edited'] . $click_return); } else { $db->sql_query_array('INSERT INTO ' . SMILIES_TABLE, $sql); message_die(MESSAGE, $lang['Smile_added'] . $click_return); } break; case 'move_up': case 'move_down': $smile_order = intval($HTTP_GET_VARS['smile_order']); $order_total = $smile_order * 2 + (($mode == 'move_up') ? -1 : 1); $sql = 'UPDATE ' . SMILIES_TABLE . " SET smile_order = $order_total - smile_order WHERE smile_order IN ($smile_order, " . (($mode == 'move_up') ? $smile_order - 1 : $smile_order + 1) . ')'; $db->sql_query($sql); // // No break; here, display the smilies admin back // default: // // By default, check that smile_order is valid and fix it if necessary // $order = 0; $result = $db->sql_query('SELECT * FROM ' . SMILIES_TABLE . ' ORDER BY smile_order'); while ($row = $db->sql_fetchrow($result)) { ++$order; if ($row['smile_order'] != $order) { $db->sql_query('UPDATE ' . SMILIES_TABLE . " SET smile_order = $order WHERE smilies_id = " . $row['smilies_id']); } } $sql = 'SELECT * FROM ' . SMILIES_TABLE . ' ORDER BY smile_on_posting DESC, smile_order ASC'; $result = $db->sql_query($sql); page_header($lang['Emoticons']); ?>

sql_fetchrow($result)) { if (!$spacer && !$row['smile_on_posting']) { $spacer = TRUE; ?>
<?php echo htmlspecialchars($row['code']); ?> "> "> "> ">