#0 | PDO->__construct(mysql:host=localhost;dbname=dialo, root, toor, Array([1002] => SET NAMES utf8, [3] => 2)) |
#1 | Phalcon\Db\Adapter\Pdo->connect(Array([host] => localhost, [username] => root, [password] => toor, [dbname] => dialo, [options] => Array([1002] => SET NAMES utf8))) |
#2 | Phalcon\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); } } |
#3 | Bvv\Application->Bvv\{closure}() |
#4 | Phalcon\Di\Service->resolve(null, Object(Phalcon\Di\FactoryDefault)) |
#5 | Phalcon\Di->get(db, null) |
#6 | Phalcon\Di->getShared(db) |
#7 | Phalcon\Mvc\Model\Manager->_getConnection(Object(Bvv\Model\Translation\Hash: 17), null) |
#8 | Phalcon\Mvc\Model\Manager->getReadConnection(Object(Bvv\Model\Translation\Hash: 17)) |
#9 | Phalcon\Mvc\Model->getReadConnection() |
#10 | Phalcon\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) |
#11 | Phalcon\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) |
#12 | Phalcon\Mvc\Model\Query->execute() |
#13 | Phalcon\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(); } } |
#14 | Bvv\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; } } } } |
#15 | Bvv\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; } } } } |
#16 | Bvv\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) |
#18 | array_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(); } } |
#19 | Bvv\Controller\ControllerBase->initialize() |
#20 | Phalcon\Dispatcher->dispatch() |
#21 | Phalcon\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')); } |
Key | Value |
---|---|
_url | /suche/heime/herzogenrath/pflegeheime |
Key | Value |
---|---|
USER | www-data |
HOME | /var/www |
HTTP_CONNECTION | close |
HTTP_X_FORWARDED_FOR | 216.73.216.121 |
HTTP_X_CLIENT_IP | 216.73.216.121 |
HTTP_X_FORWARDED_PROTO | https |
HTTP_X_FORWARDED_PORT | 443 |
HTTP_HOST | www.bundes-telefonbuch.de |
HTTP_ACCEPT_ENCODING | gzip, br, zstd, deflate |
HTTP_COOKIE | PHPSESSID=ipmeomcr3rb5l17j9f9csdtsau |
HTTP_USER_AGENT | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
HTTP_ACCEPT | */* |
HTTPS | on |
SCRIPT_FILENAME | /var/www/bundes-telefonbuch.de/public/btb/index.php |
REDIRECT_STATUS | 200 |
SERVER_NAME | bundes-telefonbuch.de |
SERVER_PORT | 80 |
SERVER_ADDR | 192.168.122.41 |
REMOTE_PORT | |
REMOTE_ADDR | 216.73.216.121 |
SERVER_SOFTWARE | nginx/1.18.0 |
GATEWAY_INTERFACE | CGI/1.1 |
REQUEST_SCHEME | http |
SERVER_PROTOCOL | HTTP/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_METHOD | GET |
QUERY_STRING | _url=/suche/heime/herzogenrath/pflegeheime |
FCGI_ROLE | RESPONDER |
PHP_SELF | /index.php |
REQUEST_TIME_FLOAT | 1758107398.8666 |
REQUEST_TIME | 1758107398 |
# | 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 | |
---|---|
Usage | 2097152 |