public static function getDebugInfo($articleId = 0) { global $I18N, $REX; if ($articleId != 0) { self::initArticle($articleId); } if (!OOArticle::isValid(self::$curArticle)) { return ''; } $out = '<div id="seo42-debug">'; $out .= '<h1>---------- SEO42 DEBUG BEGIN ----------<h1>'; // general information $out .= '<h2>General Information</h2>'; $out .= '<table>'; $out .= '<tr><td class="left"><code>REDAXO Version</code></td><td class="right"><code>' . $REX['VERSION'] . '.' . $REX['SUBVERSION'] . '.' . $REX['MINORVERSION'] . '</code></td></tr>'; $out .= '<tr><td class="left"><code>SEO42 Version</code></td><td class="right"><code>' . $REX['ADDON']['version']['seo42'] . '</code></td></tr>'; $out .= '<tr><td class="left"><code>PHP Version</code></td><td class="right"><code>' . phpversion() . '</code></td></tr>'; if (isset($REX['ADDON']['version']['community'])) { $out .= '<tr><td class="left"><code>Community Version</code></td><td class="right"><code>' . $REX['ADDON']['version']['community'] . '</code></td></tr>'; } $out .= '</table>'; // methods $out .= '<h2>Class Methods</h2>'; $out .= '<table>'; $out .= self::getDebugInfoRow('rex_getUrl', array(self::$curArticle->getId())); $out .= self::getDebugInfoRow('seo42::getUrl', array(self::$curArticle->getId())); $out .= self::getDebugInfoRow('seo42::getTrimmedUrl', array(self::$curArticle->getId())); $out .= self::getDebugInfoRow('seo42::getFullUrl', array(self::$curArticle->getId())); $out .= self::getDebugInfoRow('seo42::getTitle'); $out .= self::getDebugInfoRow('seo42::getTitlePart'); $out .= self::getDebugInfoRow('seo42::getDescription'); $out .= self::getDebugInfoRow('seo42::getKeywords'); $out .= self::getDebugInfoRow('seo42::getRobotRules'); $out .= self::getDebugInfoRow('seo42::getCanonicalUrl'); $out .= self::getDebugInfoRow('seo42::getArticleName'); $out .= self::getDebugInfoRow('seo42::isStartArticle'); $out .= self::getDebugInfoRow('seo42::getWebsiteName'); $out .= self::getDebugInfoRow('seo42::getLangCode', array('0')); $out .= self::getDebugInfoRow('seo42::getLangSlug', array('0')); $out .= self::getDebugInfoRow('seo42::getLangName', array('0')); $out .= self::getDebugInfoRow('seo42::getOriginalLangName', array('0')); $out .= self::getDebugInfoRow('seo42::getServerProtocol'); $out .= self::getDebugInfoRow('seo42::getBaseUrl'); $out .= self::getDebugInfoRow('seo42::getServerUrl'); $out .= self::getDebugInfoRow('seo42::getServer'); $out .= self::getDebugInfoRow('seo42::getServerWithSubDir'); $out .= self::getDebugInfoRow('seo42::getServerSubDir'); $out .= self::getDebugInfoRow('seo42::isWwwServerUrl'); $out .= self::getDebugInfoRow('seo42::hasTemplateBaseTag'); $out .= self::getDebugInfoRow('seo42::isSubDirInstall'); $out .= self::getDebugInfoRow('seo42::isMultiLangInstall'); $out .= self::getDebugInfoRow('seo42::getLangCount'); $out .= self::getDebugInfoRow('seo42::getTitleDelimiter'); $out .= self::getDebugInfoRow('seo42::getUrlStart'); $out .= self::getDebugInfoRow('seo42::has404ResponseFlag'); $out .= self::getDebugInfoRow('seo42::getQueryString'); $out .= self::getDebugInfoRow('seo42::getMediaDir'); $out .= self::getDebugInfoRow('seo42::getMediaDirName'); $out .= self::getDebugInfoRow('seo42::getMediaFile', array('image.png')); $out .= self::getDebugInfoRow('seo42::getMediaUrl', array('image.png')); $out .= self::getDebugInfoRow('seo42::getAbsoluteMediaFile', array('image.png')); $out .= self::getDebugInfoRow('seo42::getMediaAddonDir'); $out .= self::getDebugInfoRow('seo42::getLangTags'); $out .= self::getDebugInfoRow('seo42::getHtml'); $out .= self::getDebugInfoRow('seo42::getImageTag', array('image.png', 'rex_mediapool_detail', '150', '100')); $out .= self::getDebugInfoRow('seo42::getImageManagerFile', array('image.png', 'rex_mediapool_detail')); $out .= self::getDebugInfoRow('seo42::getDownloadFile', array('doc.pdf')); $out .= self::getDebugInfoRow('seo42::getUrlString', array("The Hitchhiker's Guide to the Galaxy!")); $out .= self::getDebugInfoRow('seo42::getAnswer'); $out .= '</table>'; // settings $out .= '<h2>Settings</h2>'; $out .= '<pre class="rex-code">'; $out .= seo42_utils::print_r_pretty($REX['ADDON']['seo42']['settings'], true); $out .= '</pre>'; // cached redirects $out .= '<h2>Cached Redirects</h2>'; $out .= '<pre class="rex-code">'; $out .= seo42_utils::print_r_pretty($REX['SEO42_CACHED_REDIRECTS'], true); $out .= '</pre>'; // pathlist $out .= '<h2>Pathlist</h2>'; $pathlistRoot = SEO42_PATHLIST; if (file_exists($pathlistRoot)) { $content = rex_get_file_contents($pathlistRoot); $out .= rex_highlight_string($content, true); } else { $out .= 'File not found: ' . $pathlistRoot; } // .htaccess $out .= '<h2>.htaccess</h2>'; $htaccessRoot = $REX['FRONTEND_PATH'] . '/.htaccess'; if (file_exists($htaccessRoot)) { $content = rex_get_file_contents($htaccessRoot); $out .= rex_highlight_string($content, true); } else { $out .= 'File not found: ' . $htaccessRoot; } $out .= '<h1>---------- SEO42 DEBUG END ----------</h1>'; $out .= '</div>'; $out .= '<style type="text/css"> #seo42-debug h1 { font-size: 16px; margin: 10px 0; } #seo42-debug h2 { margin: 15px 0; font-size: 14px; } #seo42-debug .rex-code { border: 1px solid #F2353A; } #seo42-debug code, #seo42-debug .rex-code { color: #000; background: #FAF9F5; } #seo42-debug table { width: 100%; border-collapse: collapse; border-spacing: 0; background: #FAF9F5; } #seo42-debug table th, #seo42-debug table thead td { font-weight: bold; } #seo42-debug table td, #seo42-debug table th { padding: 12px; border: 1px solid #F2353A; text-align: left; } #seo42-debug table td.left { width: 280px; } </style>'; return $out; }