R34467 - in /trunk/addressbook/inc: class.addressbook_sql.inc.php class.addressbook_ui.inc.php

Author: leithoff
New Revision: 34467

URL: http://www.egroupware.org/viewvc/egroupware?rev=34467&view=rev
Log:

  • addressbook: enable Advanced Search for OrgView

Modified:
trunk/addressbook/inc/class.addressbook_sql.inc.php
trunk/addressbook/inc/class.addressbook_ui.inc.php

Modified: trunk/addressbook/inc/class.addressbook_sql.inc.php
URL: http://www.egroupware.org/viewvc/egroupware/trunk/addressbook/inc/class.addressbook_sql.inc.php?rev=34467&r1=34466&r2=34467&view=diff

— trunk/addressbook/inc/class.addressbook_sql.inc.php (original)
+++ trunk/addressbook/inc/class.addressbook_sql.inc.php Wed Mar 30 15:31:09 2011
@@ -91,6 +91,9 @@
* @var string $param[searchletter] letter the org_name need to start with
* @var array $param[col_filter] filter
* @var string $param[search] or’ed search pattern

    • @var array $param[advanced_search] indicator that advanced search is active
    • @var string $param[op] (operator like AND or OR; will be passed when advanced search is active)
    • @var string $param[wildcard] (wildcard like % or empty or not set (for no wildcard); will be passed when advanced search is active)
    • @var int $param[start]
    • @var int $param[num_rows]
    • @var string $param[sort] ASC or DESC
      @@ -99,7 +102,13 @@
      function organisations($param)
      {
      $filter = is_array($param[‘col_filter’]) ? $param[‘col_filter’] : array();
  •   $op = 'OR';
    
  •   if (isset($param['op']) && !empty($param['op'])) $op = $param['op'];
    
  •   $advanced_search = false;
    
  •   if (isset($param['advanced_search']) && !empty($param['advanced_search'])) $advanced_search = true;
    
  •   $wildcard ='%';
    
  •   if ($advanced_search || (isset($param['wildcard']) && !empty($param['wildcard']))) $wildcard = ($param['wildcard']?$param['wildcard']:'');
    
  •   // fix cat_id filter to search in comma-separated multiple cats and return subcats
      if ((int)$filter['cat_id'])
      {
    

@@ -164,7 +173,7 @@
‘COUNT(DISTINCT egw_addressbook.contact_id) AS org_count’,
“COUNT(DISTINCT CASE WHEN org_unit IS NULL THEN ‘’ ELSE org_unit END) AS org_unit_count”,
“COUNT(DISTINCT CASE WHEN adr_one_locality IS NULL THEN ‘’ ELSE adr_one_locality END) AS adr_one_locality_count”,

  •   	),'%',false,'OR','UNION',$filter);
    
  •   	),$wildcard,false,$op/*'OR'*/,'UNION',$filter);
      	// org by location
      	$append = "GROUP BY org_name,$by ORDER BY org_name $sort,$by $sort";
      	parent::search($param['search'],array('org_name'),$append,array(
    

@@ -173,10 +182,10 @@
‘COUNT(DISTINCT egw_addressbook.contact_id) AS org_count’,
“COUNT(DISTINCT CASE WHEN org_unit IS NULL THEN ‘’ ELSE org_unit END) AS org_unit_count”,
“COUNT(DISTINCT CASE WHEN adr_one_locality IS NULL THEN ‘’ ELSE adr_one_locality END) AS adr_one_locality_count”,

  •   	),'%',false,'OR','UNION',$filter);
    
  •   	),$wildcard,false,$op/*'OR'*/,'UNION',$filter);
      	$append = "ORDER BY org_name $sort,is_main DESC,$by $sort";
      }
    
  •   $rows = parent::search($param['search'],array('org_name'),$append,$extra,'%',false,'OR',
    
  •   $rows = parent::search($param['search'],array('org_name'),$append,$extra,$wildcard,false,$op/*'OR'*/,
      	array($param['start'],$param['num_rows']),$filter);
    
      if (!$rows) return false;
    

@@ -197,7 +206,7 @@
if (count($filter[‘org_name’]))
{
foreach((array) parent::search($criteria,array(‘org_name’,‘org_unit’,‘adr_one_locality’),‘GROUP BY org_name,org_unit,adr_one_locality’,

  •   		'','%',false,'AND',false,$filter) as $row)
    
  •   		'',$wildcard,false,$op/*'AND'*/,false,$filter) as $row)
      	{
      		$org_key = $row['org_name'].($by ? '|||'.$row[$by] : '');
      		if ($orgs[$org_key]['org_unit_count'] == 1)
    

Modified: trunk/addressbook/inc/class.addressbook_ui.inc.php
URL: http://www.egroupware.org/viewvc/egroupware/trunk/addressbook/inc/class.addressbook_ui.inc.php?rev=34467&r1=34466&r2=34467&view=diff

— trunk/addressbook/inc/class.addressbook_ui.inc.php (original)
+++ trunk/addressbook/inc/class.addressbook_ui.inc.php Wed Mar 30 15:31:09 2011
@@ -852,9 +852,10 @@
if (isset($this->org_views[(string) $query[‘org_view’]])) // we have an org view, reset the advanced search
{
//_debug_array(array(‘Search’=>$query[‘search’],

  •   	//'AdvancedSearch'=>$query['advanced_search']));
    
  •   	if (is_array($query['search'])) unset($query['search']);
    
  •   	unset($query['advanced_search']);
    
  •   	//	'AdvancedSearch'=>$query['advanced_search']));
    
  •   	//if (is_array($query['search'])) unset($query['search']);
    
  •   	//unset($query['advanced_search']);
    
  •   	if(!$query['search'] && $old_state['advanced_search']) $query['advanced_search'] = $old_state['advanced_search'];
      }
      elseif(!$query['search'] && $old_state['advanced_search'])	// eg. paging in an advanced search
      {
    

@@ -945,8 +946,23 @@
$query[‘sort’] = ‘ASC’;
$query[‘order’] = ‘org_name’;
}

  •   	if ($query['advanced_search'])
    
  •   	{
    
  •   		$query['op'] = $query['advanced_search']['operator'];
    
  •   		unset($query['advanced_search']['operator']);
    
  •   		$query['wildcard'] = $query['advanced_search']['meth_select'];
    
  •   		unset($query['advanced_search']['meth_select']);
    
  •   		$original_search = $query['search'];
    
  •   		$query['search'] = $query['advanced_search'];
    
  •   	}
    
  •   	$rows = parent::organisations($query);
    
  •   	if ($query['advanced_search'])
    
  •   	{
    
  •   		$query['search'] = $original_search;
    
  •   		unset($query['wildcard']);
    
  •   		unset($query['op']);
    
  •   	}
      	$GLOBALS['egw_info']['flags']['params']['manual'] = array('page' => 'ManualAddressbookIndexOrga');
      }
      else	// contacts view
    

@@ -1211,7 +1227,7 @@
$order = $order == ‘n_given’ ? lang(‘first name’) : ($order == ‘n_family’ ? lang(‘last name’) : lang(‘Organisation’));
$GLOBALS[‘egw_info’][‘flags’][‘app_header’] .= ’ - '.lang("%1 starts with ‘%2’",$order,$query[‘searchletter’]);
}

  •   if ($query['search'])
    
  •   if ($query['search'] && !$query['advanced_search']) // do not add that, if we have advanced search active
      {
      	$GLOBALS['egw_info']['flags']['app_header'] .= ' - '.lang("Search for '%1'",$query['search']);
      }
    

Enable your software for Intel® Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel® vPro ™ technology - will your software
be a part of the solution? Download the Intel® Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar


eGroupWare-cvs mailing list
eGroupWare-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/egroupware-cvs