Phalcon Framework 3.4.5

ErrorException: Undefined offset: 1

/var/www/bet/app/entity/eGameEvents.php (51)
#0unknown
/var/www/bet/app/entity/eGameEvents.php (51)
<?php
 
 
namespace App\Entity;
 
 
use App\Admin\Controllers\absAdminController;
use App\Collections\cEventFull;
use App\Collections\cEventHold;
use Libs\JsonConfigEdit;
use ModEvents\mFsEventTypes;
use ModEvents\mFsGames;
use ModEvents\mTexts;
use Phalcon\Di;
 
class eGameEvents
{
  static protected $_tree  = null;
  static protected $_text  = null;
  protected        $events = array();
  protected        $tree   = array();
  protected        $collection;
  protected        $data   = array();
  protected        $hold   = array();
  protected        $_siteId;
 
  public function __construct($gameId, $siteId = null)
  {
    $this->_siteId = (null !== $siteId) ? $siteId : SITE;
    $di            = Di::getDefault();
    if (null === self::$_text)
      self::$_text = $di->get('eUserCache')->eventTexts();
    $this->collection = new cEventFull($gameId);
    if (null == self::$_tree || !isset(self::$_tree[$this->collection->sport])) {
      $fileName    = $di->get('config')->application->cacheDir . 'event-tree.serial';
      self::$_tree = file_exists($fileName) ? unserialize(file_get_contents($fileName)) : array();
    }
    if (!$this->collection->has('sport')) {
      $this->_build($gameId);
      $this->save();
    }
    if ($this->collection->has($this->_siteId))
      $this->reload();
    else {
      $this->_build($gameId);
      $this->save();
    }
    if ($this->collection->has('tree')) {
      $this->tree = unserialize($this->collection->get('tree'));
    } else {
      $this->buildTree(self::$_tree[$this->collection->sport]);
//      $this->collection->set('tree', serialize($this->tree));
    }
  }
 
  public function updateValue($id, $val)
  {
    $this->reload();
    $this->data[$id] = $val;
    $this->save();
 
    if (array_key_exists($id, $this->hold)) {
      $col             = $this->collection->getHold($this->_siteId);
      unset($this->hold[$id]);
      $col->set(serialize($this->hold));
    }
  }
 
  protected function _build($gameId)
  {
    $game                    = mFsGames::findFirst(array(
                                                     'import_id = :id:',
                                                     'bind' => array( 'id' => $gameId ),
                                                   ));
 
    $this->collection->sport = $game->getSportId();
    $this->data              = $this->makeRand($game);
    $this->_reloadHold();
  }
 
  protected function _reloadHold()
  {
    $col        = $this->collection->getHold($this->_siteId);
    $hold       = $col->get();
    $this->hold = ($hold) ? unserialize($hold) : array();
    foreach ($this->hold as $k => $v) {
      $this->data[$k] = $v;
    }
 
  }
 
  public function reload()
  {
    $this->data = unserialize($this->collection->get($this->_siteId));
    $this->_reloadHold();
  }
 
  public function save()
  {
    $this->collection->set($this->_siteId, serialize($this->data));
  }
 
  protected function makeRand($game)
  {
    /** @var JsonConfigEdit $cfg */
    $cfg = Di::getDefault()->get('site');
    if (false === isset($cfg->cofPercentMin)) {
      $options            = Di::getDefault()->get('cfgSiteOptions');
      $cfg->cofPercentMin = (float)$options['Bets']['cofPercentMin']['default'];
      $cfg->cofPercentMax = (float)$options['Bets']['cofPercentMax']['default'];
      $cfg->save();
    }
    $resp = array();
    $bets = json_decode($game->getBets());
    foreach ($bets as $e => $c) {
      $p        = $c / 100;
      $val      = mt_rand(($c + $p * $cfg->cofPercentMin) * 100, ($c + $p * $cfg->cofPercentMax) * 100) / 100;
      $resp[$e] = (1 < $val) ? $val : 1.01;
    }
    return $resp;
  }
 
  static public function tree($types, $file)
  {
    $events = array();
    $base   = mFsEventTypes::find();
    foreach ($base as $type) {
      if (true === $types['format'][$type->getText()]) {
        $events[$type->getText()][$type->getId()] = $type->getParam() ?? 0;
      } else {
        $events[$type->getText()] = $type->getId();
      }
    }
    $resp = array();
    foreach ($types['tree'] as $game => $gt) {
      foreach ($gt as $group => $t) {
        foreach ($t as $k) {
          $value = $events[$k];
          if (is_array($value))
            asort($value);
          $resp[$game][$group][$k] = $value;
        }
      }
    }
    file_put_contents($file, serialize($resp));
  }
 
  public function getValue($id)
  {
    return (float)$this->data[$id];
  }
 
