PluginProbe
CSS & JavaScript Toolbox / 12.0.5
CSS & JavaScript Toolbox v12.0.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 12.0.5, at controllers/coupling/shortcode/block/block.php

146 lines 4.8 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 // Retrieve block code-files.
88 $block->code = $model->getBlockCode($block->id);
89 // Import Executable (PHP and HTML) templates.
90 $block->code = $block->code . $model->getExecTemplatesCode($block->id);
91 // CJT Block Standard Parameters object.
92 $spi = new CJT_Framework_Developer_Interface_Block_Shortcode_Shortcode($block, $this->parameters, $this->content);
93 // Get block code, execute it as PHP!
94 $blockCode = CJTPHPCodeEvaluator::getInstance($block)->exec(array('cb' => $spi))->getOutput();
95 // CJT Shortcode markup interface (CSMI)!
96 // CSMI is HTML markup to identify the CJT block Shortcode replacement.
97
98 $__tag = filter_var($this->options['tag'], FILTER_SANITIZE_EMAIL);
99
100 // CODE UPDATED -- START
101 $replacement = "\n\n<!-- CJT Shortcode Block ({$block->id}) - {$block->name} - START -->\n
102 <{$__tag} id='{$spi->containerElementId()}' class='csmi csmi-bid-{$block->id} csmi-{$block->name}'>
103 {$this->content}{$blockCode}
104 </{$__tag}>\n
105 <!-- CJT Shortcode Block ({$block->id}) - {$block->name} - END -->\n\n";
106 // CODE UPDATED -- END
107
108 // Get linked templates.
109 $linkedStylesheets = '';
110 $templates = $model->getLinkedTemplates($block->id);
111 $reverseTypes = array_flip(CJTCouplingModel::$templateTypes);
112 // Enqueue all scripts & Direct Output for all Style Sheets!
113 foreach ($templates as $template) {
114 // Get Template type name.
115 $typeName = $reverseTypes[$template->type];
116 /**
117 * @var WP_Dependencies
118 */
119 $queue = $model->getQueueObject($typeName);
120 if (!in_array($template->queueName, $queue->done)) {
121 if (!isset($queue->registered[$template->queueName])) {
122 $queue->add($template->queueName, "/{$template->file}", null, $template->version, 1);
123 }
124 // Enqueue template!
125 $queue->enqueue($template->queueName);
126 }
127 }
128 // Prepend linked Stylesheets to the replacement.
129 if (isset($linkedStylesheets) && !empty($linkedStylesheets)) {
130 $replacement = "<style type='text/css'>{$linkedStylesheets}</style>{$replacement}";
131 }
132 }
133 }
134 }
135 else { // Invalid Shortcode block query!
136 $replacement = cssJSToolbox::getText('Could not find block specified! Please check out the Shortcode parameters.');
137 }
138 // Return shortcode replacement string.
139 return $replacement;
140 }
141
142 } // End class.
143
144 // Hookable!
145 CJT_Controllers_Coupling_Shortcode_Block::define('CJT_Controllers_Coupling_Shortcode_Block');
146