This commit is contained in:
Samuel Georges 2016-03-18 19:54:27 +11:00
parent e9c7e6b9d1
commit c244aef2f8
3 changed files with 1 additions and 132 deletions

View File

@ -41,7 +41,7 @@ class Table extends WidgetBase
*/
protected $fieldName = null;
/*
/**
* @var string
*/
protected $recordsKeyFrom;

View File

@ -6,7 +6,6 @@ use October\Rain\Halcyon\Model as HalcyonModel;
use Cms\Contracts\CmsObject as CmsObjectContract;
use ApplicationException;
use ValidationException;
use SystemException;
use Exception;
/**

View File

@ -1,130 +0,0 @@
<?php namespace Cms\Classes;
use ApplicationException;
/**
* This class provides helper methods to make the CmsObject behave like a Model
*
* Some examples:
*
* Page::find('blog/post');
*
* Page::all();
*
* Page::inEditTheme()->useCache()->all();
*
* Page::withComponent('blogPost')
* ->sortBy('baseFileName')
* ->lists('baseFileName', 'baseFileName');
*
* @package october\cms
* @author Alexey Bobkov, Samuel Georges
*/
class CmsObjectQuery
{
protected $useCache = false;
protected $cmsObject;
protected $theme;
public function __construct($cmsObject, $theme = null)
{
$this->cmsObject = $cmsObject;
$this->theme = $theme;
}
/**
* Set the theme to a specific one.
* @return self
*/
public function inTheme($theme)
{
if (is_string($theme)) {
$theme = Theme::load($theme);
}
$this->theme = $theme;
return $this;
}
/**
* Set the theme to the editing one.
* @return self
*/
public function inEditTheme()
{
return $this->inTheme(Theme::getEditTheme());
}
/**
* Set the theme to the activated one.
* @return self
*/
public function inActiveTheme()
{
return $this->inTheme(Theme::getActiveTheme());
}
/**
* Enable or disable cache
* @param boolean $value
* @return self
*/
public function useCache($value = true)
{
$this->useCache = $value;
return $this;
}
/**
* Finds a single Cms Object by its file name
* @param string $fileName
* @return CmsObject
*/
public function find($fileName)
{
if (!$this->theme) {
$this->inEditTheme();
}
if ($this->useCache) {
return forward_static_call([$this->cmsObject, 'loadCached'], $this->theme, $fileName);
}
else {
return forward_static_call([$this->cmsObject, 'load'], $this->theme, $fileName);
}
}
/**
* Returns all CMS objects for the set theme
* @return CmsObjectCollection
*/
public function all()
{
if (!$this->theme) {
$this->inEditTheme();
}
$collection = forward_static_call([$this->cmsObject, 'listInTheme'], $this->theme, !$this->useCache);
$collection = new CmsObjectCollection($collection);
return $collection;
}
/**
* Handle dynamic method calls into the method.
* @param string $method
* @param array $parameters
* @return mixed
*/
public function __call($method, $parameters)
{
if (method_exists('Cms\Classes\CmsObjectCollection', $method)) {
$collection = $this->all();
return call_user_func_array(array($collection, $method), $parameters);
}
$className = get_class($this);
throw new \BadMethodCallException("Call to undefined method {$className}::{$method}()");
}
}