<?php

/**
 * Generated: 2014-03-24 15:01:35
 * @author Rtn_Module_Tool
 */
class Bip_Jqgrid_Admin_Children extends Rtn_JqGrid {

	public $beanName = 'viewbipintems';
	public $actions = array(
	    'show' => null,
	);
	public $sortname = 'id';
	public $sortorder = 'desc';
	public $rownum = 30;

	protected function _renderColmodel() {
		if (Bip_Module_Module::getInstance()->groupsEnabled()) {
			$columns[] = [
			    'name' => 'groupname',
			    'label' => __('Kategoria'),
			];
		}
		$columns[] = [
		    'name' => 'title',
		    'label' => __('Tytuł'),
		];
		$columns[] = [
		    'name' => 'author',
		    'label' => __('Autor'),
		];
		$columns[] = [
		    'name' => 'data',
		    'label' => __('Data'),
		    'width' => 70
		];
		$columns[] = [
		    'name' => 'link',
		    'label' => __('Link'),
		];
		return $columns;
	}

	public function loadDatagrid($id = null) {
		$this->colmodel = $this->_fixColmodel(); // nie może być w konstruktorze (za wczesnie)

		$query = R::$f->begin();
		$grid_params = static::get_prss();

		$this->extraTransformQuery($query);

		if (NULL != $rules_to_sql = $this->_searchRules($id)) {
			$query->where($rules_to_sql);
		}

		if (NULL != $order_rules_to_sql = $this->_orderRulesToSql()) {
			$query->order($order_rules_to_sql);
		}

		$count = R::count($this->beanName, $rules_to_sql);

		$query->limit(($grid_params['rows'] * ($grid_params['page'] - 1)), $grid_params['rows']);

		$beans = R::findAll($this->beanName, $query);
		$rows = array();

		foreach (array_keys($beans) as $bean_k) {
			$beans[$bean_k] = $this->_transformBean($beans[$bean_k]);

			$beans[$bean_k]['_grid_extra'] = array(
			    'can_edit' => $this->_canRowBeEdited($beans[$bean_k]),
			    'can_clone' => $this->_canRowBeCloned($beans[$bean_k]),
			    'can_send_test' => $this->_canRowBeSendTest($beans[$bean_k]),
			    'can_delete' => $this->_canRowBeDeleted($beans[$bean_k]),
			    'can_refresh' => $this->_canRowBeRefresh($beans[$bean_k])
			);

			array_push($rows, $beans[$bean_k]);
		}

		$this->_searchArray($rows);
		$this->_orderArray($rows);


		$response = $this->_renderResponse($count, $grid_params['rows'], $grid_params['page'], $rows);

		return $response;
	}

	private function _searchRules($id) {
		$sql_arr = array();

		foreach (static::getSearchRules() as $rule) {
			if ($rule->data) {
				if (!$this->lookupField($rule->field)) {
					continue;
				}

				$op2op = array('eq' => '=', 'bw' => 'like');
				$op = $op2op[$rule->op];

				$value = $rule->data;
				$value = ($op == 'like') ? ('%' . $value . '%') : ($value);

				$col = $this->_getColmodelColumn($rule->field);
				if (isset($col['_type']) && $col['_type'] === 'boolean') {
					if ($value === 'true') {
						$sql_arr[] = "`{$rule->field}` = TRUE";
					} elseif ($value === 'false') {
						$sql_arr[] = "(`{$rule->field}` = FALSE OR `{$rule->field}` IS NULL)";
					}
				} else {
					$sql_arr[] = "`{$rule->field}` $op '$value'";
				}
			}
		}
		if ($id) {
			$sql_arr[] = "`uid` = '$id'";
		}
		return join(' AND ', $sql_arr);
	}

	protected function _canRowBeShow($bean) {
		return true;
	}
	
	protected function _extraTransformRow($row, $bean) {
		$urlHelper = new Zend_View_Helper_Url();
		$row['link'] = $urlHelper->url([
		    'catid' => $bean['category_id'],
		    'id' => $bean['id'],
		    'slug' => Eppe_Slugify::slugify($bean['title'])
		], 'bip-article');
		
		return $row;
	}

}
