Remove unused code

pull/2487/head
jmontoyaa 9 years ago
parent 6dcacc01b7
commit e1cbea1597
  1. 203
      main/inc/lib/fileUpload.lib.php
  2. 44
      tests/main/inc/lib/fileUpload.lib.test.php

@ -1749,209 +1749,6 @@ function create_link_file($file_path, $url)
}
}
/**
* Opens html file $full_file_name;
* Parses the hyperlinks; and
* Writes the result back in the html file.
*
* @author Roan Embrechts
* @version 0.1
*/
function api_replace_links_in_html($upload_path, $full_file_name)
{
// Open the file
if (file_exists($full_file_name)) {
$fp = fopen($full_file_name, 'r');
$buffer = fread ($fp, filesize ($full_file_name));
// Parse the contents
$new_html_content = api_replace_links_in_string($upload_path, $buffer);
// Write the result
$fp = fopen($full_file_name, 'w');
fwrite($fp, $new_html_content);
}
}
/**
deprecated: use api_replace_parameter instead
Parse the buffer string provided as parameter
Replace the a href tags so they are displayed correctly.
- works for files in root and subdirectories
- replace relative hyperlinks to use showinframes.php?file= ...
- add target="_self" to all absolute hyperlinks
- leave local anchors untouched (e.g. #CHAPTER1)
- leave links with download.php and showinframes.php untouched
@author Roan Embrechts
@version 0.6
*/
function api_replace_links_in_string($upload_path, $buffer) {
// Search for hyperlinks
$matches = array();
if (preg_match_all('/<a[\s]*href[^<]*>/i', $buffer, $matches)) {
$tag_list = $matches[0];
}
// Search the filepath of all detected <a href> tags
if (sizeof($tag_list) > 0) {
$file_path_list = array();
$href_list = array();
foreach ($tag_list as & $this_tag) {
/* Match case insensitive, the stuff between the two ~ :
a href = <exactly one quote><one or more non-quotes><exactly one ">
e.g. a href="www.google.be", A HREF = "info.html"
to match ["] escape the " or else PHP interprets it
[\"]{1} --> matches exactly one "
+ 1 or more (like * is 0 or more)
[\s]* matches whitespace
$matches contains captured subpatterns
the only one here is ([^\"]+) --> matches[1]
*/
if (preg_match("~a href[\s]*=[\s]*[\"]{1}([^\"]+)[\"]{1}~i", $this_tag, $matches)) {
$file_path_list[] = $matches[1]; // older
$href_list[] = $matches[0]; // to also add target="_self"
}
}
}
// Replace the original hyperlinks by the correct ones
for ($count = 0; $count < sizeof($href_list); $count++) {
$replace_what[$count] = $href_list[$count];
$is_absolute_hyperlink = strpos($replace_what[$count], 'http');
$is_local_anchor = strpos($replace_what[$count], "#");
if (!$is_absolute_hyperlink && !$is_local_anchor) {
// This is a relative hyperlink
if ((strpos($replace_what[$count], 'showinframes.php') === false) &&
(strpos($replace_what[$count], 'download.php') === false)
) {
// Fix the link to use showinframes.php
$replace_by[$count] = 'a href = "showinframes.php?file='.$upload_path.'/'.$file_path_list[$count].'" target="_self"';
} else {
// URL has been already fixed, leave it as is
$replace_by[$count] = $replace_what[$count];
}
} elseif ($is_absolute_hyperlink) {
$replace_by[$count] = 'a href="'.$file_path_list[$count].'" target ="_self"';
} else {
// Don't change anything
$replace_by[$count] = $replace_what[$count];
}
//Display::display_normal_message('Link replaced by ' . $replace_by[$count]); // debug
}
$buffer = str_replace($replace_what, $replace_by, $buffer);
return $buffer;
}
/**
EXPERIMENTAL - function seems to work, needs more testing
@param $upload_path is the path where the document is stored, like "/archive/"
if it is the root level, the function expects "/"
otherwise "/path/"
This function parses all tags with $param_name parameters.
so the tags are displayed correctly.
--------------
Algorithm v1.0
--------------
given a string and a parameter,
* OK find all tags in that string with the specified parameter (like href or src)
* OK for every one of these tags, find the src|href|... part to edit it
* OK change the src|href|... part to use download.php (or showinframes.php)
* OK do some special stuff for hyperlinks
Exceptions
* OK if download.php or showinframes.php is already in the tag, leave it alone
* OK if mailto is in the tag, leave it alone
* OK if the src|href param contains http://, it's absolute --> leave it alone
Special for hyperlinks (a href...)
* OK add target="_self"
* OK use showinframes.php instead of download.php
@author Roan Embrechts
@version 1.1
*/
function api_replace_parameter($upload_path, $buffer, $param_name = 'src')
{
// Search for tags with $param_name as a parameter
/*
// [\s]* matches whitespace
// [\"=a-z] matches ", = and a-z
// ([\s]*[a-z]*)* matches all whitespace and normal alphabet
// characters a-z combinations but seems too slow
// perhaps ([\s]*[a-z]*) a maximum number of times ?
// [\s]*[a-z]*[\s]* matches many tags
// the ending "i" means to match case insensitive (a matches a and A)
*/
$matches = array();
if (preg_match_all('/<[a-z]+[^<]*'.$param_name.'[^<]*>/i', $buffer, $matches)) {
$tag_list = $matches[0];
}
// Search the filepath of parameter $param_name in all detected tags
if (sizeof($tag_list) > 0) {
$file_path_list = array();
$href_list = array();
foreach ($tag_list as & $this_tag) {
//Display::display_normal_message(htmlentities($this_tag)); //debug
if ( preg_match("~".$param_name."[\s]*=[\s]*[\"]{1}([^\"]+)[\"]{1}~i", $this_tag, $matches)) {
$file_path_list[] = $matches[1]; // older
$href_list[] = $matches[0]; // to also add target="_self"
}
}
}
// Replace the original tags by the correct ones
for ($count = 0; $count < sizeof($href_list); $count++) {
$replace_what[$count] = $href_list[$count];
$is_absolute_hyperlink = strpos($replace_what[$count], 'http');
$is_local_anchor = strpos($replace_what[$count], '#');
if (!$is_absolute_hyperlink && !$is_local_anchor) {
if ((strpos($replace_what[$count], 'showinframes.php') === false)
&& (strpos($replace_what[$count], 'download.php') === false)
&& (strpos($replace_what[$count], 'mailto') === false)) {
// Fix the link to use download.php or showinframes.php
if (preg_match("/<a([\s]*[\"\/:'=a-z0-9]*){5}href[^<]*>/i", $tag_list[$count])) {
$replace_by[$count] = " $param_name =\"showinframes.php?file=" . $upload_path.$file_path_list[$count]."\" target=\"_self\" ";
} else {
$replace_by[$count] = " $param_name =\"download.php?doc_url=" . $upload_path.$file_path_list[$count]."\" ";
}
} else {
// "mailto" or url already fixed, leave as is
//$message .= "Already fixed or contains mailto: ";
$replace_by[$count] = $replace_what[$count];
}
} elseif ($is_absolute_hyperlink) {
//$message .= "Absolute hyperlink, don't change, add target=_self: ";
$replace_by[$count] = " $param_name=\"" . $file_path_list[$count] . "\" target =\"_self\"";
} else {
// Don't change anything
//$message .= "Local anchor, don't change: ";
$replace_by[$count] = $replace_what[$count];
}
//$message .= "In tag $count, <b>" . htmlentities($tag_list[$count])
// . "</b>, parameter <b>" . $replace_what[$count] . "</b> replaced by <b>" . $replace_by[$count] . "</b><br>"; //debug
}
//if ($message) api_display_debug_info($message); //debug
$buffer = str_replace($replace_what, $replace_by, $buffer);
return $buffer;
}
/**
* Checks the extension of a file, if it's .htm or .html
* we use search_img_from_html to get all image paths in the file

@ -343,50 +343,6 @@ class TestFileUpload extends UnitTestCase
//var_dump($res);
}
function testApiReplaceLinksInHtml()
{
$base_work_dir = api_get_path(SYS_COURSE_PATH);
$upload_path = $base_work_dir.'upload/blog';
$full_file_name = 'doc.php';
$res = api_replace_links_in_html($upload_path, $full_file_name);
$this->assertTrue(is_null($res));
//var_dump($res);
}
function testApiReplaceLinksInString()
{
$base_work_dir = api_get_path(SYS_COURSE_PATH);
$upload_path = $base_work_dir.'upload/blog';
$buffer = ob_get_contents();
$res = api_replace_links_in_string($upload_path, $buffer);
$this->assertTrue(is_string($res));
//var_dump($res);
}
function testApiReplaceParameter()
{
$count = 0;
$matches = array();
$href_list = array();
$file_path_list[] = $matches[1];
$base_work_dir = api_get_path(SYS_COURSE_PATH);
$upload_path = $base_work_dir.'upload/blog';
$replaceWhat[$count] = $href_list[$count];
/** To can test this function you need to comment "die ('can not create file')"
* $res return void
*/
$replaceBy[$count] = " $param_name=\"".$file_path_list[$count]."\" target =\"_top\"";
$replaceBy[$count] = $replaceWhat[$count];
$buffer = str_replace($replaceWhat, $replaceBy, $buffer);
$param_name = "src";
$res = api_replace_parameter($upload_path, $buffer, $param_name = "src");
$this->assertTrue(is_string($res));
//var_dump($res);
}
//clenaning
function testCleanUpFilesInZip()
{
$p_event = '';

Loading…
Cancel
Save