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 = "
%s | %0.9f s. |
\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 "Mark | Value |
\n";
}
foreach($this->marks as $name => $value) {
printf($this->template,ucwords($name),$value['time']);
}
if ($this->mode != 'cli') {
print "
\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);
}
?>