protected $groupConcatTested = FALSE;
+ /**
+ * Are we in print mode. Can be set by another outputMode, ex: sendmail.
+ *
+ * @var bool
+ */
+ public $printOnly = FALSE;
+
/**
* An attribute for checkbox/radio form field layout
*
protected $_instanceButtonName = NULL;
protected $_createNewButtonName = NULL;
- protected $_printButtonName = NULL;
- protected $_pdfButtonName = NULL;
- protected $_csvButtonName = NULL;
protected $_groupButtonName = NULL;
protected $_chartButtonName = NULL;
protected $_csvSupported = TRUE;
*/
protected $_sections = NULL;
protected $_autoIncludeIndexedFieldsAsOrderBys = 0;
- protected $_absoluteUrl = FALSE;
+
+ /**
+ * Whether to generate absolute URLs (ex: in report emails).
+ *
+ * @var bool
+ */
+ public $_absoluteUrl = FALSE;
/**
* Flag to indicate if result-set is to be stored in a class variable which could be retrieved using getResultSet() method.
$this->_id = $instanceID;
}
+ /**
+ * Getter for $_id.
+ *
+ * @return int
+ */
+ public function getID() {
+ return $this->_id;
+ }
+
/**
* Setter for $_force.
*
case CRM_Report_Form::OP_DATE:
// build datetime fields
- CRM_Core_Form_Date::buildDateRange($this, $fieldName, $count, '_from', '_to', ts('From:'), FALSE, $operations);
- $count++;
+ $this->addDatePickerRange($fieldName, $field['title'], FALSE, FALSE, 'From', 'To', $operations, '_to', '_from');
break;
case CRM_Report_Form::OP_DATETIME:
// build datetime fields
- CRM_Core_Form_Date::buildDateRange($this, $fieldName, $count, '_from', '_to', ts('From:'), FALSE, $operations, 'searchDate', TRUE);
- $count++;
+ $this->addDatePickerRange($fieldName, $field['title'], TRUE, FALSE, 'From', 'To', $operations, '_to', '_from');
break;
case CRM_Report_Form::OP_INT:
];
$this->assignTabs();
+ $this->sqlFormattedArray = [];
$this->sqlArray[] = $sql;
foreach ($this->sqlArray as $sql) {
foreach (['LEFT JOIN'] as $term) {
return "( {$fieldName} {$sqlOP} )";
}
- list($from, $to) = $this->getFromTo($relative, $from, $to, $fromTime, $toTime);
+ if ($relative) {
+ list($from, $to) = $this->getFromTo($relative, $from, $to, $fromTime, $toTime);
+ }
if ($from) {
- $clauses[] = "( {$fieldName} >= $from )";
+ $clauses[] = "( {$fieldName} >= " . date('YmdHis', strtotime($from)) . ')';
}
if ($to) {
- $clauses[] = "( {$fieldName} <= {$to} )";
+ $clauses[] = "( {$fieldName} <= " . date('YmdHis', strtotime($to)) . ')';
}
-
if (!empty($clauses)) {
return implode(' AND ', $clauses);
}
* @return array
*/
public function getFromTo($relative, $from, $to, $fromTime = NULL, $toTime = NULL) {
- if (empty($toTime)) {
- // odd legacy behaviour to treat NULL as 'end of the day'
- // recommend updating reports to call CRM_Utils_Date::getFromTo
- //directly (default on the function is the actual default there).
- $toTime = '235959';
+ if (!empty($fromTime) || !empty($toTime)) {
+ throw new CRM_Core_Exception('Report template needs to be updated as getFromTo no longer supports fromTime or ToTime Parameters');
}
- return CRM_Utils_Date::getFromTo($relative, $from, $to, $fromTime, $toTime);
+ return CRM_Utils_Date::getFromTo($relative, $from, $to);
}
/**
CRM_Core_DAO::$_nullObject
);
- $this->_absoluteUrl = FALSE;
- $printOnly = FALSE;
- $this->assign('printOnly', FALSE);
+ $this->assign('printOnly', $this->printOnly);
if ($this->_outputMode == 'print' ||
($this->_sendmail && !$this->_outputMode)
) {
- $this->assign('printOnly', TRUE);
- $printOnly = TRUE;
+ $this->printOnly = TRUE;
$this->addPaging = FALSE;
- $this->assign('outputMode', 'print');
$this->_outputMode = 'print';
if ($this->_sendmail) {
$this->_absoluteUrl = TRUE;
}
}
elseif ($this->_outputMode == 'pdf') {
- $printOnly = TRUE;
+ $this->printOnly = TRUE;
$this->addPaging = FALSE;
$this->_absoluteUrl = TRUE;
}
elseif ($this->_outputMode == 'csv') {
- $printOnly = TRUE;
+ $this->printOnly = TRUE;
$this->_absoluteUrl = TRUE;
$this->addPaging = FALSE;
}
- elseif ($this->_outputMode == 'group') {
- $this->assign('outputMode', 'group');
- }
- elseif ($this->_outputMode == 'create_report' && $this->_criteriaForm) {
- $this->assign('outputMode', 'create_report');
- }
elseif ($this->_outputMode == 'copy' && $this->_criteriaForm) {
$this->_createNew = TRUE;
}
$this->assign('outputMode', $this->_outputMode);
- $this->assign('printOnly', $printOnly);
+ $this->assign('printOnly', $this->printOnly);
// Get today's date to include in printed reports
- if ($printOnly) {
+ if ($this->printOnly) {
$reportDate = CRM_Utils_Date::customFormat(date('Y-m-d H:i'));
$this->assign('reportDate', $reportDate);
}
CRM_Utils_Array::value('operatorType', $field) !=
CRM_Report_Form::OP_MONTH
) {
- list($from, $to)
- = $this->getFromTo(
- CRM_Utils_Array::value("{$fieldName}_relative", $this->_params),
- CRM_Utils_Array::value("{$fieldName}_from", $this->_params),
- CRM_Utils_Array::value("{$fieldName}_to", $this->_params),
- CRM_Utils_Array::value("{$fieldName}_from_time", $this->_params),
- CRM_Utils_Array::value("{$fieldName}_to_time", $this->_params)
- );
- $from_time_format = !empty($this->_params["{$fieldName}_from_time"]) ? 'h' : 'd';
- $from = CRM_Utils_Date::customFormat($from, NULL, [$from_time_format]);
-
- $to_time_format = !empty($this->_params["{$fieldName}_to_time"]) ? 'h' : 'd';
- $to = CRM_Utils_Date::customFormat($to, NULL, [$to_time_format]);
+ $from = $this->_params["{$fieldName}_from"] ?? NULL;
+ $to = $this->_params["{$fieldName}_to"] ?? NULL;
+ if (!empty($this->_params["{$fieldName}_relative"])) {
+ list($from, $to) = CRM_Utils_Date::getFromTo($this->_params["{$fieldName}_relative"], NULL, NULL);
+ }
if ($from || $to) {
+ if ($from) {
+ $from = date('l j F Y, g:iA', strtotime($from));
+ }
+ if ($to) {
+ $to = date('l j F Y, g:iA', strtotime($to));
+ }
$statistics['filters'][] = [
'title' => $field['title'],
'value' => ts("Between %1 and %2", [1 => $from, 2 => $to]),
* Buld contact acl clause
* @deprecated in favor of buildPermissionClause
*
+ * Note that if the buildPermissionClause function is called (which most reports do from
+ * buildQuery then the results of this function are re-calculated and overwritten.
+ *
* @param string $tableAlias
*/
public function buildACLClause($tableAlias = 'contact_a') {
*/
protected function storeGroupByArray() {
- if (!CRM_Utils_Array::value('group_bys', $this->_params)
+ if (empty($this->_params['group_bys'])
|| !is_array($this->_params['group_bys'])) {
$this->_params['group_bys'] = [];
}
$relative = $this->_params["{$fieldName}_relative"] ?? NULL;
$from = $this->_params["{$fieldName}_from"] ?? NULL;
$to = $this->_params["{$fieldName}_to"] ?? NULL;
- $fromTime = $this->_params["{$fieldName}_from_time"] ?? NULL;
- $toTime = $this->_params["{$fieldName}_to_time"] ?? NULL;
- return $this->dateClause($field['dbAlias'], $relative, $from, $to, $field['type'], $fromTime, $toTime);
+ return $this->dateClause($field['dbAlias'], $relative, $from, $to, $field['type']);
}
}
else {