Ejemplo n.º 1
0
  *
  * main usergroups page where the user can select a group.
  */
 // grab usergroups data
 include $get->url('includes/class_rcs_set');
 $set = new rcs_set();
 $items = $set->get_usergroups_list();
 unset($set);
 // let's go
 if (!empty($items)) {
     // header
     $page_title = $lang['Group_Control_Panel'];
     include $get->url('includes/page_header');
     // hidden fields
     _hide_build(array('sid' => $userdata['session_id']));
     _hide_send();
     // build groups list
     $groups_list = array('name' => POST_GROUPS_URL, 'items' => $items);
     $rcs->constructor($groups_list);
     unset($items);
     // display
     $template->set_filenames(array('user' => 'groupcp_select_body.tpl'));
     // constants
     $template->assign_vars(array('L_USERGROUPS' => $lang['usergroups_list'], 'L_SELECT_USERGROUP' => $lang['select_usergroup'], 'L_SELECT_USERGROUP_DETAILS' => $lang['select_usergroup_details'], 'L_VIEW_INFORMATION' => $lang['View_Information'], 'I_SUBMIT' => $images['cmd_submit'], 'S_USERGROUP_ACTION' => $get->url('groupcp', '', true)));
     // navigation
     $navigation = new navigation();
     $navigation->add('usergroups_list', 'select_usergroup', 'groupcp');
     $navigation->display();
     unset($navigation);
     // send the display
     $template->pparse('user');
Ejemplo n.º 2
0
    function action()
    {
        global $db, $template, $lang, $images;
        global $common, $rcs, $get;
        if ($this->mode == 'edit' || $this->mode == 'add') {
            if ($this->mode == 'edit') {
                if (!isset($this->data[$this->rcs_id]['id'])) {
                    // send achievement message
                    $this->_achievement('rcs_not_exists');
                }
                // get this rank data
                $rank = $this->data[$this->rcs_id];
                // hidden fields
                _hide_build(array('id' => $this->rcs_id, 'rcs_tmp_name' => $rank['name'], 'rcs_tmp_color' => $rank['color'], 'rcs_tmp_order' => $rank['order'], 'rcs_tmp_single' => $rank['single'], 'rcs_tmp_display' => $rank['display']));
                $style = $rcs->get_style($rank['name'], $rank['color']);
                $template->assign_block_vars('edit', array('L_RCS_EDIT_TITLE' => sprintf($lang['rcs_edit_title'], $style, lang_item($rank['name'])), 'L_RCS_EDIT_TITLE_DESC' => $lang['rcs_edit_title_desc']));
            } else {
                // get the last rank
                $last_idx = count($this->data);
                $keys = array_values($this->data);
                $last_rank = $keys[intval($last_idx - 1)];
                // set last rank data
                $rank['name'] = $rank['color'] = '';
                $rank['single'] = $rank['display'] = 0;
                // hidden fields
                _hide_build(array('rcs_tmp_order' => $last_rank['order']));
                $template->assign_block_vars('add', array('L_RCS_ADD_TITLE' => $lang['rcs_add_title'], 'L_RCS_ADD_TITLE_DESC' => $lang['rcs_add_title_desc']));
            }
            $rcs_is_single = $rank['single'] ? ' checked="checked"' : '';
            $rcs_is_not_single = !$rank['single'] ? ' checked="checked"' : '';
            $rcs_is_display = $rank['display'] ? ' checked="checked"' : '';
            $rcs_is_not_display = !$rank['display'] ? ' checked="checked"' : '';
            // build list order
            $after = 0;
            $items = array();
            $list_move_after = array(0 => 'Top');
            if (!empty($this->data)) {
                $keys = array_keys($this->data);
                $tkeys = array_flip($keys);
                $after = intval($keys[$tkeys[$this->rcs_id] - 1]);
                unset($tkeys);
                foreach ($this->data as $rank_id => $rank_data) {
                    if ($rank_id != $this->rcs_id) {
                        $list_move_after[$rank_id] = $rank_data['name'];
                    }
                }
            }
            if (!empty($list_move_after)) {
                foreach ($list_move_after as $val => $desc) {
                    $items[] = array('name' => lang_item($desc), 'value' => $this->data[$val]['order'], 'style' => !empty($val) ? $rcs->get_style($desc, $this->data[$val]['color']) : '', 'selected' => $val == $after);
                }
                $rcs_list_order = array('name' => 'rcs_order', 'items' => $items);
                $rcs->constructor($rcs_list_order, 'LIST_ORDER');
                unset($items);
            }
            // hidden fields
            _hide_send();
            // display
            $template->assign_vars(array('RCS_NAME' => $rank['name'], 'RCS_COLOR' => $rank['color'], 'RCS_SINGLE' => $rcs_is_single, 'RCS_NOT_SINGLE' => $rcs_is_not_single, 'RCS_DISPLAY' => $rcs_is_display, 'RCS_NOT_DISPLAY' => $rcs_is_not_display, 'L_RCS_NAME' => $lang['rcs_name'], 'L_RCS_NAME_DESC' => $lang['rcs_name_desc'], 'L_RCS_COLOR' => $lang['rcs_color'], 'L_RCS_COLOR_DESC' => $lang['rcs_color_desc'], 'L_RCS_SINGLE' => $lang['rcs_single'], 'L_RCS_SINGLE_DESC' => $lang['rcs_single_desc'], 'L_RCS_DISPLAY' => $lang['rcs_display'], 'L_RCS_DISPLAY_DESC' => $lang['rcs_display_desc'], 'L_RCS_MOVE_AFTER' => $lang['rcs_move_after'], 'L_PICK_COLOR' => $lang['rcs_pick_color'], 'L_SUBMIT' => $lang['Submit'], 'L_CANCEL' => $lang['Cancel'], 'L_YES' => $lang['Yes'], 'L_NO' => $lang['No'], 'I_SUBMIT' => $this->root . $images['cmd_submit'], 'I_CANCEL' => $this->root . $images['cmd_cancel'], 'S_RCS_ACTION' => $get->url($this->requester, '', true)));
            // send to template
            $template->set_filenames(array('body' => 'admin/rcs_edit_body.tpl'));
        } else {
            if ($this->mode == 'save') {
                $rcs_name = request_var('rcs_name', TYPE_NO_HTML);
                $rcs_color = request_var('rcs_color', TYPE_NO_HTML);
                $rcs_single = request_var('rcs_single', TYPE_INT);
                $rcs_display = request_var('rcs_display', TYPE_INT);
                $rcs_tmp_name = request_var('rcs_tmp_name', TYPE_NO_HTML);
                $rcs_tmp_color = request_var('rcs_tmp_color', TYPE_NO_HTML);
                $rcs_tmp_single = request_var('rcs_tmp_single', TYPE_INT);
                $rcs_tmp_display = request_var('rcs_tmp_display', TYPE_INT);
                $rcs_tmp_order = request_var('rcs_tmp_order', TYPE_INT);
                $rcs_order = request_var('rcs_order', TYPE_INT);
                $rcs_order = $rcs_order + 10 == $rcs_tmp_order ? $rcs_tmp_order : $rcs_order + 5;
                if ($rcs_name == '' || !preg_match('/^[a-z0-9_-]*$/i', $rcs_name) && empty($rcs_color)) {
                    // send achievement message
                    $this->_achievement('rcs_must_fill');
                }
                // prepare data
                $rcs_name = $common->sql_type_cast($rcs_name, true);
                $rcs_color = !preg_match('/^[0-9a-f]{6}$/i', $rcs_color) ? '' : $rcs_color;
                $rcs_single = $common->sql_type_cast($rcs_single);
                $rcs_display = $common->sql_type_cast($rcs_display);
                $rcs_order = $common->sql_type_cast($rcs_order);
                if (!empty($this->rcs_id)) {
                    $sql = 'UPDATE ' . RCS_TABLE . '
					SET rcs_name = ' . $rcs_name . ', rcs_color = \'' . $rcs_color . '\', rcs_single = ' . $rcs_single . ', rcs_display = ' . $rcs_display . ', rcs_order = ' . $rcs_order . '
					WHERE rcs_id = ' . $this->rcs_id;
                    $l_key = 'rcs_updated';
                } else {
                    $rcs_new_order = $rcs_order - 5;
                    $rcs_order = $rcs_tmp_order == $rcs_new_order ? $rcs_order + 5 : $rcs_order;
                    $sql = 'INSERT INTO ' . RCS_TABLE . ' (rcs_name, rcs_color, rcs_single, rcs_display, rcs_order)
					VALUES (' . $rcs_name . ', \'' . $rcs_color . '\', ' . $rcs_single . ', ' . $rcs_display . ', ' . $rcs_order . ')';
                    $rcs_order = $rcs_tmp_order == $rcs_new_order ? $rcs_tmp_order : $rcs_order;
                    $l_key = 'rcs_added';
                }
                if (!$db->sql_query($sql)) {
                    message_die(GENERAL_ERROR, 'Could not update/insert into rank color system table', '', __LINE__, __FILE__, $sql);
                }
                // renum order
                if ($rcs_order != $rcs_tmp_order) {
                    $this->_renum_order();
                }
                // update colors if individual value has changed
                if ($rcs_single != $rcs_tmp_single && !empty($this->rcs_id)) {
                    // users/groups to update
                    $list_ids = array();
                    $sql = 'SELECT group_id
					FROM ' . GROUPS_TABLE . '
					WHERE group_color = ' . $this->rcs_id;
                    if (!empty($rcs_tmp_single)) {
                        $patterns = array('group_id', GROUPS_TABLE, 'group_color');
                        $replacements = array('user_id', USERS_TABLE, 'user_color');
                        $sql = str_replace($patterns, $replacements, $sql);
                    }
                    if (!($result = $db->sql_query($sql))) {
                        message_die(GENERAL_ERROR, 'Error getting group/user information', '', __LINE__, __FILE__, $sql);
                    }
                    while ($row = $db->sql_fetchrow($result)) {
                        $row_id = !empty($rcs_tmp_single) ? $row['user_id'] : $row['group_id'];
                        if (!empty($row_id)) {
                            $list_ids[intval($row_id)] = true;
                        }
                    }
                    $db->sql_freeresult($result);
                    // delete users/groups color
                    if (!empty($list_ids)) {
                        $result_ids = implode(', ', array_keys($list_ids));
                        $rcs->update_colors($result_ids, $rcs_tmp_single, 0);
                    }
                }
                // re-cache ranks color variables, if necessary
                $has_modified = $rcs_tmp_name != $rcs_name || $rcs_tmp_color != $rcs_color || $rcs_tmp_single != $rcs_single || $rcs_tmp_display != $rcs_display;
                if ($has_modified) {
                    $rcs->obtain_ids_colors(true);
                }
                // send achievement message
                $this->_achievement($l_key);
            } else {
                if ($this->mode == 'delete') {
                    if (!isset($this->data[$this->rcs_id]['id'])) {
                        // send achievement message
                        $this->_achievement('rcs_not_exists');
                    }
                    $confirm = request_var('confirm', TYPE_NO_HTML);
                    if (!empty($confirm)) {
                        $sql = 'DELETE FROM ' . RCS_TABLE . '
					WHERE rcs_id = ' . $this->rcs_id;
                        if (!$db->sql_query($sql)) {
                            message_die(GENERAL_ERROR, 'Could not delete rank color', '', __LINE__, __FILE__, $sql);
                        }
                        // renum order
                        $this->_renum_order();
                        // users/groups to update
                        $list_ids = array();
                        $rcs_tmp_single = $this->data[$this->rcs_id]['single'];
                        $sql = 'SELECT group_id
					FROM ' . GROUPS_TABLE . '
					WHERE group_color = ' . $this->rcs_id;
                        if (!empty($rcs_tmp_single)) {
                            $patterns = array('group_id', GROUPS_TABLE, 'group_color');
                            $replacements = array('user_id', USERS_TABLE, 'user_color');
                            $sql = str_replace($patterns, $replacements, $sql);
                        }
                        if (!($result = $db->sql_query($sql))) {
                            message_die(GENERAL_ERROR, 'Error getting group/user information', '', __LINE__, __FILE__, $sql);
                        }
                        while ($row = $db->sql_fetchrow($result)) {
                            $row_id = !empty($rcs_tmp_single) ? $row['user_id'] : $row['group_id'];
                            if (!empty($row_id)) {
                                $list_ids[intval($row_id)] = true;
                            }
                        }
                        $db->sql_freeresult($result);
                        // delete users/groups color
                        if (!empty($list_ids)) {
                            $result_ids = implode(', ', array_keys($list_ids));
                            $rcs->update_colors($result_ids, $rcs_tmp_single, false, true);
                        }
                        // re-cache ranks color variables
                        $rcs->obtain_ids_colors(true);
                        // send achievement message
                        $this->_achievement('rcs_removed');
                    } else {
                        // hidden fields
                        _hide_build(array('mode' => 'delete', 'id' => $this->rcs_id));
                        _hide_send();
                        $template->assign_vars(array('MESSAGE_TITLE' => $lang['Confirm'], 'MESSAGE_TEXT' => $lang['rcs_confirm_delete'], 'L_YES' => $lang['Yes'], 'L_NO' => $lang['No'], 'S_CONFIRM_ACTION' => $get->url($this->requester, '', true)));
                        // send to template
                        $template->set_filenames(array('body' => 'admin/confirm_body.tpl'));
                    }
                }
            }
        }
    }