/**
  * @see	\wcf\system\cache\builder\AbstractCacheBuilder::rebuild()
  */
 public function rebuild(array $parameters)
 {
     $data = array('codes' => array(), 'countryCodes' => array(), 'languages' => array(), 'default' => 0, 'categories' => array(), 'categoryIDs' => array(), 'multilingualismEnabled' => false);
     // get languages
     $languageList = new LanguageList();
     $languageList->readObjects();
     $data['languages'] = $languageList->getObjects();
     foreach ($languageList->getObjects() as $language) {
         // default language
         if ($language->isDefault) {
             $data['default'] = $language->languageID;
         }
         // multilingualism
         if ($language->hasContent) {
             $data['multilingualismEnabled'] = true;
         }
         // language code to language id
         $data['codes'][$language->languageCode] = $language->languageID;
         // country code to language id
         $data['countryCode'][$language->languageID] = $language->countryCode;
     }
     DatabaseObject::sort($data['languages'], 'languageName');
     // get language categories
     $languageCategoryList = new LanguageCategoryList();
     $languageCategoryList->readObjects();
     foreach ($languageCategoryList->getObjects() as $languageCategory) {
         $data['categories'][$languageCategory->languageCategory] = $languageCategory;
         $data['categoryIDs'][$languageCategory->languageCategoryID] = $languageCategory->languageCategory;
     }
     return $data;
 }
 /**
  * @see	\wcf\data\DatabaseObject::handleData()
  */
 protected function handleData($data)
 {
     parent::handleData($data);
     $this->data['additionalData'] = @unserialize($this->data['additionalData']);
     if (!is_array($this->data['additionalData'])) {
         $this->data['additionalData'] = array();
     }
 }
Beispiel #3
0
 /**
  * @see	\wcf\data\DatabaseObject::handleData()
  */
 protected function handleData($data)
 {
     parent::handleData($data);
     // handle condition data
     $this->data['conditionData'] = @unserialize($data['conditionData']);
     if (!is_array($this->data['conditionData'])) {
         $this->data['conditionData'] = array();
     }
 }
 /**
  * @see	\wcf\data\DatabaseObject::__construct()
  */
 public function __construct($categoryID, $row = null, UserOptionCategory $category = null)
 {
     if ($categoryID !== null) {
         $sql = "SELECT\toption_category.*,\n\t\t\t\t\t(SELECT COUNT(DISTINCT optionName) FROM wcf" . WCF_N . "_user_option WHERE categoryName = option_category.categoryName) AS options\n\t\t\t\tFROM\twcf" . WCF_N . "_user_option_category option_category\n\t\t\t\tWHERE\toption_category.categoryID = ?";
         $statement = WCF::getDB()->prepareStatement($sql);
         $statement->execute(array($categoryID));
         $row = $statement->fetchArray();
     }
     parent::__construct(null, $row, $category);
 }
 /**
  * @see	\wcf\data\DatabaseObject::handleData()
  */
 protected function handleData($data)
 {
     if (!empty($data['metaData'])) {
         $metaData = @unserialize($data['metaData']);
         if (is_array($metaData)) {
             $this->metaData = $metaData;
         }
         unset($data['metaData']);
     }
     parent::handleData($data);
 }
Beispiel #6
0
 /**
  * @see	\wcf\data\DatabaseObject::handleData();
  */
 protected function handleData($data)
 {
     parent::handleData($data);
     // get user objects from cache
     if (!empty($data['cachedUsers'])) {
         $cachedUsers = @unserialize($data['cachedUsers']);
         if (is_array($cachedUsers)) {
             foreach ($cachedUsers as $cachedUserData) {
                 $user = new User(null, $cachedUserData);
                 $this->users[$user->userID] = $user;
             }
         }
     }
 }
 /**
  * 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 #8
0
 public function __construct($id, array $row = null, DatabaseObject $object = null)
 {
     parent::__construct($id, $row, $object);
     $this->type = \wcf\system\jcoins\shop\ShopHandler::getInstance()->getItemTypeByID($this->itemType);
     $condition = new \wcf\system\database\util\PreparedStatementConditionBuilder();
     $condition->add('itemID = ?', array($this->getObjectID()));
     $condition->add('parameterID IN (?)', array(array_map(function ($value) {
         return $value['parameterID'];
     }, $this->type->getParameters())));
     $sql = "SELECT * FROM wcf" . WCF_N . "_jcoins_shop_item_parameter " . $condition;
     $stmt = \wcf\system\WCF::getDB()->prepareStatement($sql);
     $stmt->execute($condition->getParameters());
     while ($row = $stmt->fetchArray()) {
         $this->parameters[$row['parameterID']] = $row['value'];
     }
 }
Beispiel #9
0
 /**
  * @see wcf\data\DatabaseObject::__get()
  */
 public function __get($name)
 {
     $value = parent::__get($name);
     if ($value === null) {
         $value = $this->getUserOption($name);
     }
     return $value;
 }
 /**
  * @see	\wcf\data\IMessageQuickReply::validateContainer()
  */
 public function validateContainer(DatabaseObject $conversation)
 {
     if (!$conversation->conversationID) {
         throw new UserInputException('objectID');
     }
     if ($conversation->isClosed) {
         throw new PermissionDeniedException();
     }
     $conversation->loadUserParticipation();
     if (!$conversation->canRead()) {
         throw new PermissionDeniedException();
     }
 }
Beispiel #11
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;
	}
Beispiel #12
0
	/**
	 * @see	wcf\data\DatabaseObject::handleData()
	 */
	protected function handleData($data) {
		parent::handleData($data);
		
		// unserialize additional data
		$this->data['additionalData'] = (empty($data['additionalData']) ? array() : @unserialize($data['additionalData']));
	}
 /**
  * @see	\wcf\data\IStorableObject::getData()
  */
 public function getData()
 {
     return $this->object->getData();
 }
Beispiel #14
0
 /**
  * @see	wcf\data\DatabaseObject::handleData()
  */
 protected function handleData($data)
 {
     // handle additional data
     $data['additionalData'] = @unserialize($data['additionalData']);
     if (!is_array($data['additionalData'])) {
         $data['additionalData'] = array();
     }
     parent::handleData($data);
 }
 /**
  * Returns all available content languages for given package.
  *
  * @param 	integer		$packageID
  * @return	array<wcf\data\language\Language>
  */
 public function getContentLanguages($packageID = PACKAGE_ID)
 {
     $availableLanguages = array();
     if (isset($this->cache['packages'][$packageID])) {
         foreach ($this->cache['packages'][$packageID] as $availableLanguageID) {
             if ($this->cache['languages'][$availableLanguageID]->hasContent) {
                 $availableLanguages[$availableLanguageID] = $this->getLanguage($availableLanguageID);
             }
         }
     }
     DatabaseObject::sort($availableLanguages, 'languageName');
     return $availableLanguages;
 }