Beispiel #1
0
        $condition .= db_quote(' AND ( redirect=?s OR redirect IS NULL) AND object_id=?i', '', 0);
    }
    $sorting = db_sort($params, $sortings, 'timestamp', 'desc');
    if (!empty($group_by)) {
        $group_by = ' GROUP BY ' . $group_by;
    }
    if (!empty($params['items_per_page'])) {
        $params['total_items'] = db_get_field("SELECT COUNT(*) FROM ?:hw_404 ?p WHERE ?p ?p ?p", $join, $condition, $group_by, $sorting);
        $limit = db_paginate($params['page'], $params['items_per_page']);
    }
    $errors = db_get_hash_array("SELECT " . implode(', ', $fields) . " FROM ?:hw_404 ?p WHERE ?p ?p ?p ?p", 'id', $join, $condition, $group_by, $sorting, $limit);
    //generate urls
    if (!empty($_REQUEST['show']) && $_REQUEST['show'] == 'all' && !empty($errors)) {
        foreach ($errors as $key => $error) {
            if ($error['object_id'] > 0) {
                $errors[$key]['redirect'] = fn_hw_404_fixer_generate_url($error['type'], $error['object_id']);
            }
        }
    }
    Registry::get('view')->assign('errors', $errors);
    Registry::get('view')->assign('search', $params);
    #stats
    $hw_404_stats = array();
    $hw_404_stats['total'] = (int) db_get_field('SELECT COUNT(*) FROM ?:hw_404');
    $hw_404_stats['redirected'] = (int) db_get_field('SELECT COUNT(*) FROM ?:hw_404 WHERE (`redirect` IS NOT NULL AND `redirect`!=?s) OR (object_id>0)', '');
    $hw_404_stats['pending'] = $hw_404_stats['total'] - $hw_404_stats['redirected'];
    Registry::get('view')->assign('hw_404_stats', $hw_404_stats);
}
if ($mode == 'update') {
    $error_data = db_get_row('SELECT * FROM ?:hw_404 WHERE id=?i', $_REQUEST['id']);
    Registry::get('view')->assign('error_data', $error_data);
Beispiel #2
0
function fn_hw_404_fixer_before_dispatch()
{
    if (AREA == 'C') {
        if (Registry::get('runtime.controller') == '_no_page') {
            $url = $_SERVER['REDIRECT_URL'];
            //REQUEST_URI
            if (empty($url)) {
                $url = $_SERVER['REQUEST_URI'];
            }
            if (empty($url)) {
                return false;
            }
            //exit if no url
            $redirect = '';
            $redirect_type = 301;
            $data = db_get_row('SELECT * FROM ?:hw_404 WHERE MD5(url)=?s', md5($url));
            if (empty($data)) {
                #insert
                $vars = array();
                $vars['url'] = $url;
                $vars['created'] = TIME;
                $vars['referer'] = !empty($_SERVER['HTTP_REFERER']) ? (string) $_SERVER['HTTP_REFERER'] : '';
                $vars['hits'] = 1;
                $vars['company_id'] = Registry::get('runtime.company_id');
                $vars['url_type'] = strtolower(trim(end(explode('.', $vars['url']))));
                if (!in_array($vars['url_type'], array('html', 'htm', 'php', 'asp', 'aspx', 'jpg', 'png', 'pdf', 'ico', 'txt'))) {
                    $vars['url_type'] = '';
                }
                $vars['redirect_type'] = 301;
                #search in redirects
                $seo_redirects = db_get_field("SHOW TABLES LIKE  '?:seo_redirects'");
                if (!empty($seo_redirects)) {
                    $new_url_data = db_get_row('SELECT * FROM `?:seo_redirects` WHERE `src`=?s', $vars['url']);
                    if (!empty($new_url_data)) {
                        if (!empty($new_url_data['dest'])) {
                            $redirect = $vars['redirect'] = $new_url_data['dest'];
                        } elseif ((int) $new_url_data['object_id'] > 0) {
                            if ($new_url_data['type'] == 'c') {
                                $redirect = $vars['redirect'] = fn_url('categories.view&category_id=' . $new_url_data['object_id'], 'C', 'http');
                            }
                            if ($new_url_data['type'] == 'p') {
                                $redirect = $vars['redirect'] = fn_url('products.view&product_id=' . $new_url_data['object_id'], 'C', 'http');
                            }
                        }
                    }
                }
                db_query("INSERT INTO ?:hw_404 ?e", $vars);
            } else {
                if (empty($data['redirect']) && $data['object_id'] > 0) {
                    $data['redirect'] = fn_hw_404_fixer_generate_url($data['type'], $data['object_id'], $data['lang_code'], 'http');
                }
                $redirect = $data['redirect'];
                $redirect_type = $data['redirect_type'];
                db_query('UPDATE ?:hw_404 SET hits = hits+1 WHERE id=?i', $data['id']);
            }
            #redirect
            if (!empty($redirect)) {
                if (!in_array((int) $redirect_type, array(301, 302))) {
                    $redirect_type = 301;
                }
                //security mesures
                header("Location: {$redirect}", true, $redirect_type);
                exit(0);
            }
        }
    }
}