/** * @see wcf\system\cache\ICacheBuilder::getData() */ public function getData(array $cacheResource) { $packageList = new PackageList(); $packageList->sqlLimit = 0; $packageList->readObjects(); return $packageList->getObjects(); }
/** * @see \wcf\system\cache\builder\AbstractCacheBuilder::rebuild() */ public function rebuild(array $parameters) { $data = array('abbreviation' => array(), 'application' => array(), 'primary' => 0, 'wcf' => null); // fetch applications $applicationList = new ApplicationList(); $applicationList->readObjects(); $applications = $applicationList->getObjects(); foreach ($applications as $application) { $data['application'][$application->packageID] = $application; // save primary application's package id if ($application->isPrimary) { $data['primary'] = $application->packageID; } } // fetch abbreviations $packageList = new PackageList(); $packageList->getConditionBuilder()->add('package.isApplication = ?', array(1)); $packageList->readObjects(); foreach ($packageList->getObjects() as $package) { $data['abbreviation'][Package::getAbbreviation($package->package)] = $package->packageID; } // assign wcf pseudo-application if (PACKAGE_ID) { $data['wcf'] = $data['application'][1]; unset($data['application'][1]); } return $data; }
/** * @see wcf\system\cache\ICacheBuilder::getData() */ public function getData(array $cacheResource) { list($cache, $packageID) = explode('-', $cacheResource['cache']); $data = array('abbreviation' => array(), 'application' => array(), 'group' => null, 'primary' => 0, 'wcf' => null); // lookup group id for currently active application $sql = "SELECT\tgroupID\n\t\t\tFROM\twcf" . WCF_N . "_application\n\t\t\tWHERE\tpackageID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(array($packageID)); $row = $statement->fetchArray(); // current application is not part of an application group if (!$row || $row['groupID'] == 0 || $row['groupID'] === null) { $data['application'] = array($packageID => new application\Application($packageID)); } else { // fetch applications $applicationList = new application\ApplicationList(); $applicationList->getConditionBuilder()->add("application.groupID = ?", array($row['groupID'])); $applicationList->sqlLimit = 0; $applicationList->readObjects(); $applications = $applicationList->getObjects(); foreach ($applications as $application) { $data['application'][$application->packageID] = $application; // save primary application's package id if ($application->isPrimary) { $data['primary'] = $application->packageID; } } // fetch application group $data['group'] = new ApplicationGroup($row['groupID']); } // fetch abbreviations $packageList = new PackageList(); $packageList->getConditionBuilder()->add('packageID IN (?)', array(array_keys($data['application']))); $packageList->readObjects(); foreach ($packageList->getObjects() as $package) { $data['abbreviation'][Package::getAbbreviation($package->package)] = $package->packageID; } // fetch wcf pseudo-application $data['wcf'] = new application\Application(1); return $data; }
/** * Returns the database table name for the object type's search index. * * @param mixed $objectType * @param \wcf\data\package\Package $package * @return string */ public static function getTableName($objectType, $package = null) { if (is_string($objectType)) { $objectType = self::getInstance()->getObjectType($objectType); } if ($objectType->searchindex) { $tableName = $objectType->searchindex; if (!empty($tableName)) { if (empty(self::$packages)) { $packageList = new PackageList(); $packageList->getConditionBuilder()->add('package.isApplication = ?', array(1)); $packageList->readObjects(); self::$packages = $packageList->getObjects(); } // replace app1_ with app{WCF_N}_ in the table name foreach (self::$packages as $package) { $abbreviation = Package::getAbbreviation($package->package); $tableName = str_replace($abbreviation . '1_', $abbreviation . WCF_N . '_', $tableName); } return $tableName; } } return 'wcf' . WCF_N . '_search_index_' . substr(sha1($objectType->objectType), 0, 8); }