Piwik\Tracker\Request::setMetadata PHP Method

setMetadata() public method

Set a request metadata value.
public setMetadata ( string $pluginName, string $key, mixed $value )
$pluginName string eg, `'Actions'`, `'Goals'`, `'YourPlugin'`
$key string
$value mixed
    public function setMetadata($pluginName, $key, $value)
    {
        $this->requestMetadata[$pluginName][$key] = $value;
    }

Usage Example

 public function afterRequestProcessed(VisitProperties $visitProperties, Request $request)
 {
     $goalsConverted = $request->getMetadata('Goals', 'goalsConverted');
     /** @var Action $action */
     $action = $request->getMetadata('Actions', 'action');
     // if the visit hasn't already been converted another way (ie, manual goal conversion or ecommerce conversion,
     // try to convert based on the action)
     if (empty($goalsConverted) && $action) {
         $goalsConverted = $this->goalManager->detectGoalsMatchingUrl($request->getIdSite(), $action);
         $existingGoalsConverted = $request->getMetadata('Goals', 'goalsConverted') ?: array();
         $request->setMetadata('Goals', 'goalsConverted', array_merge($existingGoalsConverted, $goalsConverted));
         if (!empty($goalsConverted)) {
             $request->setMetadata('Goals', 'visitIsConverted', true);
         }
     }
     // There is an edge case when:
     // - two manual goal conversions happen in the same second
     // - which result in handleExistingVisit throwing the exception
     //   because the UPDATE didn't affect any rows (one row was found, but not updated since no field changed)
     // - the exception is caught here and will result in a new visit incorrectly
     // In this case, we cancel the current conversion to be recorded:
     $isManualGoalConversion = $this->isManualGoalConversion($request);
     $requestIsEcommerce = $request->getMetadata('Goals', 'isRequestEcommerce');
     $visitorNotFoundInDb = $request->getMetadata('CoreHome', 'visitorNotFoundInDb');
     if ($visitorNotFoundInDb && ($isManualGoalConversion || $requestIsEcommerce)) {
         $request->setMetadata('Goals', 'goalsConverted', array());
         $request->setMetadata('Goals', 'visitIsConverted', false);
     }
 }
All Usage Examples Of Piwik\Tracker\Request::setMetadata