Вход Регистрация
Файл: plugins/searchsys/controllers/admin.php
Строк: 299
<?php

class SEARCHSYS_CTRL_Admin extends ADMIN_CTRL_Abstract
{
    const 
SESSION_VAR_ACCOUNT_TYPE "BASE_QUESTION_ACCOUNT_TYPE";
    
    
/**
     * @var BOL_QuestionService
     */
    
private $questionService;
    
    public function 
__construct()
    {
        
parent::__construct();

        
$this->questionService BOL_QuestionService::getInstance();
    }
    
    
/**
     * Default action
     */
    
public function index()
    {
        if ( 
SEARCHSYS_BOL_Service::getInstance()->isPeepsys() )
        {
            
$this->redirect(PEEP::getRouter()->urlForRoute('searchsys.admin-site-search'));
        }
        
        
$lang PEEP::getLanguage();
        
        
$accountType null;
        if ( isset(
$_GET['accountType']) )
        {
            
PEEP::getSession()->set(self::SESSION_VAR_ACCOUNT_TYPEtrim($_GET['accountType']));
        }

        if ( 
PEEP::getSession()->get(self::SESSION_VAR_ACCOUNT_TYPE) )
        {
            
$accountType PEEP::getSession()->get(self::SESSION_VAR_ACCOUNT_TYPE);
        }
        
        
// get available account types from DB
        
$accountTypes $this->questionService->findAllAccountTypesWithQuestionsCount();

        
/* @var $value BOL_QuestionAccountType */
        
foreach ( $accountTypes as $key => $value )
        {
            
$accounts[$value['name']] = $lang->text('base''questions_account_type_' $value['name']);
        }

        
$this->assign('displayAccountType', !empty($accounts) && count($accounts) > 1);
            
        
$accountsKeys array_keys($accounts);
        
$accountType = (!isset($accountType) || !in_array($accountType$accountsKeys) ) ? $accountsKeys[0] : $accountType;
        
$this->assign('accountType'$accountType);
        
        
$config PEEP::getConfig();
        
        
$questionsConf json_decode($config->getValue('searchsys''questions'), true);
        if ( !empty(
$questionsConf[$accountType]) )
        {
            
$this->assign('questionsConf'$questionsConf[$accountType]);
        }
        
        if ( 
PEEP::getRequest()->isPost() && !empty($_POST['action']) )
        {
            switch ( 
$_POST['action'] )
            {
                case 
'update_questions':
                    
$questionsConf[$accountType] = array();
                    foreach ( 
$_POST['questions'] as $name => $question )
                    {
                        
$questionsConf[$accountType][$name] = !empty($_POST['questions'][$name]) && $_POST['questions'][$name];
                    }
                    
$config->saveConfig('searchsys''questions'json_encode($questionsConf));
                    
PEEP::getFeedback()->info($lang->text('searchsys''settings_updated'));
                    
$this->redirect();
                    break;
                    
                case 
'update_settings':
                    
$config->saveConfig('searchsys''show_advanced', !empty($_POST['show_advanced']));
                    
$config->saveConfig('searchsys''show_section', !empty($_POST['show_section']));
                    
$config->saveConfig('searchsys''username_search', !empty($_POST['username_search']));
                    
$config->saveConfig('searchsys''online_only_enabled', !empty($_POST['online_only']));
                    
$config->saveConfig('searchsys''with_photo_enabled', !empty($_POST['with_photo']));
                    
                    
PEEP::getFeedback()->info($lang->text('searchsys''settings_updated'));
                    
$this->redirect();
                    break;
            }
        }
        
        
$this->assign('showAdvanced'$config->getValue('searchsys''show_advanced'));
        
$this->assign('showSection'$config->getValue('searchsys''show_section'));
        
$this->assign('usernameSearch'$config->getValue('searchsys''username_search'));
        
$this->assign('displayNameQuestion'$config->getValue('base''display_name_question'));
        
$this->assign('onlineOnly'$config->getValue('searchsys''online_only_enabled'));
        
$this->assign('withPhoto'$config->getValue('searchsys''with_photo_enabled'));
        
        
$questions $this->questionService->findAllQuestionsForAccountType($accountType);
        
        
$section null;
        
$questionArray = array();

        foreach ( 
$questions as $sort => $question )
        {
            if ( !
$question['onSearch'] )
            {
                continue;
            }
            
            if ( 
$section !== $question['sectionName'] )
            {
                
$section $question['sectionName'];
                
$questionArray[$section] = array();
            }

            if ( isset(
$questions[$sort]['id']) )
            {
                
$questionArray[$section][$sort] = $questions[$sort];
            }
        }

        
$this->assign('questionsBySections'$questionArray);
        
        
// -- Select account type form --
        
$accountTypeSelectForm = new Form('qst_account_type_select_form');
        
$accountTypeSelectForm->setMethod(Form::METHOD_GET);

        
$qstAccountType = new Selectbox('accountType');
        
$qstAccountType->addAttribute('id''qst_account_type_select');
        
$qstAccountType->setLabel($lang->text('admin''questions_account_type_label'));
        
$qstAccountType->setOptions($accounts);
        
$qstAccountType->setValue($accountType);
        
$qstAccountType->setHasInvitation(false);

        
$accountTypeSelectForm->addElement($qstAccountType);

        
$this->addForm($accountTypeSelectForm);

        
$script '$("#qst_account_type_select").change( function(){
            $(this).parents("form:eq(0)").submit();
        });'
