/** * @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; }
/** * Rebuilds cookie domain/path for all applications. */ public static function rebuild() { $applicationList = new ApplicationList(); $applicationList->readObjects(); $applicationAction = new ApplicationAction($applicationList->getObjects(), 'rebuild'); $applicationAction->executeAction(); }