Example #1
0
$REX['ADDON']['seo42']['settings'] = array('rewriter' => true, 'url_ending' => '.html', 'hide_langslug' => 0, 'homeurl' => 2, 'homelang' => 0, 'no_double_content_redirects' => SEO42_NO_DOUBLE_CONTENT_REDIRECT_ONE_DOMAIN_ONLY, 'no_double_content_redirects_availability' => SEO42_NO_DOUBLE_CONTENT_REDIRECT_AVAILABILITY_FRONTEND, 'auto_redirects' => SEO42_AUTO_REDIRECT_NONE, 'smart_redirects' => true, 'sync_redirects' => false, 'sync_redirects_only_online' => false, 'redirects_allow_regex' => false, 'redirects_max_age' => 0, 'css_dir' => '/resources/css/', 'js_dir' => '/resources/js/', 'images_dir' => '/resources/images/', 'icons_dir' => '/resources/icons/', 'seo_friendly_image_manager_urls' => true, 'full_urls' => false, 'allow_article_id' => false, 'ignore_root_cats' => false, 'url_whitespace_replace' => '-', 'url_start' => '/', 'url_start_subdir' => './', 'remove_root_cats_for_categories' => array(), 'no_url_for_categories' => array(), 'include_query_params' => true, 'ignore_query_params' => array(), 'force_download_for_filetypes' => array(), 'send_header_x_ua_compatible' => true, 'fix_image_manager_cache_control_header' => false, 'static_sitemap_priority' => true, 'no_robots_txt_auto_disallow' => true, 'robots' => '', 'google_site_verification_filename' => '', 'robots_follow_flag' => 'follow', 'robots_archive_flag' => 'noarchive', 'title_delimiter' => '-', 'seopage' => true, 'title_preview' => true, 'no_prefix_checkbox' => false, 'custom_canonical_url' => false, 'noindex_checkbox' => false, 'urlpage' => true, 'all_url_types' => true, 'pagerank_checker' => true, 'redirects' => true, 'redirects_compact_view' => false, 'one_page_mode' => false, 'pagerank_checker_unlock' => false, 'global_special_chars' => '', 'global_special_chars_rewrite' => '', 'urlencode_whitespace_replace' => '_', 'urlencode_lowercase' => false, 'lang' => array(0 => array('code' => 'de', 'original_name' => 'deutsch', 'rewrite_mode' => SEO42_REWRITEMODE_SPECIAL_CHARS, 'special_chars' => 'Ä|ä|Ö|ö|Ü|ü|ß|&', 'special_chars_rewrite' => 'Ae|ae|Oe|oe|Ue|ue|ss|und', 'inherit_from_clang' => 0)));
// overwrite default settings with user settings
seo42_utils::includeSettingsFile();
// include cached redirects
seo42_utils::includeRedirectsFile();
// pre init seo42 vars
seo42::init();
// fix for iis webserver: set request uri manually if not available
seo42_utils::requestUriFix();
// do redirects
seo42_utils::noDoubleContentRedirect();
if (!$REX['REDAXO']) {
    seo42_utils::redirect();
}
// check for expired redirects
if (seo42_utils::redirectsDoExpire()) {
    seo42_utils::checkExpiredRedirects();
}
// init
if (!$REX['SETUP']) {
    // auto mod rewrite, but not for redaxo system page
    if ($REX['REDAXO'] && rex_request('page') == 'specials') {
        // don't touch mod rewrite var
    } else {
        if ($REX['ADDON']['seo42']['settings']['rewriter']) {
            $REX['MOD_REWRITE'] = true;
        } else {
            $REX['MOD_REWRITE'] = false;
        }
    }
    // init seo42
Example #2
0
 if ($func == 'edit') {
     $formLabel = $I18N->msg('seo42_redirect_redirect_edit');
 } elseif ($func == 'add') {
     $formLabel = $I18N->msg('seo42_redirect_redirect_add');
 }
 $form = rex_form::factory($REX['TABLE_PREFIX'] . 'redirects', $formLabel, 'id=' . $redirect_id);
 $form->addErrorMessage(REX_FORM_ERROR_VIOLATE_UNIQUE_KEY, $I18N->msg('seo42_redirect_redirect_exists'));
 // source url
 $field =& $form->addTextField('source_url');
 $field->setLabel($I18N->msg('seo42_redirect_source_url'));
 $field->setAttribute('id', 'source-url');
 // target url
 $field =& $form->addTextField('target_url');
 $field->setLabel($I18N->msg('seo42_redirect_target_url'));
 $field->setAttribute('id', 'target-url');
 if (seo42_utils::redirectsDoExpire() && $func == 'edit') {
     $field =& $form->addReadOnlyField('create_date');
     $field->setLabel($I18N->msg('seo42_redirect_create_date'));
     $field =& $form->addTextField('expire_date');
     $field->setLabel($I18N->msg('seo42_redirect_expire_date'));
 }
 if ($func == 'edit') {
     $form->addParam('redirect_id', $redirect_id);
 } elseif ($func == 'add') {
     // do nothing
 }
 // sort params to keep sort settings of user in list mode
 if (rex_request('sort') != '') {
     $form->addParam('sort', rex_request('sort'));
 }
 if (rex_request('sorttype') != '') {
 public static function syncRedirects()
 {
     global $REX, $SEO42_IDS, $SEO42_IDS_CLONE, $SEO42_URLS, $SEO42_URLS_CLONE;
     $newRedirects = array();
     seo42_generate_pathlist(array());
     // normal urls with existing article_id
     foreach ($SEO42_IDS as $id => $value) {
         if (isset($SEO42_IDS_CLONE[$id])) {
             foreach ($REX['CLANG'] as $clangId => $clangName) {
                 $oldUrl = '/' . $SEO42_IDS_CLONE[$id][$clangId]['url'];
                 $newUrl = '/' . $SEO42_IDS[$id][$clangId]['url'];
                 if ($oldUrl !== $newUrl) {
                     if ($oldUrl == '/' || $oldUrl == '' || $newUrl == '' || $oldUrl == $newUrl) {
                         // do nothing
                     } else {
                         $article = OOArticle::getArticleById($id, $clangId);
                         if (is_object($article)) {
                             $onlyOnline = $REX['ADDON']['seo42']['settings']['sync_redirects_only_online'];
                             if (!$onlyOnline || $onlyOnline && $article->isOnline()) {
                                 $newRedirects[$oldUrl] = $newUrl;
                             }
                         }
                     }
                 }
             }
         }
     }
     // userdef urls
     $userDefOldUrls = self::getUserDefUrls($SEO42_URLS_CLONE);
     if (isset($userDefOldUrls) && is_array($userDefOldUrls) && count($userDefOldUrls) > 0) {
         // include pathlist manually because at this point userdef urls are missing in $SEO42_URLS array
         if (file_exists(SEO42_PATHLIST)) {
             unset($SEO42_URLS);
             unset($SEO42_IDS);
             include SEO42_PATHLIST;
         }
         $userDefNewUrls = self::getUserDefUrls($SEO42_URLS);
         foreach ($userDefNewUrls as $id => $data) {
             if (isset($userDefOldUrls[$id])) {
                 $oldUrl = '/' . $userDefOldUrls[$id]['url'];
                 $newUrl = '/' . $userDefNewUrls[$id]['url'];
                 if ($oldUrl !== $newUrl) {
                     if ($oldUrl == '/' || $oldUrl == '' || $newUrl == '' || $oldUrl == $newUrl) {
                         // do nothing
                     } else {
                         $article = OOArticle::getArticleById($data['article_id'], $data['clang']);
                         if (is_object($article)) {
                             $onlyOnline = $REX['ADDON']['seo42']['settings']['sync_redirects_only_online'];
                             if (!isset($newRedirects[$oldUrl])) {
                                 if (!$onlyOnline || $onlyOnline && $article->isOnline()) {
                                     $newRedirects[$oldUrl] = $newUrl;
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     if (count($newRedirects) > 0) {
         foreach ($newRedirects as $oldUrl => $newUrl) {
             // check for redirects loop
             $sql = rex_sql::factory();
             $sql->setDebug(false);
             $sql->setQuery("SELECT * FROM `" . $REX['TABLE_PREFIX'] . "redirects` WHERE source_url LIKE '" . self::sqlLike($newUrl) . "' ESCAPE '|'");
             if ($sql->getRows() > 0) {
                 // delete existing redirect to avoid loop
                 $sql2 = rex_sql::factory();
                 $sql2->setDebug(false);
                 $sql2->setQuery("DELETE FROM `" . $REX['TABLE_PREFIX'] . "redirects` WHERE source_url LIKE '" . self::sqlLike($newUrl) . "' ESCAPE '|'");
             } else {
                 $maxAge = intval($REX['ADDON']['seo42']['settings']['redirects_max_age']);
                 $createDate = self::getDate();
                 $expireDate = self::getDate($maxAge);
                 if (!seo42_utils::redirectsDoExpire()) {
                     $expireDate = 0;
                 }
                 // check if redirect already exists
                 $sql2 = rex_sql::factory();
                 $sql2->setDebug(false);
                 $sql2->setQuery("SELECT * FROM `" . $REX['TABLE_PREFIX'] . "redirects` WHERE source_url LIKE '" . self::sqlLike($oldUrl) . "' ESCAPE '|'");
                 if ($sql2->getRows() > 0) {
                     // update existing redirect
                     $sql3 = rex_sql::factory();
                     $sql3->setDebug(false);
                     $sql3->setQuery('UPDATE `' . $REX['TABLE_PREFIX'] . 'redirects` SET source_url = "' . $oldUrl . '", target_url = "' . $newUrl . '", create_date = "' . $createDate . '", expire_date = "' . $expireDate . '" WHERE id = ' . $sql2->getValue('id'));
                 } else {
                     // add new redirect
                     $sql3 = rex_sql::factory();
                     $sql3->setDebug(false);
                     $sql3->setQuery('INSERT INTO `' . $REX['TABLE_PREFIX'] . 'redirects` (source_url, target_url, create_date, expire_date) VALUES ("' . $oldUrl . '", "' . $newUrl . '", "' . $createDate . '", "' . $expireDate . '")');
                 }
             }
         }
         // update cached redirects
         self::updateRedirectsFile(false);
     }
 }