|
|
|
@ -1,19 +1,14 @@ |
|
|
|
<?php // $Id: text.lib.php 20709 2009-05-15 19:12:37Z ivantcholakov $
|
|
|
|
<?php |
|
|
|
/* For licensing terms, see /dokeos_license.txt */ |
|
|
|
/* For licensing terms, see /license.txt */ |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
============================================================================== |
|
|
|
* This is the text library for Chamilo. |
|
|
|
* This is the text library for Dokeos. |
|
|
|
|
|
|
|
* Include/require it in your code to use its functionality. |
|
|
|
* Include/require it in your code to use its functionality. |
|
|
|
* |
|
|
|
* |
|
|
|
* @package dokeos.library |
|
|
|
* @package chamilo.library |
|
|
|
============================================================================== |
|
|
|
|
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
/* FUNCTIONS */ |
|
|
|
============================================================================== |
|
|
|
|
|
|
|
FUNCTIONS |
|
|
|
|
|
|
|
============================================================================== |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* function make_clickable($string) |
|
|
|
* function make_clickable($string) |
|
|
|
@ -39,66 +34,32 @@ |
|
|
|
* have it require something like xxxx@yyyy.zzzz or such. We'll see. |
|
|
|
* have it require something like xxxx@yyyy.zzzz or such. We'll see. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
function make_clickable($string) |
|
|
|
function make_clickable($string) { |
|
|
|
{ |
|
|
|
// TODO: eregi_replace() is deprecated as of PHP 5.3 |
|
|
|
if(!stristr($string,' src=') && !stristr($string,' href=')) |
|
|
|
if (!stristr($string, ' src=') && !stristr($string, ' href=')) { |
|
|
|
{ |
|
|
|
|
|
|
|
$string = eregi_replace("(https?|ftp)://([a-z0-9#?/&=._+:~%-]+)", "<a href=\"\\1://\\2\" target=\"_blank\">\\1://\\2</a>", $string); |
|
|
|
$string = eregi_replace("(https?|ftp)://([a-z0-9#?/&=._+:~%-]+)", "<a href=\"\\1://\\2\" target=\"_blank\">\\1://\\2</a>", $string); |
|
|
|
$string = eregi_replace("([a-z0-9_.-]+@[a-z0-9.-]+)", "<a href=\"mailto:\\1\">\\1</a>", $string); |
|
|
|
$string = eregi_replace("([a-z0-9_.-]+@[a-z0-9.-]+)", "<a href=\"mailto:\\1\">\\1</a>", $string); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $string; |
|
|
|
return $string; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* formats the date according to the locale settings |
|
|
|
* Formats the date according to the locale settings |
|
|
|
* |
|
|
|
* |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University |
|
|
|
* @author Christophe Gesch<EFBFBD> <gesche@ipm.ucl.ac.be> |
|
|
|
* @author Christophe Gesché <gesche@ipm.ucl.ac.be> |
|
|
|
* originally inspired from from PhpMyAdmin |
|
|
|
* originally inspired from from PhpMyAdmin |
|
|
|
* @param string $date_format date pattern |
|
|
|
* @param string $date_format date pattern |
|
|
|
* @param integer $time_stamp, default is NOW. |
|
|
|
* @param integer $time_stamp, default is NOW. |
|
|
|
* @return the formatted date |
|
|
|
* @return the formatted date |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
function format_locale_date($date_format, $time_stamp = -1, $language = null) |
|
|
|
function format_locale_date($date_format, $time_stamp = -1, $language = null) { |
|
|
|
{ |
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
static $initialized = false; |
|
|
|
|
|
|
|
static $days_short, $days_long, $months_short, $months_long; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!$initialized) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// Defining the shorts for the days |
|
|
|
|
|
|
|
$days_short = array (get_lang("SundayShort"), get_lang("MondayShort"), get_lang("TuesdayShort"), get_lang("WednesdayShort"), get_lang("ThursdayShort"), get_lang("FridayShort"), get_lang("SaturdayShort")); |
|
|
|
|
|
|
|
// Defining the days of the week to allow translation of the days |
|
|
|
|
|
|
|
$days_long = array (get_lang("SundayLong"), get_lang("MondayLong"), get_lang("TuesdayLong"), get_lang("WednesdayLong"), get_lang("ThursdayLong"), get_lang("FridayLong"), get_lang("SaturdayLong")); |
|
|
|
|
|
|
|
// Defining the shorts for the months |
|
|
|
|
|
|
|
$months_short = array (get_lang("JanuaryShort"), get_lang("FebruaryShort"), get_lang("MarchShort"), get_lang("AprilShort"), get_lang("MayShort"), get_lang("JuneShort"), get_lang("JulyShort"), get_lang("AugustShort"), get_lang("SeptemberShort"), get_lang("OctoberShort"), get_lang("NovemberShort"), get_lang("DecemberShort")); |
|
|
|
|
|
|
|
// Defining the months of the year to allow translation of the months |
|
|
|
|
|
|
|
$months_long = array (get_lang("JanuaryLong"), get_lang("FebruaryLong"), get_lang("MarchLong"), get_lang("AprilLong"), get_lang("MayLong"), get_lang("JuneLong"), get_lang("JulyLong"), get_lang("AugustLong"), get_lang("SeptemberLong"), get_lang("OctoberLong"), get_lang("NovemberLong"), get_lang("DecemberLong")); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$initialized = true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($time_stamp == -1) $time_stamp = time(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// with the ereg we replace %aAbB of date format |
|
|
|
|
|
|
|
//(they can be done by the system when locale date aren't aivailable |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$date = ereg_replace('%[A]', $days_long[(int)strftime('%w', $time_stamp)], $date_format); |
|
|
|
|
|
|
|
$date = ereg_replace('%[a]', $days_short[(int)strftime('%w', $time_stamp)], $date); |
|
|
|
|
|
|
|
$date = ereg_replace('%[B]', $months_long[(int)strftime('%m', $time_stamp)-1], $date); |
|
|
|
|
|
|
|
$date = ereg_replace('%[b]', $months_short[(int)strftime('%m', $time_stamp)-1], $date); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return strftime($date, $time_stamp); |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
return api_format_date($date_format, $time_stamp, $language); |
|
|
|
return api_format_date($date_format, $time_stamp, $language); |
|
|
|
} // end function format_locale_date |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* @desc this function does some parsing on the text that gets inputted. This parsing can be of any kind |
|
|
|
* @desc This function does some parsing on the text that gets inputted. This parsing can be of any kind |
|
|
|
* LaTeX notation, Word Censoring, Glossary Terminology (extension will available soon), Musical Notations, ... |
|
|
|
* LaTeX notation, Word Censoring, Glossary Terminology (extension will available soon), Musical Notations, ... |
|
|
|
* The inspiration for this filter function came from Moodle an phpBB who both use a similar approach |
|
|
|
* The inspiration for this filter function came from Moodle an phpBB who both use a similar approach |
|
|
|
* @param $input string. some text |
|
|
|
* @param $input string. some text |
|
|
|
@ -107,24 +68,20 @@ function format_locale_date($date_format, $time_stamp = -1, $language = null) |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> |
|
|
|
* @version March 2OO6 |
|
|
|
* @version March 2OO6 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
function text_filter($input, $filter=true) |
|
|
|
function text_filter($input, $filter = true) { |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//$input = stripslashes($input); |
|
|
|
//$input = stripslashes($input); |
|
|
|
|
|
|
|
|
|
|
|
if ($filter==true) |
|
|
|
if ($filter) { |
|
|
|
{ |
|
|
|
|
|
|
|
// *** parse [tex]...[/tex] tags *** // |
|
|
|
// *** parse [tex]...[/tex] tags *** // |
|
|
|
// which will return techexplorer or image html depending on the capabilities of the |
|
|
|
// which will return techexplorer or image html depending on the capabilities of the |
|
|
|
// browser of the user (using some javascript that checks if the browser has the TechExplorer plugin installed or not) |
|
|
|
// browser of the user (using some javascript that checks if the browser has the TechExplorer plugin installed or not) |
|
|
|
$input = _text_parse_tex($input); |
|
|
|
$input = _text_parse_tex($input); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// *** parse [teximage]...[/teximage] tags *** // |
|
|
|
// *** parse [teximage]...[/teximage] tags *** // |
|
|
|
// these force the gif rendering of LaTeX using the mimetex gif renderer |
|
|
|
// these force the gif rendering of LaTeX using the mimetex gif renderer |
|
|
|
//$input=_text_parse_tex_image($input); |
|
|
|
//$input=_text_parse_tex_image($input); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// *** parse [texexplorer]...[/texexplorer] tags *** // |
|
|
|
// *** parse [texexplorer]...[/texexplorer] tags *** // |
|
|
|
// these force the texeplorer LaTeX notation |
|
|
|
// these force the texeplorer LaTeX notation |
|
|
|
$input = _text_parse_texexplorer($input); |
|
|
|
$input = _text_parse_texexplorer($input); |
|
|
|
@ -135,7 +92,7 @@ function text_filter($input, $filter=true) |
|
|
|
// $input=text_censor_words($input); |
|
|
|
// $input=text_censor_words($input); |
|
|
|
|
|
|
|
|
|
|
|
// *** parse [?]...[/?] tags *** // |
|
|
|
// *** parse [?]...[/?] tags *** // |
|
|
|
// for the glossary tool (see http://www.dokeos.com/extensions) |
|
|
|
// for the glossary tool |
|
|
|
$input = _text_parse_glossary($input); |
|
|
|
$input = _text_parse_glossary($input); |
|
|
|
|
|
|
|
|
|
|
|
// parse [wiki]...[/wiki] tags |
|
|
|
// parse [wiki]...[/wiki] tags |
|
|
|
@ -156,9 +113,8 @@ function text_filter($input, $filter=true) |
|
|
|
return $input; |
|
|
|
return $input; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Apply parsing to content to parse tex commandos that are seperated by [tex] |
|
|
|
* Applies parsing for tex commandos that are seperated by [tex] |
|
|
|
* [/tex] to make it readable for techexplorer plugin. |
|
|
|
* [/tex] to make it readable for techexplorer plugin. |
|
|
|
* This function should not be accessed directly but should be accesse through the text_filter function |
|
|
|
* This function should not be accessed directly but should be accesse through the text_filter function |
|
|
|
* @param string $text The text to parse |
|
|
|
* @param string $text The text to parse |
|
|
|
@ -166,18 +122,14 @@ function text_filter($input, $filter=true) |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> |
|
|
|
* @version June 2004 |
|
|
|
* @version June 2004 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
function _text_parse_tex($textext) |
|
|
|
function _text_parse_tex($textext) { |
|
|
|
{ |
|
|
|
|
|
|
|
//$textext = str_replace(array ("[tex]", "[/tex]"), array ('[*****]', '[/*****]'), $textext); |
|
|
|
//$textext = str_replace(array ("[tex]", "[/tex]"), array ('[*****]', '[/*****]'), $textext); |
|
|
|
//$textext=stripslashes($texttext); |
|
|
|
//$textext=stripslashes($texttext); |
|
|
|
|
|
|
|
|
|
|
|
$input_array = preg_split("/(\[tex]|\[\/tex])/", $textext, -1, PREG_SPLIT_DELIM_CAPTURE); |
|
|
|
$input_array = preg_split("/(\[tex]|\[\/tex])/", $textext, -1, PREG_SPLIT_DELIM_CAPTURE); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach ($input_array as $key => $value) { |
|
|
|
foreach ($input_array as $key=>$value) |
|
|
|
if ($key > 0 && $input_array[$key - 1] == '[tex]' AND $input_array[$key + 1] == '[/tex]') { |
|
|
|
{ |
|
|
|
|
|
|
|
if ($key>0 && $input_array[$key-1]=='[tex]' AND $input_array[$key+1]=='[/tex]') |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$input_array[$key] = latex_gif_renderer($value); |
|
|
|
$input_array[$key] = latex_gif_renderer($value); |
|
|
|
unset($input_array[$key - 1]); |
|
|
|
unset($input_array[$key - 1]); |
|
|
|
unset($input_array[$key + 1]); |
|
|
|
unset($input_array[$key + 1]); |
|
|
|
@ -188,8 +140,9 @@ function _text_parse_tex($textext) |
|
|
|
$output=implode('',$input_array); |
|
|
|
$output=implode('',$input_array); |
|
|
|
return $output; |
|
|
|
return $output; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Apply parsing to content to parse tex commandos that are seperated by [tex] |
|
|
|
* Applies parsing for tex commandos that are seperated by [tex] |
|
|
|
* [/tex] to make it readable for techexplorer plugin. |
|
|
|
* [/tex] to make it readable for techexplorer plugin. |
|
|
|
* This function should not be accessed directly but should be accesse through the text_filter function |
|
|
|
* This function should not be accessed directly but should be accesse through the text_filter function |
|
|
|
* @param string $text The text to parse |
|
|
|
* @param string $text The text to parse |
|
|
|
@ -197,25 +150,21 @@ function _text_parse_tex($textext) |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> |
|
|
|
* @version June 2004 |
|
|
|
* @version June 2004 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
function _text_parse_texexplorer($textext) |
|
|
|
function _text_parse_texexplorer($textext) { |
|
|
|
{ |
|
|
|
if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) { |
|
|
|
if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$textext = str_replace(array("[texexplorer]", "[/texexplorer]"), array("<object classid=\"clsid:5AFAB315-AD87-11D3-98BB-002035EFB1A4\"><param name=\"autosize\" value=\"true\" /><param name=\"DataType\" value=\"0\" /><param name=\"Data\" value=\"", "\" /></object>"), $textext); |
|
|
|
$textext = str_replace(array("[texexplorer]", "[/texexplorer]"), array("<object classid=\"clsid:5AFAB315-AD87-11D3-98BB-002035EFB1A4\"><param name=\"autosize\" value=\"true\" /><param name=\"DataType\" value=\"0\" /><param name=\"Data\" value=\"", "\" /></object>"), $textext); |
|
|
|
} |
|
|
|
} else { |
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$textext = str_replace(array("[texexplorer]", "[/texexplorer]"), array("<embed type=\"application/x-techexplorer\" texdata=\"", "\" autosize=\"true\" pluginspage=\"http://www.integretechpub.com/techexplorer/\">"), $textext); |
|
|
|
$textext = str_replace(array("[texexplorer]", "[/texexplorer]"), array("<embed type=\"application/x-techexplorer\" texdata=\"", "\" autosize=\"true\" pluginspage=\"http://www.integretechpub.com/techexplorer/\">"), $textext); |
|
|
|
} |
|
|
|
} |
|
|
|
return $textext; |
|
|
|
return $textext; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* This function should not be accessed directly but should be accesse through the text_filter function |
|
|
|
* This function should not be accessed directly but should be accesse through the text_filter function |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
function _text_parse_glossary($input) |
|
|
|
function _text_parse_glossary($input) { |
|
|
|
{ |
|
|
|
|
|
|
|
return $input; |
|
|
|
return $input; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -224,8 +173,7 @@ function _text_parse_glossary($input) |
|
|
|
* This function should not be accessed directly but should be accesse through the text_filter function |
|
|
|
* This function should not be accessed directly but should be accesse through the text_filter function |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
function _text_parse_tool($input) |
|
|
|
function _text_parse_tool($input) { |
|
|
|
{ |
|
|
|
|
|
|
|
// an array with all the valid tools |
|
|
|
// an array with all the valid tools |
|
|
|
$tools[] = array(TOOL_ANNOUNCEMENT, 'announcements/announcements.php'); |
|
|
|
$tools[] = array(TOOL_ANNOUNCEMENT, 'announcements/announcements.php'); |
|
|
|
$tools[] = array(TOOL_CALENDAR_EVENT, 'calendar/agenda.php'); |
|
|
|
$tools[] = array(TOOL_CALENDAR_EVENT, 'calendar/agenda.php'); |
|
|
|
@ -233,15 +181,11 @@ function _text_parse_tool($input) |
|
|
|
// check if the name between the [tool] [/tool] tags is a valid one |
|
|
|
// check if the name between the [tool] [/tool] tags is a valid one |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* render LaTeX code into a gif or retrieve a cached version of the gif |
|
|
|
* render LaTeX code into a gif or retrieve a cached version of the gif |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> Ghent University |
|
|
|
* @author Patrick Cool <patrick.cool@UGent.be> Ghent University |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
function latex_gif_renderer($latex_code) |
|
|
|
function latex_gif_renderer($latex_code) { |
|
|
|
{ |
|
|
|
|
|
|
|
global $_course; |
|
|
|
global $_course; |
|
|
|
|
|
|
|
|
|
|
|
// setting the paths and filenames |
|
|
|
// setting the paths and filenames |
|
|
|
@ -249,21 +193,17 @@ function latex_gif_renderer($latex_code) |
|
|
|
$temp_path = api_get_path(SYS_COURSE_PATH).$_course['path'].'/temp/'; |
|
|
|
$temp_path = api_get_path(SYS_COURSE_PATH).$_course['path'].'/temp/'; |
|
|
|
$latex_filename = md5($latex_code).'.gif'; |
|
|
|
$latex_filename = md5($latex_code).'.gif'; |
|
|
|
|
|
|
|
|
|
|
|
if(!file_exists($temp_path.$latex_filename) OR isset($_GET['render'])) |
|
|
|
if (!file_exists($temp_path.$latex_filename) OR isset($_GET['render'])) { |
|
|
|
{ |
|
|
|
if ((PHP_OS == "WINNT") || (PHP_OS == "WIN32") || (PHP_OS == "Windows")) { |
|
|
|
if ((PHP_OS == "WINNT") || (PHP_OS == "WIN32") || (PHP_OS == "Windows")) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$mimetex_command = $mimetex_path.'mimetex.exe -e "'.$temp_path.md5($latex_code).'.gif" '.escapeshellarg($latex_code).''; |
|
|
|
$mimetex_command = $mimetex_path.'mimetex.exe -e "'.$temp_path.md5($latex_code).'.gif" '.escapeshellarg($latex_code).''; |
|
|
|
} |
|
|
|
} else { |
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$mimetex_command = $mimetex_path.'mimetex.linux -e "'.$temp_path.md5($latex_code).'.gif" '.escapeshellarg($latex_code); |
|
|
|
$mimetex_command = $mimetex_path.'mimetex.linux -e "'.$temp_path.md5($latex_code).'.gif" '.escapeshellarg($latex_code); |
|
|
|
} |
|
|
|
} |
|
|
|
exec($mimetex_command); |
|
|
|
exec($mimetex_command); |
|
|
|
//echo 'volgende shell commando werd uitgevoerd:<br /><pre>'.$mimetex_command.'</pre><hr>'; |
|
|
|
//echo 'volgende shell commando werd uitgevoerd:<br /><pre>'.$mimetex_command.'</pre><hr>'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$return = "<a href=\"\" onclick=\"newWindow=window.open('".api_get_path(WEB_CODE_PATH)."inc/latex.php?code=".urlencode($latex_code)."&filename=$latex_filename','latexCode','toolbar=no,location=no,scrollbars=yes,resizable=yes,status=yes,width=375,height=250,left=200,top=100');\">"; |
|
|
|
$return = "<a href=\"\" onclick=\"javascript: newWindow=window.open('".api_get_path(WEB_CODE_PATH)."inc/latex.php?code=".urlencode($latex_code)."&filename=$latex_filename','latexCode','toolbar=no,location=no,scrollbars=yes,resizable=yes,status=yes,width=375,height=250,left=200,top=100');\">"; |
|
|
|
$return .= '<img src="'.api_get_path(WEB_COURSE_PATH).$_course['path'].'/temp/'.$latex_filename.'" alt="'.$latex_code.'" border="0" /></a>'; |
|
|
|
$return .= '<img src="'.api_get_path(WEB_COURSE_PATH).$_course['path'].'/temp/'.$latex_filename.'" alt="'.$latex_code.'" border="0" /></a>'; |
|
|
|
return $return; |
|
|
|
return $return; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -279,8 +219,8 @@ function latex_gif_renderer($latex_code) |
|
|
|
* @author Julio Montoya |
|
|
|
* @author Julio Montoya |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
function date_to_str_ago($date) |
|
|
|
function date_to_str_ago($date) { |
|
|
|
{ |
|
|
|
|
|
|
|
static $initialized = false; |
|
|
|
static $initialized = false; |
|
|
|
static $today, $yesterday; |
|
|
|
static $today, $yesterday; |
|
|
|
static $min_decade, $min_year, $min_month, $min_week, $min_day, $min_hour, $min_minute; |
|
|
|
static $min_decade, $min_year, $min_month, $min_week, $min_day, $min_hour, $min_minute; |
|
|
|
@ -316,10 +256,10 @@ function date_to_str_ago($date) |
|
|
|
$initialized = true; |
|
|
|
$initialized = true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$dst_date=strtotime($date); |
|
|
|
$dst_date = is_string($date) ? strtotime($date) : $date; |
|
|
|
//for not call date several times |
|
|
|
// For avoiding calling date() several times |
|
|
|
$date_array=date("s/i/G/j/n/Y",$dst_date); |
|
|
|
$date_array = date('s/i/G/j/n/Y', $dst_date); |
|
|
|
$date_split=explode("/",$date_array); |
|
|
|
$date_split = explode('/', $date_array); |
|
|
|
|
|
|
|
|
|
|
|
$dst_s = $date_split[0]; |
|
|
|
$dst_s = $date_split[0]; |
|
|
|
$dst_m = $date_split[1]; |
|
|
|
$dst_m = $date_split[1]; |
|
|
|
@ -329,9 +269,9 @@ function date_to_str_ago($date) |
|
|
|
$dst_yr = $date_split[5]; |
|
|
|
$dst_yr = $date_split[5]; |
|
|
|
|
|
|
|
|
|
|
|
$dst_date = mktime($dst_h, $dst_m, $dst_s, $dst_mth, $dst_day, $dst_yr); |
|
|
|
$dst_date = mktime($dst_h, $dst_m, $dst_s, $dst_mth, $dst_day, $dst_yr); |
|
|
|
$time=$offset = time()-$dst_date; //seconds between current days and today |
|
|
|
$time = $offset = time() - $dst_date; // Seconds between current days and today. |
|
|
|
|
|
|
|
|
|
|
|
//------------ Here start the functions sec_to_str |
|
|
|
// Here start the functions sec_to_str() |
|
|
|
$act_day = date('d'); |
|
|
|
$act_day = date('d'); |
|
|
|
$act_mth = date('n'); |
|
|
|
$act_mth = date('n'); |
|
|
|
$act_yr = date('Y'); |
|
|
|
$act_yr = date('Y'); |
|
|
|
@ -390,6 +330,7 @@ function date_to_str_ago($date) |
|
|
|
} |
|
|
|
} |
|
|
|
return $str; |
|
|
|
return $str; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* This functions cuts a paragraph |
|
|
|
* This functions cuts a paragraph |
|
|
|
* i.e cut('Merry Xmas from Lima',13) = "Merry Xmas fr..." |
|
|
|
* i.e cut('Merry Xmas from Lima',13) = "Merry Xmas fr..." |
|
|
|
@ -398,17 +339,16 @@ function date_to_str_ago($date) |
|
|
|
* @param bool Whether to embed in a <span title="...">...</span> |
|
|
|
* @param bool Whether to embed in a <span title="...">...</span> |
|
|
|
* @return string |
|
|
|
* @return string |
|
|
|
* */ |
|
|
|
* */ |
|
|
|
function cut($text,$maxchar,$embed=false) |
|
|
|
function cut($text, $maxchar, $embed = false) { |
|
|
|
{ |
|
|
|
|
|
|
|
if (api_strlen($text) > $maxchar) { |
|
|
|
if (api_strlen($text) > $maxchar) { |
|
|
|
if ($embed==true) { |
|
|
|
if ($embed) { |
|
|
|
return '<span title="'.$text.'">'.api_substr($text, 0, $maxchar).'...</span>'; |
|
|
|
return '<span title="'.$text.'">'.api_substr($text, 0, $maxchar).'...</span>'; |
|
|
|
} |
|
|
|
} |
|
|
|
return api_substr($text, 0, $maxchar).'...' ; |
|
|
|
return api_substr($text, 0, $maxchar).'...' ; |
|
|
|
} else { |
|
|
|
|
|
|
|
return $text; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return $text; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Show a number as only integers if no decimals, but will show 2 decimals if exist. |
|
|
|
* Show a number as only integers if no decimals, but will show 2 decimals if exist. |
|
|
|
* |
|
|
|
* |
|
|
|
@ -416,8 +356,7 @@ function cut($text,$maxchar,$embed=false) |
|
|
|
* @param int decimal points 0=never, 1=if needed, 2=always |
|
|
|
* @param int decimal points 0=never, 1=if needed, 2=always |
|
|
|
* @return mixed an integer or a float depends on the parameter |
|
|
|
* @return mixed an integer or a float depends on the parameter |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
function float_format($number, $flag = 1) |
|
|
|
function float_format($number, $flag = 1) { |
|
|
|
{ |
|
|
|
|
|
|
|
if (is_numeric($number)) { // a number |
|
|
|
if (is_numeric($number)) { // a number |
|
|
|
if (!$number) { // zero |
|
|
|
if (!$number) { // zero |
|
|
|
$result = ($flag == 2 ? '0.00' : '0'); // output zero |
|
|
|
$result = ($flag == 2 ? '0.00' : '0'); // output zero |
|
|
|
@ -452,5 +391,3 @@ function get_last_week() { |
|
|
|
} |
|
|
|
} |
|
|
|
return $arrdays; |
|
|
|
return $arrdays; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
?> |
|
|
|
|
|
|
|
|