Come posso accedere al valore di raggruppamento di un'attività in CiviCases?

Aug 24 2020

Ho solo iniziato a provare a modificare alcune funzionalità di un database CiviCRM esistente in un sistema di test (utilizzando CiviCases). Quindi sono ancora un principiante, mi scuso se questa è una domanda sciocca, e qualsiasi suggerimento sarà apprezzato :)

Voglio includere una funzionalità che escluda tutte le attività con il valore di raggruppamento "sistema" dalla visualizzazione del caso. In questo momento, la visualizzazione del caso è invasa da attività non rilevanti per gli utenti (ad esempio, "Tipo di caso cambiato da ... a ..."). Alle attività viene assegnato questo valore di raggruppamento in una tabella denominata civicrm_option_value.

Quindi suppongo di dover includere un filtro nel file /civicrm/CRM/Case/Form/CaseView.php, accedendo al raggruppamento di ogni attività e testandolo per "sistema". Potete darmi qualche suggerimento su come posso accedere al valore di raggruppamento delle attività?

Grazie in anticipo emma

Risposte

4 PradeepNayak Aug 24 2020 at 22:15

La funzione responsabile della creazione dell'elenco delle attività sul caso è CRM_Case_BAO_Case::getCaseActivity(). È molto difficile modificare la funzione tramite modulo/plugin/estensione personalizzati.

Creerei un'estensione che altererebbe il callback della pagina per ' civicrm/ajax/activity' ' alla funzione personalizzata (ad es . CRM_ExtName_Page_AJAX::getCaseActivityUsando hook_civicrm_alterMenu hook. Copia CRM_Activity_Page_AJAX::getCaseActivity()nel tuo file php personalizzato, ad esempio CRM_ExtName_Page_AJAX::getCaseActivity()e cambia la riga sotto la riga nella tua funzione personalizzata che fondamentalmente copierà incolla della CRM_Case_BAO_Case::getCaseActivityfunzione con cambia il clausola where per includere le tue condizioni

$activities = CRM_Case_BAO_Case::getCaseActivity($caseID, $params, $contactID, $context, $userID);

HTH

Pradeep

2 emma Sep 16 2020 at 17:06

Alla fine, ho cambiato direttamente la CRM_Case_BAO_Case::getCaseActivityfunzione invece di creare un'estensione.

Nello specifico, ho modificato la $wherevariabile di questa funzione in:

    $where = "
            WHERE cca.case_id= %1
              AND ca.is_current_revision = 1
              AND cov.grouping = 'visible'";

Qui, "cov" è l'alias per la tabella civicrm_option_value. L'alias è già predefinito nella $fromvariabile sopra.

Ho aggiunto il valore di raggruppamento "visibile" manualmente nel database a quelle attività che dovrebbero essere visibili nella vista del caso.

1 Noname Aug 26 2020 at 14:07

Ho postato quasi esattamente la stessa domanda e ho ottenuto alcune risposte piuttosto utili.

Soprattutto l'estensione menzionata qui sembra essere davvero utile (non l'ho ancora provata, però).