Phalcon Framework 2.0.13

Phalcon\Cache\Exception: Cache file /var/www/html/ciss/aesvietnam.edu.vn/web/src/web/../app/../data/cache/backend/341e44d1766e949ab6b136b3bc78e9b1ca45062e5b0e could not be written

/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Model/Model.php (159)
#0Phalcon\Cache\Backend\File->save(341e44d1766e949ab6b136b3bc78e9b1ca45062e5b0e, Object(Phalcon\Mvc\Model\Resultset\Simple))
/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Model/Model.php (159)
<?php
 
/**
 * Model
 *
 * @copyright Copyright (c) 2011 - 2014 Aleksandr Torosh (http://wezoom.com.ua)
 * @author    Aleksandr Torosh <webtorua@gmail.com>
 */
 
namespace Application\Mvc\Model;
 
use Application\Mvc\Helper\ArrayHelper;
use Application\Mvc\Helper\Draft;
use Cms\Model\Language;
 
class Model extends \Phalcon\Mvc\Model
{
  const CACHE_LIFETIME = 172800;
  const TEMPLATE_DEFAULT_NAME = 'default';
public static  $lang           = 'vi'; // Translation array
public static  $custom_lang    = '';
private static $translateCache = true;
  public $translations = []; // Language default
    public $fields       = []; // Used to create a sitemap
  protected $translations_array = []; // Translation cache usage flag
/**
   * Translate. In order to implement a multilingual scheme, you need to copy your model of the following methods:
   * Start Copy:
   */
  protected $translateModel; // translate //The name of the class associated with the translations, for example = 'Page\Model\Translate\PageTranslate'
 
  /**
   * Installing another language sitemap
   */
  public static function setCustomLang($lang)
  {
    self::$custom_lang = $lang;
  }
  //End Copy
 
  /**
   * Setting the cache usage of the flag.
   * It should be set up to call other method's model.
   * Example:
   *
   * ModelName::setTranslateCache(false); // We set the flag. Disabling the cache is necessary when working with models
   * in the admin
   * $entries = ModelName::find(); // Retrieve data
   */
  public static function setTranslateCache($value)
  {
    self::$translateCache = (bool)$value;
  }
 
  /**
   * List template from folder views of this module
   *
   * @return array
   */
  public static function dropdownTemplate()
  {
    $view = \Phalcon\DI::getDefault()->get('view');
    $viewDir = $view->getViewsDir();
    $templateDir = $viewDir . 'index/_templates' . DIRECTORY_SEPARATOR;
    $result = [];
    if (file_exists($templateDir)) {
      $templates = scandir($templateDir, SCANDIR_SORT_ASCENDING);
      if (sizeof($templates)) {
        foreach ($templates as $key => $value) {
          if (!in_array($value, [".", ".."]) && (!is_dir($viewDir . DIRECTORY_SEPARATOR . $value))) {
            $result[basename($value, '.volt')] = ucwords(preg_replace('/[^a-zA-Z0-9]/', ' ', basename($value, '.volt')));
          }
        }
      }
    }
 
    return $result;
  }
 
  /**
   * @param null $model
   *
   * @return bool
   */
  public static function canDelete($model = null)
  {
    return true;
    $auth = \Phalcon\Di::getDefault()->getSession()->get('auth');
 
    return (APPLICATION_ENV == "development" || $auth->login == 'dev');
  }
 
  /**
   * @return bool
   */
  public static function canAdd()
  {
    return true;
    $auth = \Phalcon\Di::getDefault()->getSession()->get('auth');
 
    return (APPLICATION_ENV == "development" || $auth->login == 'dev');
  }
 
  public function initialize()
  {
    $this->hasMany("id", $this->translateModel, "foreign_id"); // translate
  }
 
  /**
   * This method is invoked after removal of all the fields in the Model
   */
  public function afterFetch()
  {
    if ($this->translateModel && defined('LANG')) {
      // If there is an array of translation and is set constant active language or other language
      if (self::$custom_lang) {
        self::setLang(self::$custom_lang);
      } else {
        self::setLang(LANG); // Set the current language
      }
 
      $this->initTranslationsArray(); // Extract translated from the associated translation table
      $this->initTranslations();
    }
  }
 
  /**
   * Setting the language
   */
  public static function setLang($lang)
  {
    self::$lang = $lang;
  }
 
  /**
   * Removing the transfer array
   */
  private function initTranslationsArray($lang = null)
  {
    $cacheKey = $this->translateCacheKey($lang);
    if (!$lang) {
      $lang = self::$lang;
    }
 
    if (!$this->getId()) {
      return false;
    }
    $model = new $this->translateModel();
    $query = 'foreign_id = ' . $this->getId() . ' AND lang = "' . $lang . '"';
    $params = ['conditions' => $query];
 
    if (self::$translateCache) {
      $cache = $this->getDi()->get('modelsCache');
      $data = $cache->get($cacheKey);
 
      if (!$data) {
        $data = $model->find($params);
        if ($data) {
          $r = $cache->save($cacheKey, $data);
        }
      }
    } else {
      $data = $model->find($params);
    }
 
    $this->translations_array = $data;
  }
 
  public function translateCacheKey($lang = null)
  {
    if (!$lang) {
      $lang = self::$lang;
    }
    if (!$this->getId()) {
      return false;
    }
    $query = 'foreign_id = ' . $this->getId() . ' AND lang = "' . $lang . '"';
    $key = HOST_HASH . md5($this->getSource() . '_translate ' . $query);
 
    return $key;
  }
 
  public function initTranslations()
  {
    if (!empty($this->translations_array)) {
      foreach ($this->translations_array as $translation) {
        $this->translations[$translation->getKey()] = $translation->getValue();
      }
    }
  }
 
  /**
   * Cleansing translation cache
   * The method is called after updating values in the model
   */
  public function afterUpdate()
  {
    $this->deleteTranslateCache();
  }
 
  public function deleteTranslateCache()
  {
    if (!$this->getId()) {
      return false;
    }
    $cache = $this->getDi()->get('cache');
    $cache->delete($this->translateCacheKey());
  }
 
  /**
   * Extracting money transfers on behalf of a variable
   */
  public function getMLVariable($key)
  {
 
    $action = $this->getDI()->get('view')->getActionName();
    if (in_array($action, ['edit', 'add']) && isset($_POST[$key])) {
      return $_POST[$key];
    }
 
    if (array_key_exists($key, $this->translations)) {
      $r = $this->translations[$key];
    } elseif ($key == 'slug') {
      if ($this->getId()) {
        $defaultLang = Language::findFirstByPrimary(1);
        $modelTranslate = new $this->translateModel();
        $query = 'foreign_id = ' . $this->getId() . ' AND lang = "' . $defaultLang->iso . '"';
        $params = ['conditions' => $query];
        $translates = ArrayHelper::index($modelTranslate->find($params)->toArray(), 'key');
        $r = $translates['slug']['value'];
      }
    }
 
    return $r;
  }
 
  public function setMLVariable($key, $value, $lang = null)
  {
    if (!$this->getId()) {
      return false;
    }
    $model = new $this->translateModel();
    if (!$lang) {
      $lang = self::$lang;
    }
    $conditions = "foreign_id = :foreign_id: AND lang = :lang: AND key = :key:";
    $parameters = [
      'foreign_id' => $this->getId(),
      'lang'       => $lang,
      'key'        => $key,
    ];
    $entity = $model->findFirst([
      $conditions,
      'bind' => $parameters]);
    if (!$entity) {
      $entity = new $this->translateModel();
      $entity->setForeignId($this->getId());
      $entity->setLang($lang);
      $entity->setKey($key);
    }
    $entity->setValue($value);
    $entity->save();
  }
 
  /**
   * @return string
   */
  public function getNameOfClass()
  {
    return get_called_class();
  }
 
  public function indexBy($arrData, $column = 'id')
  {
    $result = [];
    foreach ($arrData as $item) {
      $result[$item[$column]] = $item;
    }
 
    return $result;
  }
 
  /**
   * @return bool
   */
  public function canEdit()
  {
    return true;
  }
 
  public function saveDraft($data = [], $category = '')
  {
    $draftFileName = $this->getDraftFileName($data, $category);
 
    Draft::getInstance()->save($draftFileName, $data);
 
    return $data;
  }
 
  /**
   * @param $data
   * @param $category
   *
   * @return array
   */
  private function getDraftFileName($data, $category)
  {
    $auth = \Phalcon\Di::getDefault()->getSession()->get('auth');
    $isNew = !isset($data['id']);
    if ($isNew) {
      $draftFileName = "draft_new_{$auth->login}_{$this->getSource()}";
      if ($category != '') {
        $draftFileName .= "_{$category}";
      }
      $draftFileName .= '_' . LANG;
    } else {
      $draftFileName = "draft_edit_{$auth->login}_{$this->getSource()}_{$data['id']}_" . LANG;
    }
 
    return $draftFileName;
  }
 
  public function getDraft($category = '')
  {
    $draftFileName = $this->getDraftFileName([], $category);
    if ($this->getId()) {
      // is Editing
 
    }
 
    return $data = Draft::getInstance()->get($draftFileName);
  }
 
  /**
   * @return mixed
   */
  public function getMetaImage()
  {
    $image = $this->getDI()->get('helper')->image([
      'id'          => $this->getId(),
      'type'        => $this->getImgFolder("thumbnail_photo"),
      'width'       => 722,
      'height'      => 361,
      'strategy'    => 'a',
      'stretch'     => 'false',
      'widthHeight' => 'false',
      'hash'        => true,
    ]);
    if ($image->isExists()) {
      return $imgPath = $image->cachedRelPath();
    }
 
    return '';
  }
 
  public function getImgFolder($attr = null)
  {
    if ($attr) {
      return $this->getSource() . '_' . $attr;
    }
 
    return $this->getSource();
  }
 
 
}
#1Application\Mvc\Model\Model->initTranslationsArray()
/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Model/Model.php (122)
<?php
 
