Return all the collections in the syncCache.
public getCollections ( boolean $requireKey = true ) : array | ||
$requireKey | boolean | If true, only return collections with an existing synckey in the cache. Otherwise return all collections. |
return | array |
/** * Force reset all collection's PINGABLE flag. Used to force client * to issue a non-empty PING request. * */ public function resetPingCache() { $collections = $this->_cache->getCollections(false); foreach ($collections as $id => $collection) { $this->_logger->info(sprintf('UNSETTING collection %s (%s) PINGABLE flag.', $collection['serverid'], $id)); $this->_cache->removePingableCollection($id); } }
/** */ public function display(Horde_Core_Prefs_Ui $ui) { global $injector, $page_output, $prefs, $registry; try { $state = $injector->getInstance('Horde_ActiveSyncState'); } catch (Horde_Exception $e) { return _("ActiveSync not activated."); } $devices = $state->listDevices($registry->getAuth()); $view = new Horde_View(array('templatePath' => array(HORDE_TEMPLATES . '/prefs', HORDE_TEMPLATES . '/activesync'))); $view->addHelper('Tag'); $view->isAdmin = false; $selfurl = $ui->selfUrl(); $view->reset = $selfurl->copy()->add('reset', 1); $devs = array(); $js = array(); $collections = array(); foreach ($devices as $device) { $dev = $state->loadDeviceInfo($device['device_id'], $registry->getAuth()); try { $dev = $GLOBALS['injector']->getInstance('Horde_Core_Hooks')->callHook('activesync_device_modify', 'horde', array($dev)); } catch (Horde_Exception_HookNotSet $e) { } $js[$dev->id . ':' . $registry->getAuth()] = array('id' => $dev->id, 'user' => $dev->user); $syncCache = new Horde_ActiveSync_SyncCache($state, $dev->id, $dev->user, $injector->getInstance('Horde_Log_Logger')); $dev->hbinterval = $syncCache->hbinterval ? $syncCache->hbinterval : ($syncCache->wait ? $syncCache->wait * 60 : _("Unavailable")); $devs[] = $dev; $collection = array(); foreach ($syncCache->getCollections() as $id => $c) { $collection[] = array(_("Collection id") => $id, _("Class") => $c['class'], _("Server Id") => $c['serverid'], _("Last synckey") => $c['lastsynckey']); } $collections[] = $collection; } $view->collections = $collections; // Identities if (!$prefs->isLocked('activesync_identity')) { $ident = $GLOBALS['injector']->getInstance('Horde_Core_Factory_Identity')->create($registry->getAuth()); $view->identities = $ident->getAll('id'); $view->identities['horde'] = _("Use Horde Default"); $view->default = $prefs->getValue('activesync_identity'); if (is_null($view->default)) { $view->default = $prefs->getValue('default_identity'); } } $page_output->addScriptFile('activesyncprefs.js', 'horde'); $page_output->addInlineJsVars(array('HordeActiveSyncPrefs.devices' => $js)); $view->devices = $devs; return $view->render('activesync'); }
$view->addHelper('Tag'); $selfurl = Horde::selfUrl(); $view->reset = $selfurl->copy()->add('reset', 1); $devs = array(); $js = array(); $collections = array(); foreach (array_values($devices) as $device) { $dev = $state->loadDeviceInfo($device['device_id'], $device['device_user']); try { $dev = $GLOBALS['injector']->getInstance('Horde_Core_Hooks')->callHook('activesync_device_modify', 'horde', array($dev)); } catch (Horde_Exception_HookNotSet $e) { } $syncCache = new Horde_ActiveSync_SyncCache($state, $dev->id, $dev->user, $injector->getInstance('Horde_Log_Logger')); $dev->hbinterval = $syncCache->hbinterval ? $syncCache->hbinterval : ($syncCache->wait ? $syncCache->wait * 60 : _("Unavailable")); $js[$dev->id . ':' . $dev->user] = array('id' => $dev->id, 'user' => $dev->user); $devs[] = $dev; $collection = array(); foreach ($syncCache->getCollections() as $id => $c) { $collection[] = array(_("Collection id") => $id, _("Class") => $c['class'], _("Server Id") => $c['serverid'], _("Last synckey") => $c['lastsynckey']); } $collections[] = $collection; } $view->devices = $devs; $view->collections = $collections; $view->isAdmin = true; $page_output->header(array('title' => _("ActiveSync Administration"))); require HORDE_TEMPLATES . '/admin/menu.inc'; $page_output->addScriptFile('activesyncadmin.js', 'horde'); $page_output->addInlineJsVars(array('HordeActiveSyncAdmin.devices' => $js)); echo $view->render('activesync'); echo $page_output->footer();
protected function _testCacheRefreshCollections() { $cache = new Horde_ActiveSync_SyncCache(self::$state, 'dev123', 'mike', self::$logger->getLogger()); $newcache = new Horde_ActiveSync_SyncCache(self::$state, 'dev123', 'mike', self::$logger->getLogger()); $newcache->updateCollection(array('id' => '519422f1-4c5c-4547-946a-1701c0a8015f', 'newsynckey' => '{51941e99-0b9c-41f8-b678-1532c0a8015f}3'), array('newsynckey' => true)); sleep(1); $newcache->save(); $cache->refreshCollections(); $collection = $cache->getCollections(); $this->assertEquals($collection['519422f1-4c5c-4547-946a-1701c0a8015f']['lastsynckey'], '{51941e99-0b9c-41f8-b678-1532c0a8015f}3'); // Test timestamp $this->assertEquals(false, $cache->validateCache()); }