HEX
Server: LiteSpeed
System: Linux server315.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: globfdxw (6114)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: /home/globfdxw/www/wp-content/plugins/ubermenu/pro/menuitems/UberMenuItemDynamicPosts.class.php
<?php

/** POSTS **/

class UberMenuItemDynamicPosts extends UberMenuItemDynamic
{
	protected $type = 'dynamic_posts';
	protected $alter_structure = true;
	protected $post_count;
	protected $notice;
	protected $post_args;

	function init()
	{
		$this->source_id = $this->item->db_id; //$this->item->object_id;
	}

	function alter(&$children)
	{

		//$profiler = new UMProfiler();

		//echo '<h3>dynamic_posts ' . $this->ID. '</h3>';

		//Dynamic Items are only good on submenus
		if (UBERMENU_ALLOW_TOP_LEVEL_DYNAMIC_ITEMS || $this->depth > 0) {

			//Find the children of this item and remove them, but keep a
			//reference.  They will later be appended to the generated terms instead

			//Set the reference index during the first pass
			$reference_index = $this->create_reference($this->source_id, $children);

			//Pull from Cache if possible
			$transient_key = $this->get_transient_key('dynT_');
			//echo $transient_key.'<br/>';

			$posts = false;
			//$posts = array();
			//$posts = get_transient( $transient_key );

			if ($posts === false) {

				//Get the Post Query Settings
				$post_args = array(
					'offset' => 0,
					'no_found_rows' => true,
				);

				//WPML
				if (defined('ICL_SITEPRESS_VERSION')) {
					$post_args['suppress_filters'] = false;
				}

				$settings_map = array(
					'post_type' => 'dp_post_type',
					'orderby' => 'dp_orderby',
					'order' => 'dp_order',
					'posts_per_page' => 'dp_posts_per_page',
					'exclude' => 'dp_exclude',
					//'author'			=> 'dp_author',
					//'category'			=> 'dp_category',
					//'tag'				=> 'dp_tag',

				);
				//Setup terms args based on settings
				foreach ($settings_map as $d_arg => $s_key) {
					$v = $this->getSetting($s_key); //isset( $settings[$s_key] ) ? $settings[$s_key] : $defaults[$s_key];

					if ($v === 'on')
						$v = true;
					else if ($v === 'off')
						$v = false;

					$post_args[$d_arg] = $v;
				}


				//////////////////
				//Category
				//////////////////

				$category = $this->getSetting('dp_category');

				//Inherit parent Category
				//Needs to work with both dynamic terms as well as normal taxonomy items
				if ($category == -1) {
					$post_args['cat'] = $this->walker->find_parent_term();
				} else if ($category)
					$post_args['cat'] = $category;


				//////////////////
				//Tag
				//////////////////

				$tag = $this->getSetting('dp_tag');

				//Inherit parent Tag
				//Needs to work with both dynamic terms as well as normal taxonomy items
				if ($tag == -1) {

					//NOTE: In the alter() function, the current_item() is still our parent

					//$pitem = $this->walker->current_item()->item;
					$pitem = $this->walker->current_item();

					//Pass through Columns and Rows
					if ($pitem->getType() == 'column' || $pitem->getType() == 'row') {
						$pitem = $this->walker->parent_item();
					}

					//Dynamic Term Parent
					if ($pitem->item->custom_type == 'dynamic_term_item') {
						if ($pitem->item->taxonomy_slug == 'post_tag') {
							$post_args['tag_id'] = $pitem->item->term_id;
						}
					}
					//Tag Item Parent
					else if ($pitem->item->type == 'taxonomy') {
						if ($pitem->item->object == 'post_tag') {
							$post_args['tag_id'] = $pitem->item->object_id;
						}
					} else {
						$post_args['tag_id'] = $this->walker->find_parent_term();
					}
				} else
					$post_args['tag_id'] = $tag;


				////////////////////
				//CUSTOM TAXONOMIES
				////////////////////

				$taxonomies = get_taxonomies(
					array(
						'public' => true,
						'_builtin' => false,
					),
					'objects'
				);

				$taxonomies = apply_filters('ubermenu_dp_custom_taxonomies', $taxonomies);

				foreach ($taxonomies as $tax_id => $tax) {

					$term_id = $this->getSetting('dp_' . $tax_id);

					//Use Parent ID
					if ($term_id == -1) {

						//$pitem = $this->walker->current_item()->item;
						$pitem = $this->walker->current_item();

						//Pass through Columns and Rows
						if ($pitem->getType() == 'column' || $pitem->getType() == 'row') {
							$pitem = $this->walker->parent_item();
						}

						//Dynamic Term Parent
						if ($pitem->item->custom_type == 'dynamic_term_item') {
							if ($pitem->item->taxonomy_slug == $tax_id) {
								$term_id = $pitem->item->term_id;
							}
						}
						//Custom Taxonomy Item Parent
						else if ($pitem->item->type == 'taxonomy') {
							if ($pitem->item->object == $tax_id) {
								$term_id = $pitem->item->object_id;
							}
						} else {
							$term_id = $this->walker->find_parent_term();
						}
						// echo $term_id;
					}

					//If we found a term, create a tax query
					if ($term_id > 0) {
						if (!isset($post_args['tax_query']) || !is_array($post_args['tax_query'])) {
							$post_args['tax_query'] = array();
						}
						$post_args['tax_query'][] = array(
							'taxonomy' => $tax_id,
							'field' => 'term_id',
							'terms' => $term_id,
						);
					}


				}





				//////////////////
				//Post Parent
				//////////////////

				$post_parent = $this->getSetting('dp_post_parent');

				if ($post_parent == -1) {

					//find_parent_post

					//$pitem = $this->walker->current_item()->item;
					$pitem = $this->walker->current_item();
					$ptype = $pitem->getType();
					if (in_array($ptype, ['column', 'row', 'tabs'])) {
						$pitem = $this->walker->parent_item();
					}

					//Dynamic Post Parent
					if ($pitem->item->custom_type == 'dynamic_post_item') {
						$post_args['post_parent'] = $pitem->item->dynamic_post_id;
					}
					//Post Item Parent
					else if ($pitem->item->type == 'post_type') {

						//if( $pitem->object ==  /*'page'*/ ){	//Allow to work with custom post types
						$post_args['post_parent'] = $pitem->item->object_id;
						//}
					}

					//up( $pitem );
				} else
					$post_args['post_parent'] = $post_parent;


				///////////////////////////////
				//Author
				///////////////////////////////
				$authors = $this->getSetting('dp_author');
				if (is_array($authors)) {
					if (count($authors) == 1) {
						$post_args['author'] = $authors[0];	//single author, use 'author' parameter
					} else {
						$post_args['author__in'] = $authors; //multiple authors, pass array to 'author__in' parameter
					}
				}



				//Allow filtering
				$post_args = apply_filters('ubermenu_dynamic_posts_args', $post_args, $this->ID);
				$this->post_args = $post_args;


				///////////////////////////////
				//Retrieve the posts
				///////////////////////////////

				//$post_args = array( 'post_type' => 'post' );
				$posts = get_posts($post_args);

				//Cache Results - Set Transient
				//set_transient( $transient_key , $posts , 100 );
			}

			//$profiler->output( $this->get_item()->title , 500 );

			$this->post_count = count($posts);

			if (empty($posts) && $this->getSetting('dp_ignore_empty_results') !== 'on') {
				$this->notice = '<strong>' . $this->item->title . ' (' . $this->ID . ')</strong>: ' . __('No results found', 'ubermenu');

				$this->notice .= '<br/><em>' . __('Query Arguments', 'ubermenu') . ':</em>';
				$this->notice .= '<pre>';
				$this->notice .= print_r($post_args, true);
				$this->notice .= '</pre>';
			}

			$post_children = array();


			//Autocolumns setup
			$autocolumns = intval($this->getSetting('dp_autocolumns'));
			$post_count = $this->post_count;
			$items_per_column;
			$column_id;
			$column_children = array();

			$column_map = array();

			if ($autocolumns && $autocolumns > 0 && $autocolumns != 'disabled') {

				$remainder = $post_count % $autocolumns;
				$items_per_column = ceil($post_count / $autocolumns);

				if ($remainder) {
					// $items_per_column = floor( $post_count / $autocolumns );
					// $items_per_column++;
					for ($_k = 0; $_k < $autocolumns; $_k++) {
						$column_map[$_k] = $items_per_column;
						if ($_k + 1 == $remainder) {
							$items_per_column--;
						}
					}
				} else {
					for ($_k = 0; $_k < $autocolumns; $_k++) {
						$column_map[$_k] = $items_per_column;
					}
				}
			}
			//echo "$post_count / $autocolumns = $items_per_column";

			//Loop through each term, get its info and create a Dummy Item to
			//stash in the children array.  The $_i keeps track of the index as
			//this is how child Dynamic Terms can map back
			$_i = 0;
			$_col = 0;
			foreach ($posts as $p) {

				//Find the URL for this Post
				$url = get_permalink($p->ID);

				$post_item_id = $this->ID . '-post-' . $p->ID;

				$post_item =
				new UberMenu_dynamic_post_item(
					$post_item_id,
					$this->item,
					array(
						'dynamic_post_id' => $p->ID,
						//'attr_title' => $term->name,
						'url' => $url,
					),
					array('dynamic-post', 'item-' . $this->ID),	//Add DynamicPosts Item ID to classes
					$this->get_settings()
				);

				//If we're using auto columns, add a new column every X items
				if ($autocolumns > 0) {

					//Start a new column if this is the first item, or if we've hit zero in the previous row
					if ($_i == 0 || (isset($column_map[$_col]) && $column_map[$_col] == 0)) {

						//move on to the next column
						if ($column_map[$_col] == 0) {
							$_col++;
							//Record items in previous column
							$children[$column_id] = $column_children;
						}

						$column_children = array();
						$column_id = $this->ID . '-col-' . $_col;
						$post_children[] = new UberMenu_dummy_item(
							$column_id,
							'column',
							'Auto Column',
							$this->ID,
							array('columns' => '1-' . $autocolumns),
							array('ubermenu-autocolumn')
						);
					}

					//Add this post to the current column
					$column_children[] = $post_item;

					//Decrement the number remaining in this column
					$column_map[$_col]--;
				} else {
					$post_children[] = $post_item;
				}



				//Find the children of this item and remove them, but keep a
				//reference.  They will later be appended to the generated terms instead

				$mykids = false;
				if (isset($children[$reference_index])) {

					$mykids = $children[$reference_index];
					$children[$post_item_id] = $mykids;

				}

				// if( $autocolumns > 0 ){
				// 	if( ( $_i + 1 ) % $items_per_column == 0 ){
				// 		$children[$column_id] = $column_children;
				// 	}
				// }


				$_i++;

			}

			//If we had an incomplete row (uneven division), tack on the remainder
			if (is_array($column_children) && !empty($column_children)) {
				$children[$column_id] = $column_children;
			}

			$children[$this->ID] = $post_children;

		}

	}


