}
if (!isset($rooms) || !is_scalar($rooms)) {
    $rooms = '';
}
// Get client session
if (is_object($session) && !empty($moderator_user_id) && !empty($current_user->id) && $current_user->is_admin === 'y') {
    if ($current_user->_db_getList('id = ' . $moderator_user_id, 1)) {
        $xmlwriter->setHeaderMessage('OK');
        $xmlwriter->setHeaderStatus(0);
        $current_user->_db_freeList();
        // Check categories
        $categories_new = array();
        $categories_array = explode(',', $categories);
        foreach ($categories_array as $category_id) {
            $category_id = trim($category_id);
            if (pcpin_ctype_digit($category_id) && $category->_db_getList('id', 'id = ' . $category_id, 1)) {
                // Category exists
                $categories_new[] = $category_id;
                $category->_db_freeList();
            }
        }
        $categories_new = array_unique($categories_new);
        sort($categories_new);
        // Check rooms
        $rooms_new = array();
        $rooms_array = explode(',', $rooms);
        foreach ($rooms_array as $room_id) {
            $room_id = trim($room_id);
            if (pcpin_ctype_digit($room_id) && $room->_db_getList('id', 'id = ' . $room_id, 1)) {
                // Room exists
                $rooms_new[] = $room_id;
$parent_id = 0;
// todo
if (!isset($name) || !is_scalar($name)) {
    $name = '';
}
if (!isset($description) || !is_scalar($description)) {
    $description = '';
}
if (!isset($creatable_rooms) || !is_scalar($creatable_rooms)) {
    $creatable_rooms = 'n';
}
$errortext = array();
if (!empty($current_user->id) && $current_user->is_admin === 'y' && $session->_s_user_id == $current_user->id) {
    $errortext = array();
    $name = trim($name);
    $description = trim($description);
    $creatable_rooms = trim($creatable_rooms);
    if ($name == '') {
        $errortext[] = $l->g('category_name_empty');
    } elseif ($category->_db_getList('parent_id = ' . $parent_id, 'name LIKE ' . $name, 1)) {
        $errortext[] = str_replace('[NAME]', $name, $l->g('category_name_exists'));
    }
    if (!empty($errortext)) {
        $xmlwriter->setHeaderStatus(1);
        $xmlwriter->setHeaderMessage(implode("\n", $errortext));
    } else {
        $xmlwriter->setHeaderStatus(0);
        $xmlwriter->setHeaderMessage(str_replace('[NAME]', $name, $l->g('category_created')));
        $category->addCategory($parent_id, $name, $description, $creatable_rooms);
    }
}
    $default_message_color = $session->_conf_all['default_message_color'];
}
if (!isset($password_protect) || !pcpin_ctype_digit($password_protect)) {
    $password_protect = 0;
}
if (!isset($password) || !is_scalar($password)) {
    $password = '';
}
if (!isset($image) || !pcpin_ctype_digit($image)) {
    $image = 0;
}
if (!empty($current_user->id) && $current_user->is_admin === 'y' && $session->_s_user_id == $current_user->id) {
    $errortext = array();
    $name = trim($name);
    $description = trim($description);
    if (empty($category_id) || !$category->_db_getList('id', 'id = ' . $category_id, 1)) {
        $errortext[] = $l->g('select_category');
    } elseif ($name == '') {
        $errortext[] = $l->g('room_name_empty');
    } elseif ($room->_db_getList('category_id = ' . $category_id, 'name LIKE ' . $name, 1)) {
        $errortext[] = str_replace('[NAME]', $name, $l->g('room_already_exists_in_category'));
    } elseif (!empty($password_protect) && !empty($change_password) && _pcpin_strlen($password) < 3) {
        $errortext[] = $l->g('password_too_short');
    }
    if (!empty($errortext)) {
        $xmlwriter->setHeaderStatus(1);
        $xmlwriter->setHeaderMessage(implode("\n", $errortext));
    } else {
        // Check image
        if (!empty($image) && $tmpdata->_db_getList('binaryfile_id', 'user_id = ' . $session->_s_user_id, 'type = 1', 1)) {
            $binaryfile_id = $tmpdata->_db_list[0]['binaryfile_id'];
if (!isset($profile_user_id)) {
    $profile_user_id = 0;
}
$member_xml = array();
$moderated_rooms = array();
$moderated_categories = array();
// Get client session
if (is_object($session) && !empty($profile_user_id) && !empty($current_user->id) && $current_user->is_admin === 'y') {
    if ($current_user->_db_getList('moderated_categories,moderated_rooms', 'id = ' . $profile_user_id, 1)) {
        $xmlwriter->setHeaderMessage('OK');
        $xmlwriter->setHeaderStatus(0);
        $member = $current_user->_db_list[0];
        $current_user->_db_freeList();
        $room_ids = array();
        // Get moderated categories
        if (!empty($member['moderated_categories']) && $category->_db_getList('name', 'id IN ' . $member['moderated_categories'], 'name ASC')) {
            foreach ($category->_db_list as $category_data) {
                $moderated_categories[] = $category_data['name'];
            }
            $category->_db_freeList();
            if ($room->_db_getList('id', 'category_id IN ' . $member['moderated_categories'])) {
                foreach ($room->_db_list as $room_data) {
                    $room_ids[] = $room_data['id'];
                }
                $room->_db_freeList();
            }
        }
        // Get moderated rooms
        if (!empty($member['moderated_rooms']) && $room->_db_getList('id', 'id IN ' . $member['moderated_rooms'])) {
            foreach ($room->_db_list as $room_data) {
                $room_ids[] = $room_data['id'];
$parent_id = 0;
//todo
if (!isset($name) || !is_scalar($name)) {
    $name = '';
}
if (!isset($description) || !is_scalar($description)) {
    $description = '';
}
if (!isset($creatable_rooms) || !is_scalar($creatable_rooms)) {
    $creatable_rooms = 'n';
}
$errortext = array();
if (!empty($current_user->id) && $current_user->is_admin === 'y' && $session->_s_user_id == $current_user->id) {
    $xmlwriter->setHeaderStatus(1);
    $xmlwriter->setHeaderMessage($l->g('error'));
    if (!empty($category_id) && $category->_db_getList('id = ' . $category_id)) {
        // Category exists
        $xmlwriter->setHeaderStatus(0);
        $xmlwriter->setHeaderMessage('OK');
        $category_data = $category->_db_list[0];
        $category->_db_freelist();
        switch ($action) {
            case 'change_listpos':
                if (empty($dir)) {
                    // Move up
                    if ($category->_db_getList('id,listpos', 'parent_id = ' . $category_data['parent_id'], 'listpos < ' . $category_data['listpos'], 'listpos DESC', 1)) {
                        $higher_cat_id = $category->_db_list[0]['id'];
                        $higher_cat_listpos = $category->_db_list[0]['listpos'];
                        // Update category
                        $category->updateCategory($category_id, false, true, null, null, null, null, $higher_cat_listpos);
                        // Update higher category
_pcpin_loadClass('message');
$msg = new PCPIN_Message($session);
_pcpin_loadClass('binaryfile');
$binaryfile = new PCPIN_BinaryFile($session);
$errortext = array();
if (!isset($name)) {
    $name = '';
}
if (!isset($description)) {
    $description = '';
}
if (!isset($password) || !is_scalar($password)) {
    $password = '';
}
if (!empty($current_user->id) && !empty($category_id) && is_scalar($category_id)) {
    if (!$category->_db_getList('name, creatable_rooms', 'id = ' . $category_id, 1)) {
        // Category does not exists
        $xmlwriter->setHeaderStatus(1);
        $errortext[] = $l->g('category_not_exists');
    } elseif ($category->_db_list[0]['creatable_rooms'] == 'n' || $category->_db_list[0]['creatable_rooms'] == 'r' && $current_user->is_guest == 'y') {
        // New user room cannot be created in this category
        $xmlwriter->setHeaderStatus(1);
        $errortext[] = $l->g('user_room_create_category_error');
    } else {
        $name = trim($name);
        $description = trim($description);
        if ($name == '') {
            $xmlwriter->setHeaderStatus(1);
            $errortext[] = $l->g('room_name_empty');
        } elseif ($room->_db_getList('id', 'category_id = ' . $category_id, 'name = ' . $name)) {
            // Duplicate room name
     if (!is_null($val) && isset($current_user_set[$key]) && $current_user_set[$key] != $val) {
         $update_args[$key] = $val;
     }
 }
 // Moderator?
 $update_args['moderated_rooms'] = '';
 $update_args['moderated_categories'] = '';
 if ($_pcpin_slave_userdata['is_moderator'] === 'y') {
     if ($room->_db_getList('id', 'id ASC')) {
         foreach ($room->_db_list as $data) {
             $update_args['moderated_rooms'] .= $data['id'] . ',';
         }
         $room->_db_freeList();
         $update_args['moderated_rooms'] = trim($update_args['moderated_rooms'], ',');
     }
     if ($category->_db_getList('id', 'id ASC')) {
         foreach ($category->_db_list as $data) {
             $update_args['moderated_categories'] .= $data['id'] . ',';
         }
         $category->_db_freeList();
         $update_args['moderated_categories'] = trim($update_args['moderated_categories'], ',');
     }
 }
 $current_user->_db_updateRow($current_user_set['id'], 'id', $update_args);
 // Update additional userdata
 $current_userdata->_db_getList('user_id = ' . $current_user_set['id'], 1);
 $current_userdata_set = $current_userdata->_db_list[0];
 $current_userdata->_db_freeList();
 $update_args = array();
 foreach ($_pcpin_slave_userdata as $key => $val) {
     if (!is_null($val) && isset($current_userdata_set[$key]) && $current_userdata_set[$key] != $val) {
 *
 *    "PCPIN Chat 6" is free software; you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation; either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    "PCPIN Chat 6" is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
_pcpin_loadClass('category');
$category = new PCPIN_Category($session);
if (!isset($category_id) || !pcpin_ctype_digit($category_id)) {
    $category_id = 0;
}
if (!empty($current_user->id) && $current_user->is_admin === 'y' && $session->_s_user_id == $current_user->id) {
    $xmlwriter->setHeaderStatus(1);
    $xmlwriter->setHeaderMessage($l->g('error'));
    if (!empty($category_id) && $category->_db_getList('name', 'id = ' . $category_id)) {
        // Category exists
        $xmlwriter->setHeaderStatus(0);
        $category_name = $category->_db_list[0]['name'];
        $xmlwriter->setHeaderMessage(str_replace('[NAME]', $category_name, $l->g('category_deleted')));
        // Delete category
        $category->deleteCategory($category_id);
    }
}