$Date: 2006-12-11 17:58:35 -0500 (Mon, 11 Dec 2006) $ | > $Revision: 783 $ | > $Author: bfarber $ +--------------------------------------------------------------------------- | | > Admin Forum functions | > Module written by Matt Mecham | > Date started: 17th March 2002 | | > Module Version Number: 1.0.0 | > DBA Checked: Mon 24th May 2004 +-------------------------------------------------------------------------- */ if ( ! defined( 'IN_ACP' ) ) { print "

Некорректный адрес

Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; exit(); } class ad_groups { # Global var $ipsclass; var $html; var $base_url; /** * Section title name * * @var string */ var $perm_main = "content"; /** * Section title name * * @var string */ var $perm_child = "group"; function auto_run() { $this->ipsclass->forums->forums_init(); require ROOT_PATH.'sources/lib/admin_forum_functions.php'; $this->forumfunc = new admin_forum_functions(); $this->forumfunc->ipsclass =& $this->ipsclass; //----------------------------------------- // LOAD HTML //----------------------------------------- $this->html = $this->ipsclass->acp_load_template('cp_skin_groups'); //----------------------------------------- // To do //----------------------------------------- switch($this->ipsclass->input['code']) { case 'doadd': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':add' ); $this->save_group('add'); break; case 'add': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':add' ); $this->group_form('add'); break; case 'edit': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' ); $this->group_form('edit'); break; case 'doedit': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' ); $this->save_group('edit'); break; case 'delete': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':remove' ); $this->delete_form(); break; case 'dodelete': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':remove' ); $this->do_delete(); break; //----------------------------------------- case 'fedit': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':perms' ); $this->forum_perms(); break; case 'pdelete': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':perms' ); $this->delete_mask(); break; case 'dofedit': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':perms' ); $this->do_forum_perms(); break; case 'permsplash': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':perms' ); $this->permsplash(); break; case 'view_perm_users': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':perms' ); $this->view_perm_users(); break; case 'remove_mask': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':perms' ); $this->remove_mask(); break; case 'preview_forums': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':perms' ); $this->preview_forums(); break; case 'dopermadd': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':perms' ); $this->add_new_perm(); break; case 'donameedit': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':perms' ); $this->edit_name_perm(); break; case 'master_xml_export': $this->master_xml_export(); break; default: $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' ); $this->main_screen(); break; } } /*-------------------------------------------------------------------------*/ // Export Master XML /*-------------------------------------------------------------------------*/ function master_xml_export() { //----------------------------------------- // INIT //----------------------------------------- $entry = array(); //----------------------------------------- // Get XML class //----------------------------------------- require_once( KERNEL_PATH.'class_xml.php' ); $xml = new class_xml(); $xml->doc_type = $this->ipsclass->vars['gb_char_set']; $xml->xml_set_root( 'export', array( 'exported' => time() ) ); //----------------------------------------- // Set group //----------------------------------------- $xml->xml_add_group( 'group' ); //----------------------------------------- // Get templates... //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'groups', 'order' => 'g_id ASC', 'limit' => array( 0, 6 ) ) ); $this->ipsclass->DB->simple_exec(); while ( $r = $this->ipsclass->DB->fetch_row() ) { $content = array(); $r['g_icon'] = ''; //----------------------------------------- // Sort the fields... //----------------------------------------- foreach( $r as $k => $v ) { $content[] = $xml->xml_build_simple_tag( $k, $v ); } $entry[] = $xml->xml_build_entry( 'row', $content ); } $xml->xml_add_entry_to_group( 'group', $entry ); $xml->xml_format_document(); $doc = $xml->xml_document; //----------------------------------------- // Print to browser //----------------------------------------- $this->ipsclass->admin->show_download( $doc, 'groups.xml', '', 0 ); } /*-------------------------------------------------------------------------*/ // Member group /forum mask permission form thingy doodle do yes. Viewing Perm users /*-------------------------------------------------------------------------*/ function delete_mask() { //----------------------------------------- // Check for a valid ID //----------------------------------------- if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("Нельзя произвести изменения в масках доступа этому ID, пожалуйста, попытайтесь еще раз"); } $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'forum_perms', 'where' => "perm_id=".intval($this->ipsclass->input['id']) ) ); $old_id = intval($this->ipsclass->input['id']); //----------------------------------------- // Remove from forums... //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'id, permission_array', 'from' => 'forums' ) ); $get = $this->ipsclass->DB->simple_exec(); while( $f = $this->ipsclass->DB->fetch_row($get) ) { $d_str = ""; $d_arr = unserialize(stripslashes( $f['permission_array'] ) ); $perms = unserialize(stripslashes( $f['permission_array'] ) ); foreach( array( 'read_perms', 'reply_perms', 'start_perms', 'upload_perms', 'show_perms' ) as $perm_bit ) { if ($perms[ $perm_bit ] != '*') { if ( preg_match( "/(^|,)".$old_id."(,|$)/", $perms[ $perm_bit ]) ) { $perms[ $perm_bit ] = preg_replace( "/(^|,)".$old_id."(,|$)/", "\\1\\2", $perms[ $perm_bit ] ); $d_arr[ $perm_bit ] = $this->clean_perms( $perms[ $perm_bit ] ); } } } //----------------------------------------- // Do we have anything to save? //----------------------------------------- if ( count($d_arr) > 0 ) { //----------------------------------------- // Sure?.. //----------------------------------------- $string = addslashes(serialize( $d_arr ) ); if ( strlen($string) > 5) { $this->ipsclass->DB->do_update( 'forums', array( 'permission_array' => $string ), 'id='.$f['id'] ); } } } //----------------------------------------- // Recache forums //----------------------------------------- require_once( ROOT_PATH.'sources/action_admin/forums.php' ); $ad_forums = new ad_forums(); $ad_forums->ipsclass =& $this->ipsclass; $ad_forums->recache_forums(); $this->permsplash(); } /*-------------------------------------------------------------------------*/ // Add new perm mask /*-------------------------------------------------------------------------*/ function add_new_perm() { $this->ipsclass->input['new_perm_name'] = trim($this->ipsclass->input['new_perm_name']); if ($this->ipsclass->input['new_perm_name'] == "") { $this->ipsclass->admin->error("Необходимо ввести имя"); } $copy_id = $this->ipsclass->input['new_perm_copy']; //----------------------------------------- // UPDATE DB //----------------------------------------- $this->ipsclass->DB->do_insert( 'forum_perms', array( 'perm_name' => $this->ipsclass->input['new_perm_name'] ) ); $new_id = $this->ipsclass->DB->get_insert_id(); if ( $copy_id != 'none' ) { //----------------------------------------- // Add new mask to forum accesses //----------------------------------------- $old_id = intval($copy_id); if ( ($new_id > 0) and ($old_id > 0) ) { $this->ipsclass->DB->simple_construct( array( 'select' => 'id, permission_array', 'from' => 'forums' ) ); $get = $this->ipsclass->DB->simple_exec(); while( $f = $this->ipsclass->DB->fetch_row($get) ) { $d_str = ""; $d_arr = unserialize(stripslashes( $f['permission_array'] ) ); $perms = unserialize(stripslashes( $f['permission_array'] ) ); foreach( array( 'read_perms', 'reply_perms', 'start_perms', 'upload_perms', 'show_perms', 'download_perms' ) as $perm_bit ) { if ( $perms[ $perm_bit ] != '*') { if ( preg_match( "/(^|,)".$old_id."(,|$)/", $perms[ $perm_bit ]) ) { $d_arr[ $perm_bit ] = $this->clean_perms( $perms[ $perm_bit ] ) . ",".$new_id; } } } //----------------------------------------- // Do we have anything to save? //----------------------------------------- if ( count($d_arr) > 0 ) { $string = addslashes(serialize( $d_arr ) ); //----------------------------------------- // Sure?.. //----------------------------------------- if ( strlen($string) > 5) { $this->ipsclass->DB->do_update( 'forums', array( 'permission_array' => $string ), 'id='.$f['id'] ); } } } } } //----------------------------------------- // Recache forums //----------------------------------------- require_once( ROOT_PATH.'sources/action_admin/forums.php' ); $ad_forums = new ad_forums(); $ad_forums->ipsclass =& $this->ipsclass; $ad_forums->recache_forums(); $this->ipsclass->main_msg = "Маска доступа «{$this->ipsclass->input['new_perm_name']}» добавлена."; $this->permsplash(); } /*-------------------------------------------------------------------------*/ // Preview masks /*-------------------------------------------------------------------------*/ function preview_forums() { //----------------------------------------- // Check for a valid ID //----------------------------------------- if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("Нельзя произвести изменения в масках доступа этому ID, пожалуйста, попытайтесь еще раз"); } $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); if ( ! $perms = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->admin->error("Нельзя произвести изменения в масках доступа этому ID, пожалуйста, попытайтесь еще раз"); } //----------------------------------------- // What we doin'? //----------------------------------------- switch( $this->ipsclass->input['t'] ) { case 'start': $human_type = 'Создание тем в этом форуме'; $code_word = 'start_perms'; break; case 'reply': $human_type = 'Публикация ответов в этом форуме'; $code_word = 'reply_perms'; break; case 'show': $human_type = 'Просмотр форума в этом форуме'; $code_word = 'show_perms'; break; case 'upload': $human_type = 'Загрузка файлов в этом форуме'; $code_word = 'upload_perms'; break; case 'download': $human_type = 'Скачивание файлов в этом форуме'; $code_word = 'download_perms'; break; default: $human_type = 'Просмотр этого форума'; $code_word = 'read_perms'; break; } //----------------------------------------- // Get all members using that ID then! //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( "$human_type" , "100%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Просмотр: " . $perms['perm_name'] ); $the_html = ""; $perm_id = intval($this->ipsclass->input['id']); $theforums = $this->forumfunc->ad_forums_forum_list(1); foreach( $theforums as $v ) { $id = $v[0]; $name = $v[1]; $this->ipsclass->forums->forum_by_id[$id][ $code_word ] = isset($this->ipsclass->forums->forum_by_id[$id][ $code_word ]) ? $this->ipsclass->forums->forum_by_id[$id][ $code_word ] : ''; if ($this->ipsclass->forums->forum_by_id[$id][ $code_word ] == '*') { $the_html[] = "".$name.""; } else if (preg_match( "/(^|,)".$perm_id."(,|$)/", $this->ipsclass->forums->forum_by_id[$id][ $code_word ]) ) { $the_html[] = "".$name.""; } else { if( $code_word != 'show_perms' AND $this->ipsclass->forums->forum_by_id[$id]['parent_id'] == 'root' ) { //----------------------------------------- // CATEGORY //----------------------------------------- $the_html[] = "".$name.""; } else { //----------------------------------------- // CAN'T ACCESS //----------------------------------------- $the_html[] = "".$name.""; } } } $html = implode( "
", $the_html ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( $html ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'preview_forums' ), 2 => array( 'act' , 'group' ), 3 => array( 'id' , $this->ipsclass->input['id'] ), 4 => array( 'section', $this->ipsclass->section_code ), ) ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Информация" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "$human_type: возможно", "" ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "$human_type: невозможно", "" ) ); if( $code_word != "show_perms" ) { $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Категория (эта маска не используется)", "" ) ); } $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Проверить на...", $this->ipsclass->adskin->form_dropdown( 't', array( 0 => array( 'start', 'Создание тем' ), 1 => array( 'reply', 'Публикацию ответов' ), 2 => array( 'read' , 'Чтение тем' ), 3 => array( 'show' , 'Просмотр форума' ), 4 => array( 'upload', 'Загрузку файлов' ), 5 => array( 'download', 'Скачивание файлов' ), ), $this->ipsclass->input['t'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form( "Просмотреть" ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->admin->print_popup(); } /*-------------------------------------------------------------------------*/ // Remove mask /*-------------------------------------------------------------------------*/ function remove_mask() { //----------------------------------------- // Check for a valid ID //----------------------------------------- if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("Нельзя изменить ID пользователя, попытайтесь снова"); } //----------------------------------------- // Get, check and reset //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'id, name, org_perm_id', 'from' => 'members', 'where' => "id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); if ( ! $mem = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->admin->error("Нельзя изменить ID пользователя, попытайтесь снова"); } if ( $this->ipsclass->input['pid'] == 'all' ) { $this->ipsclass->DB->do_update( 'members', array( 'org_perm_id' => 0 ), 'id='.intval($this->ipsclass->input['id'])); } else { $this->ipsclass->input['pid'] = intval($this->ipsclass->input['pid']); $pid_array = explode( ",", $this->ipsclass->clean_perm_string($mem['org_perm_id']) ); if ( count($pid_array) < 2 ) { $this->ipsclass->DB->do_update( 'members', array( 'org_perm_id' => 0 ), 'id='.intval($this->ipsclass->input['id'])); } else { $new_arr = array(); foreach( $pid_array as $sid ) { if ( $sid != $this->ipsclass->input['pid'] ) { $new_arr[] = $sid; } } $this->ipsclass->DB->do_update( 'members', array( 'org_perm_id' => implode(",",$new_arr) ), 'id='.intval($this->ipsclass->input['id'])); } } //----------------------------------------- // Get all members using that ID then! //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "100%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Результат" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Удалить созданные параметры доступа у {$mem['name']}." ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->admin->print_popup(); } /*-------------------------------------------------------------------------*/ // View perm users /*-------------------------------------------------------------------------*/ function view_perm_users() { //----------------------------------------- // Check for a valid ID //----------------------------------------- if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("Нельзя произвести изменения в масках доступа этому ID, пожалуйста, попытайтесь еще раз"); } $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); if ( ! $perms = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->admin->error("Нельзя произвести изменения в масках доступа этому ID, пожалуйста, попытайтесь еще раз"); } //----------------------------------------- // Get all members using that ID then! //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( "Сведения о пользователе" , "50%" ); $this->ipsclass->adskin->td_header[] = array( "Действие" , "50%" ); //----------------------------------------- $this->ipsclass->html .= ""; //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Используется пользователями: " . $perms['perm_name'] ); $this->ipsclass->DB->simple_construct( array( 'select' => 'id, name, email, posts, org_perm_id', 'from' => 'members', 'where' => "(org_perm_id IS NOT NULL AND org_perm_id != '')", 'order' => 'name' ) ); $outer = $this->ipsclass->DB->simple_exec(); while( $r = $this->ipsclass->DB->fetch_row($outer) ) { $exp_pid = explode( ",", $r['org_perm_id'] ); foreach( explode( ",", $r['org_perm_id'] ) as $pid ) { if ( $pid == $this->ipsclass->input['id'] ) { if ( count($exp_pid) > 1 ) { $extra = "
  • Также используются: "; $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id IN (".$this->ipsclass->clean_perm_string($r['org_perm_id']).") AND perm_id <> {$this->ipsclass->input['id']}" ) ); $this->ipsclass->DB->simple_exec(); while ( $mr = $this->ipsclass->DB->fetch_row() ) { $extra .= $mr['perm_name'].","; } $extra = preg_replace( "/,$/", "", $extra ); $extra .= ""; } else { $extra = ""; } $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "
    {$r['name']}
  • Сообщений: {$r['posts']}
  • Email: {$r['email']} $extra" , "• Удалить эту маску
    • Удалить все дополнительные маски

    • Изменить пользователя", ) ); } } } $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->admin->print_popup(); } /*-------------------------------------------------------------------------*/ // Member Group Perms: Called in "Forums" menu block /*-------------------------------------------------------------------------*/ function permsplash() { //----------------------------------------- // INIT //----------------------------------------- $perms = array(); $mems = array(); $groups = array(); $dlist = ""; $content = ""; //----------------------------------------- // Page title & desc //----------------------------------------- $this->ipsclass->admin->page_title = "Управление группами"; $this->ipsclass->admin->page_detail = "Здесь вы сможете отредактировать параметры доступа для каждой группы."; $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code.'&code=permsplash', 'Управление группами' ); //----------------------------------------- // Get the names for the perm masks w/id //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'order' => 'perm_name ASC' ) ); $this->ipsclass->DB->simple_exec(); while( $r = $this->ipsclass->DB->fetch_row() ) { $perms[ $r['perm_id'] ] = $r['perm_name']; } //----------------------------------------- // Get the number of members using this mask // as an over ride //----------------------------------------- $this->ipsclass->DB->cache_add_query( 'groups_permsplash', array() ); $this->ipsclass->DB->cache_exec_query(); while( $r = $this->ipsclass->DB->fetch_row() ) { if ( strstr( $r['org_perm_id'] , "," ) ) { foreach( explode( ",", $r['org_perm_id'] ) as $pid ) { $mems[ $pid ] = !isset($mems[ $pid ]) ? 0 : $mems[ $pid ]; $mems[ $pid ] += $r['count']; } } else { $mems[ $r['org_perm_id'] ] += $r['count']; } } //----------------------------------------- // Get the member group names and the mask // they use //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'g_id, g_title, g_perm_id', 'from' => 'groups' ) ); $this->ipsclass->DB->simple_exec(); while( $r = $this->ipsclass->DB->fetch_row() ) { if ( strstr( $r['g_perm_id'] , "," ) ) { foreach( explode( ",", $r['g_perm_id'] ) as $pid ) { $groups[ $pid ][] = $r['g_title']; } } else { $groups[ $r['g_perm_id'] ][] = $r['g_title']; } } //----------------------------------------- // Print the splash screen //----------------------------------------- foreach( $perms as $id => $name ) { $groups_used = ""; $mems_used = 0; $is_active = 0; $dlist .= "\n"; if ( isset($groups[ $id ]) AND is_array( $groups[ $id ] ) ) { foreach( $groups[ $id ] as $g_title ) { $groups_used .= '· ' . $g_title . "
    "; } $is_active = 1; } else { $groups_used = "
    Нет
    "; } if ( isset($mems[ $id ]) AND $mems[ $id ] > 0 ) { $is_active = 1; } $r['id'] = $id; $r['name'] = $name; $r['isactive'] = $is_active; $r['groups'] = $groups_used; $r['mems'] = isset($mems[ $id ]) ? intval( $mems[ $id ] ) : 0; $content .= $this->html->groups_perm_splash_row( $r ); } $this->ipsclass->html .= $this->html->groups_perm_splash_wrapper( $content, $dlist ); $this->ipsclass->admin->output(); } /*-------------------------------------------------------------------------*/ // Forum permissions /*-------------------------------------------------------------------------*/ function forum_perms() { if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("Нельзя изменить ID группы, попытайтесь снова"); } //----------------------------------------- $this->ipsclass->admin->page_title = "Управление масками доступа"; $this->ipsclass->admin->page_detail = "В этой секции вы можете изменить выбранную маску доступа."; $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code.'&code=permsplash', 'Управление масками доступа' ); $this->ipsclass->admin->nav[] = array( '', 'Добавление/изменение масок доступа' ) ; $this->ipsclass->admin->page_detail .= "
    Для разрешения выполнения действия поставьте галочку, для запрета выполнения действия просто не ставьте или уберите галочку.
    Атрибут «Глобальный» означает, что все маски доступа имеют права на выполнение этого действия, поэтому изменить этот параметр здесь нельзя.
    Категории имеют настройки доступа только на просмотр, потому что остальные действия просто не применимы для категорий."; //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $group = $this->ipsclass->DB->fetch_row(); $gid = $group['perm_id']; $gname = $group['perm_name']; //----------------------------------------- //| EDIT NAME //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'donameedit' ), 2 => array( 'act' , 'group' ), 3 => array( 'id' , $gid ), 4 => array( 'section', $this->ipsclass->section_code ), ), "nameForm" ); $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Изменение названия: ".$group['perm_name'] ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Название маски" , $this->ipsclass->adskin->form_input("perm_name", $gname ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Изменить"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- //| MAIN FORM //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'dofedit' ), 2 => array( 'act' , 'group' ), 3 => array( 'id' , $gid ), 4 => array( 'section', $this->ipsclass->section_code ), ) ); $this->ipsclass->adskin->td_header[] = array( "Форум" , "25%" ); $this->ipsclass->adskin->td_header[] = array( "Просмотр форума
    " , "10%" ); $this->ipsclass->adskin->td_header[] = array( "Чтение тем
    " , "10%" ); $this->ipsclass->adskin->td_header[] = array( "Ответ в темы
    " , "10%" ); $this->ipsclass->adskin->td_header[] = array( "Создание тем
    " , "10%" ); $this->ipsclass->adskin->td_header[] = array( "Загрузка файлов
    " , "10%" ); $this->ipsclass->adskin->td_header[] = array( "Скачивание файлов
    " , "10%" ); $forum_data = $this->forumfunc->ad_forums_forum_data(); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Параметры доступа: ".$group['perm_name'] ); foreach( $forum_data as $r ) { $show = ""; $read = ""; $start = ""; $reply = ""; $upload = ""; $global = '
    Глобальный
    '; if ($r['show_perms'] == '*') { $show = $global; } else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['show_perms'] ) ) { $show = "
    "; } else { $show = "
    "; } //----------------------------------------- $global = '
    Глобальный
    '; if ($r['read_perms'] == '*') { $read = $global; } else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['read_perms'] ) ) { $read = "
    "; } else { $read = "
    "; } //----------------------------------------- $global = '
    Глобальный
    '; if ($r['start_perms'] == '*') { $start = $global; } else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['start_perms'] ) ) { $start = "
    "; } else { $start = "
    "; } //----------------------------------------- $global = '
    Глобальный
    '; if ($r['reply_perms'] == '*') { $reply = $global; } else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['reply_perms'] ) ) { $reply = "
    "; } else { $reply = "
    "; } //----------------------------------------- $global = '
    Глобальный
    '; if ($r['upload_perms'] == '*') { $upload = $global; } else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['upload_perms'] ) ) { $upload = "
    "; } else { $upload = "
    "; } //----------------------------------------- $global = '
    Глобальный
    '; if ($r['download_perms'] == '*') { $download = $global; } else if ( preg_match( "/(^|,)".$gid."(,|$)/", $r['download_perms'] ) ) { $download = "
    "; } else { $download = "
    "; } //----------------------------------------- if ( $r['root_forum'] ) { $css = 'tablerow4'; $download = $upload = $reply = $start = $read = "
    Не используется
    "; } else { $css = ''; } $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "
     
    ".$r['depthed_name']."", "
    ".$show."
    ", "
    ".$read."
    ", "
    ".$reply."
    ", "
    ".$start."
    ", "
    ".$upload."
    ", "
    ".$download."
    ", ) ,$css ); } $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Обновить настройки доступа"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->html .= $this->html->permissions_js(); $this->ipsclass->admin->output(); } /*-------------------------------------------------------------------------*/ // Edit perm name /*-------------------------------------------------------------------------*/ function edit_name_perm() { //----------------------------------------- // Check for legal ID //----------------------------------------- if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("Нельзя изменить ID группы, попытайтесь снова"); } if ( $this->ipsclass->input['perm_name'] == "" ) { $this->ipsclass->admin->error("Необходимо ввести имя"); } $gid = $this->ipsclass->input['id']; //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); if ( ! $gr = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->admin->error("Не действительный ID группы"); } $this->ipsclass->DB->do_update( 'forum_perms', array( 'perm_name' => $this->ipsclass->input['perm_name'] ), 'perm_id='.intval($this->ipsclass->input['id']) ); $this->ipsclass->admin->save_log("Права доступа на форум отредактированы для маски: '{$gr['perm_name']}'"); $this->ipsclass->main_msg = "Permission Set Name Updated"; $this->forum_perms( ); } /*-------------------------------------------------------------------------*/ // Save forum perms /*-------------------------------------------------------------------------*/ function do_forum_perms() { //----------------------------------------- // Check for legal ID //----------------------------------------- if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("Нельзя изменить ID группы"); } $gid = intval($this->ipsclass->input['id']); //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms', 'where' => "perm_id=".$gid ) ); $this->ipsclass->DB->simple_exec(); if ( ! $gr = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->admin->error("Недействительный ID группы"); } //----------------------------------------- // Pull the forum data.. //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forums', 'order' => "position ASC" ) ); $forum_q = $this->ipsclass->DB->simple_exec(); while ( $row = $this->ipsclass->DB->fetch_row( $forum_q ) ) { $perms = unserialize(stripslashes( $row['permission_array'] ) ); $read = ""; $reply = ""; $start = ""; $upload = ""; $download = ""; $show = ""; //----------------------------------------- // Is this global? //----------------------------------------- if ($perms['read_perms'] == '*') { $read = '*'; } else { //----------------------------------------- // Split the set IDs //----------------------------------------- $read_ids = explode( ",", $perms['read_perms'] ); if ( is_array($read_ids) ) { foreach ($read_ids as $i) { //----------------------------------------- // If it's the current ID, skip //----------------------------------------- if ($gid == $i) { continue; } else { $read .= $i.","; } } } //----------------------------------------- // Was the box checked? //----------------------------------------- if ($this->ipsclass->input[ 'read_'.$row['id'] ] == 1) { // Add our group ID... $read .= $gid.","; } // Tidy.. $read = preg_replace( "/,$/", "", $read ); $read = preg_replace( "/^,/", "", $read ); } //----------------------------------------- // Reply topics.. //----------------------------------------- if ($perms['reply_perms'] == '*') { $reply = '*'; } else { $reply_ids = explode( ",", $perms['reply_perms'] ); if ( is_array($reply_ids) ) { foreach ($reply_ids as $i) { if ($gid == $i) { continue; } else { $reply .= $i.","; } } } if ($this->ipsclass->input[ 'reply_'.$row['id'] ] == 1) { $reply .= $gid.","; } $reply = preg_replace( "/,$/", "", $reply ); $reply = preg_replace( "/^,/", "", $reply ); } //----------------------------------------- // Start topics.. //----------------------------------------- if ($perms['start_perms'] == '*') { $start = '*'; } else { $start_ids = explode( ",", $perms['start_perms'] ); if ( is_array($start_ids) ) { foreach ($start_ids as $i) { if ($gid == $i) { continue; } else { $start .= $i.","; } } } if ($this->ipsclass->input[ 'start_'.$row['id'] ] == 1) { $start .= $gid.","; } $start = preg_replace( "/,$/", "", $start ); $start = preg_replace( "/^,/", "", $start ); } //----------------------------------------- // Upload topics.. //----------------------------------------- if ($perms['upload_perms'] == '*') { $upload = '*'; } else { $upload_ids = explode( ",", $perms['upload_perms'] ); if ( is_array($upload_ids) ) { foreach ($upload_ids as $i) { if ($gid == $i) { continue; } else { $upload .= $i.","; } } } if ($this->ipsclass->input[ 'upload_'.$row['id'] ] == 1) { $upload .= $gid.","; } $upload = preg_replace( "/,$/", "", $upload ); $upload = preg_replace( "/^,/", "", $upload ); } //----------------------------------------- // Download attach.. //----------------------------------------- if ($perms['download_perms'] == '*') { $download = '*'; } else { $download_ids = explode( ",", $perms['download_perms'] ); if ( is_array($download_ids) ) { foreach ($download_ids as $i) { if ($gid == $i) { continue; } else { $download .= $i.","; } } } if ($this->ipsclass->input[ 'download_'.$row['id'] ] == 1) { $download .= $gid.","; } $download = preg_replace( "/,$/", "", $download ); $download = preg_replace( "/^,/", "", $download ); } //----------------------------------------- // Show topics.. //----------------------------------------- if ($perms['show_perms'] == '*') { $show = '*'; } else { $show_ids = explode( ",", $perms['show_perms'] ); if ( is_array($show_ids) ) { foreach ($show_ids as $i) { if ($gid == $i) { continue; } else { $show .= $i.","; } } } if ($this->ipsclass->input[ 'show_'.$row['id'] ] == 1) { $show .= $gid.","; } $show = preg_replace( "/,$/", "", $show ); $show = preg_replace( "/^,/", "", $show ); } //----------------------------------------- // Update the DB... //----------------------------------------- $this->ipsclass->DB->do_update( 'forums', array( 'permission_array' => addslashes(serialize(array( 'start_perms' => $start, 'reply_perms' => $reply, 'read_perms' => $read, 'upload_perms' => $upload, 'show_perms' => $show, 'download_perms' => $download, ) ) ) ), 'id='.$row['id']); } //----------------------------------------- // Recache forums //----------------------------------------- require_once( ROOT_PATH.'sources/action_admin/forums.php' ); $adforums = new ad_forums(); $adforums->ipsclass =& $this->ipsclass; $adforums->recache_forums(); $this->ipsclass->admin->save_log("Права доступа на форум отредактированы для маски: '{$gr['perm_name']}'"); $this->ipsclass->main_msg = "Forum Access Permissions Updated"; $this->permsplash( ); } /*-------------------------------------------------------------------------*/ // Delete a group /*-------------------------------------------------------------------------*/ function delete_form() { if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("Нельзя изменить ID группы, попытайтесь снова"); } if ($this->ipsclass->input['id'] < 5) { $this->ipsclass->admin->error("Вы не можете перемещать группы, которые используются в данный момент, но переименовать и отредактировать функции можно"); } $this->ipsclass->admin->page_title = "Удаление пользовательской группы"; $this->ipsclass->admin->page_detail = "Пожалуйста, убедитесь в том, что хотите удалить данную группу."; //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'COUNT(id) as users', 'from' => 'members', 'where' => "mgroup=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $black_adder = $this->ipsclass->DB->fetch_row(); if ($black_adder['users'] < 1) { $black_adder['users'] = 0; } $this->ipsclass->DB->simple_construct( array( 'select' => 'COUNT(id) as users', 'from' => 'members', 'where' => "mgroup_others LIKE '%".intval($this->ipsclass->input['id'])."%'" ) ); $this->ipsclass->DB->simple_exec(); $extra_group = $this->ipsclass->DB->fetch_row(); if ($extra_group['users'] < 1) { $extra_group['users'] = 0; } $this->ipsclass->DB->simple_construct( array( 'select' => 'g_title', 'from' => 'groups', 'where' => "g_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $group = $this->ipsclass->DB->fetch_row(); //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'g_id, g_title', 'from' => 'groups', 'where' => "g_id <> ".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $mem_groups = array(); while ( $r = $this->ipsclass->DB->fetch_row() ) { //----------------------------------------- // Leave out root admin group //----------------------------------------- if ( $this->ipsclass->vars['admin_group'] == $r['g_id'] ) { if ( $this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] ) { continue; } } $mem_groups[] = array( $r['g_id'], $r['g_title'] ); } //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'dodelete' ), 2 => array( 'act' , 'group' ), 3 => array( 'id' , $this->ipsclass->input['id'] ), 4 => array( 'name' , $group['g_title'] ), 5 => array( 'section', $this->ipsclass->section_code ), ) ); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Подтверждение перемещения: ".$group['g_title'] ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Количество пользователей в этой группе" , "".$black_adder['users']."", ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Количество пользователей с этой группой, как вторичная группа
    Эта вторичная группа будет удалена у этих пользователей." , "".$extra_group['users']."", ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Переместить пользователей из этой группы в..." , $this->ipsclass->adskin->form_dropdown("to_id", $mem_groups ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form("Удалить эту группу"); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->admin->output(); } /*-------------------------------------------------------------------------*/ // DO DELETE /*-------------------------------------------------------------------------*/ function do_delete() { //----------------------------------------- // INIT //----------------------------------------- $this->ipsclass->input['id'] = intval($this->ipsclass->input['id']); $this->ipsclass->input['to_id'] = intval($this->ipsclass->input['to_id']); //----------------------------------------- // Auth check... //----------------------------------------- $this->ipsclass->admin->security_auth_check(); //----------------------------------------- // Check //----------------------------------------- if ( ! $this->ipsclass->input['id'] ) { $this->ipsclass->admin->error("Нельзя изменить ID группы, попытайтесь снова"); } if ( ! $this->ipsclass->input['to_id'] ) { $this->ipsclass->admin->error("No move to group ID was specified. /me cries."); } //----------------------------------------- // Ensure we didn't choose the root admin // group if we're not a root admin //----------------------------------------- if ( $this->ipsclass->vars['admin_group'] == $this->ipsclass->input['id'] ) { if ( $this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] ) { $this->ipsclass->admin->error("Извините, но у вас нет прав, чтобы переместить в эту группу"); } } //----------------------------------------- // Check to make sure that the relevant groups exist. //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'g_id', 'from' => 'groups', 'where' => "g_id IN(".$this->ipsclass->input['id'].",".$this->ipsclass->input['to_id'].")" ) ); $this->ipsclass->DB->simple_exec(); if ( $this->ipsclass->DB->get_num_rows() != 2 ) { $this->ipsclass->admin->error("Нельзя изменить ID удаленной группы"); } $this->ipsclass->DB->do_update( 'members', array( 'mgroup' => $this->ipsclass->input['to_id'] ), 'mgroup='.$this->ipsclass->input['id'] ); $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'groups', 'where' => "g_id=".$this->ipsclass->input['id'] ) ); //----------------------------------------- // Look for promotions in case we have members to be promoted to this group... //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'g_id', 'from' => 'groups', 'where' => "g_promotion LIKE '{$this->ipsclass->input['id']}&%'" ) ); $prq = $this->ipsclass->DB->simple_exec(); while ( $row = $this->ipsclass->DB->fetch_row($prq) ) { $this->ipsclass->DB->do_update( 'groups', array( 'g_promotion' => '-1&-1' ), 'g_id='.$row['g_id'] ); } //----------------------------------------- // Remove from moderators table //----------------------------------------- $this->ipsclass->DB->simple_exec_query( array( 'delete' => 'moderators', 'where' => "is_group=1 AND group_id=".$this->ipsclass->input['id'] ) ); //----------------------------------------- // Remove as a secondary group //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'mgroup,mgroup_others,id', 'from' => 'members', 'where' => "mgroup_others LIKE '%".$this->ipsclass->input['id']."%'" ) ); $exg = $this->ipsclass->DB->simple_exec(); while( $others = $this->ipsclass->DB->fetch_row($exg) ) { $extra = array(); $extra = explode( ",", $others['mgroup_others'] ); $to_insert = array(); if( count( $extra ) ) { foreach( $extra as $mgroup_other ) { if( $mgroup_other != $this->ipsclass->input['id'] ) { if( $mgroup_other != "" ) { $to_insert[] = $mgroup_other; } } } if( count( $to_insert ) ) { $new_others = ','. implode( ',', $to_insert ) .','; } else { $new_others = ""; } $this->ipsclass->DB->do_update( 'members', array( 'mgroup_others' => $new_others ), 'id='.$others['id'] ); } } $this->rebuild_group_cache(); // Make sure deleted group is not still listed as a moderator $this->ipsclass->cache['moderators'] = array(); require_once( ROOT_PATH.'sources/action_admin/moderator.php' ); $this->mod = new ad_moderator(); $this->mod->ipsclass =& $this->ipsclass; $this->mod->rebuild_moderator_cache(); $this->ipsclass->admin->save_log("Пользовательская группа'{$this->ipsclass->input['name']}' удалена"); $this->ipsclass->main_msg = "Группа удалена"; $this->main_screen(); } /*-------------------------------------------------------------------------*/ // Save changes to DB /*-------------------------------------------------------------------------*/ function save_group($type='edit') { //----------------------------------------- // INIT //----------------------------------------- $this->ipsclass->input['id'] = intval($this->ipsclass->input['id']); //----------------------------------------- // Auth check... //----------------------------------------- $this->ipsclass->admin->security_auth_check(); //----------------------------------------- // Check... //----------------------------------------- if ($this->ipsclass->input['g_title'] == "") { $this->ipsclass->admin->error("Вы должны ввести название группы."); } if ($type == 'edit') { if ( ! $this->ipsclass->input['id'] ) { $this->ipsclass->admin->error("Нельзя изменить id группы"); } if ($this->ipsclass->input['id'] == $this->ipsclass->vars['admin_group'] and $this->ipsclass->input['g_access_cp'] != 1) { $this->ipsclass->admin->error("Вы не можете удалить права на админцентр у этой группы"); } } //----------------------------------------- // Sort out the perm mask id things //----------------------------------------- if ( is_array( $_POST['permid'] ) ) { $perm_id = implode( ",", $_POST['permid'] ); } else { $this->ipsclass->admin->error("Ни одной маски доступа не выбрано"); } // Build up the hashy washy for the database ..er.. wase. $prefix = str_replace( "'", "'" , $this->ipsclass->txt_safeslashes($_POST['prefix']) ); $prefix = str_replace( "<" , "<" , $prefix ); $suffix = str_replace( "'", "'" , $this->ipsclass->txt_safeslashes($_POST['suffix']) ); $suffix = str_replace( "<" , "<" , $suffix ); $promotion_a = '-1'; //id $promotion_b = '-1'; // posts if (isset($this->ipsclass->input['g_promotion_id']) AND $this->ipsclass->input['g_promotion_id'] > 0) { $promotion_a = $this->ipsclass->input['g_promotion_id']; $promotion_b = $this->ipsclass->input['g_promotion_posts']; } if ( $this->ipsclass->input['g_attach_per_post'] and $this->ipsclass->input['g_attach_max'] > 0 ) { if ( $this->ipsclass->input['g_attach_per_post'] > $this->ipsclass->input['g_attach_max'] ) { $this->ipsclass->main_msg = "Вы не можете указывать лимит на сообщения более, чем общий глобальный лимит."; $this->group_form('edit'); } } $this->ipsclass->input['p_max'] = str_replace( ":", "", $this->ipsclass->input['p_max'] ); $this->ipsclass->input['p_width'] = str_replace( ":", "", $this->ipsclass->input['p_width'] ); $this->ipsclass->input['p_height'] = str_replace( ":", "", $this->ipsclass->input['p_height'] ); $db_string = array( 'g_view_board' => $this->ipsclass->input['g_view_board'], 'g_mem_info' => $this->ipsclass->input['g_mem_info'], 'g_other_topics' => $this->ipsclass->input['g_other_topics'], 'g_use_search' => $this->ipsclass->input['g_use_search'], 'g_email_friend' => $this->ipsclass->input['g_email_friend'], 'g_invite_friend' => isset($this->ipsclass->input['g_invite_friend']) ? intval( $this->ipsclass->input['g_invite_friend'] ) : 0, 'g_edit_profile' => $this->ipsclass->input['g_edit_profile'], 'g_post_new_topics' => $this->ipsclass->input['g_post_new_topics'], 'g_reply_own_topics' => $this->ipsclass->input['g_reply_own_topics'], 'g_reply_other_topics' => $this->ipsclass->input['g_reply_other_topics'], 'g_edit_posts' => $this->ipsclass->input['g_edit_posts'], 'g_edit_cutoff' => $this->ipsclass->input['g_edit_cutoff'], 'g_delete_own_posts' => $this->ipsclass->input['g_delete_own_posts'], 'g_open_close_posts' => $this->ipsclass->input['g_open_close_posts'], 'g_delete_own_topics' => $this->ipsclass->input['g_delete_own_topics'], 'g_post_polls' => $this->ipsclass->input['g_post_polls'], 'g_vote_polls' => $this->ipsclass->input['g_vote_polls'], 'g_use_pm' => $this->ipsclass->input['g_use_pm'], 'g_is_supmod' => $this->ipsclass->input['g_is_supmod'], 'g_access_cp' => $this->ipsclass->input['g_access_cp'], 'g_title' => trim($this->ipsclass->input['g_title']), 'g_can_remove' => isset($this->ipsclass->input['g_can_remove']) ? intval( $this->ipsclass->input['g_can_remove'] ) : 0, 'g_append_edit' => $this->ipsclass->input['g_append_edit'], 'g_access_offline' => $this->ipsclass->input['g_access_offline'], 'g_avoid_q' => $this->ipsclass->input['g_avoid_q'], 'g_avoid_flood' => $this->ipsclass->input['g_avoid_flood'], 'g_icon' => trim($this->ipsclass->txt_safeslashes($_POST['g_icon'])), 'g_attach_max' => $this->ipsclass->input['g_attach_max'], 'g_avatar_upload' => $this->ipsclass->input['g_avatar_upload'], 'g_max_messages' => $this->ipsclass->input['g_max_messages'], 'g_max_mass_pm' => $this->ipsclass->input['g_max_mass_pm'], 'g_search_flood' => $this->ipsclass->input['g_search_flood'], 'prefix' => $prefix, 'suffix' => $suffix, 'g_promotion' => $promotion_a.'&'.$promotion_b, 'g_hide_from_list' => $this->ipsclass->input['g_hide_from_list'], 'g_post_closed' => $this->ipsclass->input['g_post_closed'], 'g_perm_id' => $perm_id, 'g_photo_max_vars' => $this->ipsclass->input['p_max'].':'.$this->ipsclass->input['p_width'].':'.$this->ipsclass->input['p_height'], 'g_dohtml' => $this->ipsclass->input['g_dohtml'], 'g_edit_topic' => $this->ipsclass->input['g_edit_topic'], 'g_email_limit' => intval($this->ipsclass->input['join_limit']).':'.intval($this->ipsclass->input['join_flood']), 'g_bypass_badwords' => $this->ipsclass->input['g_bypass_badwords'], 'g_can_msg_attach' => $this->ipsclass->input['g_can_msg_attach'], 'g_attach_per_post' => $this->ipsclass->input['g_attach_per_post'], 'g_topic_rate_setting' => intval($this->ipsclass->input['g_topic_rate_setting']), 'g_dname_changes' => intval($this->ipsclass->input['g_dname_changes']), 'g_dname_date' => intval($this->ipsclass->input['g_dname_date']), ); $this->ipsclass->DB->force_data_type = array( 'g_title' => 'string' ); if ($type == 'edit') { $this->ipsclass->DB->do_update( 'groups', $db_string, 'g_id='.$this->ipsclass->input['id'] ); // Update the title of the group held in the mod table incase it changed. $this->ipsclass->DB->do_update( 'moderators', array( 'group_name' => trim($this->ipsclass->input['g_title']) ), 'group_id='.$this->ipsclass->input['id'] ); $this->ipsclass->admin->save_log("Отредактирована группа '{$this->ipsclass->input['g_title']}'"); $this->rebuild_group_cache(); $this->ipsclass->main_msg = "Группа отредактирована"; $this->main_screen(); } else { $this->ipsclass->DB->do_insert( 'groups', $db_string ); $this->ipsclass->admin->save_log("Добавлена группа '{$this->ipsclass->input['g_title']}'"); $this->rebuild_group_cache(); $this->ipsclass->main_msg = "Группа добавлена"; $this->main_screen(); } } /*-------------------------------------------------------------------------*/ // Rebuild group cache /*-------------------------------------------------------------------------*/ function rebuild_group_cache() { $this->ipsclass->cache['group_cache'] = array(); $this->ipsclass->DB->simple_construct( array( 'select' => "*", 'from' => 'groups' ) ); $this->ipsclass->DB->simple_exec(); while ( $i = $this->ipsclass->DB->fetch_row() ) { $this->ipsclass->cache['group_cache'][ $i['g_id'] ] = $i; } $this->ipsclass->update_cache( array( 'name' => 'group_cache', 'array' => 1, 'deletefirst' => 1 ) ); } /*-------------------------------------------------------------------------*/ // Clean Perm string /*-------------------------------------------------------------------------*/ function clean_perms($str) { $str = preg_replace( "/,$/", "", $str ); $str = str_replace( ",,", ",", $str ); return $str; } /*-------------------------------------------------------------------------*/ // Add / edit group /*-------------------------------------------------------------------------*/ function group_form($type='edit') { $all_groups = array( 0 => array ('none', 'Не продвигать') ); if ($type == 'edit') { if ($this->ipsclass->input['id'] == "") { $this->ipsclass->admin->error("Невозможно определить идентификатор (id) группы пользователей."); } if ( $this->ipsclass->vars['admin_group'] == $this->ipsclass->input['id'] ) { if ( $this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] ) { $this->ipsclass->admin->error("Извините, у вас нет доступа к редактированию этой группы. Эта группа относится к главным администраторам."); } } $form_code = 'doedit'; $button = 'Изменить'; } else { $form_code = 'doadd'; $button = 'Добавить'; } if ($this->ipsclass->input['id'] != "") { $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'groups', 'where' => "g_id=".intval($this->ipsclass->input['id']) ) ); $this->ipsclass->DB->simple_exec(); $group = $this->ipsclass->DB->fetch_row(); $this->ipsclass->DB->simple_construct( array( 'select' => 'g_id, g_title', 'from' => 'groups', 'where' => "g_id <> ".intval($this->ipsclass->input['id']), 'order' => 'g_title' ) ); } else { $group = array(); $this->ipsclass->DB->simple_construct( array( 'select' => 'g_id, g_title', 'from' => 'groups', 'order' => 'g_title' ) ); } //----------------------------------------- // sort out the promotion stuff //----------------------------------------- list($group['g_promotion_id'], $group['g_promotion_posts']) = explode( '&', $group['g_promotion'] ); if ($group['g_promotion_posts'] < 1) { $group['g_promotion_posts'] = ''; } $this->ipsclass->DB->simple_exec(); while ( $r = $this->ipsclass->DB->fetch_row() ) { if ( $r['g_id'] == $this->ipsclass->vars['admin_group'] ) { continue; } $all_groups[] = array( $r['g_id'], $r['g_title'] ); } //----------------------------------------- $perm_masks = array(); $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'forum_perms' ) ); $this->ipsclass->DB->simple_exec(); while ( $r = $this->ipsclass->DB->fetch_row() ) { $perm_masks[] = array( $r['perm_id'], $r['perm_name'] ); } //----------------------------------------- if ($type == 'edit') { $this->ipsclass->admin->page_title = "Изменение группы пользователей «{$group['g_title']}»"; } else { $this->ipsclass->admin->page_title = 'Добавление группы пользователей'; $group['g_title'] = 'Новая группа'; } $guest_legend = ""; if ($group['g_id'] == $this->ipsclass->vars['guest_group']) { $guest_legend = "
    Не применительно к гостям."; } $this->ipsclass->admin->page_detail = "Пожалуйста, перепроверьте все еще раз перед продолжением."; //----------------------------------------- $this->ipsclass->html .= "\n"; $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , $form_code ), 2 => array( 'act' , 'group' ), 3 => array( 'id' , $this->ipsclass->input['id'] ), 4 => array( 'section', $this->ipsclass->section_code ), ) , 'adform', "onSubmit='return checkform()'" ); list($p_max, $p_width, $p_height) = explode( ":", $group['g_photo_max_vars'] ); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $prefix = str_replace( "'", "'", $group['prefix'] ); $prefix = str_replace( '"', """, $prefix ); $prefix = str_replace( "<", "<" , $prefix ); $suffix = str_replace( "'", "'", $group['suffix'] ); $suffix = str_replace( '"', """, $suffix ); $suffix = str_replace( "<", "<" , $suffix ); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Глобальные настройки", "Основные настройки группы" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Название группы" , $this->ipsclass->adskin->form_input("g_title", $group['g_title'] ) ) ); //----------------------------------------- // Sort out default array //----------------------------------------- $this->ipsclass->html .= ""; $arr = explode( ",", $group['g_perm_id'] ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Использовать следующие маски доступа к форумам...
    Можно выбрать несколько, удерживая клавишу Ctrl." , $this->ipsclass->adskin->form_multiselect("permid[]", $perm_masks, $arr, 5, 'onfocus="saveit(this)"; onchange="saveit(this)";' )."
    " ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Картинка (иконка) группы
    Может выглядеть как style_images/1/folder_team_icons/admin.gif,
    так и в виде полного адреса 'http://'
    Используйте style_images/<#IMG_DIR#>/folder_team_icons/{image} (заменив {image} именем картинки) для динамической загрузки картинок из директории /style_images/ в стиль пользователей.
    (заполнять не обязательно)
    " , $this->ipsclass->adskin->form_textarea("g_icon", htmlspecialchars($group['g_icon']) ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Отображение в списке активных пользователей
    [приставка перед именем пользователя]

    (поле можно оставить пустым)
    (Пример: <span style='color:red'>)" , $this->ipsclass->adskin->form_input("prefix", $prefix ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Отображение в списке активных пользователей
    [суффикс после имени пользователя]

    (поле можно оставить пустым)
    (Пример: </span>)" , $this->ipsclass->adskin->form_input("suffix", $suffix ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Скрыть эту группу из списка пользователей?" , $this->ipsclass->adskin->form_yes_no("g_hide_from_list", $group['g_hide_from_list'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Прикрепление файлов", "Управление правами на прикрепление файлов к сообщениям в темах, личных сообщениях и т.д." ); if( $type == 'edit' AND $group['g_attach_max'] == 0 ) { $group['g_attach_maxdis'] = "не ограничено"; } else if( $type == 'edit' AND $group['g_attach_max'] == -1 ) { $group['g_attach_maxdis'] = "отключено"; } else { $group['g_attach_maxdis'] = $this->ipsclass->size_format( $group['g_attach_max'] * 1024 ); } $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Глобальные: Максимальное общее место на диске для всех файлов (включая личные сообщения и сообщения в темах) (в килобайтах)".$this->ipsclass->adskin->js_help_link('mg_upload')."
    Введите -1 для отключения возможности прикреплять файлы.
    Введите 0 для отключения действия ограничения на место.
    " , $this->ipsclass->adskin->form_input("g_attach_max", $group['g_attach_max'] ). ' (сейчас: '.$group['g_attach_maxdis'].')' ) ); if( $type == 'edit' AND $group['g_attach_per_post'] == 0 ) { $group['g_attach_per_postdis'] = "не ограничено"; } else if( $type == 'edit' AND $group['g_attach_per_post'] == -1 ) { $group['g_attach_per_postdis'] = "отключено"; } else { $group['g_attach_per_postdis'] = $this->ipsclass->size_format( $group['g_attach_per_post'] * 1024 ); } $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "В сообщениях: Максимальное общее место на диске для прикрепленных файлов каждого сообщения или личного сообщения (в килобайтах)".$this->ipsclass->adskin->js_help_link('mg_upload')."
    Введите 0 для отключения действия ограничения на место.
    Это значение должны быть меньшим, чем глобальное ограничение.
    " , $this->ipsclass->adskin->form_input("g_attach_per_post", $group['g_attach_per_post'] ). ' (сейчас: '.$group['g_attach_per_postdis'].')' ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Фотография: Максимальное место на диске для фотографии пользователя (в килобайтах)
    (Оставьте поле пустым для запрета загрузки фотографии вообще)" , $this->ipsclass->adskin->form_input("p_max", $p_max )."
    " ."Максимальная ширина (px): " ."Максимальная высота (px): " ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Аватар: Разрешить загрузку аватара с жесткого диска пользователя?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_avatar_upload", $group['g_avatar_upload'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Личные сообщения: Разрешить прикрепление файлов к личным сообщениям?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_can_msg_attach", $group['g_can_msg_attach'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Основные права", "Ограничения группы: что могут и не могут делать пользователи из данной группы" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут просматривать весь форум?" , $this->ipsclass->adskin->form_yes_no("g_view_board", $group['g_view_board'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут просматривать ОТКЛЮЧЕННЫЙ (OFFLINE) ФОРУМ?" , $this->ipsclass->adskin->form_yes_no("g_access_offline", $group['g_access_offline'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут просматривать профили пользователей и список пользователей?" , $this->ipsclass->adskin->form_yes_no("g_mem_info", $group['g_mem_info'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут просматривать темы, созданные другими пользователями?" , $this->ipsclass->adskin->form_yes_no("g_other_topics", $group['g_other_topics'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут использовать поиск по форуму?" , $this->ipsclass->adskin->form_yes_no("g_use_search", $group['g_use_search'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Временной интервал между повторным поиском по форуму (защита от массовых атак сервера) (в секундах)
    Введите количество секунд, в течение которых пользователь этой группы после использования поиска не сможет им воспользоваться повторно. Эта опция защищает форум от атак на сервер за счет массового поиска в короткий период времени.
    Введите 0 для отключения ограничения.
    " , $this->ipsclass->adskin->form_input("g_search_flood", $group['g_search_flood'] ) ) ); list( $limit, $flood ) = explode( ":", $group['g_email_limit'] ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Пользователи этой группы могут отправлять письма с форума на e-mail?
    Для отключения ограничений оставьте поле пустым $guest_legend" , $this->ipsclass->adskin->form_yes_no("g_email_friend", $group['g_email_friend'] ) ."
    Разрешить отправку писем на e-mail только ". $this->ipsclass->adskin->form_simple_input("join_limit", $limit, 2 )." штук в 24 часа" ."
    ... и разрешить отправку только 1 письма на e-mail каждые ".$this->ipsclass->adskin->form_simple_input("join_flood", $flood, 2 )." минут" ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут редактировать свои личные данные?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_edit_profile", $group['g_edit_profile'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут использовать личные сообщения (PM)?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_use_pm", $group['g_use_pm'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Введите максимальное число пользователей для массовой рассылки через личные сообщения пользователем данной группы?
    (Введите 0 или оставьте поле пустым для отключения возможности массовой отправки личных сообщений)
    " , $this->ipsclass->adskin->form_input("g_max_mass_pm", $group['g_max_mass_pm'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Максимальное количество сохраняемых личных сообщений?$guest_legend" , $this->ipsclass->adskin->form_input("g_max_messages", $group['g_max_messages'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $dd_topic_rate = array( 0 => array( 0, 'Нет' ), 1 => array( 1, 'Да (Не позволять изменять голоса)' ), 2 => array( 2, 'Да (Разрешить изменять голоса)' ) ); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Настройки сообщений", "Права пользователей этой группы для тем и сообщений" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут открывать новые темы (где разрешено)?" , $this->ipsclass->adskin->form_yes_no("g_post_new_topics", $group['g_post_new_topics'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут оценивать темы (где это разрешено)?" , $this->ipsclass->adskin->form_dropdown("g_topic_rate_setting", $dd_topic_rate, $group['g_topic_rate_setting'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут публиковать ответы в СВОИХ (созданных самим пользователем) темах?" , $this->ipsclass->adskin->form_yes_no("g_reply_own_topics", $group['g_reply_own_topics'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут публиковать ответы на ЧУЖИЕ темы (где разрешено)?" , $this->ipsclass->adskin->form_yes_no("g_reply_other_topics", $group['g_reply_other_topics'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут редактировать свои сообщения?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_edit_posts", $group['g_edit_posts'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Временное ограничение с даты публикации сообщения, после которого редактирование сообщения будет запрещено (в минутах)?$guest_legend
    Запрещает пользователям этой группы редактировать свои сообщения после окончания указанного периода времени.
    Введите 0 или оставьте поле пустым для отключения ограничения.
    " , $this->ipsclass->adskin->form_input("g_edit_cutoff", $group['g_edit_cutoff'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут удалять пометку «Отредактировано...» при редактировании сообщения?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_append_edit", $group['g_append_edit'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут удалять свои сообщения?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_delete_own_posts", $group['g_delete_own_posts'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут открывать/закрывать свои темы?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_open_close_posts", $group['g_open_close_posts'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут изменять названия и описания своих тем?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_edit_topic", $group['g_edit_topic'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут удалять свои темы?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_delete_own_topics", $group['g_delete_own_topics'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут создавать новые опросы (где разрешено)?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_post_polls", $group['g_post_polls'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут голосовать (где разрешено)?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_vote_polls", $group['g_vote_polls'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Не применять к пользователям данной группы флуд-контроль?" , $this->ipsclass->adskin->form_yes_no("g_avoid_flood", $group['g_avoid_flood'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Не применять проверку сообщений перед публикацией модераторами для пользователей этой группы?" , $this->ipsclass->adskin->form_yes_no("g_avoid_q", $group['g_avoid_q'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Могут использовать HTML в сообщениях?$guest_legend
    ".$this->ipsclass->adskin->js_help_link('mg_dohtml') , $this->ipsclass->adskin->form_yes_no("g_dohtml", $group['g_dohtml'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Не применять к пользователям данной группы фильтры плохих слов?$guest_legend
    " , $this->ipsclass->adskin->form_yes_no("g_bypass_badwords", $group['g_bypass_badwords'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- // DISPLAY NAME OPTIONS //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Права на изменения имен", "Действителен, только когда стоит показ имен" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Изменение имени: Лимит дней
    Это количество дней в течение которых пользователь может произвести изменения. Для примера \"30\" это означает, что пользователь может изменить свое имя только на протяжении 30-ти дней.
    " , $this->ipsclass->adskin->form_input("g_dname_date", $group['g_dname_date'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( " Изменение имени: Макс. кол-во изменений в Х дней
    Здесь вы указываете число раз, сколько пользователь сможет изменить свое имя в течение Х дней. Установите \"0\", чтобы запретить пользоваться этим преимуществом.
    " , $this->ipsclass->adskin->form_input("g_dname_changes", $group['g_dname_changes'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- // MODERATOR OPTIONS //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Установки модерирования", "Управление модераторскими возможностями для этой группы пользователей" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Сделать пользователей этой группы супермодераторами (возможность модерировать везде)?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_is_supmod", $group['g_is_supmod'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Разрешить доступ к админцентру форума для пользователей этой группы (очень важный пункт!)?$guest_legend" , $this->ipsclass->adskin->form_yes_no("g_access_cp", $group['g_access_cp'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Позволить публиковать ответы в закрытых темах?" , $this->ipsclass->adskin->form_yes_no("g_post_closed", $group['g_post_closed'] ) ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); //----------------------------------------- $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Продвижение пользователей группы" ); if ($group['g_id'] == $this->ipsclass->vars['admin_group']) { $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Выберите 'Не перемещать' для отключения продвижения
    ".$this->ipsclass->adskin->js_help_link('mg_promote') , "Эта возможность отключена для группы главных администраторов." ) ); } else { $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "Выберите «Не продвигать» для отключения продвижения пользователей этой группы$guest_legend
    ".$this->ipsclass->adskin->js_help_link('mg_promote') , 'Перемещать пользователей этой группы в другую группу пользователей (например, с более высокими правами) '.$this->ipsclass->adskin->form_dropdown("g_promotion_id", $all_groups, $group['g_promotion_id'] ) .'
    когда они набирают указанное далее количество сообщений: '.$this->ipsclass->adskin->form_simple_input('g_promotion_posts', $group['g_promotion_posts'] ).'
    (Тут используется значение счетчика сообщений пользователя).' ) ); } $this->ipsclass->html .= $this->ipsclass->adskin->end_form($button); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); $this->ipsclass->admin->output(); } /*-------------------------------------------------------------------------*/ // Show "Management Screen /*-------------------------------------------------------------------------*/ function main_screen() { //----------------------------------------- // INIT //----------------------------------------- $g_array = array(); $content = ""; $form = array(); //----------------------------------------- // Page details //----------------------------------------- $this->ipsclass->admin->page_title = "Группы пользователей"; $this->ipsclass->admin->page_detail = "Разделение на группы является очень полезной и мощной функцией для организации пользователей на форуме. Нужно помнить, что есть 4 группы, которые Вы не сможете удалить, это: (Неактивированные, Гости, Пользователи и Администраторы), однако Вы можете их редактировать. Рекомендуем Вам создать группу «Модераторы» и наделить их соответствующими правам на форуме (в разделах), которых нет у простых пользователей.
    В параметрах доступа Вы можете произвести быстрые настройки доступов к созданию тем, ответам и чтению форумов. Параметры доступа можно также отредактировать и через меню «Управление форумами»."; $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Управление группами пользователей' ); //----------------------------------------- // Get groups //----------------------------------------- $this->ipsclass->DB->cache_add_query( 'groups_main_screen', array() ); $this->ipsclass->DB->cache_exec_query(); while ( $row = $this->ipsclass->DB->fetch_row() ) { //----------------------------------------- // Set up basics //----------------------------------------- $row['_can_delete'] = ( $row['g_id'] > 4 ) ? 1 : 0; $row['_can_acp'] = ( $row['g_access_cp'] == 1 ) ? 1 : 0; $row['_can_supmod'] = ( $row['g_is_supmod'] == 1 ) ? 1 : 0; $row['_title'] = $row['prefix'].$row['g_title'].$row['suffix']; if ( $this->ipsclass->vars['admin_group'] == $row['g_id'] ) { $row['_title'] .= " ( ROOT )"; } //----------------------------------------- // IMAGES //----------------------------------------- $row['_can_acp_img'] = $row['_can_acp'] ? 'aff_tick.png' : 'aff_cross.png'; $row['_can_supmod_img'] = $row['_can_supmod'] ? 'aff_tick.png' : 'aff_cross.png'; //----------------------------------------- // Add //----------------------------------------- $content .= $this->html->groups_overview_wrapper_row( $row ); //----------------------------------------- // Add to array //----------------------------------------- $g_array[] = array( $row['g_id'], $row['g_title'] ); } //----------------------------------------- // Add form //----------------------------------------- $form['_new_dd'] = $this->ipsclass->adskin->form_dropdown("id", $g_array, 3 ); $this->ipsclass->html .= $this->html->groups_overview_wrapper( $content, $form ); $this->ipsclass->admin->output(); } } ?>