Страница 4 из 14

Re: Пожелания дополнений Event List

Добавлено: 06.08.2015 8:02
ostridm
в тегах разве можно нарисовать красивые зеленые стрелочки наискосок?
Скрытый текст
это примерно как история о семи перпендикулярных красных линиях, часть из которых зеленые либо прозрачные только с тегами и кодом

Re: Пожелания дополнений Event List

Добавлено: 06.08.2015 8:31
Пчелкин
Скрытый текст
................=
...............=
..............=
.............=
............=
...........=
..........=
.........=
........=
.......=
......=
.....=
....=
...=
Зеленые, зеленые... крокодилы... :lol:

Re: Пожелания дополнений Event List

Добавлено: 06.08.2015 9:07
ostridm
победил, да.

Re: Пожелания дополнений Event List

Добавлено: 06.08.2015 9:59
rxu
ostridm, никакого плана расстановки событий не может быть в природе, т.к. они должны быть там, где они нужны расширениям, а не там, где их поставят.
Запрос ясен, постараюсь сделать PR.

Re: Пожелания дополнений Event List

Добавлено: 06.08.2015 10:07
ostridm
спасибо

Re: Пожелания дополнений Event List

Добавлено: 06.08.2015 11:24
2PiK
Нужны события в php файлах, часть 2:

1. В файле search.php есть событие search_modify_param_before перед созданием sql запроса и его параметров для предопределённых вариантов поиска active_topics, unanswered, unreadposts, newposts, egosearch, нужно событие после этого.
Добавить

Код: Выделить всё

$vars = array('sql', 'search_id', 'show_results', 'l_search_title');
    extract($phpbb_dispatcher->trigger_event('core.search_modify_param_after', compact($vars))); 
перед

Код: Выделить всё

    // show_results should not change after this       
все параметры, которые участвуют в поиске, передаются по ссылке (например при постраничной навигации), если я использую свои параметры, их так же нужно передавать по ссылке, события для этого нет.
Добавить

Код: Выделить всё

    $vars = array('u_search');
    extract($phpbb_dispatcher->trigger_event('core.search_modify_search_link', compact($vars))); 
после

Код: Выделить всё

    $u_search .= ($return_chars != 300) ? '&ch=' . $return_chars : ''; 
2. В файлах /phpbb/search/fulltext_mysql.php, /phpbb/search/fulltext_native.php, /phpbb/search/fulltext_postgres.php в функциях keyword_search, author_search при поиске используется кеширование, в переменную $search_key сохраняется md5 сумма всех параметров поиска, если я использую свои параметры, форум будет выдавать результат только по тем параметрам, которые там были учтены, т.е. мой поиск не будет иметь никакого эффекта, нужно добавить возможность определять свои параметры в этой переменной.
Заменить в 3 файлах, в 2 функциях

Код: Выделить всё