  protected function buildTree($data)
  {
    foreach ($data as $id => $options) {
      $group = new gameEventGroups($id, self::$_text[mTexts::TYPE_GROUP][$id]->text, self::$_text[mTexts::TYPE_GROUP][$id]->title);
      foreach ($options as $k => $v) {
        if (is_array($v)) {
          $ev = new gameEventsMulti($this, array(
            'i' => $id,
            's' => self::$_text[mTexts::TYPE_EVENT][$k]->text,
            't' => self::$_text[mTexts::TYPE_EVENT][$k]->title,
          ));
          foreach ($v as $oid => $param) {
            if (isset($this->data[$oid])) {
              $ev->addItem($oid, $param);
              $this->events[$oid] = (object)array(
                'i' => $oid,
                't' => str_replace('##', $param, self::$_text[mTexts::TYPE_GROUP][$id]->title . ':' . self::$_text[mTexts::TYPE_EVENT][$k]->title),
              );
            }
          }
          if (!$ev->isEmpty()) {
            $group->addEvent($ev);
            $group->setMulti();
          }
        } elseif (isset($this->data[$v])) {
          $ev = new gameEventSingle($this, [
            'i' => $v,
            's' => self::$_text[mTexts::TYPE_EVENT][$k]->text,
            't' => self::$_text[mTexts::TYPE_EVENT][$k]->title,
          ]);
          $group->addEvent($ev);
          $group->setSingle();
          $this->events[$v] = (object)array(
            'i' => $v,
            't' => self::$_text[mTexts::TYPE_GROUP][$id]->title . ':' . self::$_text[mTexts::TYPE_EVENT][$k]->title,
          );
 
        }
      }
      if (!$group->isEmpty())
        $this->tree[] = $group;
    }
  }
 
  public function getEventTitle($id)
  {
 
  }
 
  /**
   * @param $id
   * @return absGameEvent|false
   */
  public function getEvent($id)
  {
    if (array_key_exists($id, $this->events)) {
      return $this->events[$id];
    }
    return false;
  }
 
  public function getMain()
  {
    return $this->tree[0] ?? null;
  }
 
  public function eventsList()
  {
    return $this->events;
  }
 
  public function updateHold($id, $val)
  {
    $this->reload();
    $col             = $this->collection->getHold($this->_siteId);
    $this->hold[$id] = $val;
    $this->data[$id] = $val;
    $col->set(serialize($this->hold));
    $this->save();
  }
  public function getTTL(){
    $hold =$this->collection->getHold($this->_siteId);
    return $hold->getTTL();
  }
 
  public function isHold($id)
  {
    return array_key_exists($id, $this->hold);
  }
  public function hasHold()
  {
    return !empty($this->hold);
  }
 
  public function getEvents()
  {
    return $this->tree;
  }
}
 
class gameEventGroups
{
  const TYPE_SINGLE = 'single';
  const TYPE_MULTI  = 'multi';
 
  protected $_id;
  protected $_items = array();
  protected $_text;
  protected $_title;
  protected $_type;
 
  public function __construct($id, $text, $title)
  {
    $this->_id    = $id;
    $this->_text  = $text;
    $this->_title = $title;
  }
 
  /**
   * @param absGameEvent $event
   */
  public function addEvent($event)
  {
    $this->_items[] = $event;
  }
 
  /**
   * @return mixed
   */
  public function getId()
  {
    return $this->_id;
  }
 
  public function getText()
  {
    return $this->_text;
  }
 
  public function getTitle()
  {
    return $this->_title;
  }
 
  public function setSingle()
  {
    $this->_type = self::TYPE_SINGLE;
  }
 
  public function setMulti()
  {
    $this->_type = self::TYPE_MULTI;
  }
 
  public function isMulti()
  {
    return $this->_type === self::TYPE_MULTI;
  }
 
  public function getType()
  {
    return $this->_type;
  }
 
  public function getCount()
  {
    return count($this->_items);
  }
 
  public function items()
  {
    return $this->_items;
  }
 
  public function isEmpty()
  {
    return count($this->_items) === 0;
  }
}
 
/**
 * Class gameEventSingle
 * @package App\Entity
 */
class gameEventSingle extends absGameEvent
{
  public function val()
  {
    return $this->e->getValue($this->data['i']);
  }
 
}
 
class gameEventsMulti extends absGameEvent
{
  /** @var eGameEvents */
  protected $e;
  protected $items = array();
 
  public function addItem($id, $param)
  {
    $this->items[$id] = $param;
  }
 
  public function getItems(): array
  {
    $resp = array();
    foreach ($this->items as $k => $v) {
      $resp[] = (object)array(
        'i' => $k,
        't' => str_replace('!!', $v, $this->t),
        's' => str_replace('!!', $v, $this->s),
        'v' => $this->e->getValue($k),
      );
    }
    return $resp;
  }
 
  public function isEmpty()
  {
    return count($this->items) === 0;
  }
 
}
 
/**
 * Class absGameEvent
 * @package App\Entity
 *
 * @property integer $i
 * @property string  $t Text for btn title
 * @property string  $s Short text on btn
 */
abstract class absGameEvent
{
  protected $data;
  /** @var eGameEvents */
  protected $e;
 
  /**
   * gameEventSingle constructor.
   * @param eGameEvents $e
   * @param array       $data
   */
  public function __construct($e, $data)
  {
    $this->e    = $e;
    $this->data = $data;
  }
 
  public function __get($name)
  {
    return $this->data[$name];
  }
 
}
#1App\Entity\eGameEvents->__construct(880689, null)
/var/www/bet/app/entity/eHelp.php (381)
<?php
/**
 * Created by PhpStorm.
 * User: gm
 * Date: 20.07.18
 * Time: 11:18
 */
 
namespace App\Entity;
 
 
use Carbon\Carbon;
use Mod\mCurrency;
use Mod\mPages;
use Mod\mSites;
use Mod\mUserPayouts;
use ModSrv\mAclResources;
use Phalcon\Di;
use Phalcon\Mvc\User\Plugin;
use Srv\SrvTag;
use Srv\SrvTag as S;
use Srv\sSession;
use Srv\TraitHelper;
use Srv\TraitTranslate;
 
class eHelp extends Plugin
{
  use TraitHelper;
//  use TraitTranslate;
 
