PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.1.7.2
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.1.7.2
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.1.7.2, at inc/databases/class-lp-user-item-results-db.php

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