source: branches/0.4/web/addons/job_monarch/dwoo/Dwoo/Plugin.php @ 755

Last change on this file since 755 was 755, checked in by ramonb, 11 years ago
  • add Dwoo
File size: 2.7 KB
Line 
1<?php
2
3/**
4 * base plugin class
5 *
6 * you have to implement the <em>process()</em> method, it will receive the parameters that
7 * are in the template code
8 *
9 * This software is provided 'as-is', without any express or implied warranty.
10 * In no event will the authors be held liable for any damages arising from the use of this software.
11 *
12 * @author     Jordi Boggiano <j.boggiano@seld.be>
13 * @copyright  Copyright (c) 2008, Jordi Boggiano
14 * @license    http://dwoo.org/LICENSE   Modified BSD License
15 * @link       http://dwoo.org/
16 * @version    1.0.0
17 * @date       2008-10-23
18 * @package    Dwoo
19 */
20abstract class Dwoo_Plugin
21{
22        /**
23         * the dwoo instance that runs this plugin
24         *
25         * @var Dwoo
26         */
27        protected $dwoo;
28
29        /**
30         * constructor, if you override it, call parent::__construct($dwoo); or assign
31         * the dwoo instance yourself if you need it
32         *
33         * @param Dwoo_Core $dwoo the dwoo instance that runs this plugin
34         */
35        public function __construct(Dwoo_Core $dwoo)
36        {
37                $this->dwoo = $dwoo;
38        }
39
40        // plugins should always implement :
41        // public function process($arg, $arg, ...)
42        // or for block plugins :
43        // public function init($arg, $arg, ...)
44
45        // this could be enforced with :
46        // abstract public function process(...);
47        // if my feature request gets enough interest one day
48        // see => http://bugs.php.net/bug.php?id=44043
49
50        /**
51         * utility function that converts an array of compiled parameters (or rest array) to a string of xml/html tag attributes
52         *
53         * this is to be used in preProcessing or postProcessing functions, example :
54         *  $p = $compiler->getCompiledParams($params);
55         *  // get only the rest array as attributes
56         *  $attributes = Dwoo_Plugin::paramsToAttributes($p['*']);
57         *  // get all the parameters as attributes (if there is a rest array, it will be included)
58         *  $attributes = Dwoo_Plugin::paramsToAttributes($p);
59         *
60         * @param array $params an array of attributeName=>value items that will be compiled to be ready for inclusion in a php string
61         * @param string $delim the string delimiter you want to use (defaults to ')
62         * @return string
63         */
64        public static function paramsToAttributes(array $params, $delim = '\'')
65        {
66                if (isset($params['*'])) {
67                        $params = array_merge($params, $params['*']);
68                        unset($params['*']);
69                }
70
71                $out = '';
72                foreach ($params as $attr=>$val) {
73                        $out .= ' '.$attr.'=';
74                        if (trim($val, '"\'')=='' || $val=='null') {
75                                $out .= str_replace($delim, '\\'.$delim, '""');
76                        } elseif (substr($val, 0, 1) === $delim && substr($val, -1) === $delim) {
77                                $out .= str_replace($delim, '\\'.$delim, '"'.substr($val, 1, -1).'"');
78                        } else {
79                                $out .= str_replace($delim, '\\'.$delim, '"') . $delim . '.'.$val.'.' . $delim . str_replace($delim, '\\'.$delim, '"');
80                        }
81                }
82
83                return ltrim($out);
84        }
85}
Note: See TracBrowser for help on using the repository browser.