/**
 * Model
 *
 * @copyright Copyright (c) 2011 - 2014 Aleksandr Torosh (http://wezoom.com.ua)
 * @author    Aleksandr Torosh <webtorua@gmail.com>
 */
 
namespace Application\Mvc\Model;
 
use Application\Mvc\Helper\ArrayHelper;
use Application\Mvc\Helper\Draft;
use Cms\Model\Language;
 
class Model extends \Phalcon\Mvc\Model
{
  const CACHE_LIFETIME = 172800;
  const TEMPLATE_DEFAULT_NAME = 'default';
public static  $lang           = 'vi'; // Translation array
public static  $custom_lang    = '';
private static $translateCache = true;
  public $translations = []; // Language default
    public $fields       = []; // Used to create a sitemap
  protected $translations_array = []; // Translation cache usage flag
/**
   * Translate. In order to implement a multilingual scheme, you need to copy your model of the following methods:
   * Start Copy:
   */
  protected $translateModel; // translate //The name of the class associated with the translations, for example = 'Page\Model\Translate\PageTranslate'
 
  /**
   * Installing another language sitemap
   */
  public static function setCustomLang($lang)
  {
    self::$custom_lang = $lang;
  }
  //End Copy
 
  /**
   * Setting the cache usage of the flag.
   * It should be set up to call other method's model.
   * Example:
   *
   * ModelName::setTranslateCache(false); // We set the flag. Disabling the cache is necessary when working with models
   * in the admin
   * $entries = ModelName::find(); // Retrieve data
   */
  public static function setTranslateCache($value)
  {
    self::$translateCache = (bool)$value;
  }
 
  /**
   * List template from folder views of this module
   *
   * @return array
   */
  public static function dropdownTemplate()
  {
    $view = \Phalcon\DI::getDefault()->get('view');
    $viewDir = $view->getViewsDir();
    $templateDir = $viewDir . 'index/_templates' . DIRECTORY_SEPARATOR;
    $result = [];
    if (file_exists($templateDir)) {
      $templates = scandir($templateDir, SCANDIR_SORT_ASCENDING);
      if (sizeof($templates)) {
        foreach ($templates as $key => $value) {
          if (!in_array($value, [".", ".."]) && (!is_dir($viewDir . DIRECTORY_SEPARATOR . $value))) {
            $result[basename($value, '.volt')] = ucwords(preg_replace('/[^a-zA-Z0-9]/', ' ', basename($value, '.volt')));
          }
        }
      }
    }
 
    return $result;
  }
 
  /**
   * @param null $model
   *
   * @return bool
   */
  public static function canDelete($model = null)
  {
    return true;
    $auth = \Phalcon\Di::getDefault()->getSession()->get('auth');
 
    return (APPLICATION_ENV == "development" || $auth->login == 'dev');
  }
 
  /**
   * @return bool
   */
  public static function canAdd()
  {
    return true;
    $auth = \Phalcon\Di::getDefault()->getSession()->get('auth');
 
    return (APPLICATION_ENV == "development" || $auth->login == 'dev');
  }
 
  public function initialize()
  {
    $this->hasMany("id", $this->translateModel, "foreign_id"); // translate
  }
 
  /**
   * This method is invoked after removal of all the fields in the Model
   */
  public function afterFetch()
  {
    if ($this->translateModel && defined('LANG')) {
      // If there is an array of translation and is set constant active language or other language
      if (self::$custom_lang) {
        self::setLang(self::$custom_lang);
      } else {
        self::setLang(LANG); // Set the current language
      }
 
      $this->initTranslationsArray(); // Extract translated from the associated translation table
      $this->initTranslations();
    }
  }
 
  /**
   * Setting the language
   */
  public static function setLang($lang)
  {
    self::$lang = $lang;
  }
 
  /**
   * Removing the transfer array
   */
  private function initTranslationsArray($lang = null)
  {
    $cacheKey = $this->translateCacheKey($lang);
    if (!$lang) {
      $lang = self::$lang;
    }
 
    if (!$this->getId()) {
      return false;
    }
    $model = new $this->translateModel();
    $query = 'foreign_id = ' . $this->getId() . ' AND lang = "' . $lang . '"';
    $params = ['conditions' => $query];
 
    if (self::$translateCache) {
      $cache = $this->getDi()->get('modelsCache');
      $data = $cache->get($cacheKey);
 
      if (!$data) {
        $data = $model->find($params);
        if ($data) {
          $r = $cache->save($cacheKey, $data);
        }
      }
    } else {
      $data = $model->find($params);
    }
 
    $this->translations_array = $data;
  }
 
  public function translateCacheKey($lang = null)
  {
    if (!$lang) {
      $lang = self::$lang;
    }
    if (!$this->getId()) {
      return false;
    }
    $query = 'foreign_id = ' . $this->getId() . ' AND lang = "' . $lang . '"';
    $key = HOST_HASH . md5($this->getSource() . '_translate ' . $query);
 
    return $key;
  }
 
  public function initTranslations()
  {
    if (!empty($this->translations_array)) {
      foreach ($this->translations_array as $translation) {
        $this->translations[$translation->getKey()] = $translation->getValue();
      }
    }
  }
 
  /**
   * Cleansing translation cache
   * The method is called after updating values in the model
   */
  public function afterUpdate()
  {
    $this->deleteTranslateCache();
  }
 
  public function deleteTranslateCache()
  {
    if (!$this->getId()) {
      return false;
    }
    $cache = $this->getDi()->get('cache');
    $cache->delete($this->translateCacheKey());
  }
 
  /**
   * Extracting money transfers on behalf of a variable
   */
  public function getMLVariable($key)
  {
 
    $action = $this->getDI()->get('view')->getActionName();
    if (in_array($action, ['edit', 'add']) && isset($_POST[$key])) {
      return $_POST[$key];
    }
 
    if (array_key_exists($key, $this->translations)) {
      $r = $this->translations[$key];
    } elseif ($key == 'slug') {
      if ($this->getId()) {
        $defaultLang = Language::findFirstByPrimary(1);
        $modelTranslate = new $this->translateModel();
        $query = 'foreign_id = ' . $this->getId() . ' AND lang = "' . $defaultLang->iso . '"';
        $params = ['conditions' => $query];
        $translates = ArrayHelper::index($modelTranslate->find($params)->toArray(), 'key');
        $r = $translates['slug']['value'];
      }
    }
 
    return $r;
  }
 
  public function setMLVariable($key, $value, $lang = null)
  {
    if (!$this->getId()) {
      return false;
    }
    $model = new $this->translateModel();
    if (!$lang) {
      $lang = self::$lang;
    }
    $conditions = "foreign_id = :foreign_id: AND lang = :lang: AND key = :key:";
    $parameters = [
      'foreign_id' => $this->getId(),
      'lang'       => $lang,
      'key'        => $key,
    ];
    $entity = $model->findFirst([
      $conditions,
      'bind' => $parameters]);
    if (!$entity) {
      $entity = new $this->translateModel();
      $entity->setForeignId($this->getId());
      $entity->setLang($lang);
      $entity->setKey($key);
    }
    $entity->setValue($value);
    $entity->save();
  }
 
  /**
   * @return string
   */
  public function getNameOfClass()
  {
    return get_called_class();
  }
 
  public function indexBy($arrData, $column = 'id')
  {
    $result = [];
    foreach ($arrData as $item) {
      $result[$item[$column]] = $item;
    }
 
    return $result;
  }
 
  /**
   * @return bool
   */
  public function canEdit()
  {
    return true;
  }
 
  public function saveDraft($data = [], $category = '')
  {
    $draftFileName = $this->getDraftFileName($data, $category);
 
    Draft::getInstance()->save($draftFileName, $data);
 
    return $data;
  }
 
  /**
   * @param $data
   * @param $category
   *
   * @return array
   */
  private function getDraftFileName($data, $category)
  {
    $auth = \Phalcon\Di::getDefault()->getSession()->get('auth');
    $isNew = !isset($data['id']);
    if ($isNew) {
      $draftFileName = "draft_new_{$auth->login}_{$this->getSource()}";
      if ($category != '') {
        $draftFileName .= "_{$category}";
      }
      $draftFileName .= '_' . LANG;
    } else {
      $draftFileName = "draft_edit_{$auth->login}_{$this->getSource()}_{$data['id']}_" . LANG;
    }
 
    return $draftFileName;
  }
 
  public function getDraft($category = '')
  {
    $draftFileName = $this->getDraftFileName([], $category);
    if ($this->getId()) {
      // is Editing
 
    }
 
    return $data = Draft::getInstance()->get($draftFileName);
  }
 
  /**
   * @return mixed
   */
  public function getMetaImage()
  {
    $image = $this->getDI()->get('helper')->image([
      'id'          => $this->getId(),
      'type'        => $this->getImgFolder("thumbnail_photo"),
      'width'       => 722,
      'height'      => 361,
      'strategy'    => 'a',
      'stretch'     => 'false',
      'widthHeight' => 'false',
      'hash'        => true,
    ]);
    if ($image->isExists()) {
      return $imgPath = $image->cachedRelPath();
    }
 
    return '';
  }
 
  public function getImgFolder($attr = null)
  {
    if ($attr) {
      return $this->getSource() . '_' . $attr;
    }
 
    return $this->getSource();
  }
 
 
}
#2Application\Mvc\Model\Model->afterFetch()
#3Phalcon\Mvc\Model::cloneResultMap(Object(Publication\Model\Publication: [translateModel] => Publication\Model\Translate\PublicationTranslate, [translations] => Array(), [fields] => Array()), Array(31), null, 0, false)
#4Phalcon\Mvc\Model\Resultset\Simple->current()
#5Phalcon\Paginator\Adapter\Model->getPaginate()
/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Helper.php (582)
<?php
 
