@extends('adminlte::page') @section('title', 'HeroLegend') @section('css') @stop @section('content_header') @stop @section('content')
@if (Session::has('message'))

{{Session::get('message')}}

@endif {{-- Timeline Gantt --}}

 Event Timeline

@php $tlToday = date('Y-m-d'); $tlTotalDays = count($tlDays); $tlMonths = []; foreach ($tlDays as $d) { $m = substr($d, 0, 7); if (!isset($tlMonths[$m])) $tlMonths[$m] = 0; $tlMonths[$m]++; } $tlWeekly = ['EVENT_OPEN_ALL_CAVERN','EVENT_OPEN_ALL_DOJO','EVENT_MULTIPLY_CAVERN','EVENT_MULTIPLY_DOJO','EVENT_MULTIPLY_COF_GEM','EVENT_MULTIPLY_COF_ITEM','EVENT_GOBLIN_SHOP','EVENT_MULTIPLY_TREASURE_LAND','EVENT_SHOP_DISCOUNT','EVENT_USE_HERO_IN_ARENA']; $tlMonthly = ['EVENT_MULTIPLY_EXP','EVENT_MULTIPLY_NORMAL_ITEM','ITEM_DROP_EVENT','EVENT_PURCHASE_PROMOTE']; $tlChain = ['PURCHASE_STAMINA','EVENT_BUY_STAMINA_UNLIMITED','EVENT_MULTIPLY_HEROIC_SOUL_STONE','EVENT_MULTIPLY_HEROIC_ITEM']; $tlServer = ['EVENT_MULTIPLY_HEROIC_ITEM','EVENT_MULTIPLY_HEROIC_SOUL_STONE','EVENT_MULTIPLY_NORMAL_ITEM','EVENT_PURCHASE_PROMOTE','ITEM_DROP_EVENT','ITEM_DROP_HALLOWEEN_EVENT','ITEM_DROP_TRUNGTHU_EVENT']; $tlTrader = ['EVENT_EXCHANGE_ITEM','EVENT_TRADER_DIAMOND','EVENT_TRADER_GOLD']; $tlConfig = ['AUTO_SELL_EVENT_ITEMS','DAILY_REWARD_BONUS','EVENT_PURCHASE_BEGINER','EVENT_PURCHASE_HEROES','EVENT_PURCHASE_ITEMS','EVENT_PURCHASE_PACKAGE','EVENT_PURCHASE_SKIN','EVENT_USE_ADMOB','EVENT_VIP_REWARD','USE_ADDITION_STATS','USE_CHANGE_LOG','USE_CUSTOM_BAN_CHAT','USE_CUSTOM_HERO_ITEM','USE_CUSTOM_KEY_SERVER','USE_CUSTOM_PACKAGE','USE_VALIDATE_CLIENT','EVENT_BEGINER_PURCHASE','EVENT_BEGINER_SPENDER','EVENT_BUY_STAMINA_NEW','EVENT_GROWTH_FUND','EVENT_GROWTH_GEM','EVENT_SUMMON_SOULSTONE']; function tlCat($code, $w,$mo,$ch,$sv,$tr,$cf) { if (in_array($code,$w)) return 'weekly'; if (in_array($code,$mo)) return 'monthly'; if (in_array($code,$ch)) return 'chain'; if (strpos($code,'EVENT_DIAMOND_BUY_')===0) return 'purchase'; if (strpos($code,'EVENT_DIAMOND_SPENDER')===0) return 'spender'; if (strpos($code,'EVENT_G_DIAMOND_')===0) return 'guild'; if (in_array($code,['EVENT_TOP_ARENA','EVENT_TOP_HOL_GUILD'])) return 'top'; if ($code==='EVENT_MULTIPLY_EXP') return 'stamina'; if (strpos($code,'EVENT_ANNOUNCE_')===0) return 'announce'; if (in_array($code,$tr)) return 'trader'; if (in_array($code,$sv)) return 'server'; if (in_array($code,$cf)) return 'config'; return 'other'; } @endphp @if(count($timelineEvents) === 0)

No active or upcoming events.

