Reputation: 3
Please some one help me i am new in magento When clicking Catalog->Manage products
Its leading me this error msg :
Notice: unserialize(): Error at offset 0 of 57 bytes in /var/www/vhosts/indelust.com/httpdocs/app/code/community/BL/CustomGrid/Model/Config/Abstract.php on line 227
My Abstract.php
<?php
/**
* Magento
*
* 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 Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Widget
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* 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
*
* @category BL
* @package BL_CustomGrid
* @copyright Copyright (c) 2012 Benoît Leulliette <[email protected]>
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
abstract class BL_CustomGrid_Model_Config_Abstract extends Varien_Object
{
protected $_acceptParameters = false;
abstract public function getConfigType();
public function getXmlConfig()
{
return Mage::getSingleton('customgrid/config')->getXmlConfig($this->getConfigType());
}
public function getXmlElementByCode($code)
{
$elements = $this->getXmlConfig()->getXpath($code);
if (is_array($elements) && isset($elements[0])
&& ($elements[0] instanceof Varien_Simplexml_Element)) {
return $elements[0];
}
return null;
}
public function getConfigAsXml($code)
{
return $this->getXmlElementByCode($code);
}
public function getElementsXml()
{
return $this->getXmlConfig()->getNode();
}
public function getConfigAsObject($code)
{
$xml = $this->getConfigAsXml($code);
$object = new Varien_Object();
if ($xml === null) {
return $object;
}
// Save all nodes to object data
$object->setCode($code);
$object->setData($xml->asCanonicalArray());
// Set module for translations etc..
$module = $object->getData('@/module');
$object->setModule($module ? $module : 'customgrid');
// Set type
$type = $object->getData('@/type');
$object->setType($type);
// Translate name, description and help
$helper = Mage::helper($object->getModule());
if ($object->hasName()) {
$object->setName($helper->__((string)$object->getName()));
}
if ($object->hasDescription()) {
$object->setDescription($helper->__((string)$object->getDescription()));
}
if ($object->hasHelp()) {
$object->setHelp($helper->__((string)$object->getHelp()));
}
if ($this->_acceptParameters) {
// Correct element parameters and convert its data to objects if needed
$params = $object->getData('parameters');
$newParams = array();
if (is_array($params)) {
$sortOrder = 0;
foreach ($params as $key => $data) {
if (is_array($data)) {
$data['key'] = $key;
$data['sort_order'] = (isset($data['sort_order']) ? (int)$data['sort_order'] : $sortOrder);
// Prepare values (for dropdowns) specified directly in configuration
$values = array();
if (isset($data['values']) && is_array($data['values'])) {
foreach ($data['values'] as $value) {
if (isset($value['label']) && isset($value['value'])) {
$values[] = $value;
}
}
}
$data['values'] = $values;
// Prepare helper block object
if (isset($data['helper_block'])) {
$helper = new Varien_Object();
if (isset($data['helper_block']['data']) && is_array($data['helper_block']['data'])) {
$helper->addData($data['helper_block']['data']);
}
if (isset($data['helper_block']['type'])) {
$helper->setType($data['helper_block']['type']);
}
$data['helper_block'] = $helper;
}
$newParams[$key] = new Varien_Object($data);
$sortOrder++;
}
}
}
uasort($newParams, array($this, '_sortParameters'));
$object->setData('parameters', $newParams);
}
return $object;
}
public function getElementArrayValues($element, $values, $helper)
{
return array();
}
public function getElementsArray()
{
if (!$this->_getData('elements_array')) {
$result = array();
if ($this->getElementsXml()) {
foreach ($this->getElementsXml()->children() as $element) {
$helper = ($element->getAttribute('module') ? $element->getAttribute('module') : 'customgrid');
$helper = Mage::helper($helper);
$values = array(
'code' => $element->getName(),
'type' => $element->getAttribute('type'),
'name' => $helper->__((string)$element->name),
'help' => $helper->__((string)$element->help),
'sort_order' => (int)$element->sort_order,
'description' => $helper->__((string)$element->description),
'is_customizable' => $this->_acceptParameters,
);
$result[$element->getName()] = array_merge(
$values,
$this->getElementArrayValues($element, $values, $helper)
);
}
}
uasort($result, array($this, '_sortElements'));
$this->setData('elements_array', $result);
}
return $this->_getData('elements_array');
}
public function getElementInstanceByCode($code, $params=null)
{
if ($element = $this->getXmlElementByCode($code)) {
if (!$this->_acceptParameters) {
$instance = Mage::getSingleton($element->getAttribute('type'));
} else {
$instance = Mage::getModel($element->getAttribute('type'));
if ($instance && !is_null($params)) {
if (is_array($params = $this->decodeParameters($params))) {
$instance->addData($params);
}
}
}
$helper = ($element->getAttribute('module') ? $element->getAttribute('module') : 'customgrid');
$helper = Mage::helper($helper);
$instance->setCode($code);
$instance->setName($helper->__((string)$element->name));
return $instance;
}
return null;
}
public function encodeParameters($parameters)
{
if (is_array($parameters)) {
return serialize($parameters);
}
return $parameters;
}
public function decodeParameters($parameters, $forceArray=false)
{
if (is_string($parameters)) {
$parameters = unserialize($parameters);
}
return ($forceArray && !is_array($parameters) ? array() : $parameters);
}
protected function _sortElements($a, $b)
{
$aOrder = $a['sort_order'];
$bOrder = $b['sort_order'];
return ($aOrder < $bOrder
? -1 : ($aOrder > $bOrder ? 1 : strcmp($a['name'], $b['name'])));
}
protected function _sortParameters($a, $b)
{
$aOrder = (int)$a->getData('sort_order');
$bOrder = (int)$b->getData('sort_order');
return ($aOrder < $bOrder ? -1 : ($aOrder > $bOrder ? 1 : 0));
}
}
Upvotes: 0
Views: 1330
Reputation: 1686
Change line 227 from
$parameters = unserialize($parameters);
to
$parameters = (@unserialize($parameters) === false) ? '' : unserialize($parameters);
Upvotes: 0
Reputation: 1607
It is difficult to say what is the problem in your current situation. However, such an error message appears when the string passed as argument to the unserialize
function is not a serialized object (or probably a serialized array in your case). Try to echo
or log the arguments, that should help you.
Upvotes: 0