Browse Source

Checking if URL exist see BT#2720

Julio Montoya 13 years ago
parent
commit
1c937c69e8
4 changed files with 82 additions and 4 deletions
  1. BIN
      main/img/icons/16/preview_view.png
  2. 51 0
      main/inc/ajax/link.ajax.php
  3. 23 3
      main/inc/lib/link.lib.php
  4. 8 1
      main/link/link.php

BIN
main/img/icons/16/preview_view.png


+ 51 - 0
main/inc/ajax/link.ajax.php

@@ -0,0 +1,51 @@
+<?php
+/* For licensing terms, see /license.txt */
+/**
+ * Responses to AJAX calls
+ */
+
+require_once '../global.inc.php';
+
+api_protect_course_script(true);
+
+$action = $_REQUEST['a'];
+
+switch ($action) {    
+    case 'check_url':
+        if (api_is_allowed_to_edit(null, true)) {
+     	    $url = $_REQUEST['url'];
+     	                
+     	    //Check if curl is available     	    
+     	    if  (!in_array('curl', get_loaded_extensions())) {
+                echo '';
+                exit;
+     	    }
+            // set URL and other appropriate options            
+            $defaults = array(
+                CURLOPT_URL => $url,
+                CURLOPT_HEADER => 0,
+                CURLOPT_RETURNTRANSFER => TRUE,
+                CURLOPT_TIMEOUT => 4
+            );
+            //create a new cURL resource
+            
+            $ch = curl_init();
+            curl_setopt_array($ch, $defaults);        
+            
+            // grab URL and pass it to the browser
+            $result = curl_exec($ch);    
+            
+            // close cURL resource, and free up system resources
+            curl_close($ch);
+            
+            if($result) {
+                echo Display::return_icon('accept.png', get_lang('Ok'));
+            } else {
+                echo Display::return_icon('wrong.gif', get_lang('Wrong'));
+            }
+        }
+        break;
+    default:
+        echo '';
+}
+exit;

+ 23 - 3
main/inc/lib/link.lib.php

@@ -549,13 +549,33 @@ function showlinksofcategory($catid) {
     		$session_img = api_get_session_image($myrow['session_id'], $_user['status']);
     
     		$css_class = $i % 2 == 0 ? $css_class = 'row_odd' : $css_class = 'row_even';
+    		
+    		$link_validator = '';
+			if (api_is_allowed_to_edit(null, true)) {
+			    $link_validator  = ''.Display::url(Display::return_icon('preview_view.png', get_lang('CheckURL'), array(), 16), '#', array('onclick'=>"check_url('".$myrow['id']."', '".addslashes($myrow['url'])."');"));    			
+			    $link_validator .= Display::span('', array('id'=>'url_id_'.$myrow['id']));
+			}
     
-    		$myrow[3] = text_filter($myrow[3]);
     		if ($myrow['visibility'] == '1') {
-    			echo '<tr class="', $css_class, '"><td align="center" valign="middle" width="15"><a href="link_goto.php?', api_get_cidreq(), '&amp;link_id=', $myrow[0], '&amp;link_url=', urlencode($myrow[1]), '" target="_blank"><img src="../../main/img/link.gif" border="0" alt="', get_lang('Link'), '"/></a></td><td width="80%" valign="top"><a href="link_goto.php?', api_get_cidreq(), '&amp;link_id=', $myrow[0], '&amp;link_url=', urlencode($myrow[1]), '" target="', $myrow['target'], '">', Security :: remove_XSS($myrow[2]), '</a>', $session_img, '<br />', $myrow[3];
+    			echo '<tr class="'.$css_class.'">';
+    			echo '<td align="center" valign="middle" width="15">';
+    			echo '<a href="link_goto.php?', api_get_cidreq(), '&amp;link_id=', $myrow[0], '&amp;link_url=', urlencode($myrow[1]), '" target="_blank"><img src="../../main/img/link.gif" border="0" alt="', get_lang('Link'), '"/></a></td><td width="80%" valign="top"><a href="link_goto.php?', api_get_cidreq(), '&amp;link_id=', $myrow[0], '&amp;link_url=', urlencode($myrow[1]), '" target="', $myrow['target'], '">';
+    			echo Security :: remove_XSS($myrow[2]);
+    			echo '</a>';    			
+    			echo $link_validator;   			
+    		
+    			echo $session_img;
+    			echo '<br />', $myrow[3];
     		} else {
     			if (api_is_allowed_to_edit(null, true)) {
-    				echo '<tr class="', $css_class, '"><td align="center" valign="middle" width="15"><a href="link_goto.php?', api_get_cidreq(), '&amp;link_id=', $myrow[0], "&amp;link_url=", urlencode($myrow[1]), '" target="_blank" class="invisible">', Display :: return_icon('link_na.gif', get_lang('Link')), '</a></td><td width="80%" valign="top"><a href="link_goto.php?', api_get_cidreq(), '&amp;link_id=', $myrow[0], '&amp;link_url=', urlencode($myrow[1]), '" target="', $myrow['target'], '"  class="invisible">', Security :: remove_XSS($myrow[2]), "</a>\n", $session_img, '<br />', $myrow[3];
+    				echo '<tr class="'.$css_class.'">';
+    				echo '<td align="center" valign="middle" width="15"><a href="link_goto.php?', api_get_cidreq(), '&amp;link_id=', $myrow[0], "&amp;link_url=", urlencode($myrow[1]), '" target="_blank" class="invisible">';
+    				echo Display :: return_icon('link_na.gif', get_lang('Link')), '</a>';
+    				echo '</td><td width="80%" valign="top"><a href="link_goto.php?', api_get_cidreq(), '&amp;link_id=', $myrow[0], '&amp;link_url=', urlencode($myrow[1]),'" target="', $myrow['target'], '"  class="invisible">';
+    				echo Security :: remove_XSS($myrow[2]);
+    				echo "</a>";
+    			    echo $link_validator;	
+    				echo $session_img, '<br />', $myrow[3];
     			}
     		}
     

+ 8 - 1
main/link/link.php

@@ -38,7 +38,14 @@ $htmlHeadXtra[] = '<script type="text/javascript">
     			$(".actions:eq("+i+")").hide();
     		}
     	}
-     } );
+     });
+     
+     function check_url(id, url) {
+     	var url = "'.api_get_path(WEB_AJAX_PATH).'link.ajax.php?a=check_url&url=" +url;
+     	var loading = " '.addslashes(Display::return_icon('loading1.gif')).'";
+     	$("#url_id_"+id).html(loading);  
+    	$("#url_id_"+id).load(url);    
+     }
  </script>';
 
 // @todo change the $_REQUEST into $_POST or $_GET