/**
  * Returns the columns that have been selected to be displayed on the specified page. This list
  * contains all selected columns, even if they won't actually be displayed.
  *
  * @access  public
  * @param   integer $prj_id The ID of the project.
  * @param   string $page The page to return columns for.
  * @return  array An array of columns that should be displayed.
  */
 function getSelectedColumns($prj_id, $page)
 {
     static $returns;
     // poor man's caching system
     if (!empty($returns[$prj_id][$page])) {
         return $returns[$prj_id][$page];
     }
     $stmt = "SELECT\n                    ctd_field,\n                    ctd_min_role,\n                    ctd_rank\n                FROM\n                    " . APP_DEFAULT_DB . "." . APP_TABLE_PREFIX . "columns_to_display\n                WHERE\n                    ctd_prj_id = {$prj_id} AND\n                    ctd_page = '{$page}'\n                ORDER BY\n                    ctd_rank";
     $res = $GLOBALS["db_api"]->dbh->getAssoc($stmt, false, array(), DB_FETCHMODE_ASSOC);
     if (PEAR::isError($res)) {
         Error_Handler::logError(array($res->getMessage(), $res->getDebugInfo()), __FILE__, __LINE__);
         return array();
     } else {
         $returns[$prj_id][$page] = array();
         foreach ($res as $field_name => $row) {
             $returns[$prj_id][$page][$field_name] = Display_Column::getColumnInfo($page, $field_name);
             $returns[$prj_id][$page][$field_name]['min_role'] = $row['ctd_min_role'];
             $returns[$prj_id][$page][$field_name]['rank'] = $row['ctd_rank'];
         }
         return $returns[$prj_id][$page];
     }
 }