2018-08-11 10:06:37 +00:00
< ? php
require_once 'annualgrantbudgets.civix.php' ;
use CRM_Annualgrantbudgets_ExtensionUtil as E ;
2018-08-11 16:43:08 +00:00
define ( 'GRANT_SCHOLARSHIP_CUSTOM_GROUP' , 'grant_scholarship' );
define ( 'GRANT_SCHOLARSHIP_CUSTOM_FIELD' , 'is_grant_scholarship' );
define ( 'GRANT_SCHOLARSHIP_CUSTOM_TABLE_NAME' , 'civicrm_value_grant_scholarship' );
2018-08-11 18:29:59 +00:00
define ( 'GRANT_SCHOLARSHIP_YEAR_DIFF' , 10 );
2018-08-12 00:17:25 +00:00
define ( 'GRANT_DATE_CHECK_FIELD' , 'decision_date' );
define ( 'GRANT_AMOUNT_CHECK_FIELD' , 'amount_granted' );
2018-08-11 10:06:37 +00:00
/**
* Implements hook_civicrm_config () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_config
*/
function annualgrantbudgets_civicrm_config ( & $config ) {
_annualgrantbudgets_civix_civicrm_config ( $config );
}
/**
* Implements hook_civicrm_xmlMenu () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_xmlMenu
*/
function annualgrantbudgets_civicrm_xmlMenu ( & $files ) {
_annualgrantbudgets_civix_civicrm_xmlMenu ( $files );
}
/**
* Implements hook_civicrm_install () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_install
*/
function annualgrantbudgets_civicrm_install () {
_annualgrantbudgets_civix_civicrm_install ();
}
/**
* Implements hook_civicrm_postInstall () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_postInstall
*/
function annualgrantbudgets_civicrm_postInstall () {
_annualgrantbudgets_civix_civicrm_postInstall ();
}
/**
* Implements hook_civicrm_uninstall () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_uninstall
*/
function annualgrantbudgets_civicrm_uninstall () {
_annualgrantbudgets_civix_civicrm_uninstall ();
2018-08-11 11:33:32 +00:00
CRM_Core_DAO :: executeQuery ( "
DROP TABLE IF EXISTS civicrm_grant_budget ;
" );
2018-08-11 10:06:37 +00:00
}
/**
* Implements hook_civicrm_enable () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_enable
*/
function annualgrantbudgets_civicrm_enable () {
_annualgrantbudgets_civix_civicrm_enable ();
}
/**
* Implements hook_civicrm_disable () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_disable
*/
function annualgrantbudgets_civicrm_disable () {
_annualgrantbudgets_civix_civicrm_disable ();
}
/**
* Implements hook_civicrm_upgrade () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_upgrade
*/
function annualgrantbudgets_civicrm_upgrade ( $op , CRM_Queue_Queue $queue = NULL ) {
return _annualgrantbudgets_civix_civicrm_upgrade ( $op , $queue );
}
/**
* Implements hook_civicrm_managed () .
*
* Generate a list of entities to create / deactivate / delete when this module
* is installed , disabled , uninstalled .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_managed
*/
function annualgrantbudgets_civicrm_managed ( & $entities ) {
_annualgrantbudgets_civix_civicrm_managed ( $entities );
2018-08-11 11:33:32 +00:00
$entities [] = [
'module' => 'org.agbu.annualgrantbudgets' ,
2018-08-11 16:43:08 +00:00
'name' => GRANT_SCHOLARSHIP_CUSTOM_GROUP ,
2018-08-11 11:33:32 +00:00
'entity' => 'CustomGroup' ,
'params' => [
'version' => 3 ,
2018-08-11 16:43:08 +00:00
'name' => GRANT_SCHOLARSHIP_CUSTOM_GROUP ,
2018-08-11 11:33:32 +00:00
'title' => ts ( 'Grant Scholarship' ),
'extends' => 'FinancialType' ,
'style' => 'Inline' ,
'collapse_display' => TRUE ,
'is_active' => TRUE ,
'is_multiple' => FALSE ,
'collapse_adv_display' => FALSE ,
'is_reserved' => TRUE ,
2018-08-11 16:43:08 +00:00
'table_name' => GRANT_SCHOLARSHIP_CUSTOM_TABLE_NAME ,
2018-08-11 11:33:32 +00:00
],
];
$entities [] = [
'module' => 'org.agbu.annualgrantbudgets' ,
2018-08-11 16:43:08 +00:00
'name' => GRANT_SCHOLARSHIP_CUSTOM_FIELD ,
2018-08-11 11:33:32 +00:00
'entity' => 'CustomField' ,
'params' => [
'version' => 3 ,
2018-08-11 16:43:08 +00:00
'name' => GRANT_SCHOLARSHIP_CUSTOM_FIELD ,
2018-08-11 11:33:32 +00:00
'label' => ts ( 'Scholarship?' ),
'data_type' => 'Boolean' ,
'html_type' => 'Radio' ,
'is_required' => FALSE ,
'is_searchable' => FALSE ,
'is_search_range' => FALSE ,
2018-08-11 14:37:03 +00:00
'default_value' => '0' ,
2018-08-11 11:33:32 +00:00
'is_active' => TRUE ,
'text_length' => 255 ,
2018-08-11 16:43:08 +00:00
'column_name' => GRANT_SCHOLARSHIP_CUSTOM_FIELD ,
'custom_group_id' => GRANT_SCHOLARSHIP_CUSTOM_GROUP ,
2018-08-11 11:33:32 +00:00
],
];
2018-08-11 10:06:37 +00:00
}
/**
* Implements hook_civicrm_caseTypes () .
*
* Generate a list of case - types .
*
* Note : This hook only runs in CiviCRM 4.4 +.
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_caseTypes
*/
function annualgrantbudgets_civicrm_caseTypes ( & $caseTypes ) {
_annualgrantbudgets_civix_civicrm_caseTypes ( $caseTypes );
}
/**
* Implements hook_civicrm_angularModules () .
*
* Generate a list of Angular modules .
*
* Note : This hook only runs in CiviCRM 4.5 +. It may
* use features only available in v4 . 6 +.
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_angularModules
*/
function annualgrantbudgets_civicrm_angularModules ( & $angularModules ) {
_annualgrantbudgets_civix_civicrm_angularModules ( $angularModules );
}
/**
* Implements hook_civicrm_alterSettingsFolders () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_alterSettingsFolders
*/
function annualgrantbudgets_civicrm_alterSettingsFolders ( & $metaDataFolders = NULL ) {
_annualgrantbudgets_civix_civicrm_alterSettingsFolders ( $metaDataFolders );
}
/**
* Implements hook_civicrm_entityTypes () .
*
* Declare entity types provided by this module .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_entityTypes
*/
function annualgrantbudgets_civicrm_entityTypes ( & $entityTypes ) {
_annualgrantbudgets_civix_civicrm_entityTypes ( $entityTypes );
2018-08-11 11:33:32 +00:00
$entityTypes [] = [
'name' => 'GrantBudget' ,
'class' => 'CRM_Grant_DAO_GrantBudget' ,
'table' => 'civicrm_grant_budget' ,
];
}
/**
* Implements hook_civicrm_navigationMenu () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_navigationMenu
*
*/
function annualgrantbudgets_civicrm_navigationMenu ( & $menu ) {
_annualgrantbudgets_civix_insert_navigation_menu ( $menu , 'Administer/CiviGrant' , [
'label' => ts ( 'Grant Budget' , [ 'domain' => 'org.agbu.annualgrantbudgets' ]),
'name' => 'grant_annual_budget' ,
'url' => CRM_Utils_System :: url ( 'civicrm/grant/annual/budgets' , 'reset=1&action=browse' , TRUE ),
'active' => 1 ,
'permission_operator' => 'OR' ,
'permission' => 'access CiviGrant,administer CiviCRM' ,
]);
_annualgrantbudgets_civix_navigationMenu ( $menu );
2018-08-11 10:06:37 +00:00
}
2018-08-11 19:59:39 +00:00
/**
* Implements hook_civicrm_apiWrappers () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_apiWrappers
*
*/
function annualgrantbudgets_civicrm_apiWrappers ( & $wrappers , $apiRequest ) {
if ( strtolower ( $apiRequest [ 'entity' ]) == 'grantbudget' && $apiRequest [ 'action' ] == 'create' ) {
$wrappers [] = new CRM_AnnualGrantBudgets_APIWrapper ();
}
}
2018-08-11 22:36:44 +00:00
/**
* Implements hook_civicrm_validateForm () .
*
* @ link http :// wiki . civicrm . org / confluence / display / CRMDOC / hook_civicrm_validateForm
*
*/
function annualgrantbudgets_civicrm_validateForm ( $formName , & $fields , & $files , & $form , & $errors ) {
if ( $formName == 'CRM_Grant_Form_Grant' && ! ( $form -> _action & CRM_Core_Action :: DELETE )) {
if ( empty ( $fields [ 'financial_type_id' ])
|| empty ( $fields [ 'status_id' ])
2018-08-12 00:17:25 +00:00
|| empty ( $fields [ GRANT_DATE_CHECK_FIELD ])
|| empty ( $fields [ GRANT_AMOUNT_CHECK_FIELD ])
2018-08-11 22:36:44 +00:00
) {
return ;
}
$paidStatusID = CRM_Core_PseudoConstant :: getKey (
'CRM_Grant_DAO_Grant' ,
'status_id' ,
'Paid'
);
if ( $paidStatusID != $fields [ 'status_id' ]) {
return ;
}
2018-08-12 00:10:36 +00:00
list ( $isError , $grantBudget ) = CRM_Grant_BAO_GrantBudget :: checkBudget ( $fields , $form -> getVar ( '_id' ));
if ( $isError ) {
2018-08-12 00:17:25 +00:00
$errors [ GRANT_AMOUNT_CHECK_FIELD ] = ts ( " The annual budget for this grant is { $grantBudget [ 'budget' ] } . Grants totaling { $grantBudget [ 'total_amount_granted' ] } have been made. { $grantBudget [ 'balance_amount' ] } remains. " );
2018-08-11 22:36:44 +00:00
}
}
}