/** * Search all Grids and change the term IDs set in the selected terms if needed * @since: 2.1.0 **/ static function split_terms_fix($old_term_id, $new_term_id, $term_taxonomy_id, $taxonomy) { $base = new Essential_Grid_Base(); $lang = array(); if (Essential_Grid_Wpml::is_wpml_exists()) { $lang = icl_get_languages(); } $grids = Essential_Grid::get_essential_grids(); if (!empty($grids)) { foreach ($grids as $grid) { $selected = json_decode($grid->postparams, true); $post_category = $base->getVar($selected, 'post_category'); $cat_tax = $base->getCatAndTaxData($post_category); $cats = array(); if (!empty($cat_tax['cats'])) { $cats = explode(',', $cat_tax['cats']); } $taxes = array('post_tag'); if (!empty($cat_tax['tax'])) { $taxes = explode(',', $cat_tax['tax']); } $cont = false; if (!empty($cats)) { foreach ($cats as $cat) { if ($old_term_id == $cat && in_array($taxonomy, $taxes)) { //ID needs to be changed foreach ($taxes as $t) { //replace all occuring old term id with the new term id and then Save the Grid $post_category = str_replace($t . '_' . $old_term_id, $t . '_' . $new_term_id, $post_category); } $selected['post_category'] = $post_category; $grid->postparams = $selected; $grid->params = json_decode($grid->params, true); $grid->layers = json_decode($grid->layers, true); $new_grid = (array) $grid; //cast to array as update_create_grid expects an array Essential_Grid_Admin::update_create_grid($new_grid); //now delete cache of the Grid so that changes take effect immediately if (!empty($lang)) { foreach ($lang as $code => $val) { delete_transient('ess_grid_trans_query_' . $grid->id . $val['language_code']); delete_transient('ess_grid_trans_full_grid_' . $grid->id . $val['language_code']); } } else { delete_transient('ess_grid_trans_query_' . $grid->id); delete_transient('ess_grid_trans_full_grid_' . $grid->id); } $cont = true; } if ($cont == true) { break; } } } } } }
public function output_filter_unwrapped($demo = false, $type = '') { //$type -> names what settings we need to check for: filter, filter2, filter3 global $sitepress; $grouping = isset($this->filter_settings['filter' . $type]['filter-grouping']) ? $this->filter_settings['filter' . $type]['filter-grouping'] : 'false'; $listing = isset($this->filter_settings['filter' . $type]['filter-listing']) ? $this->filter_settings['filter' . $type]['filter-listing'] : 'list'; $amount = isset($this->filter_show_count['filter' . $type]) && $this->filter_show_count['filter' . $type] == 'on' ? ' eg-show-amount' : ''; $do_show = @$this->filter_settings['filter' . $type]['filter-selected']; $dropdown = ''; switch ($listing) { case 'dropdown': //use dropdown $dropdown = ' dropdownstyle'; break; case 'mobiledropdownstyle': //use dropdown only on mobile $dropdown = ' mobiledropdownstyle'; break; } echo '<!-- THE FILTERING, SORTING AND WOOCOMMERCE BUTTONS -->'; echo '<!-- THE FILTER BUTTONS -->'; echo '<div class="esg-filter-wrapper' . $dropdown . $amount . ' ' . $this->special_class . '"'; if ($this->spacing !== false) { echo $this->spacing; } echo '>'; if ($listing == 'dropdown') { echo '<div class="esg-selected-filterbutton"><span>' . $this->filter_dropdown_text['filter' . $type] . '</span><i class="eg-icon-down-open"></i></div>'; echo '<div class="esg-dropdown-wrapper">'; } $sel = !empty($this->filter_start_select) ? '' : ' selected'; echo '<div class="esg-filterbutton' . $sel . ' esg-allfilter" data-filter="filterall" data-fid="-1"><span>' . @$this->filter_all_text['filter' . $type] . '</span></div>'; if ($demo) { echo '<div class="esg-filterbutton" data-filter="filter-favorite"><span>' . __('Favorites', EG_TEXTDOMAIN) . '</span><span class="esg-filter-checked"><i class="eg-icon-ok-1"></i></span></div>'; } if (!empty($do_show) && is_array($do_show)) { //we are a post based grid foreach ($do_show as $string_id) { $fraw = explode('_', $string_id); $f_id = array_pop($fraw); if (Essential_Grid_Wpml::is_wpml_exists() && isset($sitepress)) { $f_id = icl_object_id($f_id, implode('_', $fraw), true, ICL_LANGUAGE_CODE); } if (isset($this->filter[$f_id])) { $filter_text = $demo ? self::translate_demo_filter($this->filter[$f_id]['slug']) : $this->filter[$f_id]['name']; $sel = in_array(sanitize_key($this->filter[$f_id]['slug']), $this->filter_start_select) ? ' selected' : ''; $parent_id = isset($this->filter[$f_id]['parent']) && intval($this->filter[$f_id]['parent']) > 0 ? $this->filter[$f_id]['parent'] : 0; $parent = $parent_id > 0 ? ' data-pid="' . $parent_id . '"' : ''; echo '<div class="esg-filterbutton' . $sel . '" data-fid="' . $f_id . '"' . $parent . ' data-filter="filter-' . sanitize_key($this->filter[$f_id]['slug']) . '"><span>' . $filter_text . '</span><span class="esg-filter-checked"><i class="eg-icon-ok-1"></i></span></div>'; } } } else { if (!empty($this->filter)) { foreach ($this->filter as $filter_id => $filter) { $filter_text = $demo ? self::translate_demo_filter($filter['slug']) : $filter['name']; $sel = in_array(sanitize_key($filter['slug']), $this->filter_start_select) ? ' selected' : ''; $parent_id = isset($filter['parent']) && intval($filter['parent']) > 0 ? $filter['parent'] : 0; $parent = $parent_id > 0 ? ' data-pid="' . $parent_id . '"' : ''; echo '<div class="esg-filterbutton' . $sel . '" data-fid="' . $filter_id . '"' . $parent . ' data-filter="filter-' . sanitize_key($filter['slug']) . '"><span>' . $filter_text . '</span><span class="esg-filter-checked"><i class="eg-icon-ok-1"></i></span></div>'; } } } if ($listing == 'dropdown') { echo '</div>'; } echo '<div class="eg-clearfix"></div>'; echo '</div>'; }
/** * get posts by categorys/tags */ public static function getPostsByCategory($grid_id, $catID, $postTypes = "any", $taxonomies = "category", $pages = array(), $sortBy = self::SORTBY_ID, $direction = self::ORDER_DIRECTION_DESC, $numPosts = -1, $arrAddition = array()) { //category global $sitepress; //get post types if (strpos($postTypes, ",") !== false) { $postTypes = explode(",", $postTypes); if (array_search("any", $postTypes) !== false) { $postTypes = "any"; } } if (empty($postTypes)) { $postTypes = "any"; } if (strpos($catID, ",") !== false) { $catID = explode(",", $catID); } else { $catID = array($catID); } $query = array('order' => $direction, 'posts_per_page' => $numPosts, 'showposts' => $numPosts, 'post_status' => 'publish', 'post_type' => $postTypes); if (strpos($sortBy, 'eg-') === 0) { $meta = new Essential_Grid_Meta(); $m = $meta->get_all_meta(false); if (!empty($m)) { foreach ($m as $me) { if ('eg-' . $me['handle'] == $sortBy) { $sortBy = isset($me['sort-type']) && $me['sort-type'] == 'numeric' ? 'meta_num_' . $sortBy : 'meta_' . $sortBy; break; } } } } elseif (strpos($sortBy, 'egl-') === 0) { //change to meta_num_ or meta_ depending on setting $sortfound = false; $link_meta = new Essential_Grid_Meta_Linking(); $m = $link_meta->get_all_link_meta(); if (!empty($m)) { foreach ($m as $me) { if ('egl-' . $me['handle'] == $sortBy) { $sortBy = isset($me['sort-type']) && $me['sort-type'] == 'numeric' ? 'meta_num_' . $me['original'] : 'meta_' . $me['original']; $sortfound = true; break; } } } if (!$sortfound) { $sortBy = 'none'; } } //add sort by (could be by meta) if (strpos($sortBy, "meta_num_") === 0) { $metaKey = str_replace("meta_num_", "", $sortBy); $query["orderby"] = "meta_value_num"; $query["meta_key"] = $metaKey; } else { if (strpos($sortBy, "meta_") === 0) { $metaKey = str_replace("meta_", "", $sortBy); $query["orderby"] = "meta_value"; $query["meta_key"] = $metaKey; } else { $query["orderby"] = $sortBy; } } //get taxonomies array $arrTax = array(); if (!empty($taxonomies)) { $arrTax = explode(",", $taxonomies); } if (!empty($taxonomies)) { $taxQuery = array(); //add taxomonies to the query if (strpos($taxonomies, ",") !== false) { //multiple taxomonies $taxonomies = explode(",", $taxonomies); foreach ($taxonomies as $taxomony) { $taxArray = array('taxonomy' => $taxomony, 'field' => 'id', 'terms' => $catID); $taxQuery[] = $taxArray; } } else { //single taxomony $taxArray = array('taxonomy' => $taxonomies, 'field' => 'id', 'terms' => $catID); $taxQuery[] = $taxArray; } $taxQuery['relation'] = 'OR'; $query['tax_query'] = $taxQuery; } //if exists taxanomies $query['suppress_filters'] = false; if (!empty($arrAddition) && is_array($arrAddition)) { foreach ($arrAddition as $han => $val) { if (strtolower(substr($val, 0, 5)) == 'array') { $val = explode(',', str_replace(array('(', ')'), '', substr($val, 5))); $arrAddition[$han] = $val; } } $query = array_merge($query, $arrAddition); } if (empty($grid_id)) { $grid_id = time(); } //add wpml transient $lang_code = ''; if (Essential_Grid_Wpml::is_wpml_exists()) { $lang_code = Essential_Grid_Wpml::get_current_lang_code(); } $objQuery = get_transient('ess_grid_trans_query_' . $grid_id . $lang_code); if ($objQuery === false) { echo '<!-- CACHE CREATED FOR: ' . $grid_id . ' -->'; $query = apply_filters('essgrid_get_posts', $query); $objQuery = new WP_Query($query); //select again the pages if (is_array($postTypes) && in_array('page', $postTypes) && count($postTypes) > 1 || $postTypes == 'page') { //Page is selected and also another custom category $query['post_type'] = 'page'; unset($query['tax_query']); //delete category/tag filtering $query['post__in'] = $page; $objQueryPages = new WP_Query($query); if (is_object($objQueryPages) && is_object($objQuery)) { $objQuery->posts = array_merge($objQuery->posts, $objQueryPages->posts); } if (is_object($objQueryPages) && !is_object($objQuery)) { $objQuery = $objQueryPages; } //remove duplicated posts if (!empty($objQuery->posts)) { $fIDs = array(); foreach ($objQuery->posts as $objID => $objPost) { if (isset($fIDs[$objPost->ID])) { unset($objQuery->posts[$objID]); continue; } $fIDs[$objPost->ID] = true; } } } set_transient('ess_grid_trans_query_' . $grid_id . $lang_code, $objQuery, 60 * 60 * 24); } else { echo '<!-- CACHE FOUND FOR: ' . $grid_id . ' -->'; } //$arrPosts = $objQuery; $arrPosts = $objQuery->posts; //check if we should rnd the posts if ($sortBy == 'rand' && !empty($arrPosts)) { shuffle($arrPosts); } foreach ($arrPosts as $key => $post) { if (method_exists($post, "to_array")) { $arrPost = $post->to_array(); } else { $arrPost = (array) $post; } if ($arrPost['post_type'] == 'page') { if (!empty($pages)) { //filter to pages if array is set $delete = true; foreach ($pages as $page) { if (!empty($page)) { if ($arrPost['ID'] == $page) { $delete = false; break; } elseif (isset($sitepress)) { //WPML $current_main_id = icl_object_id($arrPost['ID'], 'page', true, $sitepress->get_default_language()); if ($current_main_id == $page) { $delete = false; break; } } } } if ($delete) { //if not wanted, go to next unset($arrPosts[$key]); continue; } } } /* $arrPostCats = self::getPostCategories($post, $arrTax); $arrPost["categories"] = $arrPostCats; */ $arrPosts[$key] = $arrPost; } $arrPosts = apply_filters('essgrid_modify_posts', $arrPosts); return $arrPosts; }
/** * Handle Ajax Requests */ public static function on_ajax_action() { try { $token = self::getPostVar('token', false); //verify the token $isVerified = wp_verify_nonce($token, 'Essential_Grid_actions'); $error = false; if ($isVerified) { $data = self::getPostVar("data", false); switch (self::getPostVar("client_action", false)) { case 'add_google_fonts': $f = new ThemePunch_Fonts(); $result = $f->add_new_font($data); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Font successfully created!", EG_TEXTDOMAIN), array('data' => $result, 'is_redirect' => true, 'redirect_url' => self::getFontsUrl())); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'remove_google_fonts': if (!isset($data['handle'])) { Essential_Grid::ajaxResponseError(__('Font not found', EG_TEXTDOMAIN), false); } $f = new ThemePunch_Fonts(); $result = $f->remove_font_by_handle($data['handle']); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Font successfully removed!", EG_TEXTDOMAIN), array('data' => $result)); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'edit_google_fonts': if (!isset($data['handle'])) { Essential_Grid::ajaxResponseError(__('No handle given', EG_TEXTDOMAIN), false); } if (!isset($data['url'])) { Essential_Grid::ajaxResponseError(__('No parameters given', EG_TEXTDOMAIN), false); } $f = new ThemePunch_Fonts(); $result = $f->edit_font_by_handle($data); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Font successfully changed!", EG_TEXTDOMAIN), array('data' => $result)); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'add_custom_meta': $m = new Essential_Grid_Meta(); $result = $m->add_new_meta($data); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Meta successfully created!", EG_TEXTDOMAIN), array('data' => $result, 'is_redirect' => true, 'redirect_url' => self::getSubViewUrl(Essential_Grid_Admin::VIEW_SUB_CUSTOM_META_AJAX))); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'remove_custom_meta': if (!isset($data['handle'])) { Essential_Grid::ajaxResponseError(__('Meta not found', EG_TEXTDOMAIN), false); } $m = new Essential_Grid_Meta(); $result = $m->remove_meta_by_handle($data['handle']); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Meta successfully removed!", EG_TEXTDOMAIN), array('data' => $result)); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'edit_custom_meta': if (!isset($data['handle'])) { Essential_Grid::ajaxResponseError(__('No handle given', EG_TEXTDOMAIN), false); } if (!isset($data['name'])) { Essential_Grid::ajaxResponseError(__('No name given', EG_TEXTDOMAIN), false); } $m = new Essential_Grid_Meta(); $result = $m->edit_meta_by_handle($data); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Meta successfully changed!", EG_TEXTDOMAIN), array('data' => $result)); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'add_link_meta': $m = new Essential_Grid_Meta_Linking(); $result = $m->add_new_link_meta($data); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Meta successfully created!", EG_TEXTDOMAIN), array('data' => $result, 'is_redirect' => true, 'redirect_url' => self::getSubViewUrl(Essential_Grid_Admin::VIEW_SUB_CUSTOM_META_AJAX))); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'remove_link_meta': if (!isset($data['handle'])) { Essential_Grid::ajaxResponseError(__('Meta not found', EG_TEXTDOMAIN), false); } $m = new Essential_Grid_Meta_Linking(); $result = $m->remove_link_meta_by_handle($data['handle']); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Meta successfully removed!", EG_TEXTDOMAIN), array('data' => $result)); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'edit_link_meta': if (!isset($data['handle'])) { Essential_Grid::ajaxResponseError(__('No handle given', EG_TEXTDOMAIN), false); } if (!isset($data['name'])) { Essential_Grid::ajaxResponseError(__('No name given', EG_TEXTDOMAIN), false); } if (!isset($data['original'])) { Essential_Grid::ajaxResponseError(__('No original given', EG_TEXTDOMAIN), false); } $m = new Essential_Grid_Meta_Linking(); $result = $m->edit_link_meta_by_handle($data); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Meta successfully changed!", EG_TEXTDOMAIN), array('data' => $result)); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'add_widget_area': $wa = new Essential_Grid_Widget_Areas(); $result = $wa->add_new_sidebar($data); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Widget Area successfully created!", EG_TEXTDOMAIN), array('data' => $result, 'is_redirect' => true, 'redirect_url' => self::getSubViewUrl(Essential_Grid_Admin::VIEW_SUB_WIDGET_AREA_AJAX))); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'edit_widget_area': if (!isset($data['handle'])) { Essential_Grid::ajaxResponseError(__('No handle given', EG_TEXTDOMAIN), false); } if (!isset($data['name'])) { Essential_Grid::ajaxResponseError(__('No name given', EG_TEXTDOMAIN), false); } $wa = new Essential_Grid_Widget_Areas(); $result = $wa->edit_widget_area_by_handle($data); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Widget Area successfully changed!", EG_TEXTDOMAIN), array('data' => $result)); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'remove_widget_area': if (!isset($data['handle'])) { Essential_Grid::ajaxResponseError(__('Widget Area not found', EG_TEXTDOMAIN), false); } $wa = new Essential_Grid_Widget_Areas(); $result = $wa->remove_widget_area_by_handle($data['handle']); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Widget Area successfully removed!", EG_TEXTDOMAIN), array('data' => $result)); } else { Essential_Grid::ajaxResponseError($result, false); } break; case 'get_preview_html_markup': //add wpml transient $lang_code = ''; if (Essential_Grid_Wpml::is_wpml_exists()) { $lang_code = Essential_Grid_Wpml::get_current_lang_code(); } if (isset($data['id'])) { delete_transient('ess_grid_trans_query_' . $data['id'] . $lang_code); //delete cache } $result = Essential_Grid_Base::output_demo_skin_html($data); if (isset($result['error'])) { Essential_Grid::ajaxResponseData($result); } else { Essential_Grid::ajaxResponseData(array("data" => array('html' => $result['html'], 'preview' => @$result['preview']))); } break; /* //TP: CHUNK case 'get_preview_html_markup_chunk': //only for custom grid $grid = new Essential_Grid(); $grid->init_by_data($data); $html = ''; if($grid->is_custom_grid()){ ob_start(); $grid->output_by_custom('custom', true); $html = ob_get_contents(); ob_clean(); ob_end_clean(); } $order_id = self::getPostVar("order_id", false); Essential_Grid::ajaxResponseData(array("data"=>array('preview' => $html, 'order_id' => $order_id))); break; */ /* //TP: CHUNK case 'get_preview_html_markup_chunk': //only for custom grid $grid = new Essential_Grid(); $grid->init_by_data($data); $html = ''; if($grid->is_custom_grid()){ ob_start(); $grid->output_by_custom('custom', true); $html = ob_get_contents(); ob_clean(); ob_end_clean(); } $order_id = self::getPostVar("order_id", false); Essential_Grid::ajaxResponseData(array("data"=>array('preview' => $html, 'order_id' => $order_id))); break; */ case 'save_search_settings': if (!empty($data)) { update_option('esg-search-settings', $data); } Essential_Grid::ajaxResponseSuccess(__("Search Settings succesfully saved!", EG_TEXTDOMAIN)); break; case 'update_general_settings': $result = self::savePluginPermission($data['permission']); $cur_query = get_option('tp_eg_query_type', 'wp_query'); update_option('tp_eg_output_protection', @$data['protection']); update_option('tp_eg_tooltips', @$data['tooltips']); update_option('tp_eg_wait_for_fonts', @$data['wait_for_fonts']); update_option('tp_eg_js_to_footer', @$data['js_to_footer']); update_option('tp_eg_use_cache', @$data['use_cache']); update_option('tp_eg_query_type', @$data['query_type']); update_option('tp_eg_enable_log', @$data['enable_log']); update_option('tp_eg_use_lightbox', @$data['use_lightbox']); if (@$data['use_lightbox'] === 'jackbox') { Essential_Grid_Jackbox::enable_jackbox(); } else { Essential_Grid_Jackbox::disable_jackbox(); } if ($cur_query !== $data['query_type']) { //delete cache $lang = array(); if (Essential_Grid_Wpml::is_wpml_exists()) { $lang = icl_get_languages(); } $grids = Essential_Grid::get_essential_grids(); if (!empty($grids)) { foreach ($grids as $grid) { if (!empty($lang)) { foreach ($lang as $code => $val) { delete_transient('ess_grid_trans_query_' . $grid->id . $val['language_code']); delete_transient('ess_grid_trans_full_grid_' . $grid->id . $val['language_code']); } } else { delete_transient('ess_grid_trans_query_' . $grid->id); delete_transient('ess_grid_trans_full_grid_' . $grid->id); } } } } if ($result !== true) { $error = __("Global Settings did not change!", EG_TEXTDOMAIN); } else { Essential_Grid::ajaxResponseSuccess(__("Global Settings succesfully saved!", EG_TEXTDOMAIN), $result); } break; case 'update_create_grid': $result = self::update_create_grid($data); if ($result !== true) { $error = $result; } else { $lang = array(); if (Essential_Grid_Wpml::is_wpml_exists()) { $lang = icl_get_languages(); } if (isset($data['id']) && intval($data['id']) > 0) { if (!empty($lang)) { foreach ($lang as $code => $val) { delete_transient('ess_grid_trans_query_' . $data['id'] . $val['language_code']); //delete cache delete_transient('ess_grid_trans_full_grid_' . $data['id'] . $val['language_code']); //delete cache } } else { delete_transient('ess_grid_trans_query_' . $data['id']); //delete cache delete_transient('ess_grid_trans_full_grid_' . $data['id']); //delete cache } Essential_Grid::ajaxResponseSuccess(__("Grid successfully saved/changed!", EG_TEXTDOMAIN), $result); } else { Essential_Grid::ajaxResponseSuccess(__("Grid successfully saved/changed!", EG_TEXTDOMAIN), array('data' => $result, 'is_redirect' => true, 'redirect_url' => self::getViewUrl(Essential_Grid_Admin::VIEW_OVERVIEW))); } } break; case 'delete_grid': $result = self::delete_grid_by_id($data); if ($result !== true) { $error = $result; } else { Essential_Grid::ajaxResponseSuccess(__("Grid deleted", EG_TEXTDOMAIN), array('data' => $result, 'is_redirect' => true, 'redirect_url' => self::getViewUrl(Essential_Grid_Admin::VIEW_OVERVIEW))); } break; case 'duplicate_grid': $result = self::duplicate_grid_by_id($data); if ($result !== true) { $error = $result; } else { Essential_Grid::ajaxResponseSuccess(__("Grid duplicated", EG_TEXTDOMAIN), array('data' => $result, 'is_redirect' => true, 'redirect_url' => self::getViewUrl(Essential_Grid_Admin::VIEW_OVERVIEW))); } break; case 'update_create_item_skin': $result = Essential_Grid_Item_Skin::update_save_item_skin($data); if ($result !== true) { $error = $result; } else { if (isset($data['id']) && intval($data['id']) > 0) { Essential_Grid::ajaxResponseSuccess(__("Item Skin changed", EG_TEXTDOMAIN), array('data' => $result)); } else { Essential_Grid::ajaxResponseSuccess(__("Item Skin created/changed", EG_TEXTDOMAIN), array('data' => $result, 'is_redirect' => true, 'redirect_url' => self::getViewUrl("", "", 'essential-' . Essential_Grid_Admin::VIEW_SUB_ITEM_SKIN_OVERVIEW))); } } break; case 'update_custom_css': if (isset($data['global_css'])) { Essential_Grid_Global_Css::set_global_css_styles($data['global_css']); Essential_Grid::ajaxResponseSuccess(__("CSS saved!", EG_TEXTDOMAIN), ''); } else { $error = __("No CSS Received", EG_TEXTDOMAIN); } break; case 'delete_item_skin': $result = Essential_Grid_Item_Skin::delete_item_skin_by_id($data); if ($result !== true) { $error = $result; } else { Essential_Grid::ajaxResponseSuccess(__("Item Skin deleted", EG_TEXTDOMAIN), array('data' => $result)); } break; case 'duplicate_item_skin': $result = Essential_Grid_Item_Skin::duplicate_item_skin_by_id($data); if ($result !== true) { $error = $result; } else { Essential_Grid::ajaxResponseSuccess(__("Item Skin duplicated", EG_TEXTDOMAIN), array('data' => $result, 'is_redirect' => true, 'redirect_url' => self::getViewUrl("", "", 'essential-' . Essential_Grid_Admin::VIEW_SUB_ITEM_SKIN_OVERVIEW))); } break; case 'star_item_skin': $result = Essential_Grid_Item_Skin::star_item_skin_by_id($data); if ($result !== true) { $error = $result; } else { Essential_Grid::ajaxResponseSuccess(__("Favorite Changed", EG_TEXTDOMAIN), array('data' => $result)); } break; case 'update_create_item_element': $result = Essential_Grid_Item_Element::update_create_essential_item_element($data); if ($result !== true) { $error = $result; } else { Essential_Grid::ajaxResponseSuccess(__("Item Element created/changed", EG_TEXTDOMAIN), array('data' => $result)); } break; case 'check_item_element_existence': $result = Essential_Grid_Item_Element::check_existence_by_handle(@$data['name']); if ($result === false) { Essential_Grid::ajaxResponseData(array("data" => array('existence' => 'false'))); } elseif ($result === true) { Essential_Grid::ajaxResponseData(array("data" => array('existence' => 'true'))); } else { Essential_Grid::ajaxResponseData(array("data" => array('existence' => $result))); } break; case 'get_predefined_elements': $elements = Essential_Grid_Item_Element::getElementsForJavascript(); $html_elements = Essential_Grid_Item_Element::prepareDefaultElementsForEditor(); $html_elements .= Essential_Grid_Item_Element::prepareTextElementsForEditor(); Essential_Grid::ajaxResponseData(array("data" => array('elements' => $elements, 'html' => $html_elements))); break; case 'delete_predefined_elements': $result = Essential_Grid_Item_Element::delete_element_by_handle($data); if ($result !== true) { $error = $result; } else { Essential_Grid::ajaxResponseSuccess(__("Item Element successfully deleted", EG_TEXTDOMAIN), array('data' => $result)); } break; case 'update_create_navigation_skin_css': $nav = new Essential_Grid_Navigation(); $result = $nav->update_create_navigation_skin_css($data); if ($result !== true) { $error = $result; } else { $base = new Essential_Grid_Base(); $skin_css = Essential_Grid_Navigation::output_navigation_skins(); $skins = Essential_Grid_Navigation::get_essential_navigation_skins(); $select = ''; foreach ($skins as $skin) { $select .= '<option value="' . $skin['handle'] . '">' . $skin['name'] . '</option>' . "\n"; } if (isset($data['sid']) && intval($data['sid']) > 0) { Essential_Grid::ajaxResponseSuccess(__("Navigation Skin successfully changed!", EG_TEXTDOMAIN), array('css' => $skin_css, 'select' => $select, 'default_skins' => $skins)); } else { Essential_Grid::ajaxResponseSuccess(__("Navigation Skin successfully created", EG_TEXTDOMAIN), array('css' => $skin_css, 'select' => $select, 'default_skins' => $skins)); } } break; case 'delete_navigation_skin_css': $nav = new Essential_Grid_Navigation(); $result = $nav->delete_navigation_skin_css($data); if ($result !== true) { $error = $result; } else { $base = new Essential_Grid_Base(); $skin_css = Essential_Grid_Navigation::output_navigation_skins(); $skins = Essential_Grid_Navigation::get_essential_navigation_skins(); $select = ''; foreach ($skins as $skin) { $select .= '<option value="' . $skin['handle'] . '">' . $skin['name'] . '</option>' . "\n"; } Essential_Grid::ajaxResponseSuccess(__("Navigation Skin successfully deleted!", EG_TEXTDOMAIN), array('css' => $skin_css, 'select' => $select, 'default_skins' => $skins)); } break; case 'get_post_meta_html_for_editor': if (!isset($data['post_id']) || intval($data['post_id']) == 0) { Essential_Grid::ajaxResponseError(__('No Post ID/Wrong Post ID!', EG_TEXTDOMAIN), false); exit; } if (!isset($data['grid_id']) || intval($data['grid_id']) == 0) { Essential_Grid::ajaxResponseError(__('Please save the grid first to use this feature!', EG_TEXTDOMAIN), false); exit; } $post = get_post($data['post_id']); $disable_advanced = true; //nessecary, so that only normal things can be changed in preview mode if (!empty($post)) { $grid_id = $data['grid_id']; ob_start(); require 'views/elements/grid-meta-box.php'; $content = ob_get_contents(); ob_clean(); ob_end_clean(); Essential_Grid::ajaxResponseData(array("data" => array('html' => $content))); } else { Essential_Grid::ajaxResponseError(__('Post not found!', EG_TEXTDOMAIN), false); exit; } break; case 'update_post_meta_through_editor': if (!isset($data['metas']) || !isset($data['metas']['post_id']) || intval($data['metas']['post_id']) == 0) { Essential_Grid::ajaxResponseError(__('No Post ID/Wrong Post ID!', EG_TEXTDOMAIN), false); exit; } if (!isset($data['metas']) || !isset($data['metas']['grid_id']) || intval($data['metas']['grid_id']) == 0) { Essential_Grid::ajaxResponseError(__('Please save the grid first to use this feature!', EG_TEXTDOMAIN), false); exit; } //set the cobbles setting to the post $cobbles = json_decode(get_post_meta($data['metas']['post_id'], 'eg_cobbles', true), true); $cobbles[$data['metas']['grid_id']]['cobbles'] = $data['metas']['eg_cobbles_size']; $cobbles = json_encode($cobbles); update_post_meta($data['metas']['post_id'], 'eg_cobbles', $cobbles); //set the use_skin setting to the post $use_skin = json_decode(get_post_meta($data['metas']['post_id'], 'eg_use_skin', true), true); $use_skin[$data['metas']['grid_id']]['use-skin'] = $data['metas']['eg_use_skin']; $use_skin = json_encode($use_skin); update_post_meta($data['metas']['post_id'], 'eg_use_skin', $use_skin); $result = self::custom_meta_box_save($data['metas']['post_id'], $data['metas'], true); self::check_for_transient_deletion($data['metas']['post_id']); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__("Post Meta saved!", EG_TEXTDOMAIN), array()); } else { Essential_Grid::ajaxResponseError(__('Post not found!', EG_TEXTDOMAIN), false); exit; } break; case 'trigger_post_meta_visibility': if (!isset($data['post_id']) || intval($data['post_id']) == 0) { Essential_Grid::ajaxResponseError(__('No Post ID/Wrong Post ID!', EG_TEXTDOMAIN), false); exit; } if (!isset($data['grid_id']) || intval($data['grid_id']) == 0) { Essential_Grid::ajaxResponseError(__('Please save the grid first to use this feature!', EG_TEXTDOMAIN), false); exit; } $visibility = json_decode(get_post_meta($data['post_id'], 'eg_visibility', true), true); $found = false; if (!empty($visibility) && is_array($visibility)) { foreach ($visibility as $grid => $setting) { if ($grid == $data['grid_id']) { if ($setting == false) { $visibility[$grid] = true; } else { $visibility[$grid] = false; } $found = true; break; } } } if (!$found) { $visibility[$data['grid_id']] = false; } $visibility = json_encode($visibility); update_post_meta($data['post_id'], 'eg_visibility', $visibility); self::check_for_transient_deletion($data['post_id']); Essential_Grid::ajaxResponseSuccess(__("Visibility of Post for this Grid changed!", EG_TEXTDOMAIN), array()); break; case 'get_image_by_id': if (!isset($data['img_id']) || intval($data['img_id']) == 0) { $error = __('Wrong Image ID given', EG_TEXTDOMAIN); } else { $img = wp_get_attachment_image_src($data['img_id'], 'full'); if ($img !== false) { Essential_Grid::ajaxResponseSuccess('', array('url' => $img[0])); } else { $error = __('Image with given ID does not exist', EG_TEXTDOMAIN); } } break; case 'activate_purchase_code': $result = false; if (!empty($data['username']) && !empty($data['api_key']) && !empty($data['code'])) { $result = Essential_Grid_Admin::check_purchase_verification($data); } else { $error = __('The API key, the Purchase Code and the Username need to be set!', EG_TEXTDOMAIN); } if ($result === true) { Essential_Grid::ajaxResponseSuccess(__('Purchase Code Successfully Activated', EG_TEXTDOMAIN), array('data' => $result, 'is_redirect' => true, 'redirect_url' => self::getViewUrl("", "", 'essential-' . Essential_Grid_Admin::VIEW_START))); } else { if ($result !== false) { $error = $result; } else { $error = __('Purchase Code is invalid', EG_TEXTDOMAIN); } Essential_Grid::ajaxResponseError($error, false); exit; } break; case 'deactivate_purchase_code': $result = Essential_Grid_Admin::do_purchase_deactivation($data); if ($result === true) { Essential_Grid::ajaxResponseSuccess(__('Successfully removed validation', EG_TEXTDOMAIN), array('data' => $result, 'is_redirect' => true, 'redirect_url' => self::getViewUrl("", "", 'essential-' . Essential_Grid_Admin::VIEW_START))); } else { if ($result !== false) { $error = $result; } else { $error = __('Could not remove Validation!', EG_TEXTDOMAIN); } Essential_Grid::ajaxResponseError($error, false); exit; } break; case 'dismiss_notice': update_option('tp_eg_valid-notice', 'false'); Essential_Grid::ajaxResponseSuccess('.'); break; case 'import_default_post_data': try { require EG_PLUGIN_PATH . 'includes/assets/default-posts.php'; require EG_PLUGIN_PATH . 'includes/assets/default-grids-meta-fonts.php'; if (isset($json_tax)) { $import_tax = new PunchPost(); $import_tax->import_taxonomies($json_tax); } //insert meta, grids & punchfonts $im = new Essential_Grid_Import(); if (isset($tp_grid_meta_fonts)) { $tp_grid_meta_fonts = json_decode($tp_grid_meta_fonts, true); $grids = @$tp_grid_meta_fonts['grids']; if (!empty($grids) && is_array($grids)) { $grids_imported = $im->import_grids($grids); } $custom_metas = @$tp_grid_meta_fonts['custom-meta']; if (!empty($custom_metas) && is_array($custom_metas)) { $custom_metas_imported = $im->import_custom_meta($custom_metas); } $custom_fonts = @$tp_grid_meta_fonts['punch-fonts']; if (!empty($custom_fonts) && is_array($custom_fonts)) { $custom_fonts_imported = $im->import_punch_fonts($custom_fonts); } } if (isset($json_posts)) { $import = new PunchPort(); $import->set_tp_import_posts($json_posts); $import->import_custom_posts(); } Essential_Grid::ajaxResponseSuccess(__('Demo data successfully imported', EG_TEXTDOMAIN), array()); } catch (Exception $d) { $error = __('Something went wrong, please contact the developer', EG_TEXTDOMAIN); } break; case 'export_data': $export_grids = self::getPostVar('export-grids-id', false); $export_skins = self::getPostVar('export-skins-id', false); $export_elements = self::getPostVar('export-elements-id', false); $export_navigation_skins = self::getPostVar('export-navigation-skins-id', false); $export_global_styles = self::getPostVar('export-global-styles', false); $export_custom_meta = self::getPostVar('export-custom-meta-handle', false); $export_punch_fonts = self::getPostVar('export-punch-fonts-handle', false); header('Content-Type: text/json'); header('Content-Disposition: attachment;filename=ess_grid.json'); ob_start(); $export = array(); $ex = new Essential_Grid_Export(); //export Grids if (!empty($export_grids)) { $export['grids'] = $ex->export_grids($export_grids); } //export Skins if (!empty($export_skins)) { $export['skins'] = $ex->export_skins($export_skins); } //export Elements if (!empty($export_elements)) { $export['elements'] = $ex->export_elements($export_elements); } //export Navigation Skins if (!empty($export_navigation_skins)) { $export['navigation-skins'] = $ex->export_navigation_skins($export_navigation_skins); } //export Custom Meta if (!empty($export_custom_meta)) { $export['custom-meta'] = $ex->export_custom_meta($export_custom_meta); } //export Punch Fonts if (!empty($export_punch_fonts)) { $export['punch-fonts'] = $ex->export_punch_fonts($export_punch_fonts); } //export Global Styles if ($export_global_styles == 'on') { $export['global-css'] = $ex->export_global_styles($export_global_styles); } echo json_encode($export); $content = ob_get_contents(); ob_clean(); ob_end_clean(); echo $content; exit; break; case 'import_data': if (!isset($data['imports']) || empty($data['imports'])) { Essential_Grid::ajaxResponseError(__('No data for import selected', EG_TEXTDOMAIN), false); exit; } try { $im = new Essential_Grid_Import(); $temp_d = @$data['imports']; unset($temp_d['data-grids']); unset($temp_d['data-skins']); unset($temp_d['data-elements']); unset($temp_d['data-navigation-skins']); unset($temp_d['data-global-css']); $im->set_overwrite_data($temp_d); //set overwrite data global to class $skins = @$data['imports']['data-skins']; if (!empty($skins) && is_array($skins)) { foreach ($skins as $key => $skin) { $tskin = json_decode(stripslashes($skin), true); if (empty($tskin)) { $tskin = json_decode($skin, true); } $skins[$key] = $tskin; } if (!empty($skins)) { $skins_ids = @$data['imports']['import-skins-id']; $skins_imported = $im->import_skins($skins, $skins_ids); } } $navigation_skins = @$data['imports']['data-navigation-skins']; if (!empty($navigation_skins) && is_array($navigation_skins)) { foreach ($navigation_skins as $key => $navigation_skin) { $tnavigation_skin = json_decode(stripslashes($navigation_skin), true); if (empty($tnavigation_skin)) { $tnavigation_skin = json_decode($navigation_skin, true); } $navigation_skins[$key] = $tnavigation_skin; } if (!empty($navigation_skins)) { $navigation_skins_ids = @$data['imports']['import-navigation-skins-id']; $navigation_skins_imported = $im->import_navigation_skins(@$navigation_skins, $navigation_skins_ids); } } $grids = @$data['imports']['data-grids']; if (!empty($grids) && is_array($grids)) { foreach ($grids as $key => $grid) { $tgrid = json_decode(stripslashes($grid), true); if (empty($tgrid)) { $tgrid = json_decode($grid, true); } $grids[$key] = $tgrid; } if (!empty($grids)) { $grids_ids = @$data['imports']['import-grids-id']; $grids_imported = $im->import_grids($grids, $grids_ids); } } $elements = @$data['imports']['data-elements']; if (!empty($elements) && is_array($elements)) { foreach ($elements as $key => $element) { $telement = json_decode(stripslashes($element), true); if (empty($telement)) { $telement = json_decode($element, true); } $elements[$key] = $telement; } if (!empty($elements)) { $elements_ids = @$data['imports']['import-elements-id']; $elements_imported = $im->import_elements(@$elements, $elements_ids); } } $custom_metas = @$data['imports']['data-custom-meta']; if (!empty($custom_metas) && is_array($custom_metas)) { foreach ($custom_metas as $key => $custom_meta) { $tcustom_meta = json_decode(stripslashes($custom_meta), true); if (empty($tcustom_meta)) { $tcustom_meta = json_decode($custom_meta, true); } $custom_metas[$key] = $tcustom_meta; } if (!empty($custom_metas)) { $custom_metas_handle = @$data['imports']['import-custom-meta-handle']; $custom_metas_imported = $im->import_custom_meta($custom_metas, $custom_metas_handle); } } $custom_fonts = @$data['imports']['data-punch-fonts']; if (!empty($custom_fonts) && is_array($custom_fonts)) { foreach ($custom_fonts as $key => $custom_font) { $tcustom_font = json_decode(stripslashes($custom_font), true); if (empty($tcustom_font)) { $tcustom_font = json_decode($custom_font, true); } $custom_fonts[$key] = $tcustom_font; } if (!empty($custom_fonts)) { $custom_fonts_handle = @$data['imports']['import-punch-fonts-handle']; $custom_fonts_imported = $im->import_punch_fonts($custom_fonts, $custom_fonts_handle); } } if (@$data['imports']['import-global-styles'] == 'on') { $global_css = @$data['imports']['data-global-css']; $tglobal_css = stripslashes($global_css); if (empty($tglobal_css)) { $tglobal_css = $global_css; } $global_styles_imported = $im->import_global_styles($tglobal_css); } Essential_Grid::ajaxResponseSuccess(__('Successfully imported data', EG_TEXTDOMAIN), array('is_redirect' => true, 'redirect_url' => self::getViewUrl("", "", 'essential-' . Essential_Grid_Admin::VIEW_START))); } catch (Exception $d) { $error = __('Something went wrong, please contact the developer', EG_TEXTDOMAIN); } break; case 'delete_full_cache': $lang = array(); if (Essential_Grid_Wpml::is_wpml_exists()) { $lang = icl_get_languages(); } $grids = Essential_Grid::get_essential_grids(); if (!empty($grids)) { foreach ($grids as $grid) { if (!empty($lang)) { foreach ($lang as $code => $val) { delete_transient('ess_grid_trans_query_' . $grid->id . $val['language_code']); delete_transient('ess_grid_trans_full_grid_' . $grid->id . $val['language_code']); } } else { delete_transient('ess_grid_trans_query_' . $grid->id); delete_transient('ess_grid_trans_full_grid_' . $grid->id); } } } Essential_Grid::ajaxResponseSuccess(__('Successfully deleted all cache', EG_TEXTDOMAIN), array()); break; case "get_image_url": if (isset($data['imageid']) && intval($data['imageid']) > 0) { $img_atts = wp_get_attachment_image_src($data['imageid']); if ($img_atts !== false) { $img_src = $img_atts[0]; Essential_Grid::ajaxResponseSuccess(__("Image URL found", EG_TEXTDOMAIN), array('url' => $img_src, 'imageid' => $data['imageid'])); } } $error = __('No correct image ID given', EG_TEXTDOMAIN); break; case "toggle_grid_favorite": if (isset($data['id']) && intval($data['id']) > 0) { $return = self::toggle_favorite_by_id($data['id']); if ($return === true) { Essential_Grid::ajaxResponseSuccess(__("Favorite Set", EG_TEXTDOMAIN)); } else { $error = $return; } } else { $error = __('No ID given', EG_TEXTDOMAIN); } break; case "subscribe_to_newsletter": if (isset($data['email']) && !empty($data['email'])) { $return = ThemePunch_Newsletter::subscribe($data['email']); if ($return !== false) { if (!isset($return['status']) || $return['status'] === 'error') { $error = isset($return['message']) && !empty($return['message']) ? $return['message'] : __('Invalid Email', EG_TEXTDOMAIN); } else { Essential_Grid::ajaxResponseSuccess(__("Success! Please check your Emails to finish the subscribtion", EG_TEXTDOMAIN), $return); } } else { $error = __('Invalid Email/Could not connect to the Newsletter server', EG_TEXTDOMAIN); } } else { $error = __('No Email given', EG_TEXTDOMAIN); } break; case "unsubscribe_to_newsletter": if (isset($data['email']) && !empty($data['email'])) { $return = ThemePunch_Newsletter::unsubscribe($data['email']); if ($return !== false) { if (!isset($return['status']) || $return['status'] === 'error') { $error = isset($return['message']) && !empty($return['message']) ? $return['message'] : __('Invalid Email', EG_TEXTDOMAIN); } else { Essential_Grid::ajaxResponseSuccess(__("Success! Please check your Emails to finish the process", EG_TEXTDOMAIN), $return); } } else { $error = __('Invalid Email/Could not connect to the Newsletter server', EG_TEXTDOMAIN); } } else { $error = __('No Email given', EG_TEXTDOMAIN); } break; default: $error = true; break; } } else { $error = true; } if ($error !== false) { $showError = __("Wrong Request!", EG_TEXTDOMAIN); if ($error !== true) { $showError = __("Ajax Error: ", EG_TEXTDOMAIN) . $error; } Essential_Grid::ajaxResponseError($showError, false); } exit; } catch (Exception $e) { exit; } }
/** * Output by posts */ public function output_by_posts($grid_preview = false) { global $sitepress; $post_limit = 99999; $base = new Essential_Grid_Base(); $navigation_c = new Essential_Grid_Navigation($this->grid_id); $meta_c = new Essential_Grid_Meta(); $item_skin = new Essential_Grid_Item_Skin(); $item_skin->grid_id = $this->grid_id; $item_skin->set_grid_type($base->getVar($this->grid_params, 'layout', 'even')); $item_skin->set_default_image_by_id($base->getVar($this->grid_postparams, 'default-image', 0, 'i')); $m = new Essential_Grid_Meta(); $skins_html = ''; $skins_css = ''; $filters = array(); $rows_unlimited = $base->getVar($this->grid_params, 'rows-unlimited', 'on'); $load_more = $base->getVar($this->grid_params, 'load-more', 'none'); $load_more_start = $base->getVar($this->grid_params, 'load-more-start', 3, 'i'); if ($rows_unlimited == 'on' && $load_more !== 'none' && $grid_preview == false) { //grid_preview means disable load more in preview $post_limit = $load_more_start; } $start_sortby = $base->getVar($this->grid_params, 'sorting-order-by-start', 'none'); $start_sortby_type = $base->getVar($this->grid_params, 'sorting-order-type', 'ASC'); $post_category = $base->getVar($this->grid_postparams, 'post_category'); $post_types = $base->getVar($this->grid_postparams, 'post_types'); $page_ids = explode(',', $base->getVar($this->grid_postparams, 'selected_pages', '-1')); $cat_relation = $base->getVar($this->grid_postparams, 'category-relation', 'OR'); $max_entries = $this->get_maximum_entries($this); $additional_query = $base->getVar($this->grid_postparams, 'additional-query', ''); if ($additional_query !== '') { $additional_query = wp_parse_args($additional_query); } $cat_tax = array('cats' => '', 'tax' => ''); if ($this->custom_posts !== null) { //output by specific set posts $posts = Essential_Grid_Base::get_posts_by_ids($this->custom_posts, $start_sortby, $start_sortby_type); $cat_tax_obj = Essential_Grid_Base::get_categories_by_posts($posts); if (!empty($cat_tax_obj)) { $cat_tax['cats'] = Essential_Grid_Base::translate_categories_to_string($cat_tax_obj); } //$cat_tax = Essential_Grid_Base::getCatAndTaxData($post_category); //get cats by posts } elseif ($this->custom_special !== null) { //output by some special rule $max_entries = intval($base->getVar($this->grid_params, 'max-entries', '20')); if ($max_entries == 0) { $max_entries = 20; } switch ($this->custom_special) { case 'related': $posts = Essential_Grid_Base::get_related_posts($max_entries); break; case 'popular': $posts = Essential_Grid_Base::get_popular_posts($max_entries); break; case 'latest': default: $posts = Essential_Grid_Base::get_latest_posts($max_entries); break; } $cat_tax_obj = Essential_Grid_Base::get_categories_by_posts($posts); if (!empty($cat_tax_obj)) { $cat_tax['cats'] = Essential_Grid_Base::translate_categories_to_string($cat_tax_obj); } //$cat_tax = Essential_Grid_Base::getCatAndTaxData($post_category); //get cats by posts } else { //output with the grid settings from an existing grid $cat_tax = Essential_Grid_Base::getCatAndTaxData($post_category); $posts = Essential_Grid_Base::getPostsByCategory($this->grid_id, $cat_tax['cats'], $post_types, $cat_tax['tax'], $page_ids, $start_sortby, $start_sortby_type, $max_entries, $additional_query, true, $cat_relation); } $nav_layout = $base->getVar($this->grid_params, 'navigation-layout', array()); $nav_skin = $base->getVar($this->grid_params, 'navigation-skin', 'minimal-light'); $hover_animation = $base->getVar($this->grid_params, 'hover-animation', 'fade'); $filter_allow = $base->getVar($this->grid_params, 'filter-arrows', 'single'); $filter_start = $base->getVar($this->grid_params, 'filter-start', ''); $nav_type = $base->getVar($this->grid_params, 'nagivation-type', 'internal'); $do_nav = $nav_type == 'internal' ? true : false; $order_by = explode(',', $base->getVar($this->grid_params, 'sorting-order-by', 'date')); if (!is_array($order_by)) { $order_by = array($order_by); } $order_by_start = $base->getVar($this->grid_params, 'sorting-order-by-start', 'none'); if (strpos($order_by_start, 'eg-') === 0 || strpos($order_by_start, 'egl-') === 0) { //add meta at the end for meta sorting //if essential Meta, replace to meta name. Else -> replace - and _ with space, set each word uppercase $metas = $m->get_all_meta(); $f = false; if (!empty($metas)) { foreach ($metas as $meta) { if ('eg-' . $meta['handle'] == $order_by_start || 'egl-' . $meta['handle'] == $order_by_start) { $f = true; $order_by_start = $meta['name']; break; } } } if ($f === false) { $order_by_start = ucwords(str_replace(array('-', '_'), array(' ', ' '), $order_by_start)); } } $sort_by_text = $base->getVar($this->grid_params, 'sort-by-text', __('Sort By ', EG_TEXTDOMAIN)); $search_text = $base->getVar($this->grid_params, 'search-text', __('Search...', EG_TEXTDOMAIN)); $module_spacings = $base->getVar($this->grid_params, 'module-spacings', '5'); $top_1_align = $base->getVar($this->grid_params, 'top-1-align', 'center'); $top_2_align = $base->getVar($this->grid_params, 'top-2-align', 'center'); $bottom_1_align = $base->getVar($this->grid_params, 'bottom-1-align', 'center'); $bottom_2_align = $base->getVar($this->grid_params, 'bottom-2-align', 'center'); $top_1_margin = $base->getVar($this->grid_params, 'top-1-margin-bottom', 0, 'i'); $top_2_margin = $base->getVar($this->grid_params, 'top-2-margin-bottom', 0, 'i'); $bottom_1_margin = $base->getVar($this->grid_params, 'bottom-1-margin-top', 0, 'i'); $bottom_2_margin = $base->getVar($this->grid_params, 'bottom-2-margin-top', 0, 'i'); $left_margin = $base->getVar($this->grid_params, 'left-margin-left', 0, 'i'); $right_margin = $base->getVar($this->grid_params, 'right-margin-right', 0, 'i'); $nav_styles['top-1'] = array('margin-bottom' => $top_1_margin . 'px', 'text-align' => $top_1_align); $nav_styles['top-2'] = array('margin-bottom' => $top_2_margin . 'px', 'text-align' => $top_2_align); $nav_styles['left'] = array('margin-left' => $left_margin . 'px'); $nav_styles['right'] = array('margin-right' => $right_margin . 'px'); $nav_styles['bottom-1'] = array('margin-top' => $bottom_1_margin . 'px', 'text-align' => $bottom_1_align); $nav_styles['bottom-2'] = array('margin-top' => $bottom_2_margin . 'px', 'text-align' => $bottom_2_align); $ajax_container_position = $base->getVar($this->grid_params, 'ajax-container-position', 'top'); if ($do_nav) { //only do if internal is selected $navigation_c->set_special_class('esg-fgc-' . $this->grid_id); $filters_meta = array(); foreach ($this->grid_params as $gkey => $gparam) { if (strpos($gkey, 'filter-selected') === false) { continue; } $fil_id = intval(str_replace('filter-selected-', '', $gkey)); $fil_id = $fil_id == 0 ? '' : '-' . $fil_id; $filters_arr = array(); $filters_arr['filter' . $fil_id]['filter-grouping'] = $base->getVar($this->grid_params, 'filter-grouping' . $fil_id, 'false'); $filters_arr['filter' . $fil_id]['filter-listing'] = $base->getVar($this->grid_params, 'filter-listing' . $fil_id, 'list'); $filters_arr['filter' . $fil_id]['filter-selected'] = $base->getVar($this->grid_params, 'filter-selected' . $fil_id, array()); $filter_all_text = $base->getVar($this->grid_params, 'filter-all-text' . $fil_id, __('Filter - All', EG_TEXTDOMAIN)); $filter_dropdown_text = $base->getVar($this->grid_params, 'filter-dropdown-text' . $fil_id, __('Filter Categories', EG_TEXTDOMAIN)); $show_count = $base->getVar($this->grid_params, 'filter-counter' . $fil_id, 'off'); if (!empty($filters_arr['filter' . $fil_id]['filter-selected'])) { if (!empty($posts) && count($posts) > 0) { foreach ($filters_arr['filter' . $fil_id]['filter-selected'] as $fk => $filter) { if (strpos($filter, 'meta-') === 0) { unset($filters_arr['filter' . $fil_id]['filter-selected'][$fk]); //delete entry foreach ($posts as $key => $post) { $fil = str_replace('meta-', '', $filter); $post_filter_meta = $meta_c->get_meta_value_by_handle($post['ID'], 'eg-' . $fil); $arr = json_decode($post_filter_meta, true); $cur_filter = is_array($arr) ? $arr : array($post_filter_meta); //$cur_filter = explode(',', $post_filter_meta); $add_filter = array(); if (!empty($cur_filter)) { foreach ($cur_filter as $k => $v) { if (trim($v) !== '') { $add_filter[sanitize_key($v)] = array('name' => $v, 'slug' => sanitize_key($v), 'parent' => '0'); if (!empty($filters_arr['filter' . $fil_id]['filter-selected'])) { $filter_found = false; foreach ($filters_arr['filter' . $fil_id]['filter-selected'] as $fcheck) { if ($fcheck == sanitize_key($v)) { $filter_found = true; break; } } if (!$filter_found) { $filters_arr['filter' . $fil_id]['filter-selected'][] = sanitize_key($v); //add found meta } } else { $filters_arr['filter' . $fil_id]['filter-selected'][] = sanitize_key($v); //add found meta } } } $filters_meta = $filters_meta + $add_filter; if (!empty($add_filter)) { $navigation_c->set_filter($add_filter); } } } } } } } $navigation_c->set_filter_settings('filter' . $fil_id, $filters_arr['filter' . $fil_id]); $navigation_c->set_filter_text($filter_all_text, $fil_id); $navigation_c->set_dropdown_text($filter_dropdown_text, $fil_id); $navigation_c->set_show_count($show_count, $fil_id); } $navigation_c->set_filter_type($filter_allow); $navigation_c->set_filter_start_select($filter_start); $navigation_c->set_specific_styles($nav_styles); $navigation_c->set_layout($nav_layout); //set the layout $navigation_c->set_orders($order_by); //set order of filter $navigation_c->set_orders_text($sort_by_text); //set order of filter $navigation_c->set_orders_start($order_by_start); //set order of filter $navigation_c->set_search_text($search_text); } $nav_filters = array(); $taxes = array('post_tag'); if (!empty($cat_tax['tax'])) { $taxes = explode(',', $cat_tax['tax']); } if (!empty($cat_tax['cats'])) { $cats = explode(',', $cat_tax['cats']); foreach ($cats as $key => $id) { if (Essential_Grid_Wpml::is_wpml_exists() && isset($sitepress)) { $new_id = icl_object_id($id, 'category', true, $sitepress->get_default_language()); $cat = get_category($new_id); } else { $cat = get_category($id); } if (is_object($cat)) { $nav_filters[$id] = array('name' => $cat->cat_name, 'slug' => sanitize_key($cat->slug), 'parent' => $cat->category_parent); } foreach ($taxes as $custom_tax) { $term = get_term_by('id', $id, $custom_tax); if (is_object($term)) { $nav_filters[$id] = array('name' => $term->name, 'slug' => sanitize_key($term->slug), 'parent' => $term->parent); } } } if (!empty($filters_meta)) { $nav_filters = $filters_meta + $nav_filters; } asort($nav_filters); } $item_skin->init_by_id($base->getVar($this->grid_params, 'entry-skin', 0, 'i')); $lazy_load = $base->getVar($this->grid_params, 'lazy-loading', 'off'); if ($lazy_load == 'on') { $item_skin->set_lazy_load(true); } $default_media_source_order = $base->getVar($this->grid_postparams, 'media-source-order', ''); $item_skin->set_default_media_source_order($default_media_source_order); $default_lightbox_source_order = $base->getVar($this->grid_params, 'lb-source-order', ''); $item_skin->set_default_lightbox_source_order($default_lightbox_source_order); $default_aj_source_order = $base->getVar($this->grid_params, 'aj-source-order', ''); $item_skin->set_default_ajax_source_order($default_aj_source_order); $lightbox_mode = $base->getVar($this->grid_params, 'lightbox-mode', 'single'); $lightbox_include_media = $base->getVar($this->grid_params, 'lightbox-exclude-media', 'off'); $post_media_source_type = $base->getVar($this->grid_postparams, 'image-source-type', 'full'); $default_video_poster_order = $base->getVar($this->grid_params, 'poster-source-order', ''); $item_skin->set_default_video_poster_order($default_video_poster_order); $layout = $base->getVar($this->grid_params, 'layout', 'even'); $layout_sizing = $base->getVar($this->grid_params, 'layout-sizing', 'boxed'); if ($layout_sizing !== 'fullwidth' && $layout == 'masonry') { $item_skin->set_poster_cropping(true); } $found_filter = array(); $i = 1; if ($lightbox_mode == 'content' || $lightbox_mode == 'content-gallery' || $lightbox_mode == 'woocommerce-gallery') { $item_skin->set_lightbox_rel('ess-' . $this->grid_id); } if (!empty($posts) && count($posts) > 0) { foreach ($posts as $key => $post) { if ($grid_preview == false) { //check if post should be visible or if its invisible on current grid settings $is_visible = $this->check_if_visible($post['ID'], $this->grid_id); if ($is_visible == false) { continue; } // continue if invisible } $post_media_source_data = $base->get_post_media_source_data($post['ID'], $post_media_source_type); $post_video_ratios = $m->get_post_video_ratios($post['ID']); $filters = array(); //$categories = get_the_category($post['ID']); $categories = $base->get_custom_taxonomies_by_post_id($post['ID']); //$tags = wp_get_post_terms($post['ID']); $tags = get_the_tags($post['ID']); if (!empty($categories)) { foreach ($categories as $key => $category) { $filters[$category->term_id] = array('name' => $category->name, 'slug' => sanitize_key($category->slug), 'parent' => $category->parent); } } if (!empty($tags)) { foreach ($tags as $key => $taxonomie) { $filters[$taxonomie->term_id] = array('name' => $taxonomie->name, 'slug' => sanitize_key($taxonomie->slug), 'parent' => '0'); } } $filter_meta_selected = $base->getVar($this->grid_params, 'filter-selected', array()); if (!empty($filter_meta_selected)) { foreach ($filter_meta_selected as $filter) { if (strpos($filter, 'meta-') === 0) { $fil = str_replace('meta-', '', $filter); $post_filter_meta = $meta_c->get_meta_value_by_handle($post['ID'], 'eg-' . $fil); $arr = json_decode($post_filter_meta, true); $cur_filter = is_array($arr) ? $arr : array($post_filter_meta); //$cur_filter = explode(',', $post_filter_meta); if (!empty($cur_filter)) { foreach ($cur_filter as $k => $v) { if (trim($v) !== '') { $filters[sanitize_key($v)] = array('name' => $v, 'slug' => sanitize_key($v), 'parent' => '0'); } } } } } } if (is_array($order_by) && !empty($order_by)) { $sort = $this->prepare_sorting_array_by_post($post, $order_by); $item_skin->set_sorting($sort); } $found_filter = $found_filter + $filters; //these are the found filters, only show filter that the posts have //switch to different skin $use_item_skin_id = json_decode(get_post_meta($post['ID'], 'eg_use_skin', true), true); if ($use_item_skin_id !== false && isset($use_item_skin_id[$this->grid_id]['use-skin'])) { $use_item_skin_id = $use_item_skin_id[$this->grid_id]['use-skin']; } else { $use_item_skin_id = -1; } $use_item_skin_id = apply_filters('essgrid_modify_post_item_skin', $use_item_skin_id, $post, $this->grid_id); $item_skin->switch_item_skin($use_item_skin_id); $item_skin->register_layer_css(); $item_skin->register_skin_css(); if ($i > $post_limit) { $this->load_more_post_array[$post['ID']] = $filters; //set for load more, only on elements that will not be loaded from beginning continue; //Load only selected numbers of items at start (for load more) } $i++; if ($lightbox_mode == 'content' || $lightbox_mode == 'content-gallery' || $lightbox_mode == 'woocommerce-gallery') { switch ($lightbox_mode) { case 'content': $lb_add_images = $base->get_all_content_images($post['ID']); break; case 'content-gallery': $lb_add_images = $base->get_all_gallery_images($post['post_content'], true); break; case 'woocommerce-gallery': $lb_add_images = array(); if (Essential_Grid_Woocommerce::is_woo_exists()) { $lb_add_images = Essential_Grid_Woocommerce::get_image_attachements($post['ID'], true); } break; } $item_skin->set_lightbox_addition(array('items' => $lb_add_images, 'base' => $lightbox_include_media)); } $item_skin->set_filter($filters); $item_skin->set_media_sources($post_media_source_data); $item_skin->set_media_sources_type($post_media_source_type); $item_skin->set_video_ratios($post_video_ratios); $item_skin->set_post_values($post); ob_start(); $item_skin->output_item_skin($grid_preview); $skins_html .= ob_get_contents(); ob_clean(); ob_end_clean(); if ($grid_preview == false) { ob_start(); $item_skin->output_element_css_by_meta(); $skins_css .= ob_get_contents(); ob_clean(); ob_end_clean(); } } } else { return false; } $remove_filter = array_diff_key($nav_filters, $found_filter); //check if we have filter that no post has (comes through multilanguage) if (!empty($remove_filter)) { foreach ($remove_filter as $key => $rem) { //we have, so remove them from the filter list before setting the filter list unset($nav_filters[$key]); } } if ($do_nav) { //only do if internal is selected $navigation_c->set_filter($nav_filters); //set filters $nav_filters $found_filter $navigation_c->set_filter_type($filter_allow); $navigation_c->set_filter_start_select($filter_start); } ob_start(); $item_skin->generate_element_css(); $skins_css .= ob_get_contents(); ob_clean(); ob_end_clean(); if ($do_nav) { //only do if internal is selected $found_skin = array(); $navigation_skin = $base->getVar($this->grid_params, 'navigation-skin', 'minimal-light'); $navigation_special_skin = $base->getVar($this->grid_params, 'navigation-special-skin', array()); ob_start(); $navigation_c->output_navigation_skin($navigation_skin); $found_skin[$navigation_skin] = true; if (!empty($navigation_special_skin)) { foreach ($navigation_special_skin as $spec_skin) { if (!isset($found_skin[$spec_skin])) { $navigation_c->output_navigation_skin($spec_skin); $found_skin[$spec_skin] = true; } } } $nav_css = ob_get_contents(); ob_clean(); ob_end_clean(); echo $nav_css; } echo $skins_css; if ($item_skin->ajax_loading == true && $ajax_container_position == 'top') { echo $this->output_ajax_container(); } $this->output_wrapper_pre($grid_preview); if ($do_nav) { //only do if internal is selected $navigation_c->output_layout('top-1', $module_spacings); $navigation_c->output_layout('top-2', $module_spacings); } $this->output_grid_pre(); echo $skins_html; $this->output_grid_post(); if ($do_nav) { //only do if internal is selected $navigation_c->output_layout('bottom-1', $module_spacings); $navigation_c->output_layout('bottom-2', $module_spacings); $navigation_c->output_layout('left'); $navigation_c->output_layout('right'); //check if search was added. If yes, we also need to add the "Filter All" filter if not existing $navigation_c->check_for_search(); } $this->output_wrapper_post(); if ($item_skin->ajax_loading == true && $ajax_container_position == 'bottom') { echo $this->output_ajax_container(); } $load_lightbox = $item_skin->do_lightbox_loading(); if (!$grid_preview) { $this->output_grid_javascript($load_lightbox); } }