/** * Gets an issue list based on the given parameters. * * @param array $p_parameters * An array of ComparisonOperation objects * @param string $p_order * An array of columns and directions to order by * @param integer $p_count * The count of answers. * * @return array $debateAnswerAttachmentsList * An array of Attachment objects */ public static function GetList(array $p_parameters, $p_order = null, $p_start = 0, $p_limit = 0, &$p_count) { global $g_ado_db; if (!is_array($p_parameters)) { return null; } // adodb::selectLimit() interpretes -1 as unlimited if ($p_limit == 0) { $p_limit = -1; } // sets the where conditions foreach ($p_parameters as $param) { $comparisonOperation = self::ProcessListParameters($param); if (empty($comparisonOperation)) { continue; } if (strpos($comparisonOperation['left'], 'debate_nr') !== false) { $debate_nr = $comparisonOperation['right']; } if (strpos($comparisonOperation['left'], 'debateanswer_nr') !== false) { $debateanswer_nr = $comparisonOperation['right']; } } $sqlClauseObj = new SQLSelectClause(); // sets the columns to be fetched $tmpDebateAnswerAttachment = new DebateAnswerAttachment($language_id, $debate_nr); $columnNames = $tmpDebateAnswerAttachment->getColumnNames(true); foreach ($columnNames as $columnName) { $sqlClauseObj->addColumn($columnName); } // sets the main table for the query $mainTblName = $tmpDebateAnswerAttachment->getDbTableName(); $sqlClauseObj->setTable($mainTblName); unset($tmpDebateAnswerAttachment); if (empty($debateanswer_nr) || empty($debate_nr)) { return; } $sqlClauseObj->addWhere("fk_debate_nr = " . $g_ado_db->escape($debate_nr)); $sqlClauseObj->addWhere("fk_debateanswer_nr = " . $g_ado_db->escape($debateanswer_nr)); if (!is_array($p_order)) { $p_order = array(); } // sets the ORDER BY condition $p_order = count($p_order) > 0 ? $p_order : self::$s_defaultOrder; $order = self::ProcessListOrder($p_order); foreach ($order as $orderColumn => $orderDirection) { $sqlClauseObj->addOrderBy($orderColumn . ' ' . $orderDirection); } $sqlQuery = $sqlClauseObj->buildQuery(); // count all available results $countRes = $g_ado_db->Execute($sqlQuery); $p_count = $countRes->recordCount(); //get the wanted rows $debateAnswerAttachments = $g_ado_db->Execute($sqlQuery); // builds the array of debate objects $debateAnswerAttachmentsList = array(); while ($debateAnswerAttachment = $debateAnswerAttachments->FetchRow()) { $debateAnswerAttachment = new Attachment($debateAnswerAttachment['fk_attachment_id']); if ($debateAnswerAttachment->exists()) { $debateAnswerAttachmentsList[] = $debateAnswerAttachment; } } return $debateAnswerAttachmentsList; }