.
if (!defined('EG')) die('Direct access not allowed!');
function encodeUrl($url)
{
$url = str_replace(' ','-',$url);
$url = str_replace('[',null,$url);
$url = str_replace(']',null,$url);
$url = str_replace('(',null,$url);
$url = str_replace(')',null,$url);
$url = str_replace('@','-at-',$url);
$url = urlencode($url);
// $url = html_entity_decode($url, ENT_QUOTES);
// $url = xml_encode($url);
return $url;
}
function smartDate($uglyDate = null, $lang = 'en')
{
switch ($lang)
{
case 'en':
$smDate = date('H:i, d F Y',strtotime($uglyDate));
break;
default:
$smDate = date('H:i, d F Y',strtotime($uglyDate));
}
return $smDate;
}
function sanitizeString($string)
{
$string = preg_match('/^[a-zA-Z0-9\-\_\.\+\s]+$/',$string) ? sanitizeAll($string) : 'undef';
return $string;
}
function sanitizeAlphanum($string)
{
$string = ctype_alnum($string) ? sanitizeAll($string) : 'undef';
return $string;
}
function sanitizePciid($string)
{
$string = preg_match('/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/',$string) ? sanitizeAll($string) : '0';
return $string;
}
function getOrderByClause($string)
{
switch ($string)
{
case 'last-inserted':
$orderBy = 'hardware.id_hard desc';
break;
case 'alphabetically':
$orderBy = 'model';
break;
case 'alphabetically-desc':
$orderBy = 'model desc';
break;
case 'compatibility':
$orderBy = 'compatibility';
break;
case 'undef':
$orderBy = 'hardware.id_hard desc';
break;
default:
$orderBy = 'hardware.id_hard desc';
}
return $orderBy;
}
function diff($old, $new){
$maxlen = 0;
foreach($old as $oindex => $ovalue){
// $nkeys = getNewKeys($new,$ovalue);
$nkeys = array_keys($new, $ovalue);
foreach($nkeys as $nindex){
$matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
$matrix[$oindex - 1][$nindex - 1] + 1 : 1;
if($matrix[$oindex][$nindex] > $maxlen){
$maxlen = $matrix[$oindex][$nindex];
$omax = $oindex + 1 - $maxlen;
$nmax = $nindex + 1 - $maxlen;
}
}
}
if($maxlen == 0) return array(array('d'=>$old, 'i'=>$new));
return array_merge(
diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)),
array_slice($new, $nmax, $maxlen),
diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen)));
}
function htmlDiff($old, $new){
$old = str_replace("\r\n"," \r\n ",$old);
$new = str_replace("\r\n"," \r\n ",$new);
$ret = null;
$diff = diff(explode(' ', $old), explode(' ', $new));
foreach($diff as $k){
if(is_array($k))
$ret .= (!empty($k['d'])?"".implode(' ',$k['d'])." ":'').
(!empty($k['i'])?"".implode(' ',$k['i'])." ":'');
else $ret .= $k . ' ';
}
return $ret;
}
//a cosa serve?
function applyBreaks($values,$fields)
{
$fieldsArray = explode(',',$fields);
foreach ($fieldsArray as $field)
{
if (array_key_exists($field,$values))
{
$values[$field] = nl2br($values[$field]);
}
}
return $values;
}
function getLinkToUser($user)
{
if (strstr($user,'__'))
{
return str_replace('__',null,$user);
}
else
{
return "$user";
}
}
//decode the text of the wiki
function decodeWikiText($string)
{
$string = preg_replace('/(\[hr\])/', '
',$string);
$string = preg_replace_callback('/(\[a\])(.*?)(\[\/a\])/', 'linkTo',$string);
$string = preg_replace_callback('/(\[a\])(.*?)\|(.*?)(\[\/a\])/', 'linkToWithText',$string);
$string = preg_replace_callback('/(\[notebook\])([0-9]*?)(\[\/notebook\])/s', 'linkToNotebook',$string);
$string = preg_replace_callback('/(\[wifi\])([0-9]*?)(\[\/wifi\])/s', 'linkToWifi',$string);
$string = preg_replace_callback('/(\[videocard\])([0-9]*?)(\[\/videocard\])/s', 'linkToVideocard',$string);
$string = preg_replace('/(\[b\])(.*?)(\[\/b\])/s', '${2}',$string);
$string = preg_replace('/(\[u\])(.*?)(\[\/u\])/s', '${2}',$string);
$string = preg_replace('/(\[i\])(.*?)(\[\/i\])/s', '${2}',$string);
$string = preg_replace('/(\[del\])(.*?)(\[\/del\])/s', '${2}',$string);
$string = preg_replace('/(\[\*\])(.*?)(\[\/\*\])/s', '${2}',$string);
$string = preg_replace('/(\[list\])(.*?)(\[\/list\])/s', '',$string);
$string = preg_replace('/(\[enum\])(.*?)(\[\/enum\])/s', '${2}
',$string);
$string = preg_replace('/(\[code\])(.*?)(\[\/code\])/s', '${2}
',$string);
$string = preg_replace('/(\[p\])(.*?)(\[\/p\])/s', '${2}
',$string);
$string = preg_replace('/(\[h1\])(.*?)(\[\/h1\])/s', '${2}
',$string);
$string = preg_replace('/(\[h2\])(.*?)(\[\/h2\])/s', '${2}
',$string);
$string = preg_replace('/(\[h3\])(.*?)(\[\/h3\])/s', '${2}
',$string);
return $string;
}
function checkUrl($url)
{
// $match = '/^http\:\/\/(www\.)?[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)?\.(com|net|it|info|org|eu|uk)((\/[a-zA-Z0-9\_\-\+]+)+[\/]?)?(\?([a-zA-Z0-9\_\-\+\s]+\=[a-zA-Z0-9\_\-\s\+\&]+)+)?(#[a-zA-Z0-9\_\-\+\s]+)?([\s]*)?$/';
$match = '/^http\:\/\/(www\.)?[a-zA-Z0-9\-\_]+(\.[a-zA-Z0-9\-\_]+)?\.(com|net|it|info|org|eu|uk|ca)((\/[a-zA-Z0-9\_\-\+]+)*(\/([a-zA-Z0-9\_\-\.\+]+\.(php|html|htm|asp|aspx|jsp|cgi))?)?)?(\?([a-zA-Z0-9\_\-\+\s]+\=[a-zA-Z0-9\_\-\s\+\&]+)+)?(#[a-zA-Z0-9\_\-\+\s]+)?([\s]*)?$/';
if (preg_match($match,$url))
{
return true;
}
else
{
return false;
}
}
function vitalizeUrl($string)
{
if (checkUrl($string))
{
return "".$string."";
}
return $string;
}
function linkTo($match)
{
if (checkUrl($match[2]))
{
return "".$match[2]."";
}
else
{
return $match[0];
}
}
function linkToWithText($match)
{
if (checkUrl($match[2]))
{
return "".$match[3]."";
}
else
{
return $match[0];
}
}
//create the link to the wiki page of the notebook
function linkToNotebook($match)
{
$hardware = new HardwareModel();
$clean['id_hard'] = (int)$match[2];
$name = encodeUrl($hardware->getTheModelName($clean['id_hard']));
$href = "HTTP://".DOMAIN_NAME."/notebooks/view/".Lang::$current."/".$clean['id_hard']."/$name";
return (strcmp($name,'') !== 0) ? "".$name."" : $match[0];
}
//create the link to the wiki page of the wifi
function linkToWifi($match)
{
$hardware = new HardwareModel();
$clean['id_hard'] = (int)$match[2];
$name = encodeUrl($hardware->getTheModelName($clean['id_hard']));
$href = "HTTP://".DOMAIN_NAME."/wifi/view/".Lang::$current."/".$clean['id_hard']."/$name";
return (strcmp($name,'') !== 0) ? "".$name."" : $match[0];
}
//create the link to the wiki page of the videocard
function linkToVideocard($match)
{
$hardware = new HardwareModel();
$clean['id_hard'] = (int)$match[2];
$name = encodeUrl($hardware->getTheModelName($clean['id_hard']));
$href = "HTTP://".DOMAIN_NAME."/videocards/view/".Lang::$current."/".$clean['id_hard']."/$name";
return (strcmp($name,'') !== 0) ? "".$name."" : $match[0];
}
function getUserName($id_user = 0)
{
$clean['id_user'] = (int)$id_user;
$u = new UsersModel();
return $u->getUser($clean['id_user']);
}
function getMotivation($row,$controller)
{
if (strcmp($row['deletion']['object'],'duplication') === 0)
{
$clean['id_hard'] = (int)$row['deletion']['id_duplicate'];
$hardware = new HardwareModel();
$name = encodeUrl($hardware->getTheModelName($clean['id_hard']));
return "duplication of the model having id ".$clean['id_hard']."";
}
else
{
return "".$row['deletion']['object']."";
}
}
//get the text in the right language
function gtext($string)
{
if (isset(Lang::$i18n[Lang::$current][$string]))
{
return Lang::$i18n[Lang::$current][$string];
}
return $string;
}
//rewrite the vendor name
function betterVendor($string)
{
$names = array(
"AT-T" => "AT&T",
"Franklin-Wireless-Corporation" => "Franklin Wireless Corporation",
"Novatel-Wireless" => "Novatel Wireless",
"Sierra-Wireless" => "Sierra Wireless",
"ALi-Corporation" => "ALi Corporation",
"Advanced-Micro-Devices" => "Advanced Micro Devices (AMD)",
"Analog-Devices" => "Analog Devices",
"ATI-Technologies-Inc" => "ATI Technologies Inc",
"Aureal-Semiconductor" => "Aureal Semiconductor",
"Avance-Logic-Inc" => "Avance Logic Inc (ALI)",
"Aztech-System-Ltd" => "Aztech System Ltd",
"Brooktree-Corporation" => "Brooktree Corporation",
"C-Media-Electronics-Inc" => "C-Media Electronics Inc",
"Cirrus-Logic" => "Cirrus Logic",
"Creative-Labs" => "Creative Labs",
"Ensoniq" => "Ensoniq",
"ESS-Technology" => "ESS Technology",
"ForteMedia-Inc" => "ForteMedia Inc",
"Intel-Corporation" => "Intel Corporation",
"Motorola" => "Motorola",
"National-Semiconductor-Corporation" => "National Semiconductor Corporation",
"Neomagic-Corp" => "Neomagic Corp",
"nVidia-Corporation" => "nVidia Corporation",
"RME" => "RME",
"S3 Inc" => "S3-Inc",
"Silicon-Integrated-Systems" => "Silicon Integrated Systems (SiS)",
"Trident-Microsystems" => "Trident Microsystems",
"VIA-Technologies-Inc" => "VIA Technologies Inc",
"Xilinx-Corporation" => "Xilinx Corporation",
"Yamaha-Corporation" => "Yamaha Corporation",
);
return (array_key_exists($string,$names)) ? $names[$string] : $string;
}
//get the hardware info from the talk id
function getHardwareInfoFromTalkId($id = 0)
{
$clean['id'] = (int)$id;
$talk = new TalkModel();
$res = $talk->select('hardware.type,hardware.id_hard')->from('hardware inner join talk')->using('id_hard')->where(array('id_talk'=>$clean['id']))->send();
return $res[0]['hardware'];
}
//get the issue info from the message id
function getIssueNumberFromMessageId($id = 0)
{
$clean['id'] = (int)$id;
$mess = new MessagesModel();
$res = $mess->select('issues.id_issue')->from('issues inner join messages')->using('id_issue')->where(array('id_mes'=>$clean['id']))->toList('issues.id_issue')->send();
return $res[0];
}
//return the URL to the moderated object page
function goToModeratedItem( $row = array() )
{
$url = null;
switch ($row['type'])
{
case 'message':
$url = 'issues/view/'.Lang::$current.'/'.getIssueNumberFromMessageId($row['id']).'#message-'.$row['id'];
break;
case 'talk':
$hardInfo = getHardwareInfoFromTalkId($row['id']);
$controller = MyStrings::$reverse[$hardInfo['type']];
$url = $controller.'/talk/'.Lang::$current.'/'.$hardInfo['id_hard'].'#talk-'.$row['id'];
break;
case 'user':
$url = 'meet/user/'.Lang::$current.'/'.getUserName($row['id']);
break;
case 'issue':
$url = 'issues/view/'.Lang::$current.'/'.$row['id'];
break;
}
return 'http://'.DOMAIN_NAME.'/'.$url;
}
function getUrlsFromIdHard($id_hard)
{
$clean['id_hard'] = (int)$id_hard;
$urlView = "http://".DOMAIN_NAME;
$urlTalk = "http://".DOMAIN_NAME;
$hard = new HardwareModel();
$res = $hard->select('type,model')->where(array('id_hard'=>$clean['id_hard']))->send();
if (count($res) > 0)
{
$urlView = "http://".DOMAIN_NAME."/".MyStrings::$reverse[$res[0]['hardware']['type']]."/view/".Lang::$current."/".$clean['id_hard']."/".encodeUrl($res[0]['hardware']['model']);
$urlTalk = "http://".DOMAIN_NAME."/".MyStrings::$reverse[$res[0]['hardware']['type']]."/talk/".Lang::$current."/".$clean['id_hard'];
}
return array('urlView'=>$urlView,'urlTalk'=>$urlTalk);
}