Phalcon Framework 3.4.5

PDOException: SQLSTATE[HY000] [2002] No such file or directory

/var/www/bundes-telefonbuch.de/app/common/Services.php (72)
#0PDO->__construct(mysql:host=localhost;dbname=dialo, root, toor, Array([1002] => SET NAMES utf8, [3] => 2))
#1Phalcon\Db\Adapter\Pdo->connect(Array([host] => localhost, [username] => root, [password] => toor, [dbname] => dialo, [options] => Array([1002] => SET NAMES utf8)))
#2Phalcon\Db\Adapter\Pdo->__construct(Array([host] => localhost, [username] => root, [password] => toor, [dbname] => dialo, [options] => Array([1002] => SET NAMES utf8)))
/var/www/bundes-telefonbuch.de/app/common/Services.php (72)
<?php
namespace Bvv;
 
/**
 * Class Services
 *
 * @package Bvv
 */
trait Services
{
  /**
   * Add services that do not include a configuration.
   *
   * @param \Phalcon\DiInterface $di
   */
  protected function addSimpleServices(\Phalcon\DiInterface $di)
  {
    $di->set('fileOperator', \Bvv\Library\FileOperator::class, true);
    $di->set('imageUpload', \Bvv\Component\ImageUpload::class, true);
    $di->set('history', \Bvv\Component\Handler\History::class, true);
    $di->set('jobFactory', \Bvv\Cli\Job\Factory::class, true);
    $di->set('matcher', \Bvv\Component\Matching\Matcher::class, false);
    $di->set('curl', \Bvv\Library\Curl::class, true);
    $di->set('partnerFactory', \Bvv\Component\Partner\PartnerFactory::class, true);
    $di->set('stopwordFilter', \Bvv\Filter\StopwordFilter::class, true);
    $di->set('searching', \Bvv\Component\Searching\Factory::class, true);
    $di->set('imageUpload', \Bvv\Component\ImageUpload::class, true);
    $di->set('lead', \Bvv\Component\Lead\Lead::class, true);
    $di->set('mueller.crm', \Mueller\SugarCRM::class, true);
    $di->set('emailFilter', \Bvv\Component\System\EmailFilter::class, true);
    $di->set('associationHandler', \Bvv\Component\Handler\Association::class, true);
    $di->set('contactDecider', \Bvv\Component\Helper\ContactDecider::class, true);
    $di->set('openingHoursHelper', \Bvv\Component\Helper\OpeningHours::class, true);
    $di->set('cacheFactory', \Bvv\Component\Cache\Factory::class, true);
    $di->set('companyContact', \Bvv\Component\Communication\CompanyContact::class, true);
    $di->set('facebook', \Bvv\Component\FacebookManager::class);
    $di->set('letter', \Bvv\Component\Communication\Letter::class);
  }
 
  /**
   * Add services, that only the frontend needs.
   *
   * @param \Phalcon\DiInterface $di
   */
  protected function addFrontendServices(\Phalcon\DiInterface $di)
  {
    $di->set('filter', \Phalcon\Filter::class);
    $di->set('cookies', \Phalcon\Http\Response\Cookies::class);
    $di->set('modelsManager', \Phalcon\Mvc\Model\Manager::class, true);
    $di->set('event', \Bvv\Component\EventManager::class, true);
    $di->set('assets', \Bvv\Library\AssetsManager::class, true);
  }
 
