if (!defined('DUPLICATE_PAGE_PLUGIN_DIRNAME')) { define('DUPLICATE_PAGE_PLUGIN_DIRNAME', plugin_basename(dirname(__FILE__))); } if (!defined('DUPLICATE_PAGE_PLUGIN_VERSION')) { define('DUPLICATE_PAGE_PLUGIN_VERSION', '4.5.3'); } if (!class_exists('duplicate_page')): class duplicate_page { /* * AutoLoad Hooks */ public function __construct() { $opt = get_option('duplicate_page_options'); register_activation_hook(__FILE__, array(&$this, 'duplicate_page_install')); add_action('admin_menu', array(&$this, 'duplicate_page_options_page')); add_filter('plugin_action_links', array(&$this, 'duplicate_page_plugin_action_links'), 10, 2); add_action('admin_action_dt_duplicate_post_as_draft', array(&$this, 'dt_duplicate_post_as_draft')); add_filter('post_row_actions', array(&$this, 'dt_duplicate_post_link'), 10, 2); add_filter('page_row_actions', array(&$this, 'dt_duplicate_post_link'), 10, 2); if (isset($opt['duplicate_post_editor']) && $opt['duplicate_post_editor'] == 'gutenberg') { add_action('admin_head', array(&$this, 'duplicate_page_custom_button_guten')); } elseif(isset($opt['duplicate_post_editor']) && $opt['duplicate_post_editor'] == 'all'){ add_action('admin_head', array(&$this, 'duplicate_page_custom_button_guten')); add_action('post_submitbox_misc_actions', array(&$this, 'duplicate_page_custom_button_classic')); } else { add_action('post_submitbox_misc_actions', array(&$this, 'duplicate_page_custom_button_classic')); } add_action('wp_before_admin_bar_render', array(&$this, 'duplicate_page_admin_bar_link')); add_action('init', array(&$this, 'duplicate_page_load_text_domain')); add_action('wp_ajax_mk_dp_close_dp_help', array($this, 'mk_dp_close_dp_help')); } /* * Localization - 19-dec-2016 */ public function duplicate_page_load_text_domain() { load_plugin_textdomain('duplicate-page', false, DUPLICATE_PAGE_PLUGIN_DIRNAME.'/languages'); } /* * Activation Hook */ public function duplicate_page_install() { $defaultsettings = array( 'duplicate_post_status' => 'draft', 'duplicate_post_redirect' => 'to_list', 'duplicate_post_suffix' => '', 'duplicate_post_editor' => 'classic', ); $opt = get_option('duplicate_page_options'); if (!isset($opt['duplicate_post_status'])) { update_option('duplicate_page_options', $defaultsettings); } } /* Action Links */ public function duplicate_page_plugin_action_links($links, $file) { if ($file == plugin_basename(__FILE__)) { $duplicate_page_links = ''.__('Settings', 'duplicate-page').''; $duplicate_page_donate = ''.__('Donate', 'duplicate-page').''; array_unshift($links, $duplicate_page_donate); array_unshift($links, $duplicate_page_links); } return $links; } /* * Admin Menu */ public function duplicate_page_options_page() { add_options_page(__('Duplicate Page', 'duplicate-page'), __('Duplicate Page', 'duplicate-page'), 'manage_options', 'duplicate_page_settings', array(&$this, 'duplicate_page_settings')); } /* * Duplicate Page Admin Settings */ public function duplicate_page_settings() { if (current_user_can('manage_options')) { include 'inc/admin-settings.php'; } } /* * Main function */ public function dt_duplicate_post_as_draft() { /* * get Nonce value */ $nonce = sanitize_text_field($_REQUEST['nonce']); /* * get the original post id */ $post_id = (isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post'])); $post = get_post($post_id); $current_user_id = get_current_user_id(); if(wp_verify_nonce( $nonce, 'dt-duplicate-page-'.$post_id)) { if (current_user_can('manage_options') || current_user_can('edit_others_posts')) { $this->duplicate_edit_post($post_id); } else if (current_user_can('contributor') && $current_user_id == $post->post_author){ $this->duplicate_edit_post($post_id, 'pending'); } else if (current_user_can('edit_posts') && $current_user_id == $post->post_author ){ $this->duplicate_edit_post($post_id); } else { wp_die(__('Unauthorized Access.','duplicate-page')); } } else { wp_die(__('Security check issue, Please try again.','duplicate-page')); } } /** * Duplicate edit post */ public function duplicate_edit_post($post_id,$post_status_update='') { global $wpdb; $opt = get_option('duplicate_page_options'); $suffix = isset($opt['duplicate_post_suffix']) && !empty($opt['duplicate_post_suffix']) ? ' -- '.esc_attr($opt['duplicate_post_suffix']) : ''; if($post_status_update == ''){ $post_status = !empty($opt['duplicate_post_status']) ? esc_attr($opt['duplicate_post_status']) : 'draft'; }else{ $post_status = $post_status_update; } $redirectit = !empty($opt['duplicate_post_redirect']) ? esc_attr($opt['duplicate_post_redirect']) : 'to_list'; if (!(isset($_GET['post']) || isset($_POST['post']) || (isset($_REQUEST['action']) && 'dt_duplicate_post_as_draft' == sanitize_text_field($_REQUEST['action'])))) { wp_die(__('No post to duplicate has been supplied!','duplicate-page')); } $returnpage = ''; /* * and all the original post data then */ $post = get_post($post_id); /* * if you don't want current user to be the new post author, * then change next couple of lines to this: $new_post_author = $post->post_author; */ $current_user = wp_get_current_user(); $new_post_author = $current_user->ID; /* * if post data exists, create the post duplicate */ if (isset($post) && $post != null) { /* * new post data array */ $args = array( 'comment_status' => $post->comment_status, 'ping_status' => $post->ping_status, 'post_author' => $new_post_author, 'post_content' => (isset($opt['duplicate_post_editor']) && $opt['duplicate_post_editor'] == 'gutenberg') ? wp_slash($post->post_content) : $post->post_content, 'post_excerpt' => $post->post_excerpt, 'post_parent' => $post->post_parent, 'post_password' => $post->post_password, 'post_status' => $post_status, 'post_title' => $post->post_title.$suffix, 'post_type' => $post->post_type, 'to_ping' => $post->to_ping, 'menu_order' => $post->menu_order, ); /* * insert the post by wp_insert_post() function */ $new_post_id = wp_insert_post($args); if(is_wp_error($new_post_id)){ wp_die(__($new_post_id->get_error_message(),'duplicate-page')); } /* * get all current post terms ad set them to the new post draft */ $taxonomies = array_map('sanitize_text_field',get_object_taxonomies($post->post_type)); if (!empty($taxonomies) && is_array($taxonomies)): foreach ($taxonomies as $taxonomy) { $post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs')); wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false); } endif; /* * duplicate all post meta */ $post_meta_keys = get_post_custom_keys( $post_id ); if(!empty($post_meta_keys)){ foreach ( $post_meta_keys as $meta_key ) { $meta_values = get_post_custom_values( $meta_key, $post_id ); foreach ( $meta_values as $meta_value ) { $meta_value = maybe_unserialize( $meta_value ); update_post_meta( $new_post_id, $meta_key, wp_slash( $meta_value ) ); } } } /** * Elementor compatibility fixes */ if(is_plugin_active( 'elementor/elementor.php' )){ $css = Elementor\Core\Files\CSS\Post::create( $new_post_id ); $css->update(); } /* * finally, redirecting to your choice */ if ($post->post_type != 'post'){ $returnpage = '?post_type='.$post->post_type; } if (!empty($redirectit) && $redirectit == 'to_list'){ wp_redirect(esc_url_raw(admin_url('edit.php'.$returnpage))); } elseif (!empty($redirectit) && $redirectit == 'to_page'){ wp_redirect(esc_url_raw(admin_url('post.php?action=edit&post='.$new_post_id))); } else { wp_redirect(esc_url_raw(admin_url('edit.php'.$returnpage))); } exit; } else { wp_die(__('Error! Post creation failed, could not find original post: ','duplicate-page').$post_id); } } /* * Add the duplicate link to action list for post_row_actions */ public function dt_duplicate_post_link($actions, $post) { // Skip acf-field-group post type if($post->post_type == 'acf-field-group'){ return $actions; } $opt = get_option('duplicate_page_options'); $post_status = !empty($opt['duplicate_post_status']) ? esc_attr($opt['duplicate_post_status']) : 'draft'; if (current_user_can('edit_posts')) { $actions['duplicate'] = isset($post) ? ''.__('Duplicate This', 'duplicate-page').'' : ''; } return $actions; } /* * Add the duplicate link to edit screen - classic editor */ public function duplicate_page_custom_button_classic() { global $post; $opt = get_option('duplicate_page_options'); $post_status = !empty($opt['duplicate_post_status']) ? esc_attr($opt['duplicate_post_status']) : 'draft'; $html = '
Faktorov, ktoré pomôžu určiť veľkosť generátora ozónu je viac. Naším odporúčaním je, aby ste si všímali výkon miligramy za hodinu mg/h. Pri výbere generátora ozónu je potrebné zvážiť niekoľko otázok a niekoľko premenných.
V prvom rade by sa malo určiť zamýšľané použitie
Základná voľby sú:
1. Čistenie vzduchu
2. Šoková sanitácia spolu s čistením vzduchu
Šokové ošetrenie sa používa vtedy, keď sa ozón dávkuje do miestnosti s vysokou hladinou, zvyčajne na niekoľko hodín, dokonca na niekoľko dní . Na ničenie baktérií, plesní, dymu alebo akéhokoľvek zápachu. Použitie na ošetrenie šokom vyžaduje výrazne viac ozónu ako čistenie vzduchu, ale je najlepším spôsobom, ako dosiahnuť maximálnu účinnosť generátora ozónu.
Zápach iba vo vzduchu, napríklad dym, znečistenie vnútorného ovzdušia, chemické výpary, výfukové plyny a ďalšie emisie, je možné pomocou ozónu eliminovať zvyčajne v krátkom čase pri miernych dávkach.
Avšak rozklad plesní, organických látok, poškodenie dymom pri požiari v budove, hromadenie cigaretového dymu fajčiarov a ďalšie extrémne pachy si vyžadujú dlhšiu dobu dávkovania, alebo vyššiu koncentráciu ozónu na niekoľko hodín až niekoľko dní liečebného času.
Ak je kontaminácia silná, na ošetrenie bude potrebné viac času alebo viac ozónu. Je to hlavne v prípadoch veľkého poškodenia ohňom a dymom alebo vyčistenie povrchu po kriminálnej scéne.
Pri výbere vhodného generátora ozónu je veľkosť ošetrovanej oblasti mimoriadne dôležitá. Každý ozonátor má odporučané, pre aký veľký priestor je vhodný. Toto odporúčanie odporúčame dodržať.
Ozón sa pri vysokých teplotách vyčerpáva oveľa rýchlejšie ako pri nízkych teplotách. Pri teplotách mrazu sa ozón nevyčerpá niekedy dlhšie ako 30 dní.
Generátory ozónu budú produkovať viac ozónu v suchom vzduchu ako vo vlhkom vzduchu. Ak zvolíte nový generátor ozónu s UV žiarením nebude vysoká vlhkosť dôležitým faktorom.
Na kratšie doby pôsobenia bude potrebné viac ozónu, menej na dlhšie doby pôsobenia.
Je osmotický filter to najlepšie riešenie pre úpravu mestskej, alebo studničnej vody ? Ako filtruje vodu? Čo dokáže filtrovať ? Ako filtruje vodu ? Čo je to reverzná osmóza? Je naozaj voda po filtrácii bez minerálov?
Vybrali ste si filtráciu alebo úpravu vody? Našli sme pre vás riešenie ako upraviť vašu mestskú, alebo studničnú vodu? To čo sme navrhli, alebo ste si vybrali vám aj nainštalujeme. Je pripravených 8 technikov čo denne inštalujú, servisujú technológie na úpravu vody.
Voda v našich domácnostiach sa používa na veľa účelov, ako na pitie, varenie, kúpanie, pranie, kúrenie. Ale mať dnes kvalitnú vodu je v dnešnej dobe nie otázkou šance, ale voľby. Každý z nás sa môže rozhodnúť akú kvalitnú vodu bude mať na dennodenné používanie.
Ak vo vyhľadávači zadáte, aby vám našlo zmäkčovač vody, nie vždy sa Vám naozaj ukážu skutočné zmäkčovače vody.