PluginProbe
CSS & JavaScript Toolbox / 8.0.3
CSS & JavaScript Toolbox v8.0.3
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 | controllers/blocks-coupling.php +171 -374 11.88.0.3 View file →
@@ -1,73 +1,66 @@
1 1 <?php
2 2 /**
3 3 * @version $ Id; blocks-coupling.php 21-03-2012 03:22:10 Ahmed Said $
4 4 */
5 -
5 +
6 6 // Disallow direct access.
7 7 defined('ABSPATH') or die("Access denied");
8 8
9 9 /**
10 10 * Applying Code blocks for the curren request.
11 -*
11 +*
12 12 * This controller is always loaded.
13 -*
13 +*
14 14 * The class resposibility is to output the code blocks
15 15 * tha associated with current request.
16 -*
16 +*
17 17 * @author Ahmed Said
18 18 * @version 6
19 19 */
20 20 class CJTBlocksCouplingController extends CJTController {
21 -
21 +
22 22 /**
23 23 * put your comment there...
24 - *
24 + *
25 25 * @var mixed
26 26 */
27 - public $blocks = array(
28 - 'code' => array(),
29 - 'scripts' => array(),
27 + protected $blocks = array(
28 + 'code' => array('header' => '', 'footer' => ''),
29 + 'scripts' => array('header' => array(), 'footer' => array()),
30 30 );
31 -
31 +
32 32 /**
33 33 * put your comment there...
34 - *
34 + *
35 35 * @var mixed
36 36 */
37 37 protected $controllerInfo = array('model' => 'coupling');
38 -
38 +
39 39 /**
40 40 * put your comment there...
41 - *
41 + *
42 42 * @var mixed
43 43 */
44 44 protected $filters = null;
45 -
46 - /**
47 - * put your comment there...
48 - *
49 - * @var mixed
50 - */
51 - protected $hookAttacher;
52 -
45 +
53 46 /**
54 47 * put your comment there...
55 - *
48 + *
56 49 * @var mixed
57 50 */
58 51 protected static $instance = null;
59 -
52 +
60 53 /**
61 54 * put your comment there...
62 - *
55 + *
63 56 * @var mixed
64 57 */
65 58 private $onActionIds = array();
66 -
59 +
67 60 /**
68 61 * put your comment there...
69 - *
62 + *
70 63 * @var mixed
71 64 */
72 65 protected $onassigncouplingcallback = array('parameters' => array('callback'));
73 66
@@ -72,44 +65,44 @@
72 65 protected $onassigncouplingcallback = array('parameters' => array('callback'));
73 66
74 67 /**
75 68 * put your comment there...
76 - *
69 + *
77 70 * @var mixed
78 71 */
79 72 protected $onappendcode = array('parameters' => array('code'));
80 -
73 +
81 74 /**
82 75 * put your comment there...
83 - *
76 + *
84 77 * @var mixed
85 78 */
86 79 protected $onblockmatched = array('parameters' => array('block'));
87 -
80 +
88 81 /**
89 82 * put your comment there...
90 - *
83 + *
91 84 * @var mixed
92 85 */
93 86 protected $oncancelmatching = array('parameters' => array('matched'));
94 -
87 +
95 88 /**
96 89 * put your comment there...
97 - *
90 + *
98 91 * @var mixed
99 92 */
100 93 protected $ondefaultfilters = array('parameters' => array('filters'));
101 -
94 +
102 95 /**
103 96 * put your comment there...
104 - *
97 + *
105 98 * @var mixed
106 99 */
107 100 protected $ondo = array('parameters' => array('data', 'method', 'condition'));
108 -
101 +
109 102 /**
110 103 * put your comment there...
111 - *
104 + *
112 105 * @var mixed
113 106 */
114 107 protected $onblocksorder = array('parameters' => array('order'));
115 108
@@ -114,23 +107,16 @@
114 107 protected $onblocksorder = array('parameters' => array('order'));
115 108
116 109 /**
117 110 * put your comment there...
118 - *
111 + *
119 112 * @var mixed
120 113 */
121 - protected $onevalcodeblock = array( 'parameters' => array( 'keep', 'block' ) );
122 -
123 - /**
124 - * put your comment there...
125 - *
126 - * @var mixed
127 - */
128 114 protected $ongetblocks = array('parameters' => array('blocks'));
129 115
130 116 /**
131 117 * put your comment there...
132 - *
118 + *
133 119 * @var mixed
134 120 */
135 121 protected $ongetcache = array('parameters' => array('cache'));
136 122
@@ -135,23 +121,23 @@
135 121 protected $ongetcache = array('parameters' => array('cache'));
136 122
137 123 /**
138 124 * put your comment there...
139 - *
125 + *
140 126 * @var mixed
141 127 */
142 128 protected $ongetfilters = array('parameters' => array('filters'));
143 -
129 +
144 130 /**
145 131 * put your comment there...
146 - *
132 + *
147 133 * @var mixed
148 134 */
149 135 protected $onlinkedtemplates = array('parameters' => array('templates'));
150 -
136 +
151 137 /**
152 138 * put your comment there...
153 - *
139 + *
154 140 * @var mixed
155 141 */
156 142 protected $onlinkscripts = array('parameters' => array('templates'));
157 143
@@ -156,23 +142,23 @@
156 142 protected $onlinkscripts = array('parameters' => array('templates'));
157 143
158 144 /**
159 145 * put your comment there...
160 - *
146 + *
161 147 * @var mixed
162 148 */
163 149 protected $onlinkstyles = array('parameters' => array('templates'));
164 -
150 +
165 151 /**
166 152 * put your comment there...
167 - *
153 + *
168 154 * @var mixed
169 155 */
170 156 protected $onlinktemplate = array('parameters' => array('template'));
171 -
157 +
172 158 /**
173 159 * put your comment there...
174 - *
160 + *
175 161 * @var mixed
176 162 */
177 163 protected $onmatchingurls = array('parameters' => array('urls'));
178 164
@@ -177,9 +163,9 @@
177 163 protected $onmatchingurls = array('parameters' => array('urls'));
178 164
179 165 /**
180 166 * put your comment there...
181 - *
167 + *
182 168 * @var mixed
183 169 */
184 170 protected $onnoblocks = array('hookType' => CJTWordpressEvents::HOOK_ACTION);
185 171
@@ -184,16 +170,16 @@
184 170 protected $onnoblocks = array('hookType' => CJTWordpressEvents::HOOK_ACTION);
185 171
186 172 /**
187 173 * put your comment there...
188 - *
174 + *
189 175 * @var mixed
190 176 */
191 177 protected $onoutput = array('parameters' => array('code', 'location'));
192 -
178 +
193 179 /**
194 180 * put your comment there...
195 - *
181 + *
196 182 * @var mixed
197 183 */
198 184 protected $onprocess = array('hookType' => CJTWordpressEvents::HOOK_ACTION);
199 185
@@ -198,96 +184,78 @@
198 184 protected $onprocess = array('hookType' => CJTWordpressEvents::HOOK_ACTION);
199 185
200 186 /**
201 187 * put your comment there...
202 - *
188 + *
203 189 * @var mixed
204 190 */
205 191 protected $onprocessblock = array('parameters' => array('block'));
206 -
192 +
207 193 /**
208 194 * put your comment there...
209 - *
195 + *
210 196 * @var mixed
211 197 */
212 198 protected $onqueuecss = array('parameters' => array('style'));
213 -
199 +
214 200 /**
215 201 * put your comment there...
216 - *
202 + *
217 203 * @var mixed
218 204 */
219 205 protected $onqueuejavascript = array('parameters' => array('script'));
220 -
206 +
221 207 /**
222 208 * put your comment there...
223 - *
209 + *
224 210 * @var mixed
225 211 */
226 212 protected $onsetfilters = array('parameters' => array('filters'));
227 -
213 +
228 214 /**
229 215 * put your comment there...
230 - *
216 + *
231 217 * @var mixed
232 218 */
233 219 protected $templates = array();
234 -
220 +
235 221 /**
236 222 * Initialize controller object.
237 - *
223 + *
238 224 * @see CJTController for more details
239 225 * @return void
240 226 */
241 227 public function __construct() {
242 -
243 228 // Only one instance is allowed.
244 229 if (self::$instance) {
245 230 throw new Exception('Trying to instantiate multiple coupling instances!!');
246 231 }
247 -
248 232 // Hold the single instance we've!
249 233 self::$instance = $this;
250 234 $siteHook = cssJSToolbox::$config->core->siteHook;
251 -
252 235 // Initialize controller.
253 236 parent::__construct(false);
254 -
255 237 // Import related libraries
256 238 CJTModel::import('block');
257 -
258 239 // Not default action needed.
259 240 $this->defaultAction = null;
260 - $this->hookAttacher = new CJTBlocksCouplingHookAttacher(array(&$this, 'outputBlocks'));
261 -
262 - // Initialize Blocks array
263 - foreach ($this->hookAttacher->getFiltersList() as $hooks) {
264 -
265 - foreach ($hooks as $hook) {
266 -
267 - $this->blocks['code'][$hook['locationName']] = '';
268 - $this->blocks['script'][$hook['locationName']] = '';
269 - }
270 - }
271 -
272 241 // Initialize controller.
273 242 $initCouplingCallback = $this->onassigncouplingcallback(array(&$this, 'initCoupling'));
274 243 add_action('admin_init', $initCouplingCallback);
275 244 add_action($siteHook->tag, $initCouplingCallback, $siteHook->priority);
276 -
277 245 // Add Shortcode callbacks.
278 246 add_shortcode('cjtoolbox', array(&$this, 'shortcode'));
279 247 }
280 -
248 +
281 249 /**
282 250 * put your comment there...
283 - *
251 + *
284 252 * @param mixed $id
285 253 */
286 254 public function addOnActionIds($id) {
287 255 // Add ID is not exists.
288 256 if (!in_array($id, $this->onActionIds)) {
289 - $this->onActionIds[] = $id;
257 + $this->onActionIds[] = $id;
290 258 }
291 259 // Chaining.
292 260 return $this;
293 261 }
@@ -293,86 +261,52 @@
293 261 }
294 262
295 263 /**
296 264 * put your comment there...
297 - *
265 + *
298 266 */
299 - public function getBlocks()
300 - {
267 + public function getBlocks() {
301 268 // Set request view filters used for querying database.
302 269 $this->setRequestFilters();
303 -
304 270 // Get blocks order. NOTE: This is all blocks order not only the queried/target blocks.
305 271 $blocksOrder = array();
306 - $metaBoxesOrder = $this->onblocksorder( $this->model->getOrder() );
307 -
272 + $metaBoxesOrder = $this->onblocksorder($this->model->getOrder());
308 273 // Get ORDER-INDEX <TO> BLOCK-ID mapping.
309 - if ( $metaBoxesOrder ) preg_match_all( '/cjtoolbox-(\d+)/', $metaBoxesOrder[ 'normal' ], $blocksOrder, PREG_SET_ORDER );
310 -
274 + preg_match_all('/cjtoolbox-(\d+)/', $metaBoxesOrder['normal'], $blocksOrder, PREG_SET_ORDER);
311 275 /**
312 276 * append more to orders produced by CJTBlocksCouplingController::setRequestFilter().
313 277 * More to orders may allow other blocks to bein the output (e.g metaboxe blocks).
314 278 */
315 - $blocksOrder = array_merge( $blocksOrder, $this->getFilters()->moreToOrder );
316 -
279 + $blocksOrder = array_merge($blocksOrder, $this->getFilters()->moreToOrder);
317 280 // Prepare request URL to match against Links & Expressions.
318 281 $linksRequestURL = self::getRequestURL();
319 282 $expressionsRequestURL = "{$linksRequestURL}?{$_SERVER['QUERY_STRING']}";
320 -
321 - extract( $this->onmatchingurls( compact( 'linksRequestURL', 'expressionsRequestURL' ) ) );
322 -
283 + extract($this->onmatchingurls(compact('linksRequestURL', 'expressionsRequestURL')));
323 284 // Get all blocks including (Links & Expressions Blocks).
324 - $blocks = $this->ongetblocks(
325 -
326 - $this->model->getPinsBlocks(
327 -
328 - CJTBlockModel::PINS_LINK_EXPRESSION,
329 -
330 - $this->getFilters()->pinPoint,
331 -
332 - $this->getFilters()->customPins,
333 -
334 - $this->getFilters()
335 -
336 - )
337 -
338 - );
339 -
340 -
341 - if ( empty( $blocks ) )
342 - {
285 + $blocks = $this->ongetblocks($this->model->getPinsBlocks(CJTBlockModel::PINS_LINK_EXPRESSION,
286 + $this->getFilters()->pinPoint,
287 + $this->getFilters()->customPins));
288 + if (empty($blocks)) {
343 289 $this->onnoblocks();
344 -
345 290 return false;
346 -
347 291 }
348 -
349 292 // Import related libraries.
350 - cssJSToolbox::import( 'framework:php:evaluator:evaluator.inc.php' );
351 -
293 + cssJSToolbox::import('framework:php:evaluator:evaluator.inc.php');
352 294 /**
353 295 * Iterator over all blocks by using they order.
354 296 * For each block get code and scripts.
355 297 */
356 298 $this->onprocess();
357 -
358 - foreach ( $blocksOrder as $blockOrder )
359 - {
360 -
299 + foreach ($blocksOrder as $blockOrder) {
361 300 $blockId = (int) $blockOrder[1];
362 -
363 301 // As mentioned above. Orders is for all blocks not just those queried from db.
364 - if ( isset($blocks[ $blockId ] ) )
365 - {
366 -
367 - $block = $this->onprocessblock( $blocks[ $blockId ] );
368 -
302 + if (isset($blocks[$blockId])) {
303 + $block = $this->onprocessblock($blocks[$blockId]);
369 304 /**
370 305 * Process Links & Expressions blocks.
371 306 * For better performace check only those with links and expressions flags.
372 307 */
373 - if ( $block->blocksGroup & CJTBlockModel::PINS_LINK_EXPRESSION )
374 - {
308 + if ($block->blocksGroup & CJTBlockModel::PINS_LINK_EXPRESSION) {
375 309 /**
376 310 * Initiliaze $matchedLink and $matchedExpression inside IF statment.
377 311 * Those variables need to refresh state at each block.
378 312 * If there is no link or expression flags, they will be FALSE.
@@ -378,134 +312,79 @@
378 312 * If there is no link or expression flags, they will be FALSE.
379 313 * Otherwise they'll get the correct value inside each statement.
380 314 */
381 315 /// Check if there is a matched link.
382 - if ( $matchedLink = ( $block->blocksGroup & CJTBlockModel::PINS_LINKS ) )
383 - {
384 - $links = explode( "\n", trim( $block->links ) );
385 - $matchedLink = in_array( $linksRequestURL, $links );
316 + if ($matchedLink = ($block->blocksGroup & CJTBlockModel::PINS_LINKS)) {
317 + $links = explode("\n", trim($block->links));
318 + $matchedLink = in_array($linksRequestURL, $links);
386 319 }
387 -
388 320 /// Check if there is a matched expression.
389 - if ( $matchedExpression = ( $block->blocksGroup & CJTBlockModel::PINS_EXPRESSIONS ) )
390 - {
321 + if ($matchedExpression = ($block->blocksGroup & CJTBlockModel::PINS_EXPRESSIONS)) {
391 322 $expressions = explode("\n", $block->expressions);
392 -
393 - foreach ( $expressions as $expression )
394 - {
323 + foreach ($expressions as $expression) {
395 324 /// @TODO: Matches may be used later to evaulate variables inside code block.
396 - if( $matchedExpression = @ preg_match( "/{$expression}/", $expressionsRequestURL ) )
397 - {
325 + if($matchedExpression = @preg_match("/{$expression}/", $expressionsRequestURL)) {
398 326 break;
399 327 }
400 -
401 328 }
402 -
403 329 }
404 -
405 330 /**
406 331 * Exclude Links & Expressions Blocks that doesn't has a match.
407 332 * If there is no matched link or expression then exclude block.
408 333 */
409 - if ( $this->oncancelmatching( ! ( $matchedExpression || $matchedLink ) ) )
410 - {
334 + if ($this->oncancelmatching(!($matchedExpression || $matchedLink))) {
411 335 continue;
412 336 }
413 -
414 337 }
415 338 // Allow extensions to control to prevent block from being in the output
416 - if ( $block = $this->onblockmatched( $block ) )
417 - {
339 + if ($block = $this->onblockmatched($block)) {
418 340 // Retrieve block code-files.
419 - $block->code = $this->model->getBlockCode( $block->id );
420 -
341 + $block->code = $this->model->getBlockCode($block->id);
421 342 // Import Executable (PHP and HTML) templates.
422 - $block->code = $block->code . $this->model->getExecTemplatesCode( $block->id );
423 -
343 + $block->code = $block->code . $this->model->getExecTemplatesCode($block->id);
424 344 // For every location store blocks code into single string
425 -
426 - if ( ! $evaluatedCode = $this->onevalcodeblock( false, $block ) )
427 - {
428 - $evaluatedCode = CJTPHPCodeEvaluator::getInstance( $block )->exec()->getOutput();
429 - }
430 -
345 + $evaluatedCode = CJTPHPCodeEvaluator::getInstance($block)->exec()->getOutput();
431 346 /** @todo Include Debuging info only if we're in debuging mode! */
432 - if ( 1 ) {
433 - // CODE UPDATED BY RBJ -- START
434 - if (trim($evaluatedCode) != ''):
435 - global $post;
436 - $checkMetaBlock = get_post_meta($post->ID, '__CJT-BLOCK-ID', true);
437 -
438 - if (!empty($checkMetaBlock) && $checkMetaBlock == $blockId):
439 - $evaluatedCode = "\n\n<!-- CJT Meta Block ({$blockId}) - {$block->name} - START -->\n{$evaluatedCode}\n<!-- CJT Meta Block ({$blockId}) - {$block->name} - END -->\n\n";
440 - else:
441 - $evaluatedCode = "\n\n<!-- CJT Global Block ({$blockId}) - {$block->name} - START -->\n{$evaluatedCode}\n<!-- CJT Global Block ({$blockId}) - {$block->name} - END -->\n\n";
442 - endif;
443 - endif;
444 - // CODE UPDATED BY RBJ -- END
347 + if (1) {
348 + $evaluatedCode = "\n<!-- Block ({$blockId}) START-->\n{$evaluatedCode}\n<!-- Block ({$blockId}) END -->\n";
445 349 }
446 -
447 - // Initialize block LOCATION array for the first time
448 - if (!isset($this->blocks[ 'code' ][ $block->location ])) {
449 -
450 - $this->blocks[ 'code' ][ $block->location ] = '';
451 - }
452 -
453 - $this->blocks[ 'code' ][ $block->location ] .= $this->onappendcode( $evaluatedCode );
454 -
350 + $this->blocks['code'][$block->location] .= $this->onappendcode($evaluatedCode);
455 351 // Store all used Ids in the CORRECT ORDER.
456 - $this->addOnActionIds( $blockId );
352 + $this->addOnActionIds($blockId);
457 353 }
458 -
459 354 }
460 -
461 355 }
462 -
463 - $templates = $this->onActionIds ?
464 - $this->model->getLinkedTemplates( $this->onActionIds ) :
465 - array();
466 -
356 + $templates = $this->onActionIds ? $this->model->getLinkedTemplates($this->onActionIds) : array();
467 357 // Classisfy as we process Scripts and Styles separatly (different hooks!).
468 - foreach ( $this->onlinkedtemplates( $templates ) as $id => $template )
469 - {
358 + foreach ($this->onlinkedtemplates($templates) as $id => $template) {
470 359 // Filer template!
471 - extract( $this->onlinktemplate( compact( 'template', 'id' ) ) );
472 -
473 - $this->templates[ $template->type ][ $id ] = $template;
360 + extract($this->onlinktemplate(compact('template', 'id')));
361 + $this->templates[$template->type][$id] = $template;
474 362 }
475 -
476 -
363 + // Return true if there is at least 1 block return within the set.
477 364 return true;
478 365 }
479 -
366 +
480 367 /**
481 368 * put your comment there...
482 - *
369 + *
483 370 */
484 371 public function getCached() {
485 372 // Cache is not implemented yet might be supported by extenal Extensions!
486 373 return $this->ongetcache(false);
487 374 }
488 -
375 +
489 376 /**
490 377 * put your comment there...
491 - *
378 + *
492 379 */
493 380 public function getFilters() {
494 - return $this->ongetfilters($this->filters);
381 + return $this->ongetfilters($this->filters);
495 382 }
496 383
497 - /**
498 - * put your comment there...
499 - *
500 - */
501 - public function & getHooksAttacher() {
502 - return $this->hookAttacher;
503 - }
504 -
505 384 /**
506 385 * put your comment there...
507 - *
386 + *
508 387 */
509 388 public function getOnActionIds() {
510 389 return $this->onActionIds;
511 390 }
@@ -511,9 +390,9 @@
511 390 }
512 391
513 392 /**
514 393 * put your comment there...
515 - *
394 + *
516 395 */
517 396 public static function getRequestURL() {
518 397 // URL Protocol.
519 398 $protocol = 'http' . ((isset($_SERVER["HTTPS"]) && ($_SERVER["HTTPS"] == "on")) ? 's' : '') . '://';
@@ -522,25 +401,23 @@
522 401 $port = ($_SERVER["SERVER_PORT"] != "80") ? ":{$_SERVER["SERVER_PORT"]}" : '';
523 402 // Request URI.
524 403 $requestURI = $_SERVER['REQUEST_URI'];
525 404 // Final URL.
526 - //$url = "{$protocol}{$host}{$port}{$requestURI}";
527 - // Removing port segment from the URL as it is causing bugs.
528 - $url = "{$protocol}{$host}{$requestURI}";
405 + $url = "{$protocol}{$host}{$port}{$requestURI}";
529 406 return $url;
530 407 }
531 -
408 +
532 409 /**
533 410 * put your comment there...
534 - *
411 + *
535 412 */
536 413 public function hasOnActionIds() {
537 414 return !empty($this->onActionIds);
538 415 }
539 -
416 +
540 417 /**
541 418 * put your comment there...
542 - *
419 + *
543 420 */
544 421 public function initCoupling() {
545 422 // For some reasons wp action is fired twice.
546 423 // The wrong call won't has $wp_query object set,
@@ -549,22 +426,19 @@
549 426 return;
550 427 }
551 428 // Get current application hook prefix.
552 429 $actionsPrefix = is_admin() ? 'admin' : 'wp';
553 -
554 430 // Get cache or get blocks if not cached.
555 431 // If there is no cache or no blocks for output
556 432 // do nothing.
557 433 if ($this->getCached() || $this->getBlocks()) {
558 -
559 434 // Output blocks on various locations!
560 - $this->hookAttacher->bind();
561 -
435 + add_action("{$actionsPrefix}_head", array(&$this, 'outputBlocks'), 30);
436 + add_action("{$actionsPrefix}_footer", array(&$this, 'outputBlocks'), 30);
562 437 // Links templates & styloes!
563 438 add_action("{$actionsPrefix}_enqueue_scripts", array(&$this, 'linkTemplates'), 30);
564 439 add_action("{$actionsPrefix}_print_styles", array(&$this, 'linkTemplates'), 30);
565 440 }
566 -
567 441 // Link style sheet in footer required custom implementation.
568 442 add_action("{$actionsPrefix}_print_footer_scripts", array(&$this, 'linkFooterStyleSheets'), 9);
569 443 // Make sure this is executed only once.
570 444 // Sometimes wp hook run on backend and sometimes its not.
@@ -572,12 +446,12 @@
572 446 // Simply remove all hooks to ensure its run only one time.
573 447 remove_action('wp', array(&$this, 'initCoupling'));
574 448 remove_action('admin_init', array(&$this, 'initCoupling'));
575 449 }
576 -
450 +
577 451 /**
578 452 * put your comment there...
579 - *
453 + *
580 454 */
581 455 public function linkFooterStyleSheets() {
582 456 // Initialize.
583 457 $styles = array();
@@ -601,9 +475,9 @@
601 475 // jQuery is dpendency object required by the loader.
602 476 wp_enqueue_script('jquery');
603 477 // Enqueue footer style sheet loader.
604 478 wp_enqueue_script('cjt-coupling-footer-css-loader', cssJSToolbox::getURI('controllers:coupling:js:footer-stylesheet-loader.js'));
605 - // Output JavaScript array to be filled with the styles!
479 + // Output Javascript array to be filled with the styles!
606 480 $jsStyleSheetsList = json_encode($styles);
607 481 require cssJSToolbox::resolvePath('controllers:coupling:html:load-footer-style.html.php');
608 482 }
609 483 }
@@ -609,9 +483,9 @@
609 483 }
610 484
611 485 /**
612 486 * put your comment there...
613 - *
487 + *
614 488 */
615 489 public function linkTemplates() {
616 490 $currentFilter = current_filter();
617 491 // Derived template Type from Wordpress filter.
@@ -635,123 +509,81 @@
635 509 // Always make sure the template is queued.
636 510 $queue->enqueue($template->queueName);
637 511 }
638 512 }
639 -
513 +
640 514 /**
641 515 * put your comment there...
642 - *
516 + *
643 517 */
644 518 public function outputBlocks() {
645 -
646 - $hooks = $this->hookAttacher->getHooksByFilterName(current_filter());
647 -
648 - foreach ($hooks as $hook) {
649 -
650 - echo $this->onoutput($this->blocks['code'][$hook['locationName']], $hook['locationName']);
651 - }
652 -
519 + // Derived location name from wordpress filter name.
520 + $currentFilter = current_filter();
521 + // Map "wp hook location" to "block hook location".
522 + $locationsMap = array('head' => 'header', 'footer' => 'footer');
523 + // This hook is used across both ends, front and back ends.
524 + // Remove application prefix (wp_ or admin_).
525 + // Remining is head or footer.
526 + $location = str_replace(array('wp_', 'admin_'), '', $currentFilter);
527 + // Map to block location.
528 + $location = $locationsMap[$location];
529 + echo $this->onoutput($this->blocks['code'][$location], $location);
653 530 }
654 -
531 +
655 532 /**
656 533 * put your comment there...
657 - *
534 + *
658 535 */
659 - protected function setRequestFilters()
660 - {
536 + protected function setRequestFilters() {
661 537 // Get request blocks.
662 - $filters = $this->ondefaultfilters( ( object ) array
663 - (
664 -
538 + $filters = $this->ondefaultfilters((object) array(
665 539 'pinPoint' => 0x00000000,
666 -
667 540 'customPins' => array(),
668 -
669 541 'moreToOrder' => array(),
670 -
671 - 'currentObject' => null,
672 -
673 - 'currentCustomPin' => 0,
674 -
675 - 'params' => array(),
676 -
677 - ) );
678 -
679 - if ( is_admin() )
680 - {
542 + ));
543 + if (is_admin()) {
681 544 // Include all backend blocks.
682 545 $filters->pinPoint |= CJTBlockModel::PINS_BACKEND;
683 546 }
684 - else
685 - {
547 + else {
686 548 $filters->pinPoint |= CJTBlockModel::PINS_FRONTEND;
687 -
688 549 // Pages.
689 - if ( is_page() )
690 - {
550 + if (is_page()) {
691 551 // Blocks with ALL PAGES selected.
692 552 $filters->pinPoint |= CJTBlockModel::PINS_PAGES_ALL_PAGES;
693 -
694 - $filters->currentObject = $GLOBALS[ 'post' ];
695 - $filters->currentCustomPin = CJTBlockModel::PINS_PAGES_CUSTOM_PAGE;
696 -
697 553 // Blocks with PAGE-ID selected.
698 - $filters->customPins[ ] = array
699 - (
554 + $filters->customPins[] = array(
700 555 'pin' => 'pages',
701 -
702 - 'pins' => array( $filters->currentObject->ID ),
703 -
556 + 'pins' => array($GLOBALS['post']->ID),
704 557 'flag' => CJTBlockModel::PINS_PAGES_CUSTOM_PAGE,
705 -
706 558 );
707 -
708 559 // Blocks with FRONT-PAGE selected.
709 - if ( is_front_page() )
710 - {
560 + if (is_front_page()) {
711 561 $filters->pinPoint |= CJTBlockModel::PINS_PAGES_FRONT_PAGE;
712 562 }
713 -
714 563 /**
715 564 * In order for metabox block to get in the output we need
716 565 * to add metabox order for it.
717 566 * @see CJTBlocksCouplingController::getBlocks.
718 567 */
719 - $metabox = CJTModel::create( 'metabox', array( $filters->currentObject->ID ) );
720 -
721 - $filters->moreToOrder[ ][ 1 ] = $metabox->getMetaboxId();
722 -
568 + $metabox = CJTModel::create('metabox', array($GLOBALS['post']->ID));
569 + $filters->moreToOrder[][1] = $metabox->getMetaboxId();
723 570 } // End is_page()
724 -
725 - else if ( is_attachment() )
726 - {
571 + else if (is_attachment()) {
727 572 $filters->pinPoint |= CJTBlockModel::PINS_ATTACHMENT;
728 573 }
729 574 // Posts.
730 - else if ( is_single() )
731 - {
575 + else if (is_single()) {
732 576 // Blocks with ALL POSTS & ALL CATEGORIES selected.
733 577 $filters->pinPoint |= CJTBlockModel::PINS_POSTS_ALL_POSTS | CJTBlockModel::PINS_CATEGORIES_ALL_CATEGORIES;
734 -
735 - $filters->currentObject = $GLOBALS[ 'post' ];
736 - $filters->currentCustomPin = CJTBlockModel::PINS_POSTS_CUSTOM_POST;
737 -
738 578 // Blocks with POST-ID selected.
739 -
740 - $filters->customPins[ ] = array
741 - (
742 -
579 + $filters->customPins[] = array(
743 580 'pin' => 'posts',
744 -
745 - 'pins' => array( $filters->currentObject->ID ),
746 -
581 + 'pins' => array($GLOBALS['post']->ID),
747 582 'flag' => CJTBlockModel::PINS_POSTS_CUSTOM_POST,
748 -
749 583 );
750 -
751 - // Include POST PARENT CATRGORIES blocks.
752 - $parentCategoriesIds = wp_get_post_categories( $filters->currentObject->ID, array( 'fields' => 'ids' ) );
753 -
584 + // Include POST PARENT CATRGORIES blocks.
585 + $parentCategoriesIds = wp_get_post_categories($GLOBALS['post']->ID, array('fields' => 'ids'));
754 586 /**
755 587 * Custom-Posts just added "ON THE RUN/FLY"
756 588 * Need simple fix by confirming that the post is belong to
757 589 * specific category or not.
@@ -757,110 +589,75 @@
757 589 * specific category or not.
758 590 * Custom posts NOW unlike Posts, it doesn't inherit parent
759 591 * taxonomis Code Blocks!!
760 592 */
761 - if ( ! empty( $parentCategoriesIds ) )
762 - {
763 -
764 - $filters->params[ 'hasCategories' ] = true;
765 - $filters->params[ 'parentCategories' ] = $parentCategoriesIds;
766 -
767 - $filters->customPins[ ] = array
768 - (
769 -
593 + if (!empty($parentCategoriesIds)) {
594 + $filters->customPins[] = array(
770 595 'pin' => 'categories',
771 -
772 596 'pins' => $parentCategoriesIds,
773 -
774 597 'flag' => CJTBlockModel::PINS_CATEGORIES_CUSTOM_CATEGORY,
775 -
776 598 );
777 -
778 599 }
779 -
780 600 /**
781 601 * In order for metabox block to get in the output we need
782 602 * to add metabox order for it.
783 603 * @see CJTBlocksCouplingController::getBlocks.
784 604 */
785 - $metabox = CJTModel::create( 'metabox', array( $filters->currentObject->ID ) );
786 -
787 - $filters->moreToOrder[][ 1 ] = $metabox->getMetaboxId();
788 -
789 - /**
605 + $metabox = CJTModel::create('metabox', array($GLOBALS['post']->ID));
606 + $filters->moreToOrder[][1] = $metabox->getMetaboxId();
607 + /**
790 608 * @TODO check for recent posts Based on user configuration.
791 609 * Recent posts should be detcted by comparing
792 610 * user condifguration with post date.
793 611 */
794 - if ( 0 ) {
795 -
612 + if (0) {
613 +
796 614 }
797 615 } // End is_single()
798 -
799 616 // Categories.
800 - else if( is_category() )
801 - {
617 + else if(is_category()) {
802 618 // Blocks with ALL CATEGORIES selected.
803 619 $filters->pinPoint |= CJTBlockModel::PINS_CATEGORIES_ALL_CATEGORIES;
804 -
805 - $filters->currentObject = get_queried_object();
806 - $filters->currentCustomPin = CJTBlockModel::PINS_CATEGORIES_CUSTOM_CATEGORY;
807 -
808 620 // Blocks with CATEGORY-ID selected.
809 - $filters->customPins[] = array
810 - (
621 + $filters->customPins[] = array(
811 622 'pin' => 'categories',
812 -
813 - 'pins' => array( $filters->currentObject->term_id ),
814 -
623 + 'pins' => array(get_queried_object()->term_id),
815 624 'flag' => CJTBlockModel::PINS_CATEGORIES_CUSTOM_CATEGORY,
816 -
817 - );
818 -
625 + );
819 626 } // End is_category()
820 -
821 627 // Blocks with BLOG-INDEX selected.
822 - else if ( is_home() )
823 - {
628 + else if (is_home()) {
824 629 $filters->pinPoint |= CJTBlockModel::PINS_POSTS_BLOG_INDEX;
825 630 }
826 - else if ( is_search() )
827 - {
631 + else if (is_search()) {
828 632 $filters->pinPoint |= CJTBlockModel::PINS_SEARCH;
829 633 }
830 - else if ( is_tag() )
831 - {
634 + else if (is_tag()) {
832 635 $filters->pinPoint |= CJTBlockModel::PINS_TAG;
833 636 }
834 - else if ( is_author() )
835 - {
637 + else if (is_author()) {
836 638 $filters->pinPoint |= CJTBlockModel::PINS_AUTHOR;
837 639 }
838 - else if ( is_archive() )
839 - {
640 + else if (is_archive()) {
840 641 $filters->pinPoint |= CJTBlockModel::PINS_ARCHIVE;
841 642 }
842 - else if ( is_404() )
843 - {
643 + else if (is_404()) {
844 644 $filters->pinPoint |= CJTBlockModel::PINS_404_ERROR;
845 645 }
846 -
847 646 }
848 -
849 - $this->filters = $this->onsetfilters( $filters );
850 -
647 + $this->filters = $this->onsetfilters($filters);
851 648 }
852 -
649 +
853 650 /**
854 651 * Wordpress do shortcode callback for
855 - * CJT Shortcodes ([cjtoolbox ....])!
856 - *
652 + * CJT Shortcodes ([cjtoolbox ....])!
653 + *
857 654 * This method role is to load the shortcode routines
858 655 * in order to handle the request.
859 - *
656 + *
860 657 * It doesn't do anything except deferring the shortcode
861 658 * codes from loaded until shortcode is really used!
862 - *
659 + *
863 660 * @param mixed $attributes
864 661 */
865 662 public function shortcode($attributes, $content) {
866 663 // Instantiate Shortcode handler class.
@@ -868,17 +665,17 @@
868 665 $shortcode = new CJT_Controllers_Coupling_Shortcode($attributes, $content);
869 666 // Return Shortcode replacement!
870 667 return ((string) $shortcode);
871 668 }
872 -
669 +
873 670 /**
874 671 * put your comment there...
875 - *
672 + *
876 673 */
877 674 public static function & theInstance() {
878 675 return self::$instance;
879 676 }
880 -
677 +
881 678 } // End class.
882 679
883 680 // Hookable!
884 681 CJTBlocksCouplingController::define('CJTBlocksCouplingController', array('hookType' => CJTWordpressEvents::HOOK_FILTER));