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)