  static protected $_lang = 'en';
  protected $_tzVal;
  protected $_tzLoc;
  protected $_formats = array(
    'time'       => 'H:i:s',
    'date'       => 'Y-m-d',
    'fullInline' => 'Y-m-d H:i:s',
    'fullMulti'  => 'Y-m-d<\b\r/>H:i:s',
    'short'      => 'd.m H:i',
    'shortDate'  => 'd.m',
 
  );
 
  /**
   * @return float|int
   */
  public function getTzVal()
  {
    return $this->_tzVal;
  }
 
  /**
   * @param float|int $tzVal
   *
   * @return eHelp
   */
  public function setTzVal($tzVal): eHelp
  {
    $tzName       = timezone_name_from_abbr(NULL, $tzVal, TRUE);
    $this->_tzLoc = new \DateTimeZone($tzName);
    $this->_tzVal = $tzVal;
    return $this;
  }
 
 
  public function workLink($userId, $url, $text, $params = array())
  {
    if ($this->sSession->isAdmin() || $this->sCache->isWorkUser($userId)) {
      return S::linkTo($url, $text, $params);
    }
    return '';
  }
 
  public function urlFor($route, $opt = array())
  {
    $opt['for'] = $route;
    $opt['lang']=self::$_lang;
    return $this->url->get($opt);
  }
 
  public function urlPage($page)
  {
    $opt = array(
      'for'  => 'static',
      'lang'=>self::$_lang,
      'page' => $page,
    );
    return $this->url->get($opt, null, true);
  }
 
  public function sLink($url, $title, $ico, $class = 'primary', $onClick = NULL)
  {
    $params = array(
      'class' => 'btn btn-sm btn-' . $class,
      'title' => $title,
      'href'  => (is_array($url)) ? $this->url->get($url) : $url,
    );
    if (NULL !== $onClick)
      $params['onclick'] = $onClick;
 
    return S::tagHtml('a', $params) . '<i class="fas fa-' . $ico . '"></i>' . S::tagHtmlClose('a');
  }
 
  public function btnParams($click, $title = '', $class = 'primary')
  {
    return array(
      'class'   => 'btn btn-sm btn-' . $class,
      'onClick' => $click,
      'title'   => $title,
      'type'    => 'button',
    );
  }
 
  public static function showNumber($value, $decimals = 2)
  {
    return number_format($value, $decimals);
  }
 
  public function btn($text, $params = array())
  {
    return S::tagHtml('button', $params) . $text . S::tagHtmlClose('button');
  }
 
  public function workBtn($userId, $text, $params = array(), $acl = FALSE)
  {
    if ($this->sCache->isWorkUser($userId) || (FALSE !== $acl && $this->acl->isAllowed(mAclResources::RESOURCE_ACCESS, $acl))) {
      return $this->btn($text, $params);
    }
    return '';
  }
 
  public function geo($ip)
  {
    if (NULL !== $ip) {
      $geo = $this->_geo($ip);
      return $ip . '<br/>' . $geo->country->name . '/' . $geo->city->name;
    }
 
    return '';
  }
 
  public function dFormat($format, $time = 'now')
  {
    $date = new Carbon($time);
    $date->setTimezone($this->_tzLoc);
    return $date->formatLocalized($format);
  }
 
  public function dTimeZone()
  {
    $zone = $this->sSession->getTZ()->id;
    $tz   = $this->sCache->timezone($zone);
    return isset($tz->timezone) ? $tz->timezone : '+3';
  }
 
  public function dTimeZoneValue($id)
  {
    $tz = $this->sCache->timezone($id);
    return $tz->timezone;
  }
 
  public function dBet($val, $multi = FALSE)
  {
    $date = Carbon::createFromTimestamp($val);
    $date->setTimezone($this->_tzLoc);
    $resp = $date->formatLocalized('%a %e %b');
    $resp .= (TRUE === $multi) ? '<br/>' : ' ';
    $resp .= $date->formatLocalized('%H:%M');
    return $resp;
  }
 
  public function dTime($val)
  {
    return $this->_date($this->_formats['time'], $val);
  }
 
  public function dDate($val)
  {
    return $this->_date($this->_formats['date'], $val);
  }
 
  public function dShort($val)
  {
    return $this->_date($this->_formats['short'], $val);
  }
 
  public function dShortDate($val)
  {
    return $this->_date($this->_formats['shortDate'], $val);
  }
 
  public function _date($format, $val)
  {
    if (NULL !== $val)
      return date($format, (int)$val + $this->_tzVal);
  }
 
  public function dFull($val, $multi = FALSE)
  {
    return $this->_date($this->_formats[(TRUE === $multi) ? 'fullMulti' : 'fullInline'], $val);
  }
 
  public function isDev()
  {
    return isDev;
  }
 
  public function ds($id)
  {
    $list = $this->sCache->siteList(TRUE);
    if (NULL === $id || !isset($list[$id]))
      return 'Нет';
    $s     = $list[$id];
    $class = array(
      mSites::PLATFORM_BET  => 'success',
      mSites::PLATFORM_BANK => 'warning',
      mSites::PLATFORM_OUT  => 'info',
    );
    return '<span class="badge badge-' . $class[$s->platform] . '" title="' . $s->name . '">' . $s->short . '</span>';
 
  }
 
  public function site($param = NULL)
  {
    /** @var \Phalcon\Config\Adapter\Json $site */
    $site = $this->getDI()->get('site');
    if (NULL === $param)
      return $site;
    return $site->get($param);
  }
 
