/** * @param eZContentObjectTreeNode $node * @return array */ public function getGTMTags($node) { $gtmVariables = parent::getGTMTags($node); if (!$this->node) { return $gtmVariables; } /* @type $dataMap eZContentObjectAttribute[] */ $dataMap = $node->dataMap(); $content = $dataMap['serialized_taxonomies']->content(); foreach( $this->applicationObject()->getContentServiceConfiguration()->getFacetList() as $key => $facet ) { $taxonomyCategoryIdentifier = $facet->getTaxonomyCategoryIdentifier(); $res = $content[$taxonomyCategoryIdentifier]; if( $taxonomyCategoryIdentifier == 'duration' && $this->applicationObject()->identifier == 'e-learning' ) { $duration = $dataMap['duration']->content(); if( $duration ) $gtmVariables = array_merge( $gtmVariables, array( 'contentMetadata' . ($key + 1) => gmdate( 'i:s', $duration ) ) ); continue; } if( !is_null( $res ) ) { if( $this->applicationObject()->identifier == 'e-learning' ) { if( count( $res ) == 1 ) $gtmVariables = array_merge( $gtmVariables, array( 'contentMetadata' . ($key + 1) => SolrSafeOperatorHelper::getTaxoTranslation( $taxonomyCategoryIdentifier, $res[0] ) ) ); } else { $contentMetaValue = count( $res ) > 0 ? implode( '-', $res ) : $res; $gtmVariables = array_merge( $gtmVariables, array( 'contentMetadata' . ($key + 1) => $contentMetaValue ) ); } } } return $gtmVariables; }
/** * @param eZTemplate $tpl * @param string $operatorName * @param array $operatorParameters * @param string $rootNamespace * @param string $currentNamespace * @param mixed $operatorValue * @param array $namedParameters */ function modify($tpl, $operatorName, $operatorParameters, $rootNamespace, $currentNamespace, &$operatorValue, $namedParameters) { switch ($operatorName) { /*******************************************************************************/ /* Solr Safe Operators */ /*******************************************************************************/ case 'ezfind_raw_fetch': $operatorValue = SolrSafeOperatorHelper::ezfindRawFetch( $namedParameters['params'], $namedParameters['nodeIdsOnly'] ); break; case 'getUrlSolr': $operatorValue = SolrSafeOperatorHelper::getUrlSolr($namedParameters['solrdata']); break; case 'getDatesPDFavailable': $operatorValue = SolrSafeOperatorHelper::getDatesPDFavailable( $namedParameters['onlineDate'], $namedParameters['daysAvailable'] ); break; case 'getViewCounter': $operatorValue = SolrSafeOperatorHelper::getViewCounter( $namedParameters['remoteId'], $namedParameters['clusterIdentifier'] ); break; case 'getRatings': $operatorValue = SolrSafeOperatorHelper::getRatings( $namedParameters['remoteId'], $namedParameters['clusterIdentifier'] ); break; case 'getJavascriptFiles': $operatorValue = SolrSafeOperatorHelper::getJavascriptFiles( $namedParameters['application_name'], $namedParameters['type'], $namedParameters['isConsult'] ); break; case 'getLessFiles': $operatorValue = SolrSafeOperatorHelper::getLessFiles( $namedParameters['application_name'], $namedParameters['application'], $namedParameters['isConsult'] ); break; case 'getInfosApp': $operatorValue = SolrSafeOperatorHelper::getInfosApp($namedParameters['application_identifier']); break; case 'getHostNameFromURL': $operatorValue = SolrSafeOperatorHelper::getHostNameFromURL($namedParameters['url']); break; case 'context': $operatorValue = SolrSafeOperatorHelper::context($namedParameters['url']); break; case 'getMetas': $operatorValue = SolrSafeOperatorHelper::getMetas($namedParameters['applicationName']); break; case 'getSolrData': $operatorValue = SolrSafeOperatorHelper::getSolrData( $namedParameters['remoteId'], $namedParameters['clusterIdentifier'], $namedParameters['extended_fields'] ); break; case 'getCustomParameter': $operatorValue = SolrSafeOperatorHelper::getCustomParameter( $namedParameters['application'], $namedParameters['parameter_name'], $namedParameters['context'] ); break; case 'getAppIdentifierForIcon': $operatorValue = SolrSafeOperatorHelper::getAppIdentifierForIcon($namedParameters['application']); break; case 'getApplicationUrl': $operatorValue = SolrSafeOperatorHelper::getApplicationUrl($namedParameters['identifier']); break; case 'mappingNameSpe': $operatorValue = SolrSafeOperatorHelper::mappingNameSpe($namedParameters['specialtie']); break; case 'getMappingSpe': $operatorValue = SolrSafeOperatorHelper::getMappingSpe(); break; case 'getCustomerTypes': $operatorValue = SolrSafeOperatorHelper::getCustomerTypes(); break; case 'getMainSpecialities': $operatorValue = SolrSafeOperatorHelper::getMainSpecialities(); break; case 'getUserSpecialities': $operatorValue = SolrSafeOperatorHelper::getUserSpecialities(); break; case 'noSeoLink': $operatorValue = SolrSafeOperatorHelper::noSeoLink($operatorValue); break; case 'getTaxoTranslation': $operatorValue = SolrSafeOperatorHelper::getTaxoTranslation( $namedParameters['identifier'], $namedParameters['remote_id'] ); break; case 'cluster_ini': $operatorValue = SolrSafeOperatorHelper::clusterIni( $namedParameters['section'], $namedParameters['variable'], $namedParameters['ini_file'] ); break; case 'truncateContentRelated': $operatorValue = SolrSafeOperatorHelper::truncateContentRelated($namedParameters['text']); break; case 'myCertificatesEnabled': $operatorValue = SolrSafeOperatorHelper::featureIsActive("MyCertificates"); break; case 'appHasSpeciality': $operatorValue = SolrSafeOperatorHelper::appHasSpeciality(); break; case 'setClusterIdentifier': // No $operatorValue modification is normal SolrSafeOperatorHelper::setClusterIdentifier($namedParameters['clusterIdentifier']); break; case 'featureIsActive': $operatorValue = SolrSafeOperatorHelper::featureIsActive($namedParameters['featureCode']); break; case 'feature': $operatorValue = SolrSafeOperatorHelper::feature( $namedParameters['featureCode'], $namedParameters['value'] ); break; case 'alphabet': $operatorValue = SolrSafeOperatorHelper::alphabet(); break; case 'generateIso6391': $operatorValue = SolrSafeOperatorHelper::generateIso6391($namedParameters['regionalSettingsLocale']); break; case 'staticfile': $operatorValue = SolrSafeOperatorHelper::staticFile( $operatorValue, $namedParameters['quote'], $namedParameters['skip_slash'] ); break; case 'showHelpDeskPhoneInHeader': $operatorValue = !(SolrSafeOperatorHelper::feature('HelpDeskSettings', 'HidePhoneNumberInHeader')); break; case 'showHelpDeskPhoneOnPage': $operatorValue = !(SolrSafeOperatorHelper::feature('HelpDeskSettings', 'HidePhoneNumberOnPage')); break; case 'getFooterHTML': $operatorValue = SolrSafeOperatorHelper::getFooterHTML($namedParameters['footerBlockIdentifier']); break; case 'getLocaleBySystemCode': $operatorValue = SolrSafeOperatorHelper::getLocaleBySystemCode($namedParameters['systemCode']); break; case 'buildExitUrl': $operatorValue = SolrSafeOperatorHelper::buildExitUrl($namedParameters['url']); break; case 'getUserToken': $operatorValue = SolrSafeOperatorHelper::getUserToken(); break; case 'clusterHasFeaturedChannel': $operatorValue = SolrSafeOperatorHelper::clusterHasFeaturedChannel(); break; case 'aliasDimensions': $operatorValue = SolrSafeOperatorHelper::aliasDimensions($namedParameters['alias']); break; case 'hasImageArticleFromSolr': $operatorValue = SolrSafeOperatorHelper::hasImageArticleFromSolr( $namedParameters['solrdata'], $namedParameters['media_case'] ); break; case 'getImageArticleUrl': $operatorValue = SolrSafeOperatorHelper::getImageArticleUrl( $namedParameters['media_case'], $namedParameters['object_id'], $namedParameters['language'], $namedParameters['alias'] ); break; case 'getImageArticleUrlFromSolr': $operatorValue = SolrSafeOperatorHelper::getImageArticleUrl( $namedParameters['media_case'], $namedParameters['solrdata']['object_id'], $namedParameters['solrdata']['language'], $namedParameters['alias'] ); break; case 'isHidden': $operatorValue = SolrSafeOperatorHelper::isHidden($namedParameters['contentobject_id']); break; case 'isObjectGloballyVisible': $operatorValue = SolrSafeOperatorHelper::isObjectGloballyVisible($namedParameters['contentobject_id']); break; case 'getClusterVisibilities': $operatorValue = SolrSafeOperatorHelper::getClusterVisibilities($namedParameters['contentobject_id']); break; case 'parseTranslationTagParams': $operatorValue = SolrSafeOperatorHelper::parseTranslationTagParams($namedParameters['params']); break; case 'isSendToColleagueDisabled': $operatorValue = SolrSafeOperatorHelper::featureIsActive('DisableSendToColleague') ? SolrSafeOperatorHelper::feature('DisableSendToColleague', 'IsDisabled') : false; break; case 'getListOfValueOptions': $operatorValue = SolrSafeOperatorHelper::getListOfValueOptions( $namedParameters['business_name'], $namedParameters['filter'] ); break; case 'getListOfValues': $operatorValue = SolrSafeOperatorHelper::getListOfValues( $namedParameters['business_name'], $namedParameters['filter'] ); break; case 'solrDateToStamp': $operatorValue = strtotime($namedParameters['date']) > 3600*24*2 ? SolrTool::getTimestampFromSolr($namedParameters['date']) : 0; break; case 'getSeoParam': $operatorValue = SolrSafeOperatorHelper::getSeoParam($namedParameters['applicationLocalized'], $namedParameters['name'], $namedParameters['params']); break; case 'applicationHasSeoSpeciality': $operatorValue = SolrSafeOperatorHelper::applicationHasSeoSpeciality($namedParameters['applicationIdentifier']); break; case 'seoIsEnabled': $operatorValue = SolrSafeOperatorHelper::seoIsEnabled($namedParameters['applicationIdentifier']); break; case 'includeEsi': $operatorValue = SolrSafeOperatorHelper::includeEsi( $namedParameters['src'], $namedParameters['debug'] ); break; case 'imageDecHash': $operatorValue = SolrSafeOperatorHelper::imageDecHash( $operatorValue ); break; case 'bannerDecHash': $operatorValue = SolrSafeOperatorHelper::bannerDecHash( $operatorValue ); break; case 'getAndStoreGPNotebookHS': $operatorValue = self::getAndStoreGPNotebookHS( ); break; case 'isPromoTaxonomyVisible': $operatorValue = SolrSafeOperatorHelper::isPromoTaxonomyVisible( $namedParameters['values'] ); break; case 'translateTaxonomy': $operatorValue = SolrSafeOperatorHelper::translateTaxonomy( $namedParameters['code'] ); break; case 'getPublisherArticleUrl': $operatorValue = SolrSafeOperatorHelper::getPublisherArticleUrl( $namedParameters['publisher'], $namedParameters['articleId'] ); break; } }
/** * @return array * @throws Exception */ public static function login() { $db = MMDB::instance(); $corQuery = "SELECT r.code FROM bo_reference r JOIN bo_cluster_has_reference chr ON chr.cluster_identifier = '%s' WHERE r.type = 'country' AND r.id = chr.reference_id"; $cor = $db->arrayQuery( sprintf( $corQuery, ClusterTool::clusterIdentifier() ) ); if( count( $cor ) > 0 ) { $countryOfRegistration = $cor[0]['code']; } else { $countryOfRegistration = eZINI::instance('site.ini')->variable('RegionalSettings', 'CountryOfRegistration'); } $loginParameters = array( 'data' => array( 'identifier' => $_POST['username'], 'password' => $_POST['password'], 'rememberme' => 'on', 'countryOfRegistration' => $countryOfRegistration ), ); // Check login / password from ESB $esbResult = new ESBResult(); $isPopulated = ServiceLoginUUMP::populateESBResult($esbResult, UUMPWSHelper::call("login", $loginParameters)); if ( !$isPopulated ) { throw new Exception('ESB not available', 21); } elseif ( $esbResult->errorCode != 0 ) { throw new Exception($esbResult->msg, intval(strval(22) . strval($esbResult->errorCode))); } elseif ( !$esbResult->login ) { throw new Exception($esbResult->msg, 23); } if ( !$isPopulated ) { // error log caught on WS stack throw new Exception($esbResult->msg, $esbResult->errorCode); } // Log user on ESB $rememberMe = ( isset($_POST['rememberme']) && $_POST['rememberme'] == 'on' ); $loginResult = self::esbLogin($_POST['username'], $esbResult, $rememberMe, false); $registrationDate = $loginResult['params']['Registration_date']; $registrationTimestamp = strtotime($registrationDate); // Create response $out = array( 'clusterIdentifier' => ClusterTool::clusterIdentifier(), 'cookies' => array() ); $user = MMUsers::fetchByIdAndCountry($loginResult['params']['Username'], $countryOfRegistration); $loginResult['params']['mmSettings'] = $user->getMMSettings(); $loginResult['params']['unorderedAppList'] = $user->getApplicationList(); $loginResult['params']['alterboxMsgReset'] = $user->hasPreference('alterboxMsgReset') ? $user->getPreferences('alterboxMsgReset') : true; self::backendLog($loginResult['params']); $cookies = self::cookieHeaderParse(headers_list()); foreach ( $cookies as $cookie ) { $value = $cookie['value']; $out['cookies'][$value['key']] = $value['value']; } $out['profil'] = array( 'email' => $loginResult['params']['Email_address'], 'firstname' => $loginResult['params']['Firstname'], 'lastname' => $loginResult['params']['Lastname'], 'userSpeciality' => $loginResult['params']['User_specialty'], 'mainSpeciality' => $loginResult['params']['User_specialty'], 'customerType' => $loginResult['params']['Customer_type'], 'city' => $loginResult['params']['City'], 'registrationCountry' => $loginResult['params']['Country_of_registration'], 'language' => $loginResult['params']['Language'], 'postalCode' => $loginResult['params']['Postal_Code'], 'username' => $loginResult['params']['Username'], 'specialities' => $user->getSpecialities(), 'visitorSpecialtyLabel' => SolrSafeOperatorHelper::getTaxoTranslation( 'user_specialty', $loginResult['params']['User_specialty'] ), 'visitorTypeLabel' => SolrSafeOperatorHelper::getTaxoTranslation( 'customer_type', $loginResult['params']['Customer_type'] ), 'visitorValidated' => $esbResult->validated, 'registrationYear' => date('Y', $registrationTimestamp), 'registrationMonth' => date('m', $registrationTimestamp), 'registrationDate' => date('Ymd', strtotime($registrationDate)), 'registrationDSR' => ceil((time() - $registrationTimestamp)/3600/24), ); $out['common_javascript'] = self::getJavascript('home-page', 'common'); $out['session_lifetime'] = intval(eZINI::instance('merck.ini')->variable('WSMobile', 'SessionLifetime')); $applicationList = self::applicationList(); return array_merge($out, $applicationList); }
/** * * @return eZTemplate */ public function tpl() { $tpl = parent::tpl(); // test if user is logged $userId = MMUsers::getCurrentUserId(); $currentUser = MMUsers::fetchById( $userId ); $isLogged = !empty($currentUser); $salt = eZINI::instance( 'merck.ini' )->variable( 'TicketLogin', 'DESKey' ); $hash = sha1($this->getApplicationId() . $salt); $tpl->setVariable('application_id', $this->getApplicationId()); $tpl->setVariable('is_logged' , $isLogged); $tpl->setVariable('hash' , $hash); // applications for anonymous users $applications_anonymous = array(); if( !$isLogged ) { $ids = CountryAppsBar::fetchAppsBarApplicationIds(); // convert ids in string $applications_anonymous = explode(',', implode(',', $ids)); } $tpl->setVariable('applications_anonymous', $applications_anonymous); if( $isLogged && SolrSafeOperatorHelper::featureIsActive( 'GoogleAnalytics' ) ) { $gtmVariables = array( 'visitorSpecialtyLabel' => SolrSafeOperatorHelper::getTaxoTranslation( 'user_specialty', $this->user()->userSpecialityId() ), 'visitorTypeLabel' => SolrSafeOperatorHelper::getTaxoTranslation( 'customer_type', $this->user()->customerTypeId() ) ); $gtmToPush = isset( $this->_result['gtm_variables'] ) ? array_merge( $this->_result['gtm_variables'], $gtmVariables ) : $gtmVariables; $tpl->setVariable( 'gtm_visitorvariables', $gtmToPush ); } return $tpl; }