Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
<?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();
Exemplo n.º 4
0
 public function postExecute(Request $req = null, Response $res = null)
 {
     Chalk::isFrontend(true);
 }