summaryrefslogtreecommitdiff
path: root/app/functions.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/functions.php')
-rw-r--r--app/functions.php76
1 files changed, 76 insertions, 0 deletions
diff --git a/app/functions.php b/app/functions.php
index b759763f..eaf33a52 100644
--- a/app/functions.php
+++ b/app/functions.php
@@ -3,6 +3,82 @@
use Kanboard\Core\Translator;
/**
+ * Associate another dict to a dict based on a common key
+ *
+ * @param array $input
+ * @param array $relations
+ * @param string $relation
+ * @param string $column
+ */
+function array_merge_relation(array &$input, array &$relations, $relation, $column)
+{
+ foreach ($input as &$row) {
+ if (isset($row[$column]) && isset($relations[$row[$column]])) {
+ $row[$relation] = $relations[$row[$column]];
+ } else {
+ $row[$relation] = array();
+ }
+ }
+}
+
+/**
+ * Create indexed array from a list of dict
+ *
+ * $input = [
+ * ['k1' => 1, 'k2' => 2], ['k1' => 3, 'k2' => 4], ['k1' => 2, 'k2' => 5]
+ * ]
+ *
+ * array_column_index($input, 'k1') will returns:
+ *
+ * [
+ * 1 => [['k1' => 1, 'k2' => 2], ['k1' => 2, 'k2' => 5]],
+ * 3 => [['k1' => 3, 'k2' => 4]],
+ * ]
+ *
+ * @param array $input
+ * @param string $column
+ * @return array
+ */
+function array_column_index(array &$input, $column)
+{
+ $result = array();
+
+ foreach ($input as &$row) {
+ if (isset($row[$column])) {
+ $result[$row[$column]][] = $row;
+ }
+ }
+
+ return $result;
+}
+
+/**
+ * Sum all values from a single column in the input array
+ *
+ * $input = [
+ * ['column' => 2], ['column' => 3]
+ * ]
+ *
+ * array_column_sum($input, 'column') returns 5
+ *
+ * @param array $input
+ * @param string $column
+ * @return double
+ */
+function array_column_sum(array &$input, $column)
+{
+ $sum = 0.0;
+
+ foreach ($input as &$row) {
+ if (isset($row[$column])) {
+ $sum += (float) $row[$column];
+ }
+ }
+
+ return $sum;
+}
+
+/**
* Build version number from git-archive output
*
* @param string $ref