  public function currencySym($currency = NULL, $getBlock = FALSE)
  {
    $key = 'Currencies:' . self::_getLang()->getLang();
    if (!$this->cache->exists($key)) {
      $list = mCurrency::find();
      $rows = array();
      foreach ($list as $l) {
        $name              = self::l('currency.' . $l->getKey());
        $rows[$l->getId()] = (object)array(
          'title' => $name . ' (' . $l->getKey() . ')',
          'text'  => self::t('currencySym', $l->getId()),
          'block' => '<span class="currency" title="' . $name . ' (' . $l->getKey() . ')' . '">' . self::t('currencySym', $l->getId()) . '</span>',
        );
      }
      $this->cache->save($key, $rows);
    }
    if (NULL === $currency && FALSE === $getBlock)
      return $this->cache->get($key);
    $list = $this->cache->get($key)[$currency];
    return (TRUE === $getBlock) ? $list->block : $list;
  }
 
  public function badgeMoney($value, $operation, $currency = 840)
  {
    $val = $this->money($value, $currency);
    switch ($operation) {
      case 'Add':
        return '<span class="badge badge-success">+ ' . $val . '</span>';
        break;
      case 'Sub':
        return '<span class="badge badge-danger">- ' . $val . '</span>';
        break;
      default:
        return $val;
    }
  }
 
  public function textMoney($value, $operation, $currency = 840)
  {
    $val = $this->money($value, $currency);
    switch ($operation) {
      case 'Add':
        return '<span class="text-success">+ ' . $val . '</span>';
        break;
      case 'Sub':
        return '<span class="text-danger">- ' . $val . '</span>';
        break;
      default:
        return $val;
    }
  }
 
  public function money($value, $currency = 840)
  {
    return number_format($value, 2, '.', ' ') . ' ' . $this->currencySym($currency, TRUE);
  }
 
  public function price($value)
  {
    return number_format($value, 2, '.', ' ');
  }
 
  public function bonus($count = 3)
  {
    $rows = mPages::query()
                  ->columns(array( 'url', 'short_text as text', 'title' ))
                  ->where('status = :s: AND type = :t:', [ 's' => mPages::STATUS_PUBLIC, 't' => mPages::TYPE_BONUS ])
                  ->limit($count)
                  ->orderBy('sort')
                  ->execute();
    return $rows;
  }
 
  public function dWorker($id)
  {
    $list = $this->sCache->fullWorkerList();
    if (NULL === $id || !isset($list[$id]))
      return 'Нет';
    return '<span class="badge badge-primary" title="Сотрудник">' . $list[$id]->nickname . '</span>';
  }
 
  public function timeout($time)
  {
    $d        = (new \DateTime())->setTimestamp($time);
    $interval = $d->diff(new \DateTime("now"));
 
    $res = "";
    if ($interval->m !== 0) {
      $res = ($interval->m . " м. ");
    }
    if ($interval->d !== 0) {
      $res .= ($interval->d . " д. ");
    }
    if ($interval->h !== 0) {
      $res .= ($interval->h . " ч. ");
    }
    if ($interval->i !== 0) {
      if ($interval->m == 0) {
        $res .= ($interval->i . " мин. ");
      }
    }
    if ($interval->s !== 0) {
      if ($interval->d == 0) {
        $res .= ($interval->s . " сек. ");
      }
      return $res;
    }
  }
 
  public function ttl($sec)
  {
    $minutes = floor(($sec % 3600) / 60);
    $seconds = $sec % 60;
    return "{$minutes}м {$seconds}с";
  }
 
  public function userOnlineStatus($userId)
  {
    $ttl      = $this->redis->ttl('UserOnline:' . $userId);
    $isOnline = FALSE;
    $title    = 'Был в сети более 30 мин назад';
    if (-2 !== $ttl) {
      if (sSession::TTL_ONLINE - 300 < $ttl) {
        $isOnline = TRUE;
        $title    = 'Онлайн';
      } elseif (sSession::TTL_ONLINE - 600 < $ttl) {
        $isOnline = TRUE;
        $title    = 'Был в сети до 10 мин';
      } elseif (sSession::TTL_ONLINE - 1200 < $ttl) {
        $title = 'Был в сети до 20 мин';
      } else {
        $title = 'Был в сети до 30 мин';
      }
    }
    return '<span class="badge badge-' . ($isOnline ? 'success' : 'default') . '" title="' . $title . '"><i class="fa fa-user"></i></span>';
//    return '<span class="badge badge-' . ($isOnline ? 'success' : 'default') . '" title="Пользователь ' . ($isOnline ? 'Онлайн' : 'ОффЛайн') . '"><i class="fa fa-user"></i></span>';
//    return ;
  }
 
  /**
   * @return self
   */
  static public function inst()
  {
    return Di::getDefault()->get('eHelp');
  }
 
  public function events($id, $siteId = NULL)
  {
    return new eGameEvents($id, $siteId);
  }
 
  public function helpBtn($block)
  {
    $params = array(
      'onclick'   => 'initPopover(this)',
      'type'      => 'button',
      'class'     => 'btn btn-info btn-sm help',
      'data-help' => $block,
      'tabindex'  => 0,
    );
    return S::tagHtml('button', $params) . '<i class="fas fa-info"></i>' . S::tagHtmlClose('button');
  }
 
  public function providerName($id)
  {
    $providers = array_column($this->cfgProviders['casino'], 'title', 'id');
    return $providers[$id];
  }
 
