- Posts: 15
- Thank you received: 0
Kunena 7.0.8 Released
The Kunena team has announce the arrival of Kunena 7.0.8 [K 7.0.8] in stable which is now available for download as a native Joomla extension for J! 5.4.x/6.0.x./6.1.x. This version addresses most of the issues that were discovered in K 6.2 / K 6.3 / K 6.4 and issues discovered during the last development stages of K 7.0
Question Writing Kunena extension
I want to write extension/plugin to display user articles in Kunena profile (this will be 1st step to Kunnenity my site
I thing that we need to do three basic things (but on 95% i made mistake ):
1.
edit components/com_kunena/template/default/profile/usertab.php
and after:
add for example<?php endif; ?>
<dt class="open"><?php echo JText::_('COM_KUNENA_USERPOSTS'); ?></dt>
<dd style="display: none;">
<?php $this->displayUserPosts(); ?>
</dd>
This modification will add one Tab "COM_KUNENA_USERARTICLES" (in com_kunena/language/en_GB we can change it) in our Kunena profile.<dt class="open"><?php echo JText::_('COM_KUNENA_USERARTICLES'); ?></dt>
<dd style="display: none;">
<?php $this->displayArticles(); ?>
</dd>
2.
We must edit: components/com_kunena/func/profile.php
and add after:
I thing somethink like this:function displayUserPosts()
{
require_once (KUNENA_PATH_FUNCS . DS . 'latestx.php');
$obj = new CKunenaLatestX('userposts', 0);
$obj->user = $this->user;
$obj->embedded = 1;
$obj->getUserPosts();
$obj->displayPosts();
//echo $obj->getPagination ( $obj->func, $obj->show_list_time, $obj->page, $obj->totalpages, 3 );
}
Im not sure that step at all...function displayArticles()
{
require_once (KUNENA_PATH_LIB . DS . 'articles.php');
$review = new CKunenaArticles();
$obj->embedded = 1;
$review->display();
}
3.
We must add file articles.php in components/com_kunena/lib
In articles.php we should put right code to display joomla articles. In CB profile this script looks like that:
<?php
/**
* Author Tab Class for handling the CB tab api
* @version $Id: cb.authortab.php 831 2010-01-26 11:04:24Z beat $
* @package Community Builder
* @subpackage cb.authortab.php
* @author JoomlaJoe
* @copyright (C) JoomlaJoe and Beat, www.joomlapolis.com
* @license www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU/GPL version 2
*/
// ensure this file is being included by a parent file
if ( ! ( defined( '_VALID_CB' ) || defined( '_JEXEC' ) || defined( '_VALID_MOS' ) ) ) { die( 'Direct Access to this location is not allowed.' ); }
class getAuthorTab extends cbTabHandler {
function getAuthorTab() {
$this->cbTabHandler();
}
function getDisplayTab($tab,$user,$ui) {
global $_CB_framework, $_CB_database, $mainframe;
$jVer = checkJversion();
$showHits = $_CB_framework->getCfg( 'hits' );
$showRating = $_CB_framework->getCfg( 'vote' );
$return = '';
$now = date( 'Y-m-d H:i:s', $_CB_framework->now() + $_CB_framework->getCfg( 'offset' ) * 60 * 60 );
$query = "SELECT a.id, a.catid, a.title, a.hits,a.created, ROUND( r.rating_sum / r.rating_count ) AS rating,r.rating_count";
if ( $jVer == 1 ) {
$query .= ', CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(\'', a.id, a.alias) ELSE a.id END as slug,'
. ' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug';
}
$query .= "\n FROM #__content AS a"
. "\n LEFT JOIN #__content_rating AS r ON r.content_id=a.id"
. "\n INNER JOIN #__sections AS s ON s.id=a.sectionid AND s.title != 'Mamblog'"
;
if ( $jVer == 1 ) {
$query .= "\n LEFT JOIN #__categories AS cc ON cc.id = a.catid";
}
$query .= "\n WHERE a.created_by=". (int) $user->id .""
. "\n AND a.state = 1 "
. "\n AND (publish_up = '0000-00-00 00:00:00' OR publish_up <= '$now')"
. "\n AND (publish_down = '0000-00-00 00:00:00' OR publish_down >= '$now')"
. "\n AND a.access <= " . (int) $_CB_framework->myCmsGid()
. "\n ORDER BY a.created DESC"
;
$_CB_database->setQuery( $query );
//print $_CB_database->getQuery();
$items = $_CB_database->loadObjectList();
if(!count($items)>0) {
$return .= "<br /><br /><div class=\"cbNoArticles\" style=\"text-align:left;width:95%;\">";
$return .= _UE_NOARTICLES;
$return .= "</div>";
return $return;
}
$return .= $this->_writeTabDescription( $tab, $user );
$return .= "<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\" width=\"95%\">";
$return .= "<tr class=\"sectiontableheader\">";
$return .= "<th>"._UE_ARTICLEDATE."</th>";
$return .= "<th>"._UE_ARTICLETITLE."</th>";
if( $showHits ) $return .= "<th>"._UE_ARTICLEHITS."</th>";
if( $showRating ) $return .= "<th>"._UE_ARTICLERATING."</th>";
$return .= "</tr>";
$i=1;
$hits="";
$rating="";
foreach($items AS $item) {
if ( isset( $mainframe ) && is_callable( array( $mainframe, "getItemid" ) ) ) {
$itemid = $mainframe->getItemid( $item->id );
} elseif (is_callable( "JApplicationHelper::getItemid" ) ) {
$itemid = JApplicationHelper::getItemid( $item->id );
} else {
$itemid = null;
}
$itemidtxt = $itemid ? "&Itemid=" . (int) $itemid : "";
$i= ($i==1) ? 2 : 1;
if (is_callable(array("mosAdminMenus","ImageCheck"))) {
$starImageOn = mosAdminMenus::ImageCheck( 'rating_star.png', '/images/M_images/' );
$starImageOff = mosAdminMenus::ImageCheck( 'rating_star_blank.png', '/images/M_images/' );
} else { // Mambo 4.5.0:
$starImageOn = '<img src="'.$_CB_framework->getCfg( 'live_site' ).'/images/M_images/rating_star.png" alt="" align="middle" style="border:0px;" />';
$starImageOff = '<img src="'.$_CB_framework->getCfg( 'live_site' ).'/images/M_images/rating_star_blank.png" alt="" align="middle" style="border:0px;" />';
}
$img="";
if( $showRating ) {
for ($j=0; $j < $item->rating; $j++) {
$img .= $starImageOn;
}
for ($j=$item->rating; $j < 5; $j++) {
$img .= $starImageOff;
}
$rating = '<td><span class="content_rating">';
$rating .= $img . ' / ';
$rating .= intval( $item->rating_count );
$rating .= "</span></td>\n";
}
if ( $showHits ) {
$hits = "<td>".$item->hits."</td>";
}
if ( $jVer == 1 ) {
$url = cbSef( 'index.php?option=com_content&view=article&id=' . $item->slug . '&catid=' . $item->catslug . $itemidtxt );
} else {
$url = cbSef( 'index.php?option=com_content&task=view&id=' . (int) $item->id . $itemidtxt );
}
$return .= "<tr class=\"sectiontableentry$i\"><td>".cbFormatDate( $item->created )."</td><td><a href=\""
. $url . "\">"
.$item->title."</a></td>".$hits.$rating."</tr>\n";
}
$return .= "</table>";
return $return;
}
} // end class getAuthorTab.
?>
If someone know how and want to finish this please to share your knowledge
Please Log in or Create an account to join the conversation.
1) your tab should be closed (only one can be open)
2) something like that, but you need to modify 3 into the same form as our other classes (or you can just include that php inside template without having any classes).
It doesn't work unmodified, though.. So you do need someone with decent coding skills.
Please Log in or Create an account to join the conversation.
This is very good idea to put php code only to template file:)
Today I read a number of courses php, html and mysql. But i dont know how connect with Joomla database as in this CB plugin. And i donno where is definied $_CB_Database and $_CB_Framework so i dont have idea how its work.
Now I almost sure this is meybe 20-30 minutes for good coder...
Please Log in or Create an account to join the conversation.
', a.id, a.alias) ELSE a.id END as slug,'