diff --git a/e107_handlers/core_functions.php b/e107_handlers/core_functions.php
index 22719d220..f62219b7e 100644
--- a/e107_handlers/core_functions.php
+++ b/e107_handlers/core_functions.php
@@ -422,6 +422,11 @@ class e_array {
if ($ArrayData == ""){
return false;
}
+
+ if(is_array($ArrayData))
+ {
+ return false;
+ }
// Saftety mechanism for 0.7 -> 0.8 transition.
if(substr($ArrayData,0,2)=='a:' || substr($ArrayData,0,2)=='s:')
@@ -429,12 +434,19 @@ class e_array {
$dat = unserialize($ArrayData);
$ArrayData = $this->WriteArray($dat,FALSE);
}
-
+
+ $ArrayData = trim($ArrayData);
+
+ if(strtolower(substr($ArrayData,0,5)) != 'array')
+ {
+ return false;
+ }
$data = "";
- $ArrayData = '$data = '.trim($ArrayData).';';
+ $ArrayData = '$data = '.$ArrayData.';';
@eval($ArrayData);
- if (!isset($data) || !is_array($data)) {
+ if (!isset($data) || !is_array($data))
+ {
trigger_error("Bad stored array data -
".htmlentities($ArrayData), E_USER_ERROR);
return false;
}
diff --git a/e107_handlers/menu_class.php b/e107_handlers/menu_class.php
index 429294e7f..222bb149c 100644
--- a/e107_handlers/menu_class.php
+++ b/e107_handlers/menu_class.php
@@ -133,7 +133,7 @@ class e_menu
/**
- * V2 Menu Re-Write - retrieve Menu data from $pref['menu_layouts']
+ * Experimental V2 Menu Re-Write - retrieve Menu data from $pref['menu_layouts']
*/
protected function getData($layout)
{
@@ -187,8 +187,7 @@ class e_menu
/**
- * @DEPRECATED
- * Legacy Function to retrieve Menu data from tables.
+ * Function to retrieve Menu data from tables.
*/
private function getDataLegacy()
{
@@ -201,6 +200,7 @@ class e_menu
$menu_data = e107::getCache()->retrieve_sys("menus_".USERCLASS_LIST."_".md5(e_LANGUAGE.$menu_layout_field));
// $menu_data = e107::getCache()->retrieve_sys("menus_".USERCLASS_LIST);
$menu_data = e107::getArrayStorage()->ReadArray($menu_data);
+ // $menu_data = e107::getArrayStorage()->ReadArray($menu_data);
$eMenuArea = array();
// $eMenuList = array();
@@ -406,14 +406,20 @@ class e_menu
$e107 = e107::getInstance();
$sql = e107::getDb();
$ns = e107::getRender();
- $tp = e107::getParser();
+ $tp = e107::getParser();
+
+ if($tmp = e107::unserialize($parm)) // support e_menu.php e107 serialized parm.
+ {
+ $parm = $tmp;
+ unset($tmp);
+ }
if($return)
{
ob_start();
}
- if(vartrue($error_handler->debug))
+ if(e_DEBUG === true)
{
echo "\n\n";
}
diff --git a/e107_handlers/menumanager_class.php b/e107_handlers/menumanager_class.php
index 21d085823..a5689c096 100644
--- a/e107_handlers/menumanager_class.php
+++ b/e107_handlers/menumanager_class.php
@@ -559,7 +559,18 @@ class e_menuManager {
$obj = e107::getAddon($plug,'e_menu');
- $fields = e107::callMethod($obj,'config');
+ if(!is_object($obj))
+ {
+ $text .= "
{$plug} object not found. Try re-scanning plugin directories in Tools > Database. |
";
+ }
+ else
+ {
+
+ $menuName = substr($row['menu_name'],0,-5);
+ }
+
+
+ $fields = e107::callMethod($obj,'config',$menuName);
if(!$form = e107::getAddon($plug,'e_menu',$plug."_menu_form"))
{
@@ -568,11 +579,30 @@ class e_menuManager {
$value = e107::unserialize($row['menu_parms']);
- foreach($fields as $k=>$v)
+ if(!empty($fields))
{
- $text .= "".$v['title']." | ";
- $v['writeParms']['class'] = 'e-save';
- $text .= "".$form->renderElement($k, $value[$k], $v)." |
";
+ foreach($fields as $k=>$v)
+ {
+ $text .= "".$v['title']." | ";
+ $v['writeParms']['class'] = 'e-save';
+ $i = $k;
+ if(!empty($v['multilan']))
+ {
+ $i = $k.'['.e_LANGUAGE.']';
+
+ if(isset($value[$k][e_LANGUAGE]))
+ {
+ $value[$k] = varset($value[$k][e_LANGUAGE],'');
+ }
+
+ }
+
+ $text .= "".$form->renderElement($i, $value[$k], $v)." |
";
+ }
+ }
+ else
+ {
+ $text .= "No Fields Set in ".$row['menu_path']."e_menu.php |
";
}
}
diff --git a/e107_languages/English/admin/lan_admin.php b/e107_languages/English/admin/lan_admin.php
index 662c4067a..37965474f 100644
--- a/e107_languages/English/admin/lan_admin.php
+++ b/e107_languages/English/admin/lan_admin.php
@@ -421,4 +421,7 @@ define("LAN_GEN_PW", "Generate a password");
define("LAN_DISPL_PW", "Display the password");
define("LAN_WILL_OVERWRITE_SEF", "This will overwrite your existing SEF URL.");
+define("LAN_CAPTION", "Caption");
+define("LAN_LIMIT", "Limit");
+
// TODO - move e_form related LANS below, add new lan_form.php file (for both front/back-end)
diff --git a/e107_plugins/banner/banner_menu.php b/e107_plugins/banner/banner_menu.php
index ce3fed5e2..d5b9eaa5d 100644
--- a/e107_plugins/banner/banner_menu.php
+++ b/e107_plugins/banner/banner_menu.php
@@ -50,13 +50,20 @@ else
if(!empty($parm))
{
- if(!$tmp = e107::unserialize($parm)) // unserailize the v2.x e_menu.php preferences.
+ if(is_string($parm)) // unserailize the v2.x e_menu.php preferences.
{
parse_str($parm, $parms); // if it fails, use legacy method. (query string format)
}
- else // prefs unserialized so overwrite the legacy preference values.
+ elseif(is_array($parm)) // prefs array so overwrite the legacy preference values.
{
- $menu_pref = $tmp;
+ if(isset($parm['banner_caption'][e_LANGUAGE]))
+ {
+ $parm['banner_caption'] = $parm['banner_caption'][e_LANGUAGE];
+ }
+
+ $menu_pref = $parm;
+
+
$menu_pref['banner_campaign'] = implode("|",$menu_pref['banner_campaign']);
unset($parm);
}
diff --git a/e107_plugins/banner/e_menu.php b/e107_plugins/banner/e_menu.php
index 445ecc7e4..5c26cd989 100644
--- a/e107_plugins/banner/e_menu.php
+++ b/e107_plugins/banner/e_menu.php
@@ -26,12 +26,12 @@ class banner_menu
* Configuration Fields.
* @return array
*/
- public function config()
+ public function config($menu='')
{
$renderTypes = array(BNRLAN_48,'1 - '.BNRLAN_45,'2 - '.BNRLAN_46, "3 - ".BNRLAN_47);
$fields = array();
- $fields['banner_caption'] = array('title'=> BNRLAN_37, 'type'=>'text', 'writeParms'=>array('size'=>'xxlarge'));
+ $fields['banner_caption'] = array('title'=> BNRLAN_37, 'type'=>'text', 'multilan'=>true, 'writeParms'=>array('size'=>'xxlarge'));
$fields['banner_campaign'] = array('title'=> BNRLAN_39, 'type'=>'method');
$fields['banner_amount'] = array('title'=> BNRLAN_41, 'type'=>'text', 'writeParms'=>array('pattern'=>'[0-9]*'));
$fields['banner_rendertype'] = array('title'=> BNRLAN_43, 'type'=>'dropdown', 'writeParms'=>array('optArray'=>$renderTypes));
diff --git a/e107_plugins/news/e_menu.php b/e107_plugins/news/e_menu.php
index 13141b82c..ffa11f74f 100644
--- a/e107_plugins/news/e_menu.php
+++ b/e107_plugins/news/e_menu.php
@@ -14,29 +14,61 @@ if (!defined('e107_INIT')) { exit; }
//v2.x Standard for extending menu configuration within Menu Manager. (replacement for v1.x config.php)
//TODO Configure for news menus.
-class newsTODO_menu
+class news_menu
{
+
function __construct()
{
- e107::lan('news','admin', 'true');
+ // e107::lan('news','admin', 'true');
}
-
/**
* Configuration Fields.
* @return array
*/
- public function config()
+ public function config($menu='')
{
- $renderTypes = array(BNRLAN_48,'1 - '.BNRLAN_45,'2 - '.BNRLAN_46, "3 - ".BNRLAN_47);
-
$fields = array();
- $fields['caption'] = array('title'=> BNRLAN_37, 'type'=>'text', 'writeParms'=>array('size'=>'xxlarge'));
- $fields['count'] = array('title'=> BNRLAN_39, 'type'=>'method');
- $fields['order'] = array('title'=> BNRLAN_41, 'type'=>'text', 'writeParms'=>array('pattern'=>'[0-9]*'));
- $fields['category'] = array('title'=> BNRLAN_43, 'type'=>'dropdown', 'writeParms'=>array('optArray'=>$renderTypes));
+ $categories = array();
+
+ $tmp = e107::getDb()->retrieve('news_category','category_id,category_name',null, true);
+
+ foreach($tmp as $val)
+ {
+ $id = $val['category_id'];
+ $categories[$id] = $val['category_name'];
+ }
+
+ switch($menu)
+ {
+ case "latestnews":
+ $fields['caption'] = array('title'=> LAN_CAPTION, 'type'=>'text', 'multilan'=>true, 'writeParms'=>array('size'=>'xxlarge'));
+ $fields['count'] = array('title'=> LAN_LIMIT, 'type'=>'text', 'writeParms'=>array('pattern'=>'[0-9]*', 'size'=>'mini'));
+ $fields['category'] = array('title'=> LAN_CATEGORY, 'type'=>'dropdown', 'writeParms'=>array('optArray'=>$categories, 'default'=>'blank'));
+ break;
+
+
+ case "news_categories":
+ $fields['caption'] = array('title'=> LAN_CAPTION, 'type'=>'text', 'multilan'=>true, 'writeParms'=>array('size'=>'xxlarge'));
+ $fields['count'] = array('title'=> LAN_LIMIT, 'type'=>'text', 'writeParms'=>array('pattern'=>'[0-9]*'));
+ break;
+
+ case "news_months":
+ $fields['showarchive'] = array('title'=> "Display Archive Link", 'type'=>'boolean');
+ $fields['year'] = array('title'=> "Year", 'type'=>'text', 'writeParms'=>array('pattern'=>'[0-9]*', 'size'=>'mini'));
+ break;
+
+ case "other_news":
+ case "other_news2":
+ $fields['caption'] = array('title'=> LAN_CAPTION, 'type'=>'text', 'multilan'=>true, 'writeParms'=>array('size'=>'xxlarge'));
+ break;
+
+ }
+
+ return $fields;
+
+
- return $fields;
}
diff --git a/e107_plugins/news/latestnews_menu.php b/e107_plugins/news/latestnews_menu.php
index fedf7242d..30a74272e 100644
--- a/e107_plugins/news/latestnews_menu.php
+++ b/e107_plugins/news/latestnews_menu.php
@@ -7,13 +7,26 @@
*/
if (!defined('e107_INIT')) { exit; }
-$cacheString = 'nq_news_latest_menu_'.md5($parm);
+$cacheString = 'nq_news_latest_menu_'.md5(serialize($parm));
$cached = e107::getCache()->retrieve($cacheString);
if(false === $cached)
{
e107::plugLan('news');
- parse_str($parm, $parms);
+ if(is_string($parm))
+ {
+ parse_str($parm, $parms);
+ }
+ else
+ {
+ $parms = $parm;
+ }
+
+ if(isset($parms['caption'][e_LANGUAGE]))
+ {
+ $parms['caption'] = $parms['caption'][e_LANGUAGE];
+ }
+
$ntree = e107::getObject('e_news_tree', null, e_HANDLER.'news_class.php');
$template = e107::getTemplate('news', vartrue($parms['tmpl'], 'news_menu'), vartrue($parms['tmpl_key'], 'latest'));
diff --git a/e107_plugins/news/news_categories_menu.php b/e107_plugins/news/news_categories_menu.php
index 4f7014679..64be85958 100644
--- a/e107_plugins/news/news_categories_menu.php
+++ b/e107_plugins/news/news_categories_menu.php
@@ -14,7 +14,15 @@ if(false === $cached)
{
e107::plugLan('news');
- parse_str($parm, $parms);
+ if(is_string($parm))
+ {
+ parse_str($parm, $parms);
+ }
+ else
+ {
+ $parms = $parm;
+ }
+
$ctree = e107::getObject('e_news_category_tree', null, e_HANDLER.'news_class.php');
$template = e107::getTemplate('news', 'news_menu', 'category');
diff --git a/e107_plugins/news/news_months_menu.php b/e107_plugins/news/news_months_menu.php
index 664de24ab..48f17abf0 100644
--- a/e107_plugins/news/news_months_menu.php
+++ b/e107_plugins/news/news_months_menu.php
@@ -8,12 +8,20 @@
if (!defined('e107_INIT')) { exit; }
-$cString = 'nq_news_months_menu_'.md5($parm);
+$cString = 'nq_news_months_menu_'.md5(serialize($parm));
$cached = e107::getCache()->retrieve($cString);
if(!empty($parm))
{
- parse_str($parm, $parms);
+ if(is_string($parm))
+ {
+ parse_str($parm, $parms);
+ }
+ else
+ {
+ $parms = $parm;
+ }
+
}
diff --git a/e107_plugins/news/other_news_menu.php b/e107_plugins/news/other_news_menu.php
index bb1458c1d..6df15f279 100644
--- a/e107_plugins/news/other_news_menu.php
+++ b/e107_plugins/news/other_news_menu.php
@@ -37,7 +37,14 @@ $caption = TD_MENU_L1;
if(!empty($parm))
{
- parse_str($parm, $parms);
+ if(is_string($parm))
+ {
+ parse_str($parm, $parms);
+ }
+ else
+ {
+ $parms = $parm;
+ }
}
if(!$OTHERNEWS_STYLE)