  /**
   * @param \Phalcon\DiInterface $di
   * @param                      $config
   */
  protected function addDatabaseService(\Phalcon\DiInterface $di, $config)
  {
    $di->set('db', function () use ($config) {
      if (isset($config['master'])) {
        $conf = $config['master'];
      } else {
        $conf = $config;
      }
 
      $connection = new \Phalcon\Db\Adapter\Pdo\Mysql([
        "host"     => $conf->host,
        "username" => $conf->username,
        "password" => $conf->password,
        "dbname"   => $conf->dbname,
        "options"  => [\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'],
      ]);
 
      return $connection;
    }, true);
  }
 
  /**
   * @param \Phalcon\DiInterface $di
   * @param                      $settings
   * @param string               $env
   */
  protected function addMailService(\Phalcon\DiInterface $di, $settings, $env)
  {
    $di->set('tmail', function () use ($settings, $env) {
      $transport = new \Swift_SmtpTransport($settings->smtp->server, $settings->smtp->port);
      if (isset($settings->smtp->security) && $settings->smtp->security) {
        $transport->setEncryption($settings->smtp->security);
      }
      if (isset($settings->smtp->username) && $settings->smtp->username && $settings->smtp->password) {
        $transport->setUsername($settings->smtp->username)->setPassword($settings->smtp->password);
      }
 
      $mailer = new \Swift_Mailer($transport);
      $from   = [$settings->fromEmail => $settings->fromName];
 
      return new Component\Communication\TMail($mailer, $from, $settings->contentType, $env);
    }, true);
  }
}
#3Bvv\Application->Bvv\{closure}()
#4Phalcon\Di\Service->resolve(null, Object(Phalcon\Di\FactoryDefault))
#5Phalcon\Di->get(db, null)
#6Phalcon\Di->getShared(db)
#7Phalcon\Mvc\Model\Manager->_getConnection(Object(Bvv\Model\Translation\Hash: 17), null)
#8Phalcon\Mvc\Model\Manager->getReadConnection(Object(Bvv\Model\Translation\Hash: 17))
#9Phalcon\Mvc\Model->getReadConnection()
#10Phalcon\Mvc\Model\Query->getReadConnection(Object(Bvv\Model\Translation\Hash: 17), Array([models] => Array([0] => Bvv\Model\Translation\Hash), [tables] => Array([0] => Array([0] => translations, [1] => (empty string), [2] => t)), [columns] => Array([source] => Array([type] => scalar, [balias] => source, [sqlAlias] => source, [column] => Array()), [target] => Array([type] => scalar, [balias] => target, [sqlAlias] => target, [column] => Array())), [joins] => Array([0] => Array([type] => LEFT, [source] => Array(), [conditions] => Array())), [where] => Array([type] => binary-op, [op] => =, [left] => Array([type] => qualified, [domain] => tt, [name] => lang, [balias] => lang), [right] => Array([type] => placeholder, [value] => :lang))), Array([lang] => de - de), null)
#11Phalcon\Mvc\Model\Query->_executeSelect(Array([models] => Array([0] => Bvv\Model\Translation\Hash), [tables] => Array([0] => Array([0] => translations, [1] => (empty string), [2] => t)), [columns] => Array([source] => Array([type] => scalar, [balias] => source, [sqlAlias] => source, [column] => Array()), [target] => Array([type] => scalar, [balias] => target, [sqlAlias] => target, [column] => Array())), [joins] => Array([0] => Array([type] => LEFT, [source] => Array(), [conditions] => Array())), [where] => Array([type] => binary-op, [op] => =, [left] => Array([type] => qualified, [domain] => tt, [name] => lang, [balias] => lang), [right] => Array([type] => placeholder, [value] => :lang))), Array([lang] => de - de), null)
#12Phalcon\Mvc\Model\Query->execute()
#13Phalcon\Mvc\Model\Manager->executeQuery(SELECT t.string AS source, tt.string AS target\n FROM \Bvv\Model\Translation\Hash t\n LEFT JOIN \Bvv\Model\Translation\Translation tt ON t.hash = tt.hash\n WHERE tt.lang = :lang:, Array([lang] => de - de))
/var/www/bundes-telefonbuch.de/app/common/Component/Cache/I18n.php (24)
<?php
namespace Bvv\Component\Cache;
 
class I18n extends AbstractCache
{
  /**
   * Load translations.
   *
   * @param string $language The language to load.
   *
   * @return \Phalcon\Translate\Adapter\NativeArray
   */
  public function loadTranslations($language)
  {
    $key          = $this->cacheKey(__CLASS__, $language);
    $translations = $this->load($key);
 
    if (!$translations) {
      /** @var \Phalcon\Mvc\Model\ManagerInterface $db */
      $db  = \Phalcon\DI::getDefault()->getShared('modelsManager');
      $all = $db->executeQuery('SELECT t.string AS source, tt.string AS target
          FROM \Bvv\Model\Translation\Hash t
          LEFT JOIN \Bvv\Model\Translation\Translation tt ON t.hash = tt.hash
          WHERE tt.lang = :lang:', ['lang' => $language]);
 
      foreach ($all as $row) {
        $translations[$row->source] = $row->target;
      }
 
      if ($translations) {
        $this->save($key, $translations, 86400 * 30);
      }
 
    }
 
    if ($translations) {
      return $translations;
    }
    return [];
  }
 
  public function clear($language)
  {
    $key = $this->cacheKey(__CLASS__, $language);
    $this->getCacheType()->delete($key);
  }
 
  protected function getCacheType()
  {
    return $this->getMemCached();
  }
}
#14Bvv\Component\Cache\I18n->loadTranslations(de - de)
/var/www/bundes-telefonbuch.de/app/common/Library/I18n.php (108)
<?php
/**
 * Translations. This is a singleton.
 */
namespace Bvv\Library;
 
class I18n
{
  private static $_instance;
 
  private $config = [], $cache = [], $debug = false, $testing = false;
 
  /**
   * @return self
   */
  public static function instance()
  {
    if (empty(self::$_instance)) {
      self::$_instance = new self;
    }
 
    return self::$_instance;
  }
 
  /**
   * Load the config.
   */
  private function __construct()
  {
    $config = \Phalcon\DI::getDefault()->getShared('config');
 
    foreach ($config->i18n as $key => $value) {
      $this->config[$key] = $value;
    }
 
    $this->debug = ($config->app->env != 'production');
  }
 
  /**
   * Nothing to see here.
   */
  private function __clone()
  {
  }
 
  /**
   * Set the language for the current request. Uses default language if none is given.
   *
   * @param string $lang E.g. de-de.
   *
   * @return string
   */
  public function lang($lang = null)
  {
    if ($lang) {
      $lang = mb_strtolower(str_replace([' ', '_'], '-', $lang));
      if (isset($this->config['langs'][$lang])) {
        $this->config['lang'] = $lang;
      }
    }
 
    return $this->config['lang'];
  }
 
  public function getAvailableLanguages()
  {
    return $this->config['langs'];
  }
 
  public function getDefaultLanguage()
  {
    return $this->config['lang'];
  }
 
  /**
   * Inject custom translations. Useful for testing.
   *
   * @param array $trans
   */
  public function setTranslations(array $trans)
  {
    $this->cache[$this->config['lang']] = new \Phalcon\Translate\Adapter\NativeArray(['content' => $trans]);
  }
 
  /**
   * For true this deactivates translation behaviour.
   *
   * @param bool $testing
   */
  public function setTesting($testing)
  {
    $this->testing = $testing;
  }
 
  /**
   * Load language from the file
   * Load all translations. Try file cache first, then get all from DB.
   *
   * @return \Phalcon\Translate\Adapter\NativeArray
   */
  private function load()
  {
    $lang = $this->config['lang'];
 
    // local cache
    if (!isset($this->cache[$lang])) {
      $this->cache[$lang] = new \Phalcon\Translate\Adapter\NativeArray([
        'content' => (new \Bvv\Component\Cache\I18n())->loadTranslations($lang)
      ]);
    }
 
    return $this->cache[$lang];
  }
 
  /**
   * Translate a string.
   *
   * @param string $string String to translate.
   * @param array  $values Replacements.
   * @param bool   $noAdd  Disable automatic adding of missing strings.
   *
   * @return string Translated string.
   */
  public function trans($string, array $values = null, $noAdd = false)
  {
    $translate = $this->load();
 
    if ($this->debug && !$noAdd && !$translate->exists($string)) {
      $this->addMissingString($string);
 
      return strtr($string, (array)$values).' #404';
    }
 
    return strtr($translate->query($string), (array)$values);
  }
 