@else
@foreach($tlMonths as $month => $cnt) @endforeach @foreach($tlDays as $day) @php $dow = date('N', strtotime($day)); $isTd = ($day === $tlToday); $cls = 'tl-dhdr' . ($isTd ? ' tl-today-hdr' : (in_array($dow,[6,7]) ? ' tl-wknd-hdr' : '')); @endphp @endforeach @foreach($timelineEvents as $ev) @php $bDay = date('Y-m-d', $ev['begin_ts']); $eDay = date('Y-m-d', $ev['end_ts']); // Skip events that don't overlap with the timeline range if ($bDay > $tlDays[$tlTotalDays-1] || $eDay < $tlDays[0]) continue; $cat = tlCat($ev['code'], $tlWeekly,$tlMonthly,$tlChain,$tlServer,$tlTrader,$tlConfig); $cb = max($bDay, $tlDays[0]); $ce = min($eDay, $tlDays[$tlTotalDays-1]); $si = array_search($cb, $tlDays); $ei = array_search($ce, $tlDays); if ($si === false || $ei === false) continue; $span = $ei - $si + 1; $pre = $si; $post = $tlTotalDays - $ei - 1; $sc = ($bDay < $tlDays[0]); $ec = ($eDay > $tlDays[$tlTotalDays-1]); $bCls = 'tl-bar tl-c-'.$cat . (!$sc&&!$ec?' b-both':(!$sc?' b-start':(!$ec?' b-end':' b-mid'))); $isAct = (time() >= $ev['begin_ts'] && time() <= $ev['end_ts']); // Compute tags — same as All Events table: [name, label-class, fa-icon] $tlTags = []; $c = $ev['code']; if (in_array($c,$tlWeekly)) $tlTags[] = ['weekly', 'info', 'fa-refresh']; if (strpos($c,'EVENT_DIAMOND_BUY_')===0) $tlTags[] = ['purchase', 'primary', 'fa-shopping-cart']; if (strpos($c,'EVENT_DIAMOND_SPENDER')===0) $tlTags[] = ['spender', 'spender-custom','fa-diamond']; if (strpos($c,'EVENT_G_DIAMOND_')===0) $tlTags[] = ['guild', 'success', 'fa-users']; if ($c==='EVENT_TOP_ARENA') $tlTags[] = ['top arena', 'danger', 'fa-trophy']; if ($c==='EVENT_TOP_HOL_GUILD') $tlTags[] = ['top guild', 'danger', 'fa-shield']; if (in_array($c,['EVENT_BUY_STAMINA_UNLIMITED','PURCHASE_STAMINA','EVENT_MULTIPLY_EXP'])) $tlTags[] = ['stamina','warning','fa-bolt']; if (strpos($c,'EVENT_ANNOUNCE_')===0) $tlTags[] = ['announce', 'default', 'fa-bullhorn']; if (in_array($c,$tlConfig)) $tlTags[] = ['config', 'default', 'fa-cog']; if (in_array($c,$tlServer)) $tlTags[] = ['server', 'primary', 'fa-server']; if (in_array($c,$tlTrader)) $tlTags[] = ['trader', 'info', 'fa-exchange']; @endphp @foreach($tlDays as $di => $day) @php $dow=date('N',strtotime($day)); $isTd=($day===$tlToday); @endphp @if($di === $si) @elseif($di < $si || $di > $ei) @endif @endforeach @endforeach
Event{{ date('M Y', strtotime($month.'-01')) }}
{{ date('d', strtotime($day)) }}
@foreach($tlTags as $tg) {{ ucwords($tg[0]) }} @endforeach {{ $ev['code'] }} @if($span >= 3){{ $ev['code'] }}@elseif($span==2){{ substr($ev['code'],0,14) }}@else @endif
Full Timeline (custom range)
@endif
@php $weeklyEventsTop = [ 'EVENT_OPEN_ALL_CAVERN', 'EVENT_OPEN_ALL_DOJO', 'EVENT_MULTIPLY_CAVERN', 'EVENT_MULTIPLY_DOJO', 'EVENT_MULTIPLY_COF_GEM', 'EVENT_MULTIPLY_COF_ITEM', 'EVENT_GOBLIN_SHOP', 'EVENT_MULTIPLY_TREASURE_LAND', 'EVENT_SHOP_DISCOUNT', 'EVENT_USE_HERO_IN_ARENA', ]; @endphp {{-- Active Events --}} @if(count($activeEvents) > 0)

