/** * Returns delete note if applicable. * * @return string */ public function getDeleteNote() { if ($this->logEntry === null) { return ''; } return WCF::getLanguage()->getDynamicVariable('filebase.entry.file.deleted', array('file' => $this)); }
/** * @see \wcf\form\IForm::save() */ public function save() { AbstractForm::save(); // set cookies if ($this->useCookies == 1) { UserAuthenticationFactory::getInstance()->getUserAuthentication()->storeAccessData($this->user, $this->username, $this->password); } $oldSessionID = WCF::getSession()->sessionID; // change user WCF::getSession()->changeUser($this->user); // get redirect url $this->checkURL(); $this->saved(); if (isset($_REQUEST['s']) && $_REQUEST['s'] == $oldSessionID && $oldSessionID != WCF::getSession()->sessionID) { // force instant redirect to avoid issues with non-cookie login and the already defined SID_ARG_* constants if (preg_match('~[?&]s=[a-f0-9]{40}~i', $this->url)) { $this->url = preg_replace('~([?&])s=[a-f0-9]{40}~i', '$1s=' . WCF::getSession()->sessionID, $this->url); } else { $this->url .= mb_strpos($this->url, '?') === false ? '?' : '&'; $this->url .= 's=' . WCF::getSession()->sessionID; } HeaderUtil::redirect($this->url); exit; } // redirect to url WCF::getTPL()->assign('__hideUserMenu', true); HeaderUtil::delayedRedirect($this->url, WCF::getLanguage()->get('wcf.user.login.redirect')); exit; }
/** * @see \wcf\system\option\IOptionType::getData() */ public function getData(Option $option, $newValue) { $number = str_replace(WCF::getLanguage()->get('wcf.global.thousandsSeparator'), '', $newValue); $number = str_replace(WCF::getLanguage()->get('wcf.global.decimalPoint'), '.', $number); if (!preg_match('~^(?:\\d*)\\.?\\d+~', $number, $matches)) { return 0; } $number = $matches[0]; if (preg_match('/[kmgt]i?b$/i', $newValue, $multiplier)) { switch (mb_strtolower($multiplier[0])) { case 'tb': $number *= 1000; case 'gb': $number *= 1000; case 'mb': $number *= 1000; case 'kb': $number *= 1000; break; case 'tib': $number *= 1024; case 'gib': $number *= 1024; case 'mib': $number *= 1024; case 'kib': $number *= 1024; break; } } return $number; }
/** * @see \wcf\system\user\activity\event\IUserActivityEvent::prepare() */ public function prepare(array $events) { $commentIDs = array(); foreach ($events as $event) { $commentIDs[] = $event->objectID; } $commentList = new CommentList(); $commentList->getConditionBuilder()->add('comment.commentID IN (?)', array($objectIDs)); $commentList->readObjects(); $comments = $commentList->getObjects(); foreach ($events as $event) { if (isset($comments[$event->objectID])) { $comment = $comments[$event->objectID]; $page = PageCache::getInstance()->getPage($comment->objectID); if ($page !== null) { if (!$page->canRead()) { continue; } $event->setIsAccessible(); $text = WCF::getLanguage()->getDynamicVariable('wcf.user.profile.recentActivity.pageComment', array('page' => $page)); $event->setTitle($text); $event->setDescription($comment->getFormattedMessage()); continue; } } $event->setIsOrphaned(); } }
/** * @see \wcf\system\option\IOptionType::getData() */ public function getData(Option $option, $newValue) { $newValue = str_replace(' ', '', $newValue); $newValue = str_replace(WCF::getLanguage()->get('wcf.global.thousandsSeparator'), '', $newValue); $newValue = str_replace(WCF::getLanguage()->get('wcf.global.decimalPoint'), '.', $newValue); return floatval($newValue); }
/** * @see \wcf\system\user\activity\event\IUserActivityEvent::prepare() */ public function prepare(array $events) { $responseIDs = array(); foreach ($events as $event) { $responseIDs[] = $event->objectID; } $responseList = new CommentResponseList(); $responseList->getConditionBuilder()->add("comment_response.responseID IN (?)", array($responseIDs)); $responseList->readObjects(); $responses = $responseList->getObjects(); $commentIDs = $comments = array(); foreach ($responses as $response) { $commentIDs[] = $response->commentID; } if (!empty($commentIDs)) { $commentList = new CommentList(); $commentList->getConditionBuilder()->add("comment.commentID IN (?)", array($commentIDs)); $commentList->readObjects(); $comments = $commentList->getObjects(); } // fetch news entries $entryIDs = $entry = array(); foreach ($comments as $comment) { $entryIDs[] = $comment->objectID; } if (!empty($entryIDs)) { $entryList = new ViewableEntryList(); $entryList->getConditionBuilder()->add("news_entry.entryID IN (?)", array($entryIDs)); $entryList->readObjects(); $entry = $entryList->getObjects(); } $userIDs = $user = array(); foreach ($comments as $comment) { $userIDs[] = $comment->userID; } if (!empty($userIDs)) { $userList = new UserList(); $userList->getConditionBuilder()->add("user_table.userID IN (?)", array($userIDs)); $userList->readObjects(); $users = $userList->getObjects(); } foreach ($events as $event) { if (isset($responses[$event->objectID])) { $response = $responses[$event->objectID]; $comment = $comments[$response->commentID]; if (isset($entry[$comment->objectID]) && isset($users[$comment->userID])) { $newsEntry = $entry[$comment->objectID]; if (!$newsEntry->canRead()) { continue; } $event->setIsAccessible(); $text = WCF::getLanguage()->getDynamicVariable('cms.recentActivity.newsCommentResponse', array('commentAuthor' => $users[$comment->userID], 'entry' => $newsEntry)); $event->setTitle($text); $event->setDescription($response->getExcerpt()); continue; } } $event->setIsOrphaned(); } }
/** * @see \wcf\page\IPage::readData() */ public function readData() { parent::readData(); // add breadcrumbs WCF::getBreadcrumbs()->add(new Breadcrumb(WCF::getLanguage()->get('cms.header.menu.news'), LinkHandler::getInstance()->getLink('NewsOverview', array('application' => 'cms')))); WCF::getBreadcrumbs()->add($this->entry->getDecoratedObject()->getBreadcrumb()); }
/** * @see \wcf\system\search\acp\IACPSearchResultProvider::search() */ public function search($query) { if (!WCF::getSession()->getPermission('admin.system.package.canUpdatePackage') && !WCF::getSession()->getPermission('admin.system.package.canUninstallPackage')) { return array(); } $results = array(); // search by language item $conditions = new PreparedStatementConditionBuilder(); $conditions->add("languageID = ?", array(WCF::getLanguage()->languageID)); $conditions->add("languageItem LIKE ?", array('wcf.acp.package.packageName.package%')); $conditions->add("languageItemValue LIKE ?", array('%' . $query . '%')); $sql = "SELECT\t\tlanguageItem\n\t\t\tFROM\t\twcf" . WCF_N . "_language_item\n\t\t\t" . $conditions; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute($conditions->getParameters()); $packageIDs = array(); while ($row = $statement->fetchArray()) { $packageIDs[] = str_replace('wcf.acp.package.packageName.package', '', $row['languageItem']); } $conditions = new PreparedStatementConditionBuilder(false); if (!empty($packageIDs)) { $conditions->add("packageID IN (?)", array($packageIDs)); } $sql = "SELECT\t*\n\t\t\tFROM\twcf" . WCF_N . "_package\n\t\t\tWHERE\tpackageName LIKE ?\n\t\t\t\tOR package LIKE ?\n\t\t\t\t" . (count($conditions->getParameters()) ? "OR " . $conditions : ""); $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array_merge(array($query . '%', $query . '%'), $conditions->getParameters())); while ($package = $statement->fetchObject('wcf\\data\\package\\Package')) { $results[] = new ACPSearchResult($package->getName(), LinkHandler::getInstance()->getLink('Package', array('id' => $package->packageID, 'title' => $package->getName()))); } return $results; }
public function prepare(array $events) { $objectIDs = array(); foreach ($events as $event) { $objectIDs[] = $event->objectID; } // comments $commentList = new CommentList(); $commentList->getConditionBuilder()->add("comment.commentID IN (?)", array($objectIDs)); $commentList->readObjects(); $comments = $commentList->getObjects(); // get news $newsIDs = array(); foreach ($comments as $comment) { $newsIDs[] = $comment->objectID; } $list = new NewsList(); $list->getConditionBuilder()->add("news.newsID IN (?)", array($newsIDs)); $list->readObjects(); $newss = $list->getObjects(); foreach ($events as $event) { if (isset($comments[$event->objectID])) { $comment = $comments[$event->objectID]; if (isset($newss[$comment->objectID])) { $news = $newss[$comment->objectID]; $text = WCF::getLanguage()->getDynamicVariable('wcf.user.profile.recentActivity.newsComment', array('news' => $news)); $event->setTitle($text); $event->setDescription($comment->getFormattedMessage()); $event->setIsAccessible(); } } else { $event->setIsOrphaned(); } } }
/** * @see \wcf\system\like\IViewableLikeProvider::prepare() */ public function prepare(array $likes) { $entryIDs = array(); foreach ($likes as $like) { $entryIDs[] = $like->objectID; } // fetch entries $entryList = new EntryList(); $entryList->setObjectIDs($entryIDs); $entryList->readObjects(); $entries = $entryList->getObjects(); // set message foreach ($likes as $like) { if (isset($entries[$like->objectID])) { $entry = $entries[$like->objectID]; // check permissions if (!$entry->canRead()) { continue; } $like->setIsAccessible(); // short output $text = WCF::getLanguage()->getDynamicVariable('wcf.like.title.de.incendium.cms.like.likeableNews', array('entry' => $entry, 'like' => $like)); $like->setTitle($text); // output $like->setDescription($entry->getExcerpt()); } } }
/** * @see \wcf\system\SingletonFactory::init() */ protected function init() { // set default tags $this->addTag('description', 'description', WCF::getLanguage()->get(META_DESCRIPTION)); $this->addTag('keywords', 'keywords', WCF::getLanguage()->get(META_KEYWORDS)); $this->addTag('og:site_name', 'og:site_name', WCF::getLanguage()->get(PAGE_TITLE), true); }
/** * @see \wcf\system\bbcode\IBBCode::getParsedTag() */ public function getParsedTag(array $openingTag, $content, array $closingTag, BBCodeParser $parser) { if ($parser->getOutputType() == 'text/html') { $quoteLink = !empty($openingTag['attributes'][1]) ? $openingTag['attributes'][1] : ''; $externalQuoteLink = !empty($openingTag['attributes'][1]) ? !ApplicationHandler::getInstance()->isInternalURL($openingTag['attributes'][1]) : false; if (!$externalQuoteLink) { $quoteLink = preg_replace('~^https?://~', RouteHandler::getProtocol(), $quoteLink); } $quoteAuthor = !empty($openingTag['attributes'][0]) ? $openingTag['attributes'][0] : ''; $quoteAuthorObject = null; if ($quoteAuthor && !$externalQuoteLink) { $quoteAuthorLC = mb_strtolower(StringUtil::decodeHTML($quoteAuthor)); foreach (MessageEmbeddedObjectManager::getInstance()->getObjects('com.woltlab.wcf.quote') as $user) { if (mb_strtolower($user->username) == $quoteAuthorLC) { $quoteAuthorObject = $user; break; } } } WCF::getTPL()->assign(array('content' => $content, 'quoteLink' => $quoteLink, 'quoteAuthor' => $quoteAuthor, 'quoteAuthorObject' => $quoteAuthorObject, 'isExternalQuoteLink' => $externalQuoteLink)); return WCF::getTPL()->fetch('quoteBBCodeTag'); } else { if ($parser->getOutputType() == 'text/simplified-html') { return WCF::getLanguage()->getDynamicVariable('wcf.bbcode.quote.text', array('content' => $content, 'cite' => !empty($openingTag['attributes'][0]) ? $openingTag['attributes'][0] : '')) . "\n"; } } }
/** * Returns the label of the input element. * * @param string $identifier * @return string */ protected function getLabel($identifier) { if (isset($this->labels[$identifier])) { return '<label for="' . $identifier . '">' . WCF::getLanguage()->get($this->labels[$identifier]) . '</label>'; } return ''; }
public function readData() { parent::readData(); WCF::getBreadcrumbs()->add(new Breadcrumb(WCF::getLanguage()->get('cms.page.news'), LinkHandler::getInstance()->getLink('NewsCategoryList', array('application' => 'cms')))); $excludedCategoryIDs = array_diff(NewsCategory::getAccessibleCategoryIDs(), NewsCategory::getAccessibleCategoryIDs(array('canAddNews'))); $categoryTree = new NewsCategoryNodeTree('de.codequake.cms.category.news', 0, false, $excludedCategoryIDs); $this->categoryList = $categoryTree->getIterator(); $this->categoryList->setMaxDepth(0); if (empty($_POST)) { $dateTime = DateUtil::getDateTimeByTimestamp(TIME_NOW); $dateTime->setTimezone(WCF::getUser()->getTimeZone()); $this->time = $dateTime->format('c'); } else { $dateTime = DateUtil::getDateTimeByTimestamp(@strtotime($this->time)); $dateTime->setTimezone(WCF::getUser()->getTimeZone()); $this->time = $dateTime->format('c'); } // default values if (empty($_POST)) { $this->username = WCF::getSession()->getVar('username'); // multilingualism if (!empty($this->availableContentLanguages)) { if ($this->languageID) { $language = LanguageFactory::getInstance()->getUserLanguage(); $this->languageID = $language->languageID; } if (!isset($this->availableContentLanguages[$this->languageID])) { $languageIDs = array_keys($this->availableContentLanguages); $this->languageID = array_shift($languageIDs); } } } }
/** * @see \wcf\system\user\activity\event\IUserActivityEvent::prepare() */ public function prepare(array $events) { $objectIDs = array(); foreach ($events as $event) { $objectIDs[] = $event->objectID; } // fetch entrys $entryList = new EntryList(); $entryList->setObjectIDs($objectIDs); $entryList->readObjects(); $entries = $entryList->getObjects(); // set message foreach ($events as $event) { if (isset($entries[$event->objectID])) { if (!$entries[$event->objectID]->canRead()) { continue; } $event->setIsAccessible(); // title $text = WCF::getLanguage()->getDynamicVariable('filebase.recentActivity.entry', array('entry' => $entries[$event->objectID])); $event->setTitle($text); // description $event->setDescription($entries[$event->objectID]->getExcerpt()); } else { $event->setIsOrphaned(); } } }
/** * @see wcf\system\option\IOptionType::getData() */ public function getData(Option $option, $newValue) { $number = StringUtil::replace(WCF::getLanguage()->get('wcf.global.thousandsSeparator'), '', $newValue); $d = preg_quote(WCF::getLanguage()->get('wcf.global.decimalPoint'), '~'); if (!preg_match('~^(?:\d*)(?:'.$d.')?\d+~', $number, $matches)) return 0; $number = $matches[0]; if (preg_match('/[kmgt]i?b$/i', $newValue, $multiplier)) { switch (StringUtil::toLowerCase($multiplier[0])) { case 'tb': $number *= 1000; case 'gb': $number *= 1000; case 'mb': $number *= 1000; case 'kb': $number *= 1000; break; case 'tib': $number *= 1024; case 'gib': $number *= 1024; case 'mib': $number *= 1024; case 'kib': $number *= 1024; break; } } return $number; }
/** * @see \wcf\page\IPage::readData() */ public function readData() { parent::readData(); $serverList = new PackageUpdateServerList(); $serverList->readObjects(); foreach ($serverList as $server) { if (preg_match('~https?://store.woltlab.com/(?P<wcfMajorRelease>[a-z]+)/~', $server->serverURL, $matches)) { $this->updateServers[$matches['wcfMajorRelease']] = $server; } } foreach ($this->products as $packageUpdateID => $product) { $wcfMajorRelease = $product['wcfMajorRelease']; if (!isset($this->productData[$wcfMajorRelease])) { $this->productData[$wcfMajorRelease] = array(); } $languageCode = WCF::getLanguage()->languageCode; $packageName = isset($product['packageName'][$languageCode]) ? $product['packageName'][$languageCode] : $product['packageName']['en']; $this->productData[$wcfMajorRelease][$packageUpdateID] = array('author' => $product['author'], 'authorURL' => $product['authorURL'], 'package' => $product['package'], 'packageName' => $packageName, 'pluginStoreURL' => $product['pluginStoreURL'], 'version' => array('available' => $product['lastVersion'], 'installed' => ''), 'status' => isset($this->updateServers[$wcfMajorRelease]) ? 'install' : 'unavailable'); $package = PackageCache::getInstance()->getPackageByIdentifier($product['package']); if ($package !== null) { $this->productData[$wcfMajorRelease][$packageUpdateID]['version']['installed'] = $package->packageVersion; if (Package::compareVersion($product['lastVersion'], $package->packageVersion, '>')) { $this->productData[$wcfMajorRelease][$packageUpdateID]['status'] = 'update'; } else { if (Package::compareVersion($product['lastVersion'], $package->packageVersion, '=')) { $this->productData[$wcfMajorRelease][$packageUpdateID]['status'] = 'upToDate'; } } } if (isset($this->updateServers[$wcfMajorRelease]) && $this->updateServers[$wcfMajorRelease]->lastUpdateTime == 0) { $this->productData[$wcfMajorRelease][$packageUpdateID]['status'] = 'requireUpdate'; } } }
/** * @see \wcf\system\user\activity\event\IUserActivityEvent::prepare() */ public function prepare(array $events) { $newsIDs = array(); foreach ($events as $event) { $newsIDs[] = $event->objectID; } $newsList = new ViewableNewsList(); $newsList->getConditionBuilder()->add("news.newsID IN (?)", array($newsIDs)); $newsList->readObjects(); $newsEntries = $newsList->getObjects(); foreach ($events as $event) { if (isset($newsEntries[$event->objectID])) { $news = $newsEntries[$event->objectID]; if (!$news->canRead()) { continue; } $event->setIsAccessible(); $text = WCF::getLanguage()->getDynamicVariable('news.recentActivity.likedNews', array('news' => $news)); $event->setTitle($text); $event->setDescription($news->getExcerpt()); } else { $event->setIsOrphaned(); } } }
/** * @see \wcf\page\IPage::readData() */ public function readData() { parent::readData(); // stats if (LINKLIST_ENABLE_STATISTICS) { $this->stats = array_merge(StatsCacheBuilder::getInstance()->getData(), UserStatsCacheBuilder::getInstance()->getData()); } // get categories $categoryTree = new LinklistCategoryNodeTree('de.incendium.linklist.category'); $this->categoryList = $categoryTree->getIterator(); $this->categoryList->setMaxDepth(0); // get featured entries $this->featuredEntryList = new AccessibleEntryList(); $this->featuredEntryList->getConditionBuilder()->add('entry.isFeatured = ?', array(1)); $this->featuredEntryList->sqlLimit = 10; $this->featuredEntryList->sqlOrderBy = 'RAND()'; $this->featuredEntryList->readObjects(); // remove default breadcrumb entry and set current page as 'website' if (WCF::isLandingPage()) { MetaTagHandler::getInstance()->addTag('og:url', 'og:url', LinkHandler::getInstance()->getLink('Linklist', array('application' => 'linklist')), true); MetaTagHandler::getInstance()->addTag('og:type', 'og:type', 'website', true); MetaTagHandler::getInstance()->addTag('og:title', 'og:title', WCF::getLanguage()->get(PAGE_TITLE), true); MetaTagHandler::getInstance()->addTag('og:description', 'og:description', WCF::getLanguage()->get(PAGE_DESCRIPTION), true); } }
/** * @see \wcf\system\template\IModifierTemplatePlugin::execute() */ public function execute($tagArgs, TemplateEngine $tplObj) { if (($lang = $tplObj->get('__language')) === null) { $lang = WCF::getLanguage(); } return $lang->getDynamicVariable($tagArgs[0]); }
/** * Handles a http request. * * @param string $application * @param boolean $isACPRequest */ public function handle($application = 'wcf', $isACPRequest = false) { $this->isACPRequest = $isACPRequest; if (!RouteHandler::getInstance()->matches()) { throw new SystemException("Cannot handle request, no valid route provided."); } // build request $this->buildRequest($application); // handle offline mode if (!$isACPRequest && defined('OFFLINE') && OFFLINE) { if (!WCF::getSession()->getPermission('admin.general.canViewPageDuringOfflineMode') && !$this->activeRequest->isAvailableDuringOfflineMode()) { if (isset($_SERVER['X-Requested-With']) && ($_SERVER['X-Requested-With'] == 'XMLHttpRequest')) { throw new AJAXException(WCF::getLanguage()->get('wcf.ajax.error.permissionDenied'), AJAXException::INSUFFICIENT_PERMISSIONS); } else { WCF::getTPL()->assign(array( 'templateName' => 'offline' )); WCF::getTPL()->display('offline'); } exit; } } // start request $this->activeRequest->execute(); }
/** * @see \wcf\system\comment\manager\ICommentManager::getTitle() */ public function getTitle($objectTypeID, $objectID, $isResponse = false) { if ($isResponse) { return WCF::getLanguage()->get('filebase.commentResponse'); } return WCF::getLanguage()->getDynamicVariable('filebase.comment'); }
/** * @see wcf\system\clipboard\action\IClipboardAction::execute() */ public function execute(array $objects, $actionName) { $item = parent::execute($objects, $actionName); if ($item === null) { return null; } // handle actions switch ($actionName) { case 'assignToGroup': $item->setURL(LinkHandler::getInstance()->getLink('UserAssignToGroup')); break; case 'delete': $item->addInternalData('confirmMessage', WCF::getLanguage()->getDynamicVariable('wcf.clipboard.item.com.woltlab.wcf.user.delete.confirmMessage', array( 'count' => $item->getCount() ))); break; case 'exportMailAddress': $item->setURL(LinkHandler::getInstance()->getLink('UserEmailAddressExport')); break; case 'sendMail': $item->setURL(LinkHandler::getInstance()->getLink('UserMail')); break; } return $item; }
/** * @see \wcf\page\IPage::readData() */ public function readData() { parent::readData(); // add breadcrumbs if (MODULE_MEMBERS_LIST) { WCF::getBreadcrumbs()->add(new Breadcrumb(WCF::getLanguage()->get('wcf.user.members'), LinkHandler::getInstance()->getLink('MembersList'))); } }
/** * @see \wcf\page\IPage::readParameters() */ public function readParameters() { parent::readParameters(); // registration disabled if (!WCF::getUser()->userID && REGISTER_DISABLED) { throw new NamedUserException(WCF::getLanguage()->get('wcf.user.register.error.disabled')); } }
/** * Returns the available payment methods for selection. * * @return array<string> */ public function getPaymentMethodSelection() { $selection = array(); foreach ($this->objectTypes as $objectType) { $selection[$objectType->objectType] = WCF::getLanguage()->get('wcf.payment.' . $objectType->objectType); } return $selection; }
/** * Returns the confirm message for package uninstallation. * * @return array<string> */ public function getConfirmMessage() { return array( 'confirmMessage' => WCF::getLanguage()->getDynamicVariable('wcf.acp.package.uninstallation.confirmDependentPackages', array( 'package' => $this->packageEditor->getDecoratedObject(), 'showDependentPackages' => true )) ); }
/** * @see \wcf\system\user\online\location\IUserOnlineLocation::get() */ public function get(UserOnline $user, $languageVariable = '') { $page = PageCache::getInstance()->getPage($user->objectID); if (!$page || !$page->canRead()) { return ''; } return WCF::getLanguage()->getDynamicVariable($languageVariable, array('page' => $page)); }
/** * @see \wcf\system\option\IOptionType::getFormElement() */ public function getFormElement(Option $option, $value) { $selectOptions = CaptchaHandler::getInstance()->getCaptchaSelection(); if ($option->allowemptyvalue) { $selectOptions = array_merge(array('' => WCF::getLanguage()->get('wcf.captcha.useNoCaptcha')), $selectOptions); } return WCF::getTPL()->fetch('selectOptionType', 'wcf', array('selectOptions' => $selectOptions, 'option' => $option, 'value' => $value)); }
/** * @see \wcf\data\IEditableObject::create() */ public static function create(array $parameters = array()) { $descriptions = array(); if (isset($parameters['description']) && is_array($parameters['description'])) { if (count($parameters['description']) > 1) { $descriptions = $parameters['description']; $parameters['description'] = ''; } else { $parameters['description'] = reset($parameters['description']); } } $cronjob = parent::create($parameters); // save cronjob description if (!empty($descriptions)) { // set default value if (isset($descriptions[''])) { $defaultValue = $descriptions['']; } else { if (isset($descriptions['en'])) { // fallback to English $defaultValue = $descriptions['en']; } else { if (isset($descriptions[WCF::getLanguage()->getFixedLanguageCode()])) { // fallback to the language of the current user $defaultValue = $descriptions[WCF::getLanguage()->getFixedLanguageCode()]; } else { // fallback to first description $defaultValue = reset($descriptions); } } } // fetch data directly from database during framework installation if (!PACKAGE_ID) { $sql = "SELECT\t*\n\t\t\t\t\tFROM\twcf" . WCF_N . "_language_category\n\t\t\t\t\tWHERE\tlanguageCategory = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array('wcf.acp.cronjob')); $languageCategory = $statement->fetchObject('wcf\\data\\language\\category\\LanguageCategory'); $languages = new LanguageList(); $languages->readObjects(); } else { $languages = LanguageFactory::getInstance()->getLanguages(); $languageCategory = LanguageFactory::getInstance()->getCategory('wcf.acp.cronjob'); } $sql = "INSERT INTO\twcf" . WCF_N . "_language_item\n\t\t\t\t\t\t(languageID, languageItem, languageItemValue, languageCategoryID, packageID)\n\t\t\t\tVALUES\t\t(?, ?, ?, ?, ?)\n\t\t\t\tON DUPLICATE KEY UPDATE languageItemValue = VALUES(languageItemValue)"; $statement = WCF::getDB()->prepareStatement($sql); foreach ($languages as $language) { $value = $defaultValue; if (isset($descriptions[$language->languageCode])) { $value = $descriptions[$language->languageCode]; } $statement->execute(array($language->languageID, 'wcf.acp.cronjob.description.cronjob' . $cronjob->cronjobID, $value, $languageCategory->languageCategoryID, $cronjob->packageID)); } // update cronjob $cronjobEditor = new CronjobEditor($cronjob); $cronjobEditor->update(array('description' => 'wcf.acp.cronjob.description.cronjob' . $cronjob->cronjobID)); } return $cronjob; }