;

        
$this->addComponent('menu'$this->getMenu());

        
PEEP::getDocument()->addOnloadScript($script);
        
        
PEEP::getDocument()->setHeading($lang->text('searchsys''admin_page_heading'));
        
       
    }

    public function 
site()
    {
        
$this->addComponent('menu'$this->getMenu());

        
$service SEARCHSYS_BOL_Service::getInstance();
        
$lang PEEP::getLanguage();
        
$config PEEP::getConfig();

        if ( 
PEEP::getRequest()->isPost() )
        {
            switch ( 
$_POST['action'] )
            {
                case 
'update_groups':
                    
$groups $_POST['groups'];
                    
$config->saveConfig('searchsys''site_search_groups'json_encode($groups));
                    break;

                case 
'update_settings':
                    
$config->saveConfig('searchsys''site_search_enabled'$_POST['site_search']);
                    break;
            }
            
PEEP::getFeedback()->info($lang->text('searchsys''settings_updated'));
            
$this->redirect();
        }

        
$this->assign('groups'$service->getSiteSearchGroups());
        
$this->assign('active'$service->getConfiguredGroupsForSiteSearch());
        
$this->assign('searchEnabled'$config->getValue('searchsys''site_search_enabled'));

        
PEEP::getDocument()->setHeading($lang->text('searchsys''admin_page_heading'));

       
    }

    private function 
getMenu()
    {
        
$language PEEP::getLanguage();
        
$items = array();

        if ( !
SEARCHSYS_BOL_Service::getInstance()->isPeepsys() )
        {
            
$item = new BASE_MenuItem();
            
$item->setLabel($language->text('searchsys''tab_user_search'));
            
$item->setUrl(PEEP::getRouter()->urlForRoute('searchsys.admin-config'));
            
$item->setKey('user');
            
$item->setOrder(1);
            
$item->setIconClass('peep_ic_user');
            
            
array_push($items$item);
        }

        
$item2 = new BASE_MenuItem();
        
$item2->setLabel($language->text('searchsys''tab_site_search'));
        
$item2->setUrl(PEEP::getRouter()->urlForRoute('searchsys.admin-site-search'));
        
$item2->setKey('site');
        
$item2->setOrder(2);
        
$item2->setIconClass('peep_ic_monitor');
        
        
array_push($items$item2);

        return new 
BASE_CMP_ContentMenu($items);
    }
}
Онлайн: 2
Реклама