예제 #1
0
파일: post.php 프로젝트: redigy/Kunena-1.6
 protected function editpostnow()
 {
     if (!$this->load()) {
         return false;
     }
     if ($this->isUserBanned()) {
         return false;
     }
     if ($this->isIPBanned()) {
         return false;
     }
     $this->fields['name'] = JRequest::getString('authorname', $this->msg_cat->name);
     $this->fields['email'] = JRequest::getString('email', null);
     $this->fields['subject'] = JRequest::getVar('subject', null, 'POST', 'string', JREQUEST_ALLOWRAW);
     $this->fields['message'] = JRequest::getVar('message', null, 'POST', 'string', JREQUEST_ALLOWRAW);
     $this->fields['topic_emoticon'] = JRequest::getInt('topic_emoticon', null);
     $this->fields['modified_reason'] = JRequest::getString('modified_reason', null);
     $this->options['attachments'] = 1;
     $this->options['anonymous'] = JRequest::getInt('anonymous', 0);
     // This stores above data into session
     if ($this->tokenProtection()) {
         return false;
     }
     require_once KUNENA_PATH_LIB . '/kunena.posting.class.php';
     $message = new CKunenaPosting();
     $success = $message->edit($this->id, $this->fields, $this->options);
     if ($success) {
         $success = $message->save();
     }
     // Handle errors
     if (!$success) {
         $errors = $message->getErrors();
         foreach ($errors as $field => $error) {
             $this->_app->enqueueMessage($field . ': ' . $error, 'error');
         }
         $this->_app->setUserState('com_kunena.postfields', array('catid' => $this->catid, 'fields' => $this->fields, 'options' => $this->options));
         $this->redirectBack();
     }
     $mes = $message->parent;
     if ($this->config->pollenabled) {
         $polltitle = JRequest::getString('poll_title', 0);
         $optionsnumbers = JRequest::getInt('number_total_options', '');
         $polltimetolive = JRequest::getString('poll_time_to_live', 0);
         $poll_optionsID = JRequest::getVar('polloptionsID', array(), 'post', 'array');
         $optvalue = array();
         foreach ($poll_optionsID as $opt) {
             if (!empty($opt)) {
                 $optvalue[] = $opt;
             }
         }
         //need to check if the poll exist, if it's not the case the poll is insered like new poll
         if (!$mes->poll_id) {
             if (!empty($optvalue)) {
                 $this->poll->save_new_poll($polltimetolive, $polltitle, $this->id, $optvalue);
             }
         } else {
             if (empty($polltitle) && empty($poll_optionsID)) {
                 //The poll is deleted because the polltitle and the options are empty
                 $this->poll->delete_poll($this->id);
             } else {
                 $this->poll->update_poll_edit($polltimetolive, $this->id, $polltitle, $optionsnumbers, $poll_optionsID);
             }
         }
     }
     $this->_app->enqueueMessage(JText::_('COM_KUNENA_POST_SUCCESS_EDIT'));
     if ($this->msg_cat->review && !CKunenaTools::isModerator($this->my->id, $this->catid)) {
         $this->_app->enqueueMessage(JText::_('COM_KUNENA_GEN_MODERATED'));
     }
     while (@ob_end_clean()) {
     }
     $this->_app->redirect(CKunenaLink::GetMessageURL($this->id, $this->catid, 0, false));
 }
예제 #2
0
	protected function replyTopic($row, $catid, $thread, $subject) {
		if (JRequest::checkToken () == false) {
			$this->_app->enqueueMessage ( JText::_ ( 'COM_KUNENA_ERROR_TOKEN' ), 'error' );
			return false;
		}
		$this->isBanned();
		$this->verifyCaptcha();
		$this->checkFlood();

		require_once (KPATH_SITE . '/lib/kunena.posting.class.php');

		if (intval ( $thread ) == 0) {
			$thread = $this->createTopic ( $row, $catid, $subject );
		}
		$message = new CKunenaPosting ( );
		$myprofile = KunenaFactory::getUser();
		$fields ['name'] = JRequest::getString ( 'name', $myprofile->getName (), 'POST' );
		$fields ['email'] = JRequest::getString ( 'email', null, 'POST' );
		$fields ['subject'] = $subject;
		$fields ['message'] = JRequest::getString ( 'message', null, 'POST' );

		$success = $message->reply ( $thread, $fields );
		if ($success) {
			$newMessageId = $message->save ();
		}

		// Handle errors
		if (! $success || ! $newMessageId) {
			$errors = $message->getErrors ();
			foreach ( $errors as $field => $error ) {
				$this->_app->enqueueMessage ( $field . ': ' . $error, 'error' );
			}
			return false;
		}

		$config = KunenaFactory::getConfig();
		$holdPost = $message->get ( 'hold' );
		require_once (KPATH_SITE . '/lib/kunena.link.class.php');
		$message->emailToSubscribers(false, $config->allowsubscriptions && ! $holdPost, $config->mailmod || $holdPost, $config->mailadmin || $holdPost);

		if ($holdPost) {
			$result = JText::_ ( 'PLG_KUNENADISCUSS_PENDING_MODERATOR_APPROVAL' );
		} else {
			$result = JText::_ ( 'PLG_KUNENADISCUSS_MESSAGE_POSTED' );
		}

		// Redirect
		$uri = JFactory::getURI ();
		$app = JFactory::getApplication ( 'site' );
		$app->redirect ( $uri->toString (), $result );
	}
