Esempio n. 1
0
 /**
  * Internal method to get capabilities of this adapter
  *
  * @return Capabilities
  */
 protected function internalGetCapabilities()
 {
     if ($this->capabilities === null) {
         $marker = new stdClass();
         $options = $this->getOptions();
         // detect metadata
         $metadata = array('mtime', 'filespec');
         if (!$options->getNoAtime()) {
             $metadata[] = 'atime';
         }
         if (!$options->getNoCtime()) {
             $metadata[] = 'ctime';
         }
         $capabilities = new Capabilities($this, $marker, array('supportedDatatypes' => array('NULL' => 'string', 'boolean' => 'string', 'integer' => 'string', 'double' => 'string', 'string' => true, 'array' => false, 'object' => false, 'resource' => false), 'supportedMetadata' => $metadata, 'minTtl' => 1, 'maxTtl' => 0, 'staticTtl' => false, 'ttlPrecision' => 1, 'expiredRead' => true, 'maxKeyLength' => 251, 'namespaceIsPrefix' => true, 'namespaceSeparator' => $options->getNamespaceSeparator()));
         // update capabilities on change options
         $this->getEventManager()->attach('option', function ($event) use($capabilities, $marker) {
             $params = $event->getParams();
             if (isset($params['namespace_separator'])) {
                 $capabilities->setNamespaceSeparator($marker, $params['namespace_separator']);
             }
             if (isset($params['no_atime']) || isset($params['no_ctime'])) {
                 $metadata = $capabilities->getSupportedMetadata();
                 if (isset($params['no_atime']) && !$params['no_atime']) {
                     $metadata[] = 'atime';
                 } elseif (isset($params['no_atime']) && ($index = array_search('atime', $metadata)) !== false) {
                     unset($metadata[$index]);
                 }
                 if (isset($params['no_ctime']) && !$params['no_ctime']) {
                     $metadata[] = 'ctime';
                 } elseif (isset($params['no_ctime']) && ($index = array_search('ctime', $metadata)) !== false) {
                     unset($metadata[$index]);
                 }
                 $capabilities->setSupportedMetadata($marker, $metadata);
             }
         });
         $this->capabilityMarker = $marker;
         $this->capabilities = $capabilities;
     }
     return $this->capabilities;
 }