[-] BO : Fix bug #PSCFI-6902 fatal error when memcache not installed and Memcached previously activated

This commit is contained in:
gRoussac committed 2013-01-30 16:28:11 +01:00
1 parent bf9b1de873
commit d74f9c837b
3 files changed
+19 -5

No files matched your search

+8 -2
View File
@@ -46,8 +46,10 @@ class CacheMemcacheCore extends Cache
// Get keys (this code comes from Doctrine 2 project) // Get keys (this code comes from Doctrine 2 project)
$this->keys = array(); $this->keys = array();
$servers = self::getMemcachedServers();
if(is_array($servers) && count($servers) > 0)
$all_slabs = $this->memcache->getExtendedStats('slabs'); $all_slabs = $this->memcache->getExtendedStats('slabs');
if(isset($all_slabs) && is_array($all_slabs))
foreach ($all_slabs as $server => $slabs) foreach ($all_slabs as $server => $slabs)
{ {
if (is_array($slabs)) if (is_array($slabs))
@@ -78,8 +80,12 @@ class CacheMemcacheCore extends Cache
*/ */
public function connect() public function connect()
{ {
if (class_exists('Memcache') && extension_loaded('memcache'))
$this->memcache = new Memcache(); $this->memcache = new Memcache();
$servers = CacheMemcache::getMemcachedServers(); else
return false;
$servers = self::getMemcachedServers();
if (!$servers) if (!$servers)
return false; return false;
foreach ($servers as $server) foreach ($servers as $server)
+8 -1
View File
@@ -2192,9 +2192,10 @@ class AdminControllerCore extends Controller
$class_name = $this->className; $class_name = $this->className;
/* Class specific validation rules */ /* Class specific validation rules */
if (!empty($class_name))
$rules = call_user_func(array($class_name, 'getValidationRules'), $class_name); $rules = call_user_func(array($class_name, 'getValidationRules'), $class_name);
if ((count($rules['requiredLang']) || count($rules['sizeLang']) || count($rules['validateLang']))) if (isset($rules) && count($rules) && (count($rules['requiredLang']) || count($rules['sizeLang']) || count($rules['validateLang'])))
{ {
/* Language() instance determined by default language */ /* Language() instance determined by default language */
$default_language = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $default_language = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
@@ -2204,6 +2205,7 @@ class AdminControllerCore extends Controller
} }
/* Checking for required fields */ /* Checking for required fields */
if (isset($rules['required']) && is_array($rules['required']))
foreach ($rules['required'] as $field) foreach ($rules['required'] as $field)
if (($value = Tools::getValue($field)) == false && (string)$value != '0') if (($value = Tools::getValue($field)) == false && (string)$value != '0')
if (!Tools::getValue($this->identifier) || ($field != 'passwd' && $field != 'no-picture')) if (!Tools::getValue($this->identifier) || ($field != 'passwd' && $field != 'no-picture'))
@@ -2213,6 +2215,7 @@ class AdminControllerCore extends Controller
); );
/* Checking for multilingual required fields */ /* Checking for multilingual required fields */
if (isset($rules['requiredLang']) && is_array($rules['requiredLang']))
foreach ($rules['requiredLang'] as $field_lang) foreach ($rules['requiredLang'] as $field_lang)
if (($empty = Tools::getValue($field_lang.'_'.$default_language->id)) === false || $empty !== '0' && empty($empty)) if (($empty = Tools::getValue($field_lang.'_'.$default_language->id)) === false || $empty !== '0' && empty($empty))
$this->errors[] = sprintf( $this->errors[] = sprintf(
@@ -2222,6 +2225,7 @@ class AdminControllerCore extends Controller
); );
/* Checking for maximum fields sizes */ /* Checking for maximum fields sizes */
if (isset($rules['size']) && is_array($rules['size']))
foreach ($rules['size'] as $field => $max_length) foreach ($rules['size'] as $field => $max_length)
if (Tools::getValue($field) !== false && Tools::strlen(Tools::getValue($field)) > $max_length) if (Tools::getValue($field) !== false && Tools::strlen(Tools::getValue($field)) > $max_length)
$this->errors[] = sprintf( $this->errors[] = sprintf(
@@ -2231,6 +2235,7 @@ class AdminControllerCore extends Controller
); );
/* Checking for maximum multilingual fields size */ /* Checking for maximum multilingual fields size */
if (isset($rules['sizeLang']) && is_array($rules['sizeLang']))
foreach ($rules['sizeLang'] as $field_lang => $max_length) foreach ($rules['sizeLang'] as $field_lang => $max_length)
foreach ($languages as $language) foreach ($languages as $language)
{ {
@@ -2247,6 +2252,7 @@ class AdminControllerCore extends Controller
$this->_childValidation(); $this->_childValidation();
/* Checking for fields validity */ /* Checking for fields validity */
if (isset($rules['validate']) && is_array($rules['validate']))
foreach ($rules['validate'] as $field => $function) foreach ($rules['validate'] as $field => $function)
if (($value = Tools::getValue($field)) !== false && ($field != 'passwd')) if (($value = Tools::getValue($field)) !== false && ($field != 'passwd'))
if (!Validate::$function($value) && !empty($value)) if (!Validate::$function($value) && !empty($value))
@@ -2271,6 +2277,7 @@ class AdminControllerCore extends Controller
} }
/* Checking for multilingual fields validity */ /* Checking for multilingual fields validity */
if (isset($rules['validateLang']) && is_array($rules['validateLang']))
foreach ($rules['validateLang'] as $field_lang => $function) foreach ($rules['validateLang'] as $field_lang => $function)
foreach ($languages as $language) foreach ($languages as $language)
if (($value = Tools::getValue($field_lang.'_'.$language['id_lang'])) !== false && !empty($value)) if (($value = Tools::getValue($field_lang.'_'.$language['id_lang'])) !== false && !empty($value))
@@ -725,6 +725,7 @@ class AdminPerformanceControllerCore extends AdminController
$cache_active = 0; $cache_active = 0;
else else
$cache_active = 1; $cache_active = 1;
if (!$caching_system = Tools::getValue('caching_system')) if (!$caching_system = Tools::getValue('caching_system'))
$this->errors[] = Tools::displayError('Caching system is missing'); $this->errors[] = Tools::displayError('Caching system is missing');
else else
@@ -733,6 +734,7 @@ class AdminPerformanceControllerCore extends AdminController
'define(\'_PS_CACHING_SYSTEM_\', \''.$caching_system.'\');', 'define(\'_PS_CACHING_SYSTEM_\', \''.$caching_system.'\');',
$new_settings $new_settings
); );
if ($cache_active && $caching_system == 'CacheMemcache' && !extension_loaded('memcache')) if ($cache_active && $caching_system == 'CacheMemcache' && !extension_loaded('memcache'))
$this->errors[] = Tools::displayError('To use Memcached, you must install the Memcache PECL extension on your server.').' $this->errors[] = Tools::displayError('To use Memcached, you must install the Memcache PECL extension on your server.').'
<a href="http://www.php.net/manual/en/memcache.installation.php">http://www.php.net/manual/en/memcache.installation.php</a>'; <a href="http://www.php.net/manual/en/memcache.installation.php">http://www.php.net/manual/en/memcache.installation.php</a>';
@@ -778,8 +780,7 @@ class AdminPerformanceControllerCore extends AdminController
else else
$this->errors[] = Tools::displayError('You do not have permission to edit here.'); $this->errors[] = Tools::displayError('You do not have permission to edit here.');
} }
if ($redirecAdmin && (!isset($this->errors) || !count($this->errors)))
if ($redirecAdmin)
Tools::redirectAdmin(self::$currentIndex.'&token='.Tools::getValue('token').'&conf=4'); Tools::redirectAdmin(self::$currentIndex.'&token='.Tools::getValue('token').'&conf=4');
else else
return parent::postProcess(); return parent::postProcess();