Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
Conflicts:
	README.md
  • Loading branch information
davidkudera committed Jun 24, 2015
2 parents eb6377e + e921c82 commit 19c0cf8
Show file tree
Hide file tree
Showing 11 changed files with 433 additions and 117 deletions.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -448,8 +448,13 @@ All methods which returns images, returns `Carrooi\ImagesManager\Image` class.

# Changelog

* 2.1.0
+ Optimized caching
+ Refactored loading of default images
+ Storing loaded random default image [#3](https://github.com/Carrooi/Nette-ImagesManager/issues/3)

* 2.0.3
+ Using only forward slashes at urls #4
+ Using only forward slashes at urls [#4](https://github.com/Carrooi/Nette-ImagesManager/issues/4)

* 2.0.2
+ Names of namespaces configured in DI can now contain any character
Expand Down
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@
"nette/tester": "~1.4",
"nette/mail": "~2.2",
"nette/safe-stream": "~2.2",
"tracy/tracy": "~2.2"
"tracy/tracy": "~2.2",
"mockery/mockery": "~0.9.0"
},
"autoload": {
"psr-4": {
Expand Down
116 changes: 116 additions & 0 deletions src/CachedImagesStorage.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
<?php

namespace Carrooi\ImagesManager;

use Nette\Caching\IStorage;
use Nette\Caching\Cache;

/**
*
* @author David Kudera <[email protected]>
*/
class CachedImagesStorage extends MemoryImagesStorage
{


const CACHE_NAMESPACE = 'Carrooi.ImagesManager';


/** @var \Nette\Caching\Cache */
private $cache;


/**
* @param \Nette\Caching\IStorage $storage
*/
public function __construct(IStorage $storage)
{
$this->cache = new Cache($storage, self::CACHE_NAMESPACE);
}


/**
* @param string $namespace
* @param string $name
* @return string
*/
public function getFullName($namespace, $name)
{
$name = parent::getFullName($namespace, $name);

if ($name === null) {
$fullName = $this->cache->load('name/'. $namespace. '/'. $name);

if ($fullName) {
parent::storeAlias($namespace, $name, $fullName);
return $fullName;
}
}

return null;
}

/**
* @param string $namespace
* @param string $name
* @param string $fullName
*/
public function storeAlias($namespace, $name, $fullName)
{
parent::storeAlias($namespace, $name, $fullName);

$this->cache->save('name/'. $namespace. '/'. $name, $fullName, array(
Cache::TAGS => array($namespace. '/'. $fullName),
));
}


/**
* @param string $namespace
* @param string $fullName
*/
public function clear($namespace, $fullName)
{
parent::clear($namespace, $fullName);

$this->cache->clean(array(
Cache::TAGS => array($namespace. '/'. $fullName),
));
}


/**
* @param string $namespace
* @param string $name
* @return string
*/
public function getDefault($namespace, $name)
{
$default = parent::getDefault($namespace, $name);

if ($default === null) {
$default = $this->cache->load('default/'. $namespace. '/'. $name);

if ($default) {
parent::storeDefault($namespace, $name, $default);
return $default;
}
}

return null;
}


/**
* @param string $namespace
* @param string $name
* @param string $default
*/
public function storeDefault($namespace, $name, $default)
{
parent::storeDefault($namespace, $name, $default);

$this->cache->save('default/'. $namespace. '/'. $name, $default);
}

}
9 changes: 3 additions & 6 deletions src/DI/Extension.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ class Extension extends CompilerExtension
'quality' => null,
'basePath' => null,
'baseUrl' => null,
'caching' => true,
'mask' => array(
'images' => null,
'thumbnails' => null,
Expand All @@ -47,12 +46,14 @@ public function loadConfiguration()
$config = $this->getConfig($this->defaults);
$builder = $this->getContainerBuilder();

$builder->addDefinition($this->prefix('storage'))
->setClass('Carrooi\ImagesManager\MemoryImagesStorage');

$manager = $builder->addDefinition($this->prefix('manager'))
->setClass('Carrooi\ImagesManager\ImagesManager', array(
new Statement($config['nameResolver']),
$config['basePath'],
$config['baseUrl'],
$config['mask']['thumbnails'],
))
->addSetup('setHostFromUrl', array('@Nette\Http\Request::url'));

Expand All @@ -76,10 +77,6 @@ public function loadConfiguration()
$manager->addSetup('setThumbnailsMask', array($config['mask']['thumbnails']));
}

if ($config['caching']) {
$manager->addSetup('setCaching', array('@Nette\Caching\IStorage'));
}

$count = 1;
foreach ($config['namespaces'] as $name => $definition) {
$nameResolver = isset($definition['nameResolver']) ? $definition['nameResolver'] : $config['nameResolver'];
Expand Down
51 changes: 51 additions & 0 deletions src/IImagesStorage.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

namespace Carrooi\ImagesManager;

/**
*
* @author David Kudera <[email protected]>
*/
interface IImagesStorage
{


/**
* @param string $namespace
* @param string $name
* @return string
*/
public function getFullName($namespace, $name);


/**
* @param string $namespace
* @param string $name
* @param string $fullName
*/
public function storeAlias($namespace, $name, $fullName);


/**
* @param string $namespace
* @param string $fullName
*/
public function clear($namespace, $fullName);


/**
* @param string $namespace
* @param string $name
* @return string
*/
public function getDefault($namespace, $name);


/**
* @param string $namespace
* @param string $name
* @param string $default
*/
public function storeDefault($namespace, $name, $default);

}
Loading

0 comments on commit 19c0cf8

Please sign in to comment.