/**
     * @param eZContentObjectTreeNode $node
     * @return string
     */
    public function getNodeUrl( &$node = null )
    {
        $merckIni = ExternalLinkHandlerBase::iniMerck();
        $user = MMUsers::getCurrentUserObject();

        if ( !$user )
        {
            self::redirectToErrorPage();
        }

        $esbParams = $merckIni->variable( 'EsbSettings', 'AvailableParams' );
        if ( !in_array( 'Validation_status', $esbParams ) )
        {
            $esbParams[] = 'Validation_status';
        }

        // esb part of url generating
        $parameters = array(
            'Data' => array(
                'Username' => $user->attribute( 'uuid' ),
                'Params' => $esbParams
            ),
            'cr' => $user->attribute( 'country' )
        );
        $esbResponse = WSHelper::call( 'read', $parameters );
        if ( !isset( $esbResponse['Data']['Params']['Email_address'] ) )
        {
            self::redirectToErrorPage();
        }

        $validStatuses = array(
            'VP',
            '30'
        );
        $isProperStatus = isset( $esbResponse['Data']['Params']['Validation_status'] ) && in_array( $esbResponse['Data']['Params']['Validation_status'], $validStatuses );

        // test if proper ESB response - mainly status = Success
        if ( !$isProperStatus )
        {
            self::redirectToErrorPage();
        }
        $soapUser = $esbResponse['Data']['Params']['Email_address'];
        $soapPassword = $merckIni->variable( 'MdConsultSettings', 'SoapPassword' );
        $applicationId = $merckIni->variable( 'MdConsultSettings', 'ApplicationId' );
        $apiKey = $merckIni->variable( 'MdConsultSettings', 'ApiKey' );
        $headerNamespace = $merckIni->variable( 'MdConsultSettings', 'HeaderNamespace' );
        //$soapUrl = $merckIni->variable( 'MdConsultSettings', 'SoapUrl' );
        // @dirty fix => we use a local version of the WSDL because of some type declaration duplicates
        $soapUrl = __DIR__.'/externallinkhandlerbrmdconsult.xml';
        
        $headerbody = array(
            'UsernameToken' => array(
                'Username' => $apiKey,
                'Password' => $soapPassword
            )
        );

        // soap part of url generating
        $soap = new SoapClient( $soapUrl );

        $header = new SOAPHeader( $headerNamespace, 'Security', $headerbody, false );
        $soap->__setSoapHeaders( $header );

        $params = array(
            array(
                'SiteID' => 'MSDBRZL',
                'UserName' => $soapUser,
                'ApplicationId' => $applicationId
            )
        );

        $user = '';
        $password = '';
        try
        {
            $result = $soap->__soapCall( 'GetThirdPartyCredencials', $params );

            if ( isset( $result->GetThirdPartyCredencialsResult ) && isset( $result->GetThirdPartyCredencialsResult->LOVValue ) )
            {
                $credentials = $result->GetThirdPartyCredencialsResult->LOVValue;

                if ( isset( $credentials->lovIDField ) )
                {
                    $user = $credentials->lovIDField;
                }
                else
                {
                    self::redirectToErrorPage();
                }
                if ( isset( $credentials->valueField ) )
                {
                    $password = $credentials->valueField;
                }
                else
                {
                    self::redirectToErrorPage();
                }
            }
            else
            {
                self::redirectToErrorPage();
            }
        }
        catch ( SoapFault $f )
        {
            self::redirectToErrorPage();
        }

        $url = $merckIni->variable( 'MdConsultSettings', 'MdUrl' );

        $searches = array(
            '<$md_user>',
            '<$md_password>'
        );
        $replacements = array(
            $user,
            $password
        );

        $url = str_replace( $searches, $replacements, $url );
        return $url;
    }
    /**
     * @param string $username
     * @param ESBResult $esbResult
     * @return array
     */
    public static function readCall( $username, $esbResult )
    {
        $countryOfRegistration = self::getCountryOfRegistration();
        $params = eZINI::instance('merck.ini')->variable( 'EsbSettings', 'AvailableParams' );

        if ( !isset( $params ) || !is_array( $params ) )
        {
            MMUserLogin::logError( $username, null, $esbResult->toTicket(), 'Missing esb login parameters. Check merck.ini configuration.' );
            return;
        }

        if( !in_array( 'Registration_date', $params ) && SolrSafeOperatorHelper::featureIsActive( 'GoogleAnalytics' ) )
        {
            $params[] = 'Registration_date';
        }
        
        // List of needed profile information
        $readParameters = array(
            'Data' => array(
                'Username' => $username,
                'Params' => $params
            ),
            'cr' => $countryOfRegistration
        );

        // Fires a request to get user profile data
        return WSHelper::call( "read", $readParameters );
    }