Merge remote-tracking branch 'upstream/4.4' into 4.4-master-2014-07-16-12-52-48
authorkurund <kurund@civicrm.org>
Wed, 16 Jul 2014 07:38:50 +0000 (13:08 +0530)
committerkurund <kurund@civicrm.org>
Wed, 16 Jul 2014 07:38:50 +0000 (13:08 +0530)
Conflicts:
CRM/Contact/Form/Contact.php
CRM/Profile/Form.php
CRM/Upgrade/Incremental/php/FourFour.php
CRM/Utils/String.php

12 files changed:
1  2 
CRM/Contact/BAO/Contact.php
CRM/Contact/Form/Contact.php
CRM/Contact/Page/View.php
CRM/Contribute/BAO/ContributionRecur.php
CRM/Core/BAO/UFGroup.php
CRM/Profile/Form.php
CRM/Report/Form/Contribute/Detail.php
CRM/Upgrade/Form.php
CRM/Upgrade/Incremental/php/FourFour.php
CRM/Utils/Date.php
CRM/Utils/String.php
CRM/Utils/System/Drupal.php

Simple merge
index 40abe4743c3a5ca80dee745325a157f4edfdeaf5,204ea6fe0ab42d0aaf2012c82613268a9f1481b6..2ca53a78969caa36deb6f003306714c64256a195
@@@ -435,8 -442,8 +435,9 @@@ class CRM_Contact_Form_Contact extends 
      //set address block defaults
      CRM_Contact_Form_Edit_Address::setDefaultValues( $defaults, $this );
  
 -    if (CRM_Utils_Array::value('image_URL', $defaults)) {
++
 +    if (!empty($defaults['image_URL'])) {
-       list($imageWidth, $imageHeight) = getimagesize($defaults['image_URL']);
+       list($imageWidth, $imageHeight) = getimagesize(CRM_Utils_String::unstupifyUrl($defaults['image_URL']));
        list($imageThumbWidth, $imageThumbHeight) = CRM_Contact_BAO_Contact::getThumbSize($imageWidth, $imageHeight);
        $this->assign('imageWidth', $imageWidth);
        $this->assign('imageHeight', $imageHeight);
Simple merge
Simple merge
index 549024b350b1a495551b407c05f2fd87b452d687,33e46f5429b171498aad9f3ee2a407468778d099..8f0aec6b6fb80a7a41e851e03f09b5d6001bd5b3
@@@ -557,8 -550,8 +557,8 @@@ class CRM_Profile_Form extends CRM_Core
        return;
      }
  
 -    if (CRM_Utils_Array::value('image_URL', $this->_defaults)) {
 +    if (!empty($this->_defaults['image_URL'])) {
-       list($imageWidth, $imageHeight) = getimagesize($this->_defaults['image_URL']);
+       list($imageWidth, $imageHeight) = getimagesize(CRM_Utils_String::unstupifyUrl($this->_defaults['image_URL']));
        list($imageThumbWidth, $imageThumbHeight) = CRM_Contact_BAO_Contact::getThumbSize($imageWidth, $imageHeight);
        $this->assign("imageWidth", $imageWidth);
        $this->assign("imageHeight", $imageHeight);
Simple merge
index bd2413619da48390ae63b9609f442f860cc61c50,7b93e115aadef5d5f94081123c8e8ae73580abd8..b689907941aee12dc4c19b6cb2ee19bdbb2d98b7
@@@ -643,15 -521,12 +643,15 @@@ SET    version = '$version
    /**
     * Perform an incremental version update
     *
 +   * @param CRM_Queue_TaskContext $ctx
     * @param $rev string, the target (intermediate) revision e.g '3.2.alpha1'
-    * @param $currentVer string, the original revision
+    * @param $originalVer string, the original revision
     * @param $latestVer string, the target (final) revision
     * @param $postUpgradeMessageFile string, path of a modifiable file which lists the post-upgrade messages
 +   *
 +   * @return bool
     */
-   static function doIncrementalUpgradeStep(CRM_Queue_TaskContext$ctx, $rev, $currentVer, $latestVer, $postUpgradeMessageFile) {
+   static function doIncrementalUpgradeStep(CRM_Queue_TaskContext$ctx, $rev, $originalVer, $latestVer, $postUpgradeMessageFile) {
      $upgrade = new CRM_Upgrade_Form();
  
      $phpFunctionName = 'upgrade_' . str_replace('.', '_', $rev);
index bcad6fcf03c1d071d6f0ae55d55b6b761c5719e6,7dcf3eba4f6a36e86a296db86b68a7823fdc719a..af2a61d3a00a04b025f6b138e84300d217e18ee5
@@@ -352,26 -325,24 +352,31 @@@ ALTER TABLE civicrm_dashboar
      }
    }
  
 +  /**
 +   * @param CRM_Queue_TaskContext $ctx
 +   * @param $startId
 +   * @param $endId
 +   *
 +   * @return bool
 +   */
+   function upgrade_4_4_7($rev, $originalVer, $latestVer) {
+     // For WordPress/Joomla(?), cleanup broken image_URL from 4.4.6 upgrades - https://issues.civicrm.org/jira/browse/CRM-14971
+     $exBackendUrl = CRM_Utils_System::url('civicrm/contact/imagefile', 'photo=XXX', TRUE); // URL formula from 4.4.6 upgrade
+     $exFrontendUrl = CRM_Utils_System::url('civicrm/contact/imagefile', 'photo=XXX', TRUE, NULL, TRUE, TRUE);
+     if ($originalVer == '4.4.6' && $exBackendUrl != $exFrontendUrl) {
+       $minId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(min(id),0) FROM civicrm_contact WHERE image_URL IS NOT NULL');
+       $maxId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(max(id),0) FROM civicrm_contact WHERE image_URL IS NOT NULL');
+       for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) {
+         $endId = $startId + self::BATCH_SIZE - 1;
+         $title = ts('Upgrade image_urls (%1 => %2)', array(1 => $startId, 2 => $endId));
+         $this->addTask($title, 'cleanupBackendImageUrls', $startId, $endId);
+       }
+     }
+     $this->addTask(ts('Update saved search information'), 'changeSavedSearch');
+   }
    static function upgradeImageUrls(CRM_Queue_TaskContext $ctx, $startId, $endId){
-     $sql = "
- SELECT id, image_url
- FROM civicrm_contact
- WHERE 1
- AND id BETWEEN %1 AND %2
- AND image_URL IS NOT NULL
- ";
-     $params = array(
-       1 => array($startId, 'Integer'),
-       2 => array($endId, 'Integer'),
-     );
-     $dao = CRM_Core_DAO::executeQuery($sql, $params, TRUE, NULL, FALSE, FALSE);
+     $dao = self::findContactImageUrls($startId, $endId);
      $failures = array();
      while ($dao->fetch()){
        $imageURL = $dao->image_url;
Simple merge
index 7e3b8f0d49eb1d0e9030c5767ae5ab817d70cf10,4ba11f1942fd812385e4fa4dffb12346d7529dcf..1643491496d49a1c352e489abb4245c00591ad29
@@@ -661,61 -652,17 +661,73 @@@ class CRM_Utils_String 
      }
    }
  
 +  /**
 +   * this function will mask part of the the user portion of an Email address (everything before the @)
 +   *
 +   * @param string $email the email address to be masked
 +   * @param string $maskChar the character used for masking
 +   * @param integer $percent the percentage of the user portion to be masked
 +   *
 +   * @return string returns the masked Email address
 +   */
 +  public static function maskEmail($email, $maskChar= '*', $percent=50) {
 +    list($user, $domain) = preg_split("/@/", $email);
 +    $len = strlen($user);
 +    $maskCount = floor($len * $percent /100);
 +    $offset = floor(($len - $maskCount) / 2);
 +
 +    $masked = substr($user, 0, $offset)
 +      .str_repeat($maskChar, $maskCount)
 +      .substr($user, $maskCount + $offset);
 +
 +    return($masked.'@'.$domain);
 +  }
 +
 +  /**
 +   * this function compares two strings
 +   *
 +   * @param string $strOne string one
 +   * @param string $strTwo string two
 +   * @param boolean $case boolean indicating whether you want the comparison to be case sensitive or not
 +   *
 +   * @return boolean TRUE (string are identical); FALSE (strings are not identical)
 +   */
 +  public static function compareStr($strOne, $strTwo, $case) {
 +    if ($case == TRUE) {
 +      // Convert to lowercase and trim white spaces
 +      if (strtolower(trim($strOne)) == strtolower(trim($strTwo))) {
 +        // yes - they are identical
 +        return TRUE;
 +      }
 +      else {
 +        // not identical
 +        return FALSE;
 +      }
 +    }
 +    if ($case == FALSE) {
 +      // Trim white spaces
 +      if (trim($strOne) == trim($strTwo)) {
 +        // yes - they are identical
 +        return TRUE;
 +      }
 +      else {
 +        // not identical
 +        return FALSE;
 +      }
 +    }
 +  }
 +
+   /**
+    * Many parts of the codebase have a convention of internally passing around
+    * HTML-encoded URLs. This effectively means that "&" is replaced by "&amp;"
+    * (because most other odd characters are %-escaped in URLs; and %-escaped
+    * strings don't need any extra escaping in HTML).
+    *
+    * @param string $url URL with HTML entities
+    * @return string URL without HTML entities
+    */
+   public static function unstupifyUrl($htmlUrl) {
+     return str_replace('&amp;', '&', $htmlUrl);
+   }
  }
  
Simple merge