Пример #1
0
 /**
  * Make a control key with the string containing datas
  *
  * @param  string $data        Data
  * @param  string $controlType Type of control 'md5', 'crc32' or 'strlen'
  * @throws \Micro\Cache\Exception
  * @return string Control key
  */
 protected function _hash($data, $controlType)
 {
     switch ($controlType) {
         case 'md5':
             return md5($data);
         case 'crc32':
             return crc32($data);
         case 'strlen':
             return strlen($data);
         case 'adler32':
             return hash('adler32', $data);
         default:
             Cache::throwException("Incorrect hash function : {$controlType}");
     }
 }
Пример #2
0
 /**
  * Determine system TMP directory and detect if we have read access
  * @return string
  * @throws \Micro\Cache\Exception if unable to determine directory
  */
 public function getTmpDir()
 {
     $tmpdir = array();
     foreach (array($_ENV, $_SERVER) as $tab) {
         foreach (array('TMPDIR', 'TEMP', 'TMP', 'windir', 'SystemRoot') as $key) {
             if (isset($tab[$key]) && is_string($tab[$key])) {
                 if ($key == 'windir' or $key == 'SystemRoot') {
                     $dir = realpath($tab[$key] . '\\temp');
                 } else {
                     $dir = realpath($tab[$key]);
                 }
                 if ($this->_isGoodTmpDir($dir)) {
                     return $dir;
                 }
             }
         }
     }
     $upload = ini_get('upload_tmp_dir');
     if ($upload) {
         $dir = realpath($upload);
         if ($this->_isGoodTmpDir($dir)) {
             return $dir;
         }
     }
     if (function_exists('sys_get_temp_dir')) {
         $dir = sys_get_temp_dir();
         if ($this->_isGoodTmpDir($dir)) {
             return $dir;
         }
     }
     // Attemp to detect by creating a temporary file
     $tempFile = tempnam(md5(uniqid(rand(), TRUE)), '');
     if ($tempFile) {
         $dir = realpath(dirname($tempFile));
         unlink($tempFile);
         if ($this->_isGoodTmpDir($dir)) {
             return $dir;
         }
     }
     if ($this->_isGoodTmpDir('/tmp')) {
         return '/tmp';
     }
     if ($this->_isGoodTmpDir('\\temp')) {
         return '\\temp';
     }
     Cache::throwException('Could not determine temp directory, please specify a cache_dir manually');
 }
Пример #3
0
 /**
  * Validate a tags array (security, reliable filenames, reserved prefixes...)
  *
  * Throw an exception if a problem is found
  *
  * @param  array $tags Array of tags
  * @throws \Micro\Cache\Exception
  * @return void
  */
 protected static function _validateTagsArray($tags)
 {
     if (!is_array($tags)) {
         Cache::throwException('Invalid tags array : must be an array');
     }
     foreach ($tags as $tag) {
         self::_validateIdOrTag($tag);
     }
     reset($tags);
 }