function process($row) { Komento::setCurrentComponent($row->component); // set extension object $row->extension = Komento::loadApplication($row->component)->load($row->cid); if ($row->extension === false) { $row->extension = Komento::getErrorApplication($row->component, $row->cid); } // get permalink $row->pagelink = $row->extension->getContentPermalink(); // set content title $row->contenttitle = $row->extension->getContentTitle(); // set component title $row->componenttitle = $row->extension->getComponentName(); return $row; }
public static function loadComments( $id, $component, $options = array() ) { $commentsModel = Komento::getModel( 'comments' ); $comments = $commentsModel->getComments( $component, $id, $options ); $commentsModel = Komento::getModel( 'comments' ); $commentCount = $commentsModel->getCount( $component, $id ); if( array_key_exists('raw', $options) ) { return $comments; } // @task: load necessary css and javascript files. Komento::getHelper( 'Document' )->loadHeaders(); $application = Komento::loadApplication( $component ); if( $application->load( $id ) === false ) { $application = Komento::getErrorApplication( $component, $id ); } $theme = Komento::getTheme(); $theme->set( 'component', $component ); $theme->set( 'cid', $id ); $theme->set( 'comments', $comments ); $theme->set( 'options', $options ); $theme->set( 'componentHelper', $application ); $theme->set( 'application', $application ); $theme->set( 'commentCount', $commentCount ); $contentLink = $application->getContentPermalink(); $theme->set( 'contentLink', $contentLink ); $html = $theme->fetch('comment/box.php'); /* [KOMENTO_POWERED_BY_LINK] */ // free version powered by link append (for reference only) // $html .= '<div style="text-align: center; padding: 20px 0;"><a href="http://stackideas.com">' . JText::_( 'COM_KOMENTO_POWERED_BY_KOMENTO' ) . '</a></div>'; return $html; }
public function process( $action, $comment ) { // process all activities and 3rd party integration here // Due to the possible conflict data of $comment->created containing lapsed time instead of raw date, we use the table object directly instead if( !( $comment instanceof KomentoTableComments ) ) { $id = 0; if( is_int( $comment ) || is_string( $comment ) ) { $id = $comment; } if( $comment instanceof KomentoComment ) { $id = $comment->id; } $comment = Komento::getTable( 'comments' ); $comment->load( $id ); } if( $action != 'remove' && $comment->published != 1 ) { return false; } $config = Komento::getConfig(); $profile = Komento::getProfile(); $application = Komento::loadApplication( $comment->component )->load( $comment->cid ); if( $application === false) { $application = Komento::getErrorApplication( $comment->component, $comment->cid ); } $pagelink = $application->getContentPermalink(); $permalink = $pagelink . '#' . $comment->id; $author = $application->getAuthorId(); $title = $application->getContentTitle(); if( $profile->id == 0 ) { return false; } // native activity if( ( $action == 'comment' && $config->get( 'activities_comment' ) ) || ( $action == 'reply' && $config->get( 'activities_reply' ) ) || ( $action == 'like' && $config->get( 'activities_like' ) ) ) { $this->addActivity( $action, $comment->id, $comment->created_by ); } // Add jomsocial activity if( $action == 'comment' && $config->get( 'jomsocial_enable_comment' ) ) { $this->addJomSocialActivityComment( $comment ); } if( $action == 'reply' && $config->get( 'jomsocial_enable_reply' ) ) { $this->addJomSocialActivityReply( $comment ); } if( $action == 'like' && $config->get( 'jomsocial_enable_like' ) ) { $this->addJomSocialActivityLike( $comment, $profile->id ); } // Add jomsocial userpoints if( $config->get( 'jomsocial_enable_userpoints' ) ) { switch( $action ) { case 'comment': Komento::addJomSocialPoint( 'com_komento.comment.add' ); Komento::addJomSocialPoint( 'com_komento.comment.add.author', $author ); break; case 'reply': Komento::addJomSocialPoint( 'com_komento.comment.reply' ); break; case 'like': Komento::addJomSocialPoint( 'com_komento.comment.like' ); Komento::addJomSocialPoint( 'com_komento.comment.liked', $comment->created_by ); break; case 'unlike': Komento::addJomSocialPoint( 'com_komento.comment.unlike' ); Komento::addJomSocialPoint( 'com_komento.comment.unliked', $comment->created_by ); break; case 'report': Komento::addJomSocialPoint( 'com_komento.comment.report' ); Komento::addJomSocialPoint( 'com_komento.comment.reported', $comment->created_by ); break; case 'unreported': Komento::addJomSocialPoint( 'com_komento.comment.unreport' ); Komento::addJomSocialPoint( 'com_komento.comment.unreported', $comment->created_by ); break; case 'stick': Komento::addJomSocialPoint( 'com_komento.comment.sticked' ); break; case 'unstick': Komento::addJomSocialPoint( 'com_komento.comment.unsticked' ); break; case 'remove': Komento::addJomSocialPoint( 'com_komento.comment.removed' ); Komento::addJomSocialPoint( 'com_komento.comment.removed.author', $author ); break; } } // Add aup if( $config->get( 'enable_aup' ) ) { switch( $action ) { case 'comment': Komento::addAUP( 'plgaup_komento_post_comment', $comment->created_by, 'komento_post_comment_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_POST_COMMENT', $permalink, $title ) ); Komento::addAUP( 'plgaup_komento_add_comment_author', $author, 'komento_post_comment_on_' . $comment->component . '_' . $comment->cid, JText::sprintf( 'COM_KOMENTO_AUP_POST_COMMENT', $permalink, $title ) ); break; case 'reply': Komento::addAUP( 'plgaup_komento_reply_comment', $comment->created_by, 'komento_reply_comment_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_REPLY_COMMENT', $permalink, $title ) ); break; case 'like': Komento::addAUP( 'plgaup_komento_like_comment', $profile->id, 'komento_like_comment_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_LIKE_COMMENT', $permalink, $title ) ); Komento::addAUP( 'plgaup_komento_comment_liked', $comment->created_by, 'komento_comment_liked_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_COMMENT_LIKED', $permalink, $title ) ); break; case 'unlike': Komento::addAUP( 'plgaup_komento_unlike_comment', $profile->id, 'komento_unlike_comment_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_UNLIKE_COMMENT', $permalink, $title ) ); Komento::addAUP( 'plgaup_komento_comment_unliked', $comment->created_by, 'komento_comment_unliked_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_COMMENT_UNLIKED', $permalink, $title ) ); break; case 'report': Komento::addAUP( 'plgaup_komento_report_comment', $profile->id, 'komento_report_comment_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_REPORT_COMMENT', $permalink, $title ) ); Komento::addAUP( 'plgaup_komento_comment_reported', $comment->created_by, 'komento_comment_reported_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_COMMENT_REPORTED', $permalink, $title ) ); break; case 'unreport': Komento::addAUP( 'plgaup_komento_unreport_comment', $profile->id, 'komento_unreport_comment_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_UNREPORT_COMMENT', $permalink, $title ) ); Komento::addAUP( 'plgaup_komento_comment_unreported', $comment->created_by, 'komento_comment_unreported_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_COMMENT_UNREPORTED', $permalink, $title ) ); break; case 'stick': Komento::addAUP( 'plgaup_komento_comment_sticked', $comment->created_by, 'komento_comment_sticked_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_COMMENT_STICKED', $permalink, $title ) ); break; case 'unstick': Komento::addAUP( 'plgaup_komento_comment_unsticked', $comment->created_by, 'komento_comment_unsticked_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_COMMENT_UNSTICKED', $permalink, $title ) ); break; case 'remove': Komento::addAUP( 'plgaup_komento_comment_removed', $comment->created_by, 'komento_comment_removed_' . $comment->id, JText::sprintf( 'COM_KOMENTO_AUP_COMMENT_REMOVED', $pagelink, $title ) ); Komento::addAUP( 'plgaup_komento_remove_comment_author', $author, 'komento_remove_comment_on_' . $comment->component . '_' . $comment->cid, JText::sprintf( 'COM_KOMENTO_AUP_REMOVED_COMMENT_AUTHOR', $pagelink, $title ) ); break; } } // Add Discuss points if( $config->get( 'enable_discuss_points' ) ) { switch( $action ) { case 'comment': Komento::addDiscussPoint( 'komento.add.comment', $comment->created_by, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_ADD_COMMENT', $title ) ); Komento::addDiscussPoint( 'komento.add.comment.article.author', $author, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_ADD_COMMENT_ARTICLE_AUTHOR', $title ) ); break; case 'reply': Komento::addDiscussPoint( 'komento.reply.comment', $comment->created_by, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_REPLY_COMMENT', $title ) ); break; case 'like': Komento::addDiscussPoint( 'komento.like.comment', $profile->id, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_LIKE_COMMENT', $title ) ); Komento::addDiscussPoint( 'komento.comment.liked', $comment->created_by, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_COMMENT_LIKED', $title ) ); break; case 'unlike': Komento::addDiscussPoint( 'komento.unlike.comment', $profile->id, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_UNLIKE_COMMENT', $title ) ); Komento::addDiscussPoint( 'komento.comment.unliked', $comment->created_by, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_COMMENT_UNLIKED', $title ) ); break; case 'report': Komento::addDiscussPoint( 'komento.report.comment', $profile->id, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_REPORT_COMMENT', $title ) ); Komento::addDiscussPoint( 'komento.comment.reported', $comment->created_by, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_COMMENT_REPORTED', $title ) ); break; case 'unreport': Komento::addDiscussPoint( 'komento.unreport.comment', $profile->id, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_UNREPORT_COMMENT', $title ) ); Komento::addDiscussPoint( 'komento.comment.unreported', $comment->created_by, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_COMMENT_UNREPORTED', $title ) ); break; case 'stick': Komento::addDiscussPoint( 'komento.comment.sticked', $comment->created_by, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_COMMENT_STICKED', $title ) ); break; case 'unstick': Komento::addDiscussPoint( 'komento.comment.unsticked', $comment->created_by, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_COMMENT_UNSTICKED', $title ) ); break; case 'remove': Komento::addDiscussPoint( 'komento.comment.removed', $comment->created_by, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_COMMENT_REMOVED', $title ) ); Komento::addDiscussPoint( 'komento.remove.comment.article.author', $author, JText::sprintf( 'COM_KOMENTO_DISCUSS_HISTORY_REMOVE_COMMENT_ARTICLE_AUTHOR', $title ) ); break; } } if( $config->get( 'enable_easysocial_points' ) ) { $es = Komento::getHelper( 'EasySocial' ); switch( $action ) { case 'comment': $es->assignPoints( 'komento.add.comment' , $comment->created_by, $comment); //Add points to user when a user post a comment. $es->assignPoints( 'komento.add.comment.article.author' , $author, $comment); //Add points for article author when a user posts a new comment on that article. break; case 'reply': $es->assignPoints( 'komento.reply.comment', $comment->created_by, $comment); //Add points to user when a user reply to a comment. break; case 'like': $es->assignPoints( 'komento.like.comment' , $profile->id ); //Add points to user when a user likes a comment. $es->assignPoints( 'komento.comment.liked' , $comment->created_by ); //Add points to comment author when a user likes the comment. *? break; case 'unlike': $es->assignPoints( 'komento.unlike.comment' , $profile->id ); //Add points to user when a user unlikes a comment. $es->assignPoints( 'komento.comment.unliked' , $comment->created_by ); //Deduct points to comment author when a user unlike the comment. break; case 'report': $es->assignPoints( 'komento.report.comment' , $profile->id ); // Add points to user when a user reports a comment. $es->assignPoints( 'komento.comment.reported' , $comment->created_by ); //Deduct points to comment author when a comment is reported. break; case 'unreport': $es->assignPoints( 'komento.unreport.comment' , $profile->id ); // Deduct points to user when a user unreports a comment. $es->assignPoints( 'komento.comment.unreported' , $comment->created_by ); //Add points to comment author when a comment is unreported. break; case 'stick': $es->assignPoints( 'komento.comment.sticked' , $comment->created_by ); //Add points to comment author when a comment is sticked. break; case 'unstick': $es->assignPoints( 'komento.comment.unsticked' , $comment->created_by ); //Deduct points to comment author when a comment is unsticked. break; case 'remove': $es->assignPoints( 'komento.comment.removed' , $comment->created_by ); //Deduct points to comment author when a comment is removed. $es->assignPoints( 'komento.remove.comment.article.author' , $author ); //Deduct points for article author when a comment is removed from that article. break; case 'upload': $es->assignPoints( 'komento.upload.attachments' , $comment->created_by ); //Deduct points to comment author when a comment is removed. break; } } if( $config->get( 'enable_easysocial_badges' ) ) { $es = Komento::getHelper( 'EasySocial' ); switch( $action ) { case 'comment': $es->assignBadge( 'komento.add.comment', JText::_( 'COM_KOMENTO_EASYSOCIAL_BADGES_ADD_COMMENTS_MESSAGE' ) ); break; case 'reply': $es->assignBadge( 'komento.reply.comment', JText::_( 'COM_KOMENTO_EASYSOCIAL_BADGES_REPLY_COMMENTS_MESSAGE' ) ); break; case 'like': $es->assignBadge( 'komento.like.comment', JText::_( 'COM_KOMENTO_EASYSOCIAL_BADGES_LIKE_COMMENTS_MESSAGE' ) ); break; case 'report': $es->assignBadge( 'komento.report.comment', JText::_( 'COM_KOMENTO_EASYSOCIAL_BADGES_REPORT_COMMENTS_MESSAGE' ) ); break; case 'upload': $es->assignBadge( 'komento.upload.attachments', JText::_( 'COM_KOMENTO_EASYSOCIAL_BADGES_UPLOAD_COMMENTS_MESSAGE' ) ); break; } } if( $config->get( 'notification_es_enable' ) && ( $config->get( 'notification_es_event_new_' . $action ) ) ) { $es = Komento::getHelper( 'EasySocial' ); $es->notify( $action, $comment ); } // If action is reply and sync comment is on, then we don't create a stream // If comment params->source is from com_easysocial, then we don't create a stream if( ( ( in_array( $action, array( 'comment', 'like' ) ) && $config->get( 'enable_easysocial_stream_' . $action ) ) || $action === 'reply' && !$config->get( 'enable_easysocial_sync_comment' ) ) && ( empty( $comment->params->source ) || $comment->params->source !== 'com_easysocial' ) ) { $es = Komento::getHelper( 'EasySocial' ); $es->createStream( $action, $comment ); } if( $action === 'reply' && $config->get( 'enable_easysocial_sync_comment' ) && empty( $comment->params->social->source ) ) { $es = Komento::getHelper( 'EasySocial' ); $es->injectComment( $comment ); } if( $action === 'remove' && $config->get( 'enable_easysocial_sync_comment' ) ) { $es = Komento::getHelper( 'EasySocial' ); $es->removeComment( $comment ); } if( $action === 'like' && $config->get( 'enable_easysocial_sync_like' ) ) { $es = Komento::getHelper( 'EasySocial' ); $es->injectLike( $comment ); } if( $action === 'unlike' && $config->get( 'enable_easysocial_sync_like' ) ) { $es = Komento::getHelper( 'EasySocial' ); $es->removeLike( $comment ); } }
/** * Process comments data **/ public static function process($row, $admin = 0) { if (isset($row->processed) && $row->processed) { return $row; } Komento::setCurrentComponent($row->component); $config = Komento::getConfig(); $konfig = Komento::getKonfig(); $user = JFactory::getUser()->id; $commentsModel = Komento::getModel('comments'); Komento::import('helper', 'date'); // Duplicate created date first before lapsed time messing up the original date $row->unformattedDate = $row->created; // get number of child for each comment $row->childs = $commentsModel->getTotalChilds($row->id); // set url to proper url if (!empty($row->url)) { // Add 'http://' if not present $row->url = 0 === strpos($row->url, 'http') ? $row->url : 'http://' . $row->url; } // 1. Load article and article details $application = Komento::loadApplication($row->component)->load($row->cid); if ($application === false) { $application = Komento::getErrorApplication($row->component, $row->cid); } // set component title $row->componenttitle = $application->getComponentName(); // set content title $row->contenttitle = $application->getContentTitle(); // get permalink $row->pagelink = $application->getContentPermalink(); $row->permalink = $row->pagelink . '#kmt-' . $row->id; // set parentlink if ($row->parent_id != 0) { $row->parentlink = $row->pagelink . '#kmt-' . $row->parent_id; } // to be reassign $row->shortlink = $row->permalink; // set extension object // use this to check if application is able to load article details // if row->extension is false, means error loading article details $row->extension = $application; if ($admin == 0) { // frontend $actionsModel = Komento::getModel('actions'); $socialHelper = Komento::getHelper('social'); // parse comments HTML $row->comment = self::parseComment($row->comment); // author's object $row->author = Komento::getProfile($row->created_by); // don't convert for guest if ($row->created_by != 0 && $row->created_by != $row->author->id) { if ($config->get('enable_orphanitem_convert')) { KomentoCommentHelper::convertOrphanitem($row->id); } } if ($row->created_by != 0) { switch ($config->get('name_type')) { case 'username': // force username $row->name = $row->author->getUsername(); break; case 'name': $row->name = $row->author->getName(); break; case 'default': default: // default name to profile if name is null if (empty($row->name)) { $row->name = $row->author->getName(); } break; } } else { if (empty($row->name)) { $row->name = JText::_('COM_KOMENTO_GUEST'); } else { if ($config->get('guest_label')) { $row->name = JText::_('COM_KOMENTO_GUEST') . ' - ' . $row->name; } } } // set datetime if ($config->get('enable_lapsed_time')) { $row->created = KomentoDateHelper::getLapsedTime($row->unformattedDate); } else { $dateformat = $config->get('date_format'); $row->created = KomentoDateHelper::toFormat(KomentoDateHelper::dateWithOffSet($row->created), $dateformat); // $row->created = Komento::getDate( $row->created )->toFormat( $dateformat ); } // get actions likes $row->likes = $actionsModel->countAction('likes', $row->id); // get user liked $row->liked = $actionsModel->liked($row->id, $user); // get user reported $row->reported = $actionsModel->reported($row->id, $user); } else { // backend // format comments $row->comment = nl2br(Komento::getHelper('comment')->parseBBCode($row->comment)); $row->created = KomentoDateHelper::dateWithOffSet($row->created); } $row->processed = true; return $row; }
public function getAuthor( $type, $options ) { $config = Komento::getConfig(); if( !$config->get( 'notification_to_author' ) ) { return array(); } $application = Komento::loadApplication( $options['component'] )->load( $options['cid'] ); if( $application === false ) { $application = Komento::getErrorApplication( $options['component'], $options['cid'] ); } $userid = $application->getAuthorId(); $obj = new stdClass(); $user = JFactory::getUser( $userid ); $obj->id = $user->id; $obj->fullname = JText::_( $user->name ); $obj->email = $user->email; return array( $user->email => $obj ); }
function display($tmpl = null) { $config = Komento::getConfig(); if (!$config->get('enable_rss')) { return; } require_once KOMENTO_HELPERS . DIRECTORY_SEPARATOR . 'helper.php'; $component = JRequest::getString('component', 'all'); $cid = JRequest::getInt('cid'); $cid = !$cid ? 'all' : $cid; $userid = JRequest::getInt('userid', null); if ($component != 'all' && $cid != 'all') { $application = Komento::loadApplication($component)->load($cid); if ($application === false) { $application = Komento::getErrorApplication($component, $cid); } $contentTitle = $component != 'all' && $cid != 'all' ? $application->getContentTitle() : ''; } $username = $userid !== null ? Komento::getProfile($userid)->getName() : ''; $document = JFactory::getDocument(); // to do: get permalink or view name from api/componentlist if ($component != 'all' && $cid != 'all') { $document->link = $application->getContentPermalink(); } else { $document->link = JURI::root(); } // to do : get article name from api/componentlist // document title based on request parameter // integrate settings for rss // allow all component rss // allow all article rss // allow all user rss // allow all guest rss $document->setTitle(JText::_('COM_KOMENTO_FEEDS_LATEST_TITLE')); $document->setDescription(JText::_('COM_KOMENTO_FEEDS_LATEST_TITLE_DESCRIPTION')); if ($component == 'all') { if ($cid != 'all') { // impossible all component and specific article echo 'Error! Component = all, cid != all.'; exit; } // all component all article if (is_null($userid)) { // all users/guests $document->setTitle(JText::_('COM_KOMENTO_FEEDS_ALL_COMMENTS_TITLE')); $document->setDescription(JText::_('COM_KOMENTO_FEEDS_ALL_COMMENTS_TITLE_DESCRIPTION')); } else { if ($userid === 0) { // for all guest $userid = 0 $document->setTitle(JText::_('COM_KOMENTO_FEEDS_GUEST_COMMENTS_TITLE')); $document->setDescription(JText::_('COM_KOMENTO_FEEDS_GUEST_COMMENTS_TITLE_DESCRIPTION')); } else { // specific user $document->setTitle(JText::_('COM_KOMENTO_FEEDS_COMMENTS_FROM_USER_TITLE') . ' : ' . $username); $document->setDescription(JText::_('COM_KOMENTO_FEEDS_COMMENTS_FROM_USER_TITLE_DESCRIPTION') . ' : ' . $username); } } } else { // specific component if ($cid == 'all') { // all article if (is_null($userid)) { // all users/guests $document->setTitle(JText::_('COM_KOMENTO_FEEDS_COMMENTS_FOR_COMPONENT_TITLE') . ' : ' . Komento::loadApplication($component)->getComponentName()); $document->setDescription(JText::_('COM_KOMENTO_FEEDS_COMMENTS_FOR_COMPONENT_TITLE_DESCRIPTION')); } else { if ($userid === 0) { // for all guest $userid = 0 $document->setTitle(JText::_('COM_KOMENTO_FEEDS_GUEST_COMMENTS_FOR_COMPONENT_TITLE') . ' : ' . Komento::loadApplication($component)->getComponentName()); $document->setDescription(JText::_('COM_KOMENTO_FEEDS_GUEST_COMMENTS_FOR_COMPONENT_TITLE_DESCRIPTION')); } else { // specific user $document->setTitle(JText::_('COM_KOMENTO_FEEDS_COMMENTS_FROM_USER_FOR_COMPONENT_TITLE') . ' : ' . $username . ' : ' . Komento::loadApplication($component)->getComponentName()); $document->setDescription(JText::_('COM_KOMENTO_FEEDS_COMMENTS_FROM_USER_FOR_COMPONENT_TITLE_DESCRIPTION') . ' : ' . $username); } } } else { // specific article if (is_null($userid)) { // all users/guests $document->setTitle(JText::_('COM_KOMENTO_FEEDS_COMMENTS_FOR_COMPONENT_OF_ARTICLE_TITLE') . ' : ' . Komento::loadApplication($component)->getComponentName() . ' : ' . $contentTitle); $document->setDescription(JText::_('COM_KOMENTO_FEEDS_COMMENTS_FOR_COMPONENT_OF_ARTICLE_TITLE_DESCRIPTION')); } else { if ($userid === 0) { // for all guest $userid = 0 $document->setTitle(JText::_('COM_KOMENTO_FEEDS_GUEST_COMMENTS_FOR_COMPONENT_OF_ARTICLE_TITLE') . ' : ' . Komento::loadApplication($component)->getComponentName() . ' : ' . $contentTitle); $document->setDescription(JText::_('COM_KOMENTO_FEEDS_GUEST_COMMENTS_FOR_COMPONENT_OF_ARTICLE_TITLE_DESCRIPTION')); } else { // specific user $document->setTitle(JText::_('COM_KOMENTO_FEEDS_COMMENTS_FROM_USER_FOR_COMPONENT_TITLE_OF_ARTICLE') . ' : ' . $username . ' : ' . Komento::loadApplication($component)->getComponentName() . ' : ' . $contentTitle); $document->setDescription(JText::_('COM_KOMENTO_FEEDS_COMMENTS_FROM_USER_FOR_COMPONENT_TITLE_OF_ARTICLE_DESCRIPTION') . ' : ' . $username); } } } } $options = array('sort' => 'latest', 'limit' => $config->get('rss_max_items'), 'userid' => $userid === null ? 'all' : $userid, 'threaded' => 0); $commentsModel = Komento::getModel('comments'); $comments = $commentsModel->getComments($component, $cid, $options); if (!empty($comments)) { foreach ($comments as $row) { $row = Komento::getHelper('comment')->process($row); // Todo : configurable $title = 'Comment - ' . $row->created; // Assign to feed item $item = new JFeedItem(); $item->title = $title; $item->link = $row->permalink; $item->description = $row->comment; $item->date = $row->unformattedDate; $item->author = $row->name; $item->authorEmail = $row->email; $document->addItem($item); } } }
function publish( $type = 1 ) { $id = JRequest::getInt( 'id' ); $affectChild = JRequest::getInt( 'affectChild', 1 ); $ajax = Komento::getAjax(); $commentObj = Komento::getComment( $id ); $commentModel = Komento::getModel( 'comments' ); $acl = Komento::getHelper( 'Acl' ); $application = Komento::loadApplication( $commentObj->component )->load( $commentObj->cid ); if( $application === false ) { $application = Komento::getErrorApplication( $commentObj->component, $commentObj->cid ); } if( ( $type == 1 && $acl->allow( 'publish', $commentObj ) ) || ( $type == 0 && $acl->allow( 'unpublish', $commentObj ) ) ) { if( $affectChild ) { $childs = $commentModel->getChilds( $id ); if( count( $childs ) > 0 ) { foreach( $childs as $child ) { $childObj = Komento::getComment( $child ); if( !$childObj->publish( $type ) ) { $errors = JText::_( 'COM_KOMENTO_ERROR' ); if( $childObj->getErrors() ) { $errors = implode( '\n', $childObj->getErrors() ); } $ajax->fail( $errors ); $ajax->send(); } } } } if( !$commentObj->publish( $type ) ) { $errors = JText::_( 'COM_KOMENTO_ERROR' ); if( $commentObj->getErrors() ) { $errors = implode( '\n', $commentObj->getErrors() ); } $ajax->fail( $errors ); $ajax->send(); } $ajax->success(); } else { $ajax->fail( JText::_( 'COM_KOMENTO_ACL_NO_PERMISSION' ) ); } $ajax->send(); }