Список разделов › phpBBex 2.x (заброшен) › Поддержка 2.x
мож. не правильно выразилсяSumanai:Соединение с БД уже есть, зачем ещё одно?
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Ура successfully';
printf ("<br>");
mysql_select_db("phpbbex2.0.3",$link);
$result = mysql_query("SELECT * FROM phpbb_users, phpbb_posts",$link);
$myrow = mysql_fetch_array($result);
do
{
printf ("%s<br>%s<br><br>",$myrow['username'],$myrow['post_text']);
}
while ($myrow = mysql_fetch_array($result));
mysql_close($link);
$result = mysql_query("SELECT * FROM phpbb_users, phpbb_posts",$link);
Прочти мануал с гуру.vbnm:все же разбросанно по файлам и в голове общей картинки не возникает, что и откуда берётся и куда затем идет
Всё должно работать. Какие расширения не работают?vbnm:для того, чтобы затем пошагово лопатить те расширения, которые почему-то не пашут
это я понимаю, просто привел, как пример азовSumanai:Во- первых, нужно добавить в зависимости БД, во- вторых, использовать стандартные команды для выборки.
Ещё раз- подключаться не нужно, выбирать БД не нужно, всё уже сделано.
Не нужно. Если нет доступа к БД, до расширения дело не дойдёт, форум окочурится раньше.vbnm:,- проверит, имеет ли расширение доступ к БД
В общем объяснение работы расширений- это отдельная статья, было бы время, написал бы.vbnm:вроде эти три параметра должны давать желаемое
/config/services.yml
в arguments:
- этот файл с настройками поясняет, какие зависимости требуются каждому классу в расширении.services:
vendor.extName.listener:
class: vendor\extName\event\listener
arguments:
- @dbal.conn
tags:
- { name: event.listener }
<?php
namespace vendor\extName\event;
class listener
{
// Делаем переменную класса защищённым
protected $db;
// Конструктор, получающий ссылку на экземпляр класса БД
public function __construct(
\phpbb\db\driver\driver_interface $db
) {
// Сохраняем полученный экземпляр в переменную класса
$this->db = $db;
}
static public function getSubscribedEvents()
{
return array(
'core.page_header_after' => 'my_function',
);
}
public function my_function($event)
{
// Здесь доступна наша $this->db, с которой можно делать выборки с синтаксисом движка phpBB.
}
Ах да, оно работает. Просто там заумная настройка, так же нужно включить право доступа, в теме расширения у разработчика всё сказано:vbnm:а не пашет:
дык я не первый день его юзаюSumanai:. Просто там заумная настройка, так же нужно включить право доступа, в теме расширения у разработчика всё сказано:
И безопаснее и более совместим и не требует правок в файлах.vbnm:вообще, как в анекдоте про ишака и обезьяну с этим переходом на Симфони:
- "процесс все тот же, только писанины стало больше" )))
Так этот фаил отвечает только за Ивенты Ядра?Sumanai:/event/listener.php для событий движка или там крон.
Да. Хотя конечно можно наворотить страшную структуру, но большинство располагает там события ядра.vbnm:Так этот фаил отвечает только за Ивенты Ядра?
Он их может заполнять данными. То есть в шаблоне есть {MY_DATA}, а в листенёре определяется её содержимоеvbnm:А Ивенты шаблона он не трогает.
$this->template->assign_vars(array(
'MY_DATA' => $my_data,
));
при этом является еще и классом?vbnm:listener
ну, это то логично, а то нафига все эти танцы под водой, шоп потом не было видно результатов)))Sumanai:Он их может заполнять данными. То есть в шаблоне есть {MY_DATA}, а в листенёре определяется её содержимое
Да, это класс, на что как бы намекает его шапка. Впрочем, в 3.1 почти все файлы php являются классами в своих пространствах имён, только разве что переводы являются plain php.vbnm:при этом является ещё и классом?
Ага. Но это когда нужны свои данные на страницах форума.vbnm:с помощью Лиснера мы проводом операции внутри ядра, а потом выводим через ентот мостик в шаблон, если данные нам нужны публично
Sumanai:array(
'MY_DATA'
Можно использовать любые поддерживаемые движком способы задания переменных шаблона.vbnm:надеюсь тут не обязательно должен быть массив
такс, вот это обязательно быть внутри функции?Sumanai:$this->template->assign_vars(array(
'MY_DATA' => $my_data,
));
public function ляляля()
{
$this->template->assign_vars(array(
'MY_DATA' => $my_data,
));
}
<?php
/**
*
* @package phpBB Extension - qwer
* @copyright (c) 2016 vbnmD
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
namespace vbnm\mycql\event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Event listener
*/
class listener implements EventSubscriberInterface
{
/**
* Assign functions defined in this class to event listeners in the core
*
* @return array
* @static
* @access public
*/
static public function getSubscribedEvents()
{
return array(
);
}
/** @var \phpbb\template\template */
protected $template;
//** @var string phpbb_root_path */
protected $phpbb_root_path;
/**
* Constructor
*/
public function __construct($phpbb_root_path, \phpbb\template\template $template)
{
$this->phpbb_root_path = $phpbb_root_path;
$this->template = $template;
}
}
А как ещё?vbnm:такс, вот это обязательно быть внутри функции?
Нужны ещё файлы конфига для подключение зависимости шаблона.vbnm:что и где в нем писать, чтобы затем вывести через overall_header_navbar_before, ну скажем "Привет!"
Там по моему настроек меньше.vbnm:ну так вроде через СТК все это и делается?
Конфиги не соответствуют слушателю. Зачем так сделал?vbnm:Я это сделал, могу просто сюда в файлы запилит все расширение