forked from PrestaShop/PrestaShop
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch '1.6' of https://github.com/PrestaShop/PrestaShop into 1.6
- Loading branch information
Showing
8 changed files
with
206 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
<?php | ||
/* | ||
* 2007-2014 PrestaShop | ||
* | ||
* NOTICE OF LICENSE | ||
* | ||
* This source file is subject to the Open Software License (OSL 3.0) | ||
* that is bundled with this package in the file LICENSE.txt. | ||
* It is also available through the world-wide-web at this URL: | ||
* http://opensource.org/licenses/osl-3.0.php | ||
* If you did not receive a copy of the license and are unable to | ||
* obtain it through the world-wide-web, please send an email | ||
* to [email protected] so we can send you a copy immediately. | ||
* | ||
* DISCLAIMER | ||
* | ||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer | ||
* versions in the future. If you wish to customize PrestaShop for your | ||
* needs please refer to http://www.prestashop.com for more information. | ||
* | ||
* @author PrestaShop SA <[email protected]> | ||
* @copyright 2007-2014 PrestaShop SA | ||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) | ||
* International Registered Trademark & Property of PrestaShop SA | ||
*/ | ||
|
||
require_once(_PS_TOOL_DIR_.'smarty/Smarty.class.php'); | ||
|
||
class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom | ||
{ | ||
/** | ||
* fetch cached content and its modification time from data source | ||
* | ||
* @param string $id unique cache content identifier | ||
* @param string $name template name | ||
* @param string $cache_id cache id | ||
* @param string $compile_id compile id | ||
* @param string $content cached content | ||
* @param integer $mtime cache modification timestamp (epoch) | ||
* @return void | ||
*/ | ||
protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime) | ||
{ | ||
$row = Db::getInstance()->getRow('SELECT modified, content FROM '._DB_PREFIX_.'smarty_cache WHERE id = "'.pSQL($id, true).'"'); | ||
if ($row) | ||
{ | ||
$content = $row['content']; | ||
$mtime = strtotime($row['modified']); | ||
} | ||
else | ||
{ | ||
$content = null; | ||
$mtime = null; | ||
} | ||
} | ||
|
||
/** | ||
* Fetch cached content's modification timestamp from data source | ||
* | ||
* @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the complete cached content. | ||
* @param string $id unique cache content identifier | ||
* @param string $name template name | ||
* @param string $cache_id cache id | ||
* @param string $compile_id compile id | ||
* @return integer|boolean timestamp (epoch) the template was modified, or false if not found | ||
*/ | ||
protected function fetchTimestamp($id, $name, $cache_id, $compile_id) | ||
{ | ||
$value = Db::getInstance()->getValue('SELECT modified FROM '._DB_PREFIX_.'smarty_cache WHERE id = "'.pSQL($id, true).'"'); | ||
$mtime = strtotime($value); | ||
return $mtime; | ||
} | ||
|
||
/** | ||
* Save content to cache | ||
* | ||
* @param string $id unique cache content identifier | ||
* @param string $name template name | ||
* @param string $cache_id cache id | ||
* @param string $compile_id compile id | ||
* @param integer|null $exp_time seconds till expiration time in seconds or null | ||
* @param string $content content to cache | ||
* @return boolean success | ||
*/ | ||
protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content) | ||
{ | ||
Db::getInstance()->execute(' | ||
REPLACE INTO '._DB_PREFIX_.'smarty_cache (id, name, cache_id, compile_id, content) | ||
VALUES ( | ||
"'.pSQL($id, true).'", | ||
"'.pSQL($name, true).'", | ||
"'.pSQL($cache_id, true).'", | ||
"'.pSQL($compile_id, true).'", | ||
"'.pSQL($content, true).'" | ||
)'); | ||
|
||
return (bool)Db::getInstance()->Affected_Rows(); | ||
} | ||
|
||
/** | ||
* Delete content from cache | ||
* | ||
* @param string $name template name | ||
* @param string $cache_id cache id | ||
* @param string $compile_id compile id | ||
* @param integer|null $exp_time seconds till expiration or null | ||
* @return integer number of deleted caches | ||
*/ | ||
protected function delete($name, $cache_id, $compile_id, $exp_time) | ||
{ | ||
// delete the whole cache | ||
if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) { | ||
// returning the number of deleted caches would require a second query to count them | ||
Db::getInstance()->execute('TRUNCATE TABLE '._DB_PREFIX_.'smarty_cache'); | ||
return -1; | ||
} | ||
|
||
$where = array(); | ||
if ($name !== null) | ||
$where[] = 'name = "'.pSQL($name, true).'"'; | ||
if ($compile_id !== null) | ||
$where[] = 'compile_id = "'.pSQL($compile_id, true).'"'; | ||
if ($exp_time !== null) | ||
$where[] = 'modified < DATE_SUB(NOW(), INTERVAL '.(int)$exp_time.' SECOND)'; | ||
if ($cache_id !== null) | ||
$where[] = '(cache_id = "'.pSQL($cache_id, true).'" OR cache_id LIKE "'.pSQL($cache_id .'|%', true).'")'; | ||
|
||
Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'smarty_cache WHERE ' . implode(' AND ', $where)); | ||
return Db::getInstance()->Affected_Rows(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
SET NAMES 'utf8'; | ||
|
||
CREATE TABLE `PREFIX_smarty_cache` ( | ||
`id_smarty_cache` char(40) NOT NULL, | ||
`name` varchar(250) NOT NULL, | ||
`cache_id` varchar(250) DEFAULT NULL, | ||
`compile_id` varchar(250) DEFAULT NULL, | ||
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | ||
`content` longtext NOT NULL, | ||
PRIMARY KEY (`id`), | ||
KEY `name` (`name`), | ||
KEY `cache_id` (`cache_id`), | ||
KEY `compile_id` (`compile_id`), | ||
KEY `modified` (`modified`) | ||
) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; | ||
|
||
INSERT INTO `PREFIX_configuration` (`name` , `value` , `date_add` , `date_upd`) | ||
VALUES ('PS_SMARTY_CACHING_TYPE', 'filesystem', NOW(), NOW()); |