<?php

namespace DoctrineProxies\__CG__\Concrete\Core\Entity\User;

/**
 * DO NOT EDIT THIS FILE - IT WAS CREATED BY DOCTRINE'S PROXY GENERATOR
 */
class User extends \Concrete\Core\Entity\User\User implements \Doctrine\ORM\Proxy\Proxy
{
    /**
     * @var \Closure the callback responsible for loading properties in the proxy object. This callback is called with
     *      three parameters, being respectively the proxy object to be initialized, the method that triggered the
     *      initialization process and an array of ordered parameters that were passed to that method.
     *
     * @see \Doctrine\Common\Persistence\Proxy::__setInitializer
     */
    public $__initializer__;

    /**
     * @var \Closure the callback responsible of loading properties that need to be copied in the cloned object
     *
     * @see \Doctrine\Common\Persistence\Proxy::__setCloner
     */
    public $__cloner__;

    /**
     * @var boolean flag indicating if this object was already initialized
     *
     * @see \Doctrine\Common\Persistence\Proxy::__isInitialized
     */
    public $__isInitialized__ = false;

    /**
     * @var array properties to be lazy loaded, with keys being the property
     *            names and values being their default values
     *
     * @see \Doctrine\Common\Persistence\Proxy::__getLazyProperties
     */
    public static $lazyPropertiesDefaults = [];



    /**
     * @param \Closure $initializer
     * @param \Closure $cloner
     */
    public function __construct($initializer = null, $cloner = null)
    {

        $this->__initializer__ = $initializer;
        $this->__cloner__      = $cloner;
    }







    /**
     * 
     * @return array
     */
    public function __sleep()
    {
        if ($this->__isInitialized__) {
            return ['__isInitialized__', 'uID', 'alerts', 'signup', 'attributes', 'uName', 'uEmail', 'uPassword', 'uIsActive', 'uIsFullRecord', 'uIsValidated', 'uDateAdded', 'uLastPasswordChange', 'uHasAvatar', 'uLastOnline', 'uLastLogin', 'uPreviousLogin', 'uNumLogins', 'uLastAuthTypeID', 'uLastIP', 'uTimezone', 'uDefaultLanguage', 'uIsPasswordReset'];
        }

        return ['__isInitialized__', 'uID', 'alerts', 'signup', 'attributes', 'uName', 'uEmail', 'uPassword', 'uIsActive', 'uIsFullRecord', 'uIsValidated', 'uDateAdded', 'uLastPasswordChange', 'uHasAvatar', 'uLastOnline', 'uLastLogin', 'uPreviousLogin', 'uNumLogins', 'uLastAuthTypeID', 'uLastIP', 'uTimezone', 'uDefaultLanguage', 'uIsPasswordReset'];
    }

    /**
     * 
     */
    public function __wakeup()
    {
        if ( ! $this->__isInitialized__) {
            $this->__initializer__ = function (User $proxy) {
                $proxy->__setInitializer(null);
                $proxy->__setCloner(null);

                $existingProperties = get_object_vars($proxy);

                foreach ($proxy->__getLazyProperties() as $property => $defaultValue) {
                    if ( ! array_key_exists($property, $existingProperties)) {
                        $proxy->$property = $defaultValue;
                    }
                }
            };

        }
    }

    /**
     * 
     */
    public function __clone()
    {
        $this->__cloner__ && $this->__cloner__->__invoke($this, '__clone', []);
    }

    /**
     * Forces initialization of the proxy
     */
    public function __load()
    {
        $this->__initializer__ && $this->__initializer__->__invoke($this, '__load', []);
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __isInitialized()
    {
        return $this->__isInitialized__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setInitialized($initialized)
    {
        $this->__isInitialized__ = $initialized;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setInitializer(\Closure $initializer = null)
    {
        $this->__initializer__ = $initializer;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __getInitializer()
    {
        return $this->__initializer__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setCloner(\Closure $cloner = null)
    {
        $this->__cloner__ = $cloner;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific cloning logic
     */
    public function __getCloner()
    {
        return $this->__cloner__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     * @static
     */
    public function __getLazyProperties()
    {
        return self::$lazyPropertiesDefaults;
    }

    
    /**
     * {@inheritDoc}
     */
    public function getUserID()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserID', []);

        return parent::getUserID();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserName()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserName', []);

        return parent::getUserName();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserEmail()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserEmail', []);

        return parent::getUserEmail();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserPassword()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserPassword', []);

        return parent::getUserPassword();
    }

    /**
     * {@inheritDoc}
     */
    public function isUserActive()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isUserActive', []);

        return parent::isUserActive();
    }

    /**
     * {@inheritDoc}
     */
    public function isUserFullRecord()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isUserFullRecord', []);

        return parent::isUserFullRecord();
    }

    /**
     * {@inheritDoc}
     */
    public function isUserValidated()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isUserValidated', []);

        return parent::isUserValidated();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserDateAdded()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserDateAdded', []);

        return parent::getUserDateAdded();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserLastPasswordChange()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserLastPasswordChange', []);

        return parent::getUserLastPasswordChange();
    }

    /**
     * {@inheritDoc}
     */
    public function userHasAvatar()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'userHasAvatar', []);

        return parent::userHasAvatar();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserLastOnline()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserLastOnline', []);

        return parent::getUserLastOnline();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserLastLogin()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserLastLogin', []);

        return parent::getUserLastLogin();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserPreviousLogin()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserPreviousLogin', []);

        return parent::getUserPreviousLogin();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserTotalLogins()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserTotalLogins', []);

        return parent::getUserTotalLogins();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserLastAuthenticationTypeID()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserLastAuthenticationTypeID', []);

        return parent::getUserLastAuthenticationTypeID();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserLastIP()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserLastIP', []);

        return parent::getUserLastIP();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserTimezone()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserTimezone', []);

        return parent::getUserTimezone();
    }

    /**
     * {@inheritDoc}
     */
    public function getUserDefaultLanguage()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserDefaultLanguage', []);

        return parent::getUserDefaultLanguage();
    }

    /**
     * {@inheritDoc}
     */
    public function isUserPasswordReset()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isUserPasswordReset', []);

        return parent::isUserPasswordReset();
    }

    /**
     * {@inheritDoc}
     */
    public function setUserID($uID)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserID', [$uID]);

        return parent::setUserID($uID);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserName($uName)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserName', [$uName]);

        return parent::setUserName($uName);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserEmail($uEmail)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserEmail', [$uEmail]);

        return parent::setUserEmail($uEmail);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserPassword($uPassword)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserPassword', [$uPassword]);

        return parent::setUserPassword($uPassword);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserIsActive($uIsActive)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserIsActive', [$uIsActive]);

        return parent::setUserIsActive($uIsActive);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserIsFullRecord($uIsFullRecord)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserIsFullRecord', [$uIsFullRecord]);

        return parent::setUserIsFullRecord($uIsFullRecord);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserIsValidated($uIsValidated)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserIsValidated', [$uIsValidated]);

        return parent::setUserIsValidated($uIsValidated);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserDateAdded($uDateAdded)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserDateAdded', [$uDateAdded]);

        return parent::setUserDateAdded($uDateAdded);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserLastPasswordChange($uLastPasswordChange)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserLastPasswordChange', [$uLastPasswordChange]);

        return parent::setUserLastPasswordChange($uLastPasswordChange);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserHasAvatar($uHasAvatar)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserHasAvatar', [$uHasAvatar]);

        return parent::setUserHasAvatar($uHasAvatar);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserLastOnline($uLastOnline)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserLastOnline', [$uLastOnline]);

        return parent::setUserLastOnline($uLastOnline);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserLastLogin($uLastLogin)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserLastLogin', [$uLastLogin]);

        return parent::setUserLastLogin($uLastLogin);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserPreviousLogin($uPreviousLogin)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserPreviousLogin', [$uPreviousLogin]);

        return parent::setUserPreviousLogin($uPreviousLogin);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserTotalLogins($uNumLogins)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserTotalLogins', [$uNumLogins]);

        return parent::setUserTotalLogins($uNumLogins);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserLastAuthenticationTypeID($uLastAuthTypeID)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserLastAuthenticationTypeID', [$uLastAuthTypeID]);

        return parent::setUserLastAuthenticationTypeID($uLastAuthTypeID);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserLastIP($uLastIP)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserLastIP', [$uLastIP]);

        return parent::setUserLastIP($uLastIP);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserTimezone($uTimezone)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserTimezone', [$uTimezone]);

        return parent::setUserTimezone($uTimezone);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserDefaultLanguage($uDefaultLanguage)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserDefaultLanguage', [$uDefaultLanguage]);

        return parent::setUserDefaultLanguage($uDefaultLanguage);
    }

    /**
     * {@inheritDoc}
     */
    public function setUserIsPasswordReset($uIsPasswordReset)
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserIsPasswordReset', [$uIsPasswordReset]);

        return parent::setUserIsPasswordReset($uIsPasswordReset);
    }

    /**
     * {@inheritDoc}
     */
    public function getUserInfoObject()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUserInfoObject', []);

        return parent::getUserInfoObject();
    }

    /**
     * {@inheritDoc}
     */
    public function __toString()
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, '__toString', []);

        return parent::__toString();
    }

}
