129 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
class CRM_ConstituentsOnly_BAO_Query extends CRM_Contact_BAO_Query_Interface {
 | 
						|
 | 
						|
  static $_networkFields = array();
 | 
						|
 | 
						|
  public function &getFields() {
 | 
						|
    return self::$_networkFields;
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * @param $query
 | 
						|
   *
 | 
						|
   */
 | 
						|
  public function select(&$query) {
 | 
						|
    CRM_Core_Session::singleton()->set('return_properties_search', $query->_returnProperties);
 | 
						|
    // hack for profile search
 | 
						|
    $url = CRM_Utils_Array::value('q', $_GET);
 | 
						|
    if (in_array($url, ['civicrm/profile', 'civicrm/contact/search/builder'])) {
 | 
						|
      if (empty($query->_params)) {
 | 
						|
        $query->_params[] = [
 | 
						|
          'entryURL',
 | 
						|
          '=',
 | 
						|
          0,
 | 
						|
          0,
 | 
						|
          1,
 | 
						|
        ];
 | 
						|
      }
 | 
						|
      $query->_paramLookup['entryURL'] = [
 | 
						|
        'entryURL',
 | 
						|
        '=',
 | 
						|
        0,
 | 
						|
        0,
 | 
						|
        1,
 | 
						|
      ];
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * @param $query
 | 
						|
   *
 | 
						|
   */
 | 
						|
  public function where(&$query) {
 | 
						|
    if (empty($query->_paramLookup['entryURL'])) {
 | 
						|
      return;
 | 
						|
    }
 | 
						|
 | 
						|
    $url = CRM_Utils_Array::value('q', $_GET);
 | 
						|
    if (strpos($url, 'civicrm/contact/') === FALSE) {
 | 
						|
      return;
 | 
						|
    }
 | 
						|
 | 
						|
    if (!empty($query->_paramLookup['ignore_constituent_search'])) {
 | 
						|
      $query->_qill[0][] = ts("Include non-constituents in this search");
 | 
						|
      return;
 | 
						|
    }
 | 
						|
 | 
						|
    if (CRM_Utils_Array::value('civicrm_contact', $query->_tables) && empty($query->_paramLookup['do_not_trade'])) {
 | 
						|
      $query->_where[0][] = "
 | 
						|
        contact_a.id NOT IN (SELECT id FROM (
 | 
						|
          SELECT contact_a.id
 | 
						|
            FROM civicrm_contact contact_a
 | 
						|
              LEFT JOIN civicrm_relationship cr
 | 
						|
                ON (cr.contact_id_a = contact_a.id)
 | 
						|
                AND cr.is_active = 1
 | 
						|
              LEFT JOIN civicrm_contact cc1
 | 
						|
                ON (cr.contact_id_a = cc1.id)
 | 
						|
            WHERE contact_a.do_not_trade = 1 AND (cr.id IS NULL OR cc1.is_deleted = 1 OR cc1.do_not_trade = 1)
 | 
						|
            AND contact_a.id <> cc1.id
 | 
						|
          UNION
 | 
						|
          SELECT contact_a.id
 | 
						|
            FROM civicrm_contact contact_a
 | 
						|
              LEFT JOIN civicrm_relationship cr
 | 
						|
                ON (cr.contact_id_b = contact_a.id)
 | 
						|
                AND cr.is_active = 1
 | 
						|
              LEFT JOIN civicrm_contact cc1
 | 
						|
                ON (cr.contact_id_b = cc1.id)
 | 
						|
            WHERE contact_a.do_not_trade = 1 AND (cr.id IS NULL OR cc1.is_deleted = 1 OR cc1.do_not_trade = 1)
 | 
						|
            AND contact_a.id <> cc1.id
 | 
						|
          ) AS temp GROUP BY id
 | 
						|
        )
 | 
						|
      ";
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * @param string $name
 | 
						|
   * @param $mode
 | 
						|
   * @param $side
 | 
						|
   *
 | 
						|
   */
 | 
						|
  public function from($name, $mode, $side) {
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * @param $tables
 | 
						|
   *
 | 
						|
   */
 | 
						|
  public function setTableDependency(&$tables) {
 | 
						|
  }
 | 
						|
 | 
						|
  public function getPanesMapper(&$panes) {
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * @param $panes
 | 
						|
   *
 | 
						|
   */
 | 
						|
  public function registerAdvancedSearchPane(&$panes) {
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * @param CRM_Core_Form $form
 | 
						|
   * @param $type
 | 
						|
   *
 | 
						|
   */
 | 
						|
  public function buildAdvancedSearchPaneForm(&$form, $type) {
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * @param $paneTemplatePathArray
 | 
						|
   * @param $type
 | 
						|
   *
 | 
						|
   */
 | 
						|
  public function setAdvancedSearchPaneTemplatePath(&$paneTemplatePathArray, $type) {
 | 
						|
  }
 | 
						|
 | 
						|
}
 |