/**
 * Helper
 *
 * @copyright Copyright (c) 2011 - 2014 Aleksandr Torosh (http://wezoom.com.ua)
 * @author    Aleksandr Torosh <webtorua@gmail.com>
 */
 
namespace Application\Mvc;
 
use Application\Mvc\Router\DefaultRouter;
use Carbon\Carbon;
use Cms\Model\Language;
use Slider\Model\Slider;
 
class Helper extends \Phalcon\Mvc\User\Component
{
  private $translate       = null;
  private $admin_translate = null;
 
  public $menu;
 
  public function __construct()
  {
    $this->menu = \Menu\Helper\Menu::getInstance();
  }
 
  /**
   * Multilanguage Translate
   */
  public function translate($string, $placeholders = null)
  {
    if (!$this->translate) {
      $this->translate = $this->getDi()->get('translate');
    }
 
    return $this->translate->query($string, $placeholders);
  }
 
  /**
   * Multilanguage Translate Admin Panel
   */
  public function at($string, $placeholders = null)
  {
    if (!$this->admin_translate) {
      $this->admin_translate = $this->getDi()->get('admin_translate');
    }
 
    return $this->admin_translate->query($string, $placeholders);
  }
 
  public function widget($namespace, $params = [])
  {
    return new \Application\Widget\Proxy($namespace, $params);
  }
 
  /**
   * Вызов выджета из модуля StaticWidget
   *
   * @param $id - идентификатор виджета, например "phone"
   */
  public function staticWidget($id)
  {
    $widget = \Widget\Model\Widget::findFirst(["id='{$id}'", "cache" => ["lifetime" => 120, "key" => HOST_HASH . md5("Widget::findFirst({$id})")]]);
    if ($widget) {
      return $widget->getHtml();
    }
  }
 
  // TODO: get static no cache
  public function staticWidgetNoCache($id)
  {
    $widget = \Widget\Model\Widget::findFirst(["id='{$id}'"]);
    if ($widget) {
      return $widget->getHtml();
    }
  }
 
  public function langUrl($params, $local = true)
  {
    $routeName = $params['for'];
    $routeName = DefaultRouter::ML_PREFIX . $routeName . '_' . LANG;
    $params['for'] = $routeName;
    $url = $this->url->get($params);
    if ($local) {
      return $url;
    }
 
    return $this->url->getStaticBaseUri() . $url;
  }
 
  public function languages()
  {
    return Language::findCachedLanguages();
  }
 
  public function langSwitcher($lang, $string)
  {
    $helper = new \Application\Mvc\Helper\LangSwitcher();
 
    return $helper->render($lang, $string);
  }
 
  public function cacheExpire($seconds)
  {
    $response = $this->getDi()->get('response');
    $expireDate = new \DateTime();
    $expireDate->modify("+$seconds seconds");
    $response->setExpires($expireDate);
    $response->setHeader('Cache-Control', "max-age=$seconds");
  }
 
  public function isAdminSession()
  {
    $session = $this->getDi()->get('session');
    $auth = $session->get('auth');
    if ($auth) {
      if ($auth->admin_session == true) {
        return true;
      }
    }
  }
 
  public function error($code = 404)
  {
    $helper = new \Application\Mvc\Helper\ErrorReporting();
 
    return $helper->{'error' . $code}();
  }
 
  public function title($title = null, $h1 = false)
  {
    return \Application\Mvc\Helper\Title::getInstance($title, $h1);
  }
 
  public function meta()
  {
    return \Application\Mvc\Helper\Meta::getInstance();
  }
 
  public function activeMenu()
  {
    return \Application\Mvc\Helper\ActiveMenu::getInstance();
  }
 
  public function announce($incomeString, $num = 150)
  {
    $object = new \Application\Mvc\Helper\Announce();
 
    return $object->getString($incomeString, $num);
  }
 
  public function dbProfiler()
  {
    $object = new \Application\Mvc\Helper\DbProfiler();
 
    return $object->DbOutput();
  }
 
  public function constant($name)
  {
    return get_defined_constants()[$name];
  }
 
  public function image($args, $attributes = [])
  {
    $imageFilter = new \Image\Storage($args, $attributes);
 
    return $imageFilter;
  }
 
  public function querySymbol()
  {
    $object = new \Application\Mvc\Helper\RequestQuery();
 
    return $object->getSymbol();
  }
 
  public function javascript($id)
  {
    $javascript = \Cms\Model\Javascript::findCachedById($id);
    if ($javascript) {
      return $javascript->getText();
    }
  }
 
  public function modulePartial($template, $data, $module = null)
  {
    $view = clone $this->getDi()->get('view');
    $theme = $this->getDi()->get('config')['theme'];
    $partialsDir = '';
    $moduleName = \Application\Utils\ModuleName::camelize($module);
    if ($theme && $module) {
      $themePath = APPLICATION_PATH . '/themes/' . $this->getDi()->get('config')['theme'] . '/';
      if (file_exists($themePath)) {
        $partialsDir = '../../../themes/' . $theme . '/' . $moduleName . '/';
      } else {
        $partialsDir = '../../../modules/' . $moduleName . '/views/';
      }
    } elseif ($module) {
      $partialsDir = '../../../modules/' . $moduleName . '/views/';
    }
 
    $view->setPartialsDir($partialsDir);
 
    return $view->partial($template, $data);
  }
 
  public function getLoggedUser()
  {
    $session = $this->getDi()->get('session');
    $auth = $session->get('auth');
    if ($auth) {
      return $auth;
    }
  }
 
  public function getPage($id)
  {
    return \Page\Model\Page::findCachedById($id);
  }
 
  public function getFooterPhotoGallery()
  {
    return \Slider\Model\Slider::findFirst(1);
  }
 
  public function getHeaderMenu()
  {
    $items = \Menu\Model\Menu::find([
      'conditions' => 'root_id = 2 AND parent_id is NULL',
      'order'      => 'sort_order ASC',
    ]);
 
    return $items;
  }
 
  public function getHeaderSubMenu()
  {
    $items = \Menu\Model\Menu::find([
      'conditions' => 'root_id = 4 AND parent_id is NULL',
      'order'      => 'sort_order ASC',
    ]);
 
    return $items;
  }
 
  public function getFooterMenu()
  {
    $items = \Menu\Model\Menu::find([
      'conditions' => 'root_id = 3 AND parent_id is NULL',
      'order'      => 'sort_order ASC',
    ]);
 
    return $items;
  }
 
  public function getDateFormat($lang = 'vi')
  {
    $config = $this->getDI()->get('config');
 
    return $config['date_format'][$lang];
  }
 
  public function getTimeFromInt($value)
  {
    if ($value) {
      $hour = floor($value / 100);
      $min = $value % 100;
      $abbreviations = $hour >= 12 ? 'pm' : 'am';
      $hour = $hour > 12 ? $hour - 12 : $hour;
 
      $min = $min == 0 ? null : ($min < 10 ? '0' . $min : $min);
 
      return $min ? $hour . ':' . $min . ' ' . $abbreviations : $hour . ' ' . $abbreviations;
    } else {
      return '';
    }
  }
 
  public function getNumberFormat($number, $decimals = 0, $dec_point = ".", $thousands_sep = ",")
  {
    return number_format($number, $decimals, $dec_point, $thousands_sep);
  }
 
  public function getCurrencyFormat($value, $unit = "đ ")
  {
    return $unit . $this->getNumberFormat($value);
  }
 
  public function slider($name, $partial = 'base')
  {
    return new \Slider\Mvc\Helper($name, $partial);
  }
 
  public function repository($name)
  {
    switch ($name) {
      case "Publication":
        return new \Publication\Repository\PublicationRepository();
        break;
 
    }
  }
 
  public function initTinyMCE4()
  {
    $this->getDi()->get('assets')
      ->collection('admin_js')
      ->addJs('vendor/tinymce_4.6.4/tinymce.min.js')
      ->addJs('vendor/tinymce_4.6.4/plugins/compat3x/plugin.js')
      ->addJs('static/js/admin/tinyMCE4/plugins/bootstrap/bootstrap.js')
      ->addJs('static/js/admin/tinyMCE4/tinyMCE4-init.js');
  }
 
  public function getLatlngFromMapURL($url)
  {
    preg_match("/([0-9]|\.)*\!4d([0-9]|\.)*/", $url, $matches);
    if (count($matches) > 0) {
      $matchStr = $matches[0];
 
      return explode('!4d', $matchStr);
    } else {
      return false;
    }
  }
 
  public function getListArea()
  {
    $locations = \Location\Model\Location::query()->order("popular DESC")->execute();
 
    return $locations;
  }
 
  public function getConfig()
  {
    return $this->di->get('config');
  }
 
  public function getTheme($data)
  {
    $themes = explode(', ', $data);
    $aTheme = $this->di->get('config')['master_data']['theme_tour'];
    foreach ($themes as $key => $theme) {
      $themes[$key] = $aTheme[$theme];
    }
 
    return implode(', ', $themes);
  }
 
  public function generateItinerary($data)
  {
    $itinerary = explode(', ', $data);
    foreach ($itinerary as $key => $des) {
      $itinerary[$key] = ucwords($des);
    }
 
    return $itinerary;
  }
 
  public function generateGoogleMapCord($link)
  {
    $cord = explode(',', explode('@', $link)[1]);
 
    return $cord;
  }
 
  public function getPopularLocation()
  {
    return \Location\Model\Location::getPopularMenu();
  }
 
  public function getOtherLocation()
  {
    return \Location\Model\Location::getOtherMenu();
  }
 
  public function getSliderImages($slideId = 1)
  {
    return $slider = Slider::findFirst($slideId)->getSliderImages();
  }
 
