public function build(array $params = array()) { $query = parent::build($params); $params = $params + ['structure' => null, 'children' => null, 'parents' => null, 'siblings' => null, 'depth' => null, 'isIncluded' => false, 'isVisible' => Chalk::isFrontend()]; $query->addSelect("c")->leftJoin("n.content", "c"); $depth = null; if (isset($params['structure'])) { $query->andWhere('n.structure = :structure')->setParameter('structure', $params['structure']); } else { if (isset($params['children'])) { $query->andWhere('n.structure = :structure AND n.left >= :left AND n.right <= :right')->setParameter('structure', $params['children']['structureId'])->setParameter('left', $params['children']['left'])->setParameter('right', $params['children']['right']); if (isset($params['depth'])) { $query->andWhere('n.depth <= :depth')->setParameter('depth', $params['children']['depth'] + $params['depth']); } if (!$params['isIncluded']) { $query->andWhere('n != :exclude')->setParameter('exclude', $params['children']['id']); } } else { if (isset($params['parents'])) { $query->from($this->_entityName, 'nt')->andWhere('n.structure = :structure AND nt.left >= n.left AND nt.left <= n.right')->andWhere('nt = :node')->setParameter('structure', $params['parents']['structureId'])->setParameter('node', $params['parents']['id']); if (isset($params['depth'])) { $query->andWhere('n.depth >= :depth')->setParameter('depth', $params['parents']['depth'] - $params['depth']); } if (!$params['isIncluded']) { $query->andWhere('n != :exclude')->setParameter('exclude', $params['parents']['id']); } } else { if (isset($params['siblings'])) { $query->andWhere('n.parent = :parent')->setParameter('parent', $params['siblings']['parentId']); if (!$params['isIncluded']) { $query->andWhere('n != :exclude')->setParameter('exclude', $params['siblings']['id']); } } } } } if ($params['isVisible']) { $query->andWhere("n.isHidden = false"); } $this->publishable_modify($query, $params, 'c'); return $query; }
public function publishable_modify(QueryBuilder $query, array $criteria = array(), $alias = null) { $alias = isset($alias) ? $alias : $this->alias(); $criteria = $criteria + ['isPublished' => Chalk::isFrontend(), 'isPublishable' => false, 'publishDateMin' => null, 'publishDateMax' => null]; if ($criteria['isPublished']) { $query->andWhere("{$alias}.status IN (:statuses) AND UTC_TIMESTAMP() >= {$alias}.publishDate"); $query->setParameter('statuses', [Chalk::STATUS_PUBLISHED]); } if ($criteria['isPublishable']) { $query->andWhere("{$alias}.status IN (:statuses)"); $query->setParameter('statuses', [Chalk::STATUS_DRAFT, Chalk::STATUS_PENDING]); } if (isset($criteria['publishDateMin'])) { $publishDateMin = $criteria['publishDateMin'] instanceof DateTime ? $criteria['publishDateMin'] : new DateTime($criteria['publishDateMin']); $query->andWhere("{$alias}.publishDate >= :publishDateMin")->setParameter('publishDateMin', $publishDateMin); } if (isset($criteria['publishDateMax'])) { $publishDateMax = $criteria['publishDateMax'] instanceof DateTime ? $criteria['publishDateMax'] : new DateTime($criteria['publishDateMax']); $query->andWhere("{$alias}.publishDate <= :publishDateMax")->setParameter('publishDateMax', $publishDateMax); } }
<?php /* * Copyright 2015 Jack Sleight <http://jacksleight.com/> * This source file is subject to the MIT license that is bundled with this package in the file LICENCE.md. */ use Chalk\App as Chalk; if (php_sapi_name() != 'cli') { exit("Must be run from the command line\n"); } $init = getcwd() . '/chalk-cli.php'; if (!is_file($init)) { exit("No 'chalk-cli.php' initialization file found in '" . getcwd() . "'\n"); } $app = (require_once $init); Chalk::isFrontend(false); $cmds = []; foreach ($app->dir('cli/cmds') as $file) { $cmds[$file->fileName()] = $file; } if (!isset($_SERVER['argv'][1]) || !isset($cmds[$_SERVER['argv'][1]])) { cli\err("Invalid command, valid commands are:\n " . implode("\n ", array_keys($cmds))); exit; } require_once $cmds[$_SERVER['argv'][1]]->name();
public function postExecute(Request $req = null, Response $res = null) { Chalk::isFrontend(true); }