$search_key = md5(implode('#', array( 
на

Код: Выделить всё

        $additional_keys=array();
        $vars = array('additional_keys');
        extract($phpbb_dispatcher->trigger_event('core.соответствующее_имя_события', compact($vars)));
        $search_key = md5(implode('#', array(
            serialize($additional_keys), 
sphinx, в файле /phpbb/search/fulltext_sphinx.php немного по другому, при определённых условиях нужна возможность изменения конфигурационного файла сфинкса (т.е. там, где в адм. разделе генерируется его конфигурационный файл) и передачи ему своих параметров при поиске.
Событие для изменения конфигурационного файла - добавить

Код: Выделить всё

        $vars = array('config_data');
        extract($phpbb_dispatcher->trigger_event('core.search_sphinx_modify_config_data', compact($vars)));
перед

Код: Выделить всё

        $non_unique = array('sql_query_pre' => true, 'sql_attr_uint' => true, 'sql_attr_timestamp' => true, 'sql_attr_str2ordinal' => true, 'sql_attr_bool' => true); 
для передачи своих параметров добавить

Код: Выделить всё

        $additional_filters=array();
        $vars = array('type', 'additional_filters');
        extract($phpbb_dispatcher->trigger_event('core.search_sphinx_keywords_main_query_before', compact($vars)));
        if($additional_filters)
        {
            foreach($additional_filters as $field => $value)
            {
                $this->sphinx->SetFilter($field, array($value));
            }
        } 
перед

Код: Выделить всё

        $search_query_prefix = ''; 

Re: Пожелания дополнений Event List

Добавлено: 06.08.2015 13:11
2PiK
Товарищ Sheer, очень большая просьба не править текст сообщения без надобности, код был в бб-кодах, и под спойлерами, зачем нужно менять конфиг на конфигурационный, объединять текст без использования запятых, вы делаете из меня неграмотного человека :cry:

Re: Пожелания дополнений Event List

Добавлено: 06.08.2015 13:33
Sheer
Товарищ 2PiK, спойлеры убирал не я, хотя согласен, что они там ни к чему. Большая просьба использовать bb-код

Код: Выделить всё

[/b] при размещении php-кода. Использовать конструкции
[icode]Найти - Добавить после - Добавить перед - Заменить на[/icode], как это было принято в стандарте MODX.
[quote="2PiK"][post]468295[/post] товарищ Sheer[/quote]
[off]Предложения начинаются с заглавной, будьте грамотны.[/off]

Re: Пожелания дополнений Event List

Добавлено: 06.08.2015 13:41
2PiK
Вас понял, товарищ Sheer.
Только в первом случае не
нужно событие.
После этого добавить
а
нужно событие после этого.
Добавить

Re: Пожелания дополнений Event List

Добавлено: 06.08.2015 13:52
Sheer
Fix

Re: Пожелания дополнений Event List

Добавлено: 08.08.2015 20:34
rxu
ostridm писал(а): от тут viewforum_body.html
https://tracker.phpbb.com/browse/PHPBB3-14080
https://github.com/phpbb/phpbb/pull/3820

Re: Пожелания дополнений Event List

Добавлено: 08.08.2015 21:30
rxu
2PiK писал(а): // show_results should not change after this 
а может, после $found_more_search_matches = false; нормально будет?

Re: Пожелания дополнений Event List

Добавлено: 08.08.2015 21:48
rxu
ostridm писал(а): $sort_by_sql , $sort_key
Надо уточнить - sort_key, или всё-таки s_sort_key, как в core.search_get_posts_data?

Re: Пожелания дополнений Event List

Добавлено: 08.08.2015 22:15
ostridm
$sort_by_sql
$sort_key
$sort_dir

мне нужно иметь возможность исправить ORDER BY clause
$sql .= ' ORDER BY ' . $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');

Код: Выделить всё

	
	
			/**
			* Event to modify the SQL query before the topic data is retrieved
			*
			* @event core.search_get_topic_data
			* @var	string	sql_select		The SQL SELECT string used by search to get topic data
			* @var	string	sql_from		The SQL FROM string used by search to get topic data
			* @var	string	sql_where		The SQL WHERE string used by search to get topic data
			* @var	int		total_match_count	The total number of search matches
			* @since 3.1.0-a1
			* @changed 3.1.0-RC5 Added total_match_count
			*/
			$vars = array('sql_select', 'sql_from', 'sql_where', 'total_match_count');
			extract($phpbb_dispatcher->trigger_event('core.search_get_topic_data', compact($vars)));

			$sql = "SELECT $sql_select
				FROM $sql_from
				WHERE $sql_where";
			$sql .= ' ORDER BY ' . $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');	
	

Re: Пожелания дополнений Event List

Добавлено: 10.08.2015 23:18
rxu
ostridm писал(а): search.php
два события, цель - модификация sql запроса а именно order by clause
2PiK писал(а): Нужны события в php файлах, часть 2:
Из четырех запросов два события фактически дублировались, одно заменялось добавлением новых переменных в старое. В итоге 2 новых добавляем, 1 старое дополняем.

https://tracker.phpbb.com/browse/PHPBB3-14088
https://github.com/phpbb/phpbb/pull/3824