  public function getHomeGallery()
  {
    $slider = Slider::findFirst(2)->getSliderImages()->toArray();
 
    $result = [];
    $numberOfSlider = 7;
    for ($i = 0; $i < count($slider); $i += $numberOfSlider) {
      $temp = [];
      foreach (array_slice($slider, $i, $numberOfSlider) as $slide) {
        array_push($temp, \Slider\Model\SliderImage::findFirst($slide['id']));
      }
 
      array_push($result, $temp);
    }
 
    return $result;
  }
 
  public function getGalleryAtPage($noPage)
  {
    $slider = Slider::findFirst(2)->getSliderImages([
      "limit" => Slider::ITEM_PER_PAGE * $noPage,
    ])->toArray();
 
    $result = [];
    $numberOfSlider = 7;
    for ($i = 0; $i < count($slider); $i += $numberOfSlider) {
      $temp = [];
      foreach (array_slice($slider, $i, $numberOfSlider) as $slide) {
        array_push($temp, \Slider\Model\SliderImage::findFirst($slide['id']));
      }
 
      array_push($result, $temp);
    }
 
    $showReadMore = false;
    if (Slider::findFirst(2)->getSliderImages()->count() > Slider::ITEM_PER_PAGE * $noPage) {
      $showReadMore = true;
    }
 
    return [
      'gallery'        => $result,
      'show_read_more' => $showReadMore,
    ];
  }
 
  public function getDateTime($timestamp, $format)
  {
    $date = new Carbon();
    $date->timestamp($timstamp);
 
    return $date->format($format);
    // Thursday 25th of December 1975 02:15:16 PM
  }
 
  public function getFBPosts()
  {
    /* PHP SDK v5.0.0 */
    // $fb_news = FacebookNews::find();
    // $result = [];
    // foreach ($fb_news as $news) {
    //     $result[] = json_decode($news->content, JSON_HEX_APOS);
    // }
    if (!$this->getDI()->get('cache')->exists('fb_news')) {
      $this->scrapingFBPosts();
    }
    $result = $this->getDI()->get('cache')->get('fb_news');
 
    return $result;
  }
 
  public function scrapingFBPosts()
  {
    /* PHP SDK v5.0.0 */
    /* make the API call */
    try {
      $config = $this->di->get('config');
 
      $posts = $this->di->get('fb')->get(
        '/' . $config['fb_page_id'] . '/feed?limit=10',
        $config['fb_access_token']
      )->getDecodedBody()['data'];
 
      $result = [];
      foreach ($posts as $post) {
        $fPost = $this->di->get('fb')->get(
          $post['id'] . "?fields=full_picture,description,name,link,message",
          $config['fb_access_token']
        )->getDecodedBody();
 
        if (!$fPost['full_picture']) {
          continue;
        } else {
          if ($fPost['description'] == '') {
            $fPost['description'] = $fPost['message'];
          }
 
          if (count($result) >= 8) {
            break;
          } elseif (strpos(strtolower($fPost['description']), '#aeswebsite') !== false) {
            array_push($result, $fPost);
          } elseif (strpos(strtolower($fPost['description']), '#aes') !== false) {
            array_push($result, $fPost);
          } else {
            continue;
          }
        }
      }
 
      return $this->storeFacebookNews($result);
    } catch (Facebook\Exceptions\FacebookResponseException $e) {
      return false;
    } catch (Facebook\Exceptions\FacebookSDKException $e) {
      return false;
    } catch (\Exception $e) {
      return false;
    }
    /* handle the result */
  }
 
  public function getRegistry()
  {
    return $this->di->get('registry');
  }
 
  public function getAllEvent()
  {
    // The data set to paginate
    $currentPage = (int)$_GET["page"];
 
    $type = \Publication\Model\Type::findCachedBySlug(\Publication\Model\Publication::TYPE_EVENT);
    $events = \Publication\Model\Publication::find([
      "conditions" => "type_id={$type->getId()}",
      "order"      => "date DESC",
    ]);
 
    // Create a Model paginator, show 10 rows by page starting from $currentPage
    $paginator = new \Phalcon\Paginator\Adapter\Model(
      [
        "data"  => $events,
        "limit" => 10,
        "page"  => $currentPage,
      ]
    );
 
    // Get the paginated results
    $page = $paginator->getPaginate();
 
    return $page;
  }
 
  public function getFeaturedArticles($order = 'date DESC', $limit = 1000)
  {
    $model = constant('\Publication\Model\Publication::TYPE_NEWS');
    $articles = \Publication\Model\News::find([
      'conditions' => 'type = :typeModel: AND pin_top = :featured_article:',
      'bind'       => ['typeModel' => strtolower($model), 'featured_article' => \Publication\Model\Publication::STATE_ON],
      'order'      => $order,
      'limit'      => $limit,
    ]);
 
    return $articles;
  }
 
  public function getAllNews()
  {
    $currentPage = (int)$_GET["page"];
 
    $featuredNews = \Publication\Model\News::find([
      'conditions' => 'type = :typeModel: AND pin_top = :featured_article:',
      'bind'       => ['typeModel' => "news", 'featured_article' => \Publication\Model\Publication::STATE_ON],
      'order'      => "date DESC",
      'limit'      => 5,
      'columns'    => 'id',
    ]);
 
    $fId = [];
    foreach ($featuredNews->toArray() as $featured) {
      array_push($fId, $featured['id']);
    }
    $ids = implode(', ', $fId);
 
    $type = \Publication\Model\Type::findCachedBySlug(\Publication\Model\Publication::TYPE_NEWS);
    $news = \Publication\Model\Publication::find([
      "conditions" => "type_id={$type->getId()} and id NOT IN ($ids)",
      "order"      => "date DESC",
    ]);
 
    // Create a Model paginator, show 10 rows by page starting from $currentPage
    $paginator = new \Phalcon\Paginator\Adapter\Model(
      [
        "data"  => $news,
        "limit" => 10,
        "page"  => $currentPage,
      ]
    );
 
    // Get the paginated results
    $page = $paginator->getPaginate();
 
    return $page;
  }
 
  public function getCoordinate($ggMapLink)
  {
    $coord = explode('!4d', explode('3d', $ggMapLink)[1]);
 
    return $coord;
  }
 
  public function getPeople($type)
  {
    return \User\Model\User::find([
      "conditions" => "type = :type:",
      "bind"       => [
        "type" => $type,
      ],
    ]);
  }
 
  public function parseUserExperience($experience)
  {
    $experience = preg_replace("/\r|\n/", "<br/>", $experience);
    $result = array_filter(explode('<br/>', trim($experience)));
 
    return $result;
  }
 
}
#6Application\Mvc\Helper->getAllNews()
/var/www/html/ciss/aesvietnam.edu.vn/web/src/data/cache/volt/%%var%%www%%html%%ciss%%aesvietnam.edu.vn%%web%%src%%app%%themes%%default%%page%%index%%_templates%%news.volt.php (1)
<?php $sideSubTitle = array('title' => $this->helper->translate('News') . '', 'color' => '#313131'); ?> <?php $paging['total'] = $source->total_pages; ?> <?php $paging['current'] = $source->current; ?> <?php $paging['next'] = $source->next; ?> <?php $paging['prev'] = $source->before; ?> <?php $source = $this->helper->getAllNews(); ?> <?php $paging['total'] = $source->total_pages; ?> <?php $paging['current'] = $source->current; ?> <?php $arrNews = array(); ?> <?php $v6331623711038596121iterator = $source->items; $v6331623711038596121incr = 0; $v6331623711038596121loop = new stdClass(); $v6331623711038596121loop->length = count($v6331623711038596121iterator); $v6331623711038596121loop->index = 1; $v6331623711038596121loop->index0 = 1; $v6331623711038596121loop->revindex = $v6331623711038596121loop->length; $v6331623711038596121loop->revindex0 = $v6331623711038596121loop->length - 1; ?><?php foreach ($v6331623711038596121iterator as $news) { ?><?php $v6331623711038596121loop->first = ($v6331623711038596121incr == 0); $v6331623711038596121loop->index = $v6331623711038596121incr + 1; $v6331623711038596121loop->index0 = $v6331623711038596121incr; $v6331623711038596121loop->revindex = $v6331623711038596121loop->length - $v6331623711038596121incr; $v6331623711038596121loop->revindex0 = $v6331623711038596121loop->length - ($v6331623711038596121incr + 1); $v6331623711038596121loop->last = ($v6331623711038596121incr == ($v6331623711038596121loop->length - 1)); ?> <?php $category = $news->getCategories(array('limit' => 1))[0]; ?> <?php $arrNews[$v6331623711038596121loop->index0] = array('image' => array('md' => array('src' => $this->helper->image(array('id' => $news->getId(), 'type' => $news->getImgFolder('cover_photo'), 'width' => 500, 'height' => 321, 'strategy' => 'a', 'stretch' => 'false', 'widthHeight' => 'false'))->cachedRelPath() . '?' . $news->getUpdatedAt(), 'media' => '1024'), 'sm' => array('src' => $this->helper->image(array('id' => $news->getId(), 'type' => $news->getImgFolder('cover_photo'), 'width' => 768, 'height' => 494, 'strategy' => 'a', 'stretch' => 'false', 'widthHeight' => 'false'))->cachedRelPath() . '?' . $news->getUpdatedAt(), 'media' => '768'), 'xs' => array('src' => $this->helper->image(array('id' => $news->getId(), 'type' => $news->getImgFolder('cover_photo'), 'width' => 460, 'height' => 296, 'strategy' => 'a', 'stretch' => 'false', 'widthHeight' => 'false'))->cachedRelPath() . '?' . $news->getUpdatedAt(), 'media' => '460')), 'title' => $news->getTitle(), 'date' => $news->getDate('d-m-Y'), 'description' => $news->getShortDescription(), 'url' => $this->helper->langUrl(array('for' => 'publication', 'slug' => $news->getSlug(), 'type' => $category->getSlug(true))), 'meta' => array('isHorizontal' => true, 'alignTop' => true, 'isGradient' => false)); ?> <?php $v6331623711038596121incr++; } ?>
 
