columnType = 'VARCHAR('.self::MAX_LEN.') NULL'; } /** * @param Request $request * @param Visitor $visitor * @param Action|null $action * @return mixed */ public function onNewVisit(Request $request, Visitor $visitor, $action) { $information = $this->getReferrerInformationFromRequest($request, $visitor); return $this->trimUrl($information['referer_url']); } private function trimUrl($url) { if (!empty($url) && is_string($url) && mb_strlen($url) > self::MAX_LEN) { return mb_substr($url, 0, self::MAX_LEN); } return $url; } public function onExistingVisit(Request $request, Visitor $visitor, $action) { $information = $this->getReferrerInformationFromRequest($request, $visitor); if ($this->isCurrentReferrerDirectEntry($visitor) && $information['referer_type'] != Common::REFERRER_TYPE_DIRECT_ENTRY ) { return $this->trimUrl($information['referer_url']); } return false; } }