	function get_start_el()
	{
		//$this->setupAutoChild();
		//$this->settingsvar 'submenu_type_calc'] = 'toggles-group';

		//Setup the submenu type
		$submenu_type = 'mega';
		if ($this->depth > 0) {
			//echo $this->walker->parent_item()->getType();
			$submenu_type = $this->walker->parent_item()->getSetting('submenu_type_calc');
			//echo $submenu_type.'<br/>';
		}
		$this->settings['submenu_type_calc'] = $submenu_type; // 'dynamic-terms';

		$html = "<!-- begin Dynamic Posts: " . $this->item->title . " ID[$this->ID] count[$this->post_count] ";
		if ($this->getSetting('dp_ignore_empty_results') === 'on' && $this->post_count === 0)
			$html .= "[ignore empty]";
		$html .= " -->";

		if ($this->post_count == 0) {
			$empty_results_message = $this->getSetting('empty_results_message');
			if ($empty_results_message) {
				$html .= '<li class="ubermenu-item ubermenu-item-normal"><span class="ubermenu-target ubermenu-target-empty-posts">' .
					$empty_results_message .
					'</span></li>';
			}
		}

		if ($this->notice) {
			$html .= '<li class="ubermenu-item">' . ubermenu_admin_notice($this->notice, false) . '</li>';
		}

		return $html;
	}
	function get_end_el()
	{
		//$this->resetAutoChild();

		$html = '';

		//More Link
		$view_all_taxonomy = $this->getSetting('dp_view_all');
		if ($view_all_taxonomy && $view_all_taxonomy != 'none') {

			$term = $this->getSetting('dp_' . $view_all_taxonomy);

			if (is_numeric($term)) {
				if ($term == -1) {
					$term_id = $this->walker->find_parent_term();
				} else if ($term)
					$term_id = $term;

				if ($term_id) {
					//$term_url = get_term_link( $term_id , $view_all_taxonomy );
					$term_url = get_term_link(intval($term_id), $view_all_taxonomy);	//Some servers misinterpret as non-int?

					//If term ID is invalid, get_term_link will throw an error, so don't proceed
					if (!is_wp_error($term_url)) {
						$icon_tag = $this->get_menu_op('icon_tag');
						if (!$icon_tag)
							$icon_tag = 'i';
						$view_all_link_text = 'View all <' . $icon_tag . ' class="fas fa-angle-double-right"></' . $icon_tag . '>';
						if ($this->getSetting('dp_view_all_text') != '') {
							$view_all_link_text_setting = $this->getSetting('dp_view_all_text');
							$view_all_link_text = $view_all_link_text_setting;
						}
						$html .= '<li class="ubermenu-item ubermenu-item-normal ubermenu-item-view-all"><a href="' . $term_url . '" class="ubermenu-target">' . $view_all_link_text . '</a></li>';
					}
				}
			}
		}

		//Allow filtering
		$html = apply_filters('ubermenu_dp_after', $html, $this->ID, $this->post_args);

		$html .= "<!-- end Dynamic Posts: " . $this->item->title . " ID[$this->ID] -->";
		return $html;
	}

}

