/** * Валидация: блокируем ответы от анонимов. */ function comment_reply_limit_anonymous_reply_validate($form, &$form_state) { if (!user_is_anonymous()) { return; } $pid = _comment_reply_limit_get_pid($form); if ($pid > 0) { // Находим правильное имя поля для ошибки $error_field = _comment_reply_limit_find_body_field($form); form_set_error($error_field, t('Только зарегистрированные пользователи могут отвечать на комментарии. Пожалуйста, войдите или зарегистрируйтесь**.**', array( '@login' => url('user/login'), '@register' => url('user/register'), ))); watchdog('comment_reply_limit', 'Anonymous reply blocked: pid=@pid, field=@field', array( '@pid' => $pid, '@field' => $error_field, )); } } /** * Находит имя поля тела комментария в форме. */ function _comment_reply_limit_find_body_field($form) { // Проверяем распространённые варианты $candidates = array( 'comment_body', 'comment_body[und][0][value]', 'body[und][0][value]', 'comment_body[0][value]', ); foreach ($candidates as $field) { if (_comment_reply_limit_field_exists($form, $field)) { return $field; } } // Если ничего не найдено — возвращаем первое текстовое поле в форме foreach ($form as $key => $value) { if (is_string($key) && $key[0] != '#' && isset($value['#type']) && $value['#type'] == 'textarea') { return $key; } } // Фолбэк return 'comment_body'; } /** * Проверяет, существует ли поле в структуре формы. */ function _comment_reply_limit_field_exists($form, $field_name) { // Прямое совпадение if (isset($form[$field_name])) { return TRUE; } // Для сложных имён типа 'field[und][0][value]' if (strpos($field_name, '[') !== FALSE) { $parts = preg_split('/[\[\]]+/', $field_name, -1, PREG_SPLIT_NO_EMPTY); $current = $form; foreach ($parts as $part) { if (is_array($current) && isset($current[$part])) { $current = $current[$part]; } else { return FALSE; } } return TRUE; } return FALSE; } Виджет "Официальный профиль"
Простодок
Парастаева Диана Владимировна имеет официальный профиль в сервисе "Простодок"