. 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('/','-',$url); $url = str_replace('@','-at-',$url); $url = str_replace('?','-',$url); // $temp = null; // for ($i=0;$i $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('/(\[\[)(.*?)\|(.*?)(\]\])/', 'linkToInternalPageWithText' ,$string); $string = preg_replace_callback('/(\[\[)(.*?)(\]\])/', 'linkToInternalPage' ,$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); $string = preg_replace('/(\[lang\])(.*?)(\[\/lang\])/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 linkToInternalPage($match) { return "".$match[2].""; } function linkToInternalPageWithText($match) { return "".$match[3].""; } 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", "Vimicro-Corp" => "Vimicro Corp", "LOREX-Technology-Inc" => "LOREX Technology Inc", "ADOMAX-technology" => "ADOMAX technology", "Omega-Technology-Corp" => "Omega Technology Corp", "Shenzhen-Vigor-Electronic" => "Shenzhen Vigor Electronic", "Astak-Inc" => "Astak Inc", "iMicro-Electronics" => "iMicro Electronics", "Active-Pixel" => "Active Pixel", "Microdia-Ltd" => "Microdia Ltd", "Silicon-Integrated-Systems-Corp" => "Silicon Integrated Systems 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 wiki page info from the talk id function getWikiPageInfoFromTalkId($id = 0) { $clean['id'] = (int)$id; $talk = new WikitalkModel(); $res = $talk->select('wiki.id_wiki')->from('wiki inner join wiki_talk')->using('id_wiki')->where(array('id_talk'=>$clean['id']))->send(); return $res[0]['wiki']['id_wiki']; } //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 = Hardware::$typeToController[$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; case 'wiki_talk': $url = 'wiki/talk/'.Lang::$current.'/'.getWikiPageInfoFromTalkId($row['id']).'#wiki-talk-'.$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; $deviceName = null; $hard = new HardwareModel(); $res = $hard->select('type,model')->where(array('id_hard'=>$clean['id_hard']))->send(); if (count($res) > 0) { $urlView = "http://".DOMAIN_NAME."/".Hardware::$typeToController[$res[0]['hardware']['type']]."/view/".Lang::$current."/".$clean['id_hard']."/".encodeUrl($res[0]['hardware']['model']); $urlTalk = "http://".DOMAIN_NAME."/".Hardware::$typeToController[$res[0]['hardware']['type']]."/talk/".Lang::$current."/".$clean['id_hard']; $deviceName = $res[0]['hardware']['model']; } return array('urlView'=>$urlView,'urlTalk'=>$urlTalk,'modelName'=>$deviceName); } function getDiffArray($associativeArray, $oldArray, $newArray) { $diffArray = array(); foreach ($associativeArray as $field => $label) { if (array_key_exists($field,$oldArray) and array_key_exists($field,$newArray)) { $diffArray[$label] = htmlDiff($oldArray[$field], $newArray[$field]); } } return $diffArray; }