Портал на AJAX 1.0.0

Добавляет главную страницу-портал с новыми раздачами.

  1. Exile
    Совместимость:
    не проверялся на совместимость
    Изменения в БД:
    требуются
    Автор:
    frost444
    Общественное достояние:
    да
    Описание: добавляет главную страницу-портал с новыми раздачами.

    Возможности:
    • Вывод последних раздач из определенных разделов
    • AJAX-навигация с заменой хеша адресной строки
    • Минимальная нагрузка из-за отдельного кэша
    • Поиск по тексту происходит уже по кэшу
    Инструкция по установке:
    PHP:
    Автор мода: frost444

    //-----[Обновления]-----\\

    |--(00.00.0000)
       1) измененный код: ---
       2) ---
       info: (1) ---
     
    \\-----[Обновления]-----//

    ####[ОТКРЫТЬ]----- config.php

    $bb_cfg['portal_relizi'] = array(
      'on'        => true,
      'on_navi'   => true,
      'on_news'   => true,
      'cache'     => 10,
      'cat_cache' => 24,
      'index_cache' => 20,
      'index_limit' => 20,
    );

    ####[СОХРАНИТЬ_ФАЙЛ]####

    ####[ОТКРЫТЬ]----- config.php
    -----[добавить в конец]-----

    $lang['PORTAL'] = 'Портал';
    $lang['PORTAL_M'] = 'портал';

    ####[СОХРАНИТЬ_ФАЙЛ]####

    ####[ОТКРЫТЬ]----- common.php
    -----[найти]-----

                        case 'xcache':
                            if (!isset($this->obj[$cache_name]))

    -----[добавить ниже]-----

                        case 'quick':
                            if (!isset($this->obj[$cache_name]) && !isset($this->obj[$cache_dir]))
                            {
                                $this->obj[$cache_name] = new cache_quick($this->cfg['db_dir'] . $cache_name .'/' . $cache_dir .'/');
                            }
                            $this->ref[$cache_name] =& $this->obj[$cache_name];
                            break;
                          
    -----[найти]-----

    /**
    * Datastore
    */
    class datastore_common

    -----[добавить выше]-----

    class cache_quick extends cache_common
    {
        var $used   = true;
        var $engine = 'Quickfilecache';
        var $dir    = null;

        function cache_quick ($dir)
        {
            $this->dir = $dir;
            $this->dbg_enabled = sql_dbg_enabled();
        }

        function get ($name)
        {
            $filename = $this->dir . clean_filename($name) . '.php';

            $this->cur_query = "cache->set('$name')";
            $this->debug('start');

            if(file_exists($filename))
            {
                require($filename);
            }

            $this->debug('stop');
            $this->cur_query = null;

            return (!empty($quickcache)) ? $quickcache : false;
        }

        function set ($name, $value)
        {
            if (!function_exists('var_export'))
            {
                return false;
            }

            $this->cur_query = "cache->set('$name')";
            $this->debug('start');

            $filename   = $this->dir . clean_filename($name) . '.php';

            $quickcache = "<?php\n";
            $quickcache .= "if (!defined('BB_ROOT')) die(basename(__FILE__));\n";
            $quickcache .= '$quickcache = ' . var_export($value, true) . ";\n";
            $quickcache .= '?>';

            $this->debug('stop');
            $this->cur_query = null;
            $this->num_queries++;

            return (bool) file_write($quickcache, $filename, false, true, true);
        }
      
        function search ($name, $value)
        {
            $dir = $this->dir;
            $content = scandir($dir);
            $amount_content = sizeof($content);
            $ARRfile = array();
            for($i = '2'; $i < $amount_content; $i++)
            {
                $filename = $content[$i];
                $wayfilename = "$dir$filename";
                require($wayfilename);

                $object = mb_strtolower($value, 'UTF-8');
                $content_file = mb_strtolower($quickcache[$name], 'UTF-8');
              
                $word = explode(" ", $object);
                $matches = array();
                $count_words = preg_match_all('/(?:'.implode('|',$word).')/i', $content_file, $matches);
                $ar_dif = array_diff($word, $matches[0]);
                $result = (count($ar_dif) != 0) ? false: true;

                if($result)
                {
                    $ARRfile[] = substr($filename,0,-4);;
                }
            }

            return (sizeof($ARRfile) == 0) ? false : $ARRfile;
        }

        function rm ($name = '')
        {
            $clear = false;
            if($name)
            {
                $filename = $this->dir . clean_filename($name) . '.php';
                if (file_exists($filename))
                {
                    $clear = (bool) unlink($filename);
                }
            }
            else
            {
                if (is_dir($this->dir))
                {
                    if ($dh = opendir($this->dir))
                    {
                        while (($file = readdir($dh)) !== false)
                        {
                            if ($file != "." && $file != "..")
                            {
                                $filename = $this->dir . $file;

                                unlink($filename);
                                $clear = true;
                            }
                        }
                        closedir($dh);
                    }
                }
            }
            return $clear;
        }
    }

    Изображения

    1. 1.JPG
    2. 2.jpg
    3. 3.jpg
    4. 4.JPG
    5. 5.JPG