Ошибка "URL is not valid" в модуле link в Drupal

Если в Drupal 7 с использованием модуля link при сохранении материала с полем типа "Ссылка" выпадает ошибка с сообщением "URL is not valid ", то нужно применить патчи вот с этой страницы https://www.drupal.org/project/link/issues/2651742 либо в настройках поля в типе материала нужно убрать галочку: "Validate URL". У меня лично вот этот патч https://www.drupal.org/files/issues/link-always-not-a-valid-url-2651742-48.patch сработал:

 

		diff --git a/link.module b/link.module
		index 1e9d088..ed89a8b 100644
		--- a/link.module
		+++ b/link.module
		@@ -420,7 +420,7 @@ function _link_process(&$item, $delta, $field, $entity, $instance) {
		 function _link_validate(&$item, $delta, $field, $entity, $instance, $langcode, &$optional_field_found, &$errors) {
		   if ($item['url'] && !(isset($instance['default_value'][$delta]['url']) && $item['url'] === $instance['default_value'][$delta]['url'] && !$instance['required'])) {
		     // Validate the link.
		-    if (!link_validate_url(trim($item['url']), $langcode)) {
		+    if (!link_validate_url(trim($item['url']), $langcode) && !link_validate_url(trim($item['url']), $entity->language)) {
		       $errors[$field['field_name']][$langcode][$delta][] = array(
		         'error' => 'link_required',
		         'message' => t('The value %value provided for %field is not a valid URL.', array(
		@@ -1231,12 +1231,13 @@ function link_validate_url($text, $langcode = NULL) {
		   if ($type && ($type == LINK_INTERNAL || $type == LINK_EXTERNAL)) {
		     $flag = valid_url($text, TRUE);
		     if (!$flag) {
		-      $normal_path = drupal_get_normal_path($text, $langcode);
		-      $parsed_link = parse_url($normal_path, PHP_URL_PATH);
		-      if ($normal_path != $parsed_link) {
		-        $normal_path = $parsed_link;
		+      foreach (language_list('language') as $langcode => $language_object) {
		+        $parsed_link = parse_url($text, PHP_URL_PATH);
		+        $normal_path = drupal_get_normal_path($parsed_link, $langcode);
		+        if ($flag = drupal_valid_path($normal_path)) {
		+          break;
		+        }
		       }
		-      $flag = drupal_valid_path($normal_path);
		     }
		     if (!$flag) {
		       $flag = file_exists($normal_path);

 

Тэги:

Тэг в списке: