<?xml version="1.0"?>
<source xmlns="http://xml.phpdox.net/token">
<file xmlns="http://xml.phpdox.net/src" path="/home/rhossis/NetBeansProjects/cymapgt/core/application/authentication/UserCredential/src/services" file="UserCredentialPasswordLoginService.php" realpath="/home/rhossis/NetBeansProjects/cymapgt/core/application/authentication/UserCredential/src/services/UserCredentialPasswordLoginService.php" size="7770" time="2015-07-18T02:42:32+03:00" unixtime="1437176552" sha1="5a4d365495f9d75908c51dd545286ce438fa145b" relative="services/UserCredentialPasswordLoginService.php"/>
<line no="1">
<token name="T_OPEN_TAG"><?php</token>
</line>
<line no="2">
<token name="T_NAMESPACE">namespace</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">cymapgt</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">core</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">application</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">authentication</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">UserCredential</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">services</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="3"/>
<line no="4">
<token name="T_USE">use</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">cymapgt</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">Exception</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">UserCredentialException</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="5">
<token name="T_USE">use</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">cymapgt</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">core</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">application</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">authentication</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">UserCredential</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">abstractclass</token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">UserCredentialAuthenticationInterface</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="6"/>
<line no="7">
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="8">
<token name="T_DOC_COMMENT"> * UserCredentialPasswordLoginService</token>
</line>
<line no="9">
<token name="T_DOC_COMMENT"> * This service creates password hashes using the BCRYPT cipher</token>
</line>
<line no="10">
<token name="T_DOC_COMMENT"> *</token>
</line>
<line no="11">
<token name="T_DOC_COMMENT"> * @category </token>
</line>
<line no="12">
<token name="T_DOC_COMMENT"> * @package cymapgt.core.application.authentication.UserCredential.services</token>
</line>
<line no="13">
<token name="T_DOC_COMMENT"> * @copyright Copyright (c) 2014 Cymap</token>
</line>
<line no="14">
<token name="T_DOC_COMMENT"> * @author Cyril Ogana <cogana@gmail.com></token>
</line>
<line no="15">
<token name="T_DOC_COMMENT"> * @abstract</token>
</line>
<line no="16">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="17">
<token name="T_DOC_COMMENT"> * The objectives of the service are</token>
</line>
<line no="18">
<token name="T_DOC_COMMENT"> * - Create password hash</token>
</line>
<line no="19">
<token name="T_DOC_COMMENT"> * - Verify password for log in authentication</token>
</line>
<line no="20">
<token name="T_DOC_COMMENT"> * @TODO provide ability to use AES to encrypt the hash</token>
</line>
<line no="21">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="22"/>
<line no="23">
<token name="T_CLASS">class</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">UserCredentialPasswordLoginService</token>
<token name="T_WHITESPACE"> </token>
<token name="T_IMPLEMENTS">implements</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">UserCredentialAuthenticationInterface</token>
</line>
<line no="24">
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="25">
<token name="T_WHITESPACE"> </token>
<token name="T_COMMENT">//flags</token>
</line>
<line no="26">
<token name="T_WHITESPACE"> </token>
<token name="T_PRIVATE">private</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$_usePasswordFlag</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">true</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
<token name="T_WHITESPACE"> </token>
<token name="T_COMMENT">//whether the auth is password based (at some stage or fully)</token>
</line>
<line no="27">
<token name="T_WHITESPACE"> </token>
<token name="T_PRIVATE">private</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$_multiFactorFlag</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">false</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
<token name="T_WHITESPACE"> </token>
<token name="T_COMMENT">//whether the auth service is multi factor</token>
</line>
<line no="28">
<token name="T_WHITESPACE"> </token>
</line>
<line no="29">
<token name="T_WHITESPACE"> </token>
<token name="T_COMMENT">//user info</token>
</line>
<line no="30">
<token name="T_WHITESPACE"> </token>
<token name="T_PRIVATE">private</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$_inputPassword</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_CONSTANT_ENCAPSED_STRING">''</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
<token name="T_WHITESPACE"> </token>
<token name="T_COMMENT">//the input password</token>
</line>
<line no="31">
<token name="T_WHITESPACE"> </token>
<token name="T_PRIVATE">private</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$_currentUsername</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_CONSTANT_ENCAPSED_STRING">''</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
<token name="T_WHITESPACE"> </token>
<token name="T_COMMENT">//username</token>
</line>
<line no="32">
<token name="T_WHITESPACE"> </token>
<token name="T_PRIVATE">private</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$_currentPassword</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_CONSTANT_ENCAPSED_STRING">''</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
<token name="T_WHITESPACE"> </token>
<token name="T_COMMENT">//hashed password</token>
</line>
<line no="33">
<token name="T_WHITESPACE"> </token>
</line>
<line no="34">
<token name="T_WHITESPACE"> </token>
<token name="T_COMMENT">//multi factor auth</token>
</line>
<line no="35">
<token name="T_WHITESPACE"> </token>
<token name="T_PRIVATE">private</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$_multiFactorHandler</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">null</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
<token name="T_WHITESPACE"> </token>
<token name="T_COMMENT">//the handler instance for mutli factor auth</token>
</line>
<line no="36">
<token name="T_WHITESPACE"> </token>
<token name="T_PRIVATE">private</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$_multiFactorStages</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_ARRAY">array</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
<token name="T_WHITESPACE"> </token>
<token name="T_COMMENT">//the stages of multi factor auth</token>
</line>
<line no="37">
<token name="T_WHITESPACE"> </token>
</line>
<line no="38">
<token name="T_WHITESPACE"> </token>
<token name="T_COMMENT">//Constructor method</token>
</line>
<line no="39">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">__construct</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="40">
<token name="T_WHITESPACE"> </token>
</line>
<line no="41">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
<token name="T_WHITESPACE"> </token>
</line>
<line no="42">
<token name="T_WHITESPACE"> </token>
</line>
<line no="43">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="44">
<token name="T_DOC_COMMENT"> * function setUserPassword() - Specify whether the method uses password</token>
</line>
<line no="45">
<token name="T_DOC_COMMENT"> * (set e.g. user log in, lDAP, 2 FACTOR (step 1)</token>
</line>
<line no="46">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-13</token>
</line>
<line no="47">
<token name="T_DOC_COMMENT"> *</token>
</line>
<line no="48">
<token name="T_DOC_COMMENT"> * @param bool $flag - if true, is using password</token>
</line>
<line no="49">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="50">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="51">
<token name="T_DOC_COMMENT"> */</token>
<token name="T_WHITESPACE"> </token>
</line>
<line no="52">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">setUsePassword</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$flag</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="53">
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_userPasswordFlag</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_BOOL_CAST">(bool)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$flag</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="54">
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_multiFactorFlag</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">true</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="55">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="56"/>
<line no="57">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="58">
<token name="T_DOC_COMMENT"> * function getUsePassword() - Return the use password flag</token>
</line>
<line no="59">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="60">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-13</token>
</line>
<line no="61">
<token name="T_DOC_COMMENT"> *</token>
</line>
<line no="62">
<token name="T_DOC_COMMENT"> * @return bool</token>
</line>
<line no="63">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="64">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="65">
<token name="T_DOC_COMMENT"> */</token>
<token name="T_WHITESPACE"> </token>
</line>
<line no="66">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">getUsePassword</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="67">
<token name="T_WHITESPACE"> </token>
<token name="T_RETURN">return</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_usePasswordFlag</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="68">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="69">
<token name="T_WHITESPACE"> </token>
</line>
<line no="70">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="71">
<token name="T_DOC_COMMENT"> * function setPassword() - Set the user password, and hash it</token>
</line>
<line no="72">
<token name="T_DOC_COMMENT"> *</token>
</line>
<line no="73">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com>- 2014-02-13</token>
</line>
<line no="74">
<token name="T_DOC_COMMENT"> *</token>
</line>
<line no="75">
<token name="T_DOC_COMMENT"> * @param bool $password - the user password in raw text</token>
</line>
<line no="76">
<token name="T_DOC_COMMENT"> *</token>
</line>
<line no="77">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="78">
<token name="T_DOC_COMMENT"> */</token>
<token name="T_WHITESPACE"> </token>
</line>
<line no="79">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">setPassword</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$password</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="80">
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_inputPassword</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING_CAST">(string)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$password</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="81">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="82">
<token name="T_WHITESPACE"> </token>
</line>
<line no="83">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="84">
<token name="T_DOC_COMMENT"> * function getPassword() - Return the hashed user password</token>
</line>
<line no="85">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="86">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-13</token>
</line>
<line no="87">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="88">
<token name="T_DOC_COMMENT"> * @param $unhashed - flag if true, return unhashed</token>
</line>
<line no="89">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="90">
<token name="T_DOC_COMMENT"> * @return mixed - the hashed password</token>
</line>
<line no="91">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="92">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="93">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="94">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">getPassword</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$unhashed</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">false</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="95">
<token name="T_WHITESPACE"> </token>
<token name="T_IF">if</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_BOOL_CAST">(bool)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$unhashed</token>
<token name="T_WHITESPACE"> </token>
<token name="T_IS_IDENTICAL">===</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">true</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="96">
<token name="T_WHITESPACE"> </token>
<token name="T_RETURN">return</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_inputPassword</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="97">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
<token name="T_ELSE">else</token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="98">
<token name="T_WHITESPACE"> </token>
<token name="T_RETURN">return</token>
<token name="T_WHITESPACE"> </token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">password_hash</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_inputPassword</token>
<token name="T_PHPDOX_COMMA">,</token>
<token name="T_WHITESPACE"> </token>
<token name="T_NS_SEPARATOR">\</token>
<token name="T_STRING">PASSWORD_DEFAULT</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="99">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="100">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="101">
<token name="T_WHITESPACE"> </token>
</line>
<line no="102">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="103">
<token name="T_DOC_COMMENT"> * function setMultiFactor($flag) - Set whether this service uses multi factor auth</token>
</line>
<line no="104">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="105">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-13</token>
</line>
<line no="106">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="107">
<token name="T_DOC_COMMENT"> * @param bool $flag - if true, is a multi factor auth service</token>
</line>
<line no="108">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="109">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="110">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="111">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">setMultiFactor</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$flag</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="112">
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_multiFactorFlag</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_BOOL_CAST">(bool)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$flag</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="113">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="114">
<token name="T_WHITESPACE"> </token>
</line>
<line no="115">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="116">
<token name="T_DOC_COMMENT"> * function setMultiFactorHandler - Provide namespace of the multi factor handler service,</token>
</line>
<line no="117">
<token name="T_DOC_COMMENT"> * which has to implement the interface</token>
</line>
<line no="118">
<token name="T_DOC_COMMENT"> * cymapgt\core\application\authentication\abstractclass\UserCredentialAuthenticationMultiFactorInterface</token>
</line>
<line no="119">
<token name="T_DOC_COMMENT"> *</token>
</line>
<line no="120">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-13</token>
</line>
<line no="121">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="122">
<token name="T_DOC_COMMENT"> * @param string $handler - The namespace of the multi factor handler service</token>
</line>
<line no="123">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="124">
<token name="T_DOC_COMMENT"> * @access public </token>
</line>
<line no="125">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="126">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">setMultiFactorHandler</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$handler</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="127">
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_multiFactorHandler</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING_CAST">(string)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$handler</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="128">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="129">
<token name="T_WHITESPACE"> </token>
</line>
<line no="130">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="131">
<token name="T_DOC_COMMENT"> * function getMultiFactorHandler - Return an instance of the multi factor handler service</token>
</line>
<line no="132">
<token name="T_DOC_COMMENT"> * to use ofr this authentication session</token>
</line>
<line no="133">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="134">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com > - 2014-02-13</token>
</line>
<line no="135">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="136">
<token name="T_DOC_COMMENT"> * @return object</token>
</line>
<line no="137">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="138">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="139">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="140">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">getMultiFactorHandler</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="141">
<token name="T_WHITESPACE"> </token>
<token name="T_RETURN">return</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_multiFactorHandler</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="142">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="143">
<token name="T_WHITESPACE"> </token>
</line>
<line no="144">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="145">
<token name="T_DOC_COMMENT"> * function setMultiFactorStages - in an array, configure the steps of the multifactor login, passing</token>
</line>
<line no="146">
<token name="T_DOC_COMMENT"> * numeric stage names, types and handler calls</token>
</line>
<line no="147">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="148">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-13</token>
</line>
<line no="149">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="150">
<token name="T_DOC_COMMENT"> * @param Array $stages - The stages of the log in session</token>
</line>
<line no="151">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="152">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="153">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="154">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">setMultiFactorStages</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_ARRAY">Array</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$stages</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="155">
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_multiFactorStages</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$stages</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="156">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="157">
<token name="T_WHITESPACE"> </token>
</line>
<line no="158">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="159">
<token name="T_DOC_COMMENT"> * function getMultiFactorStages - return the multi factor stages array</token>
</line>
<line no="160">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="161">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-13</token>
</line>
<line no="162">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="163">
<token name="T_DOC_COMMENT"> * @return array</token>
</line>
<line no="164">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="165">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="166">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="167">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">getMultiFactorStages</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="168">
<token name="T_WHITESPACE"> </token>
<token name="T_RETURN">return</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_multiFactorStages</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="169">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="170">
<token name="T_WHITESPACE"> </token>
</line>
<line no="171">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="172">
<token name="T_DOC_COMMENT"> * function initialize() - initialize the service, bootstrap before any processing</token>
</line>
<line no="173">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="174">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-13</token>
</line>
<line no="175">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="176">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="177">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="178">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">initialize</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="179">
<token name="T_WHITESPACE"> </token>
<token name="T_IF">if</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_inputPassword</token>
<token name="T_WHITESPACE"> </token>
<token name="T_IS_EQUAL">==</token>
<token name="T_WHITESPACE"> </token>
<token name="T_CONSTANT_ENCAPSED_STRING">''</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
</line>
<line no="180">
<token name="T_WHITESPACE"> </token>
<token name="T_BOOLEAN_AND">&&</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_currentUsername</token>
<token name="T_WHITESPACE"> </token>
<token name="T_IS_EQUAL">==</token>
<token name="T_WHITESPACE"> </token>
<token name="T_CONSTANT_ENCAPSED_STRING">''</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
</line>
<line no="181">
<token name="T_WHITESPACE"> </token>
<token name="T_BOOLEAN_AND">&&</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_currentPassword</token>
<token name="T_WHITESPACE"> </token>
<token name="T_IS_EQUAL">==</token>
<token name="T_WHITESPACE"> </token>
<token name="T_CONSTANT_ENCAPSED_STRING">''</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
</line>
<line no="182">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="183">
<token name="T_WHITESPACE"> </token>
<token name="T_THROW">throw</token>
<token name="T_WHITESPACE"> </token>
<token name="T_NEW">new</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">UserCredentialException</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_CONSTANT_ENCAPSED_STRING">"The usercredential login service is not initialized with all parameters"</token>
<token name="T_PHPDOX_COMMA">,</token>
<token name="T_WHITESPACE"> </token>
<token name="T_LNUMBER">2000</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="184">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="185">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="186">
<token name="T_WHITESPACE"> </token>
</line>
<line no="187">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="188">
<token name="T_DOC_COMMENT"> * function authenticate() - authenticate the user after initialization</token>
</line>
<line no="189">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="190">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-13</token>
</line>
<line no="191">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="192">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="193">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="194">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">authenticate</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="195">
<token name="T_WHITESPACE"> </token>
<token name="T_RETURN">return</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">password_verify</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_inputPassword</token>
<token name="T_PHPDOX_COMMA">,</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_currentPassword</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="196">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="197">
<token name="T_WHITESPACE"> </token>
</line>
<line no="198">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="199">
<token name="T_DOC_COMMENT"> * function setCurrentUsername($username) - set the current username</token>
</line>
<line no="200">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="201">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-13</token>
</line>
<line no="202">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="203">
<token name="T_DOC_COMMENT"> * @param string $username - The current username</token>
</line>
<line no="204">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="205">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="206">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="207">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">setCurrentUsername</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$username</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="208">
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_currentUsername</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING_CAST">(string)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$username</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="209">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="210">
<token name="T_WHITESPACE"> </token>
</line>
<line no="211">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="212">
<token name="T_DOC_COMMENT"> * function getCurrentUsername() - get the current username</token>
</line>
<line no="213">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="214">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-14</token>
</line>
<line no="215">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="216">
<token name="T_DOC_COMMENT"> * @return string - Return the current username</token>
</line>
<line no="217">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="218">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="219">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="220">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">getCurrentUsername</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="221">
<token name="T_WHITESPACE"> </token>
<token name="T_RETURN">return</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_currentUsername</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="222">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="223">
<token name="T_WHITESPACE"> </token>
</line>
<line no="224">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="225">
<token name="T_DOC_COMMENT"> * function setCurrentPassword() - set the current password</token>
</line>
<line no="226">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="227">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-14</token>
</line>
<line no="228">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="229">
<token name="T_DOC_COMMENT"> * @param mixed $password - The current password hash</token>
</line>
<line no="230">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="231">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="232">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="233">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">setCurrentPassword</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_VARIABLE">$password</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="234">
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_currentPassword</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_EQUAL">=</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$password</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="235">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="236">
<token name="T_WHITESPACE"> </token>
</line>
<line no="237">
<token name="T_WHITESPACE"> </token>
<token name="T_DOC_COMMENT">/**</token>
</line>
<line no="238">
<token name="T_DOC_COMMENT"> * function getCurrentPassword() - return the current password (hashed)</token>
</line>
<line no="239">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="240">
<token name="T_DOC_COMMENT"> * Cyril Ogana <cogana@gmail.com> - 2014-02-14</token>
</line>
<line no="241">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="242">
<token name="T_DOC_COMMENT"> * @return mixed - The hashed password</token>
</line>
<line no="243">
<token name="T_DOC_COMMENT"> * </token>
</line>
<line no="244">
<token name="T_DOC_COMMENT"> * @access public</token>
</line>
<line no="245">
<token name="T_DOC_COMMENT"> */</token>
</line>
<line no="246">
<token name="T_WHITESPACE"> </token>
<token name="T_PUBLIC">public</token>
<token name="T_WHITESPACE"> </token>
<token name="T_FUNCTION">function</token>
<token name="T_WHITESPACE"> </token>
<token name="T_STRING">getCurrentPassword</token>
<token name="T_PHPDOX_OPEN_BRACKET">(</token>
<token name="T_PHPDOX_CLOSE_BRACKET">)</token>
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_OPEN_CURLY">{</token>
</line>
<line no="247">
<token name="T_WHITESPACE"> </token>
<token name="T_RETURN">return</token>
<token name="T_WHITESPACE"> </token>
<token name="T_VARIABLE">$this</token>
<token name="T_OBJECT_OPERATOR">-></token>
<token name="T_STRING">_currentPassword</token>
<token name="T_PHPDOX_SEMICOLON">;</token>
</line>
<line no="248">
<token name="T_WHITESPACE"> </token>
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="249">
<token name="T_PHPDOX_CLOSE_CURLY">}</token>
</line>
<line no="250"/>
</source>
|