see http://phpdocu.sourceforge.net/ // +----------------------------------------------------------------------+ // | Author (TikiWiki): Gustavo Muslera // | Reworked for Bitweaver (& Undoubtedly Screwed-Up) // | by: wjames5 // | Reworked from: data.articles.php from wikiplugin_articles.php // +----------------------------------------------------------------------+ // $Id$ /** * definitions */ namespace Bitweaver\Liberty; use Bitweaver\Users\RoleUser; use Bitweaver\Blogs\BitBlogPost; use Bitweaver\KernelTools; global $gBitSystem, $gBitSmarty; //it seems this is loaded before the package is activated. //if( $gBitSystem->isPackageActive( 'blogs' ) ) { // Do not include this Plugin if the Package is not active define( 'PLUGIN_GUID_DATABLOG', 'datablog' ); global $gLibertySystem; $pluginParams = [ 'tag' => 'BLOG', 'auto_activate' => false, 'requires_pair' => false, 'load_function' => 'data_blog', 'help_function' => 'data_blog_help', 'title' => 'Blog', 'help_page' => 'DataPluginBlog', 'description' => KernelTools::tra( "This plugin will display several posts from a blog." ), 'syntax' => "{BLOG id= user= max= format= }", 'plugin_type' => DATA_PLUGIN, ]; $gLibertySystem->registerPlugin( PLUGIN_GUID_DATABLOG, $pluginParams ); $gLibertySystem->registerDataTag( $pluginParams['tag'], PLUGIN_GUID_DATABLOG ); // Help Routine function data_blog_help() { $help = '' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'' .'
' . KernelTools::tra( "Key" ) . '' . KernelTools::tra( "Type" ) . '' . KernelTools::tra( "Comments" ) . '
id' . KernelTools::tra( "numeric") . '
' . KernelTools::tra("(optional)") . '
' . KernelTools::tra( "Filters for the specified Blog by id") . '
user' . KernelTools::tra( "string") . '
' . KernelTools::tra("(optional)") . '
' . KernelTools::tra( "The login name of the user who's posts are to be displayed. (Default = 3)") . '
max' . KernelTools::tra( "numeric") . '
' . KernelTools::tra("(optional)") . '
' . KernelTools::tra( "The number of posts to be displayed. (Default = 3)") . '
format' . KernelTools::tra( "string") . '
' . KernelTools::tra("(optional)") . '
' . KernelTools::tra( "Specify format for posts display - options: full, list (default)") . '
' . KernelTools::tra("Example: ") . "{BLOG id=2 max=5 format='full'}
" . KernelTools::tra("Example: ") . "{BLOG id=5 format='list'}"; return $help; } // Executable Routine function data_blog($data, $params) { // No change in the parameters with Clyde global $gLibertySystem, $gBitSmarty, $gBitSystem, $gBitUser; $display_result = ""; if ($gBitSystem->isPackageActive('blogs') && $gBitUser->hasPermission( 'p_blogs_view')) { // The next 2 lines allow access to the $pluginParams given above and may be removed when no longer needed $pluginParams = $gLibertySystem->mPlugins[PLUGIN_GUID_DATABLOG]; require_once BLOGS_PKG_CLASS_PATH.'BitBlog.php'; require_once LIBERTY_PKG_INCLUDE_PATH.'lookup_content_inc.php'; $module_params = $params; if (isset($module_params['id'])) { $gBitSmarty->assign('blog_id', $module_params['id']); } $blogPost = new BitBlogPost(); $sortOptions = [ "publish_date_desc", "publish_date_asc", "last_modified_asc", "last_modified_desc", "created_asc", "created_desc", "random", ]; $sort_mode = !empty( $module_params['sort_mode'] ) && in_array( $module_params['sort_mode'], $sortOptions ) ? $module_params['sort_mode'] : 'publish_date_desc'; $getHash = []; if ( isset($module_params['user']) ){ $getHash['user'] = $module_params['user']; } if ( isset($module_params['id']) ){ $getHash['blog_id'] = $module_params['id'];} if ( isset($module_params['group_id']) ){ $getHash['group_id'] = $module_params['group_id'];} if ( isset($module_params['role_id']) ){ $getHash['role_id'] = $module_params['role_id'];} // handle draft posts $getHash['enforce_status'] = true; // @TODO enable lists that include draft posts // the current tpl configuration doesnt allow us to support draft lists right now // there is an object reference problem in liberty::service_content_body_inc.tpl // if the object reference problem in the above mentions tpl is patched then use this if to enable drafts // if ( !empty( $module_params['status'] ) && $module_params['status'] = "draft" && isset( $gBitUser->mUserId ) ){ if ( false ) { // if we are getting drafts then get future posts too $getHash['show_future'] = true; $getHash['min_status_id'] = -6; $getHash['max_status_id'] = -4; $getHash['min_owner_status_id'] = -6; // limit by user $getHash['user_id'] = $gBitUser->mUserId; }else{ $getHash['min_owner_status_id'] = 0; } $getHash['sort_mode'] = $sort_mode; $getHash['parse_data'] = true; $getHash['max_records'] = empty($module_params['max']) ? 1 : $module_params['max']; $getHash['load_num_comments'] = true; $getHash['page'] = !empty($module_params['page']) ? $module_params['page'] : 1; $getHash['offset'] = !empty($module_params['offset']) ? $module_params['offset'] : 0; $blogPosts = $blogPost->getList( $getHash ); $display_format = empty($module_params['format']) ? 'simple_title_list' : $module_params['format']; switch( $display_format ) { case 'full': $display_result = '
'; if ( $gBitSystem->isPackageActive( 'rss' ) ){ if ( isset($module_params['user']) ){ $rssUser = new RoleUser(); $rssUser->load(false, $module_params['user']); $rssUserId = $rssUser->getField('user_id'); } $rssPath = BLOGS_PKG_URL.'blogs_rss.php?' .( isset($module_params['id']) ? 'blog_id='.$module_params['id'] : "" ) .( (isset($module_params['id']) && isset($rssUserId))? "&": "") .( isset($rssUserId) ? 'user_id='.$rssUserId : "" ) .( (isset($rssUserId) && isset($module_params['group_id']))? "&": "") .( isset($module_params['group_id']) ? 'group_id='.$module_params['group_id'] : "" ) .( (isset($rssUserId) && isset($module_params['role_id']))? "&": "") .( isset($module_params['role_id']) ? 'role_id='.$module_params['role_id'] : "" ); // something like this would be better, calling smarty directly so translation can also be called -wjames5 // $rssIcon = Smarty\smarty_function_biticon( array('ipackage'=>"rss", 'iname'="rss-16x16", 'iexplain'=>"RSS feed"), &$gBitSmarty ); $display_result .= '
RSS feed
'; } $gBitSmarty->assign( 'showDescriptionsOnly', true ); foreach( $blogPosts['data'] as $aPost ) { $gBitSmarty->assign('aPost', $aPost); $display_result .= $gBitSmarty->fetch( 'bitpackage:blogs/blog_list_post.tpl' ); } $display_result .= '
'; $display_result = mb_eregi_replace( "\n", "", $display_result ); break; case 'list': default: $display_result = "\n"; break; } } else { $display_result = '
'.KernelTools::tra('Blogs Package Deactivated.'). '
'; } return $display_result; }