diff options
author | Frederic Guillot <fred@kanboard.net> | 2016-01-03 18:18:14 -0500 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2016-01-03 18:18:14 -0500 |
commit | 0751508ae3e1e2731e7c699b69c873e31ecc9ab7 (patch) | |
tree | 8a0fabcbdef995b4d22979aafc6a6e720dc7c445 /app/Model/ActionParameter.php | |
parent | e2b6d4fa18d5f7bcdd0f44b9c952aa80e02285de (diff) |
Reduce number of SQL queries for actions
Diffstat (limited to 'app/Model/ActionParameter.php')
-rw-r--r-- | app/Model/ActionParameter.php | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/app/Model/ActionParameter.php b/app/Model/ActionParameter.php index f170ef66..1e4d7544 100644 --- a/app/Model/ActionParameter.php +++ b/app/Model/ActionParameter.php @@ -24,10 +24,53 @@ class ActionParameter extends Base * Get all action params * * @access public + * @return array + */ + public function getAll() + { + $params = $this->db->table(self::TABLE)->findAll(); + return $this->toDictionary($params); + } + + /** + * Get all params for a list of actions + * + * @access public + * @param array $action_ids + * @return array + */ + public function getAllByActions(array $action_ids) + { + $params = $this->db->table(self::TABLE)->in('action_id', $action_ids)->findAll(); + return $this->toDictionary($params); + } + + /** + * Build params dictionary + * + * @access private + * @param array $params + * @return array + */ + private function toDictionary(array $params) + { + $result = array(); + + foreach ($params as $param) { + $result[$param['action_id']][$param['name']] = $param['value']; + } + + return $result; + } + + /** + * Get all action params for a given action + * + * @access public * @param integer $action_id * @return array */ - public function getAll($action_id) + public function getAllByAction($action_id) { return $this->db->hashtable(self::TABLE)->eq('action_id', $action_id)->getAll('name', 'value'); } |