/** * @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 ); }