flatpress/fp-includes/core/core.static.php

144 lines
2.9 KiB
PHP
Executable File

<?php
define('STATIC_DIR', CONTENT_DIR . 'static/');
class static_indexer extends fs_filelister {
var $_directory = STATIC_DIR;
function _checkfile($directory, $file) {
array_push($this->_list, basename($file, EXT));
return 0;
}
}
function static_getlist() {
$obj = new static_indexer();
$list = $obj->getList();
return $list;
}
function static_parse($id) {
if (!static_isvalid($id))
return false;
if ($fname = static_exists($id)) {
$entry = io_load_file($fname);
return (utils_kexplode($entry));
}
return array();
}
function static_isvalid($id) {
return preg_match('![^./\\\\]+!', $id);
}
function static_save($entry, $id, $oldid = null) {
if (!static_isvalid($id))
return false;
$fname = STATIC_DIR . $id . EXT;
$entry ['content'] = apply_filters('content_save_pre', $entry ['content']);
$entry ['subject'] = apply_filters('title_save_pre', $entry ['subject']);
$str = utils_kimplode($entry);
if (io_write_file($fname, $str)) {
if ($oldid && $id != $oldid && $fname = static_exists($oldid)) {
$succ = static_delete($oldid);
return ($succ !== false && $succ !== 2);
}
return true;
}
return false;
}
function static_exists($id) {
if (!static_isvalid($id))
return false;
$fname = STATIC_DIR . $id . EXT;
if (file_exists($fname))
return $fname;
return false;
}
function static_delete($id) {
if (!static_isvalid($id))
return false;
return fs_delete(STATIC_DIR . $id . EXT);
}
function smarty_block_statics($params, $content, &$smarty, &$repeat) {
global $fpdb;
/*
* $show = false;
*
* if (isset($params['alwaysshow']) && $params['alwaysshow']) {
* return $content;
* }
*/
return $content;
}
function smarty_block_static($params, $content, &$smarty, &$repeat) {
global $fpdb;
static $pointer = 0;
// clean old variables
$smarty->assign(array(
'subject' => '',
'content' => '',
'date' => '',
'author' => '',
'version' => '',
'id' => ''
));
if ($arr = $smarty->getTemplateVars('static_page')) {
$smarty->assign('id', $smarty->getTemplateVars('static_id'));
if (THEME_LEGACY_MODE)
theme_entry_filters($arr);
$smarty->assign($arr);
return $content;
}
if (isset($params ['content']) && is_array($params ['content']) && $params ['content']) {
// foreach ($params['entry'] as $k => $val)
$smarty->assign($params ['content']);
return $content;
}
if (isset($params ['alwaysshow']) && $params ['alwaysshow']) {
return $content;
}
$list = $smarty->getTemplateVars('statics');
if (isset($list [$pointer])) {
// foreach ($entry as $k => $val)
$smarty->assign(static_parse($list [$pointer]));
$smarty->assign('id', $list [$pointer]);
$pointer++;
$repeat = true;
} else {
$repeat = false;
}
return $content;
}
$_FP_SMARTY->registerPlugin('block', 'statics', 'smarty_block_statics');
$_FP_SMARTY->registerPlugin('block', 'static_block', 'smarty_block_statics');
$_FP_SMARTY->registerPlugin('block', 'static', 'smarty_block_static');
?>