Example #1
0
 static function getFields()
 {
     return SearchFields_Attachment::getFields();
 }
Example #2
0
 /**
  * Enter description here...
  *
  * @param DevblocksSearchCriteria[] $params
  * @param integer $limit
  * @param integer $page
  * @param string $sortBy
  * @param boolean $sortAsc
  * @param boolean $withCounts
  * @return array
  */
 static function search($params, $limit = 10, $page = 0, $sortBy = null, $sortAsc = null, $withCounts = true)
 {
     $db = DevblocksPlatform::getDatabaseService();
     $fields = SearchFields_Attachment::getFields();
     // Sanitize
     if (!isset($fields[$sortBy])) {
         $sortBy = null;
     }
     list($tables, $wheres) = parent::_parseSearchParams($params, array(), $fields, $sortBy);
     $start = $page * $limit;
     // [JAS]: 1-based [TODO] clean up + document
     $total = -1;
     $sql = sprintf("SELECT " . "a.id as %s, " . "a.message_id as %s, " . "a.display_name as %s, " . "a.mime_type as %s, " . "a.file_size as %s, " . "a.filepath as %s, " . "m.address_id as %s, " . "m.created_date as %s, " . "m.is_outgoing as %s, " . "t.id as %s, " . "t.mask as %s, " . "t.subject as %s, " . "ad.email as %s " . "FROM attachment a " . "INNER JOIN message m ON (a.message_id = m.id) " . "INNER JOIN ticket t ON (m.ticket_id = t.id) " . "INNER JOIN address ad ON (m.address_id = ad.id) " . "", SearchFields_Attachment::ID, SearchFields_Attachment::MESSAGE_ID, SearchFields_Attachment::DISPLAY_NAME, SearchFields_Attachment::MIME_TYPE, SearchFields_Attachment::FILE_SIZE, SearchFields_Attachment::FILEPATH, SearchFields_Attachment::MESSAGE_ADDRESS_ID, SearchFields_Attachment::MESSAGE_CREATED_DATE, SearchFields_Attachment::MESSAGE_IS_OUTGOING, SearchFields_Attachment::TICKET_ID, SearchFields_Attachment::TICKET_MASK, SearchFields_Attachment::TICKET_SUBJECT, SearchFields_Attachment::ADDRESS_EMAIL) . (!empty($wheres) ? sprintf("WHERE %s ", implode(' AND ', $wheres)) : "") . (!empty($sortBy) ? sprintf("ORDER BY %s %s", $sortBy, $sortAsc || is_null($sortAsc) ? "ASC" : "DESC") : "");
     // [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;
             }
             $ticket_id = intval($rs->fields[SearchFields_Attachment::ID]);
             $results[$ticket_id] = $result;
             $rs->MoveNext();
         }
     }
     // [JAS]: Count all
     if ($withCounts) {
         $rs = $db->Execute($sql);
         $total = $rs->RecordCount();
     }
     return array($results, $total);
 }