예제 #1
0
 /**
  * Has
  * @param $key
  * @return bool
  */
 public function has($key)
 {
     if ($this->cacheDriver == "file") {
         return $this->cache->has($key);
     }
     return $this->cache->tags($this->tag)->has($key);
 }
예제 #2
0
 /**
  * Render weather widget.
  *
  * @param  array  $options
  * @return string
  */
 public function generate($options = array())
 {
     // Get options
     $options = array_merge($this->config['defaults'], $options);
     // Unify units
     $options['units'] = strtolower($options['units']);
     if (!in_array($options['units'], array('metric', 'imperial'))) {
         $options['units'] = 'imperial';
     }
     // Create cache key
     $cacheKey = 'Weather.' . md5(implode($options));
     // Check cache
     if ($this->config['cache'] && $this->cache->has($cacheKey)) {
         return $this->cache->get($cacheKey);
     }
     // Get current weather
     $current = $this->getWeather($options['query'], 0, $options['units'], 1);
     if ($current['cod'] !== 200) {
         return 'Unable to load weather';
     }
     // Get forecast
     $forecast = $this->getWeather($options['query'], $options['days'], $options['units']);
     // Render view
     $html = $this->view->make("{$this->config['views']}.{$options['style']}", array('current' => $current, 'forecast' => $forecast, 'units' => $options['units'], 'date' => $options['date']))->render();
     // Add to cache
     if ($this->config['cache']) {
         $this->cache->put($cacheKey, $html, $this->config['cache']);
     }
     return $html;
 }
예제 #3
0
 /**
  * Render the homepage view for displaying.
  *
  * @param  string $name
  * @return string
  */
 public function render($name, $subname = 'Home.Content')
 {
     if ($this->cache->has('home.content')) {
         $content = $this->cache->get('home.content');
     } else {
         $slides = App::make('Lib\\Slides\\SlideRepository')->get();
         $news = App::make('Lib\\News\\NewsRepository')->latest(8);
         $content = $this->view->make($subname)->with('slides', $slides)->with('news', $news)->with('categories', $this->getCategories())->render();
         $this->cache->put('home.content', $content, 2880);
     }
     return $this->view->make($name)->with('content', $content);
 }
예제 #4
0
 /**
  * Lookup an item in the API.
  *
  * @param string $item
  * @param array  $params
  *
  * @return object
  */
 public function lookup($id, $value = null, $params = array())
 {
     $cacheKey = $this->cacheKey('lookup', $this->getLookupParams($id, $value, $params));
     $cacheDuration = $this->iTunesConfig['cache'];
     if ($this->cache->has($cacheKey)) {
         return $this->cache->get($cacheKey);
     } else {
         return $this->cache->remember($cacheKey, $cacheDuration, function () use($id, $value, $params) {
             return json_encode(parent::lookup($id, $value, $params));
         });
     }
 }
예제 #5
0
 /**
  * Remove a locale from the cache.
  *
  * @param string $code
  */
 protected function removeCacheLocale($code)
 {
     $id = sprintf('translation.%s', $code);
     if ($this->cache->has($id)) {
         $this->cache->forget($id);
     }
 }
예제 #6
0
 /**
  * @return \Illuminate\Support\Collection
  */
 protected function compileScriptMaterial()
 {
     $files = new Collection();
     $this->layoutJsMaterial->merge($this->defaultJsMaterial)->merge($this->extendJsMaterial)->each(function ($value) use($files) {
         $files->push($this->findPath($value));
     });
     $code = md5($files);
     $this->dispatcher->listen('kernel.handled', function () use($code, $files) {
         $dictionary = new Collection();
         $dictionary->push($this->application->publicPath());
         $dictionary->push('cache');
         $dictionary = $this->pathSplit($code, '2,2,2,2,2,2', $dictionary);
         $dictionary = $dictionary->implode(DIRECTORY_SEPARATOR);
         if (!$this->files->isDirectory($dictionary)) {
             $this->files->makeDirectory($dictionary, 0755, true, true);
         }
         $file = $dictionary . DIRECTORY_SEPARATOR . Str::substr($code, 12, 20) . '.js';
         $key = 'cache.script.' . $code;
         if (!$this->files->exists($file) || !$this->cache->has($key) && $this->application->inDebugMode()) {
             $content = $this->compileScript($files);
             $expires = Carbon::now()->addMinutes(10);
             $this->cache->put($key, $content, $expires);
             file_put_contents($file, $content);
         }
     });
     return $this->pathSplit($code, '2,2,2,2,2,2,20', Collection::make(['cache']))->implode('/') . '.js';
 }
 /**
  * Return the price of an item using Steam's API
  *
  * @param  integer $appId
  * @param  string  $itemName
  * @param  bool    $onlyPrice Return only the lowest price
  * @return stdClass
  */
 public function getPrice($appId = 730, $itemName, $onlyPrice = false)
 {
     $cacheKey = 'steamprice.item.' . str_slug($itemName);
     // Check if item price is cached
     if ($this->cache->has($cacheKey)) {
         $data = $this->cache->get($cacheKey);
     } else {
         // Grab the item price and cache it
         $url = $this->getItemPriceUrl($itemName, $appId);
         // No result
         if (!($json = @file_get_contents($url))) {
             // Cache null for 30 seconds to not harass the Steam servers
             $this->cache->put($cacheKey, null, 30);
             return null;
         }
         $json = str_replace($this->currencyHtmlTags, '', $json);
         $data = json_decode($json);
         $this->cache->put($cacheKey, $data, Config::get('braseidon.steam-item-prices.cache_time'));
     }
     if ($onlyPrice === true) {
         $data = !isset($data->lowest_price) ? null : $data->lowest_price;
     }
     return $data;
 }
예제 #8
0
 /**
  * Check if the cache has a key
  *
  * @param string $key
  *
  * @return bool
  */
 public function has($key)
 {
     return $this->cache->has($key);
 }
 /**
  * @return bool
  */
 public function isCached()
 {
     return $this->getUseCache() && $this->cache->has($this->getCacheKey());
 }
 /**
  * Checks if a setting exists.
  *
  * @param  string  $key
  * @return boolean
  */
 public function has($key)
 {
     return (bool) $this->cache->has($this->key($key));
 }
예제 #11
0
 /**
  * Verify that the request hasn't been handled yet
  *
  * @return Boolean
  */
 protected function verifyHandled()
 {
     return !$this->cache->has($this->getCacheKey());
 }
 /**
  * forgetMenuMapByKey
  *
  * @param string $menuKey to forget on menu map
  *
  * @return void
  */
 public function forgetMenuMapByKey($menuKey)
 {
     $menuMap = [];
     if ($this->cache->has($this->menuMapKey)) {
         $oldMenuMap = $this->cache->get($this->menuMapKey);
         foreach ($oldMenuMap as $key => $value) {
             if ($key !== $menuKey && $key !== $value) {
                 $menuMap[$key] = $value;
             }
         }
     }
     $this->cache->forever($this->menuMapKey, $menuMap);
 }