You are here

public static function AcquiaLiftAgent::convertContextToFeatureString in Acquia Lift Connector 7

Implements PersonalizeAgentInterface::convertContextToFeatureString().

This is essentially a PHP version of the js in the convertContextToFeatureString function in acquia_lift.js

1 call to AcquiaLiftAgent::convertContextToFeatureString()
AcquiaLiftWebTestFundamentals::testConvertContextToFeatureString in tests/acquia_lift.test
Tests the logic in AcquiaLiftAgent's implementation of convertContextToFeatureString().

File

plugins/agent_types/AcquiaLiftAgent.inc, line 554
Provides an agent type for Acquia Lift

Class

AcquiaLiftAgent

Code

public static function convertContextToFeatureString($name, $value, $is_mutex = FALSE) {
  $separator = $is_mutex ? AcquiaLiftAPI::FEATURE_STRING_SEPARATOR_MUTEX : AcquiaLiftAPI::FEATURE_STRING_SEPARATOR_NONMUTEX;
  $prefix_max_length = floor((AcquiaLiftAPI::FEATURE_STRING_MAX_LENGTH - strlen($separator)) / 2);
  $prefix = AcquiaLiftAPI::cleanFeatureString($name);
  $value = AcquiaLiftAPI::cleanFeatureString($value);

  // Make a string of the visitor context item in the format Acquia Lift can
  // consume.
  $feature_string = $prefix . $separator . $value;
  while (strlen($feature_string) > AcquiaLiftAPI::FEATURE_STRING_MAX_LENGTH) {

    // Acquia Lift has a hard character limit for feature strings.
    if (strlen($prefix) > $prefix_max_length) {

      // Start by truncating the prefix down to half the max length.
      $prefix = substr($prefix, 0, $prefix_max_length);
      $feature_string = $prefix . $separator . $value;
    }
    else {

      // Otherwise just truncate the whole thing down to the max length.
      $feature_string = substr($feature_string, 0, AcquiaLiftAPI::FEATURE_STRING_MAX_LENGTH);
    }
  }
  return $feature_string;
}