flatpress/fp-includes/core/core.widgets.php
2007-10-30 10:30:07 +00:00

175 lines
3.8 KiB
PHP
Executable File

<?php
/**
* Block-Managing Functions
*/
class widget_indexer extends fs_filelister {
var $_varname = 'fp_widgets';
var $_enabledlist = null;
function widget_indexer() {
if (!file_exists(CONFIG_DIR. 'widgets.conf.php'))
trigger_error('widgets.conf.php not found. Blog may not work as expected, create a widgetlist.conf.php
or reinstall completely FlatPress. If you have just installed FlatPress, the package you
downloaded may be corrupted.', E_USER_WARNING);
$this->_enabledlist = CONFIG_DIR . 'widgets.conf.php';
$this->getEnableds();
}
function getEnableds() {
if (!file_exists($this->_enabledlist))
return;
include($this->_enabledlist);
$this->_list = ${$this->_varname};
}
function hasMore($hor) {
return is_array($this->_list[$hor]) && (current($this->_list[$hor]) !== false);
}
function get($hor) {
global $fp_registered_widgets;
$content = array();
do {
list(,$id) = each($this->_list[$hor]);
@list($newid, $params) = explode(":", $id);
if ($params) $params = explode(',', $params); else $params = array();
// $var = 'plugin_' . $newid . '_widget';
$var = $fp_registered_widgets[ $newid ]['func'];
if (function_exists($var)) {
$content = call_user_func_array($var, $params);
if (!isset($content['id'])) {
$content['id'] = "widget-$newid";
}
} /*
else $content = array(
'subject' => "Sidebar::Error",
'content' => "<ul class=\"widget-error\"><li>No $var function found for plugin $newid.
Plugin may not have been loaded.
Verify whether it is enabled.</li></ul>",
);
*/
} while(!$content);
return array_change_key_case($content, CASE_LOWER);
}
}
function register_widgetset($widgetset) {
global $fp_registered_widgetsets;
if (!$fp_registered_widgetsets) {
$fp_registered_widgetsets = array();
}
if (!in_array($widgetset, $fp_registered_widgetsets))
$fp_registered_widgetsets[] = $widgetset;
}
function get_registered_widgetsets($widgetset) {
global $fp_registered_widgetsets;
if (!$fp_registered_widgetsets) {
$fp_registered_widgetsets = array();
}
return $fp_registered_widgetsets;
}
function register_widget(
$widgetid, // widget id
$widgetname, // name to show
$widget_func, // function/method to call
$num_params = 0, // number of eventually needed parameters
// -1 means optional,
// 0 means no parameters
// each N>0 means *at least* N parameters
$limit_params_to=array()// indexed array of arrays, containing
// allowed parameters (not impl.)
) {
global $fp_registered_widgets;
if (!$fp_registered_widgets)
$fp_registered_widgets = array();
/* we won't mind about collisions, for now */
$fp_registered_widgets[$widgetid] = array(
'name' => $widgetname,
'func' => $widget_func,
'nparams'=> $num_params,
//'needed'=> $params_needed,
'params'=> $limit_params_to
);
}
function get_registered_widgets($widget=null) {
global $fp_registered_widgets;
if (!$fp_registered_widgets)
$fp_registered_widgets = array();
ksort($fp_registered_widgets);
if ($widget)
return isset($fp_registered_widgets[$widget])?
$fp_registered_widgets[$widget]
:
false;
return $fp_registered_widgets;
}
function smarty_block_widgets($params, $content, &$smarty, &$repeat) {
global $fp_widgets;
if($repeat = $fp_widgets->hasMore(($params['pos']))) {
$entry = $fp_widgets->get(($params['pos']));
$smarty->assign($entry);
}
return $content;
}
$smarty->register_block('widgets','smarty_block_widgets');
?>