Эксперт
Join Date: Oct 2007
Location: Moscow
Posts: 558
Версия vB: 5.x.x
Пол: ![Мужской](images/misc/male.gif)
Reputation:
Expert 1283
Репутация в разделе: 1162
|
Как вставить события в чат vBShout Pro
0
За вывод отвечает переменная: $upcomingevents
Формируется она в index.php в строках с 170 по 432 (если не ошибаюсь)
ее код
Оффтоп
PHP Code:
// ### TODAY'S EVENTS ################################################# if ($vbulletin->options['showevents']) { require_once(DIR . '/includes/functions_calendar.php');
$future = gmdate('n-j-Y' , TIMENOW + 86400 + 86400 * $vbulletin->options['showevents']);
if (!is_array($vbulletin->eventcache) OR $future != $vbulletin->eventcache['date']) { // Need to update! $eventstore = build_events(); DEVDEBUG('Updated Events'); } else { $eventstore = $vbulletin->eventcache; }
unset($eventstore['date']); $events = array(); $eventcount = 0; $holiday_calendarid = 0;
foreach ($eventstore AS $eventid => $eventinfo) { $offset = $eventinfo['dst'] ? $vbulletin->userinfo['timezoneoffset'] : $vbulletin->userinfo['tzoffset']; $eventstore["$eventid"]['dateline_from_user'] = $eventinfo['dateline_from_user'] = $eventinfo['dateline_from'] + $offset * 3600; $eventstore["$eventid"]['dateline_to_user'] = $eventinfo['dateline_to_user'] = $eventinfo['dateline_to'] + $offset * 3600; $gettime = TIMENOW - $vbulletin->options['hourdiff']; $iterations = 0; $todaydate = getdate($gettime);
if (!$eventinfo['singleday'] AND !$eventinfo['recurring'] AND $eventinfo['dateline_from_user'] < gmmktime(0, 0, 0, $todaydate['mon'], $todaydate['mday'], $todaydate['year'])) { $sub = -3; } else if ($eventinfo['holidayid']) { $sub = -2; } else if ($eventinfo['singleday']) { $sub = -1; } else { $sub = $eventinfo['dateline_from_user'] - (86400 * (intval($eventinfo['dateline_from_user'] / 86400))); }
if ($vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays'])) { if ($eventinfo['holidayid'] AND $vbulletin->options['showholidays']) { if (!$holiday_calendarid) { $holiday_calendarid = -1; // stop this loop from running again in the future if (is_array($eventinfo['holiday_calendarids'])) { foreach ($eventinfo['holiday_calendarids'] AS $potential_holiday_calendarid) { if ($vbulletin->userinfo['calendarpermissions']["$potential_holiday_calendarid"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar']) { $holiday_calendarid = $potential_holiday_calendarid; break; } } } }
if ($holiday_calendarid < 0) { continue; }
$eventstore["$eventid"]['calendarid'] = $holiday_calendarid; $eventinfo['calendarid'] = $holiday_calendarid; }
if ($eventinfo['userid'] == $vbulletin->userinfo['userid'] OR $vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewothersevent'] OR ($eventinfo['holidayid'] AND $vbulletin->options['showholidays'])) { if (!$eventinfo['recurring'] AND !$vbulletin->options['showeventtype'] AND !$eventinfo['singleday'] AND cache_event_info($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year'])) { $events["$eventid"][] = $gettime . "_$sub"; } else { while ($iterations < $vbulletin->options['showevents']) { $addcache = false;
$todaydate = getdate($gettime); if ($eventinfo['holidayid'] AND $eventinfo['recurring'] == 6) { if ($eventinfo['recuroption'] == "$todaydate[mon]|$todaydate[mday]") { $addcache = true; } } else if (cache_event_info($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year'])) { $addcache = true; }
if ($addcache) { if (!$vbulletin->options['showeventtype']) { $events["$eventid"][] = $gettime . "_$sub"; } else { $events["$gettime"][] = $eventid; } $eventcount++; }
$iterations++; $gettime += 86400; } } } } }
if (!empty($events)) { if ($vbulletin->options['showeventtype']) { ksort($events, SORT_NUMERIC); } else { function groupbyevent($a, $b) { if ($a[0] == $b[0]) { return 0; } else { $values1 = explode('_', $a[0]); $values2 = explode('_', $b[0]); if ($values1[0] != $values2[0]) { return ($values1[0] < $values2[0]) ? -1 : 1; } else { // Same day events. Check the event start time to order them properly (compare number of seconds from 00:00) return ($values1[1] < $values2[1]) ? -1 : 1; } } } uasort($events, 'groupbyevent'); // this crazy code is to remove $sub added above that ensures a event maintains its position after the sort // if associative values are the same foreach($events AS $eventid => $times) { foreach ($times AS $key => $time) { $events["$eventid"]["$key"] = intval($time); } } }
$upcomingevents = ''; foreach($events AS $index => $value) { $pastevent = 0; $pastcount = 0;
$comma = $eventdates = $daysevents = ''; if (!$vbulletin->options['showeventtype']) { // Group by Event // $index = $eventid $eventinfo = $eventstore["$index"]; if (empty($eventinfo['recurring']) AND empty($eventinfo['singleday'])) { // ranged event -- show it from its real start and real end date (vbgmdate) $fromdate = vbdate($vbulletin->options['dateformat'], $eventinfo['dateline_from_user'], false, true, false, true); $todate = vbdate($vbulletin->options['dateformat'], $eventinfo['dateline_to_user'], false, true, false, true); if ($fromdate != $todate) { $eventdates = construct_phrase($vbphrase['event_x_to_y'], $fromdate, $todate); } else { $eventdates = vbdate($vbulletin->options['dateformat'], $eventinfo['dateline_from_user'], false, true, false, true); } $day = vbdate('Y-n-j', $eventinfo['dateline_from_user'], false, false); } else { unset($day); foreach($value AS $key => $dateline) { if (($dateline - 86400) == $pastevent AND !$eventinfo['holidayid']) { $pastevent = $dateline; $pastcount++; continue; } else { if ($pastcount) { $eventdates = construct_phrase($vbphrase['event_x_to_y'], $eventdates, vbdate($vbulletin->options['dateformat'], $pastevent, false, true, false)); } $pastcount = 0; $pastevent = $dateline; } if (!$day) { $day = vbdate('Y-n-j', $dateline, false, false, false); } $eventdates .= $comma . vbdate($vbulletin->options['dateformat'], $dateline, false, true, false); $comma = ', '; } if ($pastcount) { $eventdates = construct_phrase($vbphrase['event_x_to_y'], $eventdates, vbdate($vbulletin->options['dateformat'], $pastevent, false, true, false)); } }
if ($eventinfo['holidayid']) { $callink = '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&day=$day&c=$eventinfo[calendarid]\">" . $vbphrase['holiday' . $eventinfo['holidayid'] . '_title'] . "</a>"; } else { $callink = '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&day=$day&e=$eventinfo[eventid]&c=$eventinfo[calendarid]\">$eventinfo[title]</a>"; } } else { // Group by Date $eventdate = vbdate($vbulletin->options['dateformat'], $index, false, true, false);
$day = vbdate('Y-n-j', $index, false, false, false); foreach($value AS $key => $eventid) { $eventinfo = $eventstore["$eventid"]; if ($eventinfo['holidayid']) { $daysevents .= $comma . '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&day=$day&c=$eventinfo[calendarid]\">" . $vbphrase['holiday' . $eventinfo['holidayid'] . '_title'] . "</a>"; } else { $daysevents .= $comma . '<a href="calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=getinfo&day=$day&e=$eventinfo[eventid]&c=$eventinfo[calendarid]\">$eventinfo[title]</a>"; } $comma = ', '; } }
($hook = vBulletinHook::fetch_hook('forumhome_event')) ? eval($hook) : false; eval('$upcomingevents .= "' . fetch_template('forumhome_event') . '";'); } // memory saving unset($events, $eventstore); } $show['upcomingevents'] = iif ($upcomingevents, true, false); $show['todaysevents'] = iif ($vbulletin->options['showevents'] == 1, true, false); } else { $show['upcomingevents'] = false; }
Пробовал вставлять в шаблон чата inferno_shoutbox_box не канает.
Пробовал добавлять в infernoshout.php в $globaltemplates = array(
forumhome_event
его код:
PHP Code:
<div> <if condition="!$vboptions['showeventtype']"> $callink: $eventdates <else /> $eventdate: $daysevents </if> </div>
Тоже нифига.
Как вставить события в чат vBShout Pro 2.5.2 Rus?
Лишний запрос не хочу лепить. Т.к внизу форума вообще не нужны события. Теоретически и практически хочется перенести всё в чат.
|