Classes

File io/template/Template.class.php

File io/template/Template.class.php

  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 
<?php
/**
 * This class represents a PHPBoost template. Templates are used to generate text which
 * have a common structure. You just have to write your text with tags at the place you want to insert
 * values and assign values in the objet, when you will display them, the tags will be replaced by
 * the corresponding value.
 * PHPBoost's template engine is home made and has its own syntax which is the described below:
 * <h4>Variable assignation</h4>
 * <h5>Simple variables</h5>
 * A simple variable is accessible with the {NAME} syntax where NAME is its template name. If the variable is not assigned, nothing will be displayed (no error message).
 * Simple variables are assigned by the assign_vars() method.
 * <h4>Lang variables</h4>
 * To speed the development up, you can avoid setting all the localized variables to use. You just have to associate one or more lang map
 * (lang_identifier => localized lang) with the {@link add_lang()} method. In the template, you just have to
 * add the 'L_' prefix before the variable name and it will be searched in the langs map.
 * <h5>Loops</h5>
 * You can make some loops to repeat a pattern, those loops can be nested. A loop has a name (name) and each iteration contains some variables, for example, the variable VAR.
 * <br />\# START name #
 * <br />My variable is {name.VAR}
 * <br />\# END name #
 * <br />To nest loops, here is an example:
 * <br />\# START loop1 #
 * <br />I write my loop1 var here: {loop1.VAR}.
 * <br />\# START loop1.loop2 #
 * <br />I can write my loop2 var here: {loop1.loop2.VAR} but also my loop1 var of the parent loop: {loop1.VAR}.
 * <br />\# END loop1.loop2 #
 * <br />\# END loop1 #
 * To assign the variable, see the assign_block_vars() method which creates one iteration.
 * <h5>Conditions</h5>
 * When you want to display something only in particular case, you can use some condition tests.
 * <br />\# IF C_MY_TEST #
 * <br />This text will be displayed only if the C_MY_TEST variable is true
 * <br />\# ENDIF #
 * You can nest some conditions.
 * <h3>Nesting templates</h3>
 * You can embed a template in another one. For that, you have to use the INCLUDE instruction like that: # INCLUDE template #
 * where template is the identifier of a template added with the add_subtemplate() method. When the template will be displayed, this
 * instruction will be replaced by the content of the template you have attached to this identifier or nothing if the template hasn't been set.
 * You also can include templates in a loop, for that you have to place them in the third parameter of the asssign_block_vars() method.
 * <h4>Variables using</h4>
 * By default, when you call the variable by it's name, it'll be returnes as it was assigned. But you can do little implicit treatments of variables
 * directly in the template. Here are the prefixes to use before the variable names:
 * <ul>
 *  <li><E_: the variable will be searched without its prefix and will be escaped using <code>htmlspecialchars()</code></li>
 *  <li><J_: the variable will be searched without its prefix and will be escaped using <code>TextHelper::to_js_string()</code></li>
 *  <li><L_: the variable will be searched without its prefix in every languages maps registered using <code>Template->add_lang($language)</code></li>
 *  <li><EL_: the variable will be searched without its prefix like languages variables and will be escaped using <code>htmlspecialchars()</code></li>
 *  <li><JL_: the variable will be searched without its prefix like languages variables and will be escaped using <code>TextHelper::to_js_string()</code></li>
 * </ul>
 * @package     IO
 * @subpackage  Template
 * @copyright   &copy; 2005-2019 PHPBoost
 * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL-3.0
 * @author      Benoit SAUTEL <ben.popeye@phpboost.com>
 * @version     PHPBoost 5.2 - last update: 2014 12 22
 * @since       PHPBoost 3.0 - 2010 02 03
*/

interface Template extends View
{
    /**
     * Enables the strict mode. If a variable that does not exist in the object is requested,
     *   then an exception will be raised.
     */
    function enable_strict_mode();

    /**
     * Disables the strict mode. If a variable that does not exist in the object is requested,
     *   then an empty value will be returned.
     */
    function disable_strict_mode();

    /**
     * Assigns the value <code>$code</code> to the template variable of name <code>$key</code>
     * @param $key the template parameter name
     * @param $value the template parameter value
     */
    function put($key, $value);

    /**
     * Assigns template variables. It could be simple variables, loop or subtemplates.
     * @param mixed[string] $vars A map key => value where <code>$value</code> will be assigned to the template variable of name <code>$key</code>
     */
    function put_all(array $vars);

    /**
     * @deprecated Use <code>put_all</code> or <code>put</code> instead
     * Assigns some simple template vars.  Those variables will be accessed in your template with the {var_name} syntax.
     * @param string[] $array_vars A map var_name => var_value. Generally, var_name is written in caps characters.
     */
    function assign_vars(array $array_vars);

    /**
     * Assigns a template block. A block represents a loop and has a name which be used in your template file to indicate which loop you want to browse.
     * To know what syntax to use to browse a loop, see the class description, there are examples.
     * @param string $block_name Block name.
     * @param string[] $array_vars A map var_name => var_value. Generally, var_name is written in caps characters.
     * @param Template[] $subtemplates A list
     */
    function assign_block_vars($block_name, array $array_vars, array $subtemplates = array());

    /**
     * Displays the template.
     */
    function display();

    /**
     * Adds a lang map to the template map list in which template variables beginning by L_ will be searched for of not already registered
     * @param string[string] $lang the language map
     */
    function add_lang(array $lang);

    /**
     * @deprecated Use <code>put_all</code> or <code>put</code> instead
     * Adds a subtemplate to embed with the INCLUDE instruction
     * @param string $identifier the identifier
     * @param Template $template the template to include (variables must be set in this template)
     */
    function add_subtemplate($identifier, Template $template);

    /**
     * Inject data into the template. This is for internal use only.
     * @param TemplateData the data to inject into the template
     */
    function set_data(TemplateData $data);

    /**
     * Returns the template data
     * @return TemplateData
     */
    function get_data();

    /**
     * Returns the pictures data path
     * @return String
     */
    function get_pictures_data_path();
}
?>