We offer
Doctrine\DBAL\Exception\InvalidFieldNameException #1054
An exception occurred while executing a query: Unknown column 'c6_.cms_mod_blog_article_categories_article_category_id' in 'on clause' search►
Source file
File: .../doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php:63
53: 1217, 54: 1451, 55: 1452, 56: 1701 => new ForeignKeyConstraintViolationException($exception, $query), 57: 1062, 58: 1557, 59: 1569, 60: 1586 => new UniqueConstraintViolationException($exception, $query), 61: 1054, 62: 1166, 63: 1611 => new InvalidFieldNameException($exception, $query), 64: 1052, 65: 1060, 66: 1110 => new NonUniqueFieldNameException($exception, $query), 67: 1064,
Call stack
1446: $visitor->getParameters(), 1447: $visitor->getTypes(), 1448: ]; 1449: } 1450: 1451: private function handleDriverException( 1452: Driver\Exception $driverException, 1453: ?Query $query, 1454: ): DriverException { 1455: $this->exceptionConverter ??= $this->driver->getExceptionConverter(); 1456: $exception = $this->exceptionConverter->convert($driverException, $query); 1457: 1458: if ($exception instanceof ConnectionLost) { 1459: $this->close(); 1460: }
| $exception | |
|---|---|
| $query |
1382: * 1383: * @param list<mixed>|array<string,mixed> $params 1384: * @phpstan-param WrapperParameterTypeArray $types 1385: */ 1386: final public function convertExceptionDuringQuery( 1387: Driver\Exception $e, 1388: string $sql, 1389: array $params = [], 1390: array $types = [], 1391: ): DriverException { 1392: return $this->handleDriverException($e, new Query($sql, $params, $types)); 1393: } 1394: 1395: /** @internal */ 1396: final public function convertException(Driver\Exception $e): DriverException
| $driverException | |
|---|---|
| $query |
799: 800: $this->bindParameters($stmt, $params, $types); 801: 802: $result = $stmt->execute(); 803: } else { 804: $result = $connection->query($sql); 805: } 806: 807: return new Result($result, $this); 808: } catch (Driver\Exception $e) { 809: throw $this->convertExceptionDuringQuery($e, $sql, $params, $types); 810: } 811: } 812: 813: /**
| $e | |
|---|---|
| $sql | |
| $params | |
| $types |
17: public function __construct(string $sql) 18: { 19: $this->sqlStatements = $sql; 20: } 21: 22: /** 23: * {@inheritDoc} 24: */ 25: public function execute(Connection $conn, array $params, array $types): Result 26: { 27: return $conn->executeQuery($this->getSqlStatements(), $params, $types, $this->queryCacheProfile); 28: } 29: }
| $sql | |
|---|---|
| $params | |
| $types | |
| $qcp | null
|
286: 287: [$sqlParams, $types] = $this->processParameterMappings($paramMappings); 288: 289: $this->evictResultSetCache( 290: $executor, 291: $sqlParams, 292: $types, 293: $this->em->getConnection()->getParams(), 294: ); 295: 296: return $executor->execute($this->em->getConnection(), $sqlParams, $types); 297: } 298: 299: /** 300: * @param array<string,mixed> $sqlParams
| $conn | |
|---|---|
| $params | |
| $types |
920: 921: if (! $result) { 922: $result = []; 923: } 924: 925: $setCacheEntry = static function ($data) use ($cache, $result, $cacheItem, $realCacheKey): void { 926: $cache->save($cacheItem->set($result + [$realCacheKey => $data])); 927: }; 928: } 929: 930: $stmt = $this->_doExecute(); 931: 932: if (is_numeric($stmt)) { 933: $setCacheEntry($stmt); 934:
876: * @phpstan-param string|AbstractQuery::HYDRATE_*|null $hydrationMode 877: */ 878: public function execute( 879: ArrayCollection|array|null $parameters = null, 880: string|int|null $hydrationMode = null, 881: ): mixed { 882: if ($this->cacheable && $this->isCacheEnabled()) { 883: return $this->executeUsingQueryCache($parameters, $hydrationMode); 884: } 885: 886: return $this->executeIgnoreQueryCache($parameters, $hydrationMode); 887: } 888: 889: /** 890: * Execute query ignoring second level cache.
| $parameters | null
|
|---|---|
| $hydrationMode | 1
|
678: 679: /** 680: * Gets the list of results for the query. 681: * 682: * Alias for execute(null, $hydrationMode = HYDRATE_OBJECT). 683: * 684: * @phpstan-param string|AbstractQuery::HYDRATE_* $hydrationMode 685: */ 686: public function getResult(string|int $hydrationMode = self::HYDRATE_OBJECT): mixed 687: { 688: return $this->execute(null, $hydrationMode); 689: } 690: 691: /** 692: * Gets the array of results for the query.
| $parameters | null
|
|---|---|
| $hydrationMode | 1
|
224: } 225: 226: // ✅ DISTINCT pro správnou hydrataci ManyToMany 227: if (!empty($include)) { 228: $qb->distinct(true); 229: } 230: 231: // Načti pouze entity s identifikátory z první fáze 232: $this->applyIdentifierFilter($qb, $identifiers, $identifierFields, $fromTableAlias); 233: 234: return $qb->getQuery()->getResult(); 235: } 236: 237: /** 238: * Aplikuje filtry na QueryBuilder
72: $limit 73: ); 74: 75: // Pokud nejsou žádné výsledky, vrať prázdné pole 76: if (empty($identifiers)) { 77: $totalCount = $computeTotalCount ? $this->computeTotalCount($filters) : 0; 78: return [[], $totalCount]; 79: } 80: 81: // FÁZE 2: Načti kompletní entity s includes 82: $results = $this->fetchCompleteEntities( 83: $entityClass, 84: $fromTableAlias, 85: $identifiers, 86: $columns,
| $entityClass | 'App\UI\Api\Blog\Models\Entities\Article'
|
|---|---|
| $fromTableAlias | 'article'
|
| $identifiers | |
| $columns | array (0)
|
| $include |
9: public function findAll( 10: ?array $filters = [], 11: ?array $orderBys = null, 12: ?int $offset = null, 13: ?int $limit = null, 14: ?array $columns = null, 15: bool $computeTotalCount = false, 16: ?array $includes = [] 17: ): array 18: { 19: return $this->repository->getAll($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $includes); 20: } 21: }
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
143: */ 144: protected function findAllFromDb( 145: array $includes = [], 146: array $filters = [], 147: ?array $orderBy = null, 148: ?int $offset = null, 149: ?int $limit = null, 150: ?array $columns = null, 151: bool $computeTotalCount = false 152: ): array { 153: return $this->mapper->findAll($filters, $orderBy, $offset, $limit, $columns, $computeTotalCount, $includes); 154: } 155: 156: // ========================================== 157: // REQUIRED DEPENDENCIES
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
89: $this->debugger->logInfo("Service::findAll() - Partial cache miss, loading from DB"); 90: } 91: } else { 92: if ($this->debugger !== null) { 93: $this->debugger->logInfo("Service::findAll() - CACHE MISS for query"); 94: } 95: } 96: } 97: 98: // === 3. LOAD FROM DATABASE === 99: [$entities, $totalCount] = $this->findAllFromDb($includes, $filters, $orderBy, $offset, $limit, $columns, $computeTotalCount); 100: 101: // === 4. SAVE TO CACHE === 102: if ($this->shouldUseCache($useCache, true) && !empty($entities)) { 103: // queryKey už obsahuje 'query:' prefix z generateQueryKey()
| $includes | |
|---|---|
| $filters | |
| $orderBy | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
7: /** 8: * @template T of BaseEntity 9: */ 10: trait GetAllTrait 11: { 12: /** 13: * @return T[] 14: */ 15: public function findAll( ?array $includes = [], ?array $filters = [], ?array $orderBys = null, ?int $offset = null, ?int $limit = null, ?array $columns = null, bool $computeTotalCount = false): array 16: { 17: $results = $this->service->findAll($includes, $filters, $orderBys, $offset, $limit, $columns, $computeTotalCount); 18: 19: list($items, $totalCount) = $results; 20: 21: $this->totalCount = ($computeTotalCount) ? $totalCount : NULL;
| $includes | |
|---|---|
| $filters | |
| $orderBy | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
20: $computeTotalCount = boolval($requestParams['computeTotalCount']??FALSE); 21: $include = $requestParams['include']??[]; 22: 23: $data = $this->getGetAllData($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $include); 24: $this->sendJson($data); 25: } 26: 27: public function getGetAllData(array $filters = [], ?array $orderBys = NULL, ?int $offset = NULL, ?int $limit = NULL, ?array $columns = NULL, bool $computeTotalCount = FALSE, array $includes = []): array 28: { 29: $rebuildedFilters = FilterBuilder::buildFilters($filters); 30: $itemList = $this->manager->findAll( 31: $includes, 32: $rebuildedFilters, 33: $orderBys, 34: $offset,
| $includes | |
|---|---|
| $filters | |
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
inner-code
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
327: $methodName = 'get' . ucfirst($action) . 'Data'; 328: if (!method_exists($presenter, $methodName)) { 329: throw new \RuntimeException("Metoda $methodName neexistuje v presenteru $presenterName"); 330: } 331: 332: $reflection = new \ReflectionClass($presenter); 333: $method = $reflection->getMethod($methodName); 334: $method->setAccessible(true); 335: 336: // Získání a vrácení dat 337: return $method->invoke($presenter, ...$params); 338: } catch (\Nette\Application\InvalidPresenterException $e) { 339: throw new \RuntimeException("Presenter $presenterName nebyl nalezen", 0, $e); 340: } 341: }
| $object | |
|---|---|
| $filters | |
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
144: * @throws \RuntimeException Pokud metoda v presenteru neexistuje nebo HTTP chyba 145: */ 146: public function call( 147: string $endpoint, 148: array $params = [], 149: ?string $callType = null, 150: string $method = 'GET' 151: ): mixed { 152: $finalCallType = $callType ?? $this->callType; 153: if ($finalCallType === self::INTERNAL_CALL) { 154: return $this->internalCall($endpoint, $params); 155: } else { 156: return $this->externalCall($endpoint, $params, $method); 157: } 158: }
| $endpoint | 'api/blog/article/getAll'
|
|---|---|
| $params |
20: 21: public function findBy(?array $filters = [], array $include = []): array { 22: $rows = $this->bridge->call($this->apiEndpoint . '/get-by', [ 23: 'filters' => $filters, 24: 'includes' => $include 25: ])??[]; 26: return $rows; 27: } 28: 29: public function findAll(?array $filters = [], ?array $orderBys = null, ?int $offset = null, ?int $limit = null, ?array $columns = null, bool $computeTotalCount = false, array $include = []): array { 30: return $this->bridge->call($this->apiEndpoint . '/get-all', [ 31: 'filters' => $filters, 32: 'orderBys' => $orderBys, 33: 'offset' => $offset, 34: 'limit' => $limit,
| $endpoint | 'api/blog/article/get-all'
|
|---|---|
| $params | |
| $callType | null
|
| $method | 'POST'
|
28: if (empty($data)) { 29: return null; 30: } 31: 32: // ✅ Použij hydrateWithReferences() - automaticky načte references 33: return $this->hydrator->hydrateWithReferences($data, $this->getEntityClass()); 34: } 35: 36: public function findAll(?array $filters = [], ?array $orderBys = null, ?int $offset = null, ?int $limit = null, ?array $columns = null, bool $computeTotalCount = false, array $include = []): array 37: { 38: $apiResponse = $this->repository->findAll($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $include); 39: if (empty($apiResponse)) { 40: return [[], 0]; 41: } 42:
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $include |
15: 16: public function find(int $id, array $include = []): ?BaseEntity { 17: return $this->mapper->find($id, $include); 18: } 19: 20: public function findBy(array|null $filters = [], array|null $include = []): ?BaseEntity { 21: return $this->mapper->findBy($filters, $include); 22: } 23: 24: public function findAll(array|null $filters = [], array|null $orderBys = null, int|null $offset = null, int|null $limit = null, array|null $columns = null, bool $computeTotalCount = false, array $include = []): array { 25: $data = $this->mapper->findAll($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $include); 26: $this->totalCount = ($computeTotalCount) ? $data[1]??NULL : NULL; 27: return $data; 28: } 29: }
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $include |
76: // === Vykonání dotazu === 77: 78: /** 79: * Explicitní vykonání - vrací pole entit 80: * 81: * @return T[] 82: */ 83: public function execute(): array 84: { 85: if ($this->result === null) { 86: [$items, $totalCount] = $this->service->findAll( 87: $this->criteria->filters, 88: $this->criteria->orderBy, 89: $this->criteria->offset, 90: $this->criteria->limit,
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $include |
25: else if(!empty($showOnlyCategoryIds)) { 26: $filters['categoryId'] = new InFilter('categoryId', $showOnlyCategoryIds); 27: } 28: 29: $filters['activated'] = new EqualFilter('activated', 1); 30: $filters['published'] = new DateBeforeOrEqualFilter('published', 'NOW'); 31: $articleList = $this->articleManager->findAll( 32: $filters, 33: $orderBy, 34: 0, 35: $maxNumber)->include(['translations', 'image.translations', 'categories.translations'])->execute(); 36: 37: 38: $this->template->articleItems = $articleList; 39:
23: 24: public function render(string $style = 'Style1', array $orderBy = ['id' => false], int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 25: $this->template->id = $this->getUniqueId(); 26: $this->template->uniqueId = $this->getUniqueId(); 27: $this->template->style = $style; 28: 29: $this->numberOnFirstRow = $numberOnFirstRow; 30: $this->numberOnOtherRow = $numberOnOtherRow; 31: $this->headingTag = $headingTag; 32: 33: $this->intilializeRender($maxNumber, $orderBy, $showOnlyCategoryIds); 34: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 35: return $this->template->render(); 36: } 37:
| $maxNumber | 5
|
|---|---|
| $orderBy | |
| $showOnlyCategoryIds | array (0)
|
29: $this->numberOnFirstRow = $numberOnFirstRow; 30: $this->numberOnOtherRow = $numberOnOtherRow; 31: $this->headingTag = $headingTag; 32: 33: $this->intilializeRender($maxNumber, $orderBy, $showOnlyCategoryIds); 34: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 35: return $this->template->render(); 36: } 37: 38: public function renderStyle1(array $orderBy = ['id' => false], int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 39: return $this->render('Style1', $orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds); 40: } 41: public function renderStyle2(array $orderBy = ['id' => false], int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 42: return $this->render('Style2', $orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds); 43: }
| $style | 'Style1'
|
|---|---|
| $orderBy | |
| $maxNumber | 5
|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
| $headingTag | 'div'
|
| $showOnlyCategoryIds | array (0)
|
14: { 15: extract($ʟ_args); 16: unset($ʟ_args); 17: 18: if ($this->global->snippetDriver?->renderSnippets($this->blocks[self::LayerSnippet], $this->params)) { 19: return; 20: } 21: 22: $ʟ_tmp = $this->global->uiControl->getComponent('frontBlogArticleListProvider'); 23: if ($ʟ_tmp instanceof Nette\Application\UI\Renderable) $ʟ_tmp->redrawControl(null, false); 24: $ʟ_tmp->{'render' . $style}($orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds) /* line 2 */; 25: } 26: 27: 28: public function prepare(): array
1: {var $orderBy = ['published' => false]} 2: {control frontBlogArticleListProvider:$style $orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds}
| $orderBy | |
|---|---|
| $maxNumber | 5
|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
| $headingTag | 'div'
|
| $showOnlyCategoryIds | array (0)
|
100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108: 109: } else { 110: $this->main($params); 111: } 112: } 113: 114:
| $ʟ_args | null
|
|---|
67: 68: 69: /** 70: * Renders template to output. 71: * @param object|mixed[] $params 72: */ 73: public function render(string $name, object|array $params = [], ?string $block = null): void 74: { 75: $template = $this->createTemplate($name, $this->processParams($params)); 76: $template->global->coreCaptured = false; 77: $template->render($block); 78: } 79: 80: 81: /**
| $block | null
|
|---|
37: 38: /** 39: * Renders template to output. 40: */ 41: public function render(?string $file = null, array $params = []): void 42: { 43: Nette\Utils\Arrays::toObject($params, $this); 44: if (isset($this->blueprint)) { 45: Nodes\TemplatePrintNode::printClass($this->getParameters(), $this->blueprint); 46: } 47: $this->latte->render($file ?: $this->file, $this); 48: } 49: 50: 51: /**
| $name | '/var/www/clients/client1/web1/web/subdom/tmp2/app/UI/Front/Blog/Components/LastArticleListComponent/Template//Template.latte'
|
|---|---|
| $params |
15: public function render(string $style = 'Style1', int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 16: 17: $this->template->style = $style; 18: $this->template->maxNumber = $maxNumber; 19: $this->template->numberOnFirstRow = $numberOnFirstRow; 20: $this->template->numberOnOtherRow = $numberOnOtherRow; 21: $this->template->headingTag = $headingTag; 22: $this->template->showOnlyCategoryIds = $showOnlyCategoryIds; 23: 24: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 25: return $this->template->render(); 26: } 27: 28: public function renderStyle1(int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 29: return $this->render('Style1', $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds);
19: $this->template->numberOnFirstRow = $numberOnFirstRow; 20: $this->template->numberOnOtherRow = $numberOnOtherRow; 21: $this->template->headingTag = $headingTag; 22: $this->template->showOnlyCategoryIds = $showOnlyCategoryIds; 23: 24: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 25: return $this->template->render(); 26: } 27: 28: public function renderStyle1(int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 29: return $this->render('Style1', $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds); 30: } 31: 32: public function renderStyle2(int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 33: return $this->render('Style2', $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds);
| $style | 'Style1'
|
|---|---|
| $maxNumber | 5
|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
| $headingTag | 'div'
|
| $showOnlyCategoryIds | array (0)
|
115: // Sestavení názvu render metody 116: $renderMethodName = 'render' . ucfirst($renderMethod); 117: 118: // Kontrola existence render metody 119: if (!method_exists($instance, $renderMethodName)) { 120: throw new \RuntimeException("Render method '{$renderMethodName}' not found in component '{$componentName}'"); 121: } 122: 123: // Vykreslení komponenty 124: ob_start(); 125: $instance->$renderMethodName(...$args); 126: return ob_get_clean(); 127: } 128: 129: /**
| $maxNumber | 5
|
|---|---|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
22: echo '<main class="flex-grow-1"> 23: '; 24: $ʟ_tmp = $this->global->uiControl->getComponent('frontSystemLogin'); 25: if ($ʟ_tmp instanceof Nette\Application\UI\Renderable) $ʟ_tmp->redrawControl(null, false); 26: $ʟ_tmp->render() /* line 3 */; 27: 28: echo ' <section> 29: <div class="container"> 30: <h2 class="subtitle mb-4"><span>We offer</span></h2> 31: '; 32: echo \App\Core\Latte\Macros\MultiControlMacros::renderMultiControl($this->global->uiControl, 'frontBlogLastArticleList-style1:style1', [5, 2, 1]) /* line 7 */; 33: echo ' 34: <hr class="my-4" /> 35: '; 36: echo \App\Core\Latte\Macros\MultiControlMacros::renderMultiControl($this->global->uiControl, 'frontBlogLastArticleList-style2:style2', [5, 3, 3]) /* line 9 */;
1: {var $templateWebPath = $theme->getVariantPath('rel', 'desktop')} 2: <main class="flex-grow-1"> 3: {control frontSystemLogin} 4: <section> 5: <div class="container"> 6: <h2 class="subtitle mb-4"><span>We offer</span></h2> 7: {multicontrol frontBlogLastArticleList-style1:style1 5,2,1} 8: <hr class="my-4" /> 9: {multicontrol frontBlogLastArticleList-style2:style2 5,3,3} 10: <hr class="my-4" /> 11: {multicontrol frontBlogLastArticleList-style3:style3 5,3,3} 12: <hr class="my-4" /> 13: {multicontrol frontBlogLastArticleList-style4:style4 5,3,3} 14: <hr class="my-4" /> 15: {multicontrol frontBlogLastArticleList-style6:style6 5,3,3}
| $control | |
|---|---|
| $words | 'frontBlogLastArticleList-style1:style1'
|
| $args |
100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108: 109: } else { 110: $this->main($params); 111: } 112: } 113: 114:
| $ʟ_args | null
|
|---|
162: } 163: 164: 165: /** 166: * @param string|\Closure|null $mod content-type name or modifier closure 167: * @internal 168: */ 169: public function renderToContentType(string|\Closure|null $mod, ?string $block = null): void 170: { 171: $this->filter( 172: fn() => $this->render($block), 173: $mod, 174: static::ContentType, 175: "'$this->name'", 176: );
| $block | null
|
|---|
207: return $child; 208: } 209: 210: 211: /** 212: * @param string|\Closure|null $targetType content-type name or modifier closure 213: */ 214: private function filter(callable $producer, string|\Closure|null $targetType, string $contentType, string $name): void 215: { 216: if ($targetType === null || $targetType === $contentType) { 217: $producer(); 218: 219: } elseif ($targetType instanceof \Closure) { 220: echo $targetType($this->capture($producer), $contentType); 221:
161: prev($block->functions); 162: } 163: 164: 165: /** 166: * @param string|\Closure|null $mod content-type name or modifier closure 167: * @internal 168: */ 169: public function renderToContentType(string|\Closure|null $mod, ?string $block = null): void 170: { 171: $this->filter( 172: fn() => $this->render($block), 173: $mod, 174: static::ContentType, 175: "'$this->name'",
| $producer | |
|---|---|
| $targetType | 'html'
|
| $contentType | 'html'
|
| $name | ''/var/www/clients/client1/web1/web/subdom/tmp2/www/themes/frontend/template1/desktop/layouts/parts/shared/main.latte''
|
59: '; 60: 61: } finally { 62: if ($ʟ_ifc[0] ?? null) { 63: ob_end_clean(); 64: 65: } else { 66: echo ob_get_clean(); 67: } 68: } 69: $this->createTemplate('parts/shared/main.latte', $this->params, 'include')->renderToContentType('html') /* line 15 */; 70: $this->createTemplate('parts/shared/footer.latte', $this->params, 'include')->renderToContentType('html') /* line 16 */; 71: echo ' 72: <a class="go-to-top" href="#" title="go to Top"><i class="fa-solid fa-arrow-turn-up"></i></a> 73:
5: {include head} 6: <body id="page-homepage" class="d-flex flex-column min-vh-100"> 7: {include 'parts/shared/header/homepage.latte'} 8: 9: <div class="{$containerClass} mt-5" n:ifcontent> 10: <div n:snippet="flashMessages"> 11: {control frontSystemFlashMessages $flashes} 12: </div> 13: {include #content} 14: </div> 15: {include 'parts/shared/main.latte'} 16: {include 'parts/shared/footer.latte'} 17: 18: <a class="go-to-top" href="#" title="go to Top"><i class="fa-solid fa-arrow-turn-up"></i></a> 19:
| $mod | 'html'
|
|---|
100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108: 109: } else { 110: $this->main($params); 111: } 112: } 113: 114:
| $ʟ_args | null
|
|---|
94: $this->parentName = ($this->global->coreParentFinder)($this); 95: } 96: 97: if ($this->referenceType === 'import') { 98: if ($this->parentName) { 99: throw new Latte\RuntimeException('Imported template cannot use {extends} or {layout}, use {import}'); 100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108:
| $block | null
|
|---|
67: 68: 69: /** 70: * Renders template to output. 71: * @param object|mixed[] $params 72: */ 73: public function render(string $name, object|array $params = [], ?string $block = null): void 74: { 75: $template = $this->createTemplate($name, $this->processParams($params)); 76: $template->global->coreCaptured = false; 77: $template->render($block); 78: } 79: 80: 81: /**
| $block | null
|
|---|
37: 38: /** 39: * Renders template to output. 40: */ 41: public function render(?string $file = null, array $params = []): void 42: { 43: Nette\Utils\Arrays::toObject($params, $this); 44: if (isset($this->blueprint)) { 45: Nodes\TemplatePrintNode::printClass($this->getParameters(), $this->blueprint); 46: } 47: $this->latte->render($file ?: $this->file, $this); 48: } 49: 50: 51: /**
| $name | '/var/www/clients/client1/web1/web/subdom/tmp2/app/UI/Front/System/Templates/Page/homepage.latte'
|
|---|---|
| $params |
31: return $this->source; 32: } 33: 34: 35: /** 36: * Sends response to output. 37: */ 38: public function send(Nette\Http\IRequest $httpRequest, Nette\Http\IResponse $httpResponse): void 39: { 40: if ($this->source instanceof Nette\Application\UI\Template) { 41: $this->source->render(); 42: 43: } else { 44: echo $this->source; 45: }
149: 150: Arrays::invoke($this->onPresenter, $this, $this->presenter); 151: $response = $this->presenter->run(clone $request); 152: 153: if ($response instanceof Responses\ForwardResponse) { 154: $request = $response->getRequest(); 155: goto process; 156: } 157: 158: Arrays::invoke($this->onResponse, $this, $response); 159: $response->send($this->httpRequest, $this->httpResponse); 160: } 161: 162: 163: public function createErrorRequest(\Throwable $e): ?Request
| $httpRequest | |
|---|---|
| $httpResponse |
67: } 68: 69: 70: /** 71: * Dispatch a HTTP request to a front controller. 72: */ 73: public function run(): void 74: { 75: try { 76: Arrays::invoke($this->onStartup, $this); 77: $this->processRequest($this->createInitialRequest()); 78: Arrays::invoke($this->onShutdown, $this); 79: 80: } catch (\Throwable $e) { 81: $this->sendHttpCode($e);
| $request |
|---|
1: <?php declare(strict_types=1); 2: 3: use App\Bootstrap; 4: 5: require __DIR__ . '/../vendor/autoload.php'; 6: 7: $bootstrap = new Bootstrap(); 8: $container = $bootstrap->bootWebApplication(); 9: $application = $container->getByType(Nette\Application\Application::class); 10: $application->run();
Exception
Caused by
Doctrine\DBAL\Driver\Mysqli\Exception\ConnectionError #1054
Unknown column 'c6_.cms_mod_blog_article_categories_article_category_id' in 'on clause' search►
Source file
File: .../dbal/src/Driver/Mysqli/Exception/ConnectionError.php:24
14: { 15: public static function new(mysqli $connection): self 16: { 17: return new self($connection->error, $connection->sqlstate, $connection->errno); 18: } 19: 20: public static function upcast(mysqli_sql_exception $exception): self 21: { 22: $p = new ReflectionProperty(mysqli_sql_exception::class, 'sqlstate'); 23: 24: return new self($exception->getMessage(), $p->getValue($exception), $exception->getCode(), $exception); 25: } 26: }
Call stack
25: public function getServerVersion(): string 26: { 27: return $this->connection->get_server_info(); 28: } 29: 30: public function prepare(string $sql): Statement 31: { 32: try { 33: $stmt = $this->connection->prepare($sql); 34: } catch (mysqli_sql_exception $e) { 35: throw ConnectionError::upcast($e); 36: } 37: 38: if ($stmt === false) { 39: throw ConnectionError::new($this->connection);
| $exception |
|---|
9: use Doctrine\DBAL\Driver\Statement; 10: 11: abstract class AbstractConnectionMiddleware implements Connection 12: { 13: public function __construct(private readonly Connection $wrappedConnection) 14: { 15: } 16: 17: public function prepare(string $sql): Statement 18: { 19: return $this->wrappedConnection->prepare($sql); 20: } 21: 22: public function query(string $sql): Result 23: {
| $sql |
|---|
18: private DebugStack $stack, 19: private string $connectionName, 20: ) 21: { 22: parent::__construct($connection); 23: } 24: 25: public function prepare(string $sql): DebugStatement 26: { 27: return new DebugStatement( 28: parent::prepare($sql), 29: $this->stack, 30: $this->connectionName, 31: $sql 32: );
| $sql |
|---|
13: { 14: public function __construct( 15: private Connection $wrappedConnection, 16: private TracingSQLLogger $logger 17: ) { 18: } 19: 20: public function prepare(string $sql): Statement 21: { 22: return new TracingStatement( 23: $this->wrappedConnection->prepare($sql), 24: $this->logger, 25: $sql 26: ); 27: }
| $sql |
|---|
788: if ($qcp !== null) { 789: return $this->executeCacheQuery($sql, $params, $types, $qcp); 790: } 791: 792: $connection = $this->connect(); 793: 794: try { 795: if (count($params) > 0) { 796: [$sql, $params, $types] = $this->expandArrayParameters($sql, $params, $types); 797: 798: $stmt = $connection->prepare($sql); 799: 800: $this->bindParameters($stmt, $params, $types); 801: 802: $result = $stmt->execute();
| $sql |
|---|
17: public function __construct(string $sql) 18: { 19: $this->sqlStatements = $sql; 20: } 21: 22: /** 23: * {@inheritDoc} 24: */ 25: public function execute(Connection $conn, array $params, array $types): Result 26: { 27: return $conn->executeQuery($this->getSqlStatements(), $params, $types, $this->queryCacheProfile); 28: } 29: }
| $sql | |
|---|---|
| $params | |
| $types | |
| $qcp | null
|
286: 287: [$sqlParams, $types] = $this->processParameterMappings($paramMappings); 288: 289: $this->evictResultSetCache( 290: $executor, 291: $sqlParams, 292: $types, 293: $this->em->getConnection()->getParams(), 294: ); 295: 296: return $executor->execute($this->em->getConnection(), $sqlParams, $types); 297: } 298: 299: /** 300: * @param array<string,mixed> $sqlParams
| $conn | |
|---|---|
| $params | |
| $types |
920: 921: if (! $result) { 922: $result = []; 923: } 924: 925: $setCacheEntry = static function ($data) use ($cache, $result, $cacheItem, $realCacheKey): void { 926: $cache->save($cacheItem->set($result + [$realCacheKey => $data])); 927: }; 928: } 929: 930: $stmt = $this->_doExecute(); 931: 932: if (is_numeric($stmt)) { 933: $setCacheEntry($stmt); 934:
876: * @phpstan-param string|AbstractQuery::HYDRATE_*|null $hydrationMode 877: */ 878: public function execute( 879: ArrayCollection|array|null $parameters = null, 880: string|int|null $hydrationMode = null, 881: ): mixed { 882: if ($this->cacheable && $this->isCacheEnabled()) { 883: return $this->executeUsingQueryCache($parameters, $hydrationMode); 884: } 885: 886: return $this->executeIgnoreQueryCache($parameters, $hydrationMode); 887: } 888: 889: /** 890: * Execute query ignoring second level cache.
| $parameters | null
|
|---|---|
| $hydrationMode | 1
|
678: 679: /** 680: * Gets the list of results for the query. 681: * 682: * Alias for execute(null, $hydrationMode = HYDRATE_OBJECT). 683: * 684: * @phpstan-param string|AbstractQuery::HYDRATE_* $hydrationMode 685: */ 686: public function getResult(string|int $hydrationMode = self::HYDRATE_OBJECT): mixed 687: { 688: return $this->execute(null, $hydrationMode); 689: } 690: 691: /** 692: * Gets the array of results for the query.
| $parameters | null
|
|---|---|
| $hydrationMode | 1
|
224: } 225: 226: // ✅ DISTINCT pro správnou hydrataci ManyToMany 227: if (!empty($include)) { 228: $qb->distinct(true); 229: } 230: 231: // Načti pouze entity s identifikátory z první fáze 232: $this->applyIdentifierFilter($qb, $identifiers, $identifierFields, $fromTableAlias); 233: 234: return $qb->getQuery()->getResult(); 235: } 236: 237: /** 238: * Aplikuje filtry na QueryBuilder
72: $limit 73: ); 74: 75: // Pokud nejsou žádné výsledky, vrať prázdné pole 76: if (empty($identifiers)) { 77: $totalCount = $computeTotalCount ? $this->computeTotalCount($filters) : 0; 78: return [[], $totalCount]; 79: } 80: 81: // FÁZE 2: Načti kompletní entity s includes 82: $results = $this->fetchCompleteEntities( 83: $entityClass, 84: $fromTableAlias, 85: $identifiers, 86: $columns,
| $entityClass | 'App\UI\Api\Blog\Models\Entities\Article'
|
|---|---|
| $fromTableAlias | 'article'
|
| $identifiers | |
| $columns | array (0)
|
| $include |
9: public function findAll( 10: ?array $filters = [], 11: ?array $orderBys = null, 12: ?int $offset = null, 13: ?int $limit = null, 14: ?array $columns = null, 15: bool $computeTotalCount = false, 16: ?array $includes = [] 17: ): array 18: { 19: return $this->repository->getAll($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $includes); 20: } 21: }
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
143: */ 144: protected function findAllFromDb( 145: array $includes = [], 146: array $filters = [], 147: ?array $orderBy = null, 148: ?int $offset = null, 149: ?int $limit = null, 150: ?array $columns = null, 151: bool $computeTotalCount = false 152: ): array { 153: return $this->mapper->findAll($filters, $orderBy, $offset, $limit, $columns, $computeTotalCount, $includes); 154: } 155: 156: // ========================================== 157: // REQUIRED DEPENDENCIES
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
89: $this->debugger->logInfo("Service::findAll() - Partial cache miss, loading from DB"); 90: } 91: } else { 92: if ($this->debugger !== null) { 93: $this->debugger->logInfo("Service::findAll() - CACHE MISS for query"); 94: } 95: } 96: } 97: 98: // === 3. LOAD FROM DATABASE === 99: [$entities, $totalCount] = $this->findAllFromDb($includes, $filters, $orderBy, $offset, $limit, $columns, $computeTotalCount); 100: 101: // === 4. SAVE TO CACHE === 102: if ($this->shouldUseCache($useCache, true) && !empty($entities)) { 103: // queryKey už obsahuje 'query:' prefix z generateQueryKey()
| $includes | |
|---|---|
| $filters | |
| $orderBy | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
7: /** 8: * @template T of BaseEntity 9: */ 10: trait GetAllTrait 11: { 12: /** 13: * @return T[] 14: */ 15: public function findAll( ?array $includes = [], ?array $filters = [], ?array $orderBys = null, ?int $offset = null, ?int $limit = null, ?array $columns = null, bool $computeTotalCount = false): array 16: { 17: $results = $this->service->findAll($includes, $filters, $orderBys, $offset, $limit, $columns, $computeTotalCount); 18: 19: list($items, $totalCount) = $results; 20: 21: $this->totalCount = ($computeTotalCount) ? $totalCount : NULL;
| $includes | |
|---|---|
| $filters | |
| $orderBy | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
20: $computeTotalCount = boolval($requestParams['computeTotalCount']??FALSE); 21: $include = $requestParams['include']??[]; 22: 23: $data = $this->getGetAllData($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $include); 24: $this->sendJson($data); 25: } 26: 27: public function getGetAllData(array $filters = [], ?array $orderBys = NULL, ?int $offset = NULL, ?int $limit = NULL, ?array $columns = NULL, bool $computeTotalCount = FALSE, array $includes = []): array 28: { 29: $rebuildedFilters = FilterBuilder::buildFilters($filters); 30: $itemList = $this->manager->findAll( 31: $includes, 32: $rebuildedFilters, 33: $orderBys, 34: $offset,
| $includes | |
|---|---|
| $filters | |
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
inner-code
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
327: $methodName = 'get' . ucfirst($action) . 'Data'; 328: if (!method_exists($presenter, $methodName)) { 329: throw new \RuntimeException("Metoda $methodName neexistuje v presenteru $presenterName"); 330: } 331: 332: $reflection = new \ReflectionClass($presenter); 333: $method = $reflection->getMethod($methodName); 334: $method->setAccessible(true); 335: 336: // Získání a vrácení dat 337: return $method->invoke($presenter, ...$params); 338: } catch (\Nette\Application\InvalidPresenterException $e) { 339: throw new \RuntimeException("Presenter $presenterName nebyl nalezen", 0, $e); 340: } 341: }
| $object | |
|---|---|
| $filters | |
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
144: * @throws \RuntimeException Pokud metoda v presenteru neexistuje nebo HTTP chyba 145: */ 146: public function call( 147: string $endpoint, 148: array $params = [], 149: ?string $callType = null, 150: string $method = 'GET' 151: ): mixed { 152: $finalCallType = $callType ?? $this->callType; 153: if ($finalCallType === self::INTERNAL_CALL) { 154: return $this->internalCall($endpoint, $params); 155: } else { 156: return $this->externalCall($endpoint, $params, $method); 157: } 158: }
| $endpoint | 'api/blog/article/getAll'
|
|---|---|
| $params |
20: 21: public function findBy(?array $filters = [], array $include = []): array { 22: $rows = $this->bridge->call($this->apiEndpoint . '/get-by', [ 23: 'filters' => $filters, 24: 'includes' => $include 25: ])??[]; 26: return $rows; 27: } 28: 29: public function findAll(?array $filters = [], ?array $orderBys = null, ?int $offset = null, ?int $limit = null, ?array $columns = null, bool $computeTotalCount = false, array $include = []): array { 30: return $this->bridge->call($this->apiEndpoint . '/get-all', [ 31: 'filters' => $filters, 32: 'orderBys' => $orderBys, 33: 'offset' => $offset, 34: 'limit' => $limit,
| $endpoint | 'api/blog/article/get-all'
|
|---|---|
| $params | |
| $callType | null
|
| $method | 'POST'
|
28: if (empty($data)) { 29: return null; 30: } 31: 32: // ✅ Použij hydrateWithReferences() - automaticky načte references 33: return $this->hydrator->hydrateWithReferences($data, $this->getEntityClass()); 34: } 35: 36: public function findAll(?array $filters = [], ?array $orderBys = null, ?int $offset = null, ?int $limit = null, ?array $columns = null, bool $computeTotalCount = false, array $include = []): array 37: { 38: $apiResponse = $this->repository->findAll($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $include); 39: if (empty($apiResponse)) { 40: return [[], 0]; 41: } 42:
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $include |
15: 16: public function find(int $id, array $include = []): ?BaseEntity { 17: return $this->mapper->find($id, $include); 18: } 19: 20: public function findBy(array|null $filters = [], array|null $include = []): ?BaseEntity { 21: return $this->mapper->findBy($filters, $include); 22: } 23: 24: public function findAll(array|null $filters = [], array|null $orderBys = null, int|null $offset = null, int|null $limit = null, array|null $columns = null, bool $computeTotalCount = false, array $include = []): array { 25: $data = $this->mapper->findAll($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $include); 26: $this->totalCount = ($computeTotalCount) ? $data[1]??NULL : NULL; 27: return $data; 28: } 29: }
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $include |
76: // === Vykonání dotazu === 77: 78: /** 79: * Explicitní vykonání - vrací pole entit 80: * 81: * @return T[] 82: */ 83: public function execute(): array 84: { 85: if ($this->result === null) { 86: [$items, $totalCount] = $this->service->findAll( 87: $this->criteria->filters, 88: $this->criteria->orderBy, 89: $this->criteria->offset, 90: $this->criteria->limit,
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $include |
25: else if(!empty($showOnlyCategoryIds)) { 26: $filters['categoryId'] = new InFilter('categoryId', $showOnlyCategoryIds); 27: } 28: 29: $filters['activated'] = new EqualFilter('activated', 1); 30: $filters['published'] = new DateBeforeOrEqualFilter('published', 'NOW'); 31: $articleList = $this->articleManager->findAll( 32: $filters, 33: $orderBy, 34: 0, 35: $maxNumber)->include(['translations', 'image.translations', 'categories.translations'])->execute(); 36: 37: 38: $this->template->articleItems = $articleList; 39:
23: 24: public function render(string $style = 'Style1', array $orderBy = ['id' => false], int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 25: $this->template->id = $this->getUniqueId(); 26: $this->template->uniqueId = $this->getUniqueId(); 27: $this->template->style = $style; 28: 29: $this->numberOnFirstRow = $numberOnFirstRow; 30: $this->numberOnOtherRow = $numberOnOtherRow; 31: $this->headingTag = $headingTag; 32: 33: $this->intilializeRender($maxNumber, $orderBy, $showOnlyCategoryIds); 34: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 35: return $this->template->render(); 36: } 37:
| $maxNumber | 5
|
|---|---|
| $orderBy | |
| $showOnlyCategoryIds | array (0)
|
29: $this->numberOnFirstRow = $numberOnFirstRow; 30: $this->numberOnOtherRow = $numberOnOtherRow; 31: $this->headingTag = $headingTag; 32: 33: $this->intilializeRender($maxNumber, $orderBy, $showOnlyCategoryIds); 34: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 35: return $this->template->render(); 36: } 37: 38: public function renderStyle1(array $orderBy = ['id' => false], int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 39: return $this->render('Style1', $orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds); 40: } 41: public function renderStyle2(array $orderBy = ['id' => false], int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 42: return $this->render('Style2', $orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds); 43: }
| $style | 'Style1'
|
|---|---|
| $orderBy | |
| $maxNumber | 5
|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
| $headingTag | 'div'
|
| $showOnlyCategoryIds | array (0)
|
14: { 15: extract($ʟ_args); 16: unset($ʟ_args); 17: 18: if ($this->global->snippetDriver?->renderSnippets($this->blocks[self::LayerSnippet], $this->params)) { 19: return; 20: } 21: 22: $ʟ_tmp = $this->global->uiControl->getComponent('frontBlogArticleListProvider'); 23: if ($ʟ_tmp instanceof Nette\Application\UI\Renderable) $ʟ_tmp->redrawControl(null, false); 24: $ʟ_tmp->{'render' . $style}($orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds) /* line 2 */; 25: } 26: 27: 28: public function prepare(): array
1: {var $orderBy = ['published' => false]} 2: {control frontBlogArticleListProvider:$style $orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds}
| $orderBy | |
|---|---|
| $maxNumber | 5
|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
| $headingTag | 'div'
|
| $showOnlyCategoryIds | array (0)
|
100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108: 109: } else { 110: $this->main($params); 111: } 112: } 113: 114:
| $ʟ_args | null
|
|---|
67: 68: 69: /** 70: * Renders template to output. 71: * @param object|mixed[] $params 72: */ 73: public function render(string $name, object|array $params = [], ?string $block = null): void 74: { 75: $template = $this->createTemplate($name, $this->processParams($params)); 76: $template->global->coreCaptured = false; 77: $template->render($block); 78: } 79: 80: 81: /**
| $block | null
|
|---|
37: 38: /** 39: * Renders template to output. 40: */ 41: public function render(?string $file = null, array $params = []): void 42: { 43: Nette\Utils\Arrays::toObject($params, $this); 44: if (isset($this->blueprint)) { 45: Nodes\TemplatePrintNode::printClass($this->getParameters(), $this->blueprint); 46: } 47: $this->latte->render($file ?: $this->file, $this); 48: } 49: 50: 51: /**
| $name | '/var/www/clients/client1/web1/web/subdom/tmp2/app/UI/Front/Blog/Components/LastArticleListComponent/Template//Template.latte'
|
|---|---|
| $params |
15: public function render(string $style = 'Style1', int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 16: 17: $this->template->style = $style; 18: $this->template->maxNumber = $maxNumber; 19: $this->template->numberOnFirstRow = $numberOnFirstRow; 20: $this->template->numberOnOtherRow = $numberOnOtherRow; 21: $this->template->headingTag = $headingTag; 22: $this->template->showOnlyCategoryIds = $showOnlyCategoryIds; 23: 24: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 25: return $this->template->render(); 26: } 27: 28: public function renderStyle1(int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 29: return $this->render('Style1', $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds);
19: $this->template->numberOnFirstRow = $numberOnFirstRow; 20: $this->template->numberOnOtherRow = $numberOnOtherRow; 21: $this->template->headingTag = $headingTag; 22: $this->template->showOnlyCategoryIds = $showOnlyCategoryIds; 23: 24: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 25: return $this->template->render(); 26: } 27: 28: public function renderStyle1(int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 29: return $this->render('Style1', $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds); 30: } 31: 32: public function renderStyle2(int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 33: return $this->render('Style2', $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds);
| $style | 'Style1'
|
|---|---|
| $maxNumber | 5
|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
| $headingTag | 'div'
|
| $showOnlyCategoryIds | array (0)
|
115: // Sestavení názvu render metody 116: $renderMethodName = 'render' . ucfirst($renderMethod); 117: 118: // Kontrola existence render metody 119: if (!method_exists($instance, $renderMethodName)) { 120: throw new \RuntimeException("Render method '{$renderMethodName}' not found in component '{$componentName}'"); 121: } 122: 123: // Vykreslení komponenty 124: ob_start(); 125: $instance->$renderMethodName(...$args); 126: return ob_get_clean(); 127: } 128: 129: /**
| $maxNumber | 5
|
|---|---|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
22: echo '<main class="flex-grow-1"> 23: '; 24: $ʟ_tmp = $this->global->uiControl->getComponent('frontSystemLogin'); 25: if ($ʟ_tmp instanceof Nette\Application\UI\Renderable) $ʟ_tmp->redrawControl(null, false); 26: $ʟ_tmp->render() /* line 3 */; 27: 28: echo ' <section> 29: <div class="container"> 30: <h2 class="subtitle mb-4"><span>We offer</span></h2> 31: '; 32: echo \App\Core\Latte\Macros\MultiControlMacros::renderMultiControl($this->global->uiControl, 'frontBlogLastArticleList-style1:style1', [5, 2, 1]) /* line 7 */; 33: echo ' 34: <hr class="my-4" /> 35: '; 36: echo \App\Core\Latte\Macros\MultiControlMacros::renderMultiControl($this->global->uiControl, 'frontBlogLastArticleList-style2:style2', [5, 3, 3]) /* line 9 */;
1: {var $templateWebPath = $theme->getVariantPath('rel', 'desktop')} 2: <main class="flex-grow-1"> 3: {control frontSystemLogin} 4: <section> 5: <div class="container"> 6: <h2 class="subtitle mb-4"><span>We offer</span></h2> 7: {multicontrol frontBlogLastArticleList-style1:style1 5,2,1} 8: <hr class="my-4" /> 9: {multicontrol frontBlogLastArticleList-style2:style2 5,3,3} 10: <hr class="my-4" /> 11: {multicontrol frontBlogLastArticleList-style3:style3 5,3,3} 12: <hr class="my-4" /> 13: {multicontrol frontBlogLastArticleList-style4:style4 5,3,3} 14: <hr class="my-4" /> 15: {multicontrol frontBlogLastArticleList-style6:style6 5,3,3}
| $control | |
|---|---|
| $words | 'frontBlogLastArticleList-style1:style1'
|
| $args |
100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108: 109: } else { 110: $this->main($params); 111: } 112: } 113: 114:
| $ʟ_args | null
|
|---|
162: } 163: 164: 165: /** 166: * @param string|\Closure|null $mod content-type name or modifier closure 167: * @internal 168: */ 169: public function renderToContentType(string|\Closure|null $mod, ?string $block = null): void 170: { 171: $this->filter( 172: fn() => $this->render($block), 173: $mod, 174: static::ContentType, 175: "'$this->name'", 176: );
| $block | null
|
|---|
207: return $child; 208: } 209: 210: 211: /** 212: * @param string|\Closure|null $targetType content-type name or modifier closure 213: */ 214: private function filter(callable $producer, string|\Closure|null $targetType, string $contentType, string $name): void 215: { 216: if ($targetType === null || $targetType === $contentType) { 217: $producer(); 218: 219: } elseif ($targetType instanceof \Closure) { 220: echo $targetType($this->capture($producer), $contentType); 221:
161: prev($block->functions); 162: } 163: 164: 165: /** 166: * @param string|\Closure|null $mod content-type name or modifier closure 167: * @internal 168: */ 169: public function renderToContentType(string|\Closure|null $mod, ?string $block = null): void 170: { 171: $this->filter( 172: fn() => $this->render($block), 173: $mod, 174: static::ContentType, 175: "'$this->name'",
| $producer | |
|---|---|
| $targetType | 'html'
|
| $contentType | 'html'
|
| $name | ''/var/www/clients/client1/web1/web/subdom/tmp2/www/themes/frontend/template1/desktop/layouts/parts/shared/main.latte''
|
59: '; 60: 61: } finally { 62: if ($ʟ_ifc[0] ?? null) { 63: ob_end_clean(); 64: 65: } else { 66: echo ob_get_clean(); 67: } 68: } 69: $this->createTemplate('parts/shared/main.latte', $this->params, 'include')->renderToContentType('html') /* line 15 */; 70: $this->createTemplate('parts/shared/footer.latte', $this->params, 'include')->renderToContentType('html') /* line 16 */; 71: echo ' 72: <a class="go-to-top" href="#" title="go to Top"><i class="fa-solid fa-arrow-turn-up"></i></a> 73:
5: {include head} 6: <body id="page-homepage" class="d-flex flex-column min-vh-100"> 7: {include 'parts/shared/header/homepage.latte'} 8: 9: <div class="{$containerClass} mt-5" n:ifcontent> 10: <div n:snippet="flashMessages"> 11: {control frontSystemFlashMessages $flashes} 12: </div> 13: {include #content} 14: </div> 15: {include 'parts/shared/main.latte'} 16: {include 'parts/shared/footer.latte'} 17: 18: <a class="go-to-top" href="#" title="go to Top"><i class="fa-solid fa-arrow-turn-up"></i></a> 19:
| $mod | 'html'
|
|---|
100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108: 109: } else { 110: $this->main($params); 111: } 112: } 113: 114:
| $ʟ_args | null
|
|---|
94: $this->parentName = ($this->global->coreParentFinder)($this); 95: } 96: 97: if ($this->referenceType === 'import') { 98: if ($this->parentName) { 99: throw new Latte\RuntimeException('Imported template cannot use {extends} or {layout}, use {import}'); 100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108:
| $block | null
|
|---|
67: 68: 69: /** 70: * Renders template to output. 71: * @param object|mixed[] $params 72: */ 73: public function render(string $name, object|array $params = [], ?string $block = null): void 74: { 75: $template = $this->createTemplate($name, $this->processParams($params)); 76: $template->global->coreCaptured = false; 77: $template->render($block); 78: } 79: 80: 81: /**
| $block | null
|
|---|
37: 38: /** 39: * Renders template to output. 40: */ 41: public function render(?string $file = null, array $params = []): void 42: { 43: Nette\Utils\Arrays::toObject($params, $this); 44: if (isset($this->blueprint)) { 45: Nodes\TemplatePrintNode::printClass($this->getParameters(), $this->blueprint); 46: } 47: $this->latte->render($file ?: $this->file, $this); 48: } 49: 50: 51: /**
| $name | '/var/www/clients/client1/web1/web/subdom/tmp2/app/UI/Front/System/Templates/Page/homepage.latte'
|
|---|---|
| $params |
31: return $this->source; 32: } 33: 34: 35: /** 36: * Sends response to output. 37: */ 38: public function send(Nette\Http\IRequest $httpRequest, Nette\Http\IResponse $httpResponse): void 39: { 40: if ($this->source instanceof Nette\Application\UI\Template) { 41: $this->source->render(); 42: 43: } else { 44: echo $this->source; 45: }
149: 150: Arrays::invoke($this->onPresenter, $this, $this->presenter); 151: $response = $this->presenter->run(clone $request); 152: 153: if ($response instanceof Responses\ForwardResponse) { 154: $request = $response->getRequest(); 155: goto process; 156: } 157: 158: Arrays::invoke($this->onResponse, $this, $response); 159: $response->send($this->httpRequest, $this->httpResponse); 160: } 161: 162: 163: public function createErrorRequest(\Throwable $e): ?Request
| $httpRequest | |
|---|---|
| $httpResponse |
67: } 68: 69: 70: /** 71: * Dispatch a HTTP request to a front controller. 72: */ 73: public function run(): void 74: { 75: try { 76: Arrays::invoke($this->onStartup, $this); 77: $this->processRequest($this->createInitialRequest()); 78: Arrays::invoke($this->onShutdown, $this); 79: 80: } catch (\Throwable $e) { 81: $this->sendHttpCode($e);
| $request |
|---|
1: <?php declare(strict_types=1); 2: 3: use App\Bootstrap; 4: 5: require __DIR__ . '/../vendor/autoload.php'; 6: 7: $bootstrap = new Bootstrap(); 8: $container = $bootstrap->bootWebApplication(); 9: $application = $container->getByType(Nette\Application\Application::class); 10: $application->run();
Exception
Caused by
mysqli_sql_exception #1054
Unknown column 'c6_.cms_mod_blog_article_categories_article_category_id' in 'on clause' search►
Source file
File: .../vendor/doctrine/dbal/src/Driver/Mysqli/Connection.php:33
23: } 24: 25: public function getServerVersion(): string 26: { 27: return $this->connection->get_server_info(); 28: } 29: 30: public function prepare(string $sql): Statement 31: { 32: try { 33: $stmt = $this->connection->prepare($sql); 34: } catch (mysqli_sql_exception $e) { 35: throw ConnectionError::upcast($e); 36: } 37:
Call stack
23: } 24: 25: public function getServerVersion(): string 26: { 27: return $this->connection->get_server_info(); 28: } 29: 30: public function prepare(string $sql): Statement 31: { 32: try { 33: $stmt = $this->connection->prepare($sql); 34: } catch (mysqli_sql_exception $e) { 35: throw ConnectionError::upcast($e); 36: } 37:
| $query |
|---|
9: use Doctrine\DBAL\Driver\Statement; 10: 11: abstract class AbstractConnectionMiddleware implements Connection 12: { 13: public function __construct(private readonly Connection $wrappedConnection) 14: { 15: } 16: 17: public function prepare(string $sql): Statement 18: { 19: return $this->wrappedConnection->prepare($sql); 20: } 21: 22: public function query(string $sql): Result 23: {
| $sql |
|---|
18: private DebugStack $stack, 19: private string $connectionName, 20: ) 21: { 22: parent::__construct($connection); 23: } 24: 25: public function prepare(string $sql): DebugStatement 26: { 27: return new DebugStatement( 28: parent::prepare($sql), 29: $this->stack, 30: $this->connectionName, 31: $sql 32: );
| $sql |
|---|
13: { 14: public function __construct( 15: private Connection $wrappedConnection, 16: private TracingSQLLogger $logger 17: ) { 18: } 19: 20: public function prepare(string $sql): Statement 21: { 22: return new TracingStatement( 23: $this->wrappedConnection->prepare($sql), 24: $this->logger, 25: $sql 26: ); 27: }
| $sql |
|---|
788: if ($qcp !== null) { 789: return $this->executeCacheQuery($sql, $params, $types, $qcp); 790: } 791: 792: $connection = $this->connect(); 793: 794: try { 795: if (count($params) > 0) { 796: [$sql, $params, $types] = $this->expandArrayParameters($sql, $params, $types); 797: 798: $stmt = $connection->prepare($sql); 799: 800: $this->bindParameters($stmt, $params, $types); 801: 802: $result = $stmt->execute();
| $sql |
|---|
17: public function __construct(string $sql) 18: { 19: $this->sqlStatements = $sql; 20: } 21: 22: /** 23: * {@inheritDoc} 24: */ 25: public function execute(Connection $conn, array $params, array $types): Result 26: { 27: return $conn->executeQuery($this->getSqlStatements(), $params, $types, $this->queryCacheProfile); 28: } 29: }
| $sql | |
|---|---|
| $params | |
| $types | |
| $qcp | null
|
286: 287: [$sqlParams, $types] = $this->processParameterMappings($paramMappings); 288: 289: $this->evictResultSetCache( 290: $executor, 291: $sqlParams, 292: $types, 293: $this->em->getConnection()->getParams(), 294: ); 295: 296: return $executor->execute($this->em->getConnection(), $sqlParams, $types); 297: } 298: 299: /** 300: * @param array<string,mixed> $sqlParams
| $conn | |
|---|---|
| $params | |
| $types |
920: 921: if (! $result) { 922: $result = []; 923: } 924: 925: $setCacheEntry = static function ($data) use ($cache, $result, $cacheItem, $realCacheKey): void { 926: $cache->save($cacheItem->set($result + [$realCacheKey => $data])); 927: }; 928: } 929: 930: $stmt = $this->_doExecute(); 931: 932: if (is_numeric($stmt)) { 933: $setCacheEntry($stmt); 934:
876: * @phpstan-param string|AbstractQuery::HYDRATE_*|null $hydrationMode 877: */ 878: public function execute( 879: ArrayCollection|array|null $parameters = null, 880: string|int|null $hydrationMode = null, 881: ): mixed { 882: if ($this->cacheable && $this->isCacheEnabled()) { 883: return $this->executeUsingQueryCache($parameters, $hydrationMode); 884: } 885: 886: return $this->executeIgnoreQueryCache($parameters, $hydrationMode); 887: } 888: 889: /** 890: * Execute query ignoring second level cache.
| $parameters | null
|
|---|---|
| $hydrationMode | 1
|
678: 679: /** 680: * Gets the list of results for the query. 681: * 682: * Alias for execute(null, $hydrationMode = HYDRATE_OBJECT). 683: * 684: * @phpstan-param string|AbstractQuery::HYDRATE_* $hydrationMode 685: */ 686: public function getResult(string|int $hydrationMode = self::HYDRATE_OBJECT): mixed 687: { 688: return $this->execute(null, $hydrationMode); 689: } 690: 691: /** 692: * Gets the array of results for the query.
| $parameters | null
|
|---|---|
| $hydrationMode | 1
|
224: } 225: 226: // ✅ DISTINCT pro správnou hydrataci ManyToMany 227: if (!empty($include)) { 228: $qb->distinct(true); 229: } 230: 231: // Načti pouze entity s identifikátory z první fáze 232: $this->applyIdentifierFilter($qb, $identifiers, $identifierFields, $fromTableAlias); 233: 234: return $qb->getQuery()->getResult(); 235: } 236: 237: /** 238: * Aplikuje filtry na QueryBuilder
72: $limit 73: ); 74: 75: // Pokud nejsou žádné výsledky, vrať prázdné pole 76: if (empty($identifiers)) { 77: $totalCount = $computeTotalCount ? $this->computeTotalCount($filters) : 0; 78: return [[], $totalCount]; 79: } 80: 81: // FÁZE 2: Načti kompletní entity s includes 82: $results = $this->fetchCompleteEntities( 83: $entityClass, 84: $fromTableAlias, 85: $identifiers, 86: $columns,
| $entityClass | 'App\UI\Api\Blog\Models\Entities\Article'
|
|---|---|
| $fromTableAlias | 'article'
|
| $identifiers | |
| $columns | array (0)
|
| $include |
9: public function findAll( 10: ?array $filters = [], 11: ?array $orderBys = null, 12: ?int $offset = null, 13: ?int $limit = null, 14: ?array $columns = null, 15: bool $computeTotalCount = false, 16: ?array $includes = [] 17: ): array 18: { 19: return $this->repository->getAll($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $includes); 20: } 21: }
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
143: */ 144: protected function findAllFromDb( 145: array $includes = [], 146: array $filters = [], 147: ?array $orderBy = null, 148: ?int $offset = null, 149: ?int $limit = null, 150: ?array $columns = null, 151: bool $computeTotalCount = false 152: ): array { 153: return $this->mapper->findAll($filters, $orderBy, $offset, $limit, $columns, $computeTotalCount, $includes); 154: } 155: 156: // ========================================== 157: // REQUIRED DEPENDENCIES
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
89: $this->debugger->logInfo("Service::findAll() - Partial cache miss, loading from DB"); 90: } 91: } else { 92: if ($this->debugger !== null) { 93: $this->debugger->logInfo("Service::findAll() - CACHE MISS for query"); 94: } 95: } 96: } 97: 98: // === 3. LOAD FROM DATABASE === 99: [$entities, $totalCount] = $this->findAllFromDb($includes, $filters, $orderBy, $offset, $limit, $columns, $computeTotalCount); 100: 101: // === 4. SAVE TO CACHE === 102: if ($this->shouldUseCache($useCache, true) && !empty($entities)) { 103: // queryKey už obsahuje 'query:' prefix z generateQueryKey()
| $includes | |
|---|---|
| $filters | |
| $orderBy | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
7: /** 8: * @template T of BaseEntity 9: */ 10: trait GetAllTrait 11: { 12: /** 13: * @return T[] 14: */ 15: public function findAll( ?array $includes = [], ?array $filters = [], ?array $orderBys = null, ?int $offset = null, ?int $limit = null, ?array $columns = null, bool $computeTotalCount = false): array 16: { 17: $results = $this->service->findAll($includes, $filters, $orderBys, $offset, $limit, $columns, $computeTotalCount); 18: 19: list($items, $totalCount) = $results; 20: 21: $this->totalCount = ($computeTotalCount) ? $totalCount : NULL;
| $includes | |
|---|---|
| $filters | |
| $orderBy | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
20: $computeTotalCount = boolval($requestParams['computeTotalCount']??FALSE); 21: $include = $requestParams['include']??[]; 22: 23: $data = $this->getGetAllData($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $include); 24: $this->sendJson($data); 25: } 26: 27: public function getGetAllData(array $filters = [], ?array $orderBys = NULL, ?int $offset = NULL, ?int $limit = NULL, ?array $columns = NULL, bool $computeTotalCount = FALSE, array $includes = []): array 28: { 29: $rebuildedFilters = FilterBuilder::buildFilters($filters); 30: $itemList = $this->manager->findAll( 31: $includes, 32: $rebuildedFilters, 33: $orderBys, 34: $offset,
| $includes | |
|---|---|
| $filters | |
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
inner-code
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
327: $methodName = 'get' . ucfirst($action) . 'Data'; 328: if (!method_exists($presenter, $methodName)) { 329: throw new \RuntimeException("Metoda $methodName neexistuje v presenteru $presenterName"); 330: } 331: 332: $reflection = new \ReflectionClass($presenter); 333: $method = $reflection->getMethod($methodName); 334: $method->setAccessible(true); 335: 336: // Získání a vrácení dat 337: return $method->invoke($presenter, ...$params); 338: } catch (\Nette\Application\InvalidPresenterException $e) { 339: throw new \RuntimeException("Presenter $presenterName nebyl nalezen", 0, $e); 340: } 341: }
| $object | |
|---|---|
| $filters | |
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $includes |
144: * @throws \RuntimeException Pokud metoda v presenteru neexistuje nebo HTTP chyba 145: */ 146: public function call( 147: string $endpoint, 148: array $params = [], 149: ?string $callType = null, 150: string $method = 'GET' 151: ): mixed { 152: $finalCallType = $callType ?? $this->callType; 153: if ($finalCallType === self::INTERNAL_CALL) { 154: return $this->internalCall($endpoint, $params); 155: } else { 156: return $this->externalCall($endpoint, $params, $method); 157: } 158: }
| $endpoint | 'api/blog/article/getAll'
|
|---|---|
| $params |
20: 21: public function findBy(?array $filters = [], array $include = []): array { 22: $rows = $this->bridge->call($this->apiEndpoint . '/get-by', [ 23: 'filters' => $filters, 24: 'includes' => $include 25: ])??[]; 26: return $rows; 27: } 28: 29: public function findAll(?array $filters = [], ?array $orderBys = null, ?int $offset = null, ?int $limit = null, ?array $columns = null, bool $computeTotalCount = false, array $include = []): array { 30: return $this->bridge->call($this->apiEndpoint . '/get-all', [ 31: 'filters' => $filters, 32: 'orderBys' => $orderBys, 33: 'offset' => $offset, 34: 'limit' => $limit,
| $endpoint | 'api/blog/article/get-all'
|
|---|---|
| $params | |
| $callType | null
|
| $method | 'POST'
|
28: if (empty($data)) { 29: return null; 30: } 31: 32: // ✅ Použij hydrateWithReferences() - automaticky načte references 33: return $this->hydrator->hydrateWithReferences($data, $this->getEntityClass()); 34: } 35: 36: public function findAll(?array $filters = [], ?array $orderBys = null, ?int $offset = null, ?int $limit = null, ?array $columns = null, bool $computeTotalCount = false, array $include = []): array 37: { 38: $apiResponse = $this->repository->findAll($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $include); 39: if (empty($apiResponse)) { 40: return [[], 0]; 41: } 42:
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $include |
15: 16: public function find(int $id, array $include = []): ?BaseEntity { 17: return $this->mapper->find($id, $include); 18: } 19: 20: public function findBy(array|null $filters = [], array|null $include = []): ?BaseEntity { 21: return $this->mapper->findBy($filters, $include); 22: } 23: 24: public function findAll(array|null $filters = [], array|null $orderBys = null, int|null $offset = null, int|null $limit = null, array|null $columns = null, bool $computeTotalCount = false, array $include = []): array { 25: $data = $this->mapper->findAll($filters, $orderBys, $offset, $limit, $columns, $computeTotalCount, $include); 26: $this->totalCount = ($computeTotalCount) ? $data[1]??NULL : NULL; 27: return $data; 28: } 29: }
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $include |
76: // === Vykonání dotazu === 77: 78: /** 79: * Explicitní vykonání - vrací pole entit 80: * 81: * @return T[] 82: */ 83: public function execute(): array 84: { 85: if ($this->result === null) { 86: [$items, $totalCount] = $this->service->findAll( 87: $this->criteria->filters, 88: $this->criteria->orderBy, 89: $this->criteria->offset, 90: $this->criteria->limit,
| $filters | |
|---|---|
| $orderBys | |
| $offset | 0
|
| $limit | 5
|
| $columns | array (0)
|
| $computeTotalCount | false
|
| $include |
25: else if(!empty($showOnlyCategoryIds)) { 26: $filters['categoryId'] = new InFilter('categoryId', $showOnlyCategoryIds); 27: } 28: 29: $filters['activated'] = new EqualFilter('activated', 1); 30: $filters['published'] = new DateBeforeOrEqualFilter('published', 'NOW'); 31: $articleList = $this->articleManager->findAll( 32: $filters, 33: $orderBy, 34: 0, 35: $maxNumber)->include(['translations', 'image.translations', 'categories.translations'])->execute(); 36: 37: 38: $this->template->articleItems = $articleList; 39:
23: 24: public function render(string $style = 'Style1', array $orderBy = ['id' => false], int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 25: $this->template->id = $this->getUniqueId(); 26: $this->template->uniqueId = $this->getUniqueId(); 27: $this->template->style = $style; 28: 29: $this->numberOnFirstRow = $numberOnFirstRow; 30: $this->numberOnOtherRow = $numberOnOtherRow; 31: $this->headingTag = $headingTag; 32: 33: $this->intilializeRender($maxNumber, $orderBy, $showOnlyCategoryIds); 34: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 35: return $this->template->render(); 36: } 37:
| $maxNumber | 5
|
|---|---|
| $orderBy | |
| $showOnlyCategoryIds | array (0)
|
29: $this->numberOnFirstRow = $numberOnFirstRow; 30: $this->numberOnOtherRow = $numberOnOtherRow; 31: $this->headingTag = $headingTag; 32: 33: $this->intilializeRender($maxNumber, $orderBy, $showOnlyCategoryIds); 34: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 35: return $this->template->render(); 36: } 37: 38: public function renderStyle1(array $orderBy = ['id' => false], int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 39: return $this->render('Style1', $orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds); 40: } 41: public function renderStyle2(array $orderBy = ['id' => false], int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 42: return $this->render('Style2', $orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds); 43: }
| $style | 'Style1'
|
|---|---|
| $orderBy | |
| $maxNumber | 5
|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
| $headingTag | 'div'
|
| $showOnlyCategoryIds | array (0)
|
14: { 15: extract($ʟ_args); 16: unset($ʟ_args); 17: 18: if ($this->global->snippetDriver?->renderSnippets($this->blocks[self::LayerSnippet], $this->params)) { 19: return; 20: } 21: 22: $ʟ_tmp = $this->global->uiControl->getComponent('frontBlogArticleListProvider'); 23: if ($ʟ_tmp instanceof Nette\Application\UI\Renderable) $ʟ_tmp->redrawControl(null, false); 24: $ʟ_tmp->{'render' . $style}($orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds) /* line 2 */; 25: } 26: 27: 28: public function prepare(): array
1: {var $orderBy = ['published' => false]} 2: {control frontBlogArticleListProvider:$style $orderBy, $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds}
| $orderBy | |
|---|---|
| $maxNumber | 5
|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
| $headingTag | 'div'
|
| $showOnlyCategoryIds | array (0)
|
100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108: 109: } else { 110: $this->main($params); 111: } 112: } 113: 114:
| $ʟ_args | null
|
|---|
67: 68: 69: /** 70: * Renders template to output. 71: * @param object|mixed[] $params 72: */ 73: public function render(string $name, object|array $params = [], ?string $block = null): void 74: { 75: $template = $this->createTemplate($name, $this->processParams($params)); 76: $template->global->coreCaptured = false; 77: $template->render($block); 78: } 79: 80: 81: /**
| $block | null
|
|---|
37: 38: /** 39: * Renders template to output. 40: */ 41: public function render(?string $file = null, array $params = []): void 42: { 43: Nette\Utils\Arrays::toObject($params, $this); 44: if (isset($this->blueprint)) { 45: Nodes\TemplatePrintNode::printClass($this->getParameters(), $this->blueprint); 46: } 47: $this->latte->render($file ?: $this->file, $this); 48: } 49: 50: 51: /**
| $name | '/var/www/clients/client1/web1/web/subdom/tmp2/app/UI/Front/Blog/Components/LastArticleListComponent/Template//Template.latte'
|
|---|---|
| $params |
15: public function render(string $style = 'Style1', int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 16: 17: $this->template->style = $style; 18: $this->template->maxNumber = $maxNumber; 19: $this->template->numberOnFirstRow = $numberOnFirstRow; 20: $this->template->numberOnOtherRow = $numberOnOtherRow; 21: $this->template->headingTag = $headingTag; 22: $this->template->showOnlyCategoryIds = $showOnlyCategoryIds; 23: 24: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 25: return $this->template->render(); 26: } 27: 28: public function renderStyle1(int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 29: return $this->render('Style1', $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds);
19: $this->template->numberOnFirstRow = $numberOnFirstRow; 20: $this->template->numberOnOtherRow = $numberOnOtherRow; 21: $this->template->headingTag = $headingTag; 22: $this->template->showOnlyCategoryIds = $showOnlyCategoryIds; 23: 24: $this->setTemplateFile(__DIR__ . '/Template/', 'Template.latte'); 25: return $this->template->render(); 26: } 27: 28: public function renderStyle1(int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 29: return $this->render('Style1', $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds); 30: } 31: 32: public function renderStyle2(int $maxNumber = 5, int $numberOnFirstRow = 1, int $numberOnOtherRow = 1, string $headingTag = 'div', array $showOnlyCategoryIds = []) { 33: return $this->render('Style2', $maxNumber, $numberOnFirstRow, $numberOnOtherRow, $headingTag, $showOnlyCategoryIds);
| $style | 'Style1'
|
|---|---|
| $maxNumber | 5
|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
| $headingTag | 'div'
|
| $showOnlyCategoryIds | array (0)
|
115: // Sestavení názvu render metody 116: $renderMethodName = 'render' . ucfirst($renderMethod); 117: 118: // Kontrola existence render metody 119: if (!method_exists($instance, $renderMethodName)) { 120: throw new \RuntimeException("Render method '{$renderMethodName}' not found in component '{$componentName}'"); 121: } 122: 123: // Vykreslení komponenty 124: ob_start(); 125: $instance->$renderMethodName(...$args); 126: return ob_get_clean(); 127: } 128: 129: /**
| $maxNumber | 5
|
|---|---|
| $numberOnFirstRow | 2
|
| $numberOnOtherRow | 1
|
22: echo '<main class="flex-grow-1"> 23: '; 24: $ʟ_tmp = $this->global->uiControl->getComponent('frontSystemLogin'); 25: if ($ʟ_tmp instanceof Nette\Application\UI\Renderable) $ʟ_tmp->redrawControl(null, false); 26: $ʟ_tmp->render() /* line 3 */; 27: 28: echo ' <section> 29: <div class="container"> 30: <h2 class="subtitle mb-4"><span>We offer</span></h2> 31: '; 32: echo \App\Core\Latte\Macros\MultiControlMacros::renderMultiControl($this->global->uiControl, 'frontBlogLastArticleList-style1:style1', [5, 2, 1]) /* line 7 */; 33: echo ' 34: <hr class="my-4" /> 35: '; 36: echo \App\Core\Latte\Macros\MultiControlMacros::renderMultiControl($this->global->uiControl, 'frontBlogLastArticleList-style2:style2', [5, 3, 3]) /* line 9 */;
1: {var $templateWebPath = $theme->getVariantPath('rel', 'desktop')} 2: <main class="flex-grow-1"> 3: {control frontSystemLogin} 4: <section> 5: <div class="container"> 6: <h2 class="subtitle mb-4"><span>We offer</span></h2> 7: {multicontrol frontBlogLastArticleList-style1:style1 5,2,1} 8: <hr class="my-4" /> 9: {multicontrol frontBlogLastArticleList-style2:style2 5,3,3} 10: <hr class="my-4" /> 11: {multicontrol frontBlogLastArticleList-style3:style3 5,3,3} 12: <hr class="my-4" /> 13: {multicontrol frontBlogLastArticleList-style4:style4 5,3,3} 14: <hr class="my-4" /> 15: {multicontrol frontBlogLastArticleList-style6:style6 5,3,3}
| $control | |
|---|---|
| $words | 'frontBlogLastArticleList-style1:style1'
|
| $args |
100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108: 109: } else { 110: $this->main($params); 111: } 112: } 113: 114:
| $ʟ_args | null
|
|---|
162: } 163: 164: 165: /** 166: * @param string|\Closure|null $mod content-type name or modifier closure 167: * @internal 168: */ 169: public function renderToContentType(string|\Closure|null $mod, ?string $block = null): void 170: { 171: $this->filter( 172: fn() => $this->render($block), 173: $mod, 174: static::ContentType, 175: "'$this->name'", 176: );
| $block | null
|
|---|
207: return $child; 208: } 209: 210: 211: /** 212: * @param string|\Closure|null $targetType content-type name or modifier closure 213: */ 214: private function filter(callable $producer, string|\Closure|null $targetType, string $contentType, string $name): void 215: { 216: if ($targetType === null || $targetType === $contentType) { 217: $producer(); 218: 219: } elseif ($targetType instanceof \Closure) { 220: echo $targetType($this->capture($producer), $contentType); 221:
161: prev($block->functions); 162: } 163: 164: 165: /** 166: * @param string|\Closure|null $mod content-type name or modifier closure 167: * @internal 168: */ 169: public function renderToContentType(string|\Closure|null $mod, ?string $block = null): void 170: { 171: $this->filter( 172: fn() => $this->render($block), 173: $mod, 174: static::ContentType, 175: "'$this->name'",
| $producer | |
|---|---|
| $targetType | 'html'
|
| $contentType | 'html'
|
| $name | ''/var/www/clients/client1/web1/web/subdom/tmp2/www/themes/frontend/template1/desktop/layouts/parts/shared/main.latte''
|
59: '; 60: 61: } finally { 62: if ($ʟ_ifc[0] ?? null) { 63: ob_end_clean(); 64: 65: } else { 66: echo ob_get_clean(); 67: } 68: } 69: $this->createTemplate('parts/shared/main.latte', $this->params, 'include')->renderToContentType('html') /* line 15 */; 70: $this->createTemplate('parts/shared/footer.latte', $this->params, 'include')->renderToContentType('html') /* line 16 */; 71: echo ' 72: <a class="go-to-top" href="#" title="go to Top"><i class="fa-solid fa-arrow-turn-up"></i></a> 73:
5: {include head} 6: <body id="page-homepage" class="d-flex flex-column min-vh-100"> 7: {include 'parts/shared/header/homepage.latte'} 8: 9: <div class="{$containerClass} mt-5" n:ifcontent> 10: <div n:snippet="flashMessages"> 11: {control frontSystemFlashMessages $flashes} 12: </div> 13: {include #content} 14: </div> 15: {include 'parts/shared/main.latte'} 16: {include 'parts/shared/footer.latte'} 17: 18: <a class="go-to-top" href="#" title="go to Top"><i class="fa-solid fa-arrow-turn-up"></i></a> 19:
| $mod | 'html'
|
|---|
100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108: 109: } else { 110: $this->main($params); 111: } 112: } 113: 114:
| $ʟ_args | null
|
|---|
94: $this->parentName = ($this->global->coreParentFinder)($this); 95: } 96: 97: if ($this->referenceType === 'import') { 98: if ($this->parentName) { 99: throw new Latte\RuntimeException('Imported template cannot use {extends} or {layout}, use {import}'); 100: } 101: 102: } elseif ($this->parentName) { // extends 103: $this->params = $params; 104: $this->createTemplate($this->parentName, $params, 'extends')->render($block); 105: 106: } elseif ($block !== null) { // single block rendering 107: $this->renderBlock($block, $this->params); 108:
| $block | null
|
|---|
67: 68: 69: /** 70: * Renders template to output. 71: * @param object|mixed[] $params 72: */ 73: public function render(string $name, object|array $params = [], ?string $block = null): void 74: { 75: $template = $this->createTemplate($name, $this->processParams($params)); 76: $template->global->coreCaptured = false; 77: $template->render($block); 78: } 79: 80: 81: /**
| $block | null
|
|---|
37: 38: /** 39: * Renders template to output. 40: */ 41: public function render(?string $file = null, array $params = []): void 42: { 43: Nette\Utils\Arrays::toObject($params, $this); 44: if (isset($this->blueprint)) { 45: Nodes\TemplatePrintNode::printClass($this->getParameters(), $this->blueprint); 46: } 47: $this->latte->render($file ?: $this->file, $this); 48: } 49: 50: 51: /**
| $name | '/var/www/clients/client1/web1/web/subdom/tmp2/app/UI/Front/System/Templates/Page/homepage.latte'
|
|---|---|
| $params |
31: return $this->source; 32: } 33: 34: 35: /** 36: * Sends response to output. 37: */ 38: public function send(Nette\Http\IRequest $httpRequest, Nette\Http\IResponse $httpResponse): void 39: { 40: if ($this->source instanceof Nette\Application\UI\Template) { 41: $this->source->render(); 42: 43: } else { 44: echo $this->source; 45: }
149: 150: Arrays::invoke($this->onPresenter, $this, $this->presenter); 151: $response = $this->presenter->run(clone $request); 152: 153: if ($response instanceof Responses\ForwardResponse) { 154: $request = $response->getRequest(); 155: goto process; 156: } 157: 158: Arrays::invoke($this->onResponse, $this, $response); 159: $response->send($this->httpRequest, $this->httpResponse); 160: } 161: 162: 163: public function createErrorRequest(\Throwable $e): ?Request
| $httpRequest | |
|---|---|
| $httpResponse |
67: } 68: 69: 70: /** 71: * Dispatch a HTTP request to a front controller. 72: */ 73: public function run(): void 74: { 75: try { 76: Arrays::invoke($this->onStartup, $this); 77: $this->processRequest($this->createInitialRequest()); 78: Arrays::invoke($this->onShutdown, $this); 79: 80: } catch (\Throwable $e) { 81: $this->sendHttpCode($e);
| $request |
|---|
1: <?php declare(strict_types=1); 2: 3: use App\Bootstrap; 4: 5: require __DIR__ . '/../vendor/autoload.php'; 6: 7: $bootstrap = new Bootstrap(); 8: $container = $bootstrap->bootWebApplication(); 9: $application = $container->getByType(Nette\Application\Application::class); 10: $application->run();
Exception
Last muted error
Warning: http_response_code(): Cannot set response code - headers already sent (output started at /var/www/clients/client1/web1/web/subdom/tmp2/temp/cache/latte/LocalizationListComponent-Template-LocalizationList.latte--064b804148.php:54)
Note: the last muted error may have nothing to do with the thrown exception.
.../vendor/tracy/tracy/src/Tracy/Debugger/Debugger.php:322
312: /** 313: * Handler to catch uncaught exception. 314: * @internal 315: */ 316: public static function exceptionHandler(\Throwable $exception): void 317: { 318: $firstTime = (bool) self::$reserved; 319: self::$reserved = null; 320: self::$obStatus = ob_get_status(true); 321: 322: @http_response_code(isset($_SERVER['HTTP_USER_AGENT']) && str_contains($_SERVER['HTTP_USER_AGENT'], 'MSIE ') ? 503 : 500); // may not have an effect 323: 324: Helpers::improveException($exception); 325: self::removeOutputBuffers(true); 326:
Nette Application
Requests
Presenter
Environment
| PATH | '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
|
|---|---|
| TEMP | '/var/www/clients/client1/web1/tmp'
|
| TMPDIR | '/var/www/clients/client1/web1/tmp'
|
| TMP | '/var/www/clients/client1/web1/tmp'
|
| HOSTNAME | ''
|
| USER | 'web1'
|
| HOME | '/var/www/clients/client1/web1'
|
| SCRIPT_NAME | '/www/index.php'
|
| REQUEST_URI | '/'
|
| QUERY_STRING | ''
|
| REQUEST_METHOD | 'GET'
|
| SERVER_PROTOCOL | 'HTTP/1.1'
|
| GATEWAY_INTERFACE | 'CGI/1.1'
|
| REDIRECT_URL | '/'
|
| REMOTE_PORT | '40736'
|
| SCRIPT_FILENAME | '/var/www/clients/client1/web1/web/subdom/tmp2/www/index.php'
|
| SERVER_ADMIN | 'webmaster@coolsoft.cz'
|
| CONTEXT_DOCUMENT_ROOT | '/var/www/clients/client1/web1/web'
|
| CONTEXT_PREFIX | ''
|
| REQUEST_SCHEME | 'https'
|
| DOCUMENT_ROOT | '/var/www/clients/client1/web1/web'
|
| REMOTE_ADDR | '216.73.216.149'
|
| SERVER_PORT | '443'
|
| SERVER_ADDR | '37.205.10.44'
|
| SERVER_NAME | 'tmp2.coolsoft.cz'
|
| SERVER_SOFTWARE | 'Apache'
|
| SERVER_SIGNATURE | ''
|
| HTTP_HOST | 'tmp2.coolsoft.cz'
|
| HTTP_ACCEPT_ENCODING | 'gzip, br, zstd, deflate'
|
| HTTP_USER_AGENT | 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)'
|
| HTTP_ACCEPT | '*/*'
|
| proxy-nokeepalive | '1'
|
| SSL_TLS_SNI | 'tmp2.coolsoft.cz'
|
| HTTPS | 'on'
|
| SCRIPT_URI | 'https://tmp2.coolsoft.cz/'
|
| SCRIPT_URL | '/'
|
| REDIRECT_STATUS | '200'
|
| REDIRECT_SSL_TLS_SNI | 'tmp2.coolsoft.cz'
|
| REDIRECT_HTTPS | 'on'
|
| REDIRECT_SCRIPT_URI | 'https://tmp2.coolsoft.cz/'
|
| REDIRECT_SCRIPT_URL | '/'
|
| FCGI_ROLE | 'RESPONDER'
|
| PHP_SELF | '/www/index.php'
|
| REQUEST_TIME_FLOAT | 1776334960.363249
|
| REQUEST_TIME | 1776334960
|
| __NF | Nette Session |
|---|
Nette Session
| front.auth | null
|
|---|---|
| Nette.Http.UserStorage/ | null
|
| Nette\Forms\Controls\CsrfProtection |
apcu
| APCu Support | Enabled |
| Version | 5.1.23 |
| APCu Debugging | Disabled |
| MMAP Support | Enabled |
| MMAP File Mask | no value |
| Serialization Support | php, igbinary |
| Build Date | Nov 25 2023 14:41:19 |
| Directive | Local Value | Master Value |
|---|---|---|
| apc.coredump_unmap | Off | Off |
| apc.enable_cli | Off | Off |
| apc.enabled | On | On |
| apc.entries_hint | 4096 | 4096 |
| apc.gc_ttl | 3600 | 3600 |
| apc.mmap_file_mask | no value | no value |
| apc.preload_path | no value | no value |
| apc.serializer | php | php |
| apc.shm_segments | 1 | 1 |
| apc.shm_size | 32M | 32M |
| apc.slam_defense | Off | Off |
| apc.smart | 0 | 0 |
| apc.ttl | 0 | 0 |
| apc.use_request_time | Off | Off |
bcmath
| BCMath support | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| bcmath.scale | 0 | 0 |
bz2
| BZip2 Support | Enabled |
| Stream Wrapper support | compress.bzip2:// |
| Stream Filter support | bzip2.decompress, bzip2.compress |
| BZip2 Version | 1.0.6, 6-Sept-2010 |
calendar
| Calendar support | enabled |
cgi-fcgi
| php-fpm | active |
| Directive | Local Value | Master Value |
|---|---|---|
| cgi.discard_path | Off | Off |
| cgi.fix_pathinfo | On | On |
| cgi.force_redirect | On | On |
| cgi.nph | Off | Off |
| cgi.redirect_status_env | no value | no value |
| cgi.rfc2616_headers | Off | Off |
| fastcgi.error_header | no value | no value |
| fastcgi.logging | On | On |
| fpm.config | no value | no value |
Core
| PHP Version | 8.3.2-1+0~20240120.16+debian10~1.gbpb43448 |
| Directive | Local Value | Master Value |
|---|---|---|
| allow_url_fopen | On | On |
| allow_url_include | Off | Off |
| arg_separator.input | & | & |
| arg_separator.output | & | & |
| auto_append_file | no value | no value |
| auto_globals_jit | On | On |
| auto_prepend_file | no value | no value |
| browscap | no value | no value |
| default_charset | UTF-8 | UTF-8 |
| default_mimetype | text/html | text/html |
| disable_classes | no value | no value |
| disable_functions | no value | no value |
| display_errors | Off | Off |
| display_startup_errors | Off | Off |
| doc_root | no value | no value |
| docref_ext | no value | no value |
| docref_root | no value | no value |
| enable_dl | Off | Off |
| enable_post_data_reading | On | On |
| error_append_string | no value | no value |
| error_log | no value | no value |
| error_log_mode | 0644 | 0644 |
| error_prepend_string | no value | no value |
| error_reporting | 32767 | 22527 |
| expose_php | Off | Off |
| extension_dir | /usr/lib/php/20230831 | /usr/lib/php/20230831 |
| fiber.stack_size | no value | no value |
| file_uploads | On | On |
| hard_timeout | 2 | 2 |
| highlight.comment | #FF8000 | #FF8000 |
| highlight.default | #0000BB | #0000BB |
| highlight.html | #000000 | #000000 |
| highlight.keyword | #007700 | #007700 |
| highlight.string | #DD0000 | #DD0000 |
| html_errors | Off | On |
| ignore_repeated_errors | Off | Off |
| ignore_repeated_source | Off | Off |
| ignore_user_abort | Off | Off |
| implicit_flush | Off | Off |
| include_path | .:/usr/share/php | .:/usr/share/php |
| input_encoding | no value | no value |
| internal_encoding | no value | no value |
| log_errors | Off | On |
| mail.add_x_header | Off | Off |
| mail.force_extra_parameters | no value | no value |
| mail.log | no value | no value |
| mail.mixed_lf_and_crlf | Off | Off |
| max_execution_time | 30 | 30 |
| max_file_uploads | 20 | 20 |
| max_input_nesting_level | 64 | 64 |
| max_input_time | 60 | 60 |
| max_input_vars | 10000 | 10000 |
| max_multipart_body_parts | -1 | -1 |
| memory_limit | 128M | 128M |
| open_basedir | /var/www/clients/client1/web1/web:/var/www/clients/client1/web1/private:/var/www/clients/client1/web1/tmp:/var/www/coolsoft.cz/web:/srv/www/coolsoft.cz/web:/usr/share/php5:/usr/share/php:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/dev/random:/dev/urandom:/usr/bin/ffmpeg:/usr/bin/ffprobe | /var/www/clients/client1/web1/web:/var/www/clients/client1/web1/private:/var/www/clients/client1/web1/tmp:/var/www/coolsoft.cz/web:/srv/www/coolsoft.cz/web:/usr/share/php5:/usr/share/php:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/dev/random:/dev/urandom:/usr/bin/ffmpeg:/usr/bin/ffprobe |
| output_buffering | 4096 | 4096 |
| output_encoding | no value | no value |
| output_handler | no value | no value |
| post_max_size | 64M | 64M |
| precision | 14 | 14 |
| realpath_cache_size | 4096K | 4096K |
| realpath_cache_ttl | 120 | 120 |
| register_argc_argv | Off | Off |
| report_memleaks | On | On |
| report_zend_debug | Off | Off |
| request_order | GP | GP |
| sendmail_from | no value | no value |
| sendmail_path | /usr/sbin/sendmail -t -i -f webmaster@coolsoft.cz | /usr/sbin/sendmail -t -i -f webmaster@coolsoft.cz |
| serialize_precision | -1 | -1 |
| short_open_tag | Off | Off |
| SMTP | localhost | localhost |
| smtp_port | 25 | 25 |
| sys_temp_dir | no value | no value |
| syslog.facility | LOG_USER | LOG_USER |
| syslog.filter | no-ctrl | no-ctrl |
| syslog.ident | php | php |
| unserialize_callback_func | no value | no value |
| upload_max_filesize | 64M | 64M |
| upload_tmp_dir | /var/www/clients/client1/web1/tmp | /var/www/clients/client1/web1/tmp |
| user_dir | no value | no value |
| user_ini.cache_ttl | 300 | 300 |
| user_ini.filename | .user.ini | .user.ini |
| variables_order | GPCS | GPCS |
| xmlrpc_error_number | 0 | 0 |
| xmlrpc_errors | Off | Off |
| zend.assertions | -1 | -1 |
| zend.detect_unicode | On | On |
| zend.enable_gc | On | On |
| zend.exception_ignore_args | Off | On |
| zend.exception_string_param_max_len | 0 | 0 |
| zend.max_allowed_stack_size | 0 | 0 |
| zend.multibyte | Off | Off |
| zend.reserved_stack_size | 0 | 0 |
| zend.script_encoding | no value | no value |
| zend.signal_check | Off | Off |
ctype
| ctype functions | enabled |
curl
| cURL support | enabled |
| cURL Information | 7.64.0 |
| Age | 4 |
| Features | |
| AsynchDNS | Yes |
| CharConv | No |
| Debug | No |
| GSS-Negotiate | No |
| IDN | Yes |
| IPv6 | Yes |
| krb4 | No |
| Largefile | Yes |
| libz | Yes |
| NTLM | Yes |
| NTLMWB | Yes |
| SPNEGO | Yes |
| SSL | Yes |
| SSPI | No |
| TLS-SRP | Yes |
| HTTP2 | Yes |
| GSSAPI | Yes |
| KERBEROS5 | Yes |
| UNIX_SOCKETS | Yes |
| PSL | Yes |
| HTTPS_PROXY | Yes |
| MULTI_SSL | No |
| BROTLI | No |
| Protocols | dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp |
| Host | x86_64-pc-linux-gnu |
| SSL Version | OpenSSL/1.1.1n |
| ZLib Version | 1.2.11 |
| libSSH Version | libssh2/1.8.0 |
| Directive | Local Value | Master Value |
|---|---|---|
| curl.cainfo | no value | no value |
date
| date/time support | enabled |
| timelib version | 2022.10 |
| "Olson" Timezone Database Version | 0.system |
| Timezone Database | internal |
| Default timezone | UTC |
| Directive | Local Value | Master Value |
|---|---|---|
| date.default_latitude | 31.7667 | 31.7667 |
| date.default_longitude | 35.2333 | 35.2333 |
| date.sunrise_zenith | 90.833333 | 90.833333 |
| date.sunset_zenith | 90.833333 | 90.833333 |
| date.timezone | UTC | UTC |
dom
| DOM/XML | enabled |
| DOM/XML API Version | 20031129 |
| libxml Version | 2.9.14 |
| HTML Support | enabled |
| XPath Support | enabled |
| XPointer Support | enabled |
| Schema Support | enabled |
| RelaxNG Support | enabled |
exif
| EXIF Support | enabled |
| Supported EXIF Version | 0220 |
| Supported filetypes | JPEG, TIFF |
| Multibyte decoding support using mbstring | enabled |
| Extended EXIF tag formats | Canon, Casio, Fujifilm, Nikon, Olympus, Samsung, Panasonic, DJI, Sony, Pentax, Minolta, Sigma, Foveon, Kyocera, Ricoh, AGFA, Epson |
| Directive | Local Value | Master Value |
|---|---|---|
| exif.decode_jis_intel | JIS | JIS |
| exif.decode_jis_motorola | JIS | JIS |
| exif.decode_unicode_intel | UCS-2LE | UCS-2LE |
| exif.decode_unicode_motorola | UCS-2BE | UCS-2BE |
| exif.encode_jis | no value | no value |
| exif.encode_unicode | ISO-8859-15 | ISO-8859-15 |
FFI
| FFI support | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| ffi.enable | preload | preload |
| ffi.preload | no value | no value |
fileinfo
| fileinfo support | enabled |
| libmagic | 543 |
filter
| Input Validation and Filtering | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| filter.default | unsafe_raw | unsafe_raw |
| filter.default_flags | no value | no value |
ftp
| FTP support | enabled |
| FTPS support | enabled |
gd
| GD Support | enabled |
| GD headers Version | 2.3.3 |
| GD library Version | 2.3.3 |
| FreeType Support | enabled |
| FreeType Linkage | with freetype |
| GIF Read Support | enabled |
| GIF Create Support | enabled |
| JPEG Support | enabled |
| PNG Support | enabled |
| WBMP Support | enabled |
| XPM Support | enabled |
| XBM Support | enabled |
| WebP Support | enabled |
| BMP Support | enabled |
| AVIF Support | enabled |
| TGA Read Support | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| gd.jpeg_ignore_warning | On | On |
gettext
| GetText Support | enabled |
hash
| hash support | enabled |
| Hashing Engines | md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b crc32c fnv132 fnv1a32 fnv164 fnv1a64 joaat murmur3a murmur3c murmur3f xxh32 xxh64 xxh3 xxh128 haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 |
| MHASH support | Enabled |
| MHASH API Version | Emulated Support |
iconv
| iconv support | enabled |
| iconv implementation | glibc |
| iconv library version | 2.28 |
| Directive | Local Value | Master Value |
|---|---|---|
| iconv.input_encoding | no value | no value |
| iconv.internal_encoding | no value | no value |
| iconv.output_encoding | no value | no value |
igbinary
| igbinary support | enabled |
| igbinary version | 3.2.15 |
| igbinary APCu serializer ABI | 0 |
| igbinary session support | yes |
| Directive | Local Value | Master Value |
|---|---|---|
| igbinary.compact_strings | On | On |
imagick
| imagick module | enabled |
|---|---|
| imagick module version | 3.7.0 |
| imagick classes | Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel |
| Imagick compiled with ImageMagick version | ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org |
| Imagick using ImageMagick library version | ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org |
| ImageMagick copyright | © 1999-2019 ImageMagick Studio LLC |
| ImageMagick release date | 20190101 |
| ImageMagick number of supported formats: | 242 |
| ImageMagick supported formats | 3FR, 3G2, 3GP, AAI, AI, ART, ARW, AVI, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, H, HALD, HDR, HEIC, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV |
| Directive | Local Value | Master Value |
|---|---|---|
| imagick.allow_zero_dimension_images | 0 | 0 |
| imagick.locale_fix | 0 | 0 |
| imagick.progress_monitor | 0 | 0 |
| imagick.set_single_thread | 1 | 1 |
| imagick.shutdown_sleep_count | 10 | 10 |
| imagick.skip_version_check | 1 | 1 |
imap
| IMAP c-Client Version | 2007f |
| SSL Support | enabled |
| Kerberos Support | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| imap.enable_insecure_rsh | Off | Off |
intl
| Internationalization support | enabled |
| ICU version | 65.1 |
| ICU Data version | 65.1 |
| ICU TZData version | 2019c |
| ICU Unicode version | 12.1 |
| Directive | Local Value | Master Value |
|---|---|---|
| intl.default_locale | no value | no value |
| intl.error_level | 0 | 0 |
| intl.use_exceptions | Off | Off |
json
| json support | enabled |
libxml
| libXML support | active |
| libXML Compiled Version | 2.9.14 |
| libXML Loaded Version | 20914 |
| libXML streams | enabled |
mbstring
| Multibyte Support | enabled |
| Multibyte string engine | libmbfl |
| HTTP input encoding translation | disabled |
| libmbfl version | 1.3.2 |
| mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. |
|---|
| Multibyte (japanese) regex support | enabled |
| Multibyte regex (oniguruma) version | 6.9.1 |
| Directive | Local Value | Master Value |
|---|---|---|
| mbstring.detect_order | no value | no value |
| mbstring.encoding_translation | Off | Off |
| mbstring.http_input | no value | no value |
| mbstring.http_output | no value | no value |
| mbstring.http_output_conv_mimetypes | ^(text/|application/xhtml\+xml) | ^(text/|application/xhtml\+xml) |
| mbstring.internal_encoding | no value | no value |
| mbstring.language | neutral | neutral |
| mbstring.regex_retry_limit | 1000000 | 1000000 |
| mbstring.regex_stack_limit | 100000 | 100000 |
| mbstring.strict_detection | Off | Off |
| mbstring.substitute_character | no value | no value |
memcache
| memcache support | enabled |
|---|---|
| Version | 8.2 |
| Directive | Local Value | Master Value |
|---|---|---|
| memcache.allow_failover | 1 | 1 |
| memcache.chunk_size | 32768 | 32768 |
| memcache.compress_threshold | 20000 | 20000 |
| memcache.default_port | 11211 | 11211 |
| memcache.hash_function | crc32 | crc32 |
| memcache.hash_strategy | consistent | consistent |
| memcache.lock_timeout | 15 | 15 |
| memcache.max_failover_attempts | 20 | 20 |
| memcache.prefix_host_key | Off | Off |
| memcache.prefix_host_key_remove_subdomain | Off | Off |
| memcache.prefix_host_key_remove_www | On | On |
| memcache.prefix_static_key | no value | no value |
| memcache.protocol | ascii | ascii |
| memcache.redundancy | 1 | 1 |
| memcache.session_prefix_host_key | Off | Off |
| memcache.session_prefix_host_key_remove_subdomain | Off | Off |
| memcache.session_prefix_host_key_remove_www | On | On |
| memcache.session_prefix_static_key | no value | no value |
| memcache.session_redundancy | 2 | 2 |
| memcache.session_save_path | no value | no value |
memcached
| memcached support | enabled |
|---|---|
| Version | 3.2.0 |
| libmemcached version | 1.0.18 |
| SASL support | yes |
| Session support | yes |
| igbinary support | yes |
| json support | yes |
| msgpack support | yes |
| Directive | Local Value | Master Value |
|---|---|---|
| memcached.compression_factor | 1.3 | 1.3 |
| memcached.compression_threshold | 2000 | 2000 |
| memcached.compression_type | fastlz | fastlz |
| memcached.default_binary_protocol | Off | Off |
| memcached.default_connect_timeout | 0 | 0 |
| memcached.default_consistent_hash | Off | Off |
| memcached.serializer | php | php |
| memcached.sess_binary_protocol | On | On |
| memcached.sess_connect_timeout | 0 | 0 |
| memcached.sess_consistent_hash | On | On |
| memcached.sess_consistent_hash_type | ketama | ketama |
| memcached.sess_lock_expire | 0 | 0 |
| memcached.sess_lock_max_wait | not set | not set |
| memcached.sess_lock_retries | 5 | 5 |
| memcached.sess_lock_wait | not set | not set |
| memcached.sess_lock_wait_max | 150 | 150 |
| memcached.sess_lock_wait_min | 150 | 150 |
| memcached.sess_locking | On | On |
| memcached.sess_number_of_replicas | 0 | 0 |
| memcached.sess_persistent | Off | Off |
| memcached.sess_prefix | memc.sess.key. | memc.sess.key. |
| memcached.sess_randomize_replica_read | Off | Off |
| memcached.sess_remove_failed_servers | Off | Off |
| memcached.sess_sasl_password | no value | no value |
| memcached.sess_sasl_username | no value | no value |
| memcached.sess_server_failure_limit | 0 | 0 |
| memcached.store_retry_count | 0 | 0 |
msgpack
| MessagePack Support | enabled |
| Session Support | enabled |
| extension Version | 2.2.0 |
| header Version | 3.2.0 |
| Directive | Local Value | Master Value |
|---|---|---|
| msgpack.error_display | On | On |
| msgpack.illegal_key_insert | Off | Off |
| msgpack.php_only | On | On |
| msgpack.use_str8_serialization | On | On |
mysqli
| MysqlI Support | enabled |
| Client API library version | mysqlnd 8.3.2-1+0~20240120.16+debian10~1.gbpb43448 |
| Active Persistent Links | 0 |
| Inactive Persistent Links | 0 |
| Active Links | 1 |
| Directive | Local Value | Master Value |
|---|---|---|
| mysqli.allow_local_infile | Off | Off |
| mysqli.allow_persistent | On | On |
| mysqli.default_host | no value | no value |
| mysqli.default_port | 3306 | 3306 |
| mysqli.default_pw | no value | no value |
| mysqli.default_socket | /var/run/mysqld/mysqld.sock | /var/run/mysqld/mysqld.sock |
| mysqli.default_user | no value | no value |
| mysqli.local_infile_directory | no value | no value |
| mysqli.max_links | Unlimited | Unlimited |
| mysqli.max_persistent | Unlimited | Unlimited |
| mysqli.rollback_on_cached_plink | Off | Off |
mysqlnd
| mysqlnd | enabled |
| Version | mysqlnd 8.3.2-1+0~20240120.16+debian10~1.gbpb43448 |
| Compression | supported |
| core SSL | supported |
| extended SSL | supported |
| Command buffer size | 4096 |
| Read buffer size | 32768 |
| Read timeout | 86400 |
| Collecting statistics | Yes |
| Collecting memory statistics | No |
| Tracing | n/a |
| Loaded plugins | mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_caching_sha2_password,auth_plugin_sha256_password |
| API Extensions | mysqli,pdo_mysql |
openssl
| OpenSSL support | enabled |
| OpenSSL Library Version | OpenSSL 1.1.1n 15 Mar 2022 |
| OpenSSL Header Version | OpenSSL 1.1.1n 15 Mar 2022 |
| Openssl default config | /usr/lib/ssl/openssl.cnf |
| Directive | Local Value | Master Value |
|---|---|---|
| openssl.cafile | no value | no value |
| openssl.capath | no value | no value |
pcre
| PCRE (Perl Compatible Regular Expressions) Support | enabled |
| PCRE Library Version | 10.40 2022-04-14 |
| PCRE Unicode Version | 14.0.0 |
| PCRE JIT Support | enabled |
| PCRE JIT Target | x86 64bit (little endian + unaligned) |
| Directive | Local Value | Master Value |
|---|---|---|
| pcre.backtrack_limit | 1000000 | 1000000 |
| pcre.jit | On | On |
| pcre.recursion_limit | 100000 | 100000 |
PDO
| PDO support | enabled |
| PDO drivers | mysql |
pdo_mysql
| PDO Driver for MySQL | enabled |
| Client API version | mysqlnd 8.3.2-1+0~20240120.16+debian10~1.gbpb43448 |
| Directive | Local Value | Master Value |
|---|---|---|
| pdo_mysql.default_socket | /var/run/mysqld/mysqld.sock | /var/run/mysqld/mysqld.sock |
Phar
| Phar: PHP Archive support | enabled |
| Phar API version | 1.1.1 |
| Phar-based phar archives | enabled |
| Tar-based phar archives | enabled |
| ZIP-based phar archives | enabled |
| gzip compression | enabled |
| bzip2 compression | enabled |
| Native OpenSSL support | enabled |
|
Phar based on pear/PHP_Archive, original concept by Davey Shafik. Phar fully realized by Gregory Beaver and Marcus Boerger. Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle. |
| Directive | Local Value | Master Value |
|---|---|---|
| phar.cache_list | no value | no value |
| phar.readonly | On | On |
| phar.require_hash | On | On |
posix
| POSIX support | enabled |
random
| Version | 8.3.2-1+0~20240120.16+debian10~1.gbpb43448 |
readline
| Readline Support | enabled |
| Readline library | EditLine wrapper |
| Directive | Local Value | Master Value |
|---|---|---|
| cli.pager | no value | no value |
| cli.prompt | \b \> | \b \> |
Reflection
| Reflection | enabled |
session
| Session Support | enabled |
| Registered save handlers | files user memcache memcached |
| Registered serializer handlers | php_serialize php php_binary igbinary msgpack |
| Directive | Local Value | Master Value |
|---|---|---|
| session.auto_start | Off | Off |
| session.cache_expire | 180 | 180 |
| session.cache_limiter | nocache | nocache |
| session.cookie_domain | coolsoft.cz | no value |
| session.cookie_httponly | On | Off |
| session.cookie_lifetime | 2678400 | 0 |
| session.cookie_path | / | / |
| session.cookie_samesite | Strict | no value |
| session.cookie_secure | On | Off |
| session.gc_divisor | 1000 | 1000 |
| session.gc_maxlifetime | 2678400 | 1440 |
| session.gc_probability | 0 | 0 |
| session.lazy_write | On | On |
| session.name | coolsoftcms | PHPSESSID |
| session.referer_check | no value | no value |
| session.save_handler | user | files |
| session.save_path | /var/www/clients/client1/web1/tmp | /var/www/clients/client1/web1/tmp |
| session.serialize_handler | php | php |
| session.sid_bits_per_character | 5 | 5 |
| session.sid_length | 26 | 26 |
| session.upload_progress.cleanup | On | On |
| session.upload_progress.enabled | On | On |
| session.upload_progress.freq | 1% | 1% |
| session.upload_progress.min_freq | 1 | 1 |
| session.upload_progress.name | PHP_SESSION_UPLOAD_PROGRESS | PHP_SESSION_UPLOAD_PROGRESS |
| session.upload_progress.prefix | upload_progress_ | upload_progress_ |
| session.use_cookies | On | On |
| session.use_only_cookies | On | On |
| session.use_strict_mode | On | Off |
| session.use_trans_sid | Off | Off |
shmop
| shmop support | enabled |
SimpleXML
| SimpleXML support | enabled |
| Schema support | enabled |
soap
| Soap Client | enabled |
| Soap Server | enabled |
| Directive | Local Value | Master Value |
|---|---|---|
| soap.wsdl_cache | 1 | 1 |
| soap.wsdl_cache_dir | /tmp | /tmp |
| soap.wsdl_cache_enabled | On | On |
| soap.wsdl_cache_limit | 5 | 5 |
| soap.wsdl_cache_ttl | 86400 | 86400 |
sockets
| Sockets Support | enabled |
sodium
| sodium support | enabled |
| libsodium headers version | 1.0.18 |
| libsodium library version | 1.0.18 |
SPL
| SPL support | enabled |
| Interfaces | OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject |
| Classes | AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException |
standard
| Dynamic Library Support | enabled |
| Path to sendmail | /usr/sbin/sendmail -t -i -f webmaster@coolsoft.cz |
| Directive | Local Value | Master Value |
|---|---|---|
| assert.active | On | On |
| assert.bail | Off | Off |
| assert.callback | no value | no value |
| assert.exception | On | On |
| assert.warning | On | On |
| auto_detect_line_endings | Off | Off |
| default_socket_timeout | 60 | 60 |
| from | no value | no value |
| session.trans_sid_hosts | no value | no value |
| session.trans_sid_tags | a=href,area=href,frame=src,form= | a=href,area=href,frame=src,form= |
| unserialize_max_depth | 4096 | 4096 |
| url_rewriter.hosts | no value | no value |
| url_rewriter.tags | form= | form= |
| user_agent | no value | no value |
sysvmsg
| sysvmsg support | enabled |
sysvsem
| sysvsem support | enabled |
sysvshm
| sysvshm support | enabled |
tokenizer
| Tokenizer Support | enabled |
xml
| XML Support | active |
| XML Namespace Support | active |
| libxml2 Version | 2.9.14 |
xmlreader
| XMLReader | enabled |
xmlwriter
| XMLWriter | enabled |
xsl
| XSL | enabled |
| libxslt Version | 1.1.32 |
| libxslt compiled against libxml Version | 2.9.4 |
| EXSLT | enabled |
| libexslt Version | 1.1.32 |
Zend OPcache
| Opcode Caching | Up and Running |
| Optimization | Enabled |
| SHM Cache | Enabled |
| File Cache | Disabled |
| JIT | Disabled |
| Startup | OK |
| Shared memory model | mmap |
| Cache hits | 2187516693 |
| Cache misses | 4494668 |
| Used memory | 129358808 |
| Free memory | 5312 |
| Wasted memory | 4853608 |
| Interned Strings Used memory | 8388600 |
| Interned Strings Free memory | 8 |
| Cached scripts | 5032 |
| Cached keys | 8180 |
| Max keys | 16229 |
| OOM restarts | 1 |
| Hash keys restarts | 0 |
| Manual restarts | 0 |
| Start time | 2026-03-20T20:01:27+0000 |
| Last restart time | 2026-03-21T02:10:21+0000 |
| Last force restart time | none |
| Directive | Local Value | Master Value |
|---|---|---|
| opcache.blacklist_filename | no value | no value |
| opcache.dups_fix | Off | Off |
| opcache.enable | On | On |
| opcache.enable_cli | Off | Off |
| opcache.enable_file_override | Off | Off |
| opcache.error_log | no value | no value |
| opcache.file_cache | no value | no value |
| opcache.file_cache_consistency_checks | On | On |
| opcache.file_cache_only | Off | Off |
| opcache.file_update_protection | 2 | 2 |
| opcache.force_restart_timeout | 180 | 180 |
| opcache.huge_code_pages | Off | Off |
| opcache.interned_strings_buffer | 8 | 8 |
| opcache.jit | no value | no value |
| opcache.jit_bisect_limit | 0 | 0 |
| opcache.jit_blacklist_root_trace | 16 | 16 |
| opcache.jit_blacklist_side_trace | 8 | 8 |
| opcache.jit_buffer_size | 0 | 0 |
| opcache.jit_debug | 0 | 0 |
| opcache.jit_hot_func | 127 | 127 |
| opcache.jit_hot_loop | 64 | 64 |
| opcache.jit_hot_return | 8 | 8 |
| opcache.jit_hot_side_exit | 8 | 8 |
| opcache.jit_max_exit_counters | 8192 | 8192 |
| opcache.jit_max_loop_unrolls | 8 | 8 |
| opcache.jit_max_polymorphic_calls | 2 | 2 |
| opcache.jit_max_recursive_calls | 2 | 2 |
| opcache.jit_max_recursive_returns | 2 | 2 |
| opcache.jit_max_root_traces | 1024 | 1024 |
| opcache.jit_max_side_traces | 128 | 128 |
| opcache.jit_max_trace_length | 1024 | 1024 |
| opcache.jit_prof_threshold | 0.005 | 0.005 |
| opcache.lockfile_path | /tmp | /tmp |
| opcache.log_verbosity_level | 1 | 1 |
| opcache.max_accelerated_files | 10000 | 10000 |
| opcache.max_file_size | 0 | 0 |
| opcache.max_wasted_percentage | 5 | 5 |
| opcache.memory_consumption | 128 | 128 |
| opcache.opt_debug_level | 0 | 0 |
| opcache.optimization_level | 0x7FFEBFFF | 0x7FFEBFFF |
| opcache.preferred_memory_model | no value | no value |
| opcache.preload | no value | no value |
| opcache.preload_user | no value | no value |
| opcache.protect_memory | Off | Off |
| opcache.record_warnings | Off | Off |
| opcache.restrict_api | no value | no value |
| opcache.revalidate_freq | 2 | 2 |
| opcache.revalidate_path | Off | Off |
| opcache.save_comments | On | On |
| opcache.use_cwd | On | On |
| opcache.validate_permission | Off | Off |
| opcache.validate_root | On | On |
| opcache.validate_timestamps | On | On |
zip
| Zip | enabled |
| Zip version | 1.22.3 |
| Libzip version | 1.7.3 |
| BZIP2 compression | Yes |
| XZ compression | No |
| ZSTD compression | No |
| AES-128 encryption | Yes |
| AES-192 encryption | Yes |
| AES-256 encryption | Yes |
zlib
| ZLib Support | enabled |
| Stream Wrapper | compress.zlib:// |
| Stream Filter | zlib.inflate, zlib.deflate |
| Compiled Version | 1.2.11 |
| Linked Version | 1.2.11 |
| Directive | Local Value | Master Value |
|---|---|---|
| zlib.output_compression | Off | Off |
| zlib.output_compression_level | -1 | -1 |
| zlib.output_handler | no value | no value |
Additional Modules
| Module Name |
|---|
array (2)0 => array (7)| 'name' => 'default output handler' | 'type' => 0 | 'flags' => 20592 | 'level' => 0 | 'chunk_size' => 4096 | 'buffer_size' => 8192 | 'buffer_used' => 01 => array (7)| 'name' => 'default output handler' | 'type' => 0 | 'flags' => 112 | 'level' => 1 | 'chunk_size' => 0 | 'buffer_size' => 16384 | 'buffer_used' => 0
HTTP
GET https://tmp2.coolsoft.cz/
| Host | 'tmp2.coolsoft.cz'
|
|---|---|
| Accept-Encoding | 'gzip, br, zstd, deflate'
|
| User-Agent | 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)'
|
| Accept | '*/*'
|
$_GET
empty
$_POST
empty
$_COOKIE
empty
Code: 200
| Set-Cookie | 'tracy-session=c83e89407f; expires=Fri, 16 Apr 2027 16:22:40 GMT; Max-Age=31557600; path=/; HttpOnly'
|
|---|---|
| X-Powered-By | 'Nette Framework 3'
|
| Content-Type | 'text/html; charset=utf-8'
|
| X-Frame-Options | 'SAMEORIGIN'
|
| Set-Cookie | '_nss=1; path=/; secure; HttpOnly; SameSite=Strict'
|
| Set-Cookie | 'coolsoftcms=qcma9k83sd8oa654s6j6aehsif; expires=Sun, 17 May 2026 10:22:40 GMT; Max-Age=2678400; path=/; domain=coolsoft.cz; secure; HttpOnly; SameSite=Strict'
|
| Expires | 'Thu, 19 Nov 1981 08:52:00 GMT'
|
| Cache-Control | 'no-store, no-cache, must-revalidate'
|
| Pragma | 'no-cache'
|
| Vary | 'X-Requested-With'
|
Headers have been sent, output started at .../LocalizationListComponent-Template-LocalizationList.latte--064b804148.php:54 source
44: echo LR\Filters::escapeHtmlText($currentLocalization->getName()) /* line 12 */; 45: echo ' 46: </button> 47: '; 48: } 49: echo ' <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="'; 50: echo LR\Filters::escapeHtmlAttr($uniqueId) /* line 14 */; 51: echo '"> 52: '; 53: foreach ($localizationList as $localization) /* line 15 */ { 54: echo ' <li> 55: <a class="dropdown-item'; 56: if ($localization->getKey() === $currentLocalization->getKey()) /* line 16 */ { 57: echo ' active'; 58: }