|
Source for file PlgAJAXRespAdmin.php
Documentation is available at PlgAJAXRespAdmin.php
* Admin side script displaing select box with available modules (CMS context).
* @copyright Amiro.CMS. All rights reserved.
* @package Plugin_AJAXResponder
* @version $Id: PlgAJAXRespAdmin.php 61273 2013-08-07 10:47:54Z Leontiev Anton $
* Admin side script displaing select box with available modules (CMS context).
* @package Plugin_AJAXResponder
private $tplBlock = 'plg_ami_ajax_responder';
* Path to the plugin config file
private $aConfig = array(
'available_modules' => array(),
'allowed_modules' => array()
private $aStatusMessages = array('error' => array(), 'notice' => array());
* @param array $aParams Plugin parameters passed by CMS
$this->oTpl = AMI::getSingleton('env/template_sys');
$this->aLocale = $this->oTpl->parseLocale($aParams['templates_path'] . 'admin.lng');
$this->oTpl->addBlock($this->tplBlock, $aParams['templates_path'] . 'admin.tpl');
$this->configPath = $aParams['config_file'];
if(!is_file($this->configPath)){
$this->addStatusMessage(sprintf($this->aLocale['error_missing_config_file'], $this->configPath), 'error');
$aAvailableModules = explode(',', $aConfig['available_modules']);
$aModIds = array('blog', 'search_history');
'ami_multifeeds' => array('articles', 'news', 'photoalbum', 'stickers'),
'ami_files' => array('files'),
'ami_catalog' => array('items')
foreach($aConfigs as $config){
$aInstanceMoIds = $oDeclarator->getRegistered($hyper, $config);
foreach($aInstanceMoIds as $modId){
$aAvailableModules[] = $modId;
$this->addStatusMessage(sprintf($this->aLocale['error_invalid_config_file'], $this->configPath), 'error');
foreach(array('available_modules', 'allowed_modules') as $key){
if(!isset ($aConfig[$key])){
$this->addStatusMessage(sprintf($this->aLocale['error_missing_config_file_parameter'], $key, $this->configPath), 'error');
$this->aConfig[$key] = mb_strlen($aConfig[$key]) ? explode(',', $aConfig[$key]) : array();
// drop available modules that aren't in allowed modules list
$this->aConfig['allowed_modules'],
$this->aConfig['available_modules']
* Sent from form alloved modules list
$aAllovedModules = $oRequest->get('alloved_modules', array());
if($oRequest->get('save', false)){
// drop available modules that aren't in allowed modules list
$aAllovedModules = array_intersect($aAllovedModules, $this->aConfig['available_modules']);
if($this->aConfig['allowed_modules'] != $aAllovedModules){
$configContent = preg_replace('/(\sallowed_modules\s*=\s*")([^"]*)"/', '\\1' . implode(',', $aAllovedModules) . '"', $configContent);
@chmod($this->configPath, 0777);
$this->addStatusMessage($this->aLocale['message_saved']);
$this->aConfig['allowed_modules'] = $aAllovedModules;
$this->addStatusMessage(sprintf($this->aLocale['error_cant_save'], $this->configPath), 'error');
* Returns admin interface HTML.
$html = $this->getStatusMessages();
if(sizeof($this->aConfig['available_modules'])){
$oService = new AMI_Service_Adm();
$aModCaptions = $oService->getModulesCaptions($this->aConfig['available_modules'], FALSE);
foreach($aModCaptions as $modId => $caption){
$this->aLocale['mod_' . $modId] = $caption;
foreach($this->aConfig['available_modules'] as $module){
$caption = 'mod_' . $module;
$modCaption = isset ($this->aLocale[$caption]) ? $this->aLocale[$caption] : '[' . $module . ']';
$list .= $this->oTpl->parse($this->tplBlock . ':option_row', array(
'selected' => in_array($module, $this->aConfig['allowed_modules']),
$html .= $this->oTpl->parse($this->tplBlock . ':body', array('alloved_modules' => $list));
* Adds notification message to admin interface.
* @param string $type 'notice'|'error'
private function addStatusMessage($message, $type = 'notice'){
if(isset ($this->aStatusMessages[$type])){
$this->aStatusMessages[$type][] = $message;
trigger_error("Unknown message type '" . $type . "'", E_USER_WARNING);
* Returns admin interface messages.
private function getStatusMessages(){
if(sizeof($this->aStatusMessages['error']) || sizeof($this->aStatusMessages['notice'])){
foreach($this->aStatusMessages as $type => $aMessages){
foreach($aMessages as $message){
$messages .= $this->oTpl->parse($this->tplBlock . ':status_' . $type, array('message' => $message));
$html = $this->oTpl->parse($this->tplBlock . ':status_messages', array('messages' => $messages));
|