  /**
   * Add a missing string to the database.
   *
   * @param string $string
   */
  private function addMissingString($string)
  {
    try {
      // company addresses got translated, this helps to find them
      if (preg_match('/^.*[sS]tr.*\d(-\d+)?.*,\s\d{5}\s[A-Z]\D+$/', $string)) {
        foreach (debug_backtrace() as $trace) {
          if (isset($trace['file']) && substr($trace['file'], -5) == 'phtml') {
            trigger_error('Translated address found: '.$trace['file'].':'.$trace['line']);
          }
        }
      }
 
      $t = new \Bvv\Model\Translation\Hash();
      $t->setString($string);
      $t->save();
    } catch (\PDOException $e) {
      // duplicate entry
      if ($e->getCode() != 23000) {
        throw $e;
      }
    }
  }
}
#15Bvv\Library\I18n->load()
/var/www/bundes-telefonbuch.de/app/common/Library/I18n.php (126)
<?php
/**
 * Translations. This is a singleton.
 */
namespace Bvv\Library;
 
class I18n
{
  private static $_instance;
 
  private $config = [], $cache = [], $debug = false, $testing = false;
 
  /**
   * @return self
   */
  public static function instance()
  {
    if (empty(self::$_instance)) {
      self::$_instance = new self;
    }
 
    return self::$_instance;
  }
 
  /**
   * Load the config.
   */
  private function __construct()
  {
    $config = \Phalcon\DI::getDefault()->getShared('config');
 
    foreach ($config->i18n as $key => $value) {
      $this->config[$key] = $value;
    }
 
    $this->debug = ($config->app->env != 'production');
  }
 
  /**
   * Nothing to see here.
   */
  private function __clone()
  {
  }
 
  /**
   * Set the language for the current request. Uses default language if none is given.
   *
   * @param string $lang E.g. de-de.
   *
   * @return string
   */
  public function lang($lang = null)
  {
    if ($lang) {
      $lang = mb_strtolower(str_replace([' ', '_'], '-', $lang));
      if (isset($this->config['langs'][$lang])) {
        $this->config['lang'] = $lang;
      }
    }
 
    return $this->config['lang'];
  }
 
  public function getAvailableLanguages()
  {
    return $this->config['langs'];
  }
 
  public function getDefaultLanguage()
  {
    return $this->config['lang'];
  }
 
  /**
   * Inject custom translations. Useful for testing.
   *
   * @param array $trans
   */
  public function setTranslations(array $trans)
  {
    $this->cache[$this->config['lang']] = new \Phalcon\Translate\Adapter\NativeArray(['content' => $trans]);
  }
 
  /**
   * For true this deactivates translation behaviour.
   *
   * @param bool $testing
   */
  public function setTesting($testing)
  {
    $this->testing = $testing;
  }
 
  /**
   * Load language from the file
   * Load all translations. Try file cache first, then get all from DB.
   *
   * @return \Phalcon\Translate\Adapter\NativeArray
   */
  private function load()
  {
    $lang = $this->config['lang'];
 
    // local cache
    if (!isset($this->cache[$lang])) {
      $this->cache[$lang] = new \Phalcon\Translate\Adapter\NativeArray([
        'content' => (new \Bvv\Component\Cache\I18n())->loadTranslations($lang)
      ]);
    }
 
    return $this->cache[$lang];
  }
 
  /**
   * Translate a string.
   *
   * @param string $string String to translate.
   * @param array  $values Replacements.
   * @param bool   $noAdd  Disable automatic adding of missing strings.
   *
   * @return string Translated string.
   */
  public function trans($string, array $values = null, $noAdd = false)
  {
    $translate = $this->load();
 
    if ($this->debug && !$noAdd && !$translate->exists($string)) {
      $this->addMissingString($string);
 
      return strtr($string, (array)$values).' #404';
    }
 
    return strtr($translate->query($string), (array)$values);
  }
 
  /**
   * Add a missing string to the database.
   *
   * @param string $string
   */
  private function addMissingString($string)
  {
    try {
      // company addresses got translated, this helps to find them
      if (preg_match('/^.*[sS]tr.*\d(-\d+)?.*,\s\d{5}\s[A-Z]\D+$/', $string)) {
        foreach (debug_backtrace() as $trace) {
          if (isset($trace['file']) && substr($trace['file'], -5) == 'phtml') {
            trigger_error('Translated address found: '.$trace['file'].':'.$trace['line']);
          }
        }
      }
 
      $t = new \Bvv\Model\Translation\Hash();
      $t->setString($string);
      $t->save();
    } catch (\PDOException $e) {
      // duplicate entry
      if ($e->getCode() != 23000) {
        throw $e;
      }
    }
  }
}
#16Bvv\Library\I18n->trans(English, null)
/var/www/bundes-telefonbuch.de/public/btb/index.php (36)
<?php
 
error_reporting(E_ALL);
set_time_limit(0);
 
define('PROJECT', 'Btb');
 
if (!defined('BASE_DIR')) define('BASE_DIR', dirname(dirname(__DIR__)));
if (!defined('APP_DIR')) define('APP_DIR', BASE_DIR.'/app/'.strtolower(PROJECT));
if (!defined('SHARED_DIR')) define('SHARED_DIR', BASE_DIR.'/app/common');
if (!defined('PUBLIC_DIR')) define('PUBLIC_DIR', BASE_DIR.'/public/'.strtolower(PROJECT));
 
// mPDF settings
if (!defined('_MPDF_CACHEPATH')) define('_MPDF_CACHEPATH', APP_DIR.'/cache/mpdf');
if (!defined('_MPDF_TEMP_PATH')) define('_MPDF_TEMP_PATH', _MPDF_CACHEPATH.'/tmp/');
if (!defined('_MPDF_TTFONTDATAPATH')) define('_MPDF_TTFONTDATAPATH', _MPDF_CACHEPATH.'/ttfontdata/');
if (!file_exists(_MPDF_TEMP_PATH)) {
  mkdir(_MPDF_TEMP_PATH, 0777, true);
  mkdir(_MPDF_TTFONTDATAPATH, 0777, true);
  chmod(_MPDF_CACHEPATH, 0777);
  chmod(_MPDF_TEMP_PATH, 0777);
  chmod(_MPDF_TTFONTDATAPATH, 0777);
}
 
class Log
{
  public static function file($var) {
    $path = SHARED_DIR.'/logs/'.date('Y-m-d').'.log';
    $message = is_null($var) ? 'NULL' : (is_scalar($var) ? $var : print_r($var, true));
    return error_log(date('H:i:s ').": ".$message.PHP_EOL, 3, $path);
  }
}
 
if (!function_exists('__')) {
  function __($string, array $values = NULL) {
    return \Bvv\Library\I18n::instance()->trans($string, $values);
  }
}
 
try {
  require_once BASE_DIR.'/vendor/autoload.php';
  require_once BASE_DIR.'/app/Application.php';
  require_once APP_DIR.'/Bootstrap.php';
  $app = new \Btb\Bootstrap(new \Phalcon\DI\FactoryDefault());
  echo $app->handle()->getContent();
} catch (\Exception $e) {
  \Btb\Bootstrap::exception($e);
  $app->setException(new \Exception('hallo'));
}
#17__(English)
#18array_map(__, Array([en - gb] => English, [de - de] => Deutsch))
/var/www/bundes-telefonbuch.de/app/common/Controller/ControllerBase.php (64)
<?php
 
namespace Bvv\Controller;
 
use Bvv\Component\Helper\ViewGeneration;
use Bvv\Library\I18n;
use Bvv\Component\Normalizer;
use Symfony\Component\Form\Extension\Csrf\CsrfExtension;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Security\Csrf\CsrfTokenManager;
use Symfony\Component\Security\Csrf\TokenGenerator\UriSafeTokenGenerator;
use Symfony\Component\Security\Csrf\TokenStorage\NativeSessionTokenStorage;
 
abstract class ControllerBase extends \Phalcon\Mvc\Controller
{
  use \Bvv\DependencyGetters;
 
