Come posso accedere al valore di raggruppamento di un'attività in CiviCases?
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
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
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.
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ò).