| #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/buchhaltung/eigeltingen |
| Key | Value |
|---|---|
| USER | www-data |
| HOME | /var/www |
| HTTP_CONNECTION | close |
| HTTP_X_FORWARDED_FOR | 216.73.216.185 |
| HTTP_X_CLIENT_IP | 216.73.216.185 |
| 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=miajpmobhhjhc8l68m53jd9ae3 |
| 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.185 |
| 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/buchhaltung/eigeltingen |
| SCRIPT_NAME | /index.php |
| CONTENT_LENGTH | |
| CONTENT_TYPE | |
| REQUEST_METHOD | GET |
| QUERY_STRING | _url=/suche/buchhaltung/eigeltingen |
| FCGI_ROLE | RESPONDER |
| PHP_SELF | /index.php |
| REQUEST_TIME_FLOAT | 1773227523.7027 |
| REQUEST_TIME | 1773227523 |
| # | 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 |