132 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /*
 | |
|  * Plugin Name: BlockParser
 | |
|  * Type: Block
 | |
|  * Version: 1.0
 | |
|  * Plugin URI: https://www.flatpress.org
 | |
|  * Author: FlatPress
 | |
|  * Author URI: https://www.flatpress.org
 | |
|  * Description: Allows you to use simple non-plugin custom blocks. Part of the standard distribution.
 | |
|  */
 | |
| 
 | |
| // define('BLOCKS_DIR', CONTENT_DIR . 'blocks/');
 | |
| 
 | |
| // as a default blocks_dir == static_dir
 | |
| // so you can edit blocks using the static editor!!
 | |
| define('BLOCKS_DIR', STATIC_DIR);
 | |
| 
 | |
| function plugin_blockparser_parse($blockid) {
 | |
| 	if ($f_contents = io_load_file(BLOCKS_DIR . $blockid . EXT)) {
 | |
| 		$contents = utils_kexplode($f_contents);
 | |
| 		return array_change_key_case($contents, CASE_LOWER);
 | |
| 	}
 | |
| 	// else:
 | |
| 	return false;
 | |
| }
 | |
| 
 | |
| // register_widget('blockparser', 'BlockParser', 'plugin_blockparser_widget', 1);
 | |
| function plugin_blockparser_widget($blockid) {
 | |
| 	if ($contents = plugin_blockparser_parse($blockid)) {
 | |
| 		$contents ['subject'] = apply_filters('the_title', $contents ['subject']);
 | |
| 		$contents ['content'] = apply_filters('the_content', $contents ['content']);
 | |
| 		$contents ['id'] = "widget-bp-$blockid";
 | |
| 		return $contents;
 | |
| 	}
 | |
| 
 | |
| 	return array(
 | |
| 		'subject' => 'BlockParser::Error',
 | |
| 		'content' => "<ul><li>Error parsing block $blockid; file may not exist</li></ul>"
 | |
| 	);
 | |
| }
 | |
| 
 | |
| function plugin_blockparser_init() {
 | |
| 
 | |
| 	// for instance:
 | |
| 	// $fp_config['plugins']['blockparser']['pages'] = array('menu');
 | |
| 	// (these will) be registered from the panel
 | |
| 
 | |
| 	// in this case functions are just a convenient way
 | |
| 	// to create new instances of the plugin_blockparser_widget() function...
 | |
| 
 | |
| 	// this would suggest to use an object, though :B
 | |
| 	// anyway the result is the same...
 | |
| 	$pgs = plugin_getoptions('blockparser', 'pages');
 | |
| 	if (is_array($pgs)) {
 | |
| 		foreach ($pgs as $page) {
 | |
| 			register_widget('blockparser:' . $page, // widget id
 | |
| 			'BlockParser: ' . $page, // widget name
 | |
| 			function () use ($page) {
 | |
| 				return plugin_blockparser_widget($page);
 | |
| 			} // lambda func
 | |
| 			);
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| add_action('init', 'plugin_blockparser_init');
 | |
| 
 | |
| if (class_exists('AdminPanelAction')) {
 | |
| 
 | |
| 	class admin_widgets_blockparser extends AdminPanelAction {
 | |
| 
 | |
| 		var $langres = 'plugin:blockparser';
 | |
| 
 | |
| 		var $commands = array(
 | |
| 			'enable',
 | |
| 			'disable'
 | |
| 		);
 | |
| 
 | |
| 		var $bp_enabled;
 | |
| 
 | |
| 		function doenable($id) {
 | |
| 			$success = -1;
 | |
| 			$enabled = &$this->bp_enabled;
 | |
| 			if (static_exists($id)) {
 | |
| 				if (!$enabled) {
 | |
| 					$enabled = array();
 | |
| 				}
 | |
| 				if (!in_array($id, $enabled)) {
 | |
| 					$enabled [] = $id;
 | |
| 					sort($enabled);
 | |
| 					plugin_addoption('blockparser', 'pages', $enabled);
 | |
| 					plugin_saveoptions();
 | |
| 					$success = 1;
 | |
| 				}
 | |
| 			}
 | |
| 			$this->smarty->assign('success', $success);
 | |
| 			return PANEL_REDIRECT_CURRENT;
 | |
| 		}
 | |
| 
 | |
| 		function dodisable($id) {
 | |
| 			$success = -2;
 | |
| 			$enabled = &$this->bp_enabled;
 | |
| 			if ($enabled && is_numeric($v = array_search($id, $enabled))) {
 | |
| 				unset($enabled [$v]);
 | |
| 				@sort($enabled);
 | |
| 				@plugin_addoption('blockparser', 'pages', $enabled);
 | |
| 				plugin_saveoptions();
 | |
| 				$success = 2;
 | |
| 			}
 | |
| 			$this->smarty->assign('success', $success);
 | |
| 			return PANEL_REDIRECT_CURRENT;
 | |
| 		}
 | |
| 
 | |
| 		function setup() {
 | |
| 			$this->smarty->assign('admin_resource', "plugin:blockparser/admin.plugin.blockparser");
 | |
| 			$this->smarty->assign('enabledlist', $this->bp_enabled = plugin_getoptions('blockparser', 'pages'));
 | |
| 		}
 | |
| 
 | |
| 		function main() {
 | |
| 			global $fp_config;
 | |
| 			// $this->smarty->assignByRef('enabledpages', plugin_getoptions('blockparser'));
 | |
| 			$this->smarty->assign('statics', $assign = static_getlist());
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	admin_addpanelaction('widgets', 'blockparser', true);
 | |
| }
 | |
| 
 | |
| ?>
 | 
