PluginProbe
CSS & JavaScript Toolbox / 6.1.5
CSS & JavaScript Toolbox v6.1.5
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
css-javascript-toolbox / controllers / coupling / shortcode / block / block.php

block.php in CSS & JavaScript Toolbox 6.1.5, at controllers/coupling/shortcode/block/block.php

108 lines 3.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 *
4 */
5
6 // Disallow direct access.
7 defined('ABSPATH') or die("Access denied");
8
9 /**
10 * Handle block Shortcode.
11 */
12 class CJT_Controllers_Coupling_Shortcode_Block extends CJTHookableClass {
13
14 /**
15 * put your comment there...
16 *
17 * @var mixed
18 */
19 protected $attributes;
20
21 /**
22 * put your comment there...
23 *
24 * @var mixed
25 */
26 protected $content = null;
27
28 /**
29 * put your comment there...
30 *
31 * @var mixed
32 */
33 protected $options = array('force' => 'true', 'tag' => 'span');
34
35 /**
36 * put your comment there...
37 *
38 * @var mixed
39 */
40 protected $parameters = array();
41
42 /**
43 * put your comment there...
44 *
45 * @param mixed $attributes
46 * @param mixed $content
47 * @return CJT_Controllers_Coupling_Shortcode_Block
48 */
49 public function __construct($attributes, $content) {
50 // Hookable initiaization.
51 parent::__construct();
52 // Initialize.
53 $this->attributes = $attributes;
54 $this->content = $content;
55 }
56
57 /**
58 * put your comment there...
59 *
60 */
61 public function __toString() {
62 // Initialize.
63 $replacement = '';
64 $model = CJTModel::getInstance('coupling');
65 // Get shortcode options.
66 $this->options = array_merge($this->options, array_intersect_key($this->attributes, $this->options));
67 // Get shortcode parameters.
68 $this->parameters = array_diff_key($this->attributes, array_flip(array('force', 'tag', 'name', 'id')));
69 // Get Block fields to be used to query the block.
70 $blockQueryFields = array_intersect_key($this->attributes, array_flip(array('id', 'name')));
71 $coupling =& CJTBlocksCouplingController::theInstance();
72 // Import dependecies.
73 cssJSToolbox::import('framework:db:mysql:xtable.inc.php', 'framework:php:evaluator:evaluator.inc.php');
74 // Query block.
75 $block = CJTxTable::getInstance('block')
76 ->setData($blockQueryFields) // Set Creteria fields!
77 ->load(array_keys($blockQueryFields)); // Load using Creteria fields.
78 // Get block code if exists and is active block.
79 if ($block->get('id')) {
80 if ($block->get('state') == 'active') {
81 // Get stdCLass copy.
82 $block = $block->getData();
83 // Output block if 'force="true" or only if it wasn't already in the header/footer!
84 if (($this->options['force'] == 'true') || !in_array($block->id, $coupling->getOnActionIds())) {
85 // Id is being used!
86 $coupling->addOnActionIds((int) $block->id);
87 // CJT Block Standard Parameters object.
88 cssJSToolbox::import('framework:developer:interface:block:shortcode:shortcode.php');
89 $spi = new CJT_Framework_Developer_Interface_Block_Shortcode($block, $this->parameters, $this->content);
90 // Get block code, execute it as PHP!
91 $blockCode = CJTPHPCodeEvaluator::getInstance($block)->exec(array('cb' => $spi))->getOutput();
92 // CJT Shortcode markup interface (CSMI)!
93 // CSMI is HTML markup to identify the CJT block Shortcode replacement.
94 $replacement = "<{$this->options['tag']} id='{$spi->containerElementId()}' class='csmi csmi-bid-{$block->id} csmi-{$block->name}'>{$this->content}{$blockCode}</{$this->options['tag']}>";
95 }
96 }
97 }
98 else { // Invalid Shortcode block query!
99 $replacement = cssJSToolbox::getText('Could not find block specified! Please check out the Shortcode parameters.');
100 }
101 // Return shortcode replacement string.
102 return $replacement;
103 }
104
105 } // End class.
106
107 // Hookable!
108 CJT_Controllers_Coupling_Shortcode_Block::define('CJT_Controllers_Coupling_Shortcode_Block');