Merge branch 4.5 into master
authorColeman Watts <coleman@civicrm.org>
Sat, 10 Jan 2015 02:47:51 +0000 (21:47 -0500)
committerColeman Watts <coleman@civicrm.org>
Sat, 10 Jan 2015 02:47:51 +0000 (21:47 -0500)
Conflicts:
CRM/Report/Form.php
CRM/Report/Form/Activity.php
CRM/Utils/File.php

1  2 
CRM/Core/DAO/permissions.php
CRM/Report/Form.php
CRM/Report/Form/Activity.php
CRM/Utils/File.php

Simple merge
index 0e1b048482859274da5e91db83dfacf45dc7166d,b7f1edb2f7ce392761d30cc6e713d187c6662332..93fd14fdd39cf90cd3fb11ebae82828feb59ed85
@@@ -147,7 -148,14 +147,18 @@@ class CRM_Report_Form extends CRM_Core_
    protected $_tagFilter = FALSE;
  
    /**
++<<<<<<< HEAD
 +   * Build groups filter
++=======
+    * specify entity table for tags filter
+    *
+    */
+   protected $_tagFilterTable = 'civicrm_contact';
+   /**
+    * build groups filter
+    *
++>>>>>>> 098a61330d0fe12153370741ec98cb1172ece849
     */
    protected $_groupFilter = FALSE;
  
      }
    }
  
 -  function buildTagFilter() {
 +  public function buildTagFilter() {
-     $contactTags = CRM_Core_BAO_Tag::getTags();
+     $contactTags = CRM_Core_BAO_Tag::getTags($this->_tagFilterTable);
      if (!empty($contactTags)) {
        $this->_columns['civicrm_tag'] = array(
          'dao' => 'CRM_Core_DAO_Tag',
@@@ -3125,14 -3015,14 +3136,14 @@@ WHERE cg.extends IN ('" . implode("','"
        $value = array($value);
      }
      $clause = "{$field['dbAlias']} IN (" . implode(', ', $value) . ")";
-     return " {$this->_aliases['civicrm_contact']}.id {$sqlOp} (
+     $entity_table = $this->_tagFilterTable;
+     return " {$this->_aliases[$entity_table]}.id {$sqlOp} (
                            SELECT DISTINCT {$this->_aliases['civicrm_tag']}.entity_id
                            FROM civicrm_entity_tag {$this->_aliases['civicrm_tag']}
-                           WHERE entity_table = 'civicrm_contact' AND {$clause} ) ";
+                           WHERE entity_table = '$entity_table' AND {$clause} ) ";
    }
  
 -  function whereMembershipOrgClause($field, $value, $op) {
 +  public function whereMembershipOrgClause($field, $value, $op) {
      $sqlOp = $this->getSQLOperator($op);
      if (!is_array($value)) {
        $value = array($value);
index c1c7a09b35b57fa801b158eaf81876fa2a4944c2,5e82acbe7caf505de20499570f02c2ab704b0cbf..362a8f3aa7c837ecd944cdc259ad8b697cd67c35
@@@ -62,198 -64,223 +62,240 @@@ class CRM_Report_Form_Activity extends 
      asort($this->activityTypes);
  
      $this->_columns = array(
 -      'civicrm_contact' =>
 -      array(
 -        'dao' => 'CRM_Contact_DAO_Contact',
 -        'fields' =>
 -        array(
 -          'contact_source' =>
 -          array(
 -            'name' => 'sort_name',
 -            'title' => ts('Source Contact Name'),
 -            'alias' => 'civicrm_contact_source',
 -            'no_repeat' => TRUE,
 -          ),
 -          'contact_assignee' =>
 -          array(
 -            'name' => 'sort_name',
 -            'title' => ts('Assignee Contact Name'),
 -            'alias' => 'civicrm_contact_assignee',
 -            'dbAlias' => "civicrm_contact_assignee.sort_name",
 -            'default' => TRUE,
 +        'civicrm_contact' => array(
 +          'dao' => 'CRM_Contact_DAO_Contact',
 +          'fields' => array(
 +            'contact_source' => array(
 +              'name' => 'sort_name',
 +              'title' => ts('Source Contact Name'),
 +              'alias' => 'civicrm_contact_source',
 +              'no_repeat' => TRUE,
 +            ),
 +            'contact_assignee' => array(
 +              'name' => 'sort_name',
 +              'title' => ts('Assignee Contact Name'),
 +              'alias' => 'civicrm_contact_assignee',
 +              'dbAlias' => "civicrm_contact_assignee.sort_name",
 +              'default' => TRUE,
 +            ),
 +            'contact_target' => array(
 +              'name' => 'sort_name',
 +              'title' => ts('Target Contact Name'),
 +              'alias' => 'civicrm_contact_target',
 +              'dbAlias' => "civicrm_contact_target.sort_name",
 +              'default' => TRUE,
 +            ),
 +            'contact_source_id' => array(
 +              'name' => 'id',
 +              'alias' => 'civicrm_contact_source',
 +              'dbAlias' => "civicrm_contact_source.id",
 +              'no_display' => TRUE,
 +              'default' => TRUE,
 +              'required' => TRUE,
 +            ),
 +            'contact_assignee_id' => array(
 +              'name' => 'id',
 +              'alias' => 'civicrm_contact_assignee',
 +              'dbAlias' => "civicrm_contact_assignee.id",
 +              'no_display' => TRUE,
 +              'default' => TRUE,
 +              'required' => TRUE,
 +            ),
 +            'contact_target_id' => array(
 +              'name' => 'id',
 +              'alias' => 'civicrm_contact_target',
 +              'dbAlias' => "civicrm_contact_target.id",
 +              'no_display' => TRUE,
 +              'default' => TRUE,
 +              'required' => TRUE,
 +            ),
            ),
 -          'contact_target' =>
 -          array(
 -            'name' => 'sort_name',
 -            'title' => ts('Target Contact Name'),
 -            'alias' => 'civicrm_contact_target',
 -            'dbAlias' => "civicrm_contact_target.sort_name",
 -            'default' => TRUE,
 -          ),
 -         'contact_source_id' =>
 -          array(
 -            'name' => 'id',
 -            'alias' => 'civicrm_contact_source',
 -            'dbAlias' => "civicrm_contact_source.id",
 -            'no_display' => TRUE,
 -            'default' => TRUE,
 -            'required' => TRUE,
 -          ),
 -          'contact_assignee_id' =>
 -          array(
 -            'name' => 'id',
 -            'alias' => 'civicrm_contact_assignee',
 -            'dbAlias' => "civicrm_contact_assignee.id",
 -            'no_display' => TRUE,
 -            'default' => TRUE,
 -            'required' => TRUE,
 -          ),
 -          'contact_target_id' =>
 -          array(
 -            'name' => 'id',
 -            'alias' => 'civicrm_contact_target',
 -            'dbAlias' => "civicrm_contact_target.id",
 -            'no_display' => TRUE,
 -            'default' => TRUE,
 -            'required' => TRUE,
 +          'filters' => array(
 +            'contact_source' => array(
 +              'name' => 'sort_name',
 +              'alias' => 'civicrm_contact_source',
 +              'title' => ts('Source Contact Name'),
 +              'operator' => 'like',
 +              'type' => CRM_Report_Form::OP_STRING,
 +            ),
 +            'contact_assignee' => array(
 +              'name' => 'sort_name',
 +              'alias' => 'civicrm_contact_assignee',
 +              'title' => ts('Assignee Contact Name'),
 +              'operator' => 'like',
 +              'type' => CRM_Report_Form::OP_STRING,
 +            ),
 +            'contact_target' => array(
 +              'name' => 'sort_name',
 +              'alias' => 'civicrm_contact_target',
 +              'title' => ts('Target Contact Name'),
 +              'operator' => 'like',
 +              'type' => CRM_Report_Form::OP_STRING,
 +            ),
 +            'current_user' => array(
 +              'name' => 'current_user',
 +              'title' => ts('Limit To Current User'),
 +              'type' => CRM_Utils_Type::T_INT,
 +              'operatorType' => CRM_Report_Form::OP_SELECT,
 +              'options' => array('0' => ts('No'), '1' => ts('Yes')),
 +            ),
            ),
 +          'grouping' => 'contact-fields',
          ),
 -        'filters' =>
 -        array(
 -          'contact_source' =>
 -          array(
 -            'name' => 'sort_name',
 -            'alias' => 'civicrm_contact_source',
 -            'title' => ts('Source Contact Name'),
 -            'operator' => 'like',
 -            'type' => CRM_Report_Form::OP_STRING,
 -          ),
 -          'contact_assignee' =>
 -          array(
 -            'name' => 'sort_name',
 -            'alias' => 'civicrm_contact_assignee',
 -            'title' => ts('Assignee Contact Name'),
 -            'operator' => 'like',
 -            'type' => CRM_Report_Form::OP_STRING,
 -          ),
 -          'contact_target' =>
 -          array(
 -            'name' => 'sort_name',
 -            'alias' => 'civicrm_contact_target',
 -            'title' => ts('Target Contact Name'),
 -            'operator' => 'like',
 -            'type' => CRM_Report_Form::OP_STRING,
 +        'civicrm_email' => array(
 +          'dao' => 'CRM_Core_DAO_Email',
 +          'fields' => array(
 +            'contact_source_email' => array(
 +              'name' => 'email',
 +              'title' => ts('Source Contact Email'),
 +              'alias' => 'civicrm_email_source',
 +            ),
 +            'contact_assignee_email' => array(
 +              'name' => 'email',
 +              'title' => ts('Assignee Contact Email'),
 +              'alias' => 'civicrm_email_assignee',
 +            ),
 +            'contact_target_email' => array(
 +              'name' => 'email',
 +              'title' => ts('Target Contact Email'),
 +              'alias' => 'civicrm_email_target',
 +            ),
            ),
 -          'current_user' =>
 -          array(
 -            'name' => 'current_user',
 -            'title' => ts('Limit To Current User'),
 -            'type' => CRM_Utils_Type::T_INT,
 -            'operatorType' => CRM_Report_Form::OP_SELECT,
 -            'options' => array('0' => ts('No'), '1' => ts('Yes')),
 +          'order_bys' => array(
 +            'source_contact_email' => array(
 +              'name' => 'email',
 +              'title' => ts('Source Contact Email'),
 +              'dbAlias' => 'civicrm_email_contact_source_email',
 +            ),
            ),
          ),
 -        'grouping' => 'contact-fields',
 -      ),
 -      'civicrm_email' =>
 -      array(
 -        'dao' => 'CRM_Core_DAO_Email',
 -        'fields' =>
 -        array(
 -          'contact_source_email' =>
 -          array(
 -            'name' => 'email',
 -            'title' => ts('Source Contact Email'),
 -            'alias' => 'civicrm_email_source',
 +        'civicrm_activity' => array(
 +          'dao' => 'CRM_Activity_DAO_Activity',
 +          'fields' => array(
 +            'id' => array(
 +              'no_display' => TRUE,
 +              'title' => ts('Activity ID'),
 +              'required' => TRUE,
 +            ),
 +            'source_record_id' => array(
 +              'no_display' => TRUE,
 +              'required' => TRUE,
 +            ),
 +            'activity_type_id' => array(
 +              'title' => ts('Activity Type'),
 +              'required' => TRUE,
 +              'type' => CRM_Utils_Type::T_STRING,
 +            ),
 +            'activity_subject' => array(
 +              'title' => ts('Subject'),
 +              'default' => TRUE,
 +            ),
 +            'activity_date_time' => array(
 +              'title' => ts('Activity Date'),
 +              'required' => TRUE,
 +            ),
 +            'status_id' => array(
 +              'title' => ts('Activity Status'),
 +              'default' => TRUE,
 +              'type' => CRM_Utils_Type::T_STRING,
 +            ),
 +            'duration' => array(
 +              'title' => ts('Duration'),
 +              'type' => CRM_Utils_Type::T_INT,
 +            ),
 +            'details' => array(
 +              'title' => ts('Activity Details'),
 +            ),
            ),
 -          'contact_assignee_email' =>
 -          array(
 -            'name' => 'email',
 -            'title' => ts('Assignee Contact Email'),
 -            'alias' => 'civicrm_email_assignee',
 +          'filters' => array(
 +            'activity_date_time' => array(
 +              'default' => 'this.month',
 +              'operatorType' => CRM_Report_Form::OP_DATE,
 +            ),
 +            'activity_subject' => array('title' => ts('Activity Subject')),
 +            'activity_type_id' => array(
 +              'title' => ts('Activity Type'),
 +              'operatorType' => CRM_Report_Form::OP_MULTISELECT,
 +              'options' => $this->activityTypes,
 +            ),
 +            'status_id' => array(
 +              'title' => ts('Activity Status'),
 +              'operatorType' => CRM_Report_Form::OP_MULTISELECT,
 +              'options' => CRM_Core_PseudoConstant::activityStatus(),
 +            ),
 +            'details' => array(
 +              'title' => ts('Activity Details'),
 +              'type' => CRM_Utils_Type::T_TEXT,
 +            ),
            ),
 -          'contact_target_email' =>
 -          array(
 -            'name' => 'email',
 -            'title' => ts('Target Contact Email'),
 -            'alias' => 'civicrm_email_target',
 +          'order_bys' => array(
 +            'activity_date_time' => array(
 +              'title' => ts('Activity Date'),
 +              'default_weight' => '1',
 +              'dbAlias' => 'civicrm_activity_activity_date_time',
 +            ),
 +            'activity_type_id' => array(
 +              'title' => ts('Activity Type'),
 +              'default_weight' => '2',
 +              'dbAlias' => "option_value_civireport",
 +            ),
            ),
 +          'grouping' => 'activity-fields',
 +          'alias' => 'activity',
          ),
 -        'order_bys' =>
 -        array(
 -          'source_contact_email' =>
 -          array(
 -            'name' => 'email',
 -            'title' => ts('Source Contact Email'),
 -            'dbAlias' => 'civicrm_email_contact_source_email',
 +        'civicrm_activity_contact' => array(
 +          'dao' => 'CRM_Activity_DAO_ActivityContact',
 +          'fields' => array(// so we have $this->_alias populated
            ),
          ),
 -      ),
 -      'civicrm_activity' =>
 -      array(
 -        'dao' => 'CRM_Activity_DAO_Activity',
 -        'fields' =>
 -        array(
 -          'id' =>
 -          array(
 -            'no_display' => TRUE,
 -            'title' => ts('Activity ID'),
 -            'required' => TRUE,
 -          ),
 -          'source_record_id' =>
 -          array(
 -            'no_display' => TRUE,
 -            'required' => TRUE,
 -          ),
 -          'activity_type_id' =>
 -          array('title' => ts('Activity Type'),
 -            'required' => TRUE,
 -            'type' => CRM_Utils_Type::T_STRING,
 -          ),
 -          'activity_subject' =>
 -          array('title' => ts('Subject'),
 -            'default' => TRUE,
 -          ),
 -          'activity_date_time' =>
 -          array('title' => ts('Activity Date'),
 -            'required' => TRUE,
 +        'civicrm_option_value' => array(
 +          'dao' => 'CRM_Core_DAO_OptionValue',
 +          'fields' => array(// so we have $this->_alias populated
            ),
+           'status_id' =>
+           array('title' => ts('Activity Status'),
+             'default' => TRUE,
+             'type' => CRM_Utils_Type::T_STRING,
+           ),
+           'duration' =>
+           array('title' => ts('Duration'),
+             'type' => CRM_Utils_Type::T_INT,
+           ),
+           'location' =>
+           array('title' => ts('Location'),
+             'type' => CRM_Utils_Type::T_STRING,
+           ),
+           'details' => array(
+             'title' => ts('Activity Details'),
+           )
+         ),
+         'filters' => array(
+           'activity_date_time' => array(
+             'default' => 'this.month',
+             'operatorType' => CRM_Report_Form::OP_DATE,
+           ),
+           'activity_subject' =>
+           array('title' => ts('Activity Subject')),
+           'location' =>
+             array('title' => ts('Location'),
+             'type' => CRM_Utils_Type::T_TEXT,
+           ),
+           'activity_type_id' =>
+           array('title' => ts('Activity Type'),
+             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
+             'options' => $this->activityTypes,
+           ),
+           'status_id' =>
+           array('title' => ts('Activity Status'),
+             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
+             'options' => CRM_Core_PseudoConstant::activityStatus(),
+           ),
+           'details' => array(
+             'title' => ts('Activity Details'),
+             'type' => CRM_Utils_Type::T_TEXT,
+           )
          ),
 -        'order_bys' => array(
 -          'activity_date_time' =>
 -          array('title' => ts('Activity Date'), 'default_weight' => '1', 'dbAlias' => 'civicrm_activity_activity_date_time'),
 -          'activity_type_id' =>
 -          array('title' => ts('Activity Type'), 'default_weight' => '2', 'dbAlias' => 'civicrm_activity_activity_type_id'),
 -        ),
 -        'grouping' => 'activity-fields',
 -        'alias' => 'activity',
 -      ),
 -      'civicrm_activity_contact' =>
 -      array(
 -        'dao' => 'CRM_Activity_DAO_ActivityContact',
 -        'fields' =>
 -        array(
 -          // so we have $this->_alias populated
 -        ),
 -      ),
 -    ) + $this->addAddressFields(FALSE, TRUE);
 +      ) + $this->addressFields(TRUE);
  
      if ($campaignEnabled) {
        // Add display column and filter for Survey Results, Campaign and Engagement Index if CiviCampaign is enabled
index 07c13ba8ef3a375ca5fcdc710e7e4b27c28dae72,255a0c118f332d7ff07326858eda407807214375..7ab45ff23dde5017301c820c36b4e763c7a1d3cc
@@@ -162,7 -160,8 +162,7 @@@ class CRM_Utils_File 
            }
          }
        }
-       closedir($sourcedir);
 -      }
+       closedir($dh);
  
        if ($rmdir) {
          if (rmdir($target)) {
     *
     * @return array
     */
 -  static function getFilesByExtension($path, $ext) {
 +  public static function getFilesByExtension($path, $ext) {
      $path  = self::addTrailingSlash($path);
+     $files = array();
      if ($dh = opendir($path)) {
-       $files = array();
        while (FALSE !== ($elem = readdir($dh))) {
          if (substr($elem, -(strlen($ext) + 1)) == '.' . $ext) {
            $files[] .= $path . $elem;