diff --git a/components/com_fabrik/models/list.php b/components/com_fabrik/models/list.php index c3925935db0..a623ad8d671 100644 --- a/components/com_fabrik/models/list.php +++ b/components/com_fabrik/models/list.php @@ -2540,11 +2540,12 @@ private function selectSlug(&$fields) * Get the select part of the query * * @param string $mode list/form - effects which elements are selected + * @param JQueryBuilder $query Querybuilder (false to return string) * - * @return string + * @return mixed string if $query = false, otherwise $query */ - public function buildQuerySelect($mode = 'list') + public function buildQuerySelect($mode = 'list', $query = false) { $profiler = JProfiler::getInstance('Application'); JDEBUG ? $profiler->mark('queryselect: start') : null; @@ -2571,16 +2572,38 @@ public function buildQuerySelect($mode = 'list') { $sfields .= ', '; $strPKey = $pk . ' AS ' . $db->quoteName('__pk_val') . "\n"; - $query = 'SELECT ' . $calc_found_rows . ' DISTINCT ' . $sfields . $strPKey; + + if ($query) + { + $query->select($calc_found_rows . ' DISTINCT ' . $sfields . $strPKey); + } + else + { + $sql = 'SELECT ' . $calc_found_rows . ' DISTINCT ' . $sfields . $strPKey; + } } else { - $query = 'SELECT ' . $calc_found_rows . ' DISTINCT ' . trim($sfields, ", \n") . "\n"; + if ($query) + { + $query->select($calc_found_rows . ' DISTINCT ' . $sfields); + } + else + { + $sql = 'SELECT ' . $calc_found_rows . ' DISTINCT ' . trim($sfields, ", \n") . "\n"; + } } - $query .= ' FROM ' . $db->quoteName($table->db_table_name) . " \n"; + if ($query) + { + $query->from($db->quoteName($table->db_table_name)); + } + else + { + $sql .= ' FROM ' . $db->quoteName($table->db_table_name) . " \n"; + } - return $query; + return $query ? $query : $sql; } /** diff --git a/plugins/fabrik_visualization/calendar/models/calendar.php b/plugins/fabrik_visualization/calendar/models/calendar.php index 18cede39325..150a645a77f 100644 --- a/plugins/fabrik_visualization/calendar/models/calendar.php +++ b/plugins/fabrik_visualization/calendar/models/calendar.php @@ -450,8 +450,6 @@ public function getEvents() // If db join selected for the label we need to get the label element and not the value $label = FabrikString::safeColName($els[$qlabel]->getOrderByName()); - // $$$ hugh @TODO doesn't seem to work for join elements, so adding hack till I can talk - // to rob about this one. if (method_exists($els[$qlabel], 'getJoinLabelColumn')) { $label = $els[$qlabel]->getJoinLabelColumn(); @@ -465,11 +463,11 @@ public function getEvents() $pk = $listModel->getTable()->db_primary_key; $status = empty($data['status']) ? '""' : $data['status']; $query = $db->getQuery(true); + $query = $listModel->buildQuerySelect('list', $query); $status = trim($data['status']) !== '' ? FabrikString::safeColName($data['status']) : "''"; $query->select($pk . ' AS id, ' . $pk . ' AS rowid, ' . $startdate . ' AS startdate, ' . $enddate . ' AS enddate') ->select('"" AS link, ' . $label . ' AS label, ' . $db->quote($data['colour']) . ' AS colour, 0 AS formid') ->select($status . ' AS status') - ->from($table->db_table_name) ->order($startdate . ' ASC'); $query = $listModel->buildQueryJoin($query); $query = $listModel->buildQueryWhere(true, $query);