  protected $breadcrumbs = [[], []];
  protected $title       = ['extend' => true];
  protected $meta        = ['robots' => 'index,follow,archive', 'canonical' => '', 'description' => '', 'hasAjax' => false];
 
  /**
   * Initialize controller with basic functionality.
   */
  public function initialize()
  {
    // default response headers
    $this->response->setHeader('Content-Type', 'text/html; charset=utf-8');
 
    $i18n = I18n::instance();
 
    $user = null;
    try {
      // authenticate user with valid remember me token
      if (!$this->getAuth()->isUserSignedIn() && $this->getAuth()->hasRememberMe()) {
        $this->getAuth()->loginWithRememberMe(false);
      }
 
      if ($this->getAuth()->isUserSignedIn()) {
        $user = $this->getAuth()->getUser();
 
        if ($user instanceof \Bvv\Model\User\User && !$user->mayLogin()) {
          if ($this->router->getControllerName() == 'user') {
            // user was logged in to allow for form errors (e.g. PostController::createAction),
            // but she has not verified her email yet
            // so log out
            $this->getAuth()->remove();
            $user = null;
            $this->flashSession->error(__('please verify your email'));
          }
        }
      }
    } catch (\Bvv\Component\AuthException $e) {
      unset($e);
    }
 
    $this->view->setVars([
      'showHeader'                => true,
      'showGoogleAfc'             => true,
      'showGoogleAfcContent'      => true,
      'showGoogleAfcLeaderBottom' => true,
      'showIndexHeader'           => false,
      'i18n'                      => $i18n,
      'siteLangs'                 => array_map('__', $this->config->i18n->langs->toArray()),
      'user'                      => $user,
      'PROJECT'                   => PROJECT,
      'activeLink'                => '',
      'abChoice'                  => rand(1, 2),
      'googleAfcSite'             => 'other', //default
    ]);
 
    $this->buildAssets();
 
    if ($this->session->has('fbRequestIdDelete')) {
      $script = 'FB.api('.$this->session->get('fbRequestIdDelete').', "delete", function(){});';
      $this->addScript($script);
      $this->session->remove('fbRequestIdDelete');
    }
 
    if ($this->isOfficeIp()) {
      $this->view->setVar('showAdminLink', true);
      $this->view->setVar('server', ($_SERVER['SERVER_ADDR'] == '86.109.252.211' ? 'ODN' : 'Wavecon'));
    }
 
    $this->version();
 
    // set an indicator whether to render static content, or implement ajax loading
    // documentation: https://developers.google.com/webmasters/ajax-crawling
    $renderStatic = ($this->request->get('_escaped_fragment_') !== null);
    $this->view->setVar('_escaped_fragment_', $renderStatic);
    \Bvv\Component\LinkGenerator::getInstance()->setRenderStatic($renderStatic);
  }
 
  /**
   * Test if client request originated from office ip.
   *
   * @return bool
   */
  protected function isOfficeIp()
  {
    $ips = (isset($this->config->access->officeips) ? (array)$this->config->access->officeips : []);
 
    return in_array($this->request->getClientAddress(false), array_merge($ips, ['127.0.0.1']));
  }
 