<div id="news_page">
  <div class="breadcrumb-container">
    <div class="container"><?php echo $this->helper->widget('Page')->breadcrumb($page); ?></div>
  </div>
 
  <div class="container">
    <?php $this->partial('PatternLab/atoms-side-sub-title', array('data' => \Application\Mvc\View\Engine\Filters\CastObj::cast($sideSubTitle))); ?>
  </div>
 
  <div class="container">
    <div class="featured_news">
      <?php echo $this->helper->widget('Publication')->featured(constant('\Publication\Model\Publication::TYPE_NEWS'), 5, 'date DESC', '', 'featured_news'); ?>
    </div>
  </div>
 
  <div class="divider visible-xs visible-sm"></div>
 
  <div class="container">
    <div class="another-news">
      <?php $this->partial('PatternLab/organisms-list-news', array('data' => \Application\Mvc\View\Engine\Filters\CastObj::cast($arrNews))); ?>
    </div>
 
    <?php $this->partial('PatternLab/molecules-paging', array('data' => $paging)); ?>
  </div>
</div>
#7Phalcon\Mvc\View\Engine\Volt->render(/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/themes/default/Page/index/_templates/news.volt, Array([isMobile] => , [isTablet] => , [bodyClass] => page, [page] => Object(Page\Model\Page), [active_menu] => news, [no_page] => 3), true)
#8Phalcon\Mvc\View->_engineRender(Array([.volt] => Object(Application\Mvc\View\Engine\Volt), [.phtml] => Object(Phalcon\Mvc\View\Engine\Php)), index/_templates/news, true, true, null)
#9Phalcon\Mvc\View->render(index, index, Array([lang] => en, [slug] => news))
/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/Bootstrap.php (429)
<?php
 
namespace YonaCMS;
 
use Admin\Model\AdminUser;
 
/**
 * Bootstrap
 *
 * @copyright Copyright (c) 2011 - 2014 Aleksandr Torosh (http://wezoom.com.ua)
 * @author    Aleksandr Torosh <webtorua@gmail.com>
 */
class Bootstrap
{
 
  public function run()
  {
    $di = new \Phalcon\DI\FactoryDefault();
 
    // Config
    require_once APPLICATION_PATH . '/modules/Cms/Config.php';
    $config = \Cms\Config::get();
    $di->set('config', $config);
 
    // Registry
    $registry = new \Phalcon\Registry();
    $di->set('registry', $registry);
 
    // Loader
    $loader = new \Phalcon\Loader();
    $loader->registerNamespaces($config->loader->namespaces->toArray());
    $loader->registerDirs([APPLICATION_PATH . "/plugins/"]);
    $loader->register();
 
    // Database
    $db = new \Phalcon\Db\Adapter\Pdo\Mysql([
      "host"     => $config->database->host,
      "username" => $config->database->username,
      "password" => $config->database->password,
      "dbname"   => $config->database->dbname,
      "charset"  => $config->database->charset,
    ]);
    $di->set('db', $db);
 
    // View
    $this->initView($di);
 
    // URL
    $url = new \Phalcon\Mvc\Url();
    $url->setBasePath($config->base_path);
    $url->setBaseUri($config->base_path);
    $di->set('url', $url);
 
    // Cache
    $this->initCache($di);
 
    // CMS
    $cmsModel = new \Cms\Model\Configuration();
    $registry->cms = $cmsModel->getConfig(); // Отправляем в Registry
 
    // Application
    $application = new \Phalcon\Mvc\Application();
    $application->registerModules($config->modules->toArray());
 
    // Events Manager, Dispatcher
    $this->initEventManager($di);
 
    // Session
    $session = new \Phalcon\Session\Adapter\Files();
    $session->start();
    $di->set('session', $session);
 
    $acl = new \Application\Acl\DefaultAcl();
    $di->set('acl', $acl);
 
    // JS Assets
    $this->initAssetsManager($di);
 
    // Flash helper
    $flash = new \Phalcon\Flash\Session([
      'error'   => 'alert alert-danger',
      'success' => 'alert alert-success',
      'notice'  => 'alert alert-info',
      'warning' => 'alert alert-warning',
    ]);
    $di->set('flash', $flash);
 
    $di->set('helper', new \Application\Mvc\Helper());
 
    /**
     * Custom DI
     */
    $di->set('email', function () use ($config) {
      $sendgrid_config = $config['sendgrid'];
      $key = $sendgrid_config['key'];
      $settings = $sendgrid_config['settings'];
 
      return new \Application\Mvc\EmailHelper($key, $settings);
    });
 
    /**
     * Guzzle
     */
    $di->set('guzzle', function () use ($config) {
      return new \GuzzleHttp\Client();
    });
 
    // FB
    $di->set('fb', function () use ($config, $registry) {
      return new \Facebook\Facebook([
        'app_id'                => $registry->cms['FB_APP_ID'],
        'app_secret'            => $registry->cms['FB_APP_SECRET'],
        'default_graph_version' => 'v2.11',
        'default_access_token'  => $registry->cms['FB_APP_ACCESS_TOKEN'], // optional
      ]);
    });
 
    // Routing
    $this->initRouting($application, $di);
 
    $application->setDI($di);
 
    // Main dispatching process
    $this->dispatch($di);
  }
 
  private function initRouting($application, $di)
  {
    $router = new \Application\Mvc\Router\DefaultRouter();
    $router->setDi($di);
    foreach ($application->getModules() as $module) {
      $routesClassName = str_replace('Module', 'Routes', $module['className']);
      if (class_exists($routesClassName)) {
        $routesClass = new $routesClassName();
        $router = $routesClass->init($router);
      }
      $initClassName = str_replace('Module', 'Init', $module['className']);
      if (class_exists($initClassName)) {
        new $initClassName();
      }
    }
    $di->set('router', $router);
  }
 
  private function initAssetsManager($di)
  {
    $config = $di->get('config');
    $isProductionEnv = APPLICATION_ENV == "production";
    $locator = $isProductionEnv ? ROOT . '/' : '/';
    $jsMin = $isProductionEnv ? new \Phalcon\Assets\Filters\Jsmin() : new \Phalcon\Assets\Filters\None();
    $cssMin = $isProductionEnv ? new \Phalcon\Assets\Filters\Cssmin() : new \Phalcon\Assets\Filters\None();
 
    $assetsManager = new \Application\Assets\Manager();
    if ($isProductionEnv) {
      $js_collection = $assetsManager->collection('js')
        ->setLocal(true)
        ->addFilter($jsMin)
        ->setTargetPath(ROOT . '/assets/main.js')
        ->setTargetUri('assets/main.js')
        ->join(true);
    } else {
      $js_collection = $assetsManager->collection('js')->setLocal(true);
    }
    if ($config->assets->js) {
      foreach ($config->assets->js as $js) {
        $js_collection->addJs($locator . $js);
      }
    }
 
    if ($isProductionEnv) {
      $css_collection = $assetsManager->collection('css')
        ->setLocal(true)
        ->addFilter($cssMin)
        ->setTargetPath(ROOT . '/assets/main.min.css')
        ->setTargetUri('/assets/main.min.css')
        ->join(true);
    } else {
      $css_collection = $assetsManager->collection('css')->setLocal(true);
    }
    if ($config->assets->css) {
      foreach ($config->assets->css as $css) {
        $css_collection->addCss($locator . $css);
      }
    }
 
    // Admin JS Assets
    $assetsManager->collection('modules-admin-js')
      ->setLocal(true)
      ->addFilter(new \Phalcon\Assets\Filters\Jsmin())
      ->setTargetPath(ROOT . '/assets/modules-admin.js')
      ->setTargetUri('assets/modules-admin.js')
      ->join(true);
 
    // Admin LESS Assets
    $assetsManager->collection('modules-admin-less')
      ->setLocal(true)
      ->addFilter(new \Application\Assets\Filter\Less())
      ->setTargetPath(ROOT . '/assets/modules-admin.less')
      ->setTargetUri('assets/modules-admin.less')
      ->join(true)
      ->addCss(APPLICATION_PATH . '/modules/Admin/assets/admin.less');
 
    $di->set('assets', $assetsManager);
 
    $admin_js_first_load_collection = $assetsManager->collection('first_load_js')->join($isProductionEnv);
    if ($config->assets->first_load_js) {
      foreach ($config->assets->first_load_js as $js) {
        $admin_js_first_load_collection->addJs('/' . $js);
      }
    }
 
    $admin_js_collection = $assetsManager->collection('admin_js')->join($isProductionEnv);
    if ($config->assets->admin_js) {
      foreach ($config->assets->admin_js as $js) {
        $admin_js_collection->addJs('/' . $js);
      }
    }
 
    $admin_css_collection = $assetsManager->collection('admin_css')->setLocal(true);
    if ($config->assets->admin_css) {
      foreach ($config->assets->admin_css as $css) {
        $admin_css_collection->addCss('/' . $css);
      }
    }
  }
 
