Example #1
0
function EditSmileySets()
{
    global $modSettings, $context, $settings, $db_prefix, $txt, $boarddir;
    // Set the right tab to be selected.
    $context['admin_tabs']['tabs']['editsets']['is_selected'] = true;
    // They must've been submitted a form.
    if (isset($_POST['sc'])) {
        checkSession();
        // Delete selected smiley sets.
        if (!empty($_POST['delete']) && !empty($_POST['smiley_set'])) {
            $set_paths = explode(',', $modSettings['smiley_sets_known']);
            $set_names = explode("\n", $modSettings['smiley_sets_names']);
            foreach ($_POST['smiley_set'] as $id => $val) {
                if (isset($set_paths[$id], $set_names[$id]) && !empty($id)) {
                    unset($set_paths[$id], $set_names[$id]);
                }
            }
            updateSettings(array('smiley_sets_known' => addslashes(implode(',', $set_paths)), 'smiley_sets_names' => addslashes(implode("\n", $set_names)), 'smiley_sets_default' => addslashes(in_array($modSettings['smiley_sets_default'], $set_paths) ? $modSettings['smiley_sets_default'] : $set_paths[0])));
            cache_put_data('parsing_smileys', null, 480);
            cache_put_data('posting_smileys', null, 480);
        } elseif (!empty($_POST['add'])) {
            $context['sub_action'] = 'modifyset';
        } elseif (isset($_POST['set'])) {
            $set_paths = explode(',', $modSettings['smiley_sets_known']);
            $set_names = explode("\n", $modSettings['smiley_sets_names']);
            // Create a new smiley set.
            if ($_POST['set'] == -1 && isset($_POST['smiley_sets_path'])) {
                if (in_array($_POST['smiley_sets_path'], $set_paths)) {
                    fatal_lang_error('smiley_set_already_exists');
                }
                updateSettings(array('smiley_sets_known' => addslashes($modSettings['smiley_sets_known']) . ',' . $_POST['smiley_sets_path'], 'smiley_sets_names' => addslashes($modSettings['smiley_sets_names']) . "\n" . $_POST['smiley_sets_name'], 'smiley_sets_default' => empty($_POST['smiley_sets_default']) ? addslashes($modSettings['smiley_sets_default']) : $_POST['smiley_sets_path']));
            } else {
                // Make sure the smiley set exists.
                if (!isset($set_paths[$_POST['set']]) || !isset($set_names[$_POST['set']])) {
                    fatal_lang_error('smiley_set_not_found');
                }
                // Make sure the path is not yet used by another smileyset.
                if (in_array($_POST['smiley_sets_path'], $set_paths) && $_POST['smiley_sets_path'] != $set_paths[$_POST['set']]) {
                    fatal_lang_error('smiley_set_path_already_used');
                }
                $set_paths[$_POST['set']] = stripslashes($_POST['smiley_sets_path']);
                $set_names[$_POST['set']] = stripslashes($_POST['smiley_sets_name']);
                updateSettings(array('smiley_sets_known' => addslashes(implode(',', $set_paths)), 'smiley_sets_names' => addslashes(implode("\n", $set_names)), 'smiley_sets_default' => empty($_POST['smiley_sets_default']) ? addslashes($modSettings['smiley_sets_default']) : $_POST['smiley_sets_path']));
            }
            // The user might have checked to also import smileys.
            if (!empty($_POST['smiley_sets_import'])) {
                ImportSmileys($_POST['smiley_sets_path']);
            }
            cache_put_data('parsing_smileys', null, 480);
            cache_put_data('posting_smileys', null, 480);
        }
    }
    // Load all available smileysets...
    $context['smiley_sets'] = explode(',', $modSettings['smiley_sets_known']);
    $set_names = explode("\n", $modSettings['smiley_sets_names']);
    foreach ($context['smiley_sets'] as $i => $set) {
        $context['smiley_sets'][$i] = array('id' => $i, 'path' => htmlspecialchars($set), 'name' => htmlspecialchars($set_names[$i]), 'selected' => $set == $modSettings['smiley_sets_default']);
    }
    // Importing any smileys from an existing set?
    if ($context['sub_action'] == 'import') {
        checkSession('get');
        $_GET['set'] = (int) $_GET['set'];
        // Sanity check - then import.
        if (isset($context['smiley_sets'][$_GET['set']])) {
            ImportSmileys(un_htmlspecialchars($context['smiley_sets'][$_GET['set']]['path']));
        }
        // Force the process to continue.
        $context['sub_action'] = 'modifyset';
    }
    // If we're modifying or adding a smileyset, some context info needs to be set.
    if ($context['sub_action'] == 'modifyset') {
        $_GET['set'] = !isset($_GET['set']) ? -1 : (int) $_GET['set'];
        if ($_GET['set'] == -1 || !isset($context['smiley_sets'][$_GET['set']])) {
            $context['current_set'] = array('id' => '-1', 'path' => '', 'name' => '', 'selected' => false, 'is_new' => true);
        } else {
            $context['current_set'] =& $context['smiley_sets'][$_GET['set']];
            $context['current_set']['is_new'] = false;
            // Calculate whether there are any smileys in the directory that can be imported.
            if (!empty($modSettings['smiley_enable']) && !empty($modSettings['smileys_dir']) && is_dir($modSettings['smileys_dir'] . '/' . $context['current_set']['path'])) {
                $smileys = array();
                $dir = dir($modSettings['smileys_dir'] . '/' . $context['current_set']['path']);
                while ($entry = $dir->read()) {
                    if (in_array(strrchr($entry, '.'), array('.jpg', '.gif', '.jpeg', '.png'))) {
                        $smileys[strtolower($entry)] = addslashes($entry);
                    }
                }
                $dir->close();
                // Exclude the smileys that are already in the database.
                $request = db_query("\n\t\t\t\t\tSELECT filename\n\t\t\t\t\tFROM {$db_prefix}smileys\n\t\t\t\t\tWHERE filename IN ('" . implode("', '", $smileys) . "')", __FILE__, __LINE__);
                while ($row = mysql_fetch_assoc($request)) {
                    if (isset($smileys[strtolower($row['filename'])])) {
                        unset($smileys[strtolower($row['filename'])]);
                    }
                }
                mysql_free_result($request);
                $context['current_set']['can_import'] = count($smileys);
                // Setup this string to look nice.
                $txt['smiley_set_import_multiple'] = sprintf($txt['smiley_set_import_multiple'], $context['current_set']['can_import']);
            }
        }
        // Retrieve all potential smiley set directories.
        $context['smiley_set_dirs'] = array();
        if (!empty($modSettings['smileys_dir']) && is_dir($modSettings['smileys_dir'])) {
            $dir = dir($modSettings['smileys_dir']);
            while ($entry = $dir->read()) {
                if (!in_array($entry, array('.', '..')) && is_dir($modSettings['smileys_dir'] . '/' . $entry)) {
                    $context['smiley_set_dirs'][] = array('id' => $entry, 'path' => $modSettings['smileys_dir'] . '/' . $entry, 'selectable' => $entry == $context['current_set']['path'] || !in_array($entry, explode(',', $modSettings['smiley_sets_known'])), 'current' => $entry == $context['current_set']['path']);
                }
            }
            $dir->close();
        }
    }
}
Example #2
0
function EditSmileySets()
{
    global $modSettings, $context, $settings, $txt, $boarddir;
    global $smcFunc, $scripturl, $sourcedir;
    // Set the right tab to be selected.
    $context[$context['admin_menu_name']]['current_subsection'] = 'editsets';
    // They must've been submitted a form.
    if (isset($_POST[$context['session_var']])) {
        checkSession();
        // Delete selected smiley sets.
        if (!empty($_POST['delete']) && !empty($_POST['smiley_set'])) {
            $set_paths = explode(',', $modSettings['smiley_sets_known']);
            $set_names = explode("\n", $modSettings['smiley_sets_names']);
            foreach ($_POST['smiley_set'] as $id => $val) {
                if (isset($set_paths[$id], $set_names[$id]) && !empty($id)) {
                    unset($set_paths[$id], $set_names[$id]);
                }
            }
            updateSettings(array('smiley_sets_known' => implode(',', $set_paths), 'smiley_sets_names' => implode("\n", $set_names), 'smiley_sets_default' => in_array($modSettings['smiley_sets_default'], $set_paths) ? $modSettings['smiley_sets_default'] : $set_paths[0]));
            cache_put_data('parsing_smileys', null, 480);
            cache_put_data('posting_smileys', null, 480);
        } elseif (!empty($_POST['add'])) {
            $context['sub_action'] = 'modifyset';
        } elseif (isset($_POST['set'])) {
            $set_paths = explode(',', $modSettings['smiley_sets_known']);
            $set_names = explode("\n", $modSettings['smiley_sets_names']);
            // Create a new smiley set.
            if ($_POST['set'] == -1 && isset($_POST['smiley_sets_path'])) {
                if (in_array($_POST['smiley_sets_path'], $set_paths)) {
                    fatal_lang_error('smiley_set_already_exists');
                }
                updateSettings(array('smiley_sets_known' => $modSettings['smiley_sets_known'] . ',' . $_POST['smiley_sets_path'], 'smiley_sets_names' => $modSettings['smiley_sets_names'] . "\n" . $_POST['smiley_sets_name'], 'smiley_sets_default' => empty($_POST['smiley_sets_default']) ? $modSettings['smiley_sets_default'] : $_POST['smiley_sets_path']));
            } else {
                // Make sure the smiley set exists.
                if (!isset($set_paths[$_POST['set']]) || !isset($set_names[$_POST['set']])) {
                    fatal_lang_error('smiley_set_not_found');
                }
                // Make sure the path is not yet used by another smileyset.
                if (in_array($_POST['smiley_sets_path'], $set_paths) && $_POST['smiley_sets_path'] != $set_paths[$_POST['set']]) {
                    fatal_lang_error('smiley_set_path_already_used');
                }
                $set_paths[$_POST['set']] = $_POST['smiley_sets_path'];
                $set_names[$_POST['set']] = $_POST['smiley_sets_name'];
                updateSettings(array('smiley_sets_known' => implode(',', $set_paths), 'smiley_sets_names' => implode("\n", $set_names), 'smiley_sets_default' => empty($_POST['smiley_sets_default']) ? $modSettings['smiley_sets_default'] : $_POST['smiley_sets_path']));
            }
            // The user might have checked to also import smileys.
            if (!empty($_POST['smiley_sets_import'])) {
                ImportSmileys($_POST['smiley_sets_path']);
            }
            cache_put_data('parsing_smileys', null, 480);
            cache_put_data('posting_smileys', null, 480);
        }
    }
    // Load all available smileysets...
    $context['smiley_sets'] = explode(',', $modSettings['smiley_sets_known']);
    $set_names = explode("\n", $modSettings['smiley_sets_names']);
    foreach ($context['smiley_sets'] as $i => $set) {
        $context['smiley_sets'][$i] = array('id' => $i, 'path' => htmlspecialchars($set), 'name' => htmlspecialchars($set_names[$i]), 'selected' => $set == $modSettings['smiley_sets_default']);
    }
    // Importing any smileys from an existing set?
    if ($context['sub_action'] == 'import') {
        checkSession('get');
        $_GET['set'] = (int) $_GET['set'];
        // Sanity check - then import.
        if (isset($context['smiley_sets'][$_GET['set']])) {
            ImportSmileys(un_htmlspecialchars($context['smiley_sets'][$_GET['set']]['path']));
        }
        // Force the process to continue.
        $context['sub_action'] = 'modifyset';
        $context['sub_template'] = 'modifyset';
    }
    // If we're modifying or adding a smileyset, some context info needs to be set.
    if ($context['sub_action'] == 'modifyset') {
        $_GET['set'] = !isset($_GET['set']) ? -1 : (int) $_GET['set'];
        if ($_GET['set'] == -1 || !isset($context['smiley_sets'][$_GET['set']])) {
            $context['current_set'] = array('id' => '-1', 'path' => '', 'name' => '', 'selected' => false, 'is_new' => true);
        } else {
            $context['current_set'] =& $context['smiley_sets'][$_GET['set']];
            $context['current_set']['is_new'] = false;
            // Calculate whether there are any smileys in the directory that can be imported.
            if (!empty($modSettings['smiley_enable']) && !empty($modSettings['smileys_dir']) && is_dir($modSettings['smileys_dir'] . '/' . $context['current_set']['path'])) {
                $smileys = array();
                $dir = dir($modSettings['smileys_dir'] . '/' . $context['current_set']['path']);
                while ($entry = $dir->read()) {
                    if (in_array(strrchr($entry, '.'), array('.jpg', '.gif', '.jpeg', '.png'))) {
                        $smileys[strtolower($entry)] = $entry;
                    }
                }
                $dir->close();
                // Exclude the smileys that are already in the database.
                $request = $smcFunc['db_query']('', '
					SELECT filename
					FROM {db_prefix}smileys
					WHERE filename IN ({array_string:smiley_list})', array('smiley_list' => $smileys));
                while ($row = $smcFunc['db_fetch_assoc']($request)) {
                    if (isset($smileys[strtolower($row['filename'])])) {
                        unset($smileys[strtolower($row['filename'])]);
                    }
                }
                $smcFunc['db_free_result']($request);
                $context['current_set']['can_import'] = count($smileys);
                // Setup this string to look nice.
                $txt['smiley_set_import_multiple'] = sprintf($txt['smiley_set_import_multiple'], $context['current_set']['can_import']);
            }
        }
        // Retrieve all potential smiley set directories.
        $context['smiley_set_dirs'] = array();
        if (!empty($modSettings['smileys_dir']) && is_dir($modSettings['smileys_dir'])) {
            $dir = dir($modSettings['smileys_dir']);
            while ($entry = $dir->read()) {
                if (!in_array($entry, array('.', '..')) && is_dir($modSettings['smileys_dir'] . '/' . $entry)) {
                    $context['smiley_set_dirs'][] = array('id' => $entry, 'path' => $modSettings['smileys_dir'] . '/' . $entry, 'selectable' => $entry == $context['current_set']['path'] || !in_array($entry, explode(',', $modSettings['smiley_sets_known'])), 'current' => $entry == $context['current_set']['path']);
                }
            }
            $dir->close();
        }
    }
    $listOptions = array('id' => 'smiley_set_list', 'base_href' => $scripturl . '?action=admin;area=smileys;sa=editsets', 'default_sort_col' => 'default', 'get_items' => array('function' => 'list_getSmileySets'), 'get_count' => array('function' => 'list_getNumSmileySets'), 'columns' => array('default' => array('header' => array('value' => $txt['smiley_sets_default']), 'data' => array('function' => create_function('$rowData', '
						return $rowData[\'selected\'] ? \'<strong>*</strong>\' : \'\';
					'), 'style' => 'text-align: center;'), 'sort' => array('default' => 'selected DESC')), 'name' => array('header' => array('value' => $txt['smiley_sets_name']), 'data' => array('db_htmlsafe' => 'name', 'class' => 'windowbg'), 'sort' => array('default' => 'name', 'reverse' => 'name DESC')), 'url' => array('header' => array('value' => $txt['smiley_sets_url']), 'data' => array('sprintf' => array('format' => $modSettings['smileys_url'] . '/<strong>%1$s</strong>/...', 'params' => array('path' => true)), 'class' => 'windowbg'), 'sort' => array('default' => 'path', 'reverse' => 'path DESC')), 'modify' => array('header' => array('value' => $txt['smiley_set_modify']), 'data' => array('sprintf' => array('format' => '<a href="' . $scripturl . '?action=admin;area=smileys;sa=modifyset;set=%1$d">' . $txt['smiley_set_modify'] . '</a>', 'params' => array('id' => true)), 'style' => 'text-align: center;')), 'check' => array('header' => array('value' => '<input type="checkbox" onclick="invertAll(this, this.form);" class="input_check" />'), 'data' => array('function' => create_function('$rowData', '
						return $rowData[\'id\'] == 0 ? \'\' : sprintf(\'<input type="checkbox" name="smiley_set[%1$d]" class="input_check" />\', $rowData[\'id\']);
					'), 'style' => 'text-align: center'))), 'form' => array('href' => $scripturl . '?action=admin;area=smileys;sa=editsets'), 'additional_rows' => array(array('position' => 'below_table_data', 'value' => '<input type="submit" name="delete" value="' . $txt['smiley_sets_delete'] . '" onclick="return confirm(\'' . $txt['smiley_sets_confirm'] . '\');" style="float: right;" class="button_submit" /> [<a href="' . $scripturl . '?action=admin;area=smileys;sa=modifyset' . '">' . $txt['smiley_sets_add'] . '</a>]')));
    require_once $sourcedir . '/Subs-List.php';
    createList($listOptions);
}