summaryrefslogtreecommitdiff
path: root/example/index.php
blob: caf57eb473ae0998ca733e190c9552faa83f41ef (plain)
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
<?php

# Example program to demonstrate the STE...

require_once(dirname(__FILE__) . "/../steloader.php");
use \kch42\ste;

# Initialize an STECore instance
$ste = new ste\STECore(
    new ste\FilesystemStorageAccess(                # The STECore needs a StorageAccess implementation, we are using the FilesystemStorageAccess, which comes with STE.
        dirname(__FILE__) . "/templates/src",    # FilesystemStorageAccess needs a directory, where the Templates are...
        dirname(__FILE__) . "/templates/transc"  # ...and a directory for the compiled templates (write permissions needed).
    )
);

# Set STE to a more verbose behavior:
$ste->mute_runtime_errors = false;

# First, lets define some custom tags.

# <ste:uppercase> will exchange all letters with their uppercase complement
$ste->register_tag(
    "uppercase",
    function ($ste, $params, $sub) {
        $text = $sub($ste);       # Get the tags content
        return strtoupper($text); # Return the new text.
    }
);

# <ste:repeat> will repeat its content n times (<ste:for> could be used too, but i needed more examples :-P )
$ste->register_tag(
    "repeat",
    function ($ste, $params, $sub) {
        $output = "";
        if (!is_numeric($params["n"])) {
            throw new ste\RuntimeError("Sorry, but parameter n must be a number...");
        }

        for ($i = 0; $i < $params["n"]; ++$i) {
            $output .= $sub($ste);
        }

        return $output;
    }
);

# assign some data
$ste->vars["users"] = array(
    array("name" => "Foo", "username" => "foo", "online" => true),
    array("name" => "Bar", "username" => "bar", "online" => false),
    array("name" => "Baz", "username" => "baz", "online" => true)
);
$ste->vars["title"] = "cool";
$ste->vars["articles"] = array(
    array("author" => "foo", "title" => "cool article", "timestamp" => 1316553353, "excerpt" => "bla", "full" => "blablabla"),
    array("author" => "bar", "title" => "awesome",      "timestamp" => 1316552000, "excerpt" => "...", "full" => ".........."),
    array("author" => "baz", "title" => "<ingenious",   "timestamp" => 1316551000, "excerpt" => "...", "full" => ".........."),
    array("author" => "baz", "title" => "whatever...",  "timestamp" => 1316550000, "excerpt" => "...", "full" => "..........")
);

$ste->vars["foo"] = "baz";
$ste->vars["bar"] = "lol";
$ste->vars["baz"] = array("lol" => "cool");

# Execute the template and output the result
echo $ste->exectemplate("articles.html");