  private function buildAssets()
  {
    if ($this->assets->collection('header')->count()) {
      // this happens when there is a forward into another controller/action, e.g. 404-page
      return;
    }
 
    $headerCSS = $this->assets->collection('header')
      ->setLocal(true)
      //->addCss('css/header.css')
        ;
 
    $contentCSS = $this->assets->collection('content')
      ->setLocal(true)
      //->addCss('css/content.css')
        ;
 
    $searchCSS = $this->assets->collection('footer')
      ->setLocal(true)
      //->addCss('css/footer.css')
        ;
 
    if ($this->config->app->env !== 'development') {
      // $headerCSS->setTargetPath(BASE_DIR.'/public/'.strtolower(PROJECT).'/css/header.min.css')
      //   ->setTargetUri('css/header.min.css')
      //   ->join(true)
      //   ->addFilter(new \Phalcon\Assets\Filters\None());
      //->addFilter(new \Phalcon\Assets\Filters\Cssmin());
 
      // $contentCSS->setTargetPath(BASE_DIR.'/public/'.strtolower(PROJECT).'/css/content.min.css')
      //   ->setTargetUri('css/content.min.css')
      //   ->join(true)
      //   ->addFilter(new \Phalcon\Assets\Filters\None());
      //->addFilter(new \Phalcon\Assets\Filters\Cssmin());
 
      $searchCSS->setTargetPath(BASE_DIR.'/public/'.strtolower(PROJECT).'/css/footer.min.css')
        ->setTargetUri('css/footer.min.css')
        ->join(true)
        ->addFilter(new \Phalcon\Assets\Filters\None());
      //->addFilter(new \Phalcon\Assets\Filters\Cssmin());
    }
 
            $this->assets->collection('headerJs')
                ->setLocal(true)
                ->setTargetPath(BASE_DIR . '/public/' . strtolower(PROJECT) . '/js/head_all.js')
                ->setTargetUri('js/head_all.js')
                ->join(true)
                ->addFilter(new \Phalcon\Assets\Filters\None())
                //->addFilter(new \Phalcon\Assets\Filters\Jsmin())
                ->addJs(BASE_DIR . '/public/'.(strtolower(PROJECT) ).'/third/webpack/dist/wpo_bundle.js')
                ->addJs(BASE_DIR . '/public/common/js/neededtoconnectjsfiles.js')
//                ->addJs(BASE_DIR.'/public/common/js/jquery-2.1.4.min.js')
//                ->addJs(BASE_DIR.'/public/common/js/jquery-ui.js')
//                ->addJs(BASE_DIR.'/public/common/js/modernizr.js')
                ->addJs(BASE_DIR.'/public/common/js/infinite-scroll.js')
//                ->addJs(BASE_DIR.'/public/common/js/ajax.js')
//                ->addJs(BASE_DIR.'/public/common/js/googlemap.js')
//                ->addJs(BASE_DIR.'/public/common/js/detailajaxload.js')
//                ->addJs(BASE_DIR.'/public/common/js/lead.js')
//                ->addJs(BASE_DIR.'/public/common/js/frontend.js')
//                ->addJs(BASE_DIR.'/public/common/js/frontend.plugins.js')
//                ->addJs(BASE_DIR.'/public/common/third/input/bootstrap.file-input.js')
//                ->addJs(BASE_DIR.'/public/common/js/form.company.js')
//                ->addJs(BASE_DIR.'/public/common/js/memory.js')
//                ->addJs(BASE_DIR.'/public/common/js/categories.js')
//                ->addJs(BASE_DIR.'/public/common/js/navigation.js')
//                ->addJs(BASE_DIR.'/public/common/js/mobile.js')
//                ->addJs(BASE_DIR.'/public/common/js/tracking.company.js')
//                ->addJs(BASE_DIR.'/public/common/js/cookie.js')
//                ->addJs(BASE_DIR.'/public/common/third/font-face-render-check/fontfacecheck.js');
            ;
 
    $this->assets->collection('footerJs')
      ->setLocal(true)
      ->setTargetPath(BASE_DIR.'/public/'.strtolower(PROJECT).'/js/foot_all.js')
      ->setTargetUri('js/foot_all.js')
      ->join(true)
      ->addFilter(new \Phalcon\Assets\Filters\None())
            ->addJs(BASE_DIR . '/public/'.(strtolower(PROJECT) ).'/third/webpack/dist/wpo_bundle_lazy.js')
            ->addJs(BASE_DIR . '/public/common/js/neededtoconnectjsfiles.js')
      //->addFilter(new \Phalcon\Assets\Filters\Jsmin())
      //->addJs('third/bootstrap/js/bootstrap.min.js')
      //->addJs(BASE_DIR.'/public/common/third/bootstrap-switch-master/js/bootstrap-switch.min.js')
      //->addJs(BASE_DIR.'/public/common/third/affix/affix.js')
      ->addJs(BASE_DIR.'/public/common/third/croppie/croppie.js')
      ->addJs(BASE_DIR.'/public/common/third/datepicker/js/bootstrap-datepicker.js')
      ->addJs(BASE_DIR.'/public/common/third/datepicker/js/locales/bootstrap-datepicker.de.js')
      ->addJs(BASE_DIR.'/public/common/js/openinghours.js')
      ->addJs(BASE_DIR.'/public/common/js/autocomplete.js')
      ->addJs(BASE_DIR.'/public/common/js/user.js')
      ->addJs(BASE_DIR.'/public/common/js/payment.js')
      ->addJs(BASE_DIR.'/public/common/js/search.js')
      ->addJs(BASE_DIR.'/public/common/js/social-click.js')
      ->addJs('js/tracking.js'); // different tracking codes
 
 
    $this->assets->collection('leafletJs')
      ->setLocal(true)
            ->addInlineJs(file_get_contents(BASE_DIR . '/public/'.(strtolower(PROJECT) ).'/third/leaflet/leaflet.js')); 
  }
 
  /**
   * Load current product version.
   */
  protected function version()
  {
    $cacheKey = '_version';
    $version  = $this->cache->get($cacheKey);
 
    if ($version === null) {
      $version = \Bvv\Model\System::findFirstByKey('version');
 
      if (!$version instanceof \Bvv\Model\System) {
        $version        = new \Bvv\Model\System();
        $version->key   = 'version';
        $version->value = '';
      }
 
      $version = $version->value;
      $this->cache->save($cacheKey, $version);
    }
 
    $this->view->setVar('appVersion', $version);
  }
 
  /**
   * Stuff to do before any action is executed.
   */
  public function beforeExecuteRoute()
  {
    // a whole lot of nothing
  }
 
