/**
  * Creates a new message and returns the parsed template.
  * 
  * @param	\wcf\data\IMessageQuickReplyAction	$object
  * @param	array<array>				$parameters
  * @param	string					$containerActionClassName
  * @param	string					$sortOrder
  * @param	string					$templateName
  * @param	string					$application
  * @return	array
  */
 public function createMessage(IMessageQuickReplyAction $object, array &$parameters, $containerActionClassName, $sortOrder, $templateName, $application = 'wcf')
 {
     $additionalFields = array();
     EventHandler::getInstance()->fireAction($this, 'createMessage', $additionalFields);
     $tableIndexName = call_user_func(array($this->container, 'getDatabaseTableIndexName'));
     $parameters['data'][$tableIndexName] = $parameters['objectID'];
     $parameters['data']['time'] = TIME_NOW;
     $parameters['data']['userID'] = WCF::getUser()->userID ?: null;
     $parameters['data']['username'] = WCF::getUser()->username;
     // pre-parse message text
     if ($parameters['data']['preParse']) {
         $parameters['data']['message'] = PreParser::getInstance()->parse($parameters['data']['message'], $this->allowedBBodes);
     }
     unset($parameters['data']['preParse']);
     $parameters['data'] = array_merge($additionalFields, $parameters['data']);
     // attachment support
     if (MODULE_ATTACHMENT && !empty($parameters['tmpHash']) && $object instanceof IAttachmentMessageQuickReplyAction) {
         $parameters['attachmentHandler'] = $object->getAttachmentHandler($this->container);
     }
     $message = $object->create();
     $eventParameters = array('message' => $message);
     EventHandler::getInstance()->fireAction($this, 'createdMessage', $eventParameters);
     if ($message instanceof IMessage && !$message->isVisible()) {
         return array('isVisible' => false);
     }
     // resolve the page no
     list($pageNo, $count) = $object->getPageNo($this->container);
     // we're still on current page
     if ($pageNo == $parameters['pageNo']) {
         // check for additional messages
         $messageList = $object->getMessageList($this->container, $parameters['lastPostTime']);
         // calculate start index
         $startIndex = $count - (count($messageList) - 1);
         WCF::getTPL()->assign(array('attachmentList' => $messageList->getAttachmentList(), 'container' => $this->container, 'objects' => $messageList, 'startIndex' => $startIndex, 'sortOrder' => $sortOrder));
         // assign 'to top' link
         if (isset($parameters['anchor'])) {
             WCF::getTPL()->assign('anchor', $parameters['anchor']);
         }
         // update visit time (messages shouldn't occur as new upon next visit)
         if (ClassUtil::isInstanceOf($containerActionClassName, 'wcf\\data\\IVisitableObjectAction')) {
             $containerAction = new $containerActionClassName(array($this->container instanceof DatabaseObjectDecorator ? $this->container->getDecoratedObject() : $this->container), 'markAsRead');
             $containerAction->executeAction();
         }
         return array('lastPostTime' => $message->time, 'template' => WCF::getTPL()->fetch($templateName, $application));
     } else {
         // redirect
         return array('url' => $object->getRedirectUrl($this->container, $message));
     }
 }
Beispiel #2
0
	/**
	 * Returns the child categories of the given category.
	 * 
	 * @param	wcf\data\DatabaseObject		$category
	 * @return	array<wcf\data\category\Category>
	 */
	public function getChildCategories(DatabaseObject $category) {
		if (!($category instanceof Category) && (!($category instanceof DatabaseObjectDecorator) || !($category->getDecoratedObject() instanceof Category))) {
			throw new SystemException("Invalid object given (class: ".get_class($category).")");
		}
		
		$categories = array();
		foreach ($this->categories as $__category) {
			if ($__category->parentCategoryID == $category->categoryID && ($category->categoryID || $category->objectTypeID == $__category->objectTypeID)) {
				$categories[$__category->categoryID] = $__category;
			}
		}
		
		return $categories;
	}