Source for file PlgAJAXResp.php
Documentation is available at PlgAJAXResp.php
* @copyright Amiro.CMS. All rights reserved.
* @package Plugin_AJAXResponder
* Plugin module model (server-side plugin context).
* @package Plugin_AJAXResponder
* Returns item date field name or empty string
* @see PlgAJAXResp::initModel()
* AJAX Responder plugin JSON generation class.
* @package Plugin_AJAXResponder
* Maximum list items limit to avoid memory/cpu overload during getting large lists
const MAX_LIST_ITEMS_LIMIT = 20;
* Current plugin module id
* @var PlgAJAXResp_ListView
* @var PlgAJAXResp_iState
private $doFilterByPageId;
* @param AMI_Request $oRequest
* @param array $aAllowedModules
public function __construct(AMI_Request $oRequest, array $aAllowedModules){
AMI::getSingleton('response')->displayBench();
AMI::getSingleton('db')->displayQueries(true);
$this->oRequest = $oRequest;
$this->modId = $this->oRequest->get('module');
trigger_error("Missing request parameter 'module'", E_USER_ERROR);
if($limit > self::MAX_LIST_ITEMS_LIMIT){
$limit = self::MAX_LIST_ITEMS_LIMIT;
$pageId = $this->oRequest->get('id_page', '');
$this->doFilterByPageId = true;
$pageId = (int) abs($pageId);
$this->doFilterByPageId = (bool) $pageId;
$this->oRequest->set('id_page', $pageId);
$this->oView->setModel($oModelList);
* Initializes table model and returns list model
* @return AMI_ModTableList
// Module state (plugin module model)
if($oDeclarator->isRegistered($this->modId)){
list ($hyper, $config) = $oDeclarator->getHyperData($this->modId);
// Setting for Image extension to get generated images {
AMI::setOption($this->modId, 'generate_pictures', array('picture', 'popup_picture', 'small_picture'));
AMI::setOption($this->modId, 'prior_source_picture', 'popup_picture');
AMI::setOption($this->modId, 'picture_maxwidth', 300);
AMI::setOption($this->modId, 'picture_maxheight', 300);
AMI::setOption($this->modId, 'small_picture_maxwidth', 80);
AMI::setOption($this->modId, 'small_picture_maxheight', 80);
AMI::setOption($this->modId, 'popup_picture_maxwidth', 800);
AMI::setOption($this->modId, 'popup_picture_maxheight', 600);
AMI::setOption($this->modId, 'generate_bigger_image', true);
// } Setting for Image extension to get generated images
// Will be described later
// Module view (server-side plugin context)
* Initializes table model and returns list model
* @return AMI_ModTableList
$oModelList = $this->oTableModel->getList();
$prefix = $oModelList->getMainTableAlias(true);
// Common front filtering {
if($this->oTableModel->hasField('public')){
$oModelList->addWhereDef('AND ' . $prefix . $this->oTableModel->getFieldName('public') . ' = 1');
$oModelList->addWhereDef('AND cat.public = 1');
if($this->oTableModel->hasField('hide_in_list')){
$oModelList->addWhereDef('AND ' . $prefix . $this->oTableModel->getFieldName('hide_in_list') . ' = 0');
$oModelList->addWhereDef('AND ' . $prefix . $this->oTableModel->getFieldName('date_created') . ' <= NOW()');
if($this->doFilterByPageId){
$oModelList->addWhereDef(
->plain($prefix . $this->oTableModel->getFieldName('id_page'))
// } Common front filtering
$dateFieldName = $this->oState->getDateFieldName();
if($dateFieldName !== '' && $this->oTableModel->hasField($dateFieldName)){
$oModelList->addExpressionColumn(
->plain($this->oTableModel->getFieldName($dateFieldName, $prefix))
$oModelList->addExpressionColumn(
->plain($this->oTableModel->getFieldName($dateFieldName, $prefix))
if($this->oTableModel->hasField('lang')){
$oModelList->addWhereDef(
->plain($this->oTableModel->getFieldName('lang', $prefix))
$aDirMapping = array('A' => 'ASC', 'D' => 'DESC');
if(isset ($aDirMapping[$dir])){
$dir = $aDirMapping[$dir];
$oModelList->setLimitParameters(
* @see PlgAJAXResp_ListView::get()
'list' => $this->oView->get()
|