Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
71.43% |
10 / 14 |
|
75.00% |
3 / 4 |
CRAP | |
0.00% |
0 / 1 |
| TsumegoStatus | |
71.43% |
10 / 14 |
|
75.00% |
3 / 4 |
16.94 | |
0.00% |
0 / 1 |
| __construct | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
| less | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
| value | |
55.56% |
5 / 9 |
|
0.00% |
0 / 1 |
18.78 | |||
| getProblemsSolvedInSet | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
| 1 | <?php |
| 2 | |
| 3 | class TsumegoStatus extends AppModel |
| 4 | { |
| 5 | public function __construct($id = false, $table = null, $ds = null) |
| 6 | { |
| 7 | $id['table'] = 'tsumego_status'; |
| 8 | parent::__construct($id, $table, $ds); |
| 9 | } |
| 10 | |
| 11 | // when two statuses are to be merged, we need to decide which one is more valuable to keep for the user |
| 12 | public static function less($status1, $status2) |
| 13 | { |
| 14 | return self::value($status1) < self::value($status2); |
| 15 | } |
| 16 | |
| 17 | private static function value($status): int |
| 18 | { |
| 19 | switch ($status) |
| 20 | { |
| 21 | case 'F' : return 0; // failed |
| 22 | case 'N' : return 1; // nothing |
| 23 | case 'V' : return 2; // visited |
| 24 | case 'X' : return 3; // once solve but then failed |
| 25 | case 'S' : return 4; // once solved |
| 26 | case 'W' : return 5; // half XP after once solved |
| 27 | case 'C' : return 6; // double solved |
| 28 | case 'G' : return 7; // golden tsumego |
| 29 | default: throw new Exception("Unknown status: $status"); |
| 30 | } |
| 31 | } |
| 32 | |
| 33 | public static function getProblemsSolvedInSet($setID) |
| 34 | { |
| 35 | return Util::query(" |
| 36 | SELECT |
| 37 | COUNT(DISTINCT tsumego_status.id) AS total |
| 38 | FROM |
| 39 | tsumego_status |
| 40 | JOIN set_connection ON tsumego_status.tsumego_id = set_connection.tsumego_id AND set_connection.set_id = ? |
| 41 | WHERE |
| 42 | tsumego_status.user_id = ? AND |
| 43 | tsumego_status.status IN ('S', 'C', 'W')", [$setID, Auth::getUserID()])[0]["total"]; |
| 44 | } |
| 45 | } |