1人のユーザーに1人の連絡先が表示されないようにする簡単な方法

私のユーザは、特定のケースのワーカーが特定のクライアントにアクセスできないようにしたいと考えています。現在、私たちはACLを使用していませんが、テストシステムでは動作しますが、システムでは動作しない1つのスキームを実装しました。除外されたクライアント以外のすべてのクライアントと、このグループのみを表示できるケースワーカーとのグループを持つスマートグループを作成しました。誰もがこれを達成する別の方法を提案することはできますか?

ベストアンサー

hook_civicrm_aclWhereClause
でこれを行うことができます:

  • 「すべての連絡先を表示」を削除する、ケースワーカー用に「すべての連絡先を編集する」
  • hook_civicrm_aclWhereClause を実装する拡張機能を作成します:

function everyoneexcept_civicrm_aclWhereClause($type,
&$tables, $whereTables, &$contactID, &$where) { if
($contactID == 'your_case_worker_id') { $where .= ($where ? ' AND '
: '') . " contact_a.id != 'your_case_worker_relative_id'"; }
}

一回限りの場合は、あなたのケースワーカーとその親戚の連絡先IDをハードコーディングしてください。

警告 – 広範囲にテストされていない!

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です