1: <?php
2: namespace Budovy;
3:
4: class UserRepository extends Repository {
5: 6: 7: 8: 9:
10: function getPairData() {
11: return $this->getTable()->select('id, CONCAT(firstname, \' \', lastname) AS name')->order('name ASC')->fetchPairs('id', 'name');
12: }
13:
14: 15: 16: 17: 18: 19: 20: 21: 22:
23: function getGridSelection($filter, $order, $page, $limit) {
24: $selection = $this->getTable()->select('user.*, role.name AS role');
25:
26: if (isset($order[0]))
27: $selection->order(implode(' ', $order));
28:
29: $selection->page($page, $limit);
30:
31: return $this->addGridFilter($selection, $filter);
32: }
33:
34: 35: 36: 37: 38: 39:
40: function getGridCount($filter) {
41: $selection = $this->getTable()->select('COUNT(*) AS cnt');
42:
43: $result = $this->addGridFilter($selection, $filter)->fetch();
44:
45: return $result->cnt;
46: }
47:
48: 49: 50: 51: 52: 53: 54:
55: private function addGridFilter(\Nette\Database\Table\Selection $selection, $filter) {
56: $filters = array();
57:
58: foreach ($filter as $k => $v) {
59: if ($k == 'role')
60: $filters['user.role=?'] = $v;
61: else
62: $filters[$k . ' LIKE ?'] = "%$v%";
63: }
64:
65: return $selection->where($filters);
66: }
67:
68: 69: 70: 71: 72: 73:
74: public function findByName($username) {
75: return $this->getTable()->where('username', $username)->fetch();
76: }
77:
78: 79: 80: 81: 82: 83:
84: public function setPassword($id, $password) {
85: $this->getTable()->where(array('id' => $id))->update(array(
86: 'password' => UserManager::calculateHash($password)
87: ));
88: }
89:
90: 91: 92: 93: 94:
95: public function getEnabledEmails() {
96: return $this->getTable()
97: ->select('email')
98: ->where('receiveemail=1');
99: }
100: }