예제 #1
0
/**
* Обновление категории.
*
* @param    array   $frm    Данные категории
*/
function UpdateCategory($frm)
{
    global $session;
    session_start();
    $objResponse = new xajaxResponse();
    $id = $frm['category_id'];
    $name = $frm['commune_fld_edit_category_name'];
    $is_only_for_admin = $frm['commune_fld_edit_category_only_for_admin'];
    $commune_id = $frm['commune_id'];
    $om = $frm['om'];
    $uid = get_uid(false);
    if ($uid) {
        $status = commune::GetUserCommuneRel($commune_id, $uid);
    } else {
        return $objResponse;
    }
    if ($status['is_moderator'] == 1 || $status['is_admin'] == 1 || $status['is_author'] == 1 || hasPermissions('communes')) {
        $error = 0;
        $name = trim(strip_tags(stripslashes($name)));
        $allow = "1234567890\t\n !.\"',.!@%^#\$;:-<>";
        $str = 'abcdefghijklmnopqrstuvwxyz';
        $cir = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
        $allow .= $str . strtoupper($str) . $cir;
        $tS = '';
        for ($i = 0; $i < strlen($name); ++$i) {
            $ch = $name[$i];
            if (strpos($allow, $ch) !== FALSE) {
                $tS .= $ch;
            }
        }
        $name = $tS;
        if ($name == '' || strlen($name) > 30) {
            $error = 1;
            $objResponse->script("alert('Название раздела не может быть пустым и должно содержать не более 30 символов " . strlen($name) . "');");
        }
        $edit_id = commune::issetCategory($name, $commune_id);
        if ($edit_id && (int) $edit_id !== (int) $id) {
            $error = 1;
            $objResponse->script("alert('Раздел с таким названием уже существует.');");
        }
        if (!$error) {
            commune::updateCategory($id, $name, $is_only_for_admin, $commune_id);
            $objResponse->script("xajax_ShowCategoriesList({$commune_id},1,{$om});");
            $objResponse->assign('editmsg', 'innerHTML', __commPrntCommentForm($commune_id, $om));
        }
        $objResponse->script('communeObj.initCategories');
    }
    return $objResponse;
}