  public function payout($balanceId)
  {
    $payout = mUserPayouts::findFirst(array(
                                        'balance_id = :b:',
                                        'bind' => [ 'b' => $balanceId ]
                                      ));
    return $payout;
  }
  public function options()
  {
    return $this->getDI()->get('cfgOptions');
  }
}
#2App\Entity\eHelp->events(880689)
/var/www/bet/sandbox/cache/_var_www_bet_templates_24sportbet_index_index.volt.compile (48)
<?= $this->partial('game-list') ?>
<?= $this->tag->stylesheetLink('vendors/chief-slider/chief-slider.min.css') ?>
 
<main>
  <hr/>
  <section class="index-banner">
    <div class="slider__container">
      <div class="slider__wrapper">
        <div class="slider__items">
          <?php foreach ($bonuses as $item) { ?>
            <div class="slider__item">
              <?= $item->getShortText() ?>
            </div>
          <?php } ?>
        </div>
      </div>
      <a href="#" class="slider__control" data-slide="prev"></a>
      <a href="#" class="slider__control" data-slide="next"></a>
      <ol class="slider__indicators">
        <?php $v103720525262501222101iterator = $bonuses; $v103720525262501222101incr = 0; $v103720525262501222101loop = new stdClass(); $v103720525262501222101loop->self = &$v103720525262501222101loop; $v103720525262501222101loop->length = count($v103720525262501222101iterator); $v103720525262501222101loop->index = 1; $v103720525262501222101loop->index0 = 1; $v103720525262501222101loop->revindex = $v103720525262501222101loop->length; $v103720525262501222101loop->revindex0 = $v103720525262501222101loop->length - 1; ?><?php foreach ($v103720525262501222101iterator as $b) { ?><?php $v103720525262501222101loop->first = ($v103720525262501222101incr == 0); $v103720525262501222101loop->index = $v103720525262501222101incr + 1; $v103720525262501222101loop->index0 = $v103720525262501222101incr; $v103720525262501222101loop->revindex = $v103720525262501222101loop->length - $v103720525262501222101incr; $v103720525262501222101loop->revindex0 = $v103720525262501222101loop->length - ($v103720525262501222101incr + 1); $v103720525262501222101loop->last = ($v103720525262501222101incr == ($v103720525262501222101loop->length - 1)); ?>
          <li data-slide-to="<?= $v103720525262501222101loop->index ?>"></li>
        <?php $v103720525262501222101incr++; } ?>
      </ol>
    </div>
  </section>
  <hr/>
  <section class="index-games">
    <div class="slider__container">
      <div class="slider__wrapper">
        <div class="slider__items">
          <?php $v103720525262501222101iterator = $games; $v103720525262501222101incr = 0; $v103720525262501222101loop = new stdClass(); $v103720525262501222101loop->self = &$v103720525262501222101loop; $v103720525262501222101loop->length = count($v103720525262501222101iterator); $v103720525262501222101loop->index = 1; $v103720525262501222101loop->index0 = 1; $v103720525262501222101loop->revindex = $v103720525262501222101loop->length; $v103720525262501222101loop->revindex0 = $v103720525262501222101loop->length - 1; ?><?php foreach ($v103720525262501222101iterator as $g) { ?><?php $v103720525262501222101loop->first = ($v103720525262501222101incr == 0); $v103720525262501222101loop->index = $v103720525262501222101incr + 1; $v103720525262501222101loop->index0 = $v103720525262501222101incr; $v103720525262501222101loop->revindex = $v103720525262501222101loop->length - $v103720525262501222101incr; $v103720525262501222101loop->revindex0 = $v103720525262501222101loop->length - ($v103720525262501222101incr + 1); $v103720525262501222101loop->last = ($v103720525262501222101incr == ($v103720525262501222101loop->length - 1)); ?>
            <div class="slider__item">
              <div class="index-games--game">
                <div class="index-games--category">
                  <span class="sport-icons c-<?= $g->sport_id ?>"></span>
                  <h4><a href="<?= $g->url ?>"><?= $g->title ?></a></h4>
                </div>
                <div class="index-games--players">
                  <div>
                    <img src="<?= $this->tag->cLink('logoTeams', $g->p1logo) ?>">
                    <h4><?= $g->p1title ?></h4>
                  </div>
                  <div>
                    <img src="<?= $this->tag->cLink('logoTeams', $g->p2logo) ?>">
                    <h4><?= $g->p2title ?></h4>
                  </div>
                </div>
                <?= $this->callMacro('showGameEvents', [$this->eHelp->events($g->id), $g->id]) ?>
              </div>
            </div>
          <?php $v103720525262501222101incr++; } ?>
        </div>
      </div>
      <a href="#" class="slider__control" data-slide="prev"></a>
      <a href="#" class="slider__control" data-slide="next"></a>
      <ol class="slider__indicators">
        <?php $v103720525262501222101iterator = $games; $v103720525262501222101incr = 0; $v103720525262501222101loop = new stdClass(); $v103720525262501222101loop->self = &$v103720525262501222101loop; $v103720525262501222101loop->length = count($v103720525262501222101iterator); $v103720525262501222101loop->index = 1; $v103720525262501222101loop->index0 = 1; $v103720525262501222101loop->revindex = $v103720525262501222101loop->length; $v103720525262501222101loop->revindex0 = $v103720525262501222101loop->length - 1; ?><?php foreach ($v103720525262501222101iterator as $g) { ?><?php $v103720525262501222101loop->first = ($v103720525262501222101incr == 0); $v103720525262501222101loop->index = $v103720525262501222101incr + 1; $v103720525262501222101loop->index0 = $v103720525262501222101incr; $v103720525262501222101loop->revindex = $v103720525262501222101loop->length - $v103720525262501222101incr; $v103720525262501222101loop->revindex0 = $v103720525262501222101loop->length - ($v103720525262501222101incr + 1); $v103720525262501222101loop->last = ($v103720525262501222101incr == ($v103720525262501222101loop->length - 1)); ?>
          <li data-slide-to="<?= $v103720525262501222101loop->index ?>"></li>
        <?php $v103720525262501222101incr++; } ?>
      </ol>
    </div>
  </section>
  <hr/>
  <section class="index-casino">
    <div class="slider__container">
      <div class="slider__wrapper">
        <div class="slider__items">
          <?php $v103720525262501222101iterator = $this->sCache->indexCasino(); $v103720525262501222101incr = 0; $v103720525262501222101loop = new stdClass(); $v103720525262501222101loop->self = &$v103720525262501222101loop; $v103720525262501222101loop->length = count($v103720525262501222101iterator); $v103720525262501222101loop->index = 1; $v103720525262501222101loop->index0 = 1; $v103720525262501222101loop->revindex = $v103720525262501222101loop->length; $v103720525262501222101loop->revindex0 = $v103720525262501222101loop->length - 1; ?><?php foreach ($v103720525262501222101iterator as $g) { ?><?php $v103720525262501222101loop->first = ($v103720525262501222101incr == 0); $v103720525262501222101loop->index = $v103720525262501222101incr + 1; $v103720525262501222101loop->index0 = $v103720525262501222101incr; $v103720525262501222101loop->revindex = $v103720525262501222101loop->length - $v103720525262501222101incr; $v103720525262501222101loop->revindex0 = $v103720525262501222101loop->length - ($v103720525262501222101incr + 1); $v103720525262501222101loop->last = ($v103720525262501222101incr == ($v103720525262501222101loop->length - 1)); ?>
            <div class="slider__item casino-block">
              <div>
                <img src="<?= Srv\SrvTag::cLink('c', '/img-games/' . $g->img) ?>">
                <div class="ci">
                  <?= $this->tag->linkTo([['for' => 'casino-play', 'game' => $g->sys], Srv\sLang::_t('casino.play'), 'class' => 'cir']) ?>
                  <?= $this->tag->linkTo([['for' => 'casino-demo', 'game' => $g->sys], Srv\sLang::_t('casino.demo'), 'class' => 'cid']) ?>
                </div>
                <p><?= $g->title ?></p>
              </div>
            </div>
          <?php $v103720525262501222101incr++; } ?>
        </div>
      </div>
      <a href="#" class="slider__control" data-slide="prev"></a>
      <a href="#" class="slider__control" data-slide="next"></a>
      <ol class="slider__indicators">
        <?php $v103720525262501222101iterator = $this->sCache->indexCasino(); $v103720525262501222101incr = 0; $v103720525262501222101loop = new stdClass(); $v103720525262501222101loop->self = &$v103720525262501222101loop; $v103720525262501222101loop->length = count($v103720525262501222101iterator); $v103720525262501222101loop->index = 1; $v103720525262501222101loop->index0 = 1; $v103720525262501222101loop->revindex = $v103720525262501222101loop->length; $v103720525262501222101loop->revindex0 = $v103720525262501222101loop->length - 1; ?><?php foreach ($v103720525262501222101iterator as $g) { ?><?php $v103720525262501222101loop->first = ($v103720525262501222101incr == 0); $v103720525262501222101loop->index = $v103720525262501222101incr + 1; $v103720525262501222101loop->index0 = $v103720525262501222101incr; $v103720525262501222101loop->revindex = $v103720525262501222101loop->length - $v103720525262501222101incr; $v103720525262501222101loop->revindex0 = $v103720525262501222101loop->length - ($v103720525262501222101incr + 1); $v103720525262501222101loop->last = ($v103720525262501222101incr == ($v103720525262501222101loop->length - 1)); ?>
          <li data-slide-to="<?= $v103720525262501222101loop->index ?>"></li>
        <?php $v103720525262501222101incr++; } ?>
      </ol>
    </div>
  </section>
  <hr/>
