/** * @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(); } }
/** * @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); }
/** * @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)); } }
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']; } }
/** * @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(); } }
/** * 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; }
/** * @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(); }
/** * @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; }