  /**
   * Stuff to do after the action was executed.
   */
  public function afterExecuteRoute()
  {
    $isDialo = (stripos($this->config->app->name, 'dialo') !== false);
 
    $title = $this->tag->getTitle(false);
    if ($title == '') {
      $this->tag->setTitle($isDialo ? 'dialo.de' : 'bundes-telefonbuch.de');
    }
 
    $this->meta['canonical']   = $this->formatCanonical();
    $this->meta['description'] = str_replace('"', "'", $this->meta['description']);
    $this->meta['title']       = str_replace('"', "'", $title);
 
    $this->view->setVars([
      'breadcrumbs' => $this->breadcrumbs,
      'meta'        => (object)$this->meta,
    ]);
 
    if ($this->config->app->env == 'development') {
      $this->view->cache(false);
    }
 
    // generate a new csrf token
    $csrf = $this->security->getSessionToken();
    if (!$csrf) {
      $csrf = $this->security->getToken();
    }
 
    // this must happen after any checkToken, because it invalidates the old token
    $this->view->setVar('csrf', (object)['key' => 'csrf_token', 'val' => $csrf]);
  }
 
  /**
   * Add a JavaScript snippet to be executed on page load.
   *
   * @param $script
   */
  protected function addScript($script)
  {
    $this->view->setVar('scriptSnippet', $script);
  }
 
  /**
   * Forward to another controller/action.
   *
   * @param       $forward
   * @param array $params
   */
  protected function forward($forward, array $params = [])
  {
    if (is_string($forward)) {
      $uriParts = explode('/', $forward, 2);
      $forward  = ['controller' => $uriParts[0], 'action' => $uriParts[1], 'params' => $params];
    }
 
    $this->view->cache(false);
    $this->dispatcher->forward($forward);
 
    return null;
  }
 
  /**
   * Send a JSON encoded response.
   *
   * @param $data
   *
   * @return \Phalcon\Http\ResponseInterface
   */
  protected function sendJson($data)
  {
    $this->response->setContentType('application/json');
 
    return $this->response->setJsonContent($data);
  }
 
  /**
   * Send a JSON encoded response.
   *
   * @param string $message
   *
   * @return \Phalcon\Http\ResponseInterface
   */
  protected function sendJsonError($message)
  {
    return $this->sendJson(['status' => 'error', 'msg' => $message]);
  }
 
  /**
   * Produce a readable cache key without special characters.
   *
   * @param string $method Should be __METHOD__
   *
   * @return string
   */
  protected function getCacheKey($method)
  {
    return str_replace(['\\', '::'], '_', $method);
  }
 
  /**
   * Shortcut to set a title.
   *
   * @param string $title
   * @param bool   $extend
   */
  protected function setTitle($title, $extend = true)
  {
    $this->tag->setTitle($title);
    $this->title['extend'] = $extend;
  }
 
  public function getMetaFields()
  {
    return array_merge($this->meta, [
      'title'       => $this->tag->getTitle(false),
      'breadcrumbs' => $this->breadcrumbs,
    ]);
  }
 
  /**
   * @param       $page
   * @param       $maxPage
   * @param array $pagination
   */
  public function setViewVars($page, $maxPage, array $pagination)
  {
    $this->view->setVars([
      'page'              => $page,
      'maxPage'           => $maxPage,
      'dataPagination'    => $pagination['dataPagination'],
      'pagination'        => html_entity_decode($pagination['dataPagination']),
      'nextUrl'           => $pagination['nextUrl'],
      'previousUrl'       => $pagination['previousUrl'],
      'currentUrl'        => $pagination['currentUrl'],
      'currentUrlSchema'  => $pagination['currentUrlSchema'],
      'nextUrlSchema'     => $pagination['nextUrlSchema'],
      'previousUrlSchema' => $pagination['previousUrlSchema'],
    ]);
  }
 
  /**
   * @param       $page
   * @param       $maxPage
   * @param array $pagination
   * @param       $pageContent
   *
   * @return null|\Phalcon\Http\Response
   */
  public function createResponse($page, $maxPage, array $pagination, $pageContent)
  {
    $type = $this->request->get('type', null, 1);
    if ($type == 'json' && $page <= $maxPage) {
      $nextPageContent = ViewGeneration::jsonNextPage($pagination['dataPagination'], $pagination['currentUrl'], $pageContent);
      $response        = ViewGeneration::json($nextPageContent, $pagination['nextUrl'], $pagination['previousUrl']);
 
      return $response;
    }
 
    return null;
  }
 
  /**
   * Get Page Param
   */
  protected function getPage()
  {
    $page = $this->request->get('page', null, 1);
    if ($page == 0 || ($page == 1 && $this->request->get('page') != null)) {
      return $this->response->redirect($this->router->getRewriteUri(), true, 301);
    }
 
    return $page;
  }
 
  protected function getDefaultPaginationLinkStructure($pageParameter, $linkStructureOld)
  {
    return preg_replace('/'.$pageParameter.'(.*)/', '', $linkStructureOld);
  }
 
  protected function getDefaultPaginationParameterSyntax($pageParameter)
  {
    return str_replace('\\', '', $pageParameter);
  }
 
  /**
   * If the page contains pagination, this creates the necessary response, depending on whether HTML or JSON is requested.
   * The view gets an indicator "isAjax" to decide how to generate output.
   *
   * @param int   $page
   * @param int   $maxPage
   * @param array $pagination
   */
  protected function makeResponsePaginationAware($page, $maxPage, array $pagination)
  {
    $this->setViewVars($page, $maxPage, $pagination);
 
    $type = $this->request->get('type', null, 1);
    if ($type == 'json' && $page <= $maxPage) {
      $this->view->setVar('isAjax', true);
      $this->view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_ACTION_VIEW);
      $this->response->setContentType('application/json', 'UTF-8');
 
      /** @var \Phalcon\Events\Manager $eventManager */
      $eventManager = $this->view->getEventsManager();
      $eventManager->attach("view:afterRender", function ($event, \Phalcon\Mvc\ViewInterface $view) use ($pagination) {
        unset($event);
        $pageContent     = $view->getContent();
        $nextPageContent = ViewGeneration::jsonNextPage($pagination['dataPagination'], $pagination['currentUrl'], $pageContent);
 
        $json = [
          'response'      => $nextPageContent,
          'next_data_url' => $pagination['nextUrl'],
          'prev_data_url' => $pagination['previousUrl'],
        ];
 
        $view->setContent(json_encode($json));
      });
    } else {
      $this->view->setVar('isAjax', false);
    }
  }
 