</main>
<div id="coupon">
  <div class="coupon">
    <div id="c-bets"></div>
    <div class="coupon-footer">
      <a href="#" class="knopka10" onclick="return bets.make(this);"><?= Srv\sLang::_t('Сделать ставку') ?></a>
    </div>
  </div>
</div>
<?= $this->tag->javascriptInclude('vendors/chief-slider/chief-slider.min.js') ?>
<script type="text/javascript">
  let sliders = {};
  n.ready(function () {
    const sliderOptions = {
      loop: true,
      autoplay: <?= ($this->eHelp->isDev() ? 'false' : 'true') ?>,
      interval: 5000,
      refresh: true,
      swipe: true,
    };
    sliders.banner = new ChiefSlider('.index-banner', sliderOptions);
    sliders.games = new ChiefSlider('.index-games', sliderOptions);
    sliders.casino = new ChiefSlider('.index-casino', sliderOptions);
  });
</script>
#3unknown
#4Phalcon\Mvc\View\Engine\Volt->render(/var/www/bet/templates/24sportbet/index/index.volt, Array([isMobile] => , [activeRoute] => index-index, [footerTmpl] => footer, [isGuest] => 1, [indexPages] => Array([about] => О нас, [contacts] => Контакты, [rules] => Правила, [security] => Безопасность, [confidencial] => Политика конфиденциальности, [kyc] => ПОЛИТИКА AML/KYC ), [bonuses] => Object(Phalcon\Mvc\Model\Resultset\Simple), [games] => Object(Phalcon\Mvc\Model\Resultset\Simple)), true)
#5Phalcon\Mvc\View->_engineRender(Array([.volt] => Object(Phalcon\Mvc\View\Engine\Volt), [.phtml] => Object(Phalcon\Mvc\View\Engine\Php)), index/index, true, true, null)
#6Phalcon\Mvc\View->render(index, index)
#7Phalcon\Mvc\Application->handle()
/var/www/bet/public/index.php (22)
<?php
 
