PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / Membership / Repositories / GroupRepository.php
wp-user-avatar / src / Membership / Repositories Last commit date
BaseRepository.php 3 years ago CouponRepository.php 2 years ago CustomerRepository.php 1 year ago GroupRepository.php 3 years ago OrderRepository.php 11 months ago PlanRepository.php 2 months ago RepositoryInterface.php 3 years ago SubscriptionRepository.php 3 months ago index.php 3 years ago
GroupRepository.php
150 lines
1 <?php
2
3 namespace ProfilePress\Core\Membership\Repositories;
4
5 use ProfilePress\Core\Base;
6 use ProfilePress\Core\Classes\PROFILEPRESS_sql;
7 use ProfilePress\Core\Membership\Models\Group\GroupEntity;
8 use ProfilePress\Core\Membership\Models\Group\GroupFactory;
9 use ProfilePress\Core\Membership\Models\ModelInterface;
10
11 class GroupRepository extends BaseRepository
12 {
13 const DB_KEY = 'ppress_plan_group';
14
15 /**
16 * @param GroupEntity $data
17 *
18 * @return bool|int
19 */
20 public function add(ModelInterface $data)
21 {
22 $result = PROFILEPRESS_sql::add_meta_data(
23 self::DB_KEY,
24 [
25 'name' => $data->name,
26 'plan_ids' => $data->plan_ids,
27 'plans_display_field' => $data->plans_display_field,
28 ]
29 );
30
31 return ! $result ? false : $result;
32 }
33
34 /**
35 * @param GroupEntity $data
36 *
37 * @return false
38 */
39 public function update(ModelInterface $data)
40 {
41 $result = PROFILEPRESS_sql::update_meta_value(
42 $data->id,
43 self::DB_KEY,
44 [
45 'name' => $data->name,
46 'plan_ids' => $data->plan_ids,
47 'plans_display_field' => $data->plans_display_field
48 ]
49 );
50
51 return ! $result ? false : $data->id;
52 }
53
54 /**
55 * @param $id
56 *
57 * @return bool
58 */
59 public function delete($id)
60 {
61 return PROFILEPRESS_sql::delete_meta_data($id);
62 }
63
64 /**
65 * @param $id
66 *
67 * @return GroupEntity
68 */
69 public function retrieve($id)
70 {
71 $result = PROFILEPRESS_sql::get_meta_value($id, self::DB_KEY);
72
73 if ( ! $result || ! is_array($result)) {
74 $result = [];
75 } else {
76 $result['id'] = intval($id);
77 }
78
79 return GroupFactory::make($result);
80 }
81
82 /**
83 * @param int $limit
84 * @param int $current_page
85 * @param bool $count
86 *
87 * @return GroupEntity[]|array|int
88 */
89 public function retrieveAll($limit = 0, $current_page = 1, $order = 'DESC', $count = false)
90 {
91 $cache_key = sprintf('%s:%s:%s:%s', (string)$limit, (string)$current_page, $order, (string)$count);
92
93 $cache = wp_cache_get($cache_key);
94
95
96 if ($cache) return $cache;
97
98 $table = Base::meta_data_db_table();
99
100 $order_sort = in_array($order, ['DESC', 'ASC'], true) ? $order : 'DESC';
101
102 $replacement = [self::DB_KEY];
103 $sql = "SELECT * FROM $table";
104 if (true === $count) {
105 $sql = "SELECT COUNT(*) FROM $table";
106 }
107 $sql .= " WHERE meta_key = %s";
108 $sql .= " ORDER BY id $order_sort";
109
110 if ($limit > 0) {
111 $sql .= " LIMIT %d";
112 $replacement[] = $limit;
113 }
114
115 if ($current_page > 1) {
116 $sql .= " OFFSET %d";
117 $replacement[] = ($current_page - 1) * $limit;
118 }
119
120 $sql = $this->wpdb()->prepare($sql, $replacement);
121
122 if (true === $count) {
123
124 $result = (int)$this->wpdb()->get_var($sql);
125
126 wp_cache_set($cache_key, $result, '', MINUTE_IN_SECONDS);
127
128 return $result;
129 }
130
131 $result = $this->wpdb()->get_results($sql, 'ARRAY_A');
132
133 if (is_array($result) && ! empty($result)) {
134
135 $result = array_map(function ($data) {
136 if (isset($data['meta_value'])) {
137 $data = GroupFactory::make(['id' => $data['id']] + unserialize($data['meta_value'], ['allowed_classes' => false]));
138 }
139
140 return $data;
141 }, $result);
142
143 wp_cache_set($cache_key, $result, '', MINUTE_IN_SECONDS);
144
145 return $result;
146 }
147
148 return [];
149 }
150 }