forked from extern/egroupware
enable unshare action also when shared-with column is shown and fix some bugs arround unsharing and resharing
This commit is contained in:
parent
0d68c751bf
commit
378b3c6eef
@ -356,7 +356,7 @@ class addressbook_ui extends addressbook_bo
|
|||||||
/**
|
/**
|
||||||
* Get actions / context menu items
|
* Get actions / context menu items
|
||||||
*
|
*
|
||||||
* @param string $tid_filter =null
|
* @param ?string $tid_filter =null
|
||||||
* @return array see Etemplate\Widget\Nextmatch::get_actions()
|
* @return array see Etemplate\Widget\Nextmatch::get_actions()
|
||||||
*/
|
*/
|
||||||
public function get_actions($tid_filter=null)
|
public function get_actions($tid_filter=null)
|
||||||
@ -1495,7 +1495,8 @@ class addressbook_ui extends addressbook_bo
|
|||||||
foreach($contact['shared'] as $key => $shared)
|
foreach($contact['shared'] as $key => $shared)
|
||||||
{
|
{
|
||||||
// only unshare contacts shared by current user
|
// only unshare contacts shared by current user
|
||||||
if ($shared['shared_by'] == $this->user &&
|
if (($shared['shared_by'] == $this->user ||
|
||||||
|
$this->check_perms(ACL::EDIT, $contact)) &&
|
||||||
// only unshare from given addressbook, or all
|
// only unshare from given addressbook, or all
|
||||||
(empty($query['filter']) || $shared['shared_with'] == (int)$query['filter']))
|
(empty($query['filter']) || $shared['shared_with'] == (int)$query['filter']))
|
||||||
{
|
{
|
||||||
@ -1967,6 +1968,11 @@ class addressbook_ui extends addressbook_bo
|
|||||||
}
|
}
|
||||||
$order = $query['order'];
|
$order = $query['order'];
|
||||||
|
|
||||||
|
$unshare_grants = [];
|
||||||
|
foreach($this->grants as $grantee => $rights)
|
||||||
|
{
|
||||||
|
if ($rights & (ACL::EDIT|self::ACL_SHARED)) $unshare_grants[] = $grantee;
|
||||||
|
}
|
||||||
$readonlys = array();
|
$readonlys = array();
|
||||||
foreach($rows as $n => &$row)
|
foreach($rows as $n => &$row)
|
||||||
{
|
{
|
||||||
@ -2076,7 +2082,8 @@ class addressbook_ui extends addressbook_bo
|
|||||||
$row['cat_id'] = $this->categories->check_list(Acl::READ,$row['cat_id']);
|
$row['cat_id'] = $this->categories->check_list(Acl::READ,$row['cat_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($query['col_filter']['shared_by'] == $this->user)
|
if ($query['col_filter']['shared_by'] == $this->user || !empty($row['shared_with']) &&
|
||||||
|
array_intersect($unshare_grants, explode(',', $row['shared_with'])))
|
||||||
{
|
{
|
||||||
$row['class'] .= 'unshare_contact ';
|
$row['class'] .= 'unshare_contact ';
|
||||||
}
|
}
|
||||||
|
@ -672,7 +672,7 @@ class Sql extends Api\Storage
|
|||||||
if (($key = array_search('shared_with', $extra_cols)) !== false)
|
if (($key = array_search('shared_with', $extra_cols)) !== false)
|
||||||
{
|
{
|
||||||
$extra_cols[$key] = '(SELECT '.$this->db->group_concat('DISTINCT shared_with').' FROM '.self::SHARED_TABLE.
|
$extra_cols[$key] = '(SELECT '.$this->db->group_concat('DISTINCT shared_with').' FROM '.self::SHARED_TABLE.
|
||||||
' WHERE '.self::SHARED_TABLE.'.contact_id='.$this->table_name.'.contact_id) AS shared_with';
|
' WHERE '.self::SHARED_TABLE.'.contact_id='.$this->table_name.'.contact_id AND shared_deleted IS NULL) AS shared_with';
|
||||||
}
|
}
|
||||||
if (!empty($filter['shared_with']))
|
if (!empty($filter['shared_with']))
|
||||||
{
|
{
|
||||||
@ -1114,8 +1114,9 @@ class Sql extends Api\Storage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->db->insert(self::SHARED_TABLE, $data,
|
$this->db->insert(self::SHARED_TABLE, $data,
|
||||||
array_intersect_key($data, array_flip(['shared_by','shared_with','contact_id','share_id'])), __LINE__, __FILE__);
|
$where = array_intersect_key($data, array_flip(['shared_by','shared_with','contact_id','share_id'])), __LINE__, __FILE__);
|
||||||
$data['shared_id'] = $this->db->get_last_insert_id(self::SHARED_TABLE, 'share_id');
|
// if we resurect a previous deleted share, we dont get the shared_id back, need to query it
|
||||||
|
$data['shared_id'] = $this->db->select(self::SHARED_TABLE, 'shared_id', $where, __LINE__, __FILE__)->fetchColumn();
|
||||||
}
|
}
|
||||||
$ids[] = (int)$data['shared_id'];
|
$ids[] = (int)$data['shared_id'];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user