Merge branch 4.5 into 4.6
[civicrm-core.git] / CRM / Mailing / BAO / TrackableURL.php
index f00780e1e83b88fc2de77c314798543f142eba98..a2e110669dbef7fda041505039b1b74f0c170221 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.5                                                |
+ | CiviCRM version 4.6                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
@@ -23,7 +23,7 @@
  | GNU Affero General Public License or the licensing of CiviCRM,     |
  | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
  +--------------------------------------------------------------------+
-*/
+ */
 
 /**
  *
@@ -35,9 +35,9 @@
 class CRM_Mailing_BAO_TrackableURL extends CRM_Mailing_DAO_TrackableURL {
 
   /**
-   * Class constructor
+   * Class constructor.
    */
-  function __construct() {
+  public function __construct() {
     parent::__construct();
   }
 
@@ -45,12 +45,15 @@ class CRM_Mailing_BAO_TrackableURL extends CRM_Mailing_DAO_TrackableURL {
    * Given a url, mailing id and queue event id, find or construct a
    * trackable url and redirect url.
    *
-   * @param string $url       The target url to track
-   * @param int $mailing_id   The id of the mailing
-   * @param int $queue_id     The queue event id (contact clicking through)
+   * @param string $url
+   *   The target url to track.
+   * @param int $mailing_id
+   *   The id of the mailing.
+   * @param int $queue_id
+   *   The queue event id (contact clicking through).
    *
-   * @return string $redirect The redirect/tracking url
-   * @static
+   * @return string
+   *   The redirect/tracking url
    */
   public static function getTrackerURL($url, $mailing_id, $queue_id) {
 
@@ -82,7 +85,7 @@ class CRM_Mailing_BAO_TrackableURL extends CRM_Mailing_DAO_TrackableURL {
 
       $tracker->url = $url;
       $tracker->mailing_id = $mailing_id;
-      if(strlen($tracker->url) > 254) {
+      if (strlen($tracker->url) > 254) {
         return $url;
       }
       if (!$tracker->find(TRUE)) {
@@ -104,6 +107,24 @@ class CRM_Mailing_BAO_TrackableURL extends CRM_Mailing_DAO_TrackableURL {
     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;
+  }
+
   /**
    * @param $msg
    * @param int $mailing_id
@@ -115,11 +136,11 @@ class CRM_Mailing_BAO_TrackableURL extends CRM_Mailing_DAO_TrackableURL {
       return;
     }
 
-    $protos  = '(https?|ftp)';
+    $protos = '(https?|ftp)';
     $letters = '\w';
-    $gunk    = '/#~:.?+=&%@!\-';
-    $punc    = '.:?\-';
-    $any     = "{$letters}{$gunk}{$punc}";
+    $gunk = '/#~:.?+=&%@!\-';
+    $punc = '.:?\-';
+    $any = "{$letters}{$gunk}{$punc}";
     if ($onlyHrefs) {
       $pattern = "{\\b(href=([\"'])?($protos:[$any]+?(?=[$punc]*[^$any]|$))([\"'])?)}im";
     }
@@ -132,5 +153,5 @@ class CRM_Mailing_BAO_TrackableURL extends CRM_Mailing_DAO_TrackableURL {
 
     $msg = preg_replace($pattern, $replacement, $msg);
   }
-}
 
+}