PluginProbe
CSS & JavaScript Toolbox / 8.0
CSS & JavaScript Toolbox v8.0
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 +53 -189 11.48.0 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 = 99;
29 -
28 + const MAX_REVISIONS_PER_BLOCK = 10;
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,59 +185,12 @@
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 -
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 -
189 +
237 190 /**
238 191 * put your comment there...
239 - *
192 + *
240 193 * @param mixed $id
241 194 * @param mixed $fields
242 195 */
243 196 public function getBlock($id, $filters = array(), $fields = array('*'), $useDefaultBackupFltr = true) {
@@ -244,12 +197,12 @@
244 197 $blocks = $this->getBlocks($id, $filters, $fields, OBJECT_K, array(), $useDefaultBackupFltr);
245 198 $block = !empty($blocks) ? reset($blocks) : null;
246 199 return $block;
247 200 }
248 -
201 +
249 202 /**
250 203 * put your comment there...
251 - *
204 + *
252 205 * @param mixed $ids
253 206 */
254 207 public function getBlocks($ids = array(), $filters = array(), $fields = array('*'), $returnType = OBJECT_K, $orderBy = array(), $useDefaultBackupFltr = true) {
255 208 // initialize.
@@ -293,12 +246,12 @@
293 246 }
294 247 }
295 248 return $blocks;
296 249 }
297 -
250 +
298 251 /**
299 252 * put your comment there...
300 - *
253 + *
301 254 * @param mixed $blockId
302 255 * @param mixed $authorId
303 256 */
304 257 public function getAuthorBlockActiveFileId($blockId, $authorId = null) {
@@ -307,31 +260,11 @@
307 260 // Query block active file.
308 261 return $activeFileId;
309 262 }
310 263
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 -
331 264 /**
332 265 * put your comment there...
333 - *
266 + *
334 267 * @param mixed $blockId
335 268 * @param mixed $authorId
336 269 */
337 270 public function getCurrentAuthorBlockActiveFileId($blockId) {
@@ -339,62 +272,9 @@
339 272 }
340 273
341 274 /**
342 275 * put your comment there...
343 - *
344 - */
345 - public static function getCustomPostTypes()
346 - {
347 -
348 - static $postTypes = null;
349 -
350 - if ( $postTypes !== null )
351 - {
352 - return $postTypes;
353 - }
354 -
355 -
356 - $postTypes = array();
357 -
358 - // Create tabs for every custom post under the custom posts tab.
359 - // Get all registered custom posts.
360 - $customPosts = get_post_types( array( 'public' => 1, 'show_ui' => true, '_builtin' => false ), 'objects' );
361 -
362 - // Add tab for every custom post
363 - // Exclude 'Empty' Custom Post Types.
364 - foreach ( $customPosts as $typeName => $customPost )
365 - {
366 - // Check if has posts.
367 - $hasPosts = count( get_posts( array( 'post_type' => $typeName, 'offset' => 0, 'numberposts' => 1 ) ) );
368 -
369 - // Add only types with at least one post exists.
370 - if ( $hasPosts )
371 - {
372 - $postTypes[ $typeName ] = array
373 - (
374 - 'title' => $customPost->labels->name,
375 - 'renderer' => 'objects-list',
376 - 'type' => array
377 - (
378 - 'type' => $typeName,
379 - 'group' => 'posts',
380 - 'targetType' => 'post'
381 - )
382 -
383 - );
384 -
385 - }
386 -
387 - }
388 -
389 - do_action( CJTPluggableHelper::ACTION_BLOCK_CUSTOM_POST_TYPES, $postTypes );
390 -
391 - return $postTypes;
392 - }
393 -
394 - /**
395 - * put your comment there...
396 - *
276 + *
397 277 * @param mixed $id
398 278 */
399 279 public function getInfo($id) {
400 280 // Info fields.
@@ -408,28 +288,28 @@
408 288 // Set shortcode name.
409 289 $info->shortcode = "[cjtoolbox name='{$info->name}']";
410 290 return $info;
411 291 }
412 -
292 +
413 293 /**
414 294 * put your comment there...
415 - *
295 + *
416 296 */
417 297 public function getOrder() {
418 298 return get_option('meta-box-order_cjtoolbox');
419 299 }
420 -
300 +
421 301 /**
422 302 * put your comment there...
423 - *
303 + *
424 304 */
425 305 public function save() {
426 306 $this->dbDriver->processQueue();
427 307 }
428 -
308 +
429 309 /**
430 310 * put your comment there...
431 - *
311 + *
432 312 * @param mixed $order
433 313 */
434 314 public function setOrder($order) {
435 315 $orderOptionName = 'meta-box-order_cjtoolbox';
@@ -437,52 +317,36 @@
437 317 update_user_option(get_current_user_id(), $orderOptionName, $order, true);
438 318 // Update CENTRALIZED order in the options table!
439 319 update_option($orderOptionName, $order);
440 320 }
441 -
321 +
442 322 /**
443 323 * put your comment there...
444 - *
324 + *
445 325 * @param mixed $block
446 326 */
447 - public function update( $block, $updatePins )
448 - {
449 -
450 - $block = ( array ) $block;
451 -
452 - $blocks = new CJTBlocksTable( $this->dbDriver );
453 - $pins = new CJTBlockPinsTable( $this->dbDriver );
454 -
327 + public function update($block, $updatePins) {
328 + // To be used by array_intersect_key.
329 + $block = (array) $block;
330 + // Create Tables objects.
331 + $blocks = new CJTBlocksTable($this->dbDriver);
332 + $pins = new CJTBlockPinsTable($this->dbDriver);
455 333 // Update block pins if requested.
456 - if ( $updatePins )
457 - {
334 + if ($updatePins) {
458 335 // Isolate block pins freom native block data.
459 - $pinsData = array_intersect_key( $block, array_flip( array_keys( CJTBlockModel::getCustomPins() ) ) );
460 -
461 - do_action( CJTPluggableHelper::FILTER_BLOCK_MODEL_PRE_UPDATE_BLOCK_PINS, $block, $pinsData );
462 -
463 - $pins->update( $block[ 'id' ], $pinsData );
464 -
336 + $pinsData = array_intersect_key($block, array_flip(array('pages', 'posts', 'categories')));
337 + $pins->update($block['id'], $pinsData);
465 338 }
466 -
467 339 // Update code file
468 - if ( isset( $block[ 'activeFileId' ] ) )
469 - {
470 -
471 - $codeFile = new CJTBlockFilesTable( $this->dbDriver );
472 -
473 - $codeFile->set( 'blockId', $block[ 'id' ] )
474 - ->set( 'id', $block[ 'activeFileId'] )
475 - ->set( 'code', $block[ 'code'] )
340 + if (isset($block['activeFileId'])) {
341 + $codeFile = new CJTBlockFilesTable($this->dbDriver);
342 + $codeFile->set('blockId', $block['id'])
343 + ->set('id', $block['activeFileId'])
344 + ->set('code', $block['code'])
476 345 ->save();
477 346 }
478 -
479 347 // Isolate block fields.
480 348 $blockData = array_intersect_key($block, $blocks->getFields());
481 -
482 - do_action( CJTPluggableHelper::FILTER_BLOCK_MODEL_PRE_UPDATE_BLOCK, $updatePins, $blockData );
483 -
484 - $blocks->update( $blockData );
485 -
349 + $blocks->update($blockData);
486 350 }
487 -
351 +
488 352 } // End class.