Merge pull request #3679 from yashodha/CRM-14951
[civicrm-core.git] / api / v3 / ReportTemplate.php
index 195b8eaf4b8668e00ca9da3a2edcbf1e9b968cd0..ad618ac654d699c7b80b58a5d3d9ab6ef35acf11 100644 (file)
@@ -5,7 +5,9 @@
  *
  * FIXME This is a bare-minimum placeholder
  *
- * @param  array  $ params input parameters
+ * @param $params
+ *
+ * @internal param $array $ params input parameters
  *
  * {@example OptionValueGet.php 0}
  * @example OptionValueGet.php
@@ -29,6 +31,8 @@ function civicrm_api3_report_template_get($params) {
  *
  * {@example OptionValueCreate.php}
  *
+ * @param $params
+ *
  * @return array of newly created option_value property values.
  * {@getfields OptionValue_create}
  * @access public
@@ -88,10 +92,17 @@ function civicrm_api3_report_template_delete($params) {
  */
 function civicrm_api3_report_template_getrows($params) {
   civicrm_api3_verify_one_mandatory($params, NULL, array('report_id', 'instance_id'));
-  list($rows, $instance, $labels) = _civicrm_api3_report_template_getrows($params);
-  return civicrm_api3_create_success($rows, $params, 'report_template', 'getrows', CRM_Core_DAO::$_nullObject, $labels);
+  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);
 }
 
+/**
+ * @param $params
+ *
+ * @return array
+ * @throws API_Exception
+ * @throws CiviCRM_API3_Exception
+ */
 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'));
@@ -118,21 +129,34 @@ function _civicrm_api3_report_template_getrows($params) {
   $reportInstance->setOffsetValue($options['offset']);
   $reportInstance->beginPostProcessCommon();
   $sql = $reportInstance->buildQuery();
-  $rows = $metadata = array();
+  $rows = $metadata = $requiredMetadata  = array();
   $reportInstance->buildRows($sql, $rows);
-  $metadata['title'] = $reportInstance->getTitle();
-  foreach ($reportInstance->_columnHeaders as $key => $header) {
-    //would be better just to expect reports to provide titles but reports are not consistent
-    //NB I think these are already translated
-    $metadata['labels'][$key] = !empty($header['title']) ? $header['title'] : '';
+  $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);
 }
 
+/**
+ * @param $params
+ *
+ * @return array
+ */
 function civicrm_api3_report_template_getstatistics($params) {
-  list($rows, $reportInstance, $labels) = _civicrm_api3_report_template_getrows($params);
+  list($rows, $reportInstance, $metadata) = _civicrm_api3_report_template_getrows($params);
   $stats = $reportInstance->statistics($rows);
-  return civicrm_api3_create_success($stats, $params, 'report_template');
+  return civicrm_api3_create_success($stats, $params, 'report_template', 'getstatistics', CRM_Core_DAO::$_nullObject, $metadata);
 }
 /**
  * Retrieve rows from a report template