本文整理汇总了PHP中Gadget::getLocales方法的典型用法代码示例。如果您正苦于以下问题:PHP Gadget::getLocales方法的具体用法?PHP Gadget::getLocales怎么用?PHP Gadget::getLocales使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Gadget
的用法示例。
在下文中一共展示了Gadget::getLocales方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: fetchResources
/**
* Fetches all remote resources simultaniously using a multiFetchRequest to optimize rendering time.
*
* The preloads will be json_encoded to their gadget document injection format, and the locales will
* be reduced to only the GadgetContext->getLocale matching entries.
*
* @param Gadget $gadget
* @param GadgetContext $context
*/
private function fetchResources(Gadget &$gadget)
{
$contextLocale = $this->context->getLocale();
$unsignedRequests = $signedRequests = array();
foreach ($gadget->getLocales() as $key => $locale) {
// Only fetch the locales that match the current context's language and country
if ($locale['country'] == 'all' && $locale['lang'] == 'all' || $locale['lang'] == $contextLocale['lang'] && $locale['country'] == 'all' || $locale['lang'] == $contextLocale['lang'] && $locale['country'] == $contextLocale['country']) {
if (!empty($locale['messages'])) {
// locale matches the current context, add it to the requests queue
$request = new RemoteContentRequest($locale['messages']);
$request->createRemoteContentRequestWithUri($locale['messages']);
$request->getOptions()->ignoreCache = $this->context->getIgnoreCache();
$unsignedRequests[] = $request;
}
} else {
// remove any locales that are not applicable to this context
unset($gadget->gadgetSpec->locales[$key]);
}
}
if (!$gadget->gadgetContext instanceof MetadataGadgetContext) {
// Add preloads to the request queue
foreach ($gadget->getPreloads() as $preload) {
if (!empty($preload['href'])) {
$request = new RemoteContentRequest($preload['href']);
if (!empty($preload['authz']) && $preload['authz'] == 'SIGNED') {
if ($this->token == '') {
throw new GadgetException("Signed preloading requested, but no valid security token set");
}
$request = new RemoteContentRequest($preload['href']);
$request->setAuthType(RemoteContentRequest::$AUTH_SIGNED);
$request->setNotSignedUri($preload['href']);
$request->setToken($this->token);
$request->getOptions()->ignoreCache = $this->context->getIgnoreCache();
if (strcasecmp($preload['signViewer'], 'false') == 0) {
$request->getOptions()->viewerSigned = false;
}
if (strcasecmp($preload['signOwner'], 'false') == 0) {
$request->getOptions()->ownerSigned = false;
}
$signedRequests[] = $request;
} else {
$request->createRemoteContentRequestWithUri($preload['href']);
$request->getOptions()->ignoreCache = $this->context->getIgnoreCache();
$unsignedRequests[] = $request;
}
}
}
// Add template libraries to the request queue
if ($gadget->gadgetSpec->templatesRequireLibraries) {
foreach ($gadget->gadgetSpec->templatesRequireLibraries as $libraryUrl) {
$request = new RemoteContentRequest($libraryUrl);
$request->createRemoteContentRequestWithUri($libraryUrl);
$request->getOptions()->ignoreCache = $this->context->getIgnoreCache();
$unsignedRequests[] = $request;
}
}
}
// Perform the non-signed requests
$responses = array();
if (count($unsignedRequests)) {
$brc = new BasicRemoteContent();
$resps = $brc->multiFetch($unsignedRequests);
foreach ($resps as $response) {
$responses[$response->getUrl()] = array('body' => $response->getResponseContent(), 'rc' => $response->getHttpCode());
}
}
// Perform the signed requests
if (count($signedRequests)) {
$signingFetcherFactory = new SigningFetcherFactory(Config::get("private_key_file"));
$remoteFetcherClass = Config::get('remote_content_fetcher');
$remoteFetcher = new $remoteFetcherClass();
$remoteContent = new BasicRemoteContent($remoteFetcher, $signingFetcherFactory);
$resps = $remoteContent->multiFetch($signedRequests);
foreach ($resps as $response) {
$responses[$response->getNotSignedUrl()] = array('body' => $response->getResponseContent(), 'rc' => $response->getHttpCode());
}
}
// assign the results to the gadget locales and preloads (using the url as the key)
foreach ($gadget->gadgetSpec->locales as $key => $locale) {
if (!empty($locale['messages']) && isset($responses[$locale['messages']]) && $responses[$locale['messages']]['rc'] == 200) {
$gadget->gadgetSpec->locales[$key]['messageBundle'] = $this->parseMessageBundle($responses[$locale['messages']]['body']);
}
}
if (!$gadget->gadgetContext instanceof MetadataGadgetContext) {
$preloads = array();
foreach ($gadget->gadgetSpec->preloads as $key => $preload) {
if (!empty($preload['href']) && isset($responses[$preload['href']]) && $responses[$preload['href']]['rc'] == 200) {
$preloads[] = array_merge(array('id' => $preload['href']), $responses[$preload['href']]);
}
}
$gadget->gadgetSpec->preloads = $preloads;
//.........这里部分代码省略.........