Smarty-3.1.21/ 0000775 0000000 0000000 00000000000 12420527714 011561 5 ustar root root Smarty-3.1.21/demo/ 0000755 0000000 0000000 00000000000 12420527746 012510 5 ustar root root Smarty-3.1.21/demo/templates_c/ 0000755 0000000 0000000 00000000000 12420527746 015010 5 ustar root root Smarty-3.1.21/demo/index.php 0000664 0000000 0000000 00000002103 12420527634 014322 0 ustar root root force_compile = true; $smarty->debugging = true; $smarty->caching = true; $smarty->cache_lifetime = 120; $smarty->assign("Name", "Fred Irving Johnathan Bradley Peppergill", true); $smarty->assign("FirstName", array("John", "Mary", "James", "Henry")); $smarty->assign("LastName", array("Doe", "Smith", "Johnson", "Case")); $smarty->assign("Class", array(array("A", "B", "C", "D"), array("E", "F", "G", "H"), array("I", "J", "K", "L"), array("M", "N", "O", "P"))); $smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"), array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234"))); $smarty->assign("option_values", array("NY", "NE", "KS", "IA", "OK", "TX")); $smarty->assign("option_output", array("New York", "Nebraska", "Kansas", "Iowa", "Oklahoma", "Texas")); $smarty->assign("option_selected", "NE"); $smarty->display('index.tpl'); Smarty-3.1.21/demo/plugins/ 0000755 0000000 0000000 00000000000 12420527746 014171 5 ustar root root Smarty-3.1.21/demo/plugins/resource.mysqls.php 0000664 0000000 0000000 00000003747 12420527634 020071 0 ustar root root CREATE TABLE IF NOT EXISTS `templates` ( * `name` varchar(100) NOT NULL, * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, * `source` text, * PRIMARY KEY (`name`) * ) ENGINE=InnoDB DEFAULT CHARSET=utf8; * Demo data: *
INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');* * @package Resource-examples * @author Rodney Rehm */ class Smarty_Resource_Mysqls extends Smarty_Resource_Custom { // PDO instance protected $db; // prepared fetch() statement protected $fetch; public function __construct() { try { $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty"); } catch (PDOException $e) { throw new SmartyException('Mysql Resource failed: ' . $e->getMessage()); } $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name'); } /** * Fetch a template and its modification time from database * * @param string $name template name * @param string $source template source * @param integer $mtime template modification timestamp (epoch) * * @return void */ protected function fetch($name, &$source, &$mtime) { $this->fetch->execute(array('name' => $name)); $row = $this->fetch->fetch(); $this->fetch->closeCursor(); if ($row) { $source = $row['source']; $mtime = strtotime($row['modified']); } else { $source = null; $mtime = null; } } } Smarty-3.1.21/demo/plugins/cacheresource.mysql.php 0000664 0000000 0000000 00000013452 12420527634 020664 0 ustar root root CREATE TABLE IF NOT EXISTS `output_cache` ( * `id` CHAR(40) NOT NULL COMMENT 'sha1 hash', * `name` VARCHAR(250) NOT NULL, * `cache_id` VARCHAR(250) NULL DEFAULT NULL, * `compile_id` VARCHAR(250) NULL DEFAULT NULL, * `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, * `content` LONGTEXT NOT NULL, * PRIMARY KEY (`id`), * INDEX(`name`), * INDEX(`cache_id`), * INDEX(`compile_id`), * INDEX(`modified`) * ) ENGINE = InnoDB; * * @package CacheResource-examples * @author Rodney Rehm */ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom { // PDO instance protected $db; protected $fetch; protected $fetchTimestamp; protected $save; public function __construct() { try { $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty"); } catch (PDOException $e) { throw new SmartyException('Mysql Resource failed: ' . $e->getMessage()); } $this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id'); $this->fetchTimestamp = $this->db->prepare('SELECT modified FROM output_cache WHERE id = :id'); $this->save = $this->db->prepare('REPLACE INTO output_cache (id, name, cache_id, compile_id, content) VALUES (:id, :name, :cache_id, :compile_id, :content)'); } /** * fetch cached content and its modification time from data source * * @param string $id unique cache content identifier * @param string $name template name * @param string $cache_id cache id * @param string $compile_id compile id * @param string $content cached content * @param integer $mtime cache modification timestamp (epoch) * * @return void */ protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime) { $this->fetch->execute(array('id' => $id)); $row = $this->fetch->fetch(); $this->fetch->closeCursor(); if ($row) { $content = $row['content']; $mtime = strtotime($row['modified']); } else { $content = null; $mtime = null; } } /** * Fetch cached content's modification timestamp from data source * * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the complete cached content. * * @param string $id unique cache content identifier * @param string $name template name * @param string $cache_id cache id * @param string $compile_id compile id * * @return integer|boolean timestamp (epoch) the template was modified, or false if not found */ protected function fetchTimestamp($id, $name, $cache_id, $compile_id) { $this->fetchTimestamp->execute(array('id' => $id)); $mtime = strtotime($this->fetchTimestamp->fetchColumn()); $this->fetchTimestamp->closeCursor(); return $mtime; } /** * Save content to cache * * @param string $id unique cache content identifier * @param string $name template name * @param string $cache_id cache id * @param string $compile_id compile id * @param integer|null $exp_time seconds till expiration time in seconds or null * @param string $content content to cache * * @return boolean success */ protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content) { $this->save->execute(array( 'id' => $id, 'name' => $name, 'cache_id' => $cache_id, 'compile_id' => $compile_id, 'content' => $content, )); return !!$this->save->rowCount(); } /** * Delete content from cache * * @param string $name template name * @param string $cache_id cache id * @param string $compile_id compile id * @param integer|null $exp_time seconds till expiration or null * * @return integer number of deleted caches */ protected function delete($name, $cache_id, $compile_id, $exp_time) { // delete the whole cache if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) { // returning the number of deleted caches would require a second query to count them $query = $this->db->query('TRUNCATE TABLE output_cache'); return - 1; } // build the filter $where = array(); // equal test name if ($name !== null) { $where[] = 'name = ' . $this->db->quote($name); } // equal test compile_id if ($compile_id !== null) { $where[] = 'compile_id = ' . $this->db->quote($compile_id); } // range test expiration time if ($exp_time !== null) { $where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)'; } // equal test cache_id and match sub-groups if ($cache_id !== null) { $where[] = '(cache_id = ' . $this->db->quote($cache_id) . ' OR cache_id LIKE ' . $this->db->quote($cache_id . '|%') . ')'; } // run delete query $query = $this->db->query('DELETE FROM output_cache WHERE ' . join(' AND ', $where)); return $query->rowCount(); } } Smarty-3.1.21/demo/plugins/cacheresource.memcache.php 0000664 0000000 0000000 00000004502 12420527634 021255 0 ustar root root memcache = new Memcache(); $this->memcache->addServer('127.0.0.1', 11211); } /** * Read values for a set of keys from cache * * @param array $keys list of keys to fetch * * @return array list of values with the given keys used as indexes * @return boolean true on success, false on failure */ protected function read(array $keys) { $_keys = $lookup = array(); foreach ($keys as $k) { $_k = sha1($k); $_keys[] = $_k; $lookup[$_k] = $k; } $_res = array(); $res = $this->memcache->get($_keys); foreach ($res as $k => $v) { $_res[$lookup[$k]] = $v; } return $_res; } /** * Save values for a set of keys to cache * * @param array $keys list of values to save * @param int $expire expiration time * * @return boolean true on success, false on failure */ protected function write(array $keys, $expire = null) { foreach ($keys as $k => $v) { $k = sha1($k); $this->memcache->set($k, $v, 0, $expire); } return true; } /** * Remove values from cache * * @param array $keys list of keys to delete * * @return boolean true on success, false on failure */ protected function delete(array $keys) { foreach ($keys as $k) { $k = sha1($k); $this->memcache->delete($k); } return true; } /** * Remove *all* values from cache * * @return boolean true on success, false on failure */ protected function purge() { $this->memcache->flush(); } } Smarty-3.1.21/demo/plugins/cacheresource.apc.php 0000664 0000000 0000000 00000003620 12420527634 020256 0 ustar root root $v) { $_res[$k] = $v; } return $_res; } /** * Save values for a set of keys to cache * * @param array $keys list of values to save * @param int $expire expiration time * * @return boolean true on success, false on failure */ protected function write(array $keys, $expire = null) { foreach ($keys as $k => $v) { apc_store($k, $v, $expire); } return true; } /** * Remove values from cache * * @param array $keys list of keys to delete * * @return boolean true on success, false on failure */ protected function delete(array $keys) { foreach ($keys as $k) { apc_delete($k); } return true; } /** * Remove *all* values from cache * * @return boolean true on success, false on failure */ protected function purge() { return apc_clear_cache('user'); } } Smarty-3.1.21/demo/plugins/resource.mysql.php 0000664 0000000 0000000 00000005067 12420527634 017703 0 ustar root root CREATE TABLE IF NOT EXISTS `templates` ( * `name` varchar(100) NOT NULL, * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, * `source` text, * PRIMARY KEY (`name`) * ) ENGINE=InnoDB DEFAULT CHARSET=utf8; * Demo data: *
INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');* * @package Resource-examples * @author Rodney Rehm */ class Smarty_Resource_Mysql extends Smarty_Resource_Custom { // PDO instance protected $db; // prepared fetch() statement protected $fetch; // prepared fetchTimestamp() statement protected $mtime; public function __construct() { try { $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty"); } catch (PDOException $e) { throw new SmartyException('Mysql Resource failed: ' . $e->getMessage()); } $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name'); $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name'); } /** * Fetch a template and its modification time from database * * @param string $name template name * @param string $source template source * @param integer $mtime template modification timestamp (epoch) * * @return void */ protected function fetch($name, &$source, &$mtime) { $this->fetch->execute(array('name' => $name)); $row = $this->fetch->fetch(); $this->fetch->closeCursor(); if ($row) { $source = $row['source']; $mtime = strtotime($row['modified']); } else { $source = null; $mtime = null; } } /** * Fetch a template's modification time from database * * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source. * * @param string $name template name * * @return integer timestamp (epoch) the template was modified */ protected function fetchTimestamp($name) { $this->mtime->execute(array('name' => $name)); $mtime = $this->mtime->fetchColumn(); $this->mtime->closeCursor(); return strtotime($mtime); } } Smarty-3.1.21/demo/plugins/resource.extendsall.php 0000664 0000000 0000000 00000003372 12420527634 020676 0 ustar root root smarty->getTemplateDir() as $key => $directory) { try { $s = Smarty_Resource::source(null, $source->smarty, '[' . $key . ']' . $source->name); if (!$s->exists) { continue; } $sources[$s->uid] = $s; $uid .= $s->filepath; } catch (SmartyException $e) { } } if (!$sources) { $source->exists = false; $source->template = $_template; return; } $sources = array_reverse($sources, true); reset($sources); $s = current($sources); $source->components = $sources; $source->filepath = $s->filepath; $source->uid = sha1($uid); $source->exists = $exists; if ($_template && $_template->smarty->compile_check) { $source->timestamp = $s->timestamp; } // need the template at getContent() $source->template = $_template; } } Smarty-3.1.21/demo/configs/ 0000755 0000000 0000000 00000000000 12420527746 014140 5 ustar root root Smarty-3.1.21/demo/configs/test.conf 0000644 0000000 0000000 00000000101 12420527634 015752 0 ustar root root title = Welcome to Smarty! cutoff_size = 40 [setup] bold = true Smarty-3.1.21/demo/templates/ 0000755 0000000 0000000 00000000000 12420527746 014506 5 ustar root root Smarty-3.1.21/demo/templates/footer.tpl 0000644 0000000 0000000 00000000020 12420527634 016511 0 ustar root root