Active Events ({{ count($activeEvents) }})

@foreach($activeEvents as $event) @php $days = floor($event['remaining'] / 86400); $hours = floor(($event['remaining'] % 86400) / 3600); $mins = floor(($event['remaining'] % 3600) / 60); $urgency = $event['remaining'] < 86400 ? 'text-red' : ($event['remaining'] < 3*86400 ? 'text-orange' : 'text-green'); @endphp @php $aCode = $event['code']; $aTags = []; if (in_array($aCode, $weeklyEventsTop)) $aTags[] = ['weekly', 'info', 'fa-refresh']; if (strpos($aCode, 'EVENT_DIAMOND_BUY_') === 0) $aTags[] = ['purchase', 'primary', 'fa-shopping-cart']; if (strpos($aCode, 'EVENT_DIAMOND_SPENDER') === 0) $aTags[] = ['spender', 'spender-custom', 'fa-diamond']; if (strpos($aCode, 'EVENT_G_DIAMOND_') === 0) $aTags[] = ['guild', 'success', 'fa-users']; if ($aCode === 'EVENT_TOP_ARENA') $aTags[] = ['top arena', 'danger', 'fa-trophy']; if ($aCode === 'EVENT_TOP_HOL_GUILD') $aTags[] = ['top guild', 'danger', 'fa-shield']; if (in_array($aCode, ['EVENT_BUY_STAMINA_UNLIMITED', 'PURCHASE_STAMINA', 'EVENT_MULTIPLY_EXP'])) $aTags[] = ['stamina', 'warning', 'fa-bolt']; if (strpos($aCode, 'EVENT_ANNOUNCE_') === 0) $aTags[] = ['announce', 'default', 'fa-bullhorn']; $configEvents = ['AUTO_SELL_EVENT_ITEMS','DAILY_REWARD_BONUS','EVENT_PURCHASE_BEGINER','EVENT_PURCHASE_HEROES','EVENT_PURCHASE_ITEMS','EVENT_PURCHASE_PACKAGE','EVENT_PURCHASE_SKIN','EVENT_USE_ADMOB','EVENT_VIP_REWARD','USE_ADDITION_STATS','USE_CHANGE_LOG','USE_CUSTOM_BAN_CHAT','USE_CUSTOM_HERO_ITEM','USE_CUSTOM_KEY_SERVER','USE_CUSTOM_PACKAGE','USE_VALIDATE_CLIENT','EVENT_BEGINER_PURCHASE','EVENT_BEGINER_SPENDER','EVENT_BUY_STAMINA_NEW','EVENT_GROWTH_FUND','EVENT_GROWTH_GEM','EVENT_SUMMON_SOULSTONE']; if (in_array($aCode, $configEvents)) $aTags[] = ['config', 'default', 'fa-cog']; @endphp @endforeach
Event Code Tag Start End Time Remaining Actions
{{ $event['code'] }} @foreach($aTags as $tag) {{ ucwords($tag[0]) }} @endforeach {{ $event['date_begin'] }} {{ $event['date_end'] }} {{ $days }}d {{ $hours }}h {{ $mins }}m Edit
@endif {{-- Upcoming Events --}} @if(count($upcomingEvents) > 0)

Upcoming Events ({{ count($upcomingEvents) }})

