mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-22 14:41:29 +01:00
Extend the patch to get_categories in infolog submitted by matthias to the other classes as well.
Added a hack that allows one to search for the categories' names prefixed by X- Sony Ericsson phones (and possibly others) systematically prepend a X- to the category names, so with this patch we match X-CatName just like CatName This is only done for SyncML obviously.
This commit is contained in:
parent
810aa25ebd
commit
d97f1eed5e
@ -516,6 +516,7 @@ class bocontacts extends socontacts
|
|||||||
$GLOBALS['egw']->hooks->process($to_write,False,True); // called for every app now, not only enabled ones));
|
$GLOBALS['egw']->hooks->process($to_write,False,True); // called for every app now, not only enabled ones));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->error ? false : $contact['id'];
|
return $this->error ? false : $contact['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1115,40 +1116,40 @@ class bocontacts extends socontacts
|
|||||||
return $adr_format;
|
return $adr_format;
|
||||||
}
|
}
|
||||||
|
|
||||||
var $app_cat;
|
var $categories;
|
||||||
var $glob_cat;
|
|
||||||
|
|
||||||
function find_or_add_categories($catname_list)
|
function find_or_add_categories($catname_list)
|
||||||
{
|
{
|
||||||
if (!is_object($this->glob_cat))
|
if (!is_object($this->categories))
|
||||||
{
|
{
|
||||||
if (!is_object($GLOBALS['egw']->categories))
|
$this->categories =& CreateObject('phpgwapi.categories',$this->owner,'addressbook');
|
||||||
{
|
|
||||||
$GLOBALS['egw']->categories =& CreateObject('phpgwapi.categories',$this->owner,'phpgw');
|
|
||||||
}
|
|
||||||
$this->glob_cat =& $GLOBALS['egw']->categories;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_object($this->app_cat))
|
|
||||||
{
|
|
||||||
$this->app_cat =& CreateObject('phpgwapi.categories',$this->owner,'addressbook');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$cat_id_list = array();
|
$cat_id_list = array();
|
||||||
foreach($catname_list as $cat_name)
|
foreach($catname_list as $cat_name)
|
||||||
{
|
{
|
||||||
$cat_name = trim($cat_name);
|
$cat_name = trim($cat_name);
|
||||||
if (!($cat_id = $this->glob_cat->name2id($cat_name))
|
$cat_id = $this->categories->name2id($cat_name, 'X-');
|
||||||
&& !($cat_id = $this->app_cat->name2id($cat_name)))
|
|
||||||
|
if (!$cat_id)
|
||||||
{
|
{
|
||||||
$cat_id = $this->app_cat->add( array('name' => $cat_name,'descr' => $cat_name ));
|
// some SyncML clients (mostly phones add an X- to the category names
|
||||||
|
if (strncmp($cat_name, 'X-', 2) == 0)
|
||||||
|
{
|
||||||
|
$cat_name = substr($cat_name, 2);
|
||||||
|
}
|
||||||
|
$cat_id = $this->categories->add(array('name' => $cat_name,'descr' => $cat_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($cat_id)
|
||||||
|
{
|
||||||
$cat_id_list[] = $cat_id;
|
$cat_id_list[] = $cat_id;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (count($cat_id_list) > 1)
|
if (count($cat_id_list) > 1)
|
||||||
{
|
{
|
||||||
|
$cat_id_list = array_unique($cat_id_list);
|
||||||
sort($cat_id_list, SORT_NUMERIC);
|
sort($cat_id_list, SORT_NUMERIC);
|
||||||
}
|
}
|
||||||
return $cat_id_list;
|
return $cat_id_list;
|
||||||
@ -1156,25 +1157,19 @@ class bocontacts extends socontacts
|
|||||||
|
|
||||||
function get_categories($cat_id_list)
|
function get_categories($cat_id_list)
|
||||||
{
|
{
|
||||||
if (!is_object($this->glob_cat))
|
if (!is_object($this->categories))
|
||||||
{
|
{
|
||||||
if (!is_object($GLOBALS['egw']->categories))
|
$this->categories =& CreateObject('phpgwapi.categories',$this->owner,'addressbook');
|
||||||
{
|
|
||||||
$GLOBALS['egw']->categories =& CreateObject('phpgwapi.categories',$this->owner,'phpgw');
|
|
||||||
}
|
|
||||||
$this->glob_cat =& $GLOBALS['egw']->categories;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_object($this->app_cat))
|
if (!is_array($cat_id_list))
|
||||||
{
|
{
|
||||||
$this->app_cat =& CreateObject('phpgwapi.categories',$this->owner,'addressbook');
|
$cat_id_list = explode(',',$cat_id_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
$cat_list = array();
|
$cat_list = array();
|
||||||
foreach(explode(',',$cat_id_list) as $cat_id)
|
foreach($cat_id_list as $cat_id)
|
||||||
{
|
{
|
||||||
if ( ($cat_data = $this->glob_cat->return_single($cat_id))
|
if ($cat_data = $this->categories->return_single($cat_id))
|
||||||
|| ($cat_data = $this->app_cat->return_single($cat_id)) )
|
|
||||||
{
|
{
|
||||||
$cat_list[] = $cat_data[0]['name'];
|
$cat_list[] = $cat_data[0]['name'];
|
||||||
}
|
}
|
||||||
|
@ -1042,36 +1042,38 @@ class bocalupdate extends bocal
|
|||||||
return $this->so->delete_alarm($id);
|
return $this->so->delete_alarm($id);
|
||||||
}
|
}
|
||||||
|
|
||||||
var $app_cat;
|
var $categories;
|
||||||
var $glob_cat;
|
|
||||||
|
|
||||||
function find_or_add_categories($catname_list)
|
function find_or_add_categories($catname_list)
|
||||||
{
|
{
|
||||||
if (!is_object($this->glob_cat))
|
if (!is_object($this->categories))
|
||||||
{
|
{
|
||||||
$this->glob_cat =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'phpgw');
|
$this->categories =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'calendar');
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_object($this->app_cat))
|
|
||||||
{
|
|
||||||
$this->app_cat =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'calendar');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$cat_id_list = array();
|
$cat_id_list = array();
|
||||||
foreach($catname_list as $cat_name)
|
foreach($catname_list as $cat_name)
|
||||||
{
|
{
|
||||||
$cat_name = trim($cat_name);
|
$cat_name = trim($cat_name);
|
||||||
if (!($cat_id = $this->glob_cat->name2id($cat_name))
|
$cat_id = $this->categories->name2id($cat_name, 'X-');
|
||||||
&& !($cat_id = $this->app_cat->name2id($cat_name)))
|
if (!$cat_id)
|
||||||
{
|
{
|
||||||
$cat_id = $this->app_cat->add( array('name' => $cat_name,'descr' => $cat_name ));
|
if (strncmp($cat_name, "X-", 2) == 0)
|
||||||
|
{
|
||||||
|
$cat_name = substr($cat_name, 2);
|
||||||
|
}
|
||||||
|
$cat_id = $this->categories->add(array('name' => $cat_name,'descr' => $cat_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($cat_id)
|
||||||
|
{
|
||||||
$cat_id_list[] = $cat_id;
|
$cat_id_list[] = $cat_id;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (count($cat_id_list) > 1)
|
if (count($cat_id_list) > 1)
|
||||||
{
|
{
|
||||||
|
$cat_id_list = array_unique($cat_id_list);
|
||||||
sort($cat_id_list, SORT_NUMERIC);
|
sort($cat_id_list, SORT_NUMERIC);
|
||||||
}
|
}
|
||||||
return $cat_id_list;
|
return $cat_id_list;
|
||||||
@ -1079,21 +1081,20 @@ class bocalupdate extends bocal
|
|||||||
|
|
||||||
function get_categories($cat_id_list)
|
function get_categories($cat_id_list)
|
||||||
{
|
{
|
||||||
if (!is_object($this->glob_cat))
|
if (!is_object($this->categories))
|
||||||
{
|
{
|
||||||
$this->glob_cat =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'phpgw');
|
$this->categories =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'calendar');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_object($this->app_cat))
|
if (!is_array($cat_id_list))
|
||||||
{
|
{
|
||||||
$this->app_cat =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'calendar');
|
$cat_id_list = explode(',',$cat_id_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
$cat_list = array();
|
$cat_list = array();
|
||||||
foreach(explode(',',$cat_id_list) as $cat_id)
|
foreach($cat_id_list as $cat_id)
|
||||||
{
|
{
|
||||||
if ( ($cat_data = $this->glob_cat->return_single($cat_id))
|
if ($cat_data = $this->categories->return_single($cat_id))
|
||||||
|| ($cat_data = $this->app_cat->return_single($cat_id)) )
|
|
||||||
{
|
{
|
||||||
$cat_list[] = $cat_data[0]['name'];
|
$cat_list[] = $cat_data[0]['name'];
|
||||||
}
|
}
|
||||||
|
@ -1279,40 +1279,34 @@ class boinfolog
|
|||||||
return $icons;
|
return $icons;
|
||||||
}
|
}
|
||||||
|
|
||||||
var $app_cat;
|
var $categories;
|
||||||
var $glob_cat;
|
|
||||||
|
|
||||||
function find_or_add_categories($catname_list)
|
function find_or_add_categories($catname_list)
|
||||||
{
|
{
|
||||||
if (!is_object($this->glob_cat))
|
if (!is_object($this->categories))
|
||||||
{
|
{
|
||||||
if (!is_object($GLOBALS['egw']->categories))
|
$this->categories =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'infolog');
|
||||||
{
|
|
||||||
$GLOBALS['egw']->categories =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'phpgw');
|
|
||||||
}
|
|
||||||
$this->glob_cat =& $GLOBALS['egw']->categories;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_object($this->app_cat))
|
|
||||||
{
|
|
||||||
$this->app_cat =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'infolog');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$cat_id_list = array();
|
$cat_id_list = array();
|
||||||
foreach($catname_list as $cat_name)
|
foreach($catname_list as $cat_name)
|
||||||
{
|
{
|
||||||
$cat_name = trim($cat_name);
|
$cat_name = trim($cat_name);
|
||||||
if (!($cat_id = $this->glob_cat->name2id($cat_name))
|
$cat_id = $this->categories->name2id($cat_name, 'X-');
|
||||||
&& !($cat_id = $this->app_cat->name2id($cat_name)))
|
if (!$cat_id)
|
||||||
{
|
{
|
||||||
$cat_id = $this->app_cat->add( array('name' => $cat_name,'descr' => $cat_name ));
|
$cat_id = $this->categories->add(array('name' => $cat_name,'descr' => $cat_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($cat_id)
|
||||||
|
{
|
||||||
$cat_id_list[] = $cat_id;
|
$cat_id_list[] = $cat_id;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (count($cat_id_list) > 1)
|
if (count($cat_id_list) > 1)
|
||||||
{
|
{
|
||||||
|
$cat_id_list = array_unique($cat_id_list);
|
||||||
sort($cat_id_list, SORT_NUMERIC);
|
sort($cat_id_list, SORT_NUMERIC);
|
||||||
}
|
}
|
||||||
return $cat_id_list;
|
return $cat_id_list;
|
||||||
@ -1326,25 +1320,19 @@ class boinfolog
|
|||||||
*/
|
*/
|
||||||
function get_categories($cat_id_list)
|
function get_categories($cat_id_list)
|
||||||
{
|
{
|
||||||
if (!is_object($this->glob_cat))
|
if (!is_object($this->categories))
|
||||||
{
|
{
|
||||||
if (!is_object($GLOBALS['egw']->categories))
|
$this->categories =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'infolog');
|
||||||
{
|
|
||||||
$GLOBALS['egw']->categories =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'phpgw');
|
|
||||||
}
|
|
||||||
$this->glob_cat =& $GLOBALS['egw']->categories;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_object($this->app_cat))
|
if (!is_array($cat_id_list))
|
||||||
{
|
{
|
||||||
$this->app_cat =& CreateObject('phpgwapi.categories',$GLOBALS['egw_info']['user']['account_id'],'infolog');
|
$cat_id_list = explode(',',$cat_id_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
$cat_list = array();
|
$cat_list = array();
|
||||||
foreach(is_array($cat_id_list) ? $cat_id_list : explode(',',$cat_id_list) as $cat_id)
|
foreach($cat_id_list as $cat_id)
|
||||||
{
|
{
|
||||||
if ( ($cat_data = $this->glob_cat->return_single($cat_id))
|
if ($cat_data = $this->categories->return_single($cat_id))
|
||||||
|| ($cat_data = $this->app_cat->return_single($cat_id)) )
|
|
||||||
{
|
{
|
||||||
$cat_list[] = $cat_data[0]['name'];
|
$cat_list[] = $cat_data[0]['name'];
|
||||||
}
|
}
|
||||||
|
@ -463,11 +463,19 @@
|
|||||||
$values['level'] = $this->id2name($values['parent'],'level')+1;
|
$values['level'] = $this->id2name($values['parent'],'level')+1;
|
||||||
$values['main'] = $this->id2name($values['parent'],'main');
|
$values['main'] = $this->id2name($values['parent'],'main');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$values = array_merge(
|
||||||
|
array(
|
||||||
|
'app_name' => $this->app_name,
|
||||||
|
'access' => 'public',
|
||||||
|
),
|
||||||
|
$values);
|
||||||
|
|
||||||
$this->db->insert($this->table,array(
|
$this->db->insert($this->table,array(
|
||||||
'cat_parent' => $values['parent'],
|
'cat_parent' => $values['parent'],
|
||||||
'cat_owner' => $this->account_id,
|
'cat_owner' => $this->account_id,
|
||||||
'cat_access' => $values['access'],
|
'cat_access' => $values['access'],
|
||||||
'cat_appname' => $this->app_name,
|
'cat_appname' => $values['app_name'],
|
||||||
'cat_name' => $values['name'],
|
'cat_name' => $values['name'],
|
||||||
'cat_description' => $values['descr'],
|
'cat_description' => $values['descr'],
|
||||||
'cat_data' => $values['data'],
|
'cat_data' => $values['data'],
|
||||||
@ -597,22 +605,40 @@
|
|||||||
* @param string $cat_name cat-name
|
* @param string $cat_name cat-name
|
||||||
* @return int cat-id or 0 if not found
|
* @return int cat-id or 0 if not found
|
||||||
*/
|
*/
|
||||||
function name2id($cat_name)
|
function name2id($cat_name,$strip)
|
||||||
{
|
{
|
||||||
static $cache = array(); // a litle bit of caching
|
static $cache = array(); // a litle bit of caching
|
||||||
|
|
||||||
if (isset($cache[$cat_name])) return $cache[$cat_name];
|
if (isset($cache[$cat_name])) return $cache[$cat_name];
|
||||||
|
|
||||||
$this->db->select($this->table,'cat_id',array(
|
if ($strip === true)
|
||||||
'cat_name' => $cat_name,
|
{
|
||||||
'(cat_appname='.$this->db->quote($this->app_name)." OR cat_appname='phpgw')",
|
$strip = 'X-';
|
||||||
|
}
|
||||||
|
|
||||||
|
$cats = array($cat_name);
|
||||||
|
if (isset($strip) && strncmp($strip, $cat_name, strlen($strip)) == 0)
|
||||||
|
{
|
||||||
|
$stripped_cat_name = substr($cat_name, strlen($strip));
|
||||||
|
if (isset($cache[$stripped_cat_name]))
|
||||||
|
{
|
||||||
|
$cache[$cat_name] = $cache[$stripped_cat_name];
|
||||||
|
return $cache[$stripped_cat_name];
|
||||||
|
}
|
||||||
|
$cats[] = $stripped_cat_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$this->db->select($this->table,array('cat_name','cat_id'),array(
|
||||||
|
'cat_name' => $cats,
|
||||||
|
'cat_appname' => array($this->app_name, 'phpgw'),
|
||||||
),__LINE__,__FILE__,0,
|
),__LINE__,__FILE__,0,
|
||||||
"ORDER BY (CASE cat_owner WHEN ".(int)$this->account_id." THEN 1 WHEN -1 THEN 2 ELSE 3 END),cat_appname='phpgw'",
|
"ORDER BY cat_name!='$cat_name',(CASE cat_owner WHEN ".(int)$this->account_id." THEN 1 WHEN -1 THEN 2 ELSE 3 END),cat_appname='phpgw'",
|
||||||
false,1);
|
false,1);
|
||||||
|
|
||||||
if (!$this->db->next_record()) return 0; // cat not found, dont cache it, as it might be created in this request
|
if (!$this->db->next_record()) return 0; // cat not found, dont cache it, as it might be created in this request
|
||||||
|
|
||||||
return $cache[$cat_name] = (int) $this->db->f('cat_id');
|
return $cache[$this->db->f('cat_name')] = (int) $this->db->f('cat_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user