CRM-19187 Add link to public mailing
authoreileenmcnaugton <eileen@fuzion.co.nz>
Sat, 6 Aug 2016 06:33:32 +0000 (18:33 +1200)
committereileenmcnaugton <eileen@fuzion.co.nz>
Sat, 6 Aug 2016 08:05:00 +0000 (20:05 +1200)
Links are now on the Report page & the browse link drop-down.

They only show if the visibility is Public

CRM/Core/Action.php
CRM/Mailing/BAO/Mailing.php
CRM/Mailing/Page/Report.php
CRM/Mailing/Page/View.php
CRM/Mailing/Selector/Browse.php
templates/CRM/Mailing/Page/Report.tpl

index 6deb2799b284930e4e04c14ea6420012fad6dd73..3ef5dc89bf8c75a28966ce1188a255395eb1404d 100644 (file)
@@ -210,7 +210,6 @@ class CRM_Core_Action {
     $objectName = NULL,
     $objectId = NULL
   ) {
-    $config = CRM_Core_Config::singleton();
     if (empty($links)) {
       return NULL;
     }
index 08b66195444c30686356e71d54c4ce6a3f58007c..0265444b1b80417275e9032ac2a150b24d50908c 100644 (file)
@@ -3183,4 +3183,18 @@ AND        m.id = %1
     return array_combine($tables, $tables);
   }
 
+  /**
+   * Get the public view url.
+   *
+   * @param int $id
+   * @param bool $absolute
+   *
+   * @return string
+   */
+  public static function getPublicViewUrl($id, $absolute = TRUE) {
+    if ((civicrm_api3('Mailing', 'getvalue', array('id' => $id, 'return' => 'visibility'))) === 'Public Pages') {
+      return CRM_Utils_System::url('civicrm/mailing/view', array('id' => $id), $absolute, NULL, TRUE, TRUE);
+    }
+  }
+
 }
index 5b467a9e37ac570f1c9a31454d6e755cdd3b7798..d5966d34cb83e9f6bf2a3157abdb817499fdda9d 100644 (file)
@@ -48,6 +48,8 @@ class CRM_Mailing_Page_Report extends CRM_Core_Page_Basic {
   }
 
   /**
+   * An array of action links.
+   *
    * @return null
    */
   public function &links() {
@@ -139,6 +141,7 @@ class CRM_Mailing_Page_Report extends CRM_Core_Page_Basic {
     CRM_Utils_System::setTitle(ts('CiviMail Report: %1',
       array(1 => $report['mailing']['name'])
     ));
+    $this->assign('public_url', CRM_Mailing_BAO_Mailing::getPublicViewUrl($this->_mailing_id));
 
     return CRM_Core_Page::run();
   }
index 28eee6a5197a56dd1b57f3550ae378deb7acf505..84805f2f57a1e4d1472941c1e14adc9efa17c050 100644 (file)
@@ -76,6 +76,8 @@ class CRM_Mailing_Page_View extends CRM_Core_Page {
    * @param int $contactID
    * @param bool $print
    * @param bool $allowID
+   *
+   * @return null|string
    */
   public function run($id = NULL, $contactID = NULL, $print = TRUE, $allowID = FALSE) {
     if (is_numeric($id)) {
@@ -94,8 +96,7 @@ class CRM_Mailing_Page_View extends CRM_Core_Page {
       $this->_contactID = $contactID;
     }
     else {
-      $session = CRM_Core_Session::singleton();
-      $this->_contactID = $session->get('userID');
+      $this->_contactID = CRM_Core_Session::singleton()->getLoggedInContactID();
     }
 
     // mailing key check
index 9ede064a7566dc701df345d05fb1eb09a91ef9bf..a8658a02169707c17fac5ef5b1d7a38c253a9831 100644 (file)
@@ -393,8 +393,19 @@ LEFT JOIN  civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul
         }
         // get status strings as per locale settings CRM-4411.
         $rows[$key]['status'] = CRM_Mailing_BAO_MailingJob::status($row['status']);
+        $validLinks = $actionLinks;
+        if (($mailingUrl = CRM_Mailing_BAO_Mailing::getPublicViewUrl($row['id'])) != FALSE) {
+          $validLinks[] = array(
+            'name' => ts('Public View'),
+            'url' => 'civicrm/mailing/view',
+            'qs' => 'id=%%mid%%&reset=1',
+            'title' => ts('Public View'),
+            'fe' => TRUE,
+          );
+        }
 
-        $rows[$key]['action'] = CRM_Core_Action::formLink($actionLinks,
+        $rows[$key]['action'] = CRM_Core_Action::formLink(
+          $validLinks,
           $actionMask,
           array('mid' => $row['id']),
           "more",
index ae8a5f786db7f27f47e3de7fe94f283ac04148e4..0a30dbe45a3b63806cddb3695d682bab3f5ecfc6 100644 (file)
 
 <tr><td class="label">{ts}Open tracking{/ts}</td><td>{if $report.mailing.open_tracking}{ts}On{/ts}{else}{ts}Off{/ts}{/if}</td></tr>
 <tr><td class="label">{ts}URL Click-through tracking{/ts}</td><td>{if $report.mailing.url_tracking}{ts}On{/ts}{else}{ts}Off{/ts}{/if}</td></tr>
-
+{if $public_url}<td class="label">{ts}Public url{/ts}</td><td><a href="{$public_url}"> {$public_url}</a></td></tr>{/if}
 {if $report.mailing.campaign}
 <tr><td class="label">{ts}Campaign{/ts}</td><td>{$report.mailing.campaign}</td></tr>
 {/if}