@foreach($upcomingEvents as $event) @php $days = floor($event['starts_in'] / 86400); $hours = floor(($event['starts_in'] % 86400) / 3600); $mins = floor(($event['starts_in'] % 3600) / 60); @endphp @php $uCode = $event['code']; $uTags = []; if (in_array($uCode, $weeklyEventsTop)) $uTags[] = ['weekly', 'info', 'fa-refresh']; if (strpos($uCode, 'EVENT_DIAMOND_BUY_') === 0) $uTags[] = ['purchase', 'primary', 'fa-shopping-cart']; if (strpos($uCode, 'EVENT_DIAMOND_SPENDER') === 0) $uTags[] = ['spender', 'spender-custom', 'fa-diamond']; if (strpos($uCode, 'EVENT_G_DIAMOND_') === 0) $uTags[] = ['guild', 'success', 'fa-users']; if ($uCode === 'EVENT_TOP_ARENA') $uTags[] = ['top arena', 'danger', 'fa-trophy']; if ($uCode === 'EVENT_TOP_HOL_GUILD') $uTags[] = ['top guild', 'danger', 'fa-shield']; if (in_array($uCode, ['EVENT_BUY_STAMINA_UNLIMITED', 'PURCHASE_STAMINA', 'EVENT_MULTIPLY_EXP'])) $uTags[] = ['stamina', 'warning', 'fa-bolt']; if (strpos($uCode, 'EVENT_ANNOUNCE_') === 0) $uTags[] = ['announce', 'default', 'fa-bullhorn']; $configEvents = ['AUTO_SELL_EVENT_ITEMS','DAILY_REWARD_BONUS','EVENT_PURCHASE_BEGINER','EVENT_PURCHASE_HEROES','EVENT_PURCHASE_ITEMS','EVENT_PURCHASE_PACKAGE','EVENT_PURCHASE_SKIN','EVENT_USE_ADMOB','EVENT_VIP_REWARD','USE_ADDITION_STATS','USE_CHANGE_LOG','USE_CUSTOM_BAN_CHAT','USE_CUSTOM_HERO_ITEM','USE_CUSTOM_KEY_SERVER','USE_CUSTOM_PACKAGE','USE_VALIDATE_CLIENT','EVENT_BEGINER_PURCHASE','EVENT_BEGINER_SPENDER','EVENT_BUY_STAMINA_NEW','EVENT_GROWTH_FUND','EVENT_GROWTH_GEM','EVENT_SUMMON_SOULSTONE']; if (in_array($uCode, $configEvents)) $uTags[] = ['config', 'default', 'fa-cog']; @endphp @endforeach
Event Code Tag Start End Starts In Actions
{{ $event['code'] }} @foreach($uTags as $tag) {{ ucwords($tag[0]) }} @endforeach {{ $event['date_begin'] }} {{ $event['date_end'] }} {{ $days }}d {{ $hours }}h {{ $mins }}m Edit
@endif {{-- All Events --}}

All Events

