PluginProbe
Tutor LMS – eLearning and online course solution / 3.9.2
Tutor LMS – eLearning and online course solution v3.9.2
4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 4.0.2 4.0.1 4.0.0 3.9.15 3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 All 191 releases
tutor / models / OrderMetaModel.php

OrderMetaModel.php in Tutor LMS – eLearning and online course solution 3.9.2, at models/OrderMetaModel.php

224 lines 4.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * OrderMeta Model
4 *
5 * @package Tutor\Models
6 * @author Themeum <support@themeum.com>
7 * @link https://themeum.com
8 * @since 3.0.0
9 */
10
11 namespace Tutor\Models;
12
13 use Tutor\Helpers\QueryHelper;
14
15 /**
16 * OrderMetaModel Class
17 *
18 * @since 3.0.0
19 */
20 class OrderMetaModel {
21 /**
22 * Table name.
23 *
24 * @since 3.0.0
25 *
26 * @var string
27 */
28 private $table_name = 'tutor_ordermeta';
29
30 /**
31 * Constructor
32 *
33 * @since 3.0.0
34 */
35 public function __construct() {
36 global $wpdb;
37 $this->table_name = $wpdb->prefix . $this->table_name;
38 }
39
40 /**
41 * Add meta
42 *
43 * @since 3.0.0
44 *
45 * @param int $order_id order id.
46 * @param string $meta_key meta key.
47 * @param mixed $meta_value meta value.
48 *
49 * @return int added meta id.
50 */
51 public static function add_meta( $order_id, $meta_key, $meta_value ) {
52 $self = new self();
53
54 $current_time = current_time( 'mysql', true );
55 $current_user_id = get_current_user_id();
56
57 return QueryHelper::insert(
58 $self->table_name,
59 array(
60 'order_id' => $order_id,
61 'meta_key' => $meta_key,
62 'meta_value' => maybe_serialize( $meta_value ),
63 'created_at_gmt' => $current_time,
64 'created_by' => $current_user_id,
65 'updated_at_gmt' => $current_time,
66 'updated_by' => $current_user_id,
67 )
68 );
69 }
70
71 /**
72 * Update meta.
73 * If meta key does not exist it will add new meta otherwise update the meta value.
74 *
75 * @param int $order_id order id.
76 * @param string $meta_key meta key.
77 * @param mixed $meta_value meta value.
78 *
79 * @return int|bool Meta ID if the key didn't exist, true on successful update, false on failure.
80 */
81 public static function update_meta( $order_id, $meta_key, $meta_value ) {
82 $self = new self();
83
84 if ( self::get_meta( $order_id, $meta_key ) ) {
85 $current_time = current_time( 'mysql', true );
86 $current_user_id = get_current_user_id();
87
88 return QueryHelper::update(
89 $self->table_name,
90 array(
91 'meta_value' => maybe_serialize( $meta_value ),
92 'updated_at_gmt' => $current_time,
93 'updated_by' => $current_user_id,
94 ),
95 array(
96 'order_id' => $order_id,
97 'meta_key' => $meta_key,
98 )
99 );
100 } else {
101 return self::add_meta( $order_id, $meta_key, $meta_value );
102 }
103 }
104
105 /**
106 * Get a meta record by order id and meta key.
107 *
108 * @param int $order_id order id.
109 * @param string $meta_key meta key.
110 *
111 * @return object|null Meta object if the key exists, null otherwise.
112 *
113 * @since 3.0.0
114 */
115 public static function get_meta( $order_id, $meta_key ) {
116 $self = new self();
117 $result = QueryHelper::get_row(
118 $self->table_name,
119 array(
120 'order_id' => $order_id,
121 'meta_key' => $meta_key,
122 ),
123 'id'
124 );
125
126 return $result;
127 }
128
129 /**
130 * Get all meta record of an order.
131 *
132 * @since 3.0.0
133 *
134 * @param int $order_id order id.
135 *
136 * @return array
137 */
138 public static function get_all_meta( $order_id ) {
139 $self = new self();
140 $result = QueryHelper::get_all(
141 $self->table_name,
142 array(
143 'order_id' => $order_id,
144 ),
145 '*',
146 -1
147 );
148
149 return $result;
150 }
151
152 /**
153 * Get a meta record.
154 *
155 * @since 3.0.0
156 *
157 * @param array $where where.
158 *
159 * @return object|null
160 */
161 public static function get_row( $where = array() ) {
162 $self = new self();
163 $result = QueryHelper::get_row(
164 $self->table_name,
165 $where,
166 'id'
167 );
168
169 return $result;
170 }
171
172 /**
173 * Get all order meta based on clauses.
174 *
175 * @since 3.0.0
176 *
177 * @param array $where where.
178 * @param string $order_by order by.
179 * @param string $order order type.
180 * @param integer $limit limit.
181 *
182 * @return array
183 */
184 public static function get_all( $where = array(), $order_by = 'id', $order = 'ASC', $limit = -1 ) {
185 $self = new self();
186 $result = QueryHelper::get_all(
187 $self->table_name,
188 $where,
189 $order_by,
190 $limit,
191 $order
192 );
193
194 return $result;
195 }
196
197 /**
198 * Get order meta value.
199 *
200 * @param int $order_id order id.
201 * @param string $meta_key meta key.
202 * @param bool $single single meta value.
203 *
204 * @return mixed return array of values if $single is false otherwise single value.
205 * Empty string for invalid order id or meta key.
206 */
207 public static function get_meta_value( $order_id, $meta_key, $single = false ) {
208 $where = array(
209 'order_id' => $order_id,
210 'meta_key' => $meta_key,
211 );
212
213 $result = $single ? self::get_row( $where ) : self::get_all( $where );
214 if ( ! $result ) {
215 return '';
216 }
217
218 return $single
219 ? maybe_unserialize( $result->meta_value )
220 : array_map( 'maybe_unserialize', array_column( $result, 'meta_value' ) );
221
222 }
223 }
224