Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 33
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
Favorites
0.00% covered (danger)
0.00%
0 / 33
0.00% covered (danger)
0.00%
0 / 3
156
0.00% covered (danger)
0.00%
0 / 1
 get
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
20
 add
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
12
 delete
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
30
1<?php
2
3namespace NewfoldLabs\WP\Module\Patterns\Library;
4
5/**
6 * Favorites library.
7 */
8class Favorites {
9    /**
10     * Get items.
11     *
12     * @param array $args Array of arguments.
13     * @return array
14     */
15    public static function get( $args = array() ) {
16
17        $user_id = \get_current_user_id();
18
19        $data = \get_user_meta( $user_id, 'nfd_wb_favorites', true );
20        $data = is_array( $data ) ? $data : array();
21
22        if ( isset( $args['per_page'] ) ) {
23            $page = isset( $args['page'] ) ? $args['page'] : 1;
24            $data = array_slice( $data, ( $page - 1 ) * $args['per_page'], $args['per_page'] );
25        }
26
27        return $data;
28    }
29
30    /**
31     * Add to Favorites.
32     *
33     * @param array  $item Item to add.
34     * @param string $type Type of item to add.
35     *
36     * @return array $data Updated array of favorite items.
37     */
38    public static function add( $item, $type ) {
39
40        $user_id = \get_current_user_id();
41
42        $item = array(
43            'id'      => \sanitize_text_field( $item['id'] ),
44            'title'   => \sanitize_text_field( $item['title'] ),
45            'content' => $item['content'],
46            'type'    => $type,
47        );
48
49        $data = \get_user_meta( $user_id, 'nfd_wb_favorites', true );
50
51        if ( ! is_array( $data ) ) {
52            $data = array();
53        }
54
55        if ( ! in_array( $item, $data, true ) ) {
56            $data[] = $item;
57        }
58
59        \update_user_meta( $user_id, 'nfd_wb_favorites', $data );
60
61        return $data;
62    }
63
64    /**
65     * Remove from Favorites.
66     *
67     * @param array $item Item to add.
68     *
69     * @return array $data Updated array of favorite items.
70     */
71    public static function delete( $item ) {
72
73        $user_id = \get_current_user_id();
74
75        $favorites = \get_user_meta( $user_id, 'nfd_wb_favorites', true );
76
77        if ( ! is_array( $favorites ) ) {
78            $favorites = array();
79        }
80
81        $data = array();
82
83        if ( ! empty( $favorites ) ) {
84            foreach ( $favorites as $favorite ) {
85                if ( $item['id'] !== $favorite['id'] ) {
86                    $data[] = $favorite;
87                }
88            }
89        }
90
91        \update_user_meta( $user_id, 'nfd_wb_favorites', $data );
92
93        return $data;
94    }
95}