  private function initEventManager($di)
  {
    $eventsManager = new \Phalcon\Events\Manager();
    $dispatcher = new \Phalcon\Mvc\Dispatcher();
 
    $eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) use ($di) {
      new \YonaCMS\Plugin\CheckPoint($di->get('request'));
      new \YonaCMS\Plugin\Localization($dispatcher);
      new \YonaCMS\Plugin\AdminLocalization($di->get('config'));
      new \YonaCMS\Plugin\Acl($di->get('acl'), $dispatcher, $di->get('view'));
      new \YonaCMS\Plugin\MobileDetect($di->get('session'), $di->get('view'), $di->get('request'));
 
      $auth = $di->get('session')->get('auth');
      if ($auth) {
        $role = AdminUser::getRoleById($auth->id);
        $di->get('view')->user_role = $role;
      }
    });
 
    $eventsManager->attach("dispatch:afterDispatchLoop", function ($event, $dispatcher) use ($di) {
      new \Seo\Plugin\SeoManager($dispatcher, $di->get('request'), $di->get('router'), $di->get('view'));
      new \YonaCMS\Plugin\Title($di);
    });
 
    // Profiler
    $registry = $di->get('registry');
    if ($registry->cms['PROFILER']) {
      $profiler = new \Phalcon\Db\Profiler();
      $di->set('profiler', $profiler);
 
      $eventsManager->attach('db', function ($event, $db) use ($profiler) {
        if ($event->getType() == 'beforeQuery') {
          $profiler->startProfile($db->getSQLStatement());
        }
        if ($event->getType() == 'afterQuery') {
          $profiler->stopProfile();
        }
      });
    }
 
    $db = $di->get('db');
    $db->setEventsManager($eventsManager);
 
    $dispatcher->setEventsManager($eventsManager);
    $di->set('dispatcher', $dispatcher);
  }
 
  private function initView($di)
  {
    $view = new \Phalcon\Mvc\View();
 
    $theme = $di->get('config')['theme'];
    if ($theme) {
      $themePath = __DIR__ . '/themes/' . $di->get('config')['theme'] . '/';
      if (file_exists($themePath)) {
        define('MAIN_VIEW_PATH', '../../../themes/' . $theme . '/');
      }
    } else {
      define('MAIN_VIEW_PATH', '../../../views/');
    }
 
    $view->setMainView(MAIN_VIEW_PATH . 'main');
    $view->setLayoutsDir(MAIN_VIEW_PATH . '/layouts/');
    $view->setLayout('main');
    $view->setPartialsDir(MAIN_VIEW_PATH . '/partials/');
 
    // Volt
    $volt = new \Application\Mvc\View\Engine\Volt($view, $di);
    $volt->setOptions(['compiledPath' => APPLICATION_PATH . '/../data/cache/volt/']);
    $volt->initCompiler();
 
    $phtml = new \Phalcon\Mvc\View\Engine\Php($view, $di);
    $viewEngines = [
      ".volt"  => $volt,
      ".phtml" => $phtml,
    ];
 
    $view->registerEngines($viewEngines);
    $eventsManager = new \Phalcon\Events\Manager();
    $eventsManager->attach(
      "view:afterRender", new \Application\Mvc\View\Event\ShortCodeParser($view)
    );
    $view->setEventsManager($eventsManager);
 
    $ajax = $di->get('request')->getQuery('_ajax');
    if ($ajax) {
      $view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_LAYOUT);
    }
 
    $di->set('view', $view);
 
    return $view;
  }
 
  private function initCache($di)
  {
    $config = $di->get('config');
 
    $cacheFrontend = new \Phalcon\Cache\Frontend\Data([
      "lifetime" => 172800,
      "prefix"   => HOST_HASH,
    ]);
 
    $cache = null;
    switch ($config->cache) {
      case 'file':
        $cache = new \Phalcon\Cache\Backend\File($cacheFrontend, [
          "cacheDir" => APPLICATION_PATH . "/../data/cache/backend/",
        ]);
        break;
      case 'memcache':
        $cache = new \Phalcon\Cache\Backend\Memcache(
          $cacheFrontend, [
          "host" => $config->memcache->host,
          "port" => $config->memcache->port,
        ]);
        break;
    }
    $di->set('cache', $cache, true);
    $di->set('modelsCache', $cache, true);
 
    \Application\Widget\Proxy::$cache = $cache; // Modules Widget System
 
    $modelsMetadata = new \Phalcon\Mvc\Model\Metadata\Memory();
    $di->set('modelsMetadata', $modelsMetadata);
  }
 
  private function dispatch($di)
  {
    $router = $di['router'];
 
    $router->handle();
 
    $view = $di['view'];
 
    $dispatcher = $di['dispatcher'];
 
//var_dump($router->getModuleName());
//var_dump($router->getControllerName());
//var_dump($router->getActionName());
//die;
 
    $response = $di['response'];
 
    $dispatcher->setModuleName($router->getModuleName());
    $dispatcher->setControllerName($router->getControllerName());
    $dispatcher->setActionName($router->getActionName());
    $dispatcher->setParams($router->getParams());
 
 
    $moduleName = \Application\Utils\ModuleName::camelize($router->getModuleName());
    $ModuleClassName = $moduleName . '\Module';
    if (class_exists($ModuleClassName)) {
      $module = new $ModuleClassName;
      $module->registerAutoloaders();
      $module->registerServices($di);
 
      $theme = $di->get('config')['theme'];
      if ($theme) {
        $themePath = '/themes/' . $di->get('config')['theme'] . '/' . $moduleName . '/';
        if (file_exists(__DIR__ . $themePath)) {
          $view->setViewsDir(__DIR__ . $themePath);
        }
      }
    }
//echo(time());die;
    $view->start();
 
    $registry = $di['registry'];
    if ($registry->cms['DEBUG_MODE']) {
      $debug = new \Phalcon\Debug();
      $debug->listen();
 
      $dispatcher->dispatch();
    } else {
      try {
        $dispatcher->dispatch();
      } catch (\Phalcon\Exception $e) {
        // Errors catching
 
        $view->setViewsDir(__DIR__ . '/modules/Index/views/');
        $view->setPartialsDir('');
        $view->e = $e;
 
        if ($e instanceof \Phalcon\Mvc\Dispatcher\Exception) {
          $response->setHeader(404, 'Not Found');
          $view->partial('error/error404');
        } else {
          $response->setHeader(503, 'Service Unavailable');
          $view->partial('error/error503');
        }
        $response->sendHeaders();
        echo $response->getContent();
 
        return;
      }
    }
  //die;
    $view->render(
      $dispatcher->getControllerName(),
      $dispatcher->getActionName(),
      $dispatcher->getParams()
    );
    $view->finish();
 
    $response = $di['response'];
 
    // AJAX
    $request = $di['request'];
    $_ajax = $request->getQuery('_ajax');
    if ($_ajax) {
      $contents = $view->getContent();
 
      $return = new \stdClass();
      $return->html = $contents;
      $return->title = $di->get('helper')->title()->get();
      $return->success = true;
 
      if ($view->bodyClass) {
        $return->bodyClass = $view->bodyClass;
      }
 
      $headers = $response->getHeaders()->toArray();
      if (isset($headers[404]) || isset($headers[503])) {
        $return->success = false;
      }
      $response->setContentType('application/json', 'UTF-8');
      $response->setContent(json_encode($return));
    } else {
      $response->setContent($view->getContent());
    }
 
    $response->sendHeaders();
 
    echo $response->getContent();
  }
 
}
#10YonaCMS\Bootstrap->dispatch(Object(Phalcon\Di\FactoryDefault))
/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/Bootstrap.php (124)
<?php
 
namespace YonaCMS;
 
use Admin\Model\AdminUser;
 
/**
 * Bootstrap
 *
 * @copyright Copyright (c) 2011 - 2014 Aleksandr Torosh (http://wezoom.com.ua)
 * @author    Aleksandr Torosh <webtorua@gmail.com>
 */
class Bootstrap
{
 
  public function run()
  {
    $di = new \Phalcon\DI\FactoryDefault();
 
    // Config
    require_once APPLICATION_PATH . '/modules/Cms/Config.php';
    $config = \Cms\Config::get();
    $di->set('config', $config);
 
    // Registry
    $registry = new \Phalcon\Registry();
    $di->set('registry', $registry);
 
    // Loader
    $loader = new \Phalcon\Loader();
    $loader->registerNamespaces($config->loader->namespaces->toArray());
    $loader->registerDirs([APPLICATION_PATH . "/plugins/"]);
    $loader->register();
 
    // Database
    $db = new \Phalcon\Db\Adapter\Pdo\Mysql([
      "host"     => $config->database->host,
      "username" => $config->database->username,
      "password" => $config->database->password,
      "dbname"   => $config->database->dbname,
      "charset"  => $config->database->charset,
    ]);
    $di->set('db', $db);
 
    // View
    $this->initView($di);
 
    // URL
    $url = new \Phalcon\Mvc\Url();
    $url->setBasePath($config->base_path);
    $url->setBaseUri($config->base_path);
    $di->set('url', $url);
 
    // Cache
    $this->initCache($di);
 
    // CMS
    $cmsModel = new \Cms\Model\Configuration();
    $registry->cms = $cmsModel->getConfig(); // Отправляем в Registry
 
    // Application
    $application = new \Phalcon\Mvc\Application();
    $application->registerModules($config->modules->toArray());
 
    // Events Manager, Dispatcher
    $this->initEventManager($di);
 
    // Session
    $session = new \Phalcon\Session\Adapter\Files();
    $session->start();
    $di->set('session', $session);
 
    $acl = new \Application\Acl\DefaultAcl();
    $di->set('acl', $acl);
 
    // JS Assets
    $this->initAssetsManager($di);
 
    // Flash helper
    $flash = new \Phalcon\Flash\Session([
      'error'   => 'alert alert-danger',
      'success' => 'alert alert-success',
      'notice'  => 'alert alert-info',
      'warning' => 'alert alert-warning',
    ]);
    $di->set('flash', $flash);
 
    $di->set('helper', new \Application\Mvc\Helper());
 
    /**
     * Custom DI
     */
    $di->set('email', function () use ($config) {
      $sendgrid_config = $config['sendgrid'];
      $key = $sendgrid_config['key'];
      $settings = $sendgrid_config['settings'];
 
      return new \Application\Mvc\EmailHelper($key, $settings);
    });
 
    /**
     * Guzzle
     */
    $di->set('guzzle', function () use ($config) {
      return new \GuzzleHttp\Client();
    });
 
    // FB
    $di->set('fb', function () use ($config, $registry) {
      return new \Facebook\Facebook([
        'app_id'                => $registry->cms['FB_APP_ID'],
        'app_secret'            => $registry->cms['FB_APP_SECRET'],
        'default_graph_version' => 'v2.11',
        'default_access_token'  => $registry->cms['FB_APP_ACCESS_TOKEN'], // optional
      ]);
    });
 
    // Routing
    $this->initRouting($application, $di);
 
    $application->setDI($di);
 
    // Main dispatching process
    $this->dispatch($di);
  }
 