class UberMenuItemDynamicPost extends UberMenuItemDefault
{

	protected $type = 'dynamic_post';
	//protected $alter_structure = true;
	protected $toggle_group;
	protected $toggle_content_panel;

	var $post;


	function init()
	{
		//Act like one level up, since we've been pushed down 1
		//by the Dynamic Terms Item
		$this->depth--;

		//Set the Post for reference
		$this->post = get_post($this->item->dynamic_post_id);
		//up( $this->post );
//echo $this->post->post_title . '<br/>';

		//Set the Image to the featured image.  If not set, this can be overridden by
		//image set on Dynamic Posts Menu Item
		if ($this->getSetting('inherit_featured_image') !== 'off') {
			$image_id = get_post_thumbnail_id($this->post->ID);
			if ($image_id)
				$this->settings['item_image'] = $image_id;
		}



		//If this Dynamic Item is a child of a "Tabs" item, it becomes a toggle
		if ($this->walker->parent_item()) {

			if ($this->walker->parent_item()->getType() == 'tabs') {

				$this->is_tab = true;

				//Ask the tab to set it up
				$this->walker->parent_item()->setup_tab($this);


				$this->item_classes[] = 'ubermenu-tab';
				$this->item_classes[] = 'ubermenu-has-submenu-drop';
				//$this->item_atts['data-ubermenu-toggle-target'] = '#ubermenu-panel-'.$this->ID;

				$cols = $this->getSetting('columns');
				// if( $this->depth > 0 && $cols == 'auto' ){
				// 	$cols = $this->walker->parent_item()->getSetting( 'submenu_column_default' );
				// }

				//Change specific for Left/Right Tab layouts, so that by default we're full width
				if ($cols == 'auto') {
					$tab_layout = $this->walker->parent_item()->getSetting('tab_layout');
					if ($tab_layout == 'right' || $tab_layout == 'left') {
						//$cols = 'full';

						$this->settings['columns'] = 'full';
					}
				}
			}
		}

		//If item is current
		global $wp_query;
		$queried_object_id = (int) $wp_query->queried_object_id;
		if ($this->item->dynamic_post_id == $queried_object_id && $wp_query->is_singular) {
			$this->item_classes[] = 'ubermenu-current-menu-item';	//hasn't been prefixed yet
		}

	}


