summaryrefslogtreecommitdiff
path: root/app/Model/ActionParameter.php
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-01-03 18:18:14 -0500
committerFrederic Guillot <fred@kanboard.net>2016-01-03 18:18:14 -0500
commit0751508ae3e1e2731e7c699b69c873e31ecc9ab7 (patch)
tree8a0fabcbdef995b4d22979aafc6a6e720dc7c445 /app/Model/ActionParameter.php
parente2b6d4fa18d5f7bcdd0f44b9c952aa80e02285de (diff)
Reduce number of SQL queries for actions
Diffstat (limited to 'app/Model/ActionParameter.php')
-rw-r--r--app/Model/ActionParameter.php45
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');
}