Вход Регистрация
Файл: 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_TYPE, trim($_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
Реклама