.
if (!defined('EG')) die('Direct access not allowed!');
function encodeUrl($url)
{
$url = str_replace(' ','-',$url);
$url = str_replace('[','-',$url);
$url = str_replace(']','-',$url);
$url = str_replace('(','-',$url);
$url = str_replace(')','-',$url);
$url = str_replace('/','-',$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",
"Aiptek-Inc" => "Aiptek Inc",
"Arkmicro-Technologies-Inc" => "Arkmicro Technologies Inc",
"Askey-Computer-Corporation" => "Askey Computer Corporation",
"Chicony-Electronics-CO" => "Chicony Electronics CO",
"Conexant-Systems-Inc" => "Conexant Systems, Inc",
"Creative-Technology-Ltd" => "Creative Technology, Ltd",
"eMPIA-Technology-Inc" => "eMPIA Technology, Inc",
"Genesys-Logic-Inc" => "Genesys Logic, Inc",
"Hama-Trading-Co" => "Hama Trading Co",
"Hewlett-Packard" => "Hewlett Packard",
"IMC-Networks" => "IMC Networks",
"iPassion-Technology-Inc" => "iPassion Technology Inc",
"KYE-Systems-Corp" => "KYE Systems Corp",
"LG-Electronics" => "LG Electronics",
"OmniVision-Technologies-Inc" => "OmniVision Technologies, Inc",
"PixArt-Imaging-Inc" => "PixArt Imaging Inc",
"Primax-Electronics-Ltd" => "Primax Electronics Ltd",
"Quanta-Computer-Inc" => "Quanta Computer Inc.",
"Ricoh-Company-Ltd" => "Ricoh Company, Ltd",
"Sony-Corporation" => "Sony Corporation",
"Syntek-Semiconductor-Ltd" => "Syntek Semiconductor Ltd",
"Sunplus-Technology-Co" => "Sunplus Technology Co",
"Tekom-Technologies-Inc" => "Tekom Technologies, Inc",
"Trust-International" => "Trust International",
"ViewQuest-Technologies-Inc" => "ViewQuest Technologies, Inc",
"Vista-Imaging-Inc" => "Vista Imaging, Inc",
"Z-Star-Microelectronics-Corporation" => "Z-Star Microelectronics Corporation",
"Micro-Star-International" => "Micro Star International",
"VIA-Technologies-Inc" => "VIA Technologies, Inc",
"ALFA-NETWORK-Inc" => "ALFA NETWORK Inc",
"Amigo-Technology-Inc" => "Amigo Technology Inc",
"amit-Inc" => "amit Inc",
"Atlantis_S-p-A" => "Atlantis S.p.A.",
"Buffalo-Technology-Ltd" => "Buffalo Technology, Ltd",
"Compex-Systems-Pte-Ltd" => "Compex Systems Pte Ltd",
"Encore-Electronics-Inc" => "Encore Electronics Inc",
"JAHT-Technologies-Corp" => "JAHT Technologies Corp",
"Micronet-Communications-Inc" => "Micronet Communications, Inc",
"Minitar-Corporation" => "Minitar Corporation",
"OvisLink-Technologies-Corp" => "OvisLink Technologies Corp",
"PRO-NETS_Technology_Corp" => "PRO-NETS Technology Corp",
"Sparklan-comunications-Inc" => "Sparklan comunications, Inc",
"Unex-Technology-Corp" => "Unex Technology Corp",
);
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);
}