/**
  * Track a click-through and return the URL to redirect.  If the numbers
  * don't match up, return the base url.
  *
  * @param int $queue_id
  *   The Queue Event ID of the clicker.
  * @param int $url_id
  *   The ID of the trackable URL.
  *
  * @return string
  *   The redirection url, or base url on failure.
  */
 public static function track($queue_id, $url_id)
 {
     $search = new CRM_Mailing_BAO_TrackableURL();
     /* To find the url, we also join on the queue and job tables.  This
      * prevents foreign key violations. */
     $job = CRM_Mailing_BAO_MailingJob::getTableName();
     $eq = CRM_Mailing_Event_BAO_Queue::getTableName();
     $turl = CRM_Mailing_BAO_TrackableURL::getTableName();
     if (!$queue_id) {
         $search->query("SELECT {$turl}.url as url from {$turl}\n                    WHERE {$turl}.id = " . CRM_Utils_Type::escape($url_id, 'Integer'));
         if (!$search->fetch()) {
             return CRM_Utils_System::baseURL();
         }
         return $search->url;
     }
     $search->query("SELECT {$turl}.url as url from {$turl}\n                    INNER JOIN {$job} ON {$turl}.mailing_id = {$job}.mailing_id\n                    INNER JOIN {$eq} ON {$job}.id = {$eq}.job_id\n                    WHERE {$eq}.id = " . CRM_Utils_Type::escape($queue_id, 'Integer') . " AND {$turl}.id = " . CRM_Utils_Type::escape($url_id, 'Integer'));
     if (!$search->fetch()) {
         /* Whoops, error, don't track it.  Return the base url. */
         return CRM_Utils_System::baseURL();
     }
     $open = new CRM_Mailing_Event_BAO_TrackableURLOpen();
     $open->event_queue_id = $queue_id;
     $open->trackable_url_id = $url_id;
     $open->time_stamp = date('YmdHis');
     $open->save();
     return $search->url;
 }
 /**
  * Track a click-through and return the URL to redirect.
  *
  * If the numbers don't match up, return the base url.
  *
  * @param int $queue_id
  *   The Queue Event ID of the clicker.
  * @param int $url_id
  *   The ID of the trackable URL.
  *
  * @return string
  *   The redirection url, or base url on failure.
  */
 public static function track($queue_id, $url_id)
 {
     // To find the url, we also join on the queue and job tables.  This
     // prevents foreign key violations.
     $job = CRM_Utils_Type::escape(CRM_Mailing_BAO_MailingJob::getTableName(), 'MysqlColumnNameOrAlias');
     $eq = CRM_Utils_Type::escape(CRM_Mailing_Event_BAO_Queue::getTableName(), 'MysqlColumnNameOrAlias');
     $turl = CRM_Utils_Type::escape(CRM_Mailing_BAO_TrackableURL::getTableName(), 'MysqlColumnNameOrAlias');
     if (!$queue_id) {
         $search = CRM_Core_DAO::executeQuery("SELECT url\n           FROM {$turl}\n          WHERE {$turl}.id = %1", array(1 => array($url_id, 'Integer')));
         if (!$search->fetch()) {
             return CRM_Utils_System::baseURL();
         }
         return $search->url;
     }
     $search = CRM_Core_DAO::executeQuery("SELECT {$turl}.url as url\n         FROM {$turl}\n        INNER JOIN {$job} ON {$turl}.mailing_id = {$job}.mailing_id\n        INNER JOIN {$eq} ON {$job}.id = {$eq}.job_id\n        WHERE {$eq}.id = %1 AND {$turl}.id = %2", array(1 => array($queue_id, 'Integer'), 2 => array($url_id, 'Integer')));
     if (!$search->fetch()) {
         // Can't find either the URL or the queue. If we can find the URL then
         // return the URL without tracking.  Otherwise return the base URL.
         $search = CRM_Core_DAO::executeQuery("SELECT {$turl}.url as url\n           FROM {$turl}\n          WHERE {$turl}.id = %1", array(1 => array($url_id, 'Integer')));
         if (!$search->fetch()) {
             return CRM_Utils_System::baseURL();
         }
         return $search->url;
     }
     $open = new CRM_Mailing_Event_BAO_TrackableURLOpen();
     $open->event_queue_id = $queue_id;
     $open->trackable_url_id = $url_id;
     $open->time_stamp = date('YmdHis');
     $open->save();
     return $search->url;
 }
