VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Объявление функций переменных и т.д. в отдельных скриптах.
0
Доброго времени суток.
Я с очередным извращенным вопросом. Он постоянно возникал, но раньше я как-то обходил проблему. Но теперь обойти не выходит.
29.kiev.ua/guestbook.php
3.8.7, хак Гостевая книга vBulletin (guestbook_by_hasann v2.2)
проблема в том, что гостевая работает на отдельном файле guestbook.php, который вроде бы и интегрирован в булку, но не все переменные и функции там объявлены. Из-за этого периодически возникают трудности, когда я пытаюсь на гостевую перенести нужный функционал от булки.
Сейчас я пытаюсь добавить на страницу гостевой блоки ближайших событий/дней рождений (как в нижней части главной страницы форума). Блоки добавились, но они пустые (можно посмотреть на тестовой странице, на которой я тренируюсь на кошках 29.kiev.ua/guestbook1.php).
добавил в php кусок из index.php который касался событий и дней рождений. Добавил в шаблон кусок из FORUMHOME где отображаются блоки событий и дней рождений.
уже убрал все проверки опций -- блоки отображаются но пустые. и даже шаблон forumhome_event на странице guestbook1.php не вызывается. скопировал из шапки index.php все объявления переменных, все библиотеки, но блоки все-равно пустые.
Я так понимаю где-то какие-то переменные остаются пустыми из-за чего в шаблон не передаются данные. Подскажите где смотреть, что читать, чтобы это побороть.
jac добавил 14.02.2013 в 14:09
дебагом расковырял что не объявлено $vbulletin->userinfo
Вспомнил, что ранее как раз с userinfo и возникали проблемы.
Подскажите, что надо объявить?
Last edited by jac : 02-14-2013 at 03:09 PM.
Reason: Добавлено сообщение
jac, Если используете "левые" функции то обьявляйте так:
PHP Code:
function name(){ global $vbulletin; echo $vbulletin->userinfo['username']; }
@jac
Знаток
Join Date: Oct 2011
Location: Kyiv
Награды в конкурсах:
Posts: 55
Версия vB: 3.8.x
Reputation:
Knowing 185
Репутация в разделе: 6
0
странная очень картина.
часть переменных нормально объявлена. такие как $vbulletin->userinfo['userid'] или $vbulletin->userinfo['ignorelist']
а другие -- нет. например $vbulletin->userinfo['calendarpermissions'] .
не могу понять в чем дело
@StenLi
На доске почёта Пожизненный блэк
Join Date: Aug 2008
Награды в конкурсах:
Posts: 2,729
Версия vB: 3.6.x
Reputation:
Expert 1991
Репутация в разделе: 742
1
Quote:
Originally Posted by jac
а другие -- нет. например $vbulletin->userinfo['calendarpermissions'] .
А разве calendarpermissions входит в массив данных пользователя? О_О
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,826
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20321
Репутация в разделе: 8468
1
в самом начале скрипта подцепить (паровоз) файл global.php
и будут доступны все глобальные объекты и функции
если нужны функции, которых нет в автоматически подключаемом functions.php, такие файлы функций подключаются отдельно, по мере необходимости
@jac
Знаток
Join Date: Oct 2011
Location: Kyiv
Награды в конкурсах:
Posts: 55
Версия vB: 3.8.x
Reputation:
Knowing 185
Репутация в разделе: 6
0
Quote:
Originally Posted by StenLi
А разве calendarpermissions входит в массив данных пользователя? О_О
ну я это из index.php взял. и в index.php он в DEVDEBUG определен:
а в скрипте аналогичный дебаг возвращает
$eventinfo[calendarid]: 1
calendarpermissions:
calendarpermissions_array:
+естественно ошибка на implode и array_keys поскольку там не объявлен массив
Quote:
Originally Posted by kerk
в самом начале скрипта подцепить (паровоз) файл global.php
и далее $calendarpermissions_array['нужный элемент из массива.']
@jac
Знаток
Join Date: Oct 2011
Location: Kyiv
Награды в конкурсах:
Posts: 55
Версия vB: 3.8.x
Reputation:
Knowing 185
Репутация в разделе: 6
0
Quote:
Originally Posted by StenLi
Т.е. ничего не возвращает?)
ну переменная пустая(или не объявлена), вот он ничего и не возвращает
Quote:
Originally Posted by StenLi
Пробуйте использовать так:
не выйдет. переменная пустая (или не объявлена) я опять получаю ошибку
Code:
Warning: array_keys() [function.array-keys]: The first argument should be an array in [path]/guestbook1.php on line 274
Warning: implode() [function.implode]: Invalid arguments passed in [path]/guestbook1.php on line 274
jac добавил 14.02.2013 в 15:28
проблема не в обработке, проблема в том что переменная пустая (или не объявлена)
на орге вот нашел аналогичную тему, увы без ответа
(как видно из поста выше совет обратить внимание на $eventinfo ничего не даст, потому что $eventinfo как раз объявлена и не пустая)
jac добавил 14.02.2013 в 15:31
и вот на нашем форуме та же проблема без ответа (правда там только начало проблемы до calendarpermissions он не добрался или не написал об этом)
Last edited by jac : 02-14-2013 at 04:31 PM.
Reason: Добавлено сообщение
@StenLi
На доске почёта Пожизненный блэк
Join Date: Aug 2008
Награды в конкурсах:
Posts: 2,729
Версия vB: 3.6.x
Reputation:
Expert 1991
Репутация в разделе: 742
1
Quote:
Originally Posted by jac
не выйдет. переменная пустая (или не объявлена) я опять получаю ошибку
Значение calendarpermissions скорее всего берется из таблицы calendarpermission
Но там:
// query calendar permissions if (!empty($calfiles[THIS_SCRIPT])) { // Only query calendar permissions when accessing the calendar or subscriptions or index.php $cpermscache = array(); $calendarcache = array(); $displayorder = array();
$calendarpermissions = $vbulletin->db->query_read_slave(" SELECT calendarpermission.usergroupid, calendarpermission.calendarpermissions,calendar.calendarid,calendar.title, displayorder FROM " . TABLE_PREFIX . "calendar AS calendar LEFT JOIN " . TABLE_PREFIX . "calendarpermission AS calendarpermission ON (calendarpermission.calendarid = calendar.calendarid AND usergroupid IN (" . implode(', ', $membergroupids) . ")) ORDER BY displayorder ASC "); while ($calendarpermission = $vbulletin->db->fetch_array($calendarpermissions)) { $cpermscache["$calendarpermission[calendarid]"]["$calendarpermission[usergroupid]"] = intval($calendarpermission['calendarpermissions']); $calendarcache["$calendarpermission[calendarid]"] = $calendarpermission['title']; $displayorder["$calendarpermission[calendarid]"] = $calendarpermission['displayorder']; } $vbulletin->db->free_result($calendarpermissions);
// Combine the calendar permissions for all member groups foreach ($cpermscache AS $calendarid => $cpermissions) { $user['calendarpermissions']["$calendarid"] = 0;
if (empty($displayorder["$calendarid"])) { // leave permissions at 0 for calendars that aren't being displayed continue; }
foreach ($membergroupids AS $usergroupid) { if (isset($cpermissions["$usergroupid"])) { $user['calendarpermissions']["$calendarid"] |= $cpermissions["$usergroupid"]; } else { $user['calendarpermissions']["$calendarid"] |= $vbulletin->usergroupcache["$usergroupid"]['calendarpermissions']; } } foreach ($infractiongroupids AS $usergroupid) { if (isset($cpermissions["$usergroupid"])) { $user['calendarpermissions']["$calendarid"] &= $cpermissions["$usergroupid"]; } else { $user['calendarpermissions']["$calendarid"] &= $vbulletin->usergroupcache["$usergroupid"]['calendarpermissions']; } } } }
@jac
Знаток
Join Date: Oct 2011
Location: Kyiv
Награды в конкурсах:
Posts: 55
Версия vB: 3.8.x
Reputation:
Knowing 185
Репутация в разделе: 6
0
хмммм....
бахнул в начало скрипта
Code:
print_r($vbulletin->userinfo);
и вижу в длиннющем выводе
Code:
[calendarpermissions] => 63
пошел я дебажить и искать где она пропадает. О результатах сообщу
jac добавил 14.02.2013 в 16:53
есть.
не знаю как оно работает напрямую в index.php но в контейнере userinfo действительно есть контейнер calendarpermissions. НО! он находится в контейнере permissions!
так что обращаться надо $vbulletin->userinfo['permissions']['calendarpermissions']
Надеюсь это кому-то поможет сэкономить время.
Спасибо StenLi, и kerk, за помощь, ваши советы и вопросы очень помогли
Last edited by jac : 02-14-2013 at 05:54 PM.
Reason: Добавлено сообщение