1: <?php
2: namespace Budovy;
3:
4: class DocumentRepository extends Repository {
5: 6: 7: 8: 9: 10: 11: 12: 13:
14: function getGridSelection($filter, $order, $page, $limit, $ids = array()) {
15: $selection = $this->getTable()->select('document.id, document.name, documenttype.name AS documenttype, document.lastmod');
16:
17: if (isset($order[0]))
18: $selection->order(implode(' ', $order));
19:
20: $selection->page($page, $limit);
21:
22: return $this->addGridFilter($selection, $filter, $ids);
23: }
24:
25: 26: 27: 28: 29: 30: 31:
32: function getGridCount($filter, $ids = array()) {
33: $selection = $this->getTable()->select('COUNT(*) AS cnt');
34:
35: $result = $this->addGridFilter($selection, $filter, $ids)->fetch();
36:
37: return $result->cnt;
38: }
39:
40: 41: 42: 43: 44: 45: 46: 47:
48: private function addGridFilter(\Nette\Database\Table\Selection $selection, $filter, $ids) {
49: $filters = array();
50:
51: foreach ($filter as $k => $v) {
52: if ($k == 'documenttype')
53: $filters['document.id_documenttype=?'] = $v;
54: else if ($k == 'lastmod')
55: $filters['DATE(`document`.`lastmod`)=?'] = $v;
56: else if ($k == 'assigned') {
57: if ($v == 1)
58: $filters['document.id IN ?'] = $ids;
59: else if ($v == 0)
60: $filters['document.id NOT IN ?'] = $ids;
61: } else
62: $filters['`document`.'. $k . ' LIKE ?'] = "%$v%";
63: }
64:
65: return $selection->where($filters);
66: }
67:
68: 69: 70: 71: 72: 73:
74: function getDocumentsMeta($id_document) {
75: return $this->getTable()->select('OCTET_LENGTH(data) AS size, mime, lastmod, name, filename')->where(array('id' => $id_document))->fetch();
76: }
77:
78: 79: 80: 81: 82:
83: function getDocuments() {
84: return $this->getTable()->select('document.id, document.name, document.lastmod, type.name AS type');
85: }
86: }