1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-01 20:30:39 +02:00

Fixes #4959 - Banner (e_menu) saving issue.

This commit is contained in:
camer0n
2023-11-20 03:49:37 -08:00
parent dcd1745bad
commit d5d40b9cc1
2 changed files with 45 additions and 34 deletions

View File

@@ -264,8 +264,9 @@ class e_menu
/**
* Saving of parms from e_menu.php configuration.
* @param int $id menu_id
* @param array $parms
* @param array $parms posted values.
* @return mixed
*/
public function updateParms($id, $parms)
@@ -275,35 +276,62 @@ class e_menu
$model->setFieldIdName("menu_id");
$model->setDataFields(array('menu_parms'=>'json'));
$model->load($id, true);
$d = $model->get('menu_parms');
$menu_path = $model->get('menu_path');
$menu_path = rtrim($menu_path, '/');
$model->setPostedData('menu_parms', e107::unserialize($d));
$menu_name = $model->get('menu_name');
$menu_name = substr($menu_name,0,-5);
foreach($parms as $key=>$value)
if(!$obj = e107::getAddon($menu_path,'e_menu'))
{
if(!is_array($value))
return false;
}
if(!$fields = e107::callMethod($obj,'config',$menu_name))
{
return false;
}
if($d = $model->get('menu_parms'))
{
$prev = e107::unserialize($d);
}
else
{
$prev = [];
}
foreach($fields as $fld => $var)
{
if(isset($parms[$fld]))
{
$model->setPostedData('menu_parms/'.$key, $value);
}
else
{
foreach($value as $lang => $val)
if(!empty($var['multilan']))
{
$model->setPostedData('menu_parms/'.$key.'/'.$lang, $val);
if(!empty($prev[$fld])) // load previous language values.
{
$model->setPostedData('menu_parms/'.$fld, $prev[$fld]);
}
foreach($parms[$fld] as $lang => $val) // add posted language values.
{
$model->setPostedData('menu_parms/'.$fld.'/'.$lang, $val);
}
}
else
{
$model->setPostedData('menu_parms/'.$fld, $parms[$fld]);
}
}
}
// file_put_contents(e_LOG."menuParmsAjax.log", print_r($parms,true));
return $model->save();
// return $model;
}

View File

@@ -1071,28 +1071,11 @@ class e_menuManager
$parms = $sql->escape(strip_tags($parms));
$check = $sql->update("menus", "menu_parms=\"".$parms."\" WHERE menu_id=".$id."");
}
else // e_menu.php
else // Save e_menu.php parameters.
{
unset($_POST['menu_id'], $_POST['mode'], $_POST['menuActivate'], $_POST['menuSetCustomPages'], $_POST['e-token']);
/* $tmp = $sql->retrieve("menus", "menu_parms", " menu_id=".$id);
$parms = !empty($tmp) ? e107::unserialize($tmp) : array();
foreach($_POST as $k=>$v)
{
$parms[$k] = $tp->filter($v);
}
$parms = e107::serialize($parms, 'json');*/
// if(e_DEBUG == true)
{
// return array('msg'=>print_r($parms,true),'error'=>true);
}
$parms = $_POST;
$check = e107::getMenu()->updateParms($id,$parms); //
$check = e107::getMenu()->updateParms($id,$parms);
}