Example #3
0
File: Cxn.php Project: kidaa30/yes
 /**
  * Determine the current site's callback URL.
  *
  * @return string
  */
 public static function getSiteCallbackUrl()
 {
     $config = CRM_Core_Config::singleton();
     if (preg_match('/^(http|https):/', $config->resourceBase)) {
         $civiUrl = $config->resourceBase;
     } else {
         $civiUrl = rtrim(CRM_Utils_System::baseURL(), '/') . '/' . ltrim($config->resourceBase, '/');
     }
     // In practice, this may not be necessary, but we want to prevent
     // edge-cases that downgrade security-level below system policy.
     if (CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'enableSSL')) {
         $civiUrl = preg_replace('/^http:/', 'https:', $civiUrl);
     }
     return rtrim($civiUrl, '/') . '/extern/cxn.php';
 }
 function run()
 {
     // title
     CRM_Utils_System::setTitle(ts('SuperStyler'));
     // variables
     $url = CRM_Utils_System::baseURL() . 'civicrm/ctrl/superstyler';
     $this->assign('url', $url);
     // get settings
     $settings = CRM_Core_BAO_Setting::getItem('superstyler', 'settings');
     $decode = json_decode(utf8_decode($settings), true);
     // on form action
     if (isset($_REQUEST['color'])) {
         // clear
         foreach ($decode['superstyler'] as $key => $value) {
             if ($value['name'] == $_REQUEST['color']) {
                 $decode['superstyler'][$key]['active'] = 1;
             } else {
                 $decode['superstyler'][$key]['active'] = 0;
             }
         }
         // set
         $encode = json_encode($decode);
         CRM_Core_BAO_Setting::setItem($encode, 'superstyler', 'settings');
         // notice
         CRM_Core_Session::setStatus(ts('Superstyler settings changed'), ts('Saved'), 'success');
     }
     // form
     $form = "";
     $form .= "<form action=" . $url . " method='post'>";
     $form .= "<label>Select stylesheet</label>";
     $form .= "<div class='listing-box'>";
     // loop
     foreach ($decode['superstyler'] as $key => $value) {
         $v = $value['name'];
         if ($value['active'] == 1) {
             $form .= "<input type='radio' id='css_{$v}' name='color' value='{$v}' checked><label for='css_{$v}' >{$v}</label><br>";
         } else {
             $form .= "<input type='radio' id='css_{$v}' name='color' value='{$v}'><label for='css_{$v}' >{$v}</label><br>";
         }
     }
     $form .= "</div>";
     $form .= "<div class='crm-submit-buttons'><span class='crm-button'><input class='crm-form-submit default' type='submit' value='Submit'></span></div>";
     $form .= "</form>";
     // assign form
     $this->assign('content', $form);
     // render
     parent::run();
 }
Example #5
0
 /**
  * Attempt to enable the extension on the linked CiviCRM site
  *
  * @return bool TRUE on success; FALSE if there's no site or if there's an error
  */
 protected function tryEnable(InputInterface $input, OutputInterface $output, $key)
 {
     $civicrm_api3 = $this->getContainer()->get('civicrm_api3');
     if ($civicrm_api3 && $civicrm_api3->local && version_compare(\CRM_Utils_System::version(), '4.3.dev', '>=')) {
         $siteName = \CRM_Utils_System::baseURL();
         // \CRM_Core_Config::singleton()->userSystem->cmsRootPath();
         $output->writeln("<info>Refresh extension list for \"{$siteName}\"</info>");
         if (!$civicrm_api3->Extension->refresh(array('local' => TRUE, 'remote' => FALSE))) {
             $output->writeln("<error>Refresh error: " . $civicrm_api3->errorMsg() . "</error>");
             return FALSE;
         }
         if ($this->confirm($input, $output, "Enable extension ({$key}) in \"{$siteName}\"? [Y/n] ")) {
             $output->writeln("<info>Enable extension ({$key}) in \"{$siteName}\"</info>");
             if (!$civicrm_api3->Extension->install(array('key' => $key))) {
                 $output->writeln("<error>Install error: " . $civicrm_api3->errorMsg() . "</error>");
             }
         }
         return TRUE;
     }
     // fallback
     $output->writeln("NOTE: This might be a good time to refresh the extension list and install \"{$key}\".");
     return FALSE;
 }
Example #6
0
 /**
  * Replace unsubscribe tokens.
  *
  * @param string $str
  *   The string with tokens to be replaced.
  * @param object $domain
  *   The domain BAO.
  * @param array $groups
  *   The groups (if any) being unsubscribed.
  * @param bool $html
  *   Replace tokens with html or plain text.
  * @param int $contact_id
  *   The contact ID.
  * @param string $hash The security hash of the unsub event
  *
  * @return string
  *   The processed string
  */
 public static function &replaceUnsubscribeTokens($str, &$domain, &$groups, $html, $contact_id, $hash)
 {
     if (self::token_match('unsubscribe', 'group', $str)) {
         if (!empty($groups)) {
             $config = CRM_Core_Config::singleton();
             $base = CRM_Utils_System::baseURL();
             // FIXME: an ugly hack for CRM-2035, to be dropped once CRM-1799 is implemented
             $dao = new CRM_Contact_DAO_Group();
             $dao->find();
             while ($dao->fetch()) {
                 if (substr($dao->visibility, 0, 6) == 'Public') {
                     $visibleGroups[] = $dao->id;
                 }
             }
             $value = implode(', ', $groups);
             self::token_replace('unsubscribe', 'group', $value, $str);
         }
     }
     return $str;
 }
