Вход Регистрация
Файл: system/controllers/users/actions/profile_edit_notices.php
Строк: 50
<?php

class actionUsersProfileEditNotices extends cmsAction {

    public function 
run($profile){

        
$user cmsUser::getInstance();
        
$template cmsTemplate::getInstance();

        
// проверяем наличие доступа
        
if ($profile['id'] != $user->id && !$user->is_admin) { cmsCore::error404(); }

        
$notify_types cmsEventsManager::hookAll('user_notify_types');

        
$form = new cmsForm();

        
$fieldset_id $form->addFieldset();

        
$default_options = array('''email''pm''both');

        foreach(
$notify_types as $list){
            foreach(
$list as $name=>$type){

                
$options = array();

                if(!isset(
$type['options'])) { $type['options'] = $default_options; }

                foreach(
$type['options'] as $option){
                    if (!
$option){
                        
$options[''] = LANG_USERS_NOTIFY_VIA_NONE;
                    } else {
                        
$options[$option] = constant('LANG_USERS_NOTIFY_VIA_'.mb_strtoupper($option));
                    }
                }

                
$form->addField($fieldset_id, new fieldList($name, array(
                    
'title' => $type['title'],
                    
'default' => 'email',
                    
'items' => $options
                
)));

            }
        }

        
// Форма отправлена?
        
$is_submitted $this->request->has('submit');

        
$options $this->model->getUserNotifyOptions($profile['id']);

        if (
$is_submitted){

            
// Парсим форму и получаем поля записи
            
$options array_merge($options$form->parse($this->request$is_submitted$options));

            
// Проверям правильность заполнения
            
$errors $form->validate($this,  $options);

            if (!
$errors){

                
// Обновляем профиль и редиректим на его просмотр
                
$this->model->updateUserNotifyOptions($profile['id'], $options);

                
$this->redirectTo('users'$profile['id']);

            }

            if (
$errors){
                
cmsUser::addSessionMessage(LANG_FORM_ERRORS'error');
            }

        }

        return 
$template->render('profile_edit_notices', array(
            
'id' => $profile['id'],
            
'profile' => $profile,
            
'options' => $options,
            
'form' => $form,
            
'errors' => isset($errors) ? $errors false
        
));

    }

}
Онлайн: 2
Реклама