array( 'title' => ts('Delete Contributions'), 'class' => 'CRM_Contribute_Form_Task_Delete', 'result' => FALSE, ), 2 => array( 'title' => ts('Print Selected Rows'), 'class' => 'CRM_Contribute_Form_Task_Print', 'result' => FALSE, ), 3 => array( 'title' => ts('Export Contributions'), 'class' => array( 'CRM_Export_Form_Select', 'CRM_Export_Form_Map', ), 'result' => FALSE, ), 4 => array( 'title' => ts('Batch Update Contributions Via Profile'), 'class' => array( 'CRM_Contribute_Form_Task_PickProfile', 'CRM_Contribute_Form_Task_Batch', ), 'result' => TRUE, ), 5 => array( 'title' => ts('Send Email to Contacts'), 'class' => 'CRM_Contribute_Form_Task_Email', 'result' => TRUE, ), 6 => array( 'title' => ts('Update Pending Contribution Status'), 'class' => 'CRM_Contribute_Form_Task_Status', 'result' => TRUE, ), 7 => array( 'title' => ts('Print or Email Contribution Receipts'), 'class' => 'CRM_Contribute_Form_Task_PDF', 'result' => FALSE, ), 8 => array( 'title' => ts('Thank-you Letters for Contributions'), 'class' => 'CRM_Contribute_Form_Task_PDFLetter', 'result' => FALSE, ), 9 => array( 'title' => ts('Print or Email Contribution Invoices'), 'class' => 'CRM_Contribute_Form_Task_Invoice', 'result' => FALSE, ), 10 => array( 'title' => ts('Latex Letters for Contributions'), 'class' => 'CRM_Contribute_Form_Task_PDFLatex', 'result' => FALSE, ), ); //CRM-4418, check for delete if (!CRM_Core_Permission::check('delete in CiviContribute')) { unset(self::$_tasks[1]); } //CRM-12920 - check for edit permission if (!CRM_Core_Permission::check('edit contributions')) { unset(self::$_tasks[4], self::$_tasks[6]); } // remove action "Print or Email Contribution Invoices" $invoiceSettings = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME, 'contribution_invoice_settings'); $invoicing = CRM_Utils_Array::value('invoicing', $invoiceSettings); if (!$invoicing) { unset(self::$_tasks[9]); } CRM_Utils_Hook::searchTasks('contribution', self::$_tasks); asort(self::$_tasks); } return self::$_tasks; } /** * These tasks are the core set of task titles * on contributors * * @return array * the set of task titles */ public static function &taskTitles() { self::tasks(); $titles = array(); foreach (self::$_tasks as $id => $value) { $titles[$id] = $value['title']; } return $titles; } /** * Show tasks selectively based on the permission level * of the user * * @param int $permission * * @param bool $softCreditFiltering * * @return array * set of tasks that are valid for the user */ public static function &permissionedTaskTitles($permission, $softCreditFiltering = FALSE) { $tasks = array(); if (($permission == CRM_Core_Permission::EDIT) || CRM_Core_Permission::check('edit contributions') ) { $tasks = self::taskTitles(); } else { $tasks = array( 3 => self::$_tasks[3]['title'], 5 => self::$_tasks[5]['title'], 7 => self::$_tasks[7]['title'], ); //CRM-4418, if (CRM_Core_Permission::check('delete in CiviContribute')) { $tasks[1] = self::$_tasks[1]['title']; } } if ($softCreditFiltering) { unset($tasks[4], $tasks[7]); } return $tasks; } /** * These tasks are the core set of tasks that the user can perform * on contributors * * @param int $value * * @return array * the set of tasks for a group of contributors */ public static function getTask($value) { self::tasks(); if (!$value || !CRM_Utils_Array::value($value, self::$_tasks)) { // make the print task by default $value = 2; } // this is possible since hooks can inject a task // CRM-13697 if (!isset(self::$_tasks[$value]['result'])) { self::$_tasks[$value]['result'] = NULL; } return array( self::$_tasks[$value]['class'], self::$_tasks[$value]['result'], ); } }