Пример #1
0
 static function getFields()
 {
     return SearchFields_DevblocksTemplate::getFields();
 }
Пример #2
0
 public static function getSearchQueryComponents($columns, $params, $sortBy = null, $sortAsc = null)
 {
     $fields = SearchFields_DevblocksTemplate::getFields();
     // Sanitize
     if (!isset($fields[$sortBy]) || '*' == substr($sortBy, 0, 1)) {
         $sortBy = null;
     }
     list($tables, $wheres) = parent::_parseSearchParams($params, $columns, $fields, $sortBy);
     $select_sql = sprintf("SELECT " . "devblocks_template.id as %s, " . "devblocks_template.plugin_id as %s, " . "devblocks_template.path as %s, " . "devblocks_template.tag as %s, " . "devblocks_template.last_updated as %s ", SearchFields_DevblocksTemplate::ID, SearchFields_DevblocksTemplate::PLUGIN_ID, SearchFields_DevblocksTemplate::PATH, SearchFields_DevblocksTemplate::TAG, SearchFields_DevblocksTemplate::LAST_UPDATED);
     $join_sql = "FROM devblocks_template ";
     // Custom field joins
     //list($select_sql, $join_sql, $has_multiple_values) = self::_appendSelectJoinSqlForCustomFieldTables(
     //	$tables,
     //	$params,
     //	'devblocks_template.id',
     //	$select_sql,
     //	$join_sql
     //);
     $where_sql = "" . (!empty($wheres) ? sprintf("WHERE %s ", implode(' AND ', $wheres)) : "WHERE 1 ");
     $sort_sql = !empty($sortBy) ? sprintf("ORDER BY %s %s ", $sortBy, $sortAsc || is_null($sortAsc) ? "ASC" : "DESC") : " ";
     $result = array('primary_table' => 'devblocks_template', 'select' => $select_sql, 'join' => $join_sql, 'where' => $where_sql, 'has_multiple_values' => $has_multiple_values, 'sort' => $sort_sql);
     return $result;
 }
Пример #3
0
 /**
  * Enter description here...
  *
  * @param array $columns
  * @param DevblocksSearchCriteria[] $params
  * @param integer $limit
  * @param integer $page
  * @param string $sortBy
  * @param boolean $sortAsc
  * @param boolean $withCounts
  * @return array
  */
 static function search($columns, $params, $limit = 10, $page = 0, $sortBy = null, $sortAsc = null, $withCounts = true)
 {
     $db = DevblocksPlatform::getDatabaseService();
     $fields = SearchFields_DevblocksTemplate::getFields();
     // Sanitize
     if (!isset($fields[$sortBy])) {
         $sortBy = null;
     }
     list($tables, $wheres) = parent::_parseSearchParams($params, $columns, $fields, $sortBy);
     $start = $page * $limit;
     // [JAS]: 1-based
     $total = -1;
     $select_sql = sprintf("SELECT " . "devblocks_template.id as %s, " . "devblocks_template.plugin_id as %s, " . "devblocks_template.path as %s, " . "devblocks_template.tag as %s, " . "devblocks_template.last_updated as %s ", SearchFields_DevblocksTemplate::ID, SearchFields_DevblocksTemplate::PLUGIN_ID, SearchFields_DevblocksTemplate::PATH, SearchFields_DevblocksTemplate::TAG, SearchFields_DevblocksTemplate::LAST_UPDATED);
     $join_sql = "FROM devblocks_template ";
     // Custom field joins
     //list($select_sql, $join_sql, $has_multiple_values) = self::_appendSelectJoinSqlForCustomFieldTables(
     //	$tables,
     //	$params,
     //	'devblocks_template.id',
     //	$select_sql,
     //	$join_sql
     //);
     $where_sql = "" . (!empty($wheres) ? sprintf("WHERE %s ", implode(' AND ', $wheres)) : "");
     $sort_sql = !empty($sortBy) ? sprintf("ORDER BY %s %s ", $sortBy, $sortAsc || is_null($sortAsc) ? "ASC" : "DESC") : " ";
     $sql = $select_sql . $join_sql . $where_sql . ($has_multiple_values ? 'GROUP BY devblocks_template.id ' : '') . $sort_sql;
     // [TODO] Could push the select logic down a level too
     if ($limit > 0) {
         $rs = $db->SelectLimit($sql, $limit, $start) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg());
         /* @var $rs ADORecordSet */
     } else {
         $rs = $db->Execute($sql) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg());
         /* @var $rs ADORecordSet */
         $total = $rs->RecordCount();
     }
     $results = array();
     if (is_a($rs, 'ADORecordSet')) {
         while (!$rs->EOF) {
             $result = array();
             foreach ($rs->fields as $f => $v) {
                 $result[$f] = $v;
             }
             $object_id = intval($rs->fields[SearchFields_DevblocksTemplate::ID]);
             $results[$object_id] = $result;
             $rs->MoveNext();
         }
     }
     // [JAS]: Count all
     if ($withCounts) {
         $count_sql = ($has_multiple_values ? "SELECT COUNT(DISTINCT devblocks_template.id) " : "SELECT COUNT(devblocks_template.id) ") . $join_sql . $where_sql;
         $total = $db->GetOne($count_sql);
     }
     return array($results, $total);
 }