public function store($log = true) { // @rule: Load language file from the front end. JFactory::getLanguage()->load('com_easyblog', JPATH_ROOT); $config = EasyBlogHelper::getConfig(); $under_approval = false; if (isset($this->under_approval)) { $under_approval = true; // now we need to reset this variable from the blog object. unset($this->under_approval); } // @trigger: onBeforeSave $this->triggerBeforeSave(); // @rule: Determine if this record is new or not. if (empty($this->isnew)) { $isNew = empty($this->id) ? true : false; } else { $isNew = true; } // @rule: Get the rulesets for this user. $acl = EasyBlogACLHelper::getRuleSet(); // @rule: Process badword filters for title here. $blockedWord = EasyBlogHelper::getHelper('String')->hasBlockedWords($this->title); if ($blockedWord !== false) { $this->setError(JText::sprintf('COM_EASYBLOG_BLOG_TITLE_CONTAIN_BLOCKED_WORDS', $blockedWord)); return false; } // @rule: Check for minimum words in the content if required. if ($config->get('main_post_min')) { $minimum = $config->get('main_post_length'); $total = JString::strlen(strip_tags($this->intro . $this->content)); if ($total < $minimum) { $this->setError(JText::sprintf('COM_EASYBLOG_CONTENT_LESS_THAN_MIN_LENGTH', $minimum)); return false; } } // @rule: Check for invalid title if (empty($this->title) || $this->title == JText::_('COM_EASYBLOG_DASHBOARD_WRITE_DEFAULT_TITLE')) { $this->setError(JText::_('COM_EASYBLOG_DASHBOARD_SAVE_EMPTY_TITLE_ERROR')); return false; } // @rule: For edited blogs, ensure that they have permissions to edit it. if (!$isNew && $this->created_by != JFactory::getUser()->id && !EasyBlogHelper::isSiteAdmin() && empty($acl->rules->moderate_entry)) { if (!class_exists('EasyBlogModelTeamBlogs')) { jimport('joomla.application.component.model'); JLoader::import('blog', EBLOG_ROOT . DIRECTORY_SEPARATOR . 'models'); } // @task: Only throw error when this blog post is not a team blog post and it's not owned by the current logged in user. JModel::addIncludePath(JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_easyblog' . DIRECTORY_SEPARATOR . 'models'); $model = JModel::getInstance('TeamBlogs', 'EasyBlogModel'); $contribution = $model->getBlogContributed($this->id); if (!$contribution || !$model->checkIsTeamAdmin(JFactory::getUser()->id, $contribution->team_id)) { $this->setError(JText::_('COM_EASYBLOG_NO_PERMISSION_TO_EDIT_BLOG')); return false; } } // @rule: Every blog post must be assigned to a category if (empty($this->category_id)) { $this->setError(JText::_('COM_EASYBLOG_DASHBOARD_SAVE_EMPTY_CATEGORY_ERROR')); return false; } // Filter / strip contents that are not allowed $filterTags = EasyBlogHelper::getHelper('Acl')->getFilterTags(); $filterAttributes = EasyBlogHelper::getHelper('Acl')->getFilterAttributes(); // @rule: Apply filtering on contents jimport('joomla.filter.filterinput'); $inputFilter = JFilterInput::getInstance($filterTags, $filterAttributes, 1, 1, 0); $inputFilter->tagBlacklist = $filterTags; $inputFilter->attrBlacklist = $filterAttributes; if (count($filterTags) > 0 && !empty($filterTags[0]) || count($filterAttributes) > 0 && !empty($filterAttributes[0])) { $this->intro = $inputFilter->clean($this->intro); $this->content = $inputFilter->clean($this->content); } // @rule: Process badword filters for content here. $blockedWord = EasyBlogHelper::getHelper('String')->hasBlockedWords($this->intro . $this->content); if ($blockedWord !== false) { $this->setError(JText::sprintf('COM_EASYBLOG_BLOG_POST_CONTAIN_BLOCKED_WORDS', $blockedWord)); return false; } // @rule: Test for the empty-ness if (empty($this->intro) && empty($this->content)) { $this->setError(JText::_('COM_EASYBLOG_DASHBOARD_SAVE_CONTENT_ERROR')); } // alway set this to false no matter what! TODO: remove this column. $this->ispending = '0'; $state = parent::store(); $source = JRequest::getVar('blog_contribute_source', 'easyblog'); // @trigger: onBeforeSave $this->triggerAfterSave(); // if this is blog edit, then we should see the column isnew to determine // whether the post is really new or not. if (!$isNew) { $isNew = $this->isnew; } // @task: If auto featured is enabled, we need to feature the blog post automatically since the blogger is featured. if ($config->get('main_autofeatured', 0) && EasyBlogHelper::isFeatured('blogger', $this->created_by) && !EasyBlogHelper::isFeatured('post', $this->id)) { EasyBlogHelper::makeFeatured('post', $this->id); } // @task: This is when the blog is either created or updated. if ($source == 'easyblog' && $state && $this->published == POST_ID_PUBLISHED && $log) { // @rule: Add new stream item in jomsocial EasyBlogHelper::addJomSocialActivityBlog($this, $isNew); // @rule: Log new stream item into EasyBlog $activity = new stdClass(); $activity->actor_id = $this->created_by; $activity->target_id = '0'; $activity->context_type = 'post'; $activity->context_id = $this->id; $activity->verb = $isNew ? 'add' : 'update'; $activity->uuid = $this->title; EasyBlogHelper::activityLog($activity); } if ($source == 'easyblog' && $state && $this->published == POST_ID_PUBLISHED && $isNew && $log) { // @rule: Send email notifications out to subscribers. $author = EasyBlogHelper::getTable('Profile'); $author->load($this->created_by); // @rule: Ping pingomatic if ($config->get('main_pingomatic')) { if (!EasyBlogHelper::getHelper('Pingomatic')->ping($this->title, EasyBlogHelper::getExternalLink('index.php?option=com_easyblog&view=entry&id=' . $this->id, true))) { EasyBlogHelper::setMessageQueue(JText::_('COM_EASYBLOG_DASHBOARD_SAVE_PINGOMATIC_ERROR'), 'error'); } } // Assign EasySocial points $easysocial = EasyBlogHelper::getHelper('EasySocial'); $easysocial->assignPoints('blog.create', $this->created_by); // @rule: Add userpoints for jomsocial if ($config->get('main_jomsocial_userpoint')) { $path = JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_community' . DIRECTORY_SEPARATOR . 'libraries' . DIRECTORY_SEPARATOR . 'userpoints.php'; if (JFile::exists($path)) { require_once $path; CUserPoints::assignPoint('com_easyblog.blog.add', $this->created_by); } } $link = $this->getExternalBlogLink('index.php?option=com_easyblog&view=entry&id=' . $this->id); // @rule: Add notifications for jomsocial 2.6 if ($config->get('integrations_jomsocial_notification_blog')) { // Get list of users who subscribed to this blog. $target = $this->getRegisteredSubscribers('new', array($this->created_by)); EasyBlogHelper::getHelper('JomSocial')->addNotification(JText::sprintf('COM_EASYBLOG_JOMSOCIAL_NOTIFICATIONS_NEW_BLOG', $author->getName(), $link, $this->title), 'easyblog_new_blog', $target, $this->created_by, $link); } // @rule: Mighty Touch karma points EasyBlogHelper::getHelper('MightyTouch')->setKarma($this->created_by, 'new_blog'); // @rule: Integrations with EasyDiscuss EasyBlogHelper::getHelper('EasyDiscuss')->log('easyblog.new.blog', $this->created_by, JText::sprintf('COM_EASYBLOG_EASYDISCUSS_HISTORY_NEW_BLOG', $this->title)); EasyBlogHelper::getHelper('EasyDiscuss')->addPoint('easyblog.new.blog', $this->created_by); EasyBlogHelper::getHelper('EasyDiscuss')->addBadge('easyblog.new.blog', $this->created_by); // Assign badge for users that report blog post. // Only give points if the viewer is viewing another person's blog post. EasyBlogHelper::getHelper('EasySocial')->assignBadge('blog.create', JText::_('COM_EASYBLOG_EASYSOCIAL_BADGE_CREATE_BLOG_POST')); if ($config->get('integrations_easydiscuss_notification_blog')) { // Get list of users who subscribed to this blog. $target = $this->getRegisteredSubscribers('new', array($this->created_by)); EasyBlogHelper::getHelper('EasyDiscuss')->addNotification($this, JText::sprintf('COM_EASYBLOG_EASYDISCUSS_NOTIFICATIONS_NEW_BLOG', $author->getName(), $this->title), EBLOG_NOTIFICATIONS_TYPE_BLOG, $target, $this->created_by, $link); } $my = JFactory::getUser(); // @rule: Add points for AlphaUserPoints if ($my->id == $this->created_by && EasyBlogHelper::isAUPEnabled()) { // get blog post URL $url = EasyBlogRouter::_('index.php?option=com_easyblog&view=entry&id=' . $this->id); $aupid = AlphaUserPointsHelper::getAnyUserReferreID($this->created_by); AlphaUserPointsHelper::newpoints('plgaup_easyblog_add_blog', $aupid, 'easyblog_add_blog_' . $this->id, JText::sprintf('COM_EASYBLOG_AUP_NEW_BLOG_CREATED', $url, $this->title)); } // @rule: Process trackbacks $this->processTrackbacks(); // Update the isnew column so that if user edits this entry again, it doesn't send any notifications the second time. $this->isnew = 0; $this->store(false); } return $state; }
public function store() { $isNew = empty($this->id) ? true : false; $state = parent::store(); if ($state && $isNew) { $blog = EasyBlogHelper::getTable('Blog'); $blog->load($this->post_id); $profile = EasyBlogHelper::getTable('Profile'); $profile->load($blog->created_by); $obj = new stdClass(); $obj->blogtitle = $blog->title; $obj->blogauthor = $profile->getName(); $obj->subscribername = $this->fullname; $obj->subscriberemail = $this->email; $activity = new stdClass(); $activity->actor_id = empty($this->user_id) ? '0' : $this->user_id; $activity->target_id = $blog->created_by; $activity->context_type = 'post'; $activity->context_id = $this->post_id; $activity->verb = 'subscribe'; $activity->source_id = $this->id; $activity->uuid = serialize($obj); EasyBlogHelper::activityLog($activity); } return $state; }
public function store($updateNulls = false) { $isNew = empty($this->id) ? true : false; $state = parent::store($updateNulls); $my = JFactory::getUser(); if ($my->id == $this->id) { JFactory::getLanguage()->load('com_easyblog', JPATH_ROOT); // @rule: Integrations with EasyDiscuss EasyBlogHelper::getHelper('EasyDiscuss')->log('easyblog.update.profile', $this->id, JText::_('COM_EASYBLOG_EASYDISCUSS_HISTORY_UPDATE_PROFILE')); EasyBlogHelper::getHelper('EasyDiscuss')->addPoint('easyblog.update.profile', $this->id); EasyBlogHelper::getHelper('EasyDiscuss')->addBadge('easyblog.update.profile', $this->id); } if (!$isNew) { $activity = new stdClass(); $activity->actor_id = $my->id; $activity->target_id = $my->id == $this->id ? '0' : $this->id; $activity->context_type = 'profile'; $activity->context_id = $this->id; $activity->verb = 'update'; EasyBlogHelper::activityLog($activity); } return $state; }
public function store($updateNulls = false) { if (!empty($this->created)) { $offset = EasyBlogDateHelper::getOffSet(); $newDate = EasyBlogHelper::getDate($this->created, $offset); $this->created = $newDate->toMySQL(); } else { $newDate = EasyBlogHelper::getDate(); $this->created = $newDate->toMySQL(); } $my = JFactory::getUser(); // Add point integrations for new categories if ($this->id == 0 && $my->id > 0) { JFactory::getLanguage()->load('com_easyblog', JPATH_ROOT); $config = EasyBlogHelper::getConfig(); // @rule: Integrations with EasyDiscuss EasyBlogHelper::getHelper('EasyDiscuss')->log('easyblog.new.category', $my->id, JText::sprintf('COM_EASYBLOG_EASYDISCUSS_HISTORY_NEW_CATEGORY', $this->title)); EasyBlogHelper::getHelper('EasyDiscuss')->addPoint('easyblog.new.category', $my->id); EasyBlogHelper::getHelper('EasyDiscuss')->addBadge('easyblog.new.category', $my->id); // @since 1.2 // AlphaUserPoints if (EasyBlogHelper::isAUPEnabled()) { AlphaUserPointsHelper::newpoints('plgaup_easyblog_add_category', '', 'easyblog_add_category_' . $this->id, JText::sprintf('COM_EASYBLOG_AUP_NEW_CATEGORY_CREATED', $this->title)); } if ($config->get('main_jomsocial_userpoint')) { $path = JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_community' . DIRECTORY_SEPARATOR . 'libraries' . DIRECTORY_SEPARATOR . 'userpoints.php'; if (JFile::exists($path)) { require_once $path; CUserPoints::assignPoint('com_easyblog.category.add', $my->id); } } // Assign EasySocial points $easysocial = EasyBlogHelper::getHelper('EasySocial'); $easysocial->assignPoints('category.create', $my->id); } // Figure out the proper nested set model if ($this->id == 0 && $this->lft == 0) { // No parent id, we use the current lft,rgt if ($this->parent_id) { $left = $this->getLeft($this->parent_id); $this->lft = $left; $this->rgt = $this->lft + 1; // Update parent's right $this->updateRight($left); $this->updateLeft($left); } else { $this->lft = $this->getLeft() + 1; $this->rgt = $this->lft + 1; } } $isNew = empty($this->id) ? true : false; $return = parent::store(); //activity logging. $activity = new stdClass(); $activity->actor_id = $my->id; $activity->target_id = '0'; $activity->context_type = 'category'; $activity->context_id = $this->id; $activity->verb = $isNew ? 'add' : 'update'; $activity->uuid = $this->title; EasyBlogHelper::activityLog($activity); return $return; }
public function store($isModerated = false) { $isNew = empty($this->id) ? true : false; // @rule: Update the ordering as long as this is a new comment. Regardless of the publishing status if ($isNew) { $this->updateOrdering(); } // @rule: If this was moderated and it is published, we should notify the other extensions. if ($isModerated && $this->published) { $isNew = true; } // @rule: Store after the ordering is updated $state = parent::store(); // @rule: Run point integrations here. if ($isNew && $this->published == 1 && $state) { $my = JFactory::getUser(); $blog = EasyBlogHelper::getTable('Blog'); $blog->load($this->post_id); JFactory::getLanguage()->load('com_easyblog', JPATH_ROOT); $config = EasyBlogHelper::getConfig(); $author = EasyBlogHelper::getTable('Profile'); $author->load($this->created_by); // @task: Blog external link. $link = $blog->getExternalBlogLink('index.php?option=com_easyblog&view=entry&id=' . $blog->id) . '#comment-' . $this->id; // @rule: Send notifications to the author of the blog for EasyDiscuss if ($blog->created_by != $this->created_by && $this->created_by != 0) { if ($config->get('integrations_easydiscuss_notification_comment')) { EasyBlogHelper::getHelper('EasyDiscuss')->addNotification($blog, JText::sprintf('COM_EASYBLOG_EASYDISCUSS_NOTIFICATIONS_NEW_COMMENT_IN_YOUR_BLOG', $blog->title), EBLOG_NOTIFICATIONS_TYPE_COMMENT, array($blog->created_by), $this->created_by, $link); } // @rule: Add notifications for jomsocial 2.6 if ($config->get('integrations_jomsocial_notification_comment')) { // Get list of users who subscribed to this blog. EasyBlogHelper::getHelper('JomSocial')->addNotification(JText::sprintf('COM_EASYBLOG_JOMSOCIAL_NOTIFICATIONS_NEW_COMMENT_IN_YOUR_BLOG', $link, $blog->title), 'easyblog_comment_blog', array($blog->created_by), $author, $link); } $easysocial = EasyBlogHelper::getHelper('EasySocial'); if ($config->get('integrations_easysocial_notifications_newcomment') && $easysocial->exists()) { $easysocial->notifySubscribers($blog, 'new.comment', $this); } } // @rule: Notify subscribers through notification system. if ($config->get('integrations_jomsocial_notification_comment_follower') && $this->created_by != 0) { $target = $this->getSubscribers($blog, array($this->created_by, $blog->created_by)); if (!empty($target)) { // Get list of users who subscribed to this blog. EasyBlogHelper::getHelper('JomSocial')->addNotification(JText::sprintf('COM_EASYBLOG_JOMSOCIAL_NOTIFICATIONS_NEW_COMMENT_POSTED', $link, $blog->title), 'easyblog_comment_blog_sub', $target, $author, $link); } } // @rule: Notify subscribers through notification system. if ($config->get('integrations_easydiscuss_notification_comment_follower') && $this->created_by != 0) { $target = $this->getSubscribers($blog, array($this->created_by, $blog->created_by)); if (!empty($target)) { EasyBlogHelper::getHelper('EasyDiscuss')->addNotification($blog, JText::sprintf('COM_EASYBLOG_EASYDISCUSS_NOTIFICATIONS_NEW_COMMENT_POSTED', $blog->title), EBLOG_NOTIFICATIONS_TYPE_COMMENT, $target, $this->created_by, $link); } } if ($this->created_by != 0) { // @rule: Integrations with EasyDiscuss EasyBlogHelper::getHelper('EasyDiscuss')->log('easyblog.new.comment', $this->created_by, JText::sprintf('COM_EASYBLOG_EASYDISCUSS_HISTORY_NEW_COMMENT', $blog->title)); EasyBlogHelper::getHelper('EasyDiscuss')->addPoint('easyblog.new.comment', $this->created_by); EasyBlogHelper::getHelper('EasyDiscuss')->addBadge('easyblog.new.comment', $this->created_by); EasyBlogHelper::getHelper('EasySocial')->assignPoints('comment.create', $this->created_by); EasyBlogHelper::getHelper('EasySocial')->assignPoints('comment.create.author', $blog->created_by); EasyBlogHelper::getHelper('EasySocial')->assignBadge('comment.create', JText::_('COM_EASYBLOG_EASYSOCIAL_BADGE_CREATE_COMMENT')); } // AlphaUserPoints // since 1.2 if (EasyBlogHelper::isAUPEnabled() && $this->created_by != 0) { $url = EasyBlogRouter::_('index.php?option=com_easyblog&view=entry&id=' . $this->post_id); AlphaUserPointsHelper::newpoints('plgaup_easyblog_add_comment', AlphaUserPointsHelper::getAnyUserReferreID($this->created_by), '', JText::sprintf('COM_EASYBLOG_AUP_NEW_COMMENT_SUBMITTED', $url, $blog->title)); // @rule: Add comment for blog author if ($blog->created_by != $this->created_by) { AlphaUserPointsHelper::newpoints('plgaup_easyblog_add_comment_blogger', AlphaUserPointsHelper::getAnyUserReferreID($blog->created_by), '', JText::sprintf('COM_EASYBLOG_AUP_NEW_COMMENT_SUBMITTED', $url, $blog->title)); } } // Determine whether or not to push this as a normal activity $external = $blog->getBlogContribution(); // @rule: Add activity integrations for group integrations. if ($external) { if ($external instanceof TableExternal) { EasyBlogHelper::getHelper('Event')->addCommentStream($blog, $this, $external); } else { // @task: Legacy support prior to 3.5 EasyBlogHelper::getHelper('Groups')->addCommentStream($blog, $this, $external); } } else { EasyBlogHelper::addJomSocialActivityComment($this, $blog->title); // Add EasySocial stream $easysocial = EasyBlogHelper::getHelper('EasySocial'); $easysocial->createCommentStream($this, $blog); // Assign EasySocial points $easysocial->assignPoints('comments.create'); // @rule: Give points to the comment author EasyBlogHelper::addJomsocialPoint('com_easyblog.comments.add'); // @rule: Give points to the blog author if ($my->id != $blog->created_by && $this->created_by != 0) { // Assign EasySocial points $easysocial->assignPoints('comments.create.author', $blog->created_by); EasyBlogHelper::addJomsocialPoint('com_easyblog.comments.addblogger', $blog->created_by); } } } if ($isNew && $state) { $blog = EasyBlogHelper::getTable('Blog'); $blog->load($this->post_id); $blogauthor = EasyBlogHelper::getTable('Profile'); $blogauthor->load($blog->created_by); $obj = new stdClass(); $obj->comment = $this->comment; $obj->commentauthor = $this->name; $obj->blogtitle = $blog->title; $obj->blogautor = $blogauthor->getName(); $activity = new stdClass(); $activity->actor_id = empty($this->created_by) ? '0' : $this->created_by; $activity->target_id = $blog->created_by; $activity->context_type = 'comment'; $activity->context_id = $this->id; $activity->verb = 'add'; $activity->source_id = $this->post_id; $activity->uuid = serialize($obj); EasyBlogHelper::activityLog($activity); } return $state; }
public function store($updateNulls = false) { JFactory::getLanguage()->load('com_easyblog', JPATH_ROOT); // @rule: Check for empty title if (empty($this->title)) { $this->setError(JText::_('COM_EASYBLOG_INVALID_TAG')); return false; } // @rule: Check if such tag exists. if ($this->exists($this->title, !$this->id)) { $this->setError(JText::_('COM_EASYBLOG_TAG_ALREADY_EXISTS')); return false; } // @task: If alias is null, we need to generate them here. jimport('joomla.filesystem.filter.filteroutput'); $i = 1; while ($this->aliasExists() || empty($this->alias)) { $this->alias = empty($this->alias) ? $this->title : $this->alias . '-' . $i; $i++; } $this->alias = EasyBlogRouter::generatePermalink($this->alias); if (!empty($this->created)) { $offset = EasyBlogDateHelper::getOffSet(); $newDate = EasyBlogHelper::getDate($this->created, $offset); $this->created = $newDate->toMySQL(); } else { $newDate = EasyBlogHelper::getDate(); $this->created = $newDate->toMySQL(); } $isNew = !$this->id; $state = parent::store(); $my = JFactory::getUser(); if ($isNew && $my->id != 0) { JFactory::getLanguage()->load('com_easyblog', JPATH_ROOT); $config = EasyBlogHelper::getConfig(); // @rule: Integrations with EasyDiscuss EasyBlogHelper::getHelper('EasyDiscuss')->log('easyblog.new.tag', $my->id, JText::sprintf('COM_EASYBLOG_EASYDISCUSS_HISTORY_NEW_TAG', $this->title)); EasyBlogHelper::getHelper('EasyDiscuss')->addPoint('easyblog.new.tag', $my->id); EasyBlogHelper::getHelper('EasyDiscuss')->addBadge('easyblog.new.tag', $my->id); // Assign EasySocial points $easysocial = EasyBlogHelper::getHelper('EasySocial'); $easysocial->assignPoints('tag.create', $my->id); if ($config->get('main_jomsocial_userpoint')) { $jsUserPoint = JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_community' . DIRECTORY_SEPARATOR . 'libraries' . DIRECTORY_SEPARATOR . 'userpoints.php'; if (JFile::exists($jsUserPoint)) { require_once $jsUserPoint; CUserPoints::assignPoint('com_easyblog.tag.add', $my->id); } } // AlphaUserPoints // since 1.2 if (EasyBlogHelper::isAUPEnabled()) { AlphaUserPointsHelper::newpoints('plgaup_easyblog_add_tag', '', 'easyblog_add_tag_' . $this->id, JText::sprintf('COM_EASYBLOG_AUP_TAG_ADDED', $this->title)); } } if ($state) { //activity logging. $activity = new stdClass(); $activity->actor_id = $my->id; $activity->target_id = '0'; $activity->context_type = 'tag'; $activity->context_id = $this->id; $activity->verb = $isNew ? 'add' : 'update'; $activity->uuid = $this->title; EasyBlogHelper::activityLog($activity); } return $state; }