PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.0
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.0
4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 4.2.0 All 139 releases
learnpress / inc / Databases / class-lp-user-item-results-db.php

class-lp-user-item-results-db.php in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.4.0, at inc/Databases/class-lp-user-item-results-db.php

206 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 use LearnPress\Filters\UserItemsFilter;
4
5 /**
6 * Query in table learnpress_user_item_result.
7 *
8 * @author Nhamdv <email@email.com>
9 */
10 class LP_User_Items_Result_DB extends LP_Database {
11 private static $_instance = null;
12
13 protected function __construct() {
14 parent::__construct();
15 }
16
17 /**
18 * Get list results.
19 *
20 * @param [type] $user_item_id
21 * @param integer $limit Number result in db.
22 * @param boolean $last Remove lastest result.
23 *
24 * @return array result
25 */
26 public function get_results( $user_item_id, $limit = 3, $last = false ) {
27 global $wpdb;
28
29 if ( ! $user_item_id ) {
30 return array();
31 }
32
33 $limit = absint( $limit ) ?? 3;
34
35 $query = $wpdb->prepare(
36 "SELECT result FROM $wpdb->learnpress_user_item_results
37 WHERE user_item_id=%d ORDER BY id DESC LIMIT %d",
38 $user_item_id,
39 $limit + 1
40 );
41
42 $col = $wpdb->get_col( $query );
43
44 if ( ! empty( $col ) && $last ) {
45 unset( $col[0] );
46 }
47
48 return $col;
49 }
50
51 /**
52 * Get latest result.
53 *
54 * @param integer $user_item_id
55 *
56 * @return array|bool
57 */
58 public function get_result( int $user_item_id = 0 ) {
59 if ( ! $user_item_id ) {
60 return false;
61 }
62
63 $result = $this->wpdb->get_var(
64 $this->wpdb->prepare(
65 "SELECT result FROM $this->tb_lp_user_item_results
66 WHERE user_item_id = %d
67 ORDER BY id DESC LIMIT 1
68 ",
69 $user_item_id
70 )
71 );
72
73 return $result && is_string( $result ) ? json_decode( $result, true ) : false;
74 }
75
76 /**
77 * Update or Insert result
78 *
79 * @param int $user_item_id
80 * @param string $result
81 *
82 * @return bool|int
83 */
84 public function update( int $user_item_id = 0, string $result = '' ) {
85 global $wpdb;
86
87 if ( ! $user_item_id ) {
88 return false;
89 }
90
91 $max_id = $wpdb->get_var(
92 $wpdb->prepare(
93 "SELECT MAX(id) id FROM $wpdb->learnpress_user_item_results
94 WHERE user_item_id=%d
95 ",
96 $user_item_id
97 )
98 );
99
100 $data = array( 'result' => $result );
101 $where = array(
102 'id' => absint( $max_id ),
103 'user_item_id' => $user_item_id,
104 );
105 $format = array( '%s' );
106
107 if ( absint( $max_id ) > 0 ) {
108 $output = $wpdb->update( $wpdb->learnpress_user_item_results, $data, $where, $format );
109 } else {
110 $output = $this->insert( $user_item_id, $result );
111 }
112
113 return $output;
114 }
115
116 public function insert( $user_item_id = 0, $result = null ) {
117 global $wpdb;
118
119 if ( ! $user_item_id ) {
120 return false;
121 }
122
123 $insert = $wpdb->insert(
124 $wpdb->learnpress_user_item_results,
125 array(
126 'user_item_id' => $user_item_id,
127 'result' => $result,
128 ),
129 array( '%d', '%s' )
130 );
131
132 if ( $insert ) {
133 return $wpdb->insert_id;
134 }
135
136 return false;
137 }
138
139 /**
140 * Delete all results by user_item_id.
141 *
142 * @param int $user_item_id .
143 *
144 * @return bool|int
145 */
146 public function delete( $user_item_id = 0 ) {
147 if ( ! current_user_can( ADMIN_ROLE ) ) {
148 return false;
149 }
150
151 $delete = $this->wpdb->delete(
152 $this->tb_lp_user_item_results,
153 array(
154 'user_item_id' => $user_item_id,
155 ),
156 array( '%d' )
157 );
158
159 return $delete;
160 }
161
162 /**
163 * Delete all rows in user_item_ids
164 *
165 * @param LP_User_Items_Filter|UserItemsFilter $filter $filter->user_item_ids
166 *
167 * @return bool|int
168 * @since 4.1.4
169 * @author tungnx
170 * @version 1.0.0
171 */
172 public function remove_user_item_results( $filter ) {
173 // Check valid user.
174 /*if ( ! is_user_logged_in() || ( ! current_user_can( 'administrator' ) && get_current_user_id() != $filter->user_id ) ) {
175 throw new Exception( __( 'User invalid!', 'learnpress' ) );
176 }*/
177
178 if ( empty( $filter->user_item_ids ) ) {
179 return 1;
180 }
181
182 $where = 'WHERE 1=1 ';
183
184 $where .= $this->wpdb->prepare(
185 'AND user_item_id IN(' . LP_Helper::db_format_array( $filter->user_item_ids, '%d' ) . ')',
186 $filter->user_item_ids
187 );
188
189 return $this->wpdb->query(
190 "DELETE FROM {$this->tb_lp_user_item_results}
191 {$where}
192 "
193 );
194 }
195
196 public static function instance() {
197 if ( is_null( self::$_instance ) ) {
198 self::$_instance = new self();
199 }
200
201 return self::$_instance;
202 }
203 }
204
205 LP_User_Items_Result_DB::instance();
206