error_reporting(E_ALL);
define('PROFILER', FALSE);
 
/**
 * The FactoryDefault Dependency Injector automatically registers the right services to provide a full stack framework
 */
if (isset($_COOKIE['appDev']) && '4b3f212e06d1f763bac5b35074156b4f' === $_COOKIE['appDev'])
  defined('isDev') || define('isDev', true);
require_once __DIR__ . '/../autoload.php';
//try {
  require_once __DIR__ . '/../config/bootstrap.php';
  $dev         = (isDev || (isset($_COOKIE['appDev']) && '4b3f212e06d1f763bac5b35074156b4f' === $_COOKIE['appDev']));
  $boot        = new Bootstrap();
  $application = $boot->getApp();
  $debug       = new \Phalcon\Debug();
  $debug->setUri('/debug/');
  $debug->listen(TRUE, TRUE);
 
  /** @var \Phalcon\Http\Response $resp */
  $resp = $application->handle();
  if (!$resp->isSent()) {
    $resp->send();
  }
//} catch (\Phalcon\Exception $e) {
//  $resp = $application->response;
//  if (!$resp->isSent()) {
//    $resp->setStatusCode(500)->send();
//  }
//} catch (\Exception $e) {
//
//}
KeyValue
_url/
KeyValue
USERadmin
HOME/home/admin
HTTP_ACCEPT_ENCODINGgzip, br, zstd, deflate
HTTP_COOKIEPHPSESSID=g0qunq5dmf226as5spsc7u3acd
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_ACCEPT*/*
HTTP_CONNECTIONclose
HTTP_X_FORWARDED_FOR18.189.178.140
HTTP_X_REAL_IP18.189.178.140
HTTP_HOSTmelbetaje.top
SCRIPT_FILENAME/var/www/bet/public/index.php
PATH_TRANSLATED/var/www/bet/public
PATH_INFO
REDIRECT_STATUS200
SERVER_NAME
SERVER_PORT88
SERVER_ADDR127.0.0.1
REMOTE_PORT39678
REMOTE_ADDR127.0.0.1
SERVER_SOFTWAREnginx/1.14.0
GATEWAY_INTERFACECGI/1.1
REQUEST_SCHEMEhttp
SERVER_PROTOCOLHTTP/1.0
DOCUMENT_ROOT/var/www/bet/public
DOCUMENT_URI/index.php
REQUEST_URI/
SCRIPT_NAME/index.php
CONTENT_LENGTH
CONTENT_TYPE
REQUEST_METHODGET
QUERY_STRING_url=/
FCGI_ROLERESPONDER
PHP_SELF/index.php
REQUEST_TIME_FLOAT1743580479.2817
REQUEST_TIME1743580479
#Path
0/var/www/bet/public/index.php
1/var/www/bet/autoload.php
2/var/www/bet/config/autoload.php
3/var/www/bet/vendor/autoload.php
4/var/www/bet/vendor/composer/autoload_real.php
5/var/www/bet/vendor/composer/platform_check.php
6/var/www/bet/vendor/composer/ClassLoader.php
7/var/www/bet/vendor/composer/autoload_static.php
8/var/www/bet/vendor/symfony/deprecation-contracts/function.php
9/var/www/bet/vendor/symfony/polyfill-php80/bootstrap.php
10/var/www/bet/vendor/symfony/polyfill-mbstring/bootstrap.php
11/var/www/bet/vendor/react/promise/src/functions_include.php
12/var/www/bet/vendor/react/promise/src/functions.php
13/var/www/bet/vendor/ralouphie/getallheaders/src/getallheaders.php
14/var/www/bet/vendor/guzzlehttp/psr7/src/functions_include.php
15/var/www/bet/vendor/guzzlehttp/psr7/src/functions.php
16/var/www/bet/vendor/symfony/polyfill-ctype/bootstrap.php
17/var/www/bet/vendor/symfony/polyfill-intl-grapheme/bootstrap.php
18/var/www/bet/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
19/var/www/bet/vendor/guzzlehttp/guzzle/src/functions_include.php
20/var/www/bet/vendor/guzzlehttp/guzzle/src/functions.php
21/var/www/bet/vendor/symfony/polyfill-php73/bootstrap.php
22/var/www/bet/vendor/symfony/polyfill-php73/Php73.php
23/var/www/bet/vendor/symfony/string/Resources/functions.php
24/var/www/bet/vendor/symfony/var-dumper/Resources/functions/dump.php
25/var/www/bet/vendor/psy/psysh/src/functions.php
26/var/www/bet/vendor/sabre/uri/lib/functions.php
27/var/www/bet/vendor/symfony/translation/Resources/functions.php
28/var/www/bet/vendor/phalcon/dd/src/helper.php
29/var/www/bet/vendor/sabre/xml/lib/Deserializer/functions.php
30/var/www/bet/vendor/sabre/xml/lib/Serializer/functions.php
31phar:///var/www/Dev/GM.phar/autoload.php
32/var/www/bet/config/bootstrap.php
33/var/www/bet/config/config.php
34/var/www/bet/config/host-melbetaje.top.php
35/var/www/bet/app/models/mSites.php
36/var/www/bet/app/models/absModel.php
37phar:///var/www/Dev/GM.phar/trait/TraitEvents.php
38/var/www/bet/app/services/sTransl.php
39/var/www/bet/translations/ru.php
40/var/www/bet/app/models/mUserRefill.php
41/var/www/bet/app/models/mUsers.php
42/var/www/bet/app/services/TraitHelper.php
43/var/www/bet/app/modServer/mWorkRequest.php
44/var/www/bet/app/modServer/absModel.php
45/var/www/bet/app/modServer/mWorkRequestQuery.php
46/var/www/bet/app/modCasino/mGames.php
47/var/www/bet/app/modCasino/absModel.php
48/var/www/bet/app/modCasino/TSetField.php
49/var/www/bet/app/modCasino/mFree.php
50/var/www/bet/library/payments/payInterkassa.php
51/var/www/bet/library/payments/AbsPaymentService.php
52/var/www/bet/library/payments/payFreeKassa.php
53/var/www/bet/app/models/mEmailTemplates.php
54/var/www/bet/app/models/mUserInvites.php
55/var/www/bet/app/models/mUserOptions.php
56/var/www/bet/app/models/mUserBalance.php
57/var/www/bet/app/models/mUserPayouts.php
58/var/www/bet/app/modEvents/mGames.php
59/var/www/bet/app/modEvents/absModel.php
60/var/www/bet/app/models/mUserBets.php
61/var/www/bet/app/models/mPages.php
62/var/www/bet/app/models/mPromo.php
63/var/www/bet/app/models/mPromoBonuses.php
64/var/www/bet/app/models/mUserPromo.php
65/var/www/bet/config/events.php
66/var/www/bet/config/routes.php
67/var/www/bet/config/route-user.php
68/var/www/bet/app/services/sSession.php
69/var/www/bet/library/JsonConfigEdit.php
70/var/www/bet/app/models/mLang.php
71/var/www/bet/app/services/sLang.php
72/var/www/bet/app/main/Module.php
73/var/www/bet/app/main/controllers/IndexController.php
74/var/www/bet/library/absUserController.php
75/var/www/bet/library/absController.php
76/var/www/bet/vendor/nesbot/carbon/src/Carbon/Carbon.php
77/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Date.php
78/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php
79/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php
80/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php
81/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php
82/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php
83/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php
84/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php
85/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php
86/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php
87/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/MagicParameter.php
88/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php
89/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php
90/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php
91/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Options.php
92/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php
93/var/www/bet/vendor/symfony/translation-contracts/TranslatorInterface.php
94/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php
95/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php
96/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php
97/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Test.php
98/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php
99/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Units.php
100/var/www/bet/vendor/nesbot/carbon/src/Carbon/Traits/Week.php
101/var/www/bet/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php
102/var/www/bet/vendor/nesbot/carbon/src/Carbon/Translator.php
103/var/www/bet/vendor/symfony/translation/Translator.php
104/var/www/bet/vendor/symfony/translation/MessageCatalogue.php
105/var/www/bet/vendor/symfony/translation/MessageCatalogueInterface.php
106/var/www/bet/vendor/symfony/translation/MetadataAwareInterface.php
107/var/www/bet/vendor/symfony/translation/TranslatorBagInterface.php
108/var/www/bet/vendor/symfony/translation-contracts/LocaleAwareInterface.php
109/var/www/bet/vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php
110/var/www/bet/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php
111/var/www/bet/vendor/symfony/translation/Loader/ArrayLoader.php
112/var/www/bet/vendor/symfony/translation/Loader/LoaderInterface.php
113/var/www/bet/vendor/nesbot/carbon/src/Carbon/MessageFormatter/MessageFormatterMapper.php
114/var/www/bet/vendor/symfony/translation/Formatter/MessageFormatterInterface.php
115/var/www/bet/vendor/nesbot/carbon/lazy/Carbon/MessageFormatter/MessageFormatterMapperStrongType.php
116/var/www/bet/vendor/symfony/translation/Formatter/MessageFormatter.php
117/var/www/bet/vendor/symfony/translation/Formatter/IntlFormatter.php
118/var/www/bet/vendor/symfony/translation/Formatter/IntlFormatterInterface.php
119/var/www/bet/vendor/symfony/translation/IdentityTranslator.php
120/var/www/bet/vendor/symfony/translation-contracts/TranslatorTrait.php
121/var/www/bet/vendor/symfony/polyfill-php80/Php80.php
122/var/www/bet/vendor/nesbot/carbon/src/Carbon/Lang/en.php
123/var/www/bet/vendor/nesbot/carbon/src/Carbon/Lang/ru.php
124/var/www/bet/app/services/sCache.php
125/var/www/bet/app/entity/eHelp.php
126/var/www/bet/app/services/SrvTag.php
127/var/www/bet/app/services/TraitTranslate.php
128/var/www/bet/app/modEvents/mCategories.php
129/var/www/bet/app/modEvents/mPlayers.php
130/var/www/bet/sandbox/cache/_var_www_bet_templates_24sportbet_index_index.volt.compile
131/var/www/bet/sandbox/cache/_var_www_bet_templates_24sportbet_partials_game-list.volt.compile
132/var/www/bet/app/entity/eGameEvents.php
133/var/www/bet/app/entity/eUserCache.php
134/var/www/bet/app/entity/absCacheRedis.php
135/var/www/bet/app/modEvents/mTexts.php
136/var/www/bet/app/collections/cEventFull.php
137/var/www/bet/app/collections/absCollection.php
138/var/www/bet/app/collections/cEventHold.php
Memory
Usage2097152