PluginProbe
CSS & JavaScript Toolbox / 11
CSS & JavaScript Toolbox v11
trunk 0.3 0.8 10 10.1 11 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.9.1 12 12.0 12.0.1 12.0.3 12.0.4 12.0.5 12.0.6 12.0.7 6.0 6.0.11 All 60 releases
← All changes | models/blocks.php +136 -69 1011 View file →
@@ -12,41 +12,41 @@
12 12 require_once CJTOOLBOX_TABLES_PATH . '/blocks.php';
13 13 require_once CJTOOLBOX_TABLES_PATH . '/block-pins.php';
14 14 // MYSQL Queue Driver.
15 15 require_once CJTOOLBOX_INCLUDE_PATH . '/db/mysql/queue-driver.inc.php';
16 -
16 +
17 17 /**
18 18 * Provide simple access (read or write) to all Blocks data.
19 -*
19 +*
20 20 * @author Ahmed Said
21 21 * @version 6
22 22 */
23 23 class CJTBlocksModel {
24 -
24 +
25 25 /**
26 - *
26 + *
27 27 */
28 - const MAX_REVISIONS_PER_BLOCK = 10;
29 -
28 + const MAX_REVISIONS_PER_BLOCK = 99;
29 +
30 30 /**
31 31 * put your comment there...
32 - *
32 + *
33 33 * @var mixed
34 34 */
35 35 protected $dbDriver = null;
36 -
36 +
37 37 /**
38 38 * put your comment there...
39 - *
39 + *
40 40 */
41 41 public function __construct() {
42 42 // Initialize CTTTable MYSQL Driver.
43 43 $this->dbDriver = new CJTMYSQLQueueDriver($GLOBALS['wpdb']);
44 44 }
45 -
45 +
46 46 /**
47 47 * put your comment there...
48 - *
48 + *
49 49 * @param mixed $block
50 50 * @param mixed $forceAddCodeBlock
51 51 */
52 52 public function add($block, $forceAddCodeBlock = false) {
@@ -76,12 +76,12 @@
76 76 $blocks->insert($block);
77 77 // Return Newly added block id.
78 78 return $block['id'];
79 79 }
80 -
80 +
81 81 /**
82 82 * put your comment there...
83 - *
83 + *
84 84 * @param mixed $blockId
85 85 * @param mixed $activeFileId
86 86 */
87 87 public function addRevision($blockId, $activeFileId) {
@@ -89,9 +89,9 @@
89 89 $blocks = new CJTBlocksTable($this->dbDriver);
90 90 $pins = new CJTBlockPinsTable($this->dbDriver);
91 91 $codeFile = new CJTBlockFilesTable($this->dbDriver);
92 92 // We allow only up to self::MAX_REVISIONS_PER_BLOCK revisions per
93 - // block code files So that a single block may has up to
93 + // block code files So that a single block may has up to
94 94 // self::MAX_REVISIONS_PER_BLOCK * count(codeFiles)
95 95 $revisions['fields'] = array('id');
96 96 $revisions['filters'] = array('type' => 'revision', 'parent' => $blockId, 'masterFile' => $activeFileId);
97 97 $revisions = $blocks->get(null, $revisions['fields'], $revisions['filters']);
@@ -98,9 +98,9 @@
98 98 // If revisions reached self::MAX_REVISIONS_PER_BLOCK delete first one.
99 99 if (count($revisions) == self::MAX_REVISIONS_PER_BLOCK) {
100 100 $this->delete(array_shift($revisions)->id);
101 101 }
102 - // Get block data.
102 + // Get block data.
103 103 $block['fields'] = array('id', 'lastModified', 'pinPoint', 'links', 'expressions');
104 104 // get() developed to return multiple blocks, fetch the first.
105 105 $result = $blocks->get($blockId, $block['fields']);
106 106 $block = reset($result);
@@ -109,9 +109,9 @@
109 109 $block->parent = $blockId;
110 110 $block->type = 'revision';
111 111 $block->created = current_time('mysql');
112 112 $block->owner = get_current_user_id();
113 - $block->masterFile = $activeFileId; // Only the revisioned code file would be exists and must be
113 + $block->masterFile = $activeFileId; // Only the revisioned code file would be exists and must be
114 114 // used as the masterFile!
115 115 $block->id = $blocks->getNextId(); // Get new id for revision rrecord.
116 116 // Add block data.
117 117 $blocks->insert($block);
@@ -128,22 +128,22 @@
128 128 ->load()
129 129 ->set('blockId', $block->id)
130 130 ->save(true, true);
131 131 }
132 -
132 +
133 133 /**
134 134 * Put your comments here...
135 135 *
136 136 *
137 - * @return
138 - */
137 + * @return
138 + */
139 139 public function dbDriver() {
140 140 return $this->dbDriver;
141 141 }
142 -
142 +
143 143 /**
144 144 * put your comment there...
145 - *
145 + *
146 146 * @param mixed $ids
147 147 */
148 148 public function delete($ids) {
149 149 // Allow single or multiple Ids to be passed.
@@ -185,12 +185,59 @@
185 185 $this->dbDriver->delete(sprintf('DELETE FROM #__cjtoolbox_block_files WHERE blockId IN(%s)', implode(',', $ids)));
186 186 // Chaining!
187 187 return $this;
188 188 }
189 -
189 +
190 + /**
191 + * put your comment there...
192 + *
193 + * @param mixed $block
194 + */
195 + public static function getAllAssignments($block) {
196 +
197 + $inPages = $block->pages ? $block->pages : [];
198 + $inPosts = $block->posts ? $block->posts : [];
199 + $inCats = $block->categories ? $block->categories : [];
200 + $inTags = $block->post_tags ? $block->post_tags : [];
201 + $inLinks = ! empty( $block->links ) ? explode( "\n", $block->links ) : [];
202 + $inExps = ! empty( $block->expressions ) ? explode( "\n", $block->expressions ) : [];
203 + $inAux = array();
204 +
205 + // Found selected Aux
206 + $auxFlags = array(
207 + CJTBlockModel::PINS_404_ERROR,
208 + CJTBlockModel::PINS_ARCHIVE,
209 + CJTBlockModel::PINS_ATTACHMENT,
210 + CJTBlockModel::PINS_AUTHOR,
211 + CJTBlockModel::PINS_BACKEND,
212 + CJTBlockModel::PINS_CATEGORIES_ALL_CATEGORIES,
213 + CJTBlockModel::PINS_EXPRESSIONS,
214 + CJTBlockModel::PINS_FRONTEND,
215 + CJTBlockModel::PINS_PAGES_ALL_PAGES,
216 + CJTBlockModel::PINS_POSTS_ALL_POSTS,
217 + CJTBlockModel::PINS_POSTS_BLOG_INDEX,
218 + CJTBlockModel::PINS_POSTS_RECENT,
219 + CJTBlockModel::PINS_SEARCH,
220 + CJTBlockModel::PINS_TAG
221 + );
222 +
223 + foreach ($auxFlags as $auxFlag) {
224 +
225 + if ($auxFlag & $block->pinPoint) {
226 +
227 + $inAux[] = $auxFlag;
228 + }
229 +
230 + }
231 +
232 + $allAssignment = array_merge( $inPages, $inPosts, $inCats, $inTags, $inLinks, $inExps, $inAux );
233 +
234 + return $allAssignment;
235 + }
236 +
190 237 /**
191 238 * put your comment there...
192 - *
239 + *
193 240 * @param mixed $id
194 241 * @param mixed $fields
195 242 */
196 243 public function getBlock($id, $filters = array(), $fields = array('*'), $useDefaultBackupFltr = true) {
@@ -197,12 +244,12 @@
197 244 $blocks = $this->getBlocks($id, $filters, $fields, OBJECT_K, array(), $useDefaultBackupFltr);
198 245 $block = !empty($blocks) ? reset($blocks) : null;
199 246 return $block;
200 247 }
201 -
248 +
202 249 /**
203 250 * put your comment there...
204 - *
251 + *
205 252 * @param mixed $ids
206 253 */
207 254 public function getBlocks($ids = array(), $filters = array(), $fields = array('*'), $returnType = OBJECT_K, $orderBy = array(), $useDefaultBackupFltr = true) {
208 255 // initialize.
@@ -246,12 +293,12 @@
246 293 }
247 294 }
248 295 return $blocks;
249 296 }
250 -
297 +
251 298 /**
252 299 * put your comment there...
253 - *
300 + *
254 301 * @param mixed $blockId
255 302 * @param mixed $authorId
256 303 */
257 304 public function getAuthorBlockActiveFileId($blockId, $authorId = null) {
@@ -260,11 +307,31 @@
260 307 // Query block active file.
261 308 return $activeFileId;
262 309 }
263 310
311 + /**
312 + * put your comment there...
313 + *
314 + * @param mixed $blockId
315 + */
316 + public static function getCodeFilesCount($blockId) {
317 +
318 + global $wpdb;
319 +
320 + $query = " SELECT count(*)
321 + FROM {$wpdb->prefix}cjtoolbox_block_files f
322 + WHERE f.blockId = %d;";
323 +
324 + $query = $wpdb->prepare($query, $blockId);
325 +
326 + $codeFilesCount = $wpdb->get_var($query);
327 +
328 + return $codeFilesCount;
329 + }
330 +
264 331 /**
265 332 * put your comment there...
266 - *
333 + *
267 334 * @param mixed $blockId
268 335 * @param mixed $authorId
269 336 */
270 337 public function getCurrentAuthorBlockActiveFileId($blockId) {
@@ -272,23 +339,23 @@
272 339 }
273 340
274 341 /**
275 342 * put your comment there...
276 - *
343 + *
277 344 */
278 345 public static function getCustomPostTypes()
279 346 {
280 -
347 +
281 348 static $postTypes = null;
282 -
349 +
283 350 if ( $postTypes !== null )
284 351 {
285 352 return $postTypes;
286 353 }
287 -
288 -
354 +
355 +
289 356 $postTypes = array();
290 -
357 +
291 358 // Create tabs for every custom post under the custom posts tab.
292 359 // Get all registered custom posts.
293 360 $customPosts = get_post_types( array( 'public' => 1, 'show_ui' => true, '_builtin' => false ), 'objects' );
294 361
@@ -293,15 +360,15 @@
293 360 $customPosts = get_post_types( array( 'public' => 1, 'show_ui' => true, '_builtin' => false ), 'objects' );
294 361
295 362 // Add tab for every custom post
296 363 // Exclude 'Empty' Custom Post Types.
297 - foreach ( $customPosts as $typeName => $customPost )
364 + foreach ( $customPosts as $typeName => $customPost )
298 365 {
299 - // Check if has posts.
366 + // Check if has posts.
300 367 $hasPosts = count( get_posts( array( 'post_type' => $typeName, 'offset' => 0, 'numberposts' => 1 ) ) );
301 -
368 +
302 369 // Add only types with at least one post exists.
303 - if ( $hasPosts )
370 + if ( $hasPosts )
304 371 {
305 372 $postTypes[ $typeName ] = array
306 373 (
307 374 'title' => $customPost->labels->name,
@@ -306,28 +373,28 @@
306 373 (
307 374 'title' => $customPost->labels->name,
308 375 'renderer' => 'objects-list',
309 376 'type' => array
310 - (
377 + (
311 378 'type' => $typeName,
312 379 'group' => 'posts',
313 380 'targetType' => 'post'
314 381 )
315 -
382 +
316 383 );
317 -
384 +
318 385 }
319 -
386 +
320 387 }
321 388
322 389 do_action( CJTPluggableHelper::ACTION_BLOCK_CUSTOM_POST_TYPES, $postTypes );
323 -
390 +
324 391 return $postTypes;
325 392 }
326 -
393 +
327 394 /**
328 395 * put your comment there...
329 - *
396 + *
330 397 * @param mixed $id
331 398 */
332 399 public function getInfo($id) {
333 400 // Info fields.
@@ -341,28 +408,28 @@
341 408 // Set shortcode name.
342 409 $info->shortcode = "[cjtoolbox name='{$info->name}']";
343 410 return $info;
344 411 }
345 -
412 +
346 413 /**
347 414 * put your comment there...
348 - *
415 + *
349 416 */
350 417 public function getOrder() {
351 418 return get_option('meta-box-order_cjtoolbox');
352 419 }
353 -
420 +
354 421 /**
355 422 * put your comment there...
356 - *
423 + *
357 424 */
358 425 public function save() {
359 426 $this->dbDriver->processQueue();
360 427 }
361 -
428 +
362 429 /**
363 430 * put your comment there...
364 - *
431 + *
365 432 * @param mixed $order
366 433 */
367 434 public function setOrder($order) {
368 435 $orderOptionName = 'meta-box-order_cjtoolbox';
@@ -370,52 +437,52 @@
370 437 update_user_option(get_current_user_id(), $orderOptionName, $order, true);
371 438 // Update CENTRALIZED order in the options table!
372 439 update_option($orderOptionName, $order);
373 440 }
374 -
441 +
375 442 /**
376 443 * put your comment there...
377 - *
444 + *
378 445 * @param mixed $block
379 446 */
380 - public function update( $block, $updatePins )
447 + public function update( $block, $updatePins )
381 448 {
382 -
449 +
383 450 $block = ( array ) $block;
384 -
451 +
385 452 $blocks = new CJTBlocksTable( $this->dbDriver );
386 453 $pins = new CJTBlockPinsTable( $this->dbDriver );
387 -
454 +
388 455 // Update block pins if requested.
389 - if ( $updatePins )
456 + if ( $updatePins )
390 457 {
391 458 // Isolate block pins freom native block data.
392 459 $pinsData = array_intersect_key( $block, array_flip( array_keys( CJTBlockModel::getCustomPins() ) ) );
393 -
460 +
394 461 do_action( CJTPluggableHelper::FILTER_BLOCK_MODEL_PRE_UPDATE_BLOCK_PINS, $block, $pinsData );
395 -
462 +
396 463 $pins->update( $block[ 'id' ], $pinsData );
397 464
398 465 }
399 -
466 +
400 467 // Update code file
401 - if ( isset( $block[ 'activeFileId' ] ) )
468 + if ( isset( $block[ 'activeFileId' ] ) )
402 469 {
403 -
470 +
404 471 $codeFile = new CJTBlockFilesTable( $this->dbDriver );
405 -
472 +
406 473 $codeFile->set( 'blockId', $block[ 'id' ] )
407 474 ->set( 'id', $block[ 'activeFileId'] )
408 475 ->set( 'code', $block[ 'code'] )
409 476 ->save();
410 477 }
411 -
478 +
412 479 // Isolate block fields.
413 480 $blockData = array_intersect_key($block, $blocks->getFields());
414 -
481 +
415 482 do_action( CJTPluggableHelper::FILTER_BLOCK_MODEL_PRE_UPDATE_BLOCK, $updatePins, $blockData );
416 -
483 +
417 484 $blocks->update( $blockData );
418 -
485 +
419 486 }
420 -
487 +
421 488 } // End class.