Example #7
0
 /**
  * Replace unsubscribe tokens
  *
  * @param string $str           the string with tokens to be replaced
  * @param object $domain        The domain BAO
  * @param array $groups         The groups (if any) being unsubscribed
  * @param boolean $html         Replace tokens with html or plain text
  * @param int $contact_id       The contact ID
  * @param string hash           The security hash of the unsub event
  * @return string               The processed string
  * @access public
  * @static
  */
 function &replaceUnsubscribeTokens($str, &$domain, &$groups, $html, $contact_id, $hash)
 {
     if (CRM_Utils_Token::token_match('unsubscribe', 'group', $str)) {
         if (!empty($groups)) {
             $config =& CRM_Core_Config::singleton();
             $base = CRM_Utils_System::baseURL();
             if ($html) {
                 $value = '<ul>';
                 foreach ($groups as $gid => $name) {
                     $verpAddress = implode($config->verpSeparator, array('subscribe', $domain->id, $gid)) . "@{$domain->email_domain}";
                     $value .= "<li>{$name} (<a href=\"mailto:{$verpAddress}\">" . ts("re-subscribe") . "</a>)</li>\n";
                 }
                 $value .= '</ul>';
             } else {
                 $value = "\n";
                 foreach ($groups as $gid => $name) {
                     $verpAddress = implode($config->verpSeparator, array('subscribe', $domain->id, $gid)) . "@{$domain->email_domain}";
                     $value .= "\t* {$name} " . ts("(re-subscribe: %1)", array(1 => "{$verpAddress}")) . "\n";
                 }
                 $value .= "\n";
             }
             CRM_Utils_Token::token_replace('unsubscribe', 'group', $value, $str);
         }
     }
     return $str;
 }
Example #8
0
 function main(&$args)
 {
     if ($args[1] !== 'mailing') {
         return;
     }
     require_once 'CRM/Mailing/Controller/Send.php';
     require_once 'CRM/Mailing/Page/Browse.php';
     require_once 'CRM/Mailing/BAO/Job.php';
     if ($args[2] == 'forward') {
         $session =& CRM_Core_Session::singleton();
         $session->pushUserContext(CRM_Utils_System::baseURL());
         $wrapper =& new CRM_Utils_Wrapper();
         return $wrapper->run('CRM_Profile_Form_ForwardMailing', ts('Forward Mailing'), null);
     }
     if ($args[2] == 'retry') {
         $session =& CRM_Core_Session::singleton();
         $session->pushUserContext(CRM_Utils_System::url('civicrm/mailing/browse'));
         CRM_Utils_System::appendBreadCrumb('<a href="' . CRM_Utils_System::url('civicrm/mailing/browse') . '">' . ts('Mailings') . '</a>');
         CRM_Utils_System::appendBreadCrumb('<a href="' . CRM_Utils_System::url('civicrm/mailing/report') . '">' . ts('Report') . '</a>');
         $wrapper =& new CRM_Utils_Wrapper();
         return $wrapper->run('CRM_Mailing_Form_Retry', ts('Retry Mailing'), null);
     }
     if ($args[2] == 'component') {
         require_once 'CRM/Mailing/Page/Component.php';
         $view =& new CRM_Mailing_Page_Component();
         return $view->run();
     }
     if ($args[2] == 'browse') {
         require_once 'CRM/Mailing/Page/Browse.php';
         $view =& new CRM_Mailing_Page_Browse();
         return $view->run();
     }
     if ($args[2] == 'event') {
         CRM_Utils_System::appendBreadCrumb('<a href="' . CRM_Utils_System::url('civicrm/mailing/browse') . '">' . ts('Mailings') . '</a>');
         CRM_Utils_System::appendBreadCrumb('<a href="' . CRM_Utils_System::url('civicrm/mailing/report') . '">' . ts('Report') . '</a>');
         require_once 'CRM/Mailing/Page/Event.php';
         $view =& new CRM_Mailing_Page_Event();
         return $view->run();
     }
     if ($args[2] == 'report') {
         CRM_Utils_System::appendBreadCrumb('<a href="' . CRM_Utils_System::url('civicrm/mailing/browse') . '">' . ts('Mailings') . '</a>');
         require_once 'CRM/Mailing/Page/Report.php';
         $view =& new CRM_Mailing_Page_Report();
         return $view->run();
     }
     if ($args[2] == 'send') {
         $session =& CRM_Core_Session::singleton();
         $session->pushUserContext(CRM_Utils_System::url('civicrm/mailing/browse', 'reset=1'));
         require_once 'CRM/Mailing/Controller/Send.php';
         $controller =& new CRM_Mailing_Controller_Send(ts('Send Mailing'));
         return $controller->run();
     }
     if ($args[2] == 'queue') {
         $session =& CRM_Core_Session::singleton();
         $session->pushUserContext(CRM_Utils_System::url('civicrm/mailing/browse', 'reset=1'));
         require_once 'CRM/Mailing/BAO/Job.php';
         CRM_Mailing_BAO_Job::runJobs();
         CRM_Core_Session::setStatus(ts('The mailing queue has been processed.'));
     }
     require_once 'CRM/Mailing/Page/Browse.php';
     $view =& new CRM_Mailing_Page_Browse();
     return $view->run();
 }