$params['option_group_id'] = CRM_Core_DAO::getFieldValue(
'CRM_Core_DAO_OptionGroup', 'report_template', 'id', 'name'
);
+ if (!empty($params['component_id']) && !is_numeric($params['component_id'])) {
+ $components = CRM_Core_PseudoConstant::get('CRM_Core_DAO_OptionValue', 'component_id', array('onlyActive' => FALSE, 'labelColumn' => 'name'));
+ $params['component_id'] = array_search($params['component_id'], $components);
+ }
return civicrm_api3_option_value_create($params);
}
_civicrm_api3_option_value_create_spec($params);
$params['value']['api.aliases'] = array('report_url');
$params['name']['api.aliases'] = array('class_name');
+ $params['option_group_id']['api.default'] = CRM_Core_DAO::getFieldValue(
+ 'CRM_Core_DAO_OptionGroup', 'report_template', 'id', 'name'
+ );
// $params['component']['api.required'] = TRUE;
}
return civicrm_api3_option_value_delete($params);
}
+/**
+ * Retrieve rows from a report template
+ *
+ * @param array $params input parameters
+ *
+ * @return array details of found instances
+ * @access public
+ */
+function civicrm_api3_report_template_getrows($params) {
+ civicrm_api3_verify_one_mandatory($params, NULL, array('report_id', 'instance_id'));
+ list($rows, $instance, $metadata) = _civicrm_api3_report_template_getrows($params);
+ return civicrm_api3_create_success($rows, $params, 'report_template', 'getrows', CRM_Core_DAO::$_nullObject, $metadata);
+}
+
+function _civicrm_api3_report_template_getrows($params) {
+ if(empty($params['report_id'])) {
+ $params['report_id'] = civicrm_api3('report_instance', 'getvalue', array('id' => $params['instance_id'], 'return' => 'report_id'));
+ }
+
+ $class = civicrm_api3('option_value', 'getvalue', array(
+ 'option_group_id' => 'report_template',
+ 'return' => 'name',
+ 'value' => $params['report_id'],
+ )
+ );
+
+ $reportInstance = new $class();
+ if(!empty($params['instance_id'])) {
+ $reportInstance->setID($params['instance_id']);
+ }
+ $reportInstance->setParams($params);
+ $reportInstance->noController = TRUE;
+ $reportInstance->preProcess();
+ $reportInstance->setDefaultValues(FALSE);
+ $reportInstance->setParams(array_merge($reportInstance->getDefaultValues(), $params));
+ $options = _civicrm_api3_get_options_from_params($params, TRUE,'report_template','get');
+ $reportInstance->setLimitValue($options['limit']);
+ $reportInstance->setOffsetValue($options['offset']);
+ $reportInstance->beginPostProcessCommon();
+ $sql = $reportInstance->buildQuery();
+ $rows = $metadata = $requiredMetadata = array();
+ $reportInstance->buildRows($sql, $rows);
+ $requiredMetadata = array();
+ if(isset($params['options']) && !empty($params['options']['metadata'])) {
+ $requiredMetadata = $params['options']['metadata'];
+ if(in_array('title', $requiredMetadata)) {
+ $metadata['metadata']['title'] = $reportInstance->getTitle();
+ }
+ if(in_array('labels', $requiredMetadata)) {
+ foreach ($reportInstance->_columnHeaders as $key => $header) {
+ //would be better just to expect reports to provide titles but reports are not consistent so we anticipate empty
+ //NB I think these are already translated
+ $metadata['metadata']['labels'][$key] = !empty($header['title']) ? $header['title'] : '';
+ }
+ }
+ }
+ return array($rows, $reportInstance, $metadata);
+}
+
+function civicrm_api3_report_template_getstatistics($params) {
+ list($rows, $reportInstance, $metadata) = _civicrm_api3_report_template_getrows($params);
+ $stats = $reportInstance->statistics($rows);
+ return civicrm_api3_create_success($stats, $params, 'report_template', 'getstatistics', CRM_Core_DAO::$_nullObject, $metadata);
+}
+/**
+ * Retrieve rows from a report template
+ *
+ * @param array $params input parameters
+ *
+ * @return array details of found instances
+ * @access public
+ */
+function _civicrm_api3_report_template_getrows_spec(&$params) {
+ $params['report_id'] = array(
+ 'title' => 'Report ID - eg. member/lapse',
+ );
+}
+
/*
function civicrm_api3_report_template_getfields($params) {
return civicrm_api3_create_success(array(