	/**
	 * Get the Anchor and its contents
	 * @param  array $atts An array of attributes to add to the anchor
	 * @return string       The HTML for the anchor
	 */
	function get_anchor($atts)
	{

		$p = $this->post;

		$a = '';
		$tag = 'a';

		//The parent item is the Dynamic Post item, so the grandparent item is what we seek
		$parent_item = false;
		if ($this->depth >= 2)
			$parent_item = $this->walker->grandparent_item();

		//Image
		$image = $this->get_image();
		if ($image)
			$atts['class'] .= ' ubermenu-target-with-image';


		//Icon
		$icon = $this->getSetting('icon');
		if ($icon) {
			$atts['class'] .= ' ubermenu-target-with-icon';

			$icon_tag = $this->get_menu_op('icon_tag');
			if (!$icon_tag)
				$icon_tag = 'i';
			$icon = '<' . $icon_tag . ' class="ubermenu-icon ' . $icon . '"></' . $icon_tag . '>';
		}


		//Layout
		$layout = $this->getSetting('item_layout');
		$atts['class'] .= ' ubermenu-item-layout-' . $layout;



		//Content Align
		$content_align = $this->getSetting('content_alignment');
		//Check inherit from parent
		if ($content_align == 'default') {

			if ($this->depth >= 2) {
				$submenu_item_content_alignment = 'default';

				//If this is within a menu segment and we need to inherit back further, pass true
				if ($parent_item->getType() == 'menu_segment') {
					$submenu_item_content_alignment = $parent_item->getSetting('submenu_item_content_alignment', true);
				} else {
					$submenu_item_content_alignment = $parent_item->getSetting('submenu_item_content_alignment');
				}

				if ($submenu_item_content_alignment !== 'default') {
					$content_align = $submenu_item_content_alignment;
				}
			}
		}
		//If a content alignment has been set on this item or the parent, set the class
		if ($content_align != 'default') {
			$atts['class'] .= ' ubermenu-content-align-' . $content_align;
		}


		//ITEM LAYOUT
		if ($layout == 'default') {

			//If the layout for the individual item is set to default, and this is a child item, check the parent item's setting
			if ($this->depth >= 2) {
				$submenu_item_layout = 'default';
				if ($parent_item->getType() == 'menu_segment') {
					$submenu_item_layout = $parent_item->getSetting('submenu_item_layout', true);
				} else {
					$submenu_item_layout = $parent_item->getSetting('submenu_item_layout');
				}

				if ($submenu_item_layout !== 'default') {
					$layout = $submenu_item_layout;
				}
			}

			//If the layout hasn't been determined yet, and we're using an image, check to see if there's a default image layout
			if ($layout == 'default' && $image) {
				$layout = $this->get_menu_op('image_layout_default');
				if (!$layout)
					$layout = 'image_left';
			}
			//If there's an icon, use the default icon layout
			else if ($icon) {
				if (function_exists('ubermenu_icon_layout_default')) {
					$layout = ubermenu_icon_layout_default($this);
				} else
					$layout = 'icon_left';
			}
			//If nothing else has claimed it, we default to text_only
			else if ($layout == 'default') {
				$layout = 'text_only';
			}

			$atts['class'] .= ' ubermenu-item-layout-' . $layout;
		}




		$layout_order = ubermenu_get_item_layouts($layout);
		if (!$layout_order) {
			ubermenu_admin_notice(__('Unknown layout order:', 'ubermenu') . ' ' . $layout . ' [' . $this->item->title . '] (' . $this->ID . ')');
		}


		//No wrap
		if ($this->getSetting('no_wrap') == 'on') {
			$atts['class'] .= ' ubermenu-target-nowrap';
		}

		//Disable Submenu Indicator
		$disable_submenu_indicator = false;
		if ($this->getSetting('disable_submenu_indicator') == 'on') {
			$atts['class'] .= ' ubermenu-noindicator';
		}

		//Global Submenu Indicators
		$display_submenu_indicators = $this->get_menu_op('display_submenu_indicators') === 'on' ? true : false;


		//Disabled Link (change tag)
		$disable_link = false;
		if ($this->getSetting('disable_link') == 'on') {
			$tag = 'span';
			$disable_link = true;
			unset($atts['href']);
		}


		//Target ID
		$target_id = $this->getSetting('target_id');
		if ($target_id) {
			$atts['id'] = $target_id;
		}

		//Target Class
		$target_class = $this->getSetting('target_class');
		if ($target_class) {
			$atts['class'] .= ' ' . $target_class;
		}


		//Title
		$title = '';
		if ($this->getSetting('disable_text') == 'off') {

			$title = apply_filters('the_title', $p->post_title, $p->ID);
			$title = apply_filters('ubermenu_dp_title', $title, $this->source_id, $p->ID);

			$title = '<span class="ubermenu-target-title ubermenu-target-text">' . $title . '</span>';
		}


		//Description
		$description = '';
		//if( $this->getSetting( 'disable_text' ) == 'off' ){
		if ($this->item->description) {
			$description .= '<span class="ubermenu-target-description ubermenu-target-text">';
			$description .= $this->item->description;
			$description .= '</span>';
		}

		//ARIA controls
		if (ubermenu_op('aria_controls', 'general') == 'on') {
			$atts['aria-controls'] = $this->get_submenu_id();
		}

		//Filter attributes
		$atts = apply_filters('ubermenu_anchor_attributes', $atts, 'ubermenu-dynamic-post', $this->source_id /* Menu Item ID */ , 'post' /* object type */ , $p->ID /* Post ID */);


		//Anchor Attributes
		$attributes = '';
		foreach ($atts as $attr => $value) {
			if (!empty($value)) {
				$value = ('href' === $attr) ? esc_url($value) : esc_attr($value);
				$attributes .= ' ' . $attr . '="' . $value . '"';
			}
		}


		//Dynamic Subcontent
		//Treat as description
		//$subcontent = '';
		$subcontent_type = $this->getSetting('dp_subcontent');
		if ($subcontent_type != 'none') {

			switch ($subcontent_type) {

				case 'excerpt':
					$description .= '<span class="ubermenu-target-description ubermenu-target-text">';
					$description .= $p->post_excerpt;
					$description .= '</span>';
					break;

				case 'date':
					$description .= '<span class="ubermenu-target-description ubermenu-target-text">';
					$description .= mysql2date(get_option('date_format'), $p->post_date);
					$description .= '</span>';
					break;

				case 'author':
					$description .= '<span class="ubermenu-target-description ubermenu-target-text">';
					$description .= get_the_author_meta('display_name', $p->post_author);
					$description .= '</span>';
					break;

				case 'custom':
					$description = apply_filters('ubermenu_dp_subcontent', $description, $p, $this->ID);
					break;

				default:
					break;

			}

		}
		//$description.= $subcontent;	//Treat as description



		//Check if we still have something to print
		if (!$title && !$description && !$image && !$icon) {
			return '';
		}


		//Build the Layout

		//Get custom pieces
		$custom_pieces = array();
		extract(apply_filters('ubermenu_custom_item_layout_data', $custom_pieces, $layout, $this->ID, $p->ID));

		//Gather all the pieces in the layout order into an array
		$layout_pieces = compact($layout_order);

		//Output the anchor
		if (isset($this->args->before))
			$a .= $this->args->before;
		$a .= '<' . $tag . $attributes . '>';
		if (isset($this->args->link_before))
			$a .= $this->args->link_before;

		//Add pieces based on layout order
		foreach ($layout_pieces as $piece) {
			$a .= $piece;
		}


		// Badge
		$badge = $this->get_badge();
		if ($badge) {
			$a .= $badge;
		}

		//Submenu indicator
		$a .= $this->get_submenu_indicator($disable_submenu_indicator);
		// $submenu_type = $this->get_submenu_type();
		// if( $display_submenu_indicators && !$disable_submenu_indicator && $submenu_type && in_array( $submenu_type , array( 'mega' , 'flyout' , 'tab-content-panel' ) ) ){
		// 	$indicator_tag = $this->get_menu_op( 'icon_tag' );
		// 	if( !$indicator_tag ) $indicator_tag = 'i';
		// 	$a.= "<$indicator_tag class='ubermenu-sub-indicator fas fa-angle-down'></$indicator_tag>";
		// }

		if (isset($this->args->link_after))
			$a .= $this->args->link_after;
		$a .= '</' . $tag . '>';
		if (isset($this->args->after))
			$a .= $this->args->after;

		return $a;
	}

	function setup_trigger()
	{

		$trigger = $this->getSetting('item_trigger');

		if ($this->is_tab) {
			//If auto, get trigger from Tabs Group
			if (!$trigger || $trigger == 'auto') {
				$trigger = $this->walker->grandparent_item()->getSetting('tabs_trigger');
			}
		}

		if ($trigger && $trigger != 'auto') {
			$this->item_atts['data-ubermenu-trigger'] = $trigger;
		}
	}


	function get_settings()
	{
		if (isset($this->settings))
			return $this->settings;

		$settings = $this->item->parent_settings;
		$settings = apply_filters('ubermenu_item_settings', $settings, $this->ID);

		return $settings;
	}

	function initialize_submenu()
	{
		parent::initialize_submenu();
		// Add in the "ubermenu-submenu-id-122" in addition to "ubermenu-submenu-id-122-post-21" so that bkg images will work
		$this->submenu_classes[] = 'ubermenu-submenu-id-' . $this->item->object_id;
	}

	function get_inherited_submenu_column_default()
	{
		// The parent is still the base Dynamic Posts item, the grandparent is what we would inherit from
		return $this->walker->grandparent_item()->getSetting('submenu_column_default');
	}

}