@php $weeklyEvents = [ 'EVENT_OPEN_ALL_CAVERN', 'EVENT_OPEN_ALL_DOJO', 'EVENT_MULTIPLY_CAVERN', 'EVENT_MULTIPLY_DOJO', 'EVENT_MULTIPLY_COF_GEM', 'EVENT_MULTIPLY_COF_ITEM', 'EVENT_GOBLIN_SHOP', 'EVENT_MULTIPLY_TREASURE_LAND', 'EVENT_SHOP_DISCOUNT', 'EVENT_USE_HERO_IN_ARENA', ]; @endphp @foreach($event_codes as $event_code) @php $info = $eventStatusMap[$event_code->code] ?? null; $rowClass = ''; if ($info && $info['status'] == 'active') $rowClass = 'success'; elseif ($info && $info['status'] == 'upcoming') $rowClass = 'warning'; $isWeekly = in_array($event_code->code, $weeklyEvents); $code = $event_code->code; $tags = []; if ($isWeekly) $tags[] = ['weekly', 'info', 'fa-refresh']; if (strpos($code, 'EVENT_DIAMOND_BUY_') === 0) $tags[] = ['purchase', 'primary', 'fa-shopping-cart']; if (strpos($code, 'EVENT_DIAMOND_SPENDER') === 0) $tags[] = ['spender', 'spender-custom', 'fa-diamond']; if (strpos($code, 'EVENT_G_DIAMOND_') === 0) $tags[] = ['guild', 'success', 'fa-users']; if ($code === 'EVENT_TOP_ARENA') $tags[] = ['top arena', 'danger', 'fa-trophy']; if ($code === 'EVENT_TOP_HOL_GUILD') $tags[] = ['top guild', 'danger', 'fa-shield']; if (in_array($code, ['EVENT_BUY_STAMINA_UNLIMITED', 'PURCHASE_STAMINA', 'EVENT_MULTIPLY_EXP'])) $tags[] = ['stamina', 'warning', 'fa-bolt']; if (strpos($code, 'EVENT_ANNOUNCE_') === 0) $tags[] = ['announce', 'default', 'fa-bullhorn']; $configEvents = ['AUTO_SELL_EVENT_ITEMS','DAILY_REWARD_BONUS','EVENT_PURCHASE_BEGINER','EVENT_PURCHASE_HEROES','EVENT_PURCHASE_ITEMS','EVENT_PURCHASE_PACKAGE','EVENT_PURCHASE_SKIN','EVENT_USE_ADMOB','EVENT_VIP_REWARD','USE_ADDITION_STATS','USE_CHANGE_LOG','USE_CUSTOM_BAN_CHAT','USE_CUSTOM_HERO_ITEM','USE_CUSTOM_KEY_SERVER','USE_CUSTOM_PACKAGE','USE_VALIDATE_CLIENT','EVENT_BEGINER_PURCHASE','EVENT_BEGINER_SPENDER','EVENT_BUY_STAMINA_NEW','EVENT_GROWTH_FUND','EVENT_GROWTH_GEM','EVENT_SUMMON_SOULSTONE']; if (in_array($code, $configEvents)) $tags[] = ['config', 'default', 'fa-cog']; $serverEvents = ['EVENT_MULTIPLY_HEROIC_ITEM','EVENT_MULTIPLY_HEROIC_SOUL_STONE','EVENT_MULTIPLY_NORMAL_ITEM','EVENT_PURCHASE_PROMOTE','ITEM_DROP_EVENT','ITEM_DROP_HALLOWEEN_EVENT','ITEM_DROP_TRUNGTHU_EVENT']; if (in_array($code, $serverEvents)) $tags[] = ['server', 'primary', 'fa-server']; $traderEvents = ['EVENT_EXCHANGE_ITEM','EVENT_TRADER_DIAMOND','EVENT_TRADER_GOLD']; if (in_array($code, $traderEvents)) $tags[] = ['trader', 'info', 'fa-exchange']; $tagNames = array_column($tags, 0); $noDeleteRewardEvents = ['EVENT_MULTIPLY_COF_ITEM_GEM','EVENT_MULTIPLY_HEROIC_ALL','EVENT_MULTIPLY_POOL','EVENT_OPEN_ALL_DOJO_CAVERN','EVENT_PURCHASE_DIAMOND_BONUS']; $hideDeleteRewards = count(array_intersect($tagNames, ['config', 'stamina', 'server', 'announce'])) > 0 || in_array($code, $noDeleteRewardEvents) || (in_array('weekly', $tagNames) && $code !== 'EVENT_USE_HERO_IN_ARENA'); @endphp @endforeach
Code Tag Status Period Actions
{{$event_code->code}} @foreach($tags as $tag) {{ ucwords($tag[0]) }} @endforeach @if($info && $info['status'] == 'active') @php $days = floor($info['remaining'] / 86400); $hours = floor(($info['remaining'] % 86400) / 3600); $mins = floor(($info['remaining'] % 3600) / 60); @endphp Active {{ $days }}d {{ $hours }}h {{ $mins }}m left @elseif($info && $info['status'] == 'upcoming') @php $days = floor($info['starts_in'] / 86400); $hours = floor(($info['starts_in'] % 86400) / 3600); $mins = floor(($info['starts_in'] % 3600) / 60); @endphp Upcoming in {{ $days }}d {{ $hours }}h {{ $mins }}m @else - @endif @if($info) {{ $info['date_begin'] }} ~ {{ $info['date_end'] }} @endif @if(!$hideDeleteRewards) @if(in_array($event_code->code, $eventsWithRewards)) {!! Form::open(['action' => ['EventController@destroy',$event_code->code], 'method' => 'DELETE', 'data-confirm-message' => trans('labels.confirm_delete'), 'class' => 'inline', ]) !!} {{ Form::hidden('delete_all_rewards','true')}} {{ Form::button(' Delete rewards', ['title'=>'Delete all Rewards','type' => 'submit', 'class' => 'btn btn-warning btn-sm', 'onClick' => 'return window.confirm("Are you sure?")']) }} {!! Form::close() !!} @else @endif @endif
@stop @section('js') @stop