Trotor Posted October 10, 2013 Share Posted October 10, 2013 Вывел некоторую информацию с базы данных на форум, с таблицы ibf_members, а именно с ячейки restrict_post (информация о том находиться пользователь на премодерации или нет).Но как сделать что бы эта инфа отображалась нормальной датой? Поставил так: {$member['restrict_post']} Link to comment Share on other sites More sharing options...
Bot Posted October 10, 2013 Share Posted October 10, 2013 Обратите внимание По указанному вами в профиле "Board url" находится не IP.Board, либо модифицированный пиратский скрипт с удаленными копирайтами. Если вы указали неверный URL, пожауйста, поправьте его, потому что он скорее всего потребуется при диагностике вашей проблемы. Нелицензионные скрипты не приветствуются, т.к. зачастую именно некорректное "нуление" и является причиной проблем в них. Link to comment Share on other sites More sharing options...
Dmitriy427 Posted October 10, 2013 Share Posted October 10, 2013 Если там unix timestamp, то:{parse date="$member['restrict_post']" format="short2" relative="true"}https://www.invisionpower.com/support/guides/_/advanced-and-developers/application/using-skin-templates-r154 Link to comment Share on other sites More sharing options...
Trotor Posted October 10, 2013 Author Share Posted October 10, 2013 @Dmitriy427, А как вывести двойные значения, то есть время когда пользователя отправили на модерацию и время окончания модерации. Link to comment Share on other sites More sharing options...
Dmitriy427 Posted October 10, 2013 Share Posted October 10, 2013 Если вам нужно время, а не только дата, то используйте format="long" или format="joined". По дате отправки на модерацию не подскажу, она вроди бы никуда не пишется. Если бы был фиксированный интервал, можно было бы включить математику, а с произвольным можно только добавить поле в таблицу и дописать обработчик modcp. 1 Link to comment Share on other sites More sharing options...
Trotor Posted October 10, 2013 Author Share Posted October 10, 2013 По дате отправки на модерацию не подскажу, она вроди бы никуда не пишетсяЕсть, вот так в ячейке restrict_post она отображенна:1381411368:1381447368:10:h Link to comment Share on other sites More sharing options...
Dmitriy427 Posted October 10, 2013 Share Posted October 10, 2013 Ну тогда:<php> $dates = explode( ':', $member['restrict_post'] ); $this->date_start = $dates[0]; $this->date_finish = $dates[1]; </php> {parse date="$this->date_start" format="joined" relative="true"} - {parse date="$this->date_finish" format="joined" relative="true"} 1 Link to comment Share on other sites More sharing options...
newbie Posted October 10, 2013 Share Posted October 10, 2013 Если юзеру запрещают совсем постить, то значение будет равно 1, если на опред. срок, то запись будет такой Начало:Окончание:На сколько:Час_или_день Добавьте$restrict = IPSMember::processBanEntry( $member['restrict_post'] );Далее используйте с учетом того, что написал Dmitriy427:$restrict['date_start']$restrict['date_end']$restrict['timespan']$restrict['unit'] Пример: // Получаем данные об юзере, который находится на премодерации. Остальные нам не интересны. // Это Вы уже сделали // ....................... // Формируем сообщение в зависимости от типа ограничения if ( $member['restrict_post'] == 1 ) { $message = 'Пользователю запретили писать сообщения на форуме навсегда'; } else { $restrict = IPSMember::processBanEntry( $member['restrict_post'] ); $start = $this->registry->getClass('class_localization')->getDate( $restrict['date_start'], 'LONG', 1 ); $end = $this->registry->getClass('class_localization')->getDate( $restrict['date_end'], 'LONG', 1 ); $count = $restrict['timespan']; $unit = ( $restrict['unit'] == 'd' ) ? 'дней': 'часов'; $message = "Пользователю запретили писать сообщения на форуме на {$count} {$unit} с {$start} по {$end}"; } 2 Link to comment Share on other sites More sharing options...
Trotor Posted October 10, 2013 Author Share Posted October 10, 2013 Ну тогда:Получилось. Спасибо. ДобавьтеСюда - {parse date="$this->date_start" format="joined" relative="true"} - {parse date="$this->date_finish" format="joined" relative="true"} ? Далее используйте с учетом того, что написал Dmitriy427:А это куда поместить? Link to comment Share on other sites More sharing options...
newbie Posted October 11, 2013 Share Posted October 11, 2013 Строку добавить в свой код, где Вы получали данные о юзере. А это куда поместить? Далее используйте с учетом того, что написал Dmitriy427:$restrict['date_start']$restrict['date_end']$restrict['timespan']$restrict['unit']Дата начала {parse date="$restrict['date_start']" format="joined" relative="true"}Дата окончания {parse date="$restrict['date_end']" format="joined" relative="true"}Срок {$restrict['timespan']}Часы или дни<if test="$restrict['unit']"=='d'>дней<else />часов</if> 1 Link to comment Share on other sites More sharing options...
Trotor Posted October 11, 2013 Author Share Posted October 11, 2013 (edited) @newbie, Я совсем запутался. :)Напишите пожалуйста, как это всё должно выглядеть в шаблоне. Edited October 11, 2013 by Haktar Link to comment Share on other sites More sharing options...
newbie Posted October 11, 2013 Share Posted October 11, 2013 Давайте покажу на примере. Добавим информацию в профиль юзера.Для этого откроем шаблон profileModern (группа Profiles) Данные об ограничении там уже есть - $member['restrict_post'] В начало шаблона добавляем<php> if ( $member['restrict_post'] ) { if ( $member['restrict_post'] == 1 ) { $message = 'Пользователю запретили писать сообщения на форуме навсегда'; } else { $restrict = IPSMember::processBanEntry( $member['restrict_post'] ); $start = $this->registry->getClass('class_localization')->getDate( $restrict['date_start'], 'LONG', 1 ); $end = $this->registry->getClass('class_localization')->getDate( $restrict['date_end'], 'LONG', 1 ); $count = $restrict['timespan']; $unit = ( $restrict['unit'] == 'd' ) ? 'дней': 'часов'; $message = "Пользователю запретили писать сообщения на форуме на {$count} {$unit} с {$start} по {$end}"; } } </php> Здесь мы получили данные об ограничениях и сформировали сообщение о сроках. Теперь в любое место можно добавить {$message}Чтобы было как на скрине, я сделал так <if test="$member['restrict_post']"><div class='message error'>{$message}</div><br /></if> 1 Link to comment Share on other sites More sharing options...
Dmitriy427 Posted October 11, 2013 Share Posted October 11, 2013 Теперь в любое место можно добавитьВнутри тегов <php></php>, в начале шаблона, переменные будут изолированы. Т.е. значения присваиваются локально и в любом месте шаблона работать не будут. Ну, у меня не работают, покрайней мере внутри условий и циклов, если не объявлять их как переменные класса. Link to comment Share on other sites More sharing options...
newbie Posted October 11, 2013 Share Posted October 11, 2013 Внутри тегов , в начале шаблона, переменные будут изолированы. Т.е. значения присваиваются локально и в любом месте шаблона работать не будут. Ну, у меня не работают, покрайней мере внутри условий и циклов, если не объявлять их как переменные класса. В шаблоне из примера из циклов только друзья, последние посетители, кастомные поля. Не думаю, что кто-то туда захочет добавить информацию об ограничениях :) Link to comment Share on other sites More sharing options...
Trotor Posted October 12, 2013 Author Share Posted October 12, 2013 @Dmitriy427 и @newbieБольшое спасибо, помогли даже больше чем мне было нужно. Респект за советы. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now