url = $url; $tracker->mailing_id = $mailing_id; if (!$tracker->find(TRUE)) { $tracker->save(); } $id = $tracker->id; $redirect = CRM_Utils_System::externUrl('extern/url', "u=$id"); $urlCache[$mailing_id . $url] = $redirect; } // This looks silly - calling the hook twice. This smells like an accident. Restoring old cache-based lookup. // $returnUrl = CRM_Utils_System::externUrl('extern/url', "u=$id&qid=$queue_id"); $returnUrl = "{$urlCache[$mailing_id . $url]}&qid={$queue_id}"; if ($hrefExists) { $returnUrl = "href='{$returnUrl}' rel='nofollow'"; } return $returnUrl; } /** * @param $url * @param $mailing_id * * @return int * Url id of the given url and mail */ public static function getTrackerURLId($url, $mailing_id) { $tracker = new CRM_Mailing_BAO_TrackableURL(); $tracker->url = $url; $tracker->mailing_id = $mailing_id; if ($tracker->find(TRUE)) { return $tracker->id; } return NULL; } }