  private function initRouting($application, $di)
  {
    $router = new \Application\Mvc\Router\DefaultRouter();
    $router->setDi($di);
    foreach ($application->getModules() as $module) {
      $routesClassName = str_replace('Module', 'Routes', $module['className']);
      if (class_exists($routesClassName)) {
        $routesClass = new $routesClassName();
        $router = $routesClass->init($router);
      }
      $initClassName = str_replace('Module', 'Init', $module['className']);
      if (class_exists($initClassName)) {
        new $initClassName();
      }
    }
    $di->set('router', $router);
  }
 
  private function initAssetsManager($di)
  {
    $config = $di->get('config');
    $isProductionEnv = APPLICATION_ENV == "production";
    $locator = $isProductionEnv ? ROOT . '/' : '/';
    $jsMin = $isProductionEnv ? new \Phalcon\Assets\Filters\Jsmin() : new \Phalcon\Assets\Filters\None();
    $cssMin = $isProductionEnv ? new \Phalcon\Assets\Filters\Cssmin() : new \Phalcon\Assets\Filters\None();
 
    $assetsManager = new \Application\Assets\Manager();
    if ($isProductionEnv) {
      $js_collection = $assetsManager->collection('js')
        ->setLocal(true)
        ->addFilter($jsMin)
        ->setTargetPath(ROOT . '/assets/main.js')
        ->setTargetUri('assets/main.js')
        ->join(true);
    } else {
      $js_collection = $assetsManager->collection('js')->setLocal(true);
    }
    if ($config->assets->js) {
      foreach ($config->assets->js as $js) {
        $js_collection->addJs($locator . $js);
      }
    }
 
    if ($isProductionEnv) {
      $css_collection = $assetsManager->collection('css')
        ->setLocal(true)
        ->addFilter($cssMin)
        ->setTargetPath(ROOT . '/assets/main.min.css')
        ->setTargetUri('/assets/main.min.css')
        ->join(true);
    } else {
      $css_collection = $assetsManager->collection('css')->setLocal(true);
    }
    if ($config->assets->css) {
      foreach ($config->assets->css as $css) {
        $css_collection->addCss($locator . $css);
      }
    }
 
    // Admin JS Assets
    $assetsManager->collection('modules-admin-js')
      ->setLocal(true)
      ->addFilter(new \Phalcon\Assets\Filters\Jsmin())
      ->setTargetPath(ROOT . '/assets/modules-admin.js')
      ->setTargetUri('assets/modules-admin.js')
      ->join(true);
 
    // Admin LESS Assets
    $assetsManager->collection('modules-admin-less')
      ->setLocal(true)
      ->addFilter(new \Application\Assets\Filter\Less())
      ->setTargetPath(ROOT . '/assets/modules-admin.less')
      ->setTargetUri('assets/modules-admin.less')
      ->join(true)
      ->addCss(APPLICATION_PATH . '/modules/Admin/assets/admin.less');
 
    $di->set('assets', $assetsManager);
 
    $admin_js_first_load_collection = $assetsManager->collection('first_load_js')->join($isProductionEnv);
    if ($config->assets->first_load_js) {
      foreach ($config->assets->first_load_js as $js) {
        $admin_js_first_load_collection->addJs('/' . $js);
      }
    }
 
    $admin_js_collection = $assetsManager->collection('admin_js')->join($isProductionEnv);
    if ($config->assets->admin_js) {
      foreach ($config->assets->admin_js as $js) {
        $admin_js_collection->addJs('/' . $js);
      }
    }
 
    $admin_css_collection = $assetsManager->collection('admin_css')->setLocal(true);
    if ($config->assets->admin_css) {
      foreach ($config->assets->admin_css as $css) {
        $admin_css_collection->addCss('/' . $css);
      }
    }
  }
 
  private function initEventManager($di)
  {
    $eventsManager = new \Phalcon\Events\Manager();
    $dispatcher = new \Phalcon\Mvc\Dispatcher();
 
    $eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) use ($di) {
      new \YonaCMS\Plugin\CheckPoint($di->get('request'));
      new \YonaCMS\Plugin\Localization($dispatcher);
      new \YonaCMS\Plugin\AdminLocalization($di->get('config'));
      new \YonaCMS\Plugin\Acl($di->get('acl'), $dispatcher, $di->get('view'));
      new \YonaCMS\Plugin\MobileDetect($di->get('session'), $di->get('view'), $di->get('request'));
 
      $auth = $di->get('session')->get('auth');
      if ($auth) {
        $role = AdminUser::getRoleById($auth->id);
        $di->get('view')->user_role = $role;
      }
    });
 
    $eventsManager->attach("dispatch:afterDispatchLoop", function ($event, $dispatcher) use ($di) {
      new \Seo\Plugin\SeoManager($dispatcher, $di->get('request'), $di->get('router'), $di->get('view'));
      new \YonaCMS\Plugin\Title($di);
    });
 
    // Profiler
    $registry = $di->get('registry');
    if ($registry->cms['PROFILER']) {
      $profiler = new \Phalcon\Db\Profiler();
      $di->set('profiler', $profiler);
 
      $eventsManager->attach('db', function ($event, $db) use ($profiler) {
        if ($event->getType() == 'beforeQuery') {
          $profiler->startProfile($db->getSQLStatement());
        }
        if ($event->getType() == 'afterQuery') {
          $profiler->stopProfile();
        }
      });
    }
 
    $db = $di->get('db');
    $db->setEventsManager($eventsManager);
 
    $dispatcher->setEventsManager($eventsManager);
    $di->set('dispatcher', $dispatcher);
  }
 
  private function initView($di)
  {
    $view = new \Phalcon\Mvc\View();
 
    $theme = $di->get('config')['theme'];
    if ($theme) {
      $themePath = __DIR__ . '/themes/' . $di->get('config')['theme'] . '/';
      if (file_exists($themePath)) {
        define('MAIN_VIEW_PATH', '../../../themes/' . $theme . '/');
      }
    } else {
      define('MAIN_VIEW_PATH', '../../../views/');
    }
 
    $view->setMainView(MAIN_VIEW_PATH . 'main');
    $view->setLayoutsDir(MAIN_VIEW_PATH . '/layouts/');
    $view->setLayout('main');
    $view->setPartialsDir(MAIN_VIEW_PATH . '/partials/');
 
    // Volt
    $volt = new \Application\Mvc\View\Engine\Volt($view, $di);
    $volt->setOptions(['compiledPath' => APPLICATION_PATH . '/../data/cache/volt/']);
    $volt->initCompiler();
 
    $phtml = new \Phalcon\Mvc\View\Engine\Php($view, $di);
    $viewEngines = [
      ".volt"  => $volt,
      ".phtml" => $phtml,
    ];
 
    $view->registerEngines($viewEngines);
    $eventsManager = new \Phalcon\Events\Manager();
    $eventsManager->attach(
      "view:afterRender", new \Application\Mvc\View\Event\ShortCodeParser($view)
    );
    $view->setEventsManager($eventsManager);
 
    $ajax = $di->get('request')->getQuery('_ajax');
    if ($ajax) {
      $view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_LAYOUT);
    }
 
    $di->set('view', $view);
 
    return $view;
  }
 
  private function initCache($di)
  {
    $config = $di->get('config');
 
    $cacheFrontend = new \Phalcon\Cache\Frontend\Data([
      "lifetime" => 172800,
      "prefix"   => HOST_HASH,
    ]);
 
    $cache = null;
    switch ($config->cache) {
      case 'file':
        $cache = new \Phalcon\Cache\Backend\File($cacheFrontend, [
          "cacheDir" => APPLICATION_PATH . "/../data/cache/backend/",
        ]);
        break;
      case 'memcache':
        $cache = new \Phalcon\Cache\Backend\Memcache(
          $cacheFrontend, [
          "host" => $config->memcache->host,
          "port" => $config->memcache->port,
        ]);
        break;
    }
    $di->set('cache', $cache, true);
    $di->set('modelsCache', $cache, true);
 
    \Application\Widget\Proxy::$cache = $cache; // Modules Widget System
 
    $modelsMetadata = new \Phalcon\Mvc\Model\Metadata\Memory();
    $di->set('modelsMetadata', $modelsMetadata);
  }
 
  private function dispatch($di)
  {
    $router = $di['router'];
 
    $router->handle();
 
    $view = $di['view'];
 
    $dispatcher = $di['dispatcher'];
 
//var_dump($router->getModuleName());
//var_dump($router->getControllerName());
//var_dump($router->getActionName());
//die;
 
    $response = $di['response'];
 
    $dispatcher->setModuleName($router->getModuleName());
    $dispatcher->setControllerName($router->getControllerName());
    $dispatcher->setActionName($router->getActionName());
    $dispatcher->setParams($router->getParams());
 
 
    $moduleName = \Application\Utils\ModuleName::camelize($router->getModuleName());
    $ModuleClassName = $moduleName . '\Module';
    if (class_exists($ModuleClassName)) {
      $module = new $ModuleClassName;
      $module->registerAutoloaders();
      $module->registerServices($di);
 
      $theme = $di->get('config')['theme'];
      if ($theme) {
        $themePath = '/themes/' . $di->get('config')['theme'] . '/' . $moduleName . '/';
        if (file_exists(__DIR__ . $themePath)) {
          $view->setViewsDir(__DIR__ . $themePath);
        }
      }
    }
//echo(time());die;
    $view->start();
 
    $registry = $di['registry'];
    if ($registry->cms['DEBUG_MODE']) {
      $debug = new \Phalcon\Debug();
      $debug->listen();
 
      $dispatcher->dispatch();
    } else {
      try {
        $dispatcher->dispatch();
      } catch (\Phalcon\Exception $e) {
        // Errors catching
 
        $view->setViewsDir(__DIR__ . '/modules/Index/views/');
        $view->setPartialsDir('');
        $view->e = $e;
 
        if ($e instanceof \Phalcon\Mvc\Dispatcher\Exception) {
          $response->setHeader(404, 'Not Found');
          $view->partial('error/error404');
        } else {
          $response->setHeader(503, 'Service Unavailable');
          $view->partial('error/error503');
        }
        $response->sendHeaders();
        echo $response->getContent();
 
        return;
      }
    }
  //die;
    $view->render(
      $dispatcher->getControllerName(),
      $dispatcher->getActionName(),
      $dispatcher->getParams()
    );
    $view->finish();
 
    $response = $di['response'];
 
    // AJAX
    $request = $di['request'];
    $_ajax = $request->getQuery('_ajax');
    if ($_ajax) {
      $contents = $view->getContent();
 
      $return = new \stdClass();
      $return->html = $contents;
      $return->title = $di->get('helper')->title()->get();
      $return->success = true;
 
      if ($view->bodyClass) {
        $return->bodyClass = $view->bodyClass;
      }
 
      $headers = $response->getHeaders()->toArray();
      if (isset($headers[404]) || isset($headers[503])) {
        $return->success = false;
      }
      $response->setContentType('application/json', 'UTF-8');
      $response->setContent(json_encode($return));
    } else {
      $response->setContent($view->getContent());
    }
 
    $response->sendHeaders();
 
    echo $response->getContent();
  }
 
}
#11YonaCMS\Bootstrap->run()
/var/www/html/ciss/aesvietnam.edu.vn/web/src/web/index.php (24)
<?php
 