예제 #3
0
 /**
  * process the plugin, called when form is submitted
  *
  * @param object $params
  * @param object form
  */
 function onBeforeStore(&$params, &$formModel)
 {
     jimport('joomla.filesystem.file');
     $files[] = COM_FABRIK_BASE . DS . 'components' . DS . 'com_kunena' . DS . 'class.kunena.php';
     $define = COM_FABRIK_BASE . DS . 'components' . DS . 'com_kunena' . DS . 'lib' . DS . 'kunena.defines.php';
     $files[] = COM_FABRIK_BASE . DS . 'components' . DS . 'com_kunena' . DS . 'lib' . DS . 'kunena.defines.php';
     $files[] = COM_FABRIK_BASE . DS . 'components' . DS . 'com_kunena' . DS . 'lib' . DS . 'kunena.link.class.php';
     $files[] = COM_FABRIK_BASE . DS . 'components' . DS . 'com_kunena' . DS . 'lib' . DS . 'kunena.link.class.php';
     if (!JFile::exists($define)) {
         JError::raiseError(500, 'could not find the Kunena component');
         return false;
     }
     require_once $define;
     foreach ($files as $file) {
         if (!JFile::exists($file)) {
             JError::raiseError(500, 'could not find the Kunena file: ' . $file);
             return false;
         }
         require_once $file;
     }
     $postfile = KUNENA_PATH_FUNCS . DS . 'post.php';
     $w = new FabrikWorker();
     if (!JFile::exists($postfile)) {
         JError::raiseError(500, "cant find post file");
         return false;
     }
     //new
     include_once COM_FABRIK_BASE . DS . 'components' . DS . 'com_kunena' . DS . 'lib' . DS . 'kunena.timeformat.class.php';
     if (file_exists(KUNENA_ABSTMPLTPATH . '/initialize.php')) {
         require_once KUNENA_ABSTMPLTPATH . '/initialize.php';
     } else {
         require_once KPATH_SITE . '/template/default/initialize.php';
     }
     // Kunena Current Template Icons Pack
     if (file_exists(KUNENA_ABSTMPLTPATH . '/icons.php')) {
         include KUNENA_ABSTMPLTPATH . '/icons.php';
     } else {
         include KUNENA_PATH_TEMPLATE_DEFAULT . DS . 'icons.php';
     }
     $kunena_session = KunenaFactory::getSession(true);
     //end new
     $catid = $params->get('kunena_category', 0);
     $msg = $w->parseMessageForPlaceHolder($params->get('kunena_content'), $formModel->_fullFormData);
     $subject = $params->get('kunena_title');
     $subject = $w->parseMessageForPlaceHolder($subject, $formModel->_fullFormData);
     include $postfile;
     $page = new CKunenaPost();
     require_once KUNENA_PATH_LIB . DS . 'kunena.posting.class.php';
     $message = new CKunenaPosting();
     $user =& JFactory::getUser();
     $fields['name'] = $user->guest ? 'Annonymous' : $user->get('name');
     $fields['email'] = $user->guest ? '*****@*****.**' : $user->get('email');
     $fields['subject'] = $subject;
     $fields['message'] = $msg;
     $fields['topic_emoticon'] = JRequest::getInt('topic_emoticon', null);
     $options['attachments'] = 1;
     $options['anonymous'] = 0;
     $lang =& JFactory::getLanguage();
     $lang->load('com_kunena');
     $success = $message->post($catid, $fields, $options);
     // Handle errors
     if (!$success) {
         $errors = $message->getErrors();
         foreach ($errors as $field => $error) {
             JError::raiseNotice(500, "{$field}: {$error}");
             return false;
         }
     } else {
         $success = $message->save();
         // Handle errors
         if (!$success) {
             $errors = $message->getErrors();
             foreach ($errors as $field => $error) {
                 JError::raiseNotice(500, "{$field}: {$error}");
                 return false;
             }
         }
     }
 }