Пример #1
0
	public function modelDataTable($id = null, Atomik_Model_Query $query = null, $options = array())
	{
		$this->dataTable($id, array(), $options);
		
		if ($this->options['sortColumn']) {
			$query->orderBy($this->options['sortColumn'], $this->options['sortOrder']);
		}
		
		$this->options['paginateData'] = false;
		$this->options['sortData'] = false;
		$this->options['numberOfRows'] = Atomik_Model_Locator::count($query);
		
		$offset = ($this->options['currentPage'] - 1) * $this->options['rowsPerPage'];
		$query->limit($offset, $this->options['rowsPerPage']);
		
		$this->_builder = $query->getBuilder();
		$this->setData(Atomik_Model_Locator::query($query));
		
		return $this;
	}
Пример #2
0
	public function modelFilters(Atomik_Model_Builder $builder)
	{
		$filters = Atomik_Model_Query::getAvailableFilters($builder);
		if (!count($filters)) {
			return '';
		}
		
		Atomik_Backend_Assets::addStyle('css/filter.css', 'db');
		Atomik_Backend_Assets::addScript('js/filter.js', 'db');
		
		$html = '<div class="sidebar-box model-filters"><div class="sidebar-box-title">Filters</div><ul>';
		
		foreach ($filters as $name => $filter) {
			$html .= sprintf('<li><span class="by">By %s</span>%s</li>', $builder->getField($name)->getLabel(), $this->_getList($name, $filter->getPossibleValues()));
		}
		
		$html .= '</ul></div>';
		return $html;
	}
Пример #3
0
	/**
	 * Builds a query object from the parameters
	 *
	 * @param 	string|Atomik_Model_Builder $builder
	 * @param 	array 						$where
	 * @param 	string 						$orderBy
	 * @param 	string|array				$limit
	 * @return 	Atomik_Db_Query
	 */
	public static function buildQuery($builder, $where = null, $orderBy = null, $limit = null)
	{
		$query = Atomik_Model_Query::create($builder);
		$query->select()->from($builder);
		
		if ($where !== null) {
			$query->where($where);
		}
		
		if ($orderBy !== null) {
			$query->orderBy($orderBy);
		}
		
		if ($limit !== null) {
			$query->limit($limit);
		}
		
		return $query;
	}
	public function modelAutoComplete($id, $model, $field)
	{
		$this->field = $field;
		$query = Atomik_Model_Query::create()->from($model)->where('LOWER(' . $field . ') LIKE ?')->limit(10);
		return $this->autoComplete($id, $query);
	}
Пример #5
0
<?php

if (!Atomik::has('request/name')) {
	Atomik::redirect('index');
}

$modelName = Atomik::get('request/name');
$builder = Atomik_Backend_Models::getModelBuilder($modelName);

$models = new Atomik_Model_Query();
$models->from($builder)->filter(Atomik::get('request/filters', array()));

if (isset($_POST['search'])) {
	$models->where($_POST['searchBy'] . ' LIKE ?', '%' . $_POST['search'] . '%');
}

$columns = array();
foreach ($builder->getFields() as $field) {
	if (($builder->isFieldThePrimaryKey($field) || $builder->isFieldPartOfReference($field) ||
		$field->hasOption('admin-hide-in-list')) && !$field->hasOption('admin-show-in-list')) {
			continue;
	}
	$columns[$field->name] = $field->getLabel();
}

$editUrl = Atomik::get('request/editUrl', Atomik::url('models/edit', array('name' => $modelName)));
$deleteUrl = Atomik::get('request/deleteUrl', Atomik::url('models/delete', array('name' => $modelName)));