chdir(dirname(__DIR__));
 
define('ROOT', __DIR__);
define('HOST_HASH', substr(md5($_SERVER['HTTP_HOST']), 0, 12));
 
defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
 
if (APPLICATION_ENV === 'development' || APPLICATION_ENV === 'staging') {
  //@TODO: fixed me by update docker to allow config php.ini
  error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT);
 
  ini_set('display_errors', 1);
  ini_set('display_startup_errors', 1);
  ini_set('log_errors', 0);
}
 
define('APPLICATION_PATH', __DIR__ . '/../app');
 
require_once APPLICATION_PATH . '/../vendor/autoload.php';
require_once APPLICATION_PATH . '/Bootstrap.php';
$bootstrap = new YonaCMS\Bootstrap();
$bootstrap->run();
KeyValue
_url/en/news.html
page3
amp;amp;amp;PageSpeednoscript
amp;amp;PageSpeednoscript
amp;PageSpeednoscript
KeyValue
REDIRECT_APPLICATION_ENVproduction
REDIRECT_downgrade-1_0
REDIRECT_STATUS200
APPLICATION_ENVproduction
downgrade-1_0
HTTP_USER_AGENTCCBot/2.0 (https://commoncrawl.org/faq/)
HTTP_ACCEPTtext/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGEen-US,en;q=0.5
HTTP_IF_MODIFIED_SINCEThu, 09 Apr 2020 13:53:54 KRAT
HTTP_ACCEPT_ENCODINGbr,gzip
HTTP_HOSTwww.aesvietnam.edu.vn
HTTP_CONNECTIONKeep-Alive
PATH/sbin:/usr/sbin:/bin:/usr/bin
SERVER_SIGNATURE<address>Apache/2.2.15 (CentOS) Server at www.aesvietnam.edu.vn Port 80</address>\n
SERVER_SOFTWAREApache/2.2.15 (CentOS)
SERVER_NAMEwww.aesvietnam.edu.vn
SERVER_ADDR172.16.254.4
SERVER_PORT80
REMOTE_ADDR18.208.126.130
DOCUMENT_ROOT/var/www/html/ciss/aesvietnam.edu.vn/web/src/web
SERVER_ADMINdinhhoaibao@gmail.com
SCRIPT_FILENAME/var/www/html/ciss/aesvietnam.edu.vn/web/src/web/index.php
REMOTE_PORT40084
REDIRECT_QUERY_STRING_url=/en/news.html&page=3&amp;amp;amp;PageSpeed=noscript&amp;amp;PageSpeed=noscript&amp;PageSpeed=noscript
REDIRECT_URL/en/news.html
GATEWAY_INTERFACECGI/1.1
SERVER_PROTOCOLHTTP/1.1
REQUEST_METHODGET
QUERY_STRING_url=/en/news.html&page=3&amp;amp;amp;PageSpeed=noscript&amp;amp;PageSpeed=noscript&amp;PageSpeed=noscript
REQUEST_URI/en/news.html?page=3&amp;amp;amp;PageSpeed=noscript&amp;amp;PageSpeed=noscript&amp;PageSpeed=noscript
SCRIPT_NAME/index.php
PHP_SELF/index.php
REQUEST_TIME_FLOAT1594811589.2
REQUEST_TIME1594811589
#Path
0/var/www/html/ciss/aesvietnam.edu.vn/web/src/web/index.php
1/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/autoload.php
2/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/composer/autoload_real.php
3/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/composer/ClassLoader.php
4/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/composer/autoload_static.php
5/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/symfony/polyfill-ctype/bootstrap.php
6/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/symfony/polyfill-mbstring/bootstrap.php
7/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/cakephp/core/functions.php
8/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/guzzlehttp/psr7/src/functions_include.php
9/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/guzzlehttp/psr7/src/functions.php
10/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/guzzlehttp/promises/src/functions_include.php
11/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/guzzlehttp/promises/src/functions.php
12/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/guzzlehttp/guzzle/src/functions_include.php
13/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/guzzlehttp/guzzle/src/functions.php
14/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/symfony/polyfill-php72/bootstrap.php
15/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/symfony/polyfill-php72/Php72.php
16/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/symfony/var-dumper/Resources/functions/dump.php
17/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/cakephp/utility/bootstrap.php
18/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/cakephp/utility/Inflector.php
19/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/cakephp/collection/functions.php
20/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/psy/psysh/src/functions.php
21/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/facebook/graph-sdk/src/Facebook/polyfills.php
22/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/sendgrid/sendgrid/lib/SendGrid.php
23/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/sendgrid/sendgrid/lib/helpers/mail/Mail.php
24/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/sendgrid/sendgrid/lib/helpers/contacts/Recipients.php
25/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/sendgrid/sendgrid/lib/helpers/stats/Stats.php
26/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/donatj/phpuseragentparser/Source/UserAgentParser.php
27/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/Bootstrap.php
28/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Cms/Config.php
29/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/config/environment/production.php
30/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/config/global.php
31/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/themes/default/config/assets/assets.php
32/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/themes/default/config/assets/_admin.php
33/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/themes/default/config/assets/_front_page.php
34/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/config/modules.php
35/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Loader/Modules.php
36/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/View/Engine/Volt.php
37/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/View/Event/ShortCodeParser.php
38/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Widget/Proxy.php
39/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Cms/Model/Configuration.php
40/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Acl/DefaultAcl.php
41/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/config/acl.php
42/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Assets/Manager.php
43/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Assets/Filter/Less.php
44/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Helper.php
45/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Menu/Helper/Menu.php
46/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Router/DefaultRouter.php
47/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Index/Routes.php
48/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Helper/CmsCache.php
49/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Admin/Routes.php
50/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Widget/Routes.php
51/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Page/Routes.php
52/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Page/Model/Page.php
53/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Model/Model.php
54/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Utils/Tree/Node/NodeTrait.php
55/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Utils/Tree/Builder/TreeBuilderTrait.php
56/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Publication/Routes.php
57/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Publication/Model/Type.php
58/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Slider/Routes.php
59/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Seo/Routes.php
60/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Menu/Routes.php
61/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Menu/Model/Type.php
62/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Tree/Routes.php
63/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Tree/Init.php
64/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Tree/Mvc/Helper.php
65/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Sitemap/Routes.php
66/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/User/Routes.php
67/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Popup/Routes.php
68/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Subscribe/Routes.php
69/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Utils/ModuleName.php
70/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Page/Module.php
71/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/plugins/CheckPoint.php
72/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/plugins/Localization.php
73/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Cms/Model/Translate.php
74/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/plugins/AdminLocalization.php
75/var/www/html/ciss/aesvietnam.edu.vn/web/src/data/translations/admin/en.php
76/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/plugins/Acl.php
77/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/plugins/MobileDetect.php
78/var/www/html/ciss/aesvietnam.edu.vn/web/src/vendor/mobiledetect/mobiledetectlib/Mobile_Detect.php
79/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Page/Controller/IndexController.php
80/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Controller.php
81/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Page/Model/Translate/PageTranslate.php
82/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Model/Translate.php
83/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/ImageHelper.php
84/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Helper/Announce.php
85/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Helper/Meta.php
86/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Image/Storage.php
87/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Helper/Title.php
88/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Application/Mvc/Helper/ActiveMenu.php
89/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Seo/Plugin/SeoManager.php
90/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Seo/Model/Manager.php
91/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/plugins/Title.php
92/var/www/html/ciss/aesvietnam.edu.vn/web/src/data/cache/volt/%%var%%www%%html%%ciss%%aesvietnam.edu.vn%%web%%src%%app%%themes%%default%%page%%index%%_templates%%news.volt.php
93/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Publication/Model/News.php
94/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Publication/Model/Publication.php
95/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Publication/Model/GetSet/Publication.php
96/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Publication/Model/Translate/TypeTranslate.php
97/var/www/html/ciss/aesvietnam.edu.vn/web/src/app/modules/Publication/Model/Translate/PublicationTranslate.php
Memory
Usage2883584