Вход Регистрация
Файл: concrete5.7.5.6/concrete/controllers/single_page/account/edit_profile.php
Строк: 109
<?php
namespace ConcreteControllerSinglePageAccount;
use 
ConcreteCorePageControllerAccountPageController;
use 
Config;
use 
UserInfo;
use 
Exception;
use 
ConcreteCoreAuthenticationAuthenticationType;
use 
ConcreteCoreAuthenticationAuthenticationTypeFailureException;
use 
Loader;
use 
User;
use 
UserAttributeKey;
use 
Localization;

class 
EditProfile extends AccountPageController {

    public function 
view() {
        
$u = new User();
        
$profile UserInfo::getByID($u->getUserID());
        if (
is_object($profile)) {
            
$this->set('profile'$profile);
        } else {
            throw new 
Exception(t('You must be logged in to access this page.'));
        }
        
$locales = array();
        
$languages Localization::getAvailableInterfaceLanguages();
        if (
count($languages) > 0) {
            
array_unshift($languages'en_US');
        }
        if (
count($languages) > 0) {
            foreach (
$languages as $lang) {
                
$locales[$lang] = PunicLanguage::getName($lang$lang);
            }
            
asort($locales);
            
$locales array_merge(array('' => tc('Default locale''** Default')), $locales);
        }
        
$this->set('locales'$locales);
    }

    public function 
callback($type,$method='callback') {
        
$at AuthenticationType::getByHandle($type);
        
$this->view();
        if (!
method_exists($at->controller$method)) {
            throw new 
exception('Invalid method.');
        }
        if (
$method != 'callback') {
            if (!
is_array($at->controller->apiMethods) || !in_array($method,$at->controller->apiMethods)) {
                throw new 
Exception("Invalid method.");
            }
        }
        try {
            
$message call_user_method($method$at->controller);
            if (
trim($message)) {
                
$this->set('message',$message);
            }
        } catch (
exception $e) {
            if (
$e instanceof AuthenticationTypeFailureException) {
                
// Throw again if this is a big`n
                
throw $e;
            }
            
$this->error->add($e->getMessage());
        }
    }

    public function 
save() {
        
$this->view();
        
$ui $this->get('profile');

        
$uh Loader::helper('concrete/user');
        
$th Loader::helper('text');
        
$vsh Loader::helper('validation/strings');
        
$cvh Loader::helper('concrete/validation');
        
$valt Loader::helper('validation/token');

        
$data $this->post();

        
/*
         * Validation
        */
        //token
        
if(!$valt->validate('profile_edit')) {
            
$this->error->add($valt->getErrorMessage());
        }

        
// validate the user's email
        
$email $this->post('uEmail');
        if (!
$vsh->email($email)) {
            
$this->error->add(t('Invalid email address provided.'));
        } else if (!
$cvh->isUniqueEmail($email) && $ui->getUserEmail() != $email) {
            
$this->error->add(t("The email address '%s' is already in use. Please choose another.",$email));
        }


        
// password
        
if(strlen($data['uPasswordNew'])) {
            
$passwordNew $data['uPasswordNew'];
            
$passwordNewConfirm $data['uPasswordNewConfirm'];

            
Core::make('validator/password')->isValid($passwordNew$this->error);

            if (
$passwordNew) {
                if (
$passwordNew != $passwordNewConfirm) {
                    
$this->error->add(t('The two passwords provided do not match.'));
                }
            }
            
$data['uPasswordConfirm'] = $passwordNew;
            
$data['uPassword'] = $passwordNew;
        }

        
$aks UserAttributeKey::getEditableInProfileList();

        foreach(
$aks as $uak) {
            if (
$uak->isAttributeKeyRequiredOnProfile()) {
                
$e1 $uak->validateAttributeForm();
                if (
$e1 == false) {
                    
$this->error->add(t('The field "%s" is required'$uak->getAttributeKeyDisplayName()));
                } else if (
$e1 instanceof ConcreteCoreErrorError) {
                    
$this->error->add($e1);
                }
            }
        }

        if (!
$this->error->has()) {
            
$data['uEmail'] = $email;
            if(
Config::get('concrete.misc.user_timezones')) {
                
$data['uTimezone'] = $this->post('uTimezone');
            }

            
$ui->saveUserAttributesForm($aks);
            
$ui->update($data);
            
$this->redirect("/account""save_complete");
        }
    }
}
Онлайн: 0
Реклама