xref: /plugin/recommend/helper/assignment.php (revision 75494ca1620e263b1ca1a80c8e4863ca3326371d)
1*75494ca1SAnna Dabrowska<?php
2*75494ca1SAnna Dabrowska
3*75494ca1SAnna Dabrowskaclass helper_plugin_recommend_assignment
4*75494ca1SAnna Dabrowska{
5*75494ca1SAnna Dabrowska    public static $confFile = DOKU_CONF . 'recommend_snippets.json';
6*75494ca1SAnna Dabrowska
7*75494ca1SAnna Dabrowska    public static function getAssignments()
8*75494ca1SAnna Dabrowska    {
9*75494ca1SAnna Dabrowska        return @jsonToArray(self::$confFile);
10*75494ca1SAnna Dabrowska    }
11*75494ca1SAnna Dabrowska
12*75494ca1SAnna Dabrowska    public function addAssignment($assignment)
13*75494ca1SAnna Dabrowska    {
14*75494ca1SAnna Dabrowska        $assignments = self::getAssignments();
15*75494ca1SAnna Dabrowska        $assignments[] = $assignment;
16*75494ca1SAnna Dabrowska        return (bool)file_put_contents(self::$confFile, json_encode($assignments, JSON_PRETTY_PRINT));
17*75494ca1SAnna Dabrowska    }
18*75494ca1SAnna Dabrowska
19*75494ca1SAnna Dabrowska    public function removeAssignment($assignment)
20*75494ca1SAnna Dabrowska    {
21*75494ca1SAnna Dabrowska        if (empty($assignment['pattern'])) {
22*75494ca1SAnna Dabrowska            return false;
23*75494ca1SAnna Dabrowska        }
24*75494ca1SAnna Dabrowska
25*75494ca1SAnna Dabrowska        $assignments = self::getAssignments();
26*75494ca1SAnna Dabrowska        $remaining = array_filter($assignments, function($data) use ($assignment) {
27*75494ca1SAnna Dabrowska            return !(
28*75494ca1SAnna Dabrowska                $assignment['pattern'] === $data['pattern']
29*75494ca1SAnna Dabrowska                && $assignment['user'] === $data['user']
30*75494ca1SAnna Dabrowska                && $assignment['message'] === $data['message']
31*75494ca1SAnna Dabrowska            );
32*75494ca1SAnna Dabrowska        });
33*75494ca1SAnna Dabrowska
34*75494ca1SAnna Dabrowska        if (count($remaining) < count($assignments)) {
35*75494ca1SAnna Dabrowska            return (bool)file_put_contents(self::$confFile, json_encode($remaining, JSON_PRETTY_PRINT));
36*75494ca1SAnna Dabrowska        }
37*75494ca1SAnna Dabrowska        return false;
38*75494ca1SAnna Dabrowska    }
39*75494ca1SAnna Dabrowska}
40