| <?php |
| |
| |
| $g_sSiteDomain = 'www.nicolas.legland.fr'; |
| $g_sSiteZone = 'legland.fr'; |
| |
| |
| date_default_timezone_set('UTC'); |
| $g_fRequestTime = microtime(true); |
| $g_iRequestTime = (int)($g_fRequestTime); |
| $g_sSiteDirectory = dirname(__FILE__); |
| |
| |
| $g_bAgentApple = false; |
| $g_bAgentDeveloper = false; |
| $g_bAgentMobile = false; |
| $g_bAgentText = false; |
| $g_bAgentValidator = false; |
| $g_bRequestEncryption = false; |
| $g_sRequestPath = '/'; |
| $g_sRequestProtocol = 'http://'; |
| $g_bRequestRedirection = false; |
| if (is_array($_SERVER)) |
| { |
| |
| if (true |
| && array_key_exists('HTTP_USER_AGENT', $_SERVER) |
| && is_string($_SERVER['HTTP_USER_AGENT']) |
| ) |
| { |
| |
| $g_bAgentApple = |
| (false |
| || is_integer(strpos($_SERVER['HTTP_USER_AGENT'], 'iPad' )) |
| || is_integer(strpos($_SERVER['HTTP_USER_AGENT'], 'iPod' )) |
| || is_integer(strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone' )) |
| ); |
| |
| |
| $g_bAgentCrawler = |
| (false |
| || ($_SERVER['HTTP_USER_AGENT'] === 'Site Analyzer' ) |
| || ($_SERVER['HTTP_USER_AGENT'] === 'SiteAnalyzerBot' ) |
| ); |
| |
| |
| if (true |
| && array_key_exists('REMOTE_ADDR', $_SERVER) |
| && is_string($_SERVER['REMOTE_ADDR']) |
| ) |
| { |
| |
| $g_bAgentDeveloper = |
| ((true |
| ) && (false |
| || ('93.19.181.11' === $_SERVER['REMOTE_ADDR']) |
| || ('185.84.18.22' === $_SERVER['REMOTE_ADDR']) |
| ) && (false |
| || (substr($_SERVER['HTTP_USER_AGENT'], 0, 41) === 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)') |
| || is_integer(strpos($_SERVER['HTTP_USER_AGENT'], 'iPad' )) |
| || is_integer(strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone' )) |
| ) |
| ); |
| } |
| |
| |
| $g_bAgentLegacy = |
| (true |
| && is_integer(strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla/4.' )) |
| && !is_integer(strpos($_SERVER['HTTP_USER_AGENT'], '(compatible;' )) |
| ); |
| |
| |
| $g_bAgentMobile = |
| (false |
| || is_integer(strpos($_SERVER['HTTP_USER_AGENT'], 'iPod' )) |
| || is_integer(strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone' )) |
| ); |
| |
| |
| $g_bAgentText = |
| (false |
| || ($_SERVER['HTTP_USER_AGENT'] === 'Links' ) |
| || (substr($_SERVER['HTTP_USER_AGENT'], 0, 9) === 'edbrowse/' ) |
| || (substr($_SERVER['HTTP_USER_AGENT'], 0, 5) === 'Lynx/' ) |
| || (substr($_SERVER['HTTP_USER_AGENT'], 0, 7) === 'ELinks/' ) |
| || (substr($_SERVER['HTTP_USER_AGENT'], 0, 7) === 'Links (' ) |
| || (substr($_SERVER['HTTP_USER_AGENT'], 0, 7) === 'retawq/' ) |
| || (substr($_SERVER['HTTP_USER_AGENT'], 0, 12) === 'W3CLineMode/' ) |
| || (substr($_SERVER['HTTP_USER_AGENT'], 0, 4) === 'w3m/' ) |
| || is_integer(strpos($_SERVER['HTTP_USER_AGENT'], '(text)' )) |
| || is_integer(strpos($_SERVER['HTTP_USER_AGENT'], '(textmode' )) |
| ); |
| |
| |
| $g_bAgentValidator = |
| (false |
| || is_integer(strpos($_SERVER['HTTP_USER_AGENT'], 'validator.w3.org' )) |
| ); |
| } |
| |
| |
| if (true |
| && array_key_exists('REQUEST_URI', $_SERVER) |
| && is_string($_SERVER['REQUEST_URI']) |
| && ('' !== $_SERVER['REQUEST_URI']) |
| ) |
| { |
| |
| $g_sRequestPath = $_SERVER['REQUEST_URI']; |
| } |
| |
| |
| if ((false |
| ) || (true |
| && array_key_exists('REQUEST_SCHEME', $_SERVER) |
| && ('https' === $_SERVER['REQUEST_SCHEME']) |
| ) || (true |
| && array_key_exists('HTTPS', $_SERVER) |
| && ('off' !== $_SERVER['HTTPS']) |
| ) |
| ) |
| { |
| |
| $g_bRequestEncryption = true; |
| $g_sRequestProtocol = 'https://'; |
| } |
| |
| |
| if (true |
| && array_key_exists('REDIRECT_URL', $_SERVER) |
| && is_string($_SERVER['REDIRECT_URL']) |
| && ('' !== $_SERVER['REDIRECT_URL']) |
| ) |
| { |
| |
| $g_sRequestPath = $_SERVER['REDIRECT_URL']; |
| $g_bRequestRedirection = true; |
| } |
| |
| |
| if (true |
| && array_key_exists('REQUEST_TIME', $_SERVER) |
| && is_integer($_SERVER['REQUEST_TIME']) |
| ) |
| { |
| |
| $g_iRequestTime = $_SERVER['REQUEST_TIME']; |
| } |
| |
| |
| if (true |
| && array_key_exists('REQUEST_TIME_FLOAT', $_SERVER) |
| && is_float($_SERVER['REQUEST_TIME_FLOAT']) |
| ) |
| { |
| |
| $g_fRequestTime = $_SERVER['REQUEST_TIME_FLOAT']; |
| } |
| } |
| $g_bRequestSource = ('/index.php' === $g_sRequestPath); |
| $g_sResponsePath = $g_sSiteDirectory.str_replace('/', DIRECTORY_SEPARATOR, $g_sRequestPath); |
| $g_sSiteAbsolute = $g_sRequestProtocol.$g_sSiteDomain.'/'; |
| $g_sSiteRelative = ''; |
| |
| |
| function gCache($a_sUrl, $a_sFile, $a_iDuration) |
| { |
| |
| if (false |
| || !is_file($a_sFile) |
| || (filemtime($a_sFile) + $a_iDuration < time()) |
| ) |
| { |
| |
| if (in_array('https', stream_get_wrappers())) |
| { |
| |
| $l_sUrl = 'https://'.$a_sUrl; |
| } |
| else |
| { |
| |
| $l_sUrl = 'http://'.$a_sUrl; |
| } |
| |
| |
| $l_sRoot = ini_get('curl.cainfo'); |
| if (!(true |
| && is_string($l_sRoot) |
| && is_file($l_sRoot) |
| && is_readable($l_sRoot) |
| )) |
| { |
| $l_sRoot = '/usr/local/share/certs/ca-root-nss.crt'; |
| } |
| |
| |
| $l_sContent = file_get_contents($l_sUrl, false, stream_context_create(array |
| ( |
| 'ssl' => array |
| ( |
| 'cafile' => $l_sRoot, |
| ), |
| ))); |
| if (true |
| && is_string($l_sContent) |
| && ('' !== $l_sContent) |
| ) |
| { |
| file_put_contents($a_sFile, $l_sContent); |
| } |
| } |
| } |
| |
| |
| function gBody($a_bIndex = true) |
| { |
| |
| global $g_bAgentValidator; |
| |
| |
| echo '<body'; |
| if (true !== $a_bIndex) |
| { |
| |
| echo ' class="robots-nocontent"'; |
| } |
| if (true !== $g_bAgentValidator) |
| { |
| |
| echo ' hspace="0"'; |
| } |
| echo ' itemscope="itemscope" itemtype="http://schema.org/WebPage"'; |
| if (true !== $g_bAgentValidator) |
| { |
| |
| echo ' leftmargin="0" marginheight="0" marginwidth="0" topmargin="0" vspace="0"'; |
| } |
| if (true === $a_bIndex) |
| { |
| echo ' |
| >'; |
| } |
| else |
| { |
| echo '><!--googleoff: all--><!--noindex--><!-- |
| -->'; |
| } |
| } |
| |
| |
| function gHead($a_bIndex = true, $a_sDescription = 'Research engineer at Nintendo European Research and Development', $a_sKeyword = 'nicolas,legland', $a_sTitle = 'Nicolas Le Gland', $a_sTitleShort = 'Nicolas') |
| { |
| |
| global $g_bAgentCrawler, $g_bAgentDeveloper, $g_bAgentMobile, $g_bAgentValidator, $g_sSiteAbsolute, $g_sSiteDomain, $g_sSiteRelative; |
| |
| |
| $l_sDescription = htmlentities(html_entity_decode($a_sDescription)); |
| $l_sKeyword = htmlentities(html_entity_decode($a_sKeyword)); |
| $l_sTitle = htmlentities(html_entity_decode($a_sTitle)); |
| $l_sTitleShort = htmlentities(html_entity_decode($a_sTitleShort)); |
| |
| |
| if (true !== $g_bAgentCrawler) |
| { |
| |
| $l_sEmpty = ' |
| />'; |
| $l_sEnd = ' |
| >'; |
| } |
| else |
| { |
| |
| $l_sEmpty = ' /> |
| '; |
| $l_sEnd = '> |
| '; |
| } |
| |
| |
| echo |
| '<!DOCTYPE html |
| ><html dir="ltr" lang="en"'; |
| |
| |
| if ((true !== $g_bAgentDeveloper) && (true !== $g_bAgentValidator)) |
| { |
| echo ' manifest="', $g_sSiteRelative, 'index.appcache"'; |
| } |
| |
| |
| if (true !== $g_bAgentValidator) |
| { |
| echo ' xmlns:og="http://ogp.me/ns#"'; |
| } |
| echo |
| ' |
| ><head', $l_sEnd, |
| '<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"', $l_sEmpty, |
| '<title>', $l_sTitle, '</title', $l_sEnd; |
| |
| |
| if (true === $a_bIndex) |
| { |
| |
| echo |
| '<meta content="Nicolas Le Gland" name="author"', $l_sEmpty, |
| '<meta content="', $l_sKeyword, '" name="keywords"', $l_sEmpty, |
| '<meta content="', $l_sDescription, '" name="description"', $l_sEmpty; |
| |
| |
| echo |
| '<meta content="', $l_sDescription, '" property="og:description"', $l_sEmpty, |
| '<meta content="', $l_sTitle, '" property="og:title"', $l_sEmpty, |
| '<meta content="website" property="og:type"', $l_sEmpty, |
| '<meta content="', $g_sSiteAbsolute, '" property="og:url"', $l_sEmpty, |
| '<meta content="', $g_sSiteAbsolute, 'photo.jpg" property="og:image"', $l_sEmpty, |
| '<meta content="http://', $g_sSiteDomain, '/photo.jpg" property="og:image:url"', $l_sEmpty, |
| '<meta content="https://', $g_sSiteDomain, '/photo.jpg" property="og:image:secure_url"', $l_sEmpty, |
| '<meta content="image/jpeg" property="og:image:type"', $l_sEmpty, |
| '<meta content="256" property="og:image:width"', $l_sEmpty, |
| '<meta content="256" property="og:image:height"', $l_sEmpty; |
| |
| |
| echo |
| '<meta content="summary" name="twitter:card"', $l_sEmpty, |
| '<meta content="nicolaslegland" name="twitter:site"', $l_sEmpty, |
| '<meta content="', $l_sTitle, '" name="twitter:title"', $l_sEmpty, |
| '<meta content="', $l_sDescription, '" name="twitter:description"', $l_sEmpty, |
| '<meta content="', $g_sSiteAbsolute, 'photo.jpg" name="twitter:image:src"', $l_sEmpty, |
| '<meta content="', $g_sSiteDomain, '" name="twitter:domain"', $l_sEmpty; |
| } |
| else |
| { |
| |
| echo |
| '<meta content="noarchive, noindex, noodp, noydir" name="googlebot"', $l_sEmpty; |
| if (true !== $g_bAgentValidator) |
| { |
| echo |
| '<meta content="noarchive, noindex, noodp, noydir" name="msnbot"', $l_sEmpty; |
| } |
| echo |
| '<meta content="noarchive, noindex, noodp, noydir" name="robots"', $l_sEmpty, |
| '<meta content="noarchive, noindex, noodp, noydir" name="slurp"', $l_sEmpty, |
| '<meta content="noarchive, noindex, noodp, noydir" name="teoma"', $l_sEmpty; |
| } |
| |
| |
| echo |
| '<meta content="yes" name="apple-mobile-web-app-capable"', $l_sEmpty, |
| '<meta content="black" name="apple-mobile-web-app-status-bar-style"', $l_sEmpty, |
| '<meta content="'; |
| if (true !== $g_bAgentMobile) |
| { |
| echo $l_sTitle; |
| } |
| else |
| { |
| echo $l_sTitleShort; |
| } |
| echo |
| '" name="apple-mobile-web-app-title"', $l_sEmpty, |
| '<meta content="telephone=no" name="format-detection"', $l_sEmpty, |
| '<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" name="viewport"', $l_sEmpty; |
| |
| |
| echo |
| '<meta content="', $l_sTitleShort, '" name="application-name"', $l_sEmpty; |
| |
| |
| echo |
| '<link href="', $g_sSiteAbsolute, '" rel="canonical"', $l_sEmpty; |
| |
| |
| echo |
| '<link href="favicon-192x192.png" rel="icon" sizes="192x192" type="image/png"', $l_sEmpty, |
| '<link href="favicon-160x160.png" rel="icon" sizes="160x160" type="image/png"', $l_sEmpty, |
| '<link href="favicon-96x96.png" rel="icon" sizes="96x96" type="image/png"', $l_sEmpty, |
| '<link href="favicon-32x32.png" rel="icon" sizes="32x32" type="image/png"', $l_sEmpty, |
| '<link href="favicon-16x16.png" rel="icon" sizes="16x16" type="image/png"', $l_sEmpty; |
| |
| |
| echo |
| '<link href="apple-touch-icon-180x180.png" rel="apple-touch-icon" sizes="180x180"', $l_sEmpty, |
| '<link href="apple-touch-icon-152x152.png" rel="apple-touch-icon" sizes="152x152"', $l_sEmpty, |
| '<link href="apple-touch-icon-144x144.png" rel="apple-touch-icon" sizes="144x144"', $l_sEmpty, |
| '<link href="apple-touch-icon-120x120.png" rel="apple-touch-icon" sizes="120x120"', $l_sEmpty, |
| '<link href="apple-touch-icon-114x114.png" rel="apple-touch-icon" sizes="114x114"', $l_sEmpty, |
| '<link href="apple-touch-icon-76x76.png" rel="apple-touch-icon" sizes="76x76"', $l_sEmpty, |
| '<link href="apple-touch-icon-72x72.png" rel="apple-touch-icon" sizes="72x72"', $l_sEmpty, |
| '<link href="apple-touch-icon-60x60.png" rel="apple-touch-icon" sizes="60x60"', $l_sEmpty, |
| '<link href="apple-touch-icon-57x57.png" rel="apple-touch-icon" sizes="57x57"', $l_sEmpty; |
| |
| |
| echo |
| '<meta content="#ffffff" name="msapplication-TileColor"', $l_sEmpty, |
| '<meta content="mstile-144x144.png" name="msapplication-TileImage"', $l_sEmpty; |
| } |
| |
| |
| function gHtml($a_sFile) |
| { |
| |
| global $g_sSiteDirectory; |
| |
| |
| $l_sContent = str_replace(array("\r\n", "\r"), "\n", file_get_contents($a_sFile)); |
| |
| |
| if (is_integer(strpos($l_sContent, '-----BEGIN PGP ARMORED FILE-----'."\n"))) |
| { |
| |
| $l_sDescription = 'OpenPGP ASCII armor, printable encoding scheme for binary data stream.'; |
| $l_sKeyword = 'armor,ascii,gnupg,gpg,openpgp,pgp'; |
| $l_sTitle = 'ASCII armored file'; |
| $l_sTitleShort = 'ASCII armor'; |
| } |
| else if (is_integer(strpos($l_sContent, '-----BEGIN PGP PUBLIC KEY BLOCK-----'."\n"))) |
| { |
| |
| $l_sDescription = 'OpenPGP public key in ASCII armor, printable encoding scheme for binary data stream.'; |
| $l_sKeyword = 'block,key,gnupg,gpg,openpgp,pgp,public'; |
| $l_sTitle = 'Public key'; |
| $l_sTitleShort = 'Public key'; |
| |
| |
| $l_iBegin = strpos($l_sContent, "\n".'Comment: '); |
| if (false !== $l_iBegin) |
| { |
| |
| $l_iBegin += 10; |
| $l_iEnd = strpos($l_sContent, "\n", $l_iBegin); |
| if (false !== $l_iEnd) |
| { |
| |
| $l_sDescription = trim(substr($l_sContent, $l_iBegin, $l_iEnd - $l_iBegin)); |
| if (1 === preg_match('/ [0-9 ]+[DRg]\/([0-9A-F]{8})(?: [0-9]{4}-[0-1][0-9]-[0-3][0-9]) /', ' '.$l_sDescription.' ', $l_a_sMatch)) |
| { |
| |
| $l_sTitle = trim($l_a_sMatch[0]); |
| $l_sTitleShort = '0x'.trim($l_a_sMatch[1]); |
| } |
| else |
| { |
| |
| $l_sTitle = $l_sDescription; |
| list($l_sTitleShort) = explode(' ', trim($l_sDescription)); |
| } |
| } |
| } |
| } |
| else if (is_integer(strpos($l_sContent, '-----BEGIN PGP SIGNED MESSAGE-----'."\n"))) |
| { |
| |
| $l_sDescription = 'OpenPGP signed message in ASCII armor, printable encoding scheme for binary data stream.'; |
| $l_sKeyword = 'gnupg,gpg,message,openpgp,pgp,signed'; |
| $l_sTitle = 'Signed message'; |
| $l_sTitleShort = 'Message'; |
| } |
| else |
| { |
| |
| $l_sDescription = 'Plain text file.'; |
| $l_sKeyword = 'file,plain,text'; |
| $l_sTitle = 'Plain text file'; |
| $l_sTitleShort = 'Text file'; |
| } |
| |
| |
| gHead(true, $l_sDescription, $l_sKeyword, $l_sTitle, $l_sTitleShort); |
| echo |
| '<style type="text/css"><!-- |
| |
| '; |
| gStyle('text'); |
| echo |
| ' //--></style |
| ></head |
| >'; |
| |
| |
| gBody(); |
| echo |
| '<textarea cols="77" onkeydown="return false" oncut="return false" rows="', substr_count($l_sContent, "\n") + 1, '" |
| >', str_replace("\n", ' |
| ', $l_sContent), '</textarea |
| ></body |
| ></html>'; |
| } |
| |
| |
| function gLink($a_sIcon, $a_iPosition, $a_sText, $a_sHtml, $a_sUrl, $a_sSeparator) |
| { |
| |
| global $g_bAgentLegacy, $g_bAgentValidator, $g_sSiteRelative; |
| |
| |
| $r_sContent = |
| ' <span |
| class="icon"'; |
| if (true === $g_bAgentLegacy) |
| { |
| $r_sContent .= '><nobr'; |
| } |
| $r_sContent .= ' |
| ><a href="'.$a_sUrl.'" itemprop="sameAs" rel="external me" title="'.$a_sText.'" |
| ><img'; |
| if (true !== $g_bAgentValidator) |
| { |
| $r_sContent .= ' align="middle"'; |
| } |
| $r_sContent .= ' alt="'.$a_sText.'"'; |
| if (true !== $g_bAgentValidator) |
| { |
| $r_sContent .= ' border="0"'; |
| } |
| $r_sContent .= ' height="16" src="'.$g_sSiteRelative; |
| if (true !== $g_bAgentLegacy) |
| { |
| $r_sContent .= 'icon.gif" style="background-position:0 -'.$a_iPosition.'px'; |
| } |
| else |
| { |
| $r_sContent .= $a_sIcon; |
| } |
| $r_sContent .= '" width="16"'; |
| if (true !== $g_bAgentLegacy) |
| { |
| $r_sContent .= ' |
| />'; |
| } |
| else |
| { |
| $r_sContent .= ' /> |
| '; |
| } |
| $r_sContent .= |
| $a_sHtml.'</a |
| >'.$a_sSeparator; |
| if (true !== $g_bAgentLegacy) |
| { |
| $r_sContent .= |
| '</span |
| >'; |
| } |
| else |
| { |
| $r_sContent .= |
| '</nobr |
| ></span>'; |
| } |
| |
| return $r_sContent; |
| } |
| |
| |
| function gMime($a_sFile) |
| { |
| switch (substr($a_sFile, -4)) |
| { |
| case '.asc': |
| case '.txt': |
| { |
| return 'text/plain;charset=utf-8'; |
| } |
| case '.pgp': |
| case '.gpg'; |
| { |
| |
| $l_iTag = ord(file_get_contents($a_sFile, false, null, 0, 1)); |
| if (0x40 === ($l_iTag & 0x40)) |
| { |
| |
| $l_iType = $l_iTag & 0x3F; |
| } |
| else |
| { |
| |
| $l_iType = ($l_iTag & 0x3C) >> 2; |
| } |
| |
| |
| switch ($l_iType) |
| { |
| case 1: |
| case 3: |
| { |
| return 'application/pgp-encrypted'; |
| } |
| case 5: |
| case 6: |
| { |
| return 'application/pgp-keys'; |
| } |
| case 2: |
| case 4: |
| { |
| return 'application/pgp-signature'; |
| } |
| } |
| break; |
| } |
| case '.url': |
| { |
| return 'text/x-url'; |
| } |
| } |
| return 'application/octet-stream'; |
| } |
| |
| |
| function gRedirect($a_sUrl = null) |
| { |
| |
| if (null === $a_sUrl) |
| { |
| |
| global $g_sSiteAbsolute; |
| $a_sUrl = $g_sSiteAbsolute; |
| } |
| |
| |
| header('Cache-Control: max-age=604800, public'); |
| header('Content-Language: en'); |
| header('Content-Type: text/html;charset=utf-8'); |
| header('Location: '.$a_sUrl); |
| |
| |
| gHead(); |
| echo |
| '<script nonce="inline/head" type="text/javascript"><!-- |
| //<![CDATA[ |
| |
| top.location.href = \'', $a_sUrl, '\'; |
| |
| //]]> |
| //--></script |
| ></head |
| >'; |
| |
| |
| gBody(); |
| echo '<h1 |
| >Nicolas Le Gland</h1><a |
| href="', $a_sUrl, '">', $a_sUrl, '</a |
| ></body |
| ></html>'; |
| } |
| |
| |
| function gSource($a_sFile) |
| { |
| |
| echo |
| ' <tbody class="code"> |
| '; |
| |
| $l_h_sTextMap = array |
| ( |
| "\r\n" => "\n", |
| "\r" => "\n", |
| "\n'\t" => "\n' ", |
| ); |
| |
| |
| $l_h_sHtmlMap = array |
| ( |
| ' ' => ' ', |
| ); |
| foreach (array |
| ( |
| 'b70' => 'comment', |
| '00b' => 'default', |
| 'bbb' => 'html', |
| '070' => 'keyword', |
| '777' => 'string', |
| ) |
| as $l_sColor => $l_sClass) |
| { |
| $l_sColor = '#'.$l_sColor; |
| ini_set('highlight.'.$l_sClass, $l_sColor); |
| $l_h_sHtmlMap[' style="color: '.$l_sColor.'"'] = ' class="'.$l_sClass.'"'; |
| } |
| |
| |
| $l_h_sPatternMap = array |
| ( |
| |
| '/( +)<\/span>/' => '</span>\1', |
| '/(<span class="[^"]+">)( +)/' => '\2\1', |
| |
| |
| '/<span class="[^"]+"><\/span>/' => '', |
| ); |
| |
| |
| $l_sSpace = '​'; |
| $l_h_sSpaceMap = array |
| ( |
| '[' => $l_sSpace.'[', |
| ']' => ']'.$l_sSpace, |
| '(' => $l_sSpace.'(', |
| ')' => ')'.$l_sSpace, |
| ',' => ','.$l_sSpace, |
| $l_sSpace.'</span>' => '</span>', |
| ' ' => ' ', |
| ' ' => ' ', |
| ); |
| |
| |
| $l_sBlock = null; |
| foreach (explode('<br />', preg_replace(array_keys($l_h_sPatternMap), array_values($l_h_sPatternMap), str_replace(array_keys($l_h_sHtmlMap), array_values($l_h_sHtmlMap), substr(highlight_string(str_replace(array_keys($l_h_sTextMap), array_values($l_h_sTextMap), file_get_contents($a_sFile)), true), 33, -16)))) as $l_iLine => $l_sLine) |
| { |
| |
| if ('</span>' === substr($l_sLine, 0, 7)) |
| { |
| |
| $l_sLine = substr($l_sLine, 7); |
| $l_sBlock = null; |
| } |
| |
| |
| if (null !== $l_sBlock) |
| { |
| |
| $l_sLine = $l_sBlock.$l_sLine; |
| $l_sBlock = null; |
| } |
| |
| |
| if (substr_count($l_sLine, '</span>') < substr_count($l_sLine, '<span ')) |
| { |
| |
| $l_sLine .= '</span>'; |
| $l_sBlock = substr($l_sLine, strrpos($l_sLine, '<span class="')); |
| $l_sBlock = substr($l_sBlock, 0, strpos($l_sBlock, '>') + 1); |
| } |
| |
| |
| echo |
| ' <tr |
| ><td class="line" value="', ($l_iLine + 1), '"></td |
| ><td>', str_replace(array_keys($l_h_sSpaceMap), array_values($l_h_sSpaceMap), preg_replace(array_keys($l_h_sPatternMap), array_values($l_h_sPatternMap), $l_sLine)), '</td |
| ></tr> |
| '; |
| } |
| } |
| |
| |
| function gStyle($a_sName) |
| { |
| global $g_sSiteDirectory; |
| readfile($g_sSiteDirectory.DIRECTORY_SEPARATOR.$a_sName.'.css'); |
| echo ' |
| '; |
| } |
| |
| |
| if (true !== $g_bRequestRedirection) |
| { |
| |
| header('Cache-Control: max-age=3600, public'); |
| header('Content-Language: en'); |
| header('Content-Type: text/html;charset=utf-8'); |
| |
| |
| gHead(true !== $g_bRequestSource); |
| echo |
| '<style type="text/css"> |
| |
| '; |
| gStyle('reset'); |
| gStyle('font'); |
| gStyle('index'); |
| if (true === $g_bRequestSource) |
| { |
| gStyle('code'); |
| } |
| echo |
| ' |
| </style |
| ><script nonce="inline/head" type="text/javascript"><!-- |
| //<![CDATA[ |
| |
| if (top && top.location && window && window.location && (top.location !== window.location)) |
| { |
| top.location = window.location; |
| } |
| |
| if (\'undefined\' != typeof(document.write)) |
| { |
| if (false |
| || (\'undefined\' == typeof(document.createElement)) |
| || (\'undefined\' == typeof(document.getElementsByTagName)) |
| ) |
| { |
| document.write(\'<link href="', $g_sSiteRelative, 'online.css" rel="stylesheet" type="text/css" />\'); |
| } |
| } |
| |
| //]]> |
| //--></script |
| ><noscript |
| ><link href="', $g_sSiteRelative, 'online.css" rel="stylesheet" type="text/css" |
| /></noscript |
| ></head |
| >'; |
| |
| |
| gBody(true !== $g_bRequestSource); |
| |
| |
| echo '<table'; |
| if (true !== $g_bAgentValidator) |
| { |
| echo ' border="0" cellpadding="0" cellspacing="0"'; |
| } |
| echo ' |
| ><thead |
| ><tr |
| ><td'; |
| |
| |
| if (true === $g_bRequestSource) |
| { |
| |
| echo |
| ' colspan="2"'; |
| } |
| echo |
| ' |
| ><header |
| ><h1>Nicolas Le Gland</h1 |
| ><hr |
| /></header |
| ></td |
| ></tr |
| ></thead |
| >'; |
| |
| |
| if (true !== $g_bRequestSource) |
| { |
| |
| echo |
| '<tbody |
| ><tr |
| ><td |
| ><div class="hidden" |
| ><div |
| >Author: <a href="https://plus.google.com/+nicolaslegland/about?rel=author" rel="external me author" title="Google+">Nicolas Le Gland</a |
| ></div |
| ><div |
| >Profile: <a href="https://plus.google.com/+nicolaslegland/about" rel="external me" title="Google+">Nicolas Le Gland</a |
| ></div |
| ><div |
| >Publisher: <a href="https://plus.google.com/+nicolaslegland/about?rel=publisher" rel="external me publisher" title="Google+">Nicolas Le Gland</a |
| ></div |
| ></div |
| ><div class="h-card hcard vcard" id="author" itemref="tel" itemprop="about accountablePerson author copyrightHolder creator editor provider reviewedBy translator" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Person" |
| ><a class="image" href="', $g_sSiteAbsolute, 'photo.png" title="Nicolas Le Gland" |
| ><img alt="Photo"'; |
| if (true !== $g_bAgentValidator) |
| { |
| echo ' border="0"'; |
| } |
| echo |
| ' class="photo u-photo" height="256" itemprop="image" src="', $g_sSiteAbsolute, 'photo.jpg" title="Nicolas Le Gland" width="256" |
| /></a |
| ><div class="hidden" |
| ><span class="fn n p-name" itemprop="name" |
| ><span class="given-name p-given-name">Nicolas</span |
| > <span class="family-name p-family-name">Le Gland</span |
| ></span |
| ></div |
| ><div class="block" |
| ><div |
| >ルグラン ニコラ</div |
| ><div class="phonetic" |
| >nikɔlɑ lə glɑ̃</div |
| ><div |
| >"<span class="nickname p-nickname" itemprop="alternateName" |
| >Nescafé</span |
| >"<span class="hidden" itemprop="memberOf" itemref="mail-other" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Organization" |
| > on <a class="external" href="http://www.langochat.net/" itemprop="url" title="LangoChat.net" |
| ><span content="LangoChat.net" itemprop="name" title="LangoChat.net">LangoChat</span |
| ></a |
| >.</span |
| ></div |
| ><div |
| ><span class="title p-job-title" itemprop="jobTitle">Research engineer</span |
| > at <span class="org p-org" itemprop="worksFor" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Corporation" |
| ><span itemprop="brand" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Organization" |
| ><a class="external" href="', $g_sRequestProtocol, 'www.nintendo.com/countryselector" itemprop="url" title="Nintendo" |
| ><span class="organization-name p-organization-name" itemprop="name">Nintendo</span |
| ></a |
| ></span |
| > <span itemprop="department" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Organization" |
| ><a class="external" href="http://www.nerd.nintendo.com/" itemprop="url" title="Nintendo European Research and Development" |
| ><span class="organization-unit p-organization-unit" content="Nintendo European Research and Development" itemprop="name">European Research and Development</span |
| ></a |
| ></span |
| ></span |
| >.</div |
| ><div>I deal with the nuts and bolts, not the fancy stuff.</div |
| ><div |
| >Born on <time class="bday dt-bday" itemprop="birthDate">1982-05-03</time |
| > in <span itemprop="birthPlace" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Place" |
| ><a class="external" href="http://en.wikipedia.org/wiki/Paris" itemprop="url" title="Wikip´edia" |
| ><span itemprop="name">Paris</span |
| ></a |
| ></span |
| >, <span itemprop="nationality" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Country" |
| ><a class="external" href="http://en.wikipedia.org/wiki/France" itemprop="url" title="Wikip´edia" |
| ><span itemprop="name">France</span |
| ></a |
| ></span |
| >.</div |
| ></div |
| ><br |
| /><div class="adr h-addr p-adr" itemprop="homeLocation" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Place" |
| ><h2><span class="type">Home</span></h2 |
| ><div itemprop="address" itemref="mail-home tel-home tel-home-fax" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/PostalAddress" |
| ><div itemprop="streetAddress" |
| ><span class="street-address p-street-address">268 boulevard <a |
| class="external" href="https://en.wikipedia.org/wiki/Fran%C3%A7ois-Vincent_Raspail" title="Wikip´edia">Raspail</a |
| ></span |
| ></div |
| ><div |
| ><span class="postal-code p-postal-code" itemprop="postalCode">75014</span |
| > <span class="locality p-locality" itemprop="addressLocality">Paris</span |
| ></div |
| ><div class="country p-country-name" itemprop="addressCountry">France</div |
| ></div |
| >(<span class="h-geo p-geo" itemprop="geo" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/GeoCoordinates" |
| ><abbr class="latitude p-latitude" content="48.836944" itemprop="latitude" title="48.836944">48°50\'13N</abbr |
| >, <abbr class="longitude p-longitude" content= "2.331389" itemprop="longitude" title= "2.331389" >2°19\'53E</abbr |
| ></span |
| >: <a class="external" href="https://www.google.com/maps/place/Nicolas+Le+Gland,+268+boulevard+Raspail,+75014+Paris,+France/@48.836944,2.331389,100m/data=!3m2!1e3!4b1" title="Google Maps">map</a |
| >, <a class="external" href="https://www.google.com/maps/place/Nicolas+Le+Gland,+268+boulevard+Raspail,+75014+Paris,+France/@48.836944,2.331389,3a,75y,277.46h,108.25t/data=!3m6!1e1!3m4!1ss6FzZipX1Q3KCG9vYGh9YQ!2e0!7i16384!8i8192" title="Street View">view</a>, <a |
| class="external" href="https://www.facebook.com/nolwennnicolasmarianneetcorentin" title="Facebook">web</a |
| >)</div |
| ><div class="adr h-addr p-adr" itemprop="workLocation" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/Place" |
| ><h2><span class="type">Work</span></h2 |
| ><div itemprop="address" itemref="mail-work tel-work tel-work-fax" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/PostalAddress" |
| ><div itemprop="streetAddress" |
| ><span class="extended-address p-extended-address">Nintendo European Research and Development</span |
| >,<div |
| > <span class="street-address p-street-address" |
| >128 <a class="external" href="http://en.wikipedia.org/wiki/Rue_de_Rivoli" title="Wikip´edia">rue de Rivoli</a |
| ></span |
| ></div |
| ></div |
| ><div |
| ><span class="postal-code p-postal-code" itemprop="postalCode">75001</span |
| > <span class="locality p-locality" itemprop="addressLocality">Paris</span |
| ></div |
| ><div class="country p-country-name" itemprop="addressCountry">France</div |
| ></div |
| >(<span class="geo h-geo p-geo u-geo" itemprop="geo" itemscope="itemscope" itemtype="', $g_sRequestProtocol, 'schema.org/GeoCoordinates" |
| ><abbr class="latitude p-latitude" content="48.859875" itemprop="latitude" title="48.859875">48°51\'35N</abbr |
| >, <abbr class="longitude p-longitude" content= "2.344615" itemprop="longitude" title= "2.344615" >2°20\'41E</abbr |
| ></span |
| >: <a class="external" href="https://www.google.com/maps/place/Nintendo+European+Research+and+Development,+128+rue+de+Rivoli,+75001+Paris,+France/@48.859875,2.344615,208m/data=!3m2!1e3!4b1!4m2!3m1!1s0x0:0x0" title="Google Maps">map</a |
| >, <a class="external" href="https://www.google.com/maps/place/Nintendo+European+Research+and+Development,+128+rue+de+Rivoli,+75001+Paris,+France/@48.857,2.347,291a,35y,327.68h,33.16t/data=!3m1!1e3!4m2!3m1!1s0x47e66e21df9d0b57:0x9f7905f200f1b593" title="Street View">view</a |
| >, <a class="external" href="http://www.nerd.nintendo.com/" title="Nintendo European Research and Development">web</a |
| >)</div |
| ><br |
| /><div class="block" |
| ><h2>Mail</h2 |
| ><div itemscope="itemscope" itemtype="http://schema.org/PostalAddress" |
| >Home: <a class="email u-email" content="nicolas@legland.fr" href="mailto:nicolas@legland.fr" id="mail-home" itemprop="email" rel="me" title="Nicolas Le Gland <nicolas@legland.fr>">nicolas@legland.fr</a><span class="hidden"> (<span class="type">pref</span>erred)</span |
| ></div |
| ><div itemscope="itemscope" itemtype="http://schema.org/PostalAddress" |
| >Work: <a class="email u-email" content="nicolas.legland@nerd.nintendo.com" href="mailto:nicolas.legland@nerd.nintendo.com" id="mail-work" itemprop="email" rel="me" title="Nicolas Le Gland <nicolas.legland@nerd.nintendo.com>">nicolas.legland@nerd.nintendo.com</a |
| ></div |
| ><div itemscope="itemscope" itemtype="http://schema.org/PostalAddress" |
| >Other: <a class="email u-email" content="nescafe@0x00ff00ff.com" href="mailto:nescafe@0x00ff00ff.com" id="mail-other" itemprop="email" rel="me" title="Nicolas "Nescafé" Le Gland <nescafe@0x00ff00ff.com>">nescafe@0x00ff00ff.com</a |
| ></div |
| ></div |
| ><div class="block" |
| ><h2>Phone</h2 |
| ><div class="tel p-tel pref" itemscope="itemscope" itemtype="http://schema.org/PostalAddress" |
| ><span class="type">Cell</span |
| >: <a content="+33663250582" href="tel:+33663250582" id="tel" itemprop="telephone" title="Call"><span class="value" |
| >+33</span> <span class="value" |
| >6</span> <span class="value" |
| >63</span> <span class="value" |
| >25</span> <span class="value" |
| >05</span> <span class="value" |
| >82</span |
| ></a |
| > (<a class="apple" href="facetime:+33663250582" title="Facetime">facetime</a><span class="osx" |
| >, <a href="imessage:+33663250582" title="iMessage">imessage</a |
| ></span |
| >'; |
| if (true !== $g_bAgentText) |
| { |
| echo |
| '<span class="ios" |
| >, <a href="sms:+33663250582" title="iMessage">imessage</a |
| ></span |
| >'; |
| } |
| echo |
| '<span class="hidden">, </span |
| ><a class="not-apple" href="sms:+33663250582" title="SMS">sms</a |
| ><span class="hidden" |
| >, <span class="type">pref</span |
| >erred</span |
| >)</div |
| ><div class="tel p-tel" itemscope="itemscope" itemtype="http://schema.org/PostalAddress" |
| ><span class="type">Home</span |
| >: <a content="+33950527514" href="tel:+33950527514" id="tel-home" itemprop="telephone" title="Call"><span class="value" |
| >+33</span> <span class="value" |
| >9</span> <span class="value" |
| >50</span> <span class="value" |
| >52</span> <span class="value" |
| >75</span> <span class="value" |
| >14</span |
| ></a |
| ></div |
| ><div class="tel p-tel-fax" itemscope="itemscope" itemtype="http://schema.org/PostalAddress" |
| ><span class="type">Home</span> <span class="type">fax</span |
| >: <a content="+33955527514" href="fax:+33955527514" id="tel-home-fax" itemprop="faxNumber" title="Fax"><span class="value" |
| >+33</span> <span class="value" |
| >9</span> <span class="value" |
| >55</span> <span class="value" |
| >52</span> <span class="value" |
| >75</span> <span class="value" |
| >14</span |
| ></a |
| ></div |
| ><div class="tel p-tel" itemscope="itemscope" itemtype="http://schema.org/PostalAddress" |
| ><span class="type">Work</span |
| >: <a content="+33153300365" href="tel:+33153300365" id="tel-work" itemprop="telephone" title="Call"><span class="value" |
| >+33</span> <span class="value" |
| >1</span> <span class="value" |
| >53</span> <span class="value" |
| >30</span> <span class="value" |
| >03</span> <span class="value" |
| >65</span |
| ></a |
| ></div |
| ><div class="tel p-tel-fax" itemscope="itemscope" itemtype="http://schema.org/PostalAddress" |
| ><span class="type">Work</span> <span class="type">fax</span |
| >: <a content="+33153300122" href="fax:+33153300122" id="tel-work-fax" itemprop="faxNumber" title="Fax"><span class="value" |
| >+33</span> <span class="value" |
| >1</span> <span class="value" |
| >53</span> <span class="value" |
| >30</span> <span class="value" |
| >01</span> <span class="value" |
| >22</span |
| ></a |
| ></div |
| ></div |
| ><div class="block" |
| ><h2>Contact</h2 |
| ><div |
| >Friend: 3DS <a class="external" href="http://dsinparis.fr/les-codes-amis-3ds/" title="DS in Paris">2535-3634-5751</a>, Mario Run 0667-6690-1570, SW-0180-2477-2045</div |
| ><div |
| >Geek: <a href="', $g_sSiteRelative, 'geekcode.txt" title="Geek code">GCC/CS/SS</a |
| > (<a class="external" href="http://www.0x00ff00ff.com/geekcode/?url=', $g_sSiteAbsolute, 'geekcode.txt" title="0x00FF00FF">decode</a |
| >)</div |
| ><div |
| >PGP: <a class="external" href="http://pool.sks-keyservers.net:11371/pks/lookup?op=index&search=0xB6D11647DBD59522670EB91FB4156B9700000000" title="SKS Keyservers">0x00000000</a |
| > (<a href="', $g_sSiteRelative, 'public.asc" rel="me" title="ASCII armored GPG public key">armor</a |
| >, <a href="', $g_sSiteRelative, 'public.gpg" rel="me" title="GPG public key">binary</a |
| >, <a href="', $g_sSiteRelative, 'public.txt" title="GPG public key debug dump">dump</a |
| >, <a class="external" href="http://pgp.cs.uu.nl/mk_path.cgi?STAT=0xB6D11647DBD59522670EB91FB4156B9700000000" title="GPG public key statistics">stat</a |
| >)</div |
| >'; |
| if (true !== $g_bAgentText) |
| { |
| echo |
| '<div class="hidden" |
| ><span class="key u-key"><span class="type">PGP</span>: <a class="value" href="', $g_sSiteAbsolute, 'public.asc" rel="me" title="GPG public key">', $g_sSiteAbsolute, 'public.asc</a></span |
| ></div |
| >'; |
| } |
| echo |
| '<div |
| >Web: <a class="u-uid url u-url" href="', $g_sSiteAbsolute, '" itemprop="url" rel="me" title="Nicolas Le Gland">', $g_sSiteDomain, '</a |
| > ('; |
| if (true !== $g_bAgentText) |
| { |
| echo |
| '<span class="ios" |
| ><a href="', $g_sSiteRelative, 'ios.vcf" rel="me" title="vCard">card</a |
| ></span |
| ><span class="osx" |
| ><a href="', $g_sSiteRelative, 'osx.vcf" rel="me" title="vCard">card</a |
| ></span |
| ><span class="not-apple" |
| >'; |
| } |
| echo |
| '<a href="', $g_sSiteRelative, 'contact.vcf" rel="me" title="vCard">card</a'; |
| if (true !== $g_bAgentText) |
| { |
| echo ' |
| ></span'; |
| } |
| echo |
| '>)</div |
| ></div |
| ><div class="block" |
| ><h2>Profile</h2 |
| ><img alt="Mii" class="u-logo" height="154" onerror="this.src=\'', $g_sSiteRelative, 'mii.gif\';" src="', $g_sSiteRelative, 'mii.png" title="Nicolas Le Gland" width="130" |
| /><div |
| >You can find me on', |
| gLink('airbnb.gif', 0, 'Airbnb', 'Airbnb', 'https://www.airbnb.com/c/nicolasl764', ','), |
| gLink('allocine.gif', 16, 'AlloCiné', 'AlloCiné', 'http://www.allocine.fr/membre-Z20100327134617803182754/', ','), |
| gLink('amazon.gif', 32, 'Amazon.com', 'Amazon<span class="tld">.com</span>', 'https://www.amazon.com/hz/wishlist/ls/3KSU4I6Z9E7YH?type=wishlist&filter=unpurchased&sort=price-asc', ','), |
| gLink('amazon.gif', 32, 'Amazon.fr', 'Amazon<span class="tld">.fr</span>', 'https://www.amazon.fr/hz/wishlist/ls/27ZKMKDLXPF6V?type=wishlist&filter=unpurchased&sort=price-asc', ','), |
| gLink('badoo.gif', 48, 'Badoo', 'Badoo', $g_sRequestProtocol.'badoo.com/nescafe/', ','), |
| gLink('bitly.gif', 64, 'Bitly', 'Bitly', 'https://bitly.com/u/nicolaslegland', ','), |
| gLink('blogspot.gif', 80, 'Blogger', 'Blogger', 'https://www.blogger.com/profile/03167999290187409875', ','), |
| gLink('blogspot.gif', 80, 'Blogspot', 'Blogspot', 'http://nicolaslegland.blogspot.fr/', ','), |
| gLink('clubxtrem.gif', 96, 'Clubxtrem', 'Clubxtrem', 'http://www.clubxtrem.net/userinfo.php?uid=16144', ','), |
| gLink('coderwall.gif', 112, 'coderwall', 'coderwall', 'https://coderwall.com/nicolaslegland', ','), |
| gLink('copainsdavant.gif', 128, 'Copains d\'avant', 'Copains d\'avant', 'http://copainsdavant.linternaute.com/p/nicolas-le-gland-886319', ','), |
| gLink('dailymotion.gif', 144, 'Dailymotion', 'Dailymotion', $g_sRequestProtocol.'www.dailymotion.com/nicolaslegland', ','), |
| gLink('dalnet.gif', 160, 'DALnet', 'DALnet', 'https://users.dal.net/userinfo.php?nick=nescafe', ','), |
| gLink('dandyid.gif', 176, 'DandyID', 'DandyID', $g_sRequestProtocol.'www.dandyid.org/id/nicolaslegland', ','), |
| gLink('danstonchat.gif', 192, 'DansTonChat', 'DansTonChat', 'http://danstonchat.com/geek/nescafe.html', ','), |
| gLink('deezer.gif', 208, 'Deezer', 'Deezer', $g_sRequestProtocol.'www.deezer.com/profile/1950464', ','), |
| gLink('delicious.gif', 224, 'Delicious', 'Delicious', 'https://delicious.com/nicolaslegland', ','), |
| gLink('deviantart.gif', 240, 'DeviantArt', 'DeviantArt', $g_sRequestProtocol.'nicolaslegland.deviantart.com/', ','), |
| gLink('diaspora.gif', 256, 'Diaspora', 'Diaspora', 'https://diasp.org/people/a8b2d8d47d0b3967', ','), |
| gLink('digg.gif', 272, 'Digg', 'Digg', $g_sRequestProtocol.'digg.com/u/4e2c5cc8060d4e9a95ae5fd3ae9abba1/deeper', ','), |
| gLink('discogs.gif', 288, 'Discogs', 'Discogs', 'http://www.discogs.com/user/nicolaslegland', ','), |
| gLink('discord.gif', 304, 'Discord', 'Discord', 'https://discordapp.com/users/136828504183406592', ','), |
| gLink('doctissimo.gif', 320, 'Doctissimo', 'Doctissimo', 'http://club.doctissimo.fr/nicolas-le-gland/', ','), |
| gLink('dotabuff.gif', 336, 'Dotabuff', 'Dotabuff', $g_sRequestProtocol.'www.dotabuff.com/players/48614', ','), |
| gLink('dribbble.gif', 352, 'Dribbble', 'Dribbble', 'https://dribbble.com/nicolaslegland', ','), |
| gLink('dropbox.gif', 368, 'Dropbox', 'Dropbox', 'https://www.dropbox.com/sh/r2so02kucmzvjvr/AABw0BaxzGjaa8gyoPpnCHJma', ','), |
| gLink('dsinparis.gif', 384, 'DS in Paris', 'DS in Paris', 'http://forum.danstonchat.com/read.php?13,32427,105127#msg-105127', ','), |
| gLink('ebay.gif', 400, 'eBay', 'eBay', 'http://www.ebay.com/usr/nicolas.legland', ','), |
| gLink('facebook.gif', 416, 'Facebook', 'Facebook', 'https://www.facebook.com/nicolas.legland', ','), |
| gLink('flavors.gif', 432, 'Flavors.me', 'Flavors<span class="tld">.me</span>', 'http://nicolaslegland.flavors.me/', ','), |
| gLink('flickr.gif', 448, 'Flickr', 'Flickr', 'https://www.flickr.com/photos/nicolaslegland/', ','), |
| gLink('foursquare.gif', 464, 'Foursquare', 'Foursquare', 'https://foursquare.com/nicolaslegland', ','), |
| gLink('friendfeed.gif', 480, 'FriendFeed', 'FriendFeed', $g_sRequestProtocol.'friendfeed.com/nicolaslegland', ','), |
| gLink('friendster.gif', 496, 'Friendster', 'Friendster', 'http://www.friendster.com/profiles/99510552', ','), |
| gLink('generationnt.gif', 512, 'Génération NT', 'Génération NT', 'http://www.generation-nt.com/membres/507622.html', ','), |
| gLink('gcn.gif', 528, 'Games Creators Network', 'Games Creators Network', 'http://forum.games-creators.org/memberlist.php?mode=viewprofile&u=419', ','), |
| gLink('gametrailers.gif', 544, 'GameTrailers', 'GameTrailers', 'http://www.gametrailers.com/#openUserProfile=34706A02026A70340001026A7034', ','), |
| gLink('getsatisfaction.gif', 560, 'Get Satisfaction', 'Get Satisfaction', 'https://getsatisfaction.com/people/nicolaslegland', ','), |
| gLink('github.gif', 576, 'GitHub', 'GitHub', 'https://github.com/nicolaslegland', ','), |
| gLink('google-plus.gif', 592, 'Google+', 'Google+', 'https://plus.google.com/+nicolaslegland/about', ','), |
| gLink('google.gif', 608, 'Google Calendar', 'Google Calendar', 'http://www.google.com/calendar/embed?src=8l4tn0ga4e7nbq4l1itsuqpafo@group.calendar.google.com', ','), |
| gLink('google.gif', 608, 'Google Maps', 'Google Maps', $g_sRequestProtocol.'www.google.com/mapmaker?gw=66&uid=203725838592539463928', ','), |
| gLink('gswot.gif', 624, 'GSWoT', 'GSWoT', 'https://plus.google.com/116354058025450874991/about', ','), |
| gLink('hi5.gif', 640, 'Hi5', 'Hi5', $g_sRequestProtocol.'www.hi5.com/nicolaslegland', ','), |
| gLink('ichcb.gif', 656, 'I Can Has Cheezburger', 'I Can Has Cheezburger', $g_sRequestProtocol.'app.cheezburger.com/nescafe/', ','), |
| gLink('icq.gif', 672, 'ICQ', 'ICQ', $g_sRequestProtocol.'www.icq.com/people/76383301', ','), |
| gLink('instagram.gif', 688, 'Instagram', 'Instagram', 'https://www.instagram.com/nicolaslegland/', ','), |
| gLink('jeuxvideo.gif', 704, 'JeuxVideo.com', 'JeuxVideo<span class="tld">.com</span>', $g_sRequestProtocol.'www.jeuxvideo.com/profil/nesca?mode=infos', ','), |
| gLink('keybase.gif', 720, 'Keybase', 'Keybase', 'https://keybase.io/nicolaslegland', ','), |
| gLink('klear.gif', 736, 'Klear', 'Klear', $g_sRequestProtocol.'klear.com/profile/nicolaslegland', ','), |
| gLink('klout.gif', 752, 'Klout', 'Klout', 'https://klout.com/#/nicolaslegland', ','), |
| gLink('kraland.gif', 768, 'Kraland', 'Kraland', 'http://www.kraland.org/main.php?p=6_1&p1=175', ','), |
| gLink('laposte.gif', 784, 'La Poste', 'La Poste', 'https://www.idn.laposte.fr/public-profile/nld-nhd7', ','), |
| gLink('last.fm.gif', 800, 'Last.fm', 'Last<span class="tld">.fm</span>', 'http://www.last.fm/user/nicolaslegland/', ','), |
| gLink('leplus.gif', 816, 'Le Plus', 'Le Plus', $g_sRequestProtocol.'leplus.nouvelobs.com/nicolaslegland', ','), |
| gLink('linkedin.gif', 832, 'LinkedIn', 'LinkedIn', 'https://www.linkedin.com/in/nicolaslegland', ','), |
| gLink('mariomakerhub.gif', 848, 'Mario Maker Hub', 'Mario Maker Hub', 'http://www.mariomakerhub.com/makers/nescafe', ','), |
| gLink('mastodon.gif', 864, 'Mastodon.social', 'Mastodon<span class="tld">.social</span>', 'https://mastodon.social/@nicolaslegland', ','), |
| gLink('mastodon.gif', 864, 'Mastodon.xyz', 'Mastodon<span class="tld">.xyz</span>', 'https://mastodon.xyz/@nicolaslegland', ','), |
| gLink('miiverse.gif', 880, 'Miiverse', 'Miiverse', 'https://archiverse.guide/users/Nescafe', ','), |
| gLink('mobygames.gif', 896, 'MobyGames', 'MobyGames', $g_sRequestProtocol.'www.mobygames.com/developer/sheet/view/developerId,248676/', ','), |
| gLink('msn.gif', 912, 'MSN', 'MSN', 'https://profile.live.com/cid-ffad5a53f82a681f/messenger', ','), |
| gLink('myspace.gif', 928, 'MySpace', 'MySpace', 'https://myspace.com/nicolaslegland', ','), |
| gLink('naymz.gif', 944, 'Naymz', 'Naymz', $g_sRequestProtocol.'www.naymz.com/nicolaslegland2422692', ','), |
| gLink('neogaf.gif', 960, 'NeoGAF', 'NeoGAF', 'http://www.neogaf.com/forum/member.php?u=126166', ','), |
| gLink('netlog.gif', 976, 'Netlog', 'Netlog', 'http://netlog.com/nicolaslegland', ','), |
| gLink('netvibes.gif', 992, 'Netvibes', 'Netvibes', $g_sRequestProtocol.'www.netvibes.com/nicolaslegland', ','), |
| gLink('nintendolife.gif', 1008, 'Nintendo Life', 'Nintendo Life', 'http://www.nintendolife.com/users/nescafe', ','), |
| gLink('openclassrooms.gif', 1024, 'OpenClassrooms', 'OpenClassrooms', $g_sRequestProtocol.'openclassrooms.com/membres/nescafe', ','), |
| gLink('panoramio.gif', 1040, 'Panoramio', 'Panoramio', 'http://www.panoramio.com/user/3229067', ','), |
| gLink('paypal.gif', 1056, 'PayPal', 'PayPal', 'https://www.paypal.me/nicolaslegland', ','), |
| gLink('photobucket.gif', 1072, 'Photobucket', 'Photobucket', 'http://photobucket.com/nicolaslegland', ','), |
| gLink('plaxo.gif', 1088, 'Plaxo', 'Plaxo', 'http://www.plaxo.com/profile/show/nicolaslegland', ','), |
| gLink('psn.gif', 1104, 'PlayStation Network', 'PlayStation Network', 'http://eu.playstation.com/psn/mypsn/trophies-compare/?onlineid=nescafe-on-play', ','), |
| gLink('pocket.gif', 1120, 'Pocket', 'Pocket', 'http://getpocket.com/users/nescafe/', ','), |
| gLink('pouet.gif', 1136, 'Pouët', 'Pouët', $g_sRequestProtocol.'www.pouet.net/user.php?who=3036', ','), |
| gLink('pnintendo.gif', 1152, 'Puissance Nintendo', 'Puissance Nintendo', 'http://forums.p-nintendo.com/memberlist.php?mode=viewprofile&u=70459', ','), |
| gLink('quitter.gif', 1168, 'Quitter.es', 'Quitter<span class="tld">.es</span>', 'https://quitter.es/nicolaslegland', ','), |
| gLink('quitter.gif', 1168, 'Quitter.is', 'Quitter<span class="tld">.is</span>', 'https://quitter.is/nicolaslegland', ','), |
| gLink('quitter.gif', 1168, 'Quitter.no', 'Quitter<span class="tld">.no</span>', 'https://quitter.no/nicolaslegland', ','), |
| gLink('quitter.gif', 1168, 'Quitter.se', 'Quitter<span class="tld">.se</span>', 'https://quitter.se/nicolaslegland', ','), |
| gLink('quora.gif', 1184, 'Quora', 'Quora', 'http://www.quora.com/nicolas-le-gland', ','), |
| gLink('raptr.gif', 1200, 'Raptr', 'Raptr', 'http://raptr.com/nescafe', ','), |
| gLink('reddit.gif', 1216, 'Reddit', 'Reddit', $g_sRequestProtocol.'reddit.com/user/nicolaslegland', ','), |
| gLink('redditgifts.gif', 1232, 'Reddit Gifts', 'Reddit Gifts', 'https://www.redditgifts.com/profiles/view/nicolaslegland', ','), |
| gLink('seenthis.gif', 1248, 'SeenThis', 'SeenThis', 'https://seenthis.net/people/nicolas', ','), |
| gLink('senscritique.gif', 1264, 'Sens Critique', 'Sens Critique', 'http://www.senscritique.com/nescafe/', ','), |
| gLink('skyrock.gif', 1280, 'Skyrock', 'Skyrock', 'http://nicolaslegland.skyrock.com/', ','), |
| gLink('soundcloud.gif', 1296, 'SoundCloud', 'SoundCloud', 'https://soundcloud.com/nicolaslegland', ','), |
| gLink('sourceforge.gif', 1312, 'SourceForge', 'SourceForge', $g_sRequestProtocol.'sourceforge.net/u/nicolaslegland/profile/', ','), |
| gLink('spotify.gif', 1328, 'Spotify', 'Spotify', 'https://open.spotify.com/user/nescafe', ','), |
| gLink('stackoverflow.gif', 1344, 'Stack Overflow', 'Stack Overflow', $g_sRequestProtocol.'stackoverflow.com/users/946389/nicolas-le-gland', ','), |
| gLink('sc2.gif', 1360, 'StarCraft 2', 'StarCraft 2', 'http://eu.battle.net/sc2/en/profile/730066/1/Nescafe/', ','), |
| gLink('sc2ranks.gif', 1376, 'StarCraft 2 Ranks', 'StarCraft 2 Ranks', 'http://www.sc2ranks.com/character/eu/730066/Nescafe', ','), |
| gLink('steam.gif', 1392, 'Steam', 'Steam', $g_sRequestProtocol.'steamcommunity.com/id/nescafe', ','), |
| gLink('storify.gif', 1408, 'Storify', 'Storify', 'https://storify.com/nicolaslegland', ','), |
| gLink('stumbleupon.gif', 1424, 'StumbleUpon', 'StumbleUpon', 'http://www.stumbleupon.com/stumbler/nicolaslegland/likes', ','), |
| gLink('technet.gif', 1440, 'TechNet', 'TechNet', 'https://social.technet.microsoft.com/profile/nicolas+le+gland', ','), |
| gLink('telegram.gif', 1456, 'Telegram', 'Telegram', 'https://web.telegram.org/#/im?p=@nicolaslegland', ','), |
| gLink('tripadvisor.gif', 1472, 'TripAdvisor', 'TripAdvisor', 'http://www.tripadvisor.com/members/Neskafe', ','), |
| gLink('trombi.gif', 1488, 'Trombi', 'Trombi', 'http://www.trombi.com/Personnes/Nicolas-Le-Gland-P-7QQ7Z-P', ','), |
| gLink('tumblr.gif', 1504, 'Tumblr', 'Tumblr', 'http://nicolaslegland.tumblr.com/', ','), |
| gLink('twitpic.gif', 1520, 'Twitpic', 'Twitpic', $g_sRequestProtocol.'twitpic.com/photos/nicolaslegland', ','), |
| gLink('twitter.gif', 1536, 'Twitter', 'Twitter', 'https://twitter.com/nicolaslegland', ','), |
| gLink('viadeo.gif', 1552, 'Viadeo.com', 'Viadeo<span class="tld">.com</span>', $g_sRequestProtocol.'www.viadeo.com/en/profile/nicolaslegland', ','), |
| gLink('viadeo.gif', 1552, 'Viadeo.fr', 'Viadeo<span class="tld">.fr</span>', $g_sRequestProtocol.'www.viadeo.fr/fr/profile/nicolaslegland', ','), |
| gLink('vimeo.gif', 1568, 'Vimeo', 'Vimeo', 'https://www.vimeo.com/nicolaslegland', ','), |
| gLink('vk.gif', 1584, 'VKontakte', 'VKontakte', $g_sRequestProtocol.'vk.com/nicolaslegland', ','), |
| gLink('wefrag.gif', 1600, 'Wefrag', 'Wefrag', 'http://www.wefrag.com/users/nescafe', ','), |
| gLink('wordpress.gif', 1616, 'WordPress', 'WordPress', 'https://nicolaslegland.wordpress.com/', ','), |
| gLink('xbox.gif', 1632, 'Xbox Live', 'Xbox Live', 'https://account.xbox.com/en-us/profile?gamertag=nescafe+on+live', ','), |
| gLink('yelp.gif', 1648, 'Yelp', 'Yelp', $g_sRequestProtocol.'nicolaslegland.yelp.com/', ','), |
| gLink('yggtorrent.gif', 1664, 'Yggtorrent', 'Yggtorrent', 'https://yggtorrent.is/profile/823491-nicolaslegland', ' and'), |
| gLink('youtube.gif', 1680, 'YouTube', 'YouTube', 'https://www.youtube.com/user/nicolaslegland', '.'), |
| '</div |
| ></div |
| ></div |
| >'; |
| } |
| |
| |
| else |
| { |
| |
| gSource(__FILE__); |
| } |
| |
| |
| echo |
| '</td |
| ></tr |
| ></tbody |
| ><tfoot |
| ><tr |
| ><td'; |
| |
| |
| if (true === $g_bRequestSource) |
| { |
| |
| echo |
| ' colspan="2"'; |
| } |
| |
| |
| echo ' |
| ><footer |
| ><hr |
| />CSS: <a class="good" href="', $g_sRequestProtocol, 'jigsaw.w3.org/css-validator/validator?uri=', $g_sSiteAbsolute, '" title="CSS validator">Valid</a |
| >, DNS: <a class="good" href="http://www.dnsinspect.com/', $g_sSiteZone, '" title="DNS inspect">A</a |
| >, Favicon: <a class="good" href="', $g_sRequestProtocol, 'realfavicongenerator.net/favicon_checker?site=', $g_sSiteAbsolute, '" title="Favicon generator">OK</a |
| >, hCard: <a class="good" href="http://hcard.geekhood.net/?url=', $g_sSiteDomain, '#result" title="hCard validation">OK</a |
| >, HTML: <a class="good" href="http://validator.w3.org/check?uri=', $g_sSiteAbsolute, '" title="HTML validator">Valid</a |
| >, Insights: <a class="good" href="', $g_sRequestProtocol, 'developers.google.com/speed/pagespeed/insights/?hl=en&tab=desktop&url=', $g_sSiteAbsolute, '" title="PageSpeed Insights">99%</a |
| >, Network: <a '; |
| if (true !== $g_bAgentText) |
| { |
| echo |
| 'href="', $g_sSiteRelative, 'index.appcache" title="Application cache" |
| ><span class="online"><span |
| class="good">On</span |
| ></span |
| ><span class="offline"><span |
| class="average">Off</span |
| ></span |
| ><span class="unknown"><span |
| class="bad">Unknown</span |
| ></span |
| >'; |
| } |
| else |
| { |
| echo |
| 'class="good" href="', $g_sSiteRelative, 'index.appcache" title="Application cache">On'; |
| } |
| echo |
| '</a |
| >, OpenGraph: <a class="good" href="https://developers.facebook.com/tools/debug/og/object?q=', $g_sSiteAbsolute, '" title="OpenGraph debugger">OK</a |
| >, <span class="online" |
| >PHP: <a class="'; |
| |
| |
| $g_iResponseDuration = (int)(ceil((microtime(true) - $g_fRequestTime) * 1000)); |
| if ($g_iResponseDuration < 10) |
| { |
| echo |
| 'good'; |
| } |
| else if ($g_iResponseDuration < 100) |
| { |
| echo |
| 'average'; |
| } |
| else |
| { |
| echo |
| 'bad'; |
| } |
| echo |
| '" href="'; |
| if (true !== $g_bRequestSource) |
| { |
| echo |
| 'index.php'; |
| } |
| else |
| { |
| echo |
| '.'; |
| } |
| echo |
| '" rel="nofollow" title="PHP source code">', $g_iResponseDuration, ' ms</a |
| >, </span |
| >Speed: <a class="good" href="http://gtmetrix.com/reports/', $g_sSiteDomain, '/'; |
| if (true !== $g_bRequestEncryption) |
| { |
| |
| echo |
| 'twnR782K" title="GXmetrix">99%'; |
| } |
| else |
| { |
| |
| echo |
| 'efG3fR1O" title="GXmetrix">100%'; |
| } |
| echo |
| '</a |
| >, Structure: <a class="good" href="https://developers.google.com/webmasters/structured-data/testing-tool?url=', $g_sSiteAbsolute, '" title="Structured data">OK</a |
| >, TLS: <a href="https://www.ssllabs.com/ssltest/analyze.html?d=', $g_sSiteDomain, '" title="SSL Labs" |
| ><span class="online"><span |
| class="'; |
| |
| |
| if (true !== $g_bRequestEncryption) |
| { |
| |
| echo |
| 'average">Off'; |
| } |
| else |
| { |
| |
| echo |
| 'good">A'; |
| } |
| echo |
| '</span |
| ></span |
| '; |
| if (true !== $g_bAgentText) |
| { |
| echo |
| ' ><span class="offline"><span |
| class="average">Off</span |
| ></span |
| ><span class="unknown"><span |
| class="bad">Unknown</span |
| ></span |
| '; |
| } |
| echo |
| ' ></a |
| >, ', date('Y-m-d H:i:s', $g_iRequestTime), '.<br |
| /></footer |
| ></td |
| ></tr |
| ></tfoot |
| ></table |
| ><script nonce="inline/foot" type="text/javascript"><!-- |
| //<![CDATA[ |
| |
| if (window) |
| { |
| (function (element, event, method) |
| { |
| if (element.addEventListener) |
| { |
| element.addEventListener(event, method); |
| } |
| else if (element.attachEvent) |
| { |
| element.attachEvent(\'on\' + event, method); |
| } |
| else |
| { |
| method(); |
| } |
| } |
| )(window, \'load\', function () |
| { |
| if (window.applicationCache && window.applicationCache.addEventListener) |
| { |
| window.applicationCache.addEventListener(\'updateready\', function () |
| { |
| if (window.location && window.location.reload) |
| { |
| window.location.reload(); |
| } |
| } |
| , false); |
| } |
| |
| if (document.createElement && document.getElementsByTagName) |
| { |
| var element, parent; |
| |
| parent = document.getElementsByTagName(\'head\')[0]; |
| if (parent && parent.appendChild) |
| { |
| element = document.createElement(\'link\'); |
| element.rel = \'stylesheet\'; |
| if (navigator && !navigator.onLine) |
| { |
| element.href = \'', $g_sSiteRelative, 'offline.css\'; |
| } |
| else |
| { |
| element.href = \'', $g_sSiteRelative, 'online.css\'; |
| } |
| element.type = \'text/css\'; |
| parent.appendChild(element); |
| |
| if (navigator && navigator.userAgent) |
| { |
| if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent)) |
| { |
| element = document.createElement(\'link\'); |
| element.rel = \'stylesheet\'; |
| element.href = \'', $g_sSiteRelative, 'ios.css\'; |
| element.type = \'text/css\'; |
| parent.appendChild(element); |
| } |
| else if (/(Macintosh)/g.test(navigator.userAgent)) |
| { |
| element = document.createElement(\'link\'); |
| element.rel = \'stylesheet\'; |
| element.href = \'', $g_sSiteRelative, 'osx.css\'; |
| element.type = \'text/css\'; |
| parent.appendChild(element); |
| } |
| } |
| } |
| } |
| }); |
| } |
| |
| //]]> |
| //--></script |
| >'; |
| if (true === $g_bRequestSource) |
| { |
| echo |
| '<!--/noindex--><!--googleon: all-->'; |
| } |
| echo |
| '</body |
| ></html>'; |
| } |
| |
| |
| else |
| { |
| |
| if (is_file($g_sResponsePath)) |
| { |
| |
| if (true |
| && (true === $g_bAgentApple) |
| && (false |
| || ('.asc' === substr($g_sResponsePath, -4)) |
| || ('.txt' === substr($g_sResponsePath, -4)) |
| ) |
| ) |
| { |
| |
| gHtml($g_sResponsePath); |
| } |
| |
| |
| else if ('.url' === substr($g_sResponsePath, -4)) |
| { |
| |
| preg_match('/URL=([^\s]+)/', file_get_contents($g_sResponsePath), $l_a_sMatch); |
| gRedirect($l_a_sMatch[1]); |
| } |
| |
| |
| else |
| { |
| |
| header('Cache-Control: max-age=604800, public'); |
| header('Content-Type: '.gMime($g_sResponsePath)); |
| |
| |
| readfile($g_sResponsePath); |
| } |
| } |
| else |
| { |
| |
| gRedirect(); |
| } |
| } |
| |
| ?> |