  /**
   * Remove All Get Parameters
   * Add PAge Parameters
   * return string
   */
  private function formatCanonical()
  {
    //no canonical for noindex pages
    if (strstr($this->meta['robots'], 'noindex')) {
      return '';
    }
 
    //no canonical for pages over page one (only prev/next)
    $page = $this->request->get('page', null, null);
    if ($page && $page > 1) {
      return '';
    }
 
    $canonical = trim(preg_replace('/\?.*$/', '', $this->request->getURI()), '/');
    $canonical = $this->url->getStatic($canonical);
 
    return $canonical;
  }
 
  protected function cacheControl($ttl = 604800, $lastModified = null)
  {
    $lastModified = strtotime($lastModified);
 
    $this->response->setHeader('Cache-Control', 'public, max-age='.($ttl + (time() - $lastModified)));
    $this->response->setHeader('Expires: ', gmdate('D, d M Y H:i:s \G\M\T', time() + $ttl));
    $this->response->setHeader('Last-Modified: ', gmdate('D, d M Y H:i:s \G\M\T', $lastModified));
  }
 
  /**
   * @param       $type
   * @param null  $data
   * @param array $options
   *
   * @return FormInterface
   */
  public function createForm($type, $data = null, array $options = [])
  {
    $csrfGenerator = new UriSafeTokenGenerator();
    $csrfStorage   = new NativeSessionTokenStorage();
    $csrfManager   = new CsrfTokenManager($csrfGenerator, $csrfStorage);
 
    /*@var \Symfony\Component\Form\Forms::createFormFactoryBuilder() $formClass */
    $formClass = $this->di->get('createFormFactoryBuilder');
 
    $formFactory = $formClass->addExtension(new CsrfExtension($csrfManager))
      ->getFormFactory();
 
    return $formFactory->createBuilder($type, $data, $options)->getForm();
  }
}
#19Bvv\Controller\ControllerBase->initialize()
#20Phalcon\Dispatcher->dispatch()
#21Phalcon\Mvc\Application->handle()
/var/www/bundes-telefonbuch.de/public/btb/index.php (45)
<?php
 
error_reporting(E_ALL);
set_time_limit(0);
 
define('PROJECT', 'Btb');
 
if (!defined('BASE_DIR')) define('BASE_DIR', dirname(dirname(__DIR__)));
if (!defined('APP_DIR')) define('APP_DIR', BASE_DIR.'/app/'.strtolower(PROJECT));
if (!defined('SHARED_DIR')) define('SHARED_DIR', BASE_DIR.'/app/common');
if (!defined('PUBLIC_DIR')) define('PUBLIC_DIR', BASE_DIR.'/public/'.strtolower(PROJECT));
 
// mPDF settings
if (!defined('_MPDF_CACHEPATH')) define('_MPDF_CACHEPATH', APP_DIR.'/cache/mpdf');
if (!defined('_MPDF_TEMP_PATH')) define('_MPDF_TEMP_PATH', _MPDF_CACHEPATH.'/tmp/');
if (!defined('_MPDF_TTFONTDATAPATH')) define('_MPDF_TTFONTDATAPATH', _MPDF_CACHEPATH.'/ttfontdata/');
if (!file_exists(_MPDF_TEMP_PATH)) {
  mkdir(_MPDF_TEMP_PATH, 0777, true);
  mkdir(_MPDF_TTFONTDATAPATH, 0777, true);
  chmod(_MPDF_CACHEPATH, 0777);
  chmod(_MPDF_TEMP_PATH, 0777);
  chmod(_MPDF_TTFONTDATAPATH, 0777);
}
 
class Log
{
  public static function file($var) {
    $path = SHARED_DIR.'/logs/'.date('Y-m-d').'.log';
    $message = is_null($var) ? 'NULL' : (is_scalar($var) ? $var : print_r($var, true));
    return error_log(date('H:i:s ').": ".$message.PHP_EOL, 3, $path);
  }
}
 
if (!function_exists('__')) {
  function __($string, array $values = NULL) {
    return \Bvv\Library\I18n::instance()->trans($string, $values);
  }
}
 
try {
  require_once BASE_DIR.'/vendor/autoload.php';
  require_once BASE_DIR.'/app/Application.php';
  require_once APP_DIR.'/Bootstrap.php';
  $app = new \Btb\Bootstrap(new \Phalcon\DI\FactoryDefault());
  echo $app->handle()->getContent();
} catch (\Exception $e) {
  \Btb\Bootstrap::exception($e);
  $app->setException(new \Exception('hallo'));
}
KeyValue
_url/suche/heime/herzogenrath/pflegeheime
KeyValue
USERwww-data
HOME/var/www
HTTP_CONNECTIONclose
HTTP_X_FORWARDED_FOR216.73.216.121
HTTP_X_CLIENT_IP216.73.216.121
HTTP_X_FORWARDED_PROTOhttps
HTTP_X_FORWARDED_PORT443
HTTP_HOSTwww.bundes-telefonbuch.de
HTTP_ACCEPT_ENCODINGgzip, br, zstd, deflate
HTTP_COOKIEPHPSESSID=ipmeomcr3rb5l17j9f9csdtsau
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HTTP_ACCEPT*/*
HTTPSon
SCRIPT_FILENAME/var/www/bundes-telefonbuch.de/public/btb/index.php
REDIRECT_STATUS200
SERVER_NAMEbundes-telefonbuch.de
SERVER_PORT80
SERVER_ADDR192.168.122.41
REMOTE_PORT
REMOTE_ADDR216.73.216.121
SERVER_SOFTWAREnginx/1.18.0
GATEWAY_INTERFACECGI/1.1
REQUEST_SCHEMEhttp
SERVER_PROTOCOLHTTP/1.1
DOCUMENT_ROOT/var/www/bundes-telefonbuch.de/public/btb
DOCUMENT_URI/index.php
REQUEST_URI/suche/heime/herzogenrath/pflegeheime
SCRIPT_NAME/index.php
CONTENT_LENGTH
CONTENT_TYPE
REQUEST_METHODGET
QUERY_STRING_url=/suche/heime/herzogenrath/pflegeheime
FCGI_ROLERESPONDER
PHP_SELF/index.php
REQUEST_TIME_FLOAT1758107398.8666
REQUEST_TIME1758107398
#Path
0/var/www/bundes-telefonbuch.de/public/btb/index.php
1/var/www/bundes-telefonbuch.de/vendor/autoload.php
2/var/www/bundes-telefonbuch.de/vendor/composer/autoload_real.php
3/var/www/bundes-telefonbuch.de/vendor/composer/platform_check.php
4/var/www/bundes-telefonbuch.de/vendor/composer/ClassLoader.php
5/var/www/bundes-telefonbuch.de/vendor/composer/autoload_static.php
6/var/www/bundes-telefonbuch.de/vendor/symfony/polyfill-mbstring/bootstrap.php
7/var/www/bundes-telefonbuch.de/vendor/symfony/polyfill-intl-icu/bootstrap.php
8/var/www/bundes-telefonbuch.de/vendor/symfony/polyfill-ctype/bootstrap.php
9/var/www/bundes-telefonbuch.de/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
10/var/www/bundes-telefonbuch.de/vendor/symfony/polyfill-php72/bootstrap.php
11/var/www/bundes-telefonbuch.de/vendor/symfony/polyfill-intl-idn/bootstrap.php
12/var/www/bundes-telefonbuch.de/vendor/symfony/polyfill-iconv/bootstrap.php
13/var/www/bundes-telefonbuch.de/vendor/swiftmailer/swiftmailer/lib/swift_required.php
14/var/www/bundes-telefonbuch.de/vendor/swiftmailer/swiftmailer/lib/classes/Swift.php
15/var/www/bundes-telefonbuch.de/app/Application.php
16/var/www/bundes-telefonbuch.de/app/common/Services.php
17/var/www/bundes-telefonbuch.de/app/btb/Bootstrap.php
18/var/www/bundes-telefonbuch.de/app/btb/config/config.php
19/var/www/bundes-telefonbuch.de/app/btb/config/config.permissions.php
20/var/www/bundes-telefonbuch.de/app/common/Library/I18n.php
21/var/www/bundes-telefonbuch.de/app/common/Component/SolrContainer.php
22/var/www/bundes-telefonbuch.de/vendor/solarium/solarium/library/Solarium/Client.php
23/var/www/bundes-telefonbuch.de/vendor/solarium/solarium/library/Solarium/Core/Client/Client.php
24/var/www/bundes-telefonbuch.de/vendor/solarium/solarium/library/Solarium/Core/Configurable.php
25/var/www/bundes-telefonbuch.de/vendor/solarium/solarium/library/Solarium/Core/ConfigurableInterface.php
26/var/www/bundes-telefonbuch.de/vendor/symfony/event-dispatcher/EventDispatcher.php
27/var/www/bundes-telefonbuch.de/vendor/symfony/event-dispatcher/EventDispatcherInterface.php
28/var/www/bundes-telefonbuch.de/vendor/solarium/solarium/library/Solarium/Core/Client/Endpoint.php
29/var/www/bundes-telefonbuch.de/app/btb/components/ModelHandler.php
30/var/www/bundes-telefonbuch.de/app/common/Component/ModelHandler.php
31/var/www/bundes-telefonbuch.de/app/btb/modules/frontend/Routes.php
32/var/www/bundes-telefonbuch.de/app/common/Module/Frontend/Routes.php
33/var/www/bundes-telefonbuch.de/app/common/Module/Backend/Routes.php
34/var/www/bundes-telefonbuch.de/app/common/Module/Api/Routes.php
35/var/www/bundes-telefonbuch.de/app/btb/modules/MemoryFbApp/Routes.php
36/var/www/bundes-telefonbuch.de/app/btb/modules/frontend/Module.php
37/var/www/bundes-telefonbuch.de/app/common/Module/Frontend/Module.php
38/var/www/bundes-telefonbuch.de/app/common/Component/Security.php
39/var/www/bundes-telefonbuch.de/app/btb/modules/frontend/controllers/SearchController.php
40/var/www/bundes-telefonbuch.de/app/common/Controller/Frontend/SearchController.php
41/var/www/bundes-telefonbuch.de/app/common/Controller/Frontend/Search/Helper.php
42/var/www/bundes-telefonbuch.de/app/common/Controller/Frontend/Search/Redirects.php
43/var/www/bundes-telefonbuch.de/app/common/Controller/Frontend/ControllerBase.php
44/var/www/bundes-telefonbuch.de/app/common/Controller/ControllerBase.php
45/var/www/bundes-telefonbuch.de/app/common/DependencyGetters.php
46/var/www/bundes-telefonbuch.de/app/btb/modules/frontend/components/Auth.php
47/var/www/bundes-telefonbuch.de/app/common/Component/AuthAbstract.php
48/var/www/bundes-telefonbuch.de/app/common/Component/System/RequestThrottling.php
49/var/www/bundes-telefonbuch.de/app/common/Component/BaseComponent.php
50/var/www/bundes-telefonbuch.de/app/common/Library/Memcache.php
51/var/www/bundes-telefonbuch.de/app/common/Component/Cache/I18n.php
52/var/www/bundes-telefonbuch.de/app/common/Component/Cache/AbstractCache.php
53/var/www/bundes-telefonbuch.de/app/common/Model/Translation/Hash.php
54/var/www/bundes-telefonbuch.de/app/common/Model/ModelBase.php
55/var/www/bundes-telefonbuch.de/app/common/Model/Translation/Translation.php
56/tmp/btb/cache/meta/map-bvv_model_translation_hash.php
57/tmp/btb/cache/meta/map-bvv_model_translation_translation.php
58/var/www/bundes-telefonbuch.de/app/common/Extension/Url.php
Memory
Usage2097152