123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- <?php
- /*
- ----------------------------------------------------------------------------------
- PhpDig Version 1.8.x - See the config file for the full version number.
- This program is provided WITHOUT warranty under the GNU/GPL license.
- See the LICENSE file for more information about the GNU/GPL license.
- Contributors are listed in the CREDITS and CHANGELOG files in this package.
- Developer from inception to and including PhpDig v.1.6.2: Antoine Bajolet
- Developer from PhpDig v.1.6.3 to and including current version: Charter
- Copyright (C) 2001 - 2003, Antoine Bajolet, http://www.toiletoine.net/
- Copyright (C) 2003 - current, Charter, http://www.phpdig.net/
- Contributors hold Copyright (C) to their code submissions.
- Do NOT edit or remove this copyright or licence information upon redistribution.
- If you modify code and redistribute, you may ADD your copyright to this notice.
- ----------------------------------------------------------------------------------
- */
- /**
- * PhpDig
- * @package chamilo.metadata
- */
- /**
- * init
- */
- define('CONFIG_CHECK','check'); // do not edit this line
- //-------------UTILS FUNCTIONS
- //=================================================
- // extract _POST or _GET variables from a list varname => vartype
- // Useful for error_reporting E_ALL too, init variables
- // usage in script : extract(phpdigHttpVars(array('foobar'=>'string')));
- function phpdigHttpVars($varray=array()) {
- $parse_orders = array('_POST','_GET','HTTP_POST_VARS','HTTP_GET_VARS');
- $httpvars = array();
- // extract the right array
- if (is_array($varray)) {
- foreach($parse_orders as $globname) {
- global $$globname;
- if (!count($httpvars) && isset($$globname) && is_array($$globname)) {
- $httpvars = $$globname;
- }
- }
- // extract or create requested vars
- foreach($varray as $varname => $vartype) {
- if (in_array($vartype,array('integer','bool','double','float','string','array')) ) {
- if (!isset($httpvars[$varname])) {
- if (!isset($GLOBALS[$varname])) {
- $httpvars[$varname] = false;
- }
- else {
- $httpvars[$varname] = $GLOBALS[$varname];
- }
- }
- settype($httpvars[$varname],$vartype);
- }
- }
- return $httpvars;
- }
- }
- /**
- * timer for profiling
- * @package chamilo.metadata
- */
- class phpdigTimer {
- var $time = 0;
- var $mode = '';
- var $marks = array();
- var $template = '';
- function phpdigTimer($mode='html') {
- $this->time = $this->getTime();
- if ($mode == 'cli') {
- $this->template = "%s:\t%0.9f s. \n";
- }
- else {
- $this->template = "<tr><td class=\"greyForm\">%s</td><td class=\"greyForm\">%0.9f s. </td></tr>\n";
- }
- }
- function start($name) {
- if (!isset($this->marks[$name])) {
- $this->marks[$name]['time'] = $this->getTime();
- $this->marks[$name]['stat'] = 'r';
- }
- else if ($this->marks[$name]['stat'] == 's') {
- $this->marks[$name]['time'] = $this->getTime()-$this->marks[$name]['time'];
- $this->marks[$name]['stat'] = 'r';
- }
- }
- function stop($name) {
- if (isset($this->marks[$name]) && $this->marks[$name]['stat'] == 'r') {
- $this->marks[$name]['time'] = $this->getTime()-$this->marks[$name]['time'];
- }
- else {
- $this->marks[$name]['time'] = 0;
- }
- $this->marks[$name]['stat'] = 's';
- }
- function display() {
- if ($this->mode != 'cli') {
- print "<table class=\"borderCollapse\"><tr><td class=\"blueForm\">Mark</td><td class=\"blueForm\">Value</td></tr>\n";
- }
- foreach($this->marks as $name => $value) {
- printf($this->template,ucwords($name),$value['time']);
- }
- if ($this->mode != 'cli') {
- print "</table>\n";
- }
- }
- // increase precision with deltime
- function getTime() {
- return array_sum(explode(' ',microtime()))-$this->time;
- }
- }
- //-------------STRING FUNCTIONS
- //=================================================
- //returns a localized string
- function phpdigMsg($string='') {
- global $phpdig_mess;
- if (isset($phpdig_mess[$string])) {
- return nl2br($phpdig_mess[$string]);
- }
- else {
- return ucfirst($string);
- }
- }
- //=================================================
- //print a localized string
- function phpdigPrnMsg($string='') {
- global $phpdig_mess;
- if (isset($phpdig_mess[$string])) {
- print nl2br($phpdig_mess[$string]);
- }
- else {
- print ucfirst($string);
- }
- }
- //=================================================
- //load the common words in an array
- function phpdigComWords($file='')
- {
- $lines = @file($file);
- if (is_array($lines))
- {
- while (list($id,$word) = each($lines))
- $common[trim($word)] = 1;
- }
- else
- $common['aaaa'] = 1;
- return $common;
- }
- //=================================================
- //highlight a string part
- function phpdigHighlight($ereg='',$string='')
- {
- if ($ereg) {
- $string = @eregi_replace($ereg,"\\1<^#_>\\2</_#^>\\3",@eregi_replace($ereg,"\\1<^#_>\\2</_#^>\\3",$string));
- $string = str_replace("^#_","span class=\"phpdigHighlight\"",str_replace("_#^","span",$string));
- return $string;
- }
- else {
- return null;
- }
- }
- //=================================================
- //replace all characters with an accent
- function phpdigStripAccents($chaine,$encoding=PHPDIG_ENCODING) {
- global $phpdigEncode;
- if (!isset($phpdigEncode[$encoding])) {
- $encoding = PHPDIG_ENCODING;
- }
- // exceptions
- if ($encoding == 'iso-8859-1') {
- $chaine = str_replace('�','ae',str_replace('�','ae',$chaine));
- }
- return( strtr( $chaine,$phpdigEncode[$encoding]['str'],$phpdigEncode[$encoding]['tr']) );
- }
- //==========================================
- //Create a ereg for highlighting
- function phpdigPregQuotes($chaine,$encoding=PHPDIG_ENCODING) {
- global $phpdigEncode;
- if (!isset($phpdigEncode[$encoding])) {
- $encoding = PHPDIG_ENCODING;
- }
- $chaine = preg_quote(strtolower(phpdigStripAccents($chaine,$encoding)));
- return str_replace($phpdigEncode[$encoding]['char'],$phpdigEncode[$encoding]['ereg'],$chaine);
- }
- //=================================================
- // Create Useful arrays for different encodings
- function phpdigCreateSubstArrays($subststrings) {
- $phpdigEncode = array();
- global $phpdigEncode;
- foreach($subststrings as $encoding => $subststring) {
- $tempArray = explode(',',$subststring);
- if (!isset($phpdigEncode[$encoding])) {
- $phpdigEncode[$encoding] = array();
- }
- $phpdigEncode[$encoding]['str'] = '';
- $phpdigEncode[$encoding]['tr'] = '';
- $phpdigEncode[$encoding]['char'] = array();
- $phpdigEncode[$encoding]['ereg'] = array();
- foreach ($tempArray as $tempSubstitution) {
- $chrs = explode(':',$tempSubstitution);
- $phpdigEncode[$encoding]['char'][strtolower($chrs[0])] = strtolower($chrs[0]);
- settype($phpdigEncode[$encoding]['ereg'][strtolower($chrs[0])],'string');
- $phpdigEncode[$encoding]['ereg'][strtolower($chrs[0])] .= $chrs[0].$chrs[1];
- for($i=0; $i < strlen($chrs[1]); $i++) {
- $phpdigEncode[$encoding]['str'] .= $chrs[1][$i];
- $phpdigEncode[$encoding]['tr'] .= $chrs[0];
- }
- }
- foreach($phpdigEncode[$encoding]['ereg'] as $id => $ereg) {
- $phpdigEncode[$encoding]['ereg'][$id] = '['.$ereg.']';
- }
- }
- }
- //=================================================
- //epure a string from all non alnum words (words can contain &__&��� character)
- function phpdigEpureText($text,$min_word_length=2,$encoding=PHPDIG_ENCODING) {
- global $phpdig_words_chars;
- $text = phpdigStripAccents(strtolower ($text));
- //no-latin upper to lowercase - now islandic
- switch (PHPDIG_ENCODING) {
- case 'iso-8859-1':
- $text = strtr( $text,'��','��');
- break;
- }
- // RH ereg_replace('[^'.$phpdig_words_chars[$encoding].' \'._~@#$:&%/;,=-]+',' ',$text);
- $text = ereg_replace('[^'.$phpdig_words_chars[$encoding].' \'._~@#$&%/=-]+',' ',$text);
- // RH ereg_replace('(['.$phpdig_words_chars[$encoding].'])[\'._~@#$:&%/;,=-]+($|[[:space:]]$|[[:space:]]['.$phpdig_words_chars[$encoding].'])','\1 \2',$text);
- $text = ereg_replace('(['.$phpdig_words_chars[$encoding].'])[\'._~@#$&%/=-]+($|[[:space:]]$|[[:space:]]['.$phpdig_words_chars[$encoding].'])','\1 \2',$text);
- // the next two repeated lines needed
- if ($min_word_length >= 1) {
- $text = ereg_replace('[[:space:]][^ ]{1,'.$min_word_length.'}[[:space:]]',' ',' '.$text.' ');
- $text = ereg_replace('[[:space:]][^ ]{1,'.$min_word_length.'}[[:space:]]',' ',' '.$text.' ');
- }
- $text = ereg_replace('\.{2,}',' ',$text);
- $text = ereg_replace('^[[:space:]]*\.+',' ',$text);
- return trim(ereg_replace("[[:space:]]+"," ",$text));
- }
- //-------------SQL FUNCTIONS
- //=================================================
- //insert an entry in logs
- function phpdigAddLog ($id_connect,$option='start',$includes=array(),$excludes=array(),$num_results=0,$time=0) {
- if (!is_array($excludes)) {
- $excludes = array();
- }
- sort($excludes);
- if (!is_array($includes)) {
- $includes = array();
- }
- sort($includes);
- $query = 'INSERT INTO '.PHPDIG_DB_PREFIX.'logs (l_num,l_mode,l_ts,l_includes,l_excludes,l_time) '
- .'VALUES ('.$num_results.',\''.substr($option,0,1).'\',NOW(),'
- .'\''.implode(' ',$includes).'\',\''.implode(' ',$excludes).'\','.(double)$time.')';
- mysql_query($query,$id_connect);
- return mysql_insert_id($id_connect);
- }
- ?>
|