Willkommen bei WordPress. Dies ist dein erster Beitrag. Bearbeite oder lösche ihn und beginne mit dem Schreiben!
Hallo Welt!
von raredesign | Dez 3, 2019 | Allgemein | 0 Kommentare
Cokiee Shell
Current Path : /var/www/web284/html/wp-content/plugins/wpml-sticky-links/inc/ |
Current File : //var/www/web284/html/wp-content/plugins/wpml-sticky-links/inc/sticky-links.class.php |
<?php class WPML_Sticky_Links{ var $settings; var $broken_links; var $absolute_links_object; function __construct($ext = false){ $this->settings = get_option('alp_settings'); add_action('init', array($this,'init')); } function __destruct(){ return; } function init(){ $this->plugin_localization(); // Check if WPML is active. If not display warning message and not load Sticky links if(!defined('ICL_SITEPRESS_VERSION') || ICL_PLUGIN_INACTIVE){ if ( !function_exists('is_multisite') || !is_multisite() ) { add_action('admin_notices', array($this, '_no_wpml_warning')); } return false; }elseif(version_compare(ICL_SITEPRESS_VERSION, '2.0.5', '<')){ add_action('admin_notices', array($this, '_old_wpml_warning')); return false; } require_once ICL_PLUGIN_PATH . '/inc/absolute-links/absolute-links.class.php'; $this->absolute_links_object = new AbsoluteLinks; global $sitepress_settings; if(isset($_POST['save_alp']) && $_POST['save_alp']){ // $this->settings = $_POST; // $this->save_settings(); // TBD! } $this->ajax_responses(); add_action('save_post', array($this,'save_default_urls'), 10, 2); add_action('admin_head',array($this,'js_scripts')); add_filter('the_content', array($this,'show_permalinks')); if($this->settings['sticky_links_widgets'] || $this->settings['sticky_links_strings']){ add_filter('widget_text', array($this,'show_permalinks'), 99); // low priority - allow translation to be set } if($this->settings['sticky_links_widgets']){ add_filter('pre_update_option_widget_text', array($this,'pre_update_option_widget_text'), 5, 2); } if(empty($this->settings) && !empty($sitepress_settings['modules']['absolute-links'])){ $this->settings = $sitepress_settings['modules']['absolute-links']; $this->save_settings(); } add_action('admin_menu', array($this, 'menu')); add_filter('plugin_action_links', array($this, 'plugin_action_links'), 10, 2); if(is_admin() && !defined('DOING_AJAX')){ wp_enqueue_script('wpml-sticky-links-js', WPML_STICKY_LINKS_URL . '/res/js/scripts.js', array(), WPML_STICKY_LINKS_VERSION); } add_action('wp_ajax_wpml_sticky_links_save_options', array($this, '_save_options')); // add message to WPML dashboard widget add_action('icl_dashboard_widget_content', array($this, 'icl_dashboard_widget_content')); } function _no_wpml_warning(){ ?> <div class="message error"><p><?php printf(__('WPML Sticky Links is enabled but not effective. It requires <a href="%s">WPML</a> in order to work.', 'wpml-sticky-links'), 'http://wpml.org/'); ?></p></div> <?php } function _old_wpml_warning(){ ?> <div class="message error"><p><?php printf(__('WPML Sticky Links is enabled but not effective. It is not compatible with <a href="%s">WPML</a> versions prior 2.0.5.', 'wpml-sticky-links'), 'http://wpml.org/'); ?></p></div> <?php } /* MAKE IT PHP 4 COMPATIBLE */ function WPML_Sticky_Links(){ //destructor register_shutdown_function(array(&$this, '__destruct')); //constructor $argcv = func_get_args(); call_user_func_array(array(&$this, '__construct'), $argcv); } function _save_options(){ if(wp_verify_nonce($_POST['_wpnonce'], 'icl_sticky_save')){ $this->settings['sticky_links_widgets'] = intval($_POST['icl_sticky_links_widgets']); $this->settings['sticky_links_strings'] = intval($_POST['icl_sticky_links_strings']); $this->save_settings(); } } function save_settings(){ update_option('alp_settings', $this->settings); } function ajax_responses(){ if(!isset($_POST['alp_ajx_action'])){ return; } global $wpdb; $post_types = array(); foreach($GLOBALS['wp_post_types'] as $key=>$val){ if($val->public && !in_array($key, array('attachment'))){ $post_types[] = $key; } } $limit = 5; switch($_POST['alp_ajx_action']){ case 'rescan': $posts_pages = $wpdb->get_col(" SELECT SQL_CALC_FOUND_ROWS p1.ID FROM {$wpdb->posts} p1 WHERE p1.post_type IN ('".join("','", $post_types)."') AND p1.post_status NOT IN ('auto-draft') AND p1.ID NOT IN ( SELECT m.post_id FROM {$wpdb->postmeta} m JOIN {$wpdb->posts} p2 ON p2.ID = m.post_id WHERE m.meta_key = '_alp_processed' AND p2.post_type IN ('" . join("','", $post_types) . "') AND p2.post_status NOT IN ('auto-draft') ) ORDER BY p1.ID ASC LIMIT $limit "); if($posts_pages){ $found = $wpdb->get_var("SELECT FOUND_ROWS()"); foreach($posts_pages as $ppid){ $this->absolute_links_object->process_post($ppid); } echo $found >= $limit ? $found - $limit : 0; }else{ echo -1; } break; case 'rescan_reset': $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE meta_key='_alp_processed'"); echo mysql_affected_rows(); break; case 'use_suggestion': $broken_links = get_post_meta($_POST['post_id'],'_alp_broken_links', true); foreach($broken_links as $k=>$bl){ if($k==$_POST['orig_url']){ $broken = $k; $repl = $bl['suggestions'][$_POST['sug_id']]['absolute']; unset($broken_links[$k]); $c = count($broken_links); if($c){ update_post_meta($_POST['post_id'],'_alp_broken_links', $broken_links); }else{ delete_post_meta($_POST['post_id'],'_alp_broken_links'); } echo $c.'|'.$bl['suggestions'][$_POST['sug_id']]['perma']; break; } } if(!empty($broken)){ $post_content = $wpdb->get_var("SELECT post_content FROM {$wpdb->posts} WHERE ID={$_POST['post_id']}"); $post_content = preg_replace('@href="('.$broken.')"@i', 'href="'.$repl.'"', $post_content); $wpdb->update($wpdb->posts, array('post_content'=>$post_content), array('ID'=>$_POST['post_id'])); } break; case 'alp_revert_urls': $posts_pages = $wpdb->get_results(" SELECT SQL_CALC_FOUND_ROWS p.ID, p.post_content FROM {$wpdb->posts} p JOIN {$wpdb->postmeta} m ON p.ID = m.post_id WHERE m.meta_key = '_alp_processed' AND p.post_type IN ('" . join("','", $post_types) . "') AND p.post_status NOT IN ('auto-draft') ORDER BY p.ID ASC LIMIT $limit "); if($posts_pages){ $found = $wpdb->get_var("SELECT FOUND_ROWS()"); foreach($posts_pages as $p){ $cont = $this->show_permalinks($p->post_content); $wpdb->update($wpdb->posts, array('post_content'=>$cont), array('ID'=>$p->ID)); delete_post_meta($p->ID,'_alp_processed'); delete_post_meta($p->ID,'_alp_broken_links'); } echo $found >= $limit ? $found - $limit : 0; }else{ echo -1; } break; } exit; } function js_scripts(){ ?> <script type="text/javascript"> addLoadEvent(function(){ jQuery('#alp_re_scan_but').click(alp_toogle_scan); jQuery('#alp_re_scan_but_all').click(alp_reset_scan_flags); jQuery('.alp_use_sug').click(alp_use_suggestion); jQuery('#alp_revert_urls').click(alp_do_revert_urls); }); var alp_scan_started = false; var req_timer = 0; function alp_toogle_scan(){ if(!alp_scan_started){ alp_send_request(0); jQuery('#alp_ajx_ldr_1').fadeIn(); jQuery('#alp_re_scan_but').attr('value','<?php echo icl_js_escape(__('Running', 'wpml-sticky-links')) ?>'); }else{ jQuery('#alp_re_scan_but').attr('value','<?php echo icl_js_escape(__('Scan', 'wpml-sticky-links')); ?>'); window.clearTimeout(req_timer); jQuery('#alp_ajx_ldr_1').fadeOut(); location.reload(); } alp_scan_started = !alp_scan_started; return false; } function alp_send_request(offset){ jQuery.ajax({ type: "POST", url: "<?php echo htmlentities($_SERVER['REQUEST_URI']) ?>", data: "alp_ajx_action=rescan&offset="+offset, success: function(msg){ if(-1==msg || msg==0){ left = '0'; alp_toogle_scan(); }else{ left=msg; } if(left=='0'){ jQuery('#alp_re_scan_but').attr('disabled','disabled'); } jQuery('#alp_re_scan_toscan').html(left); if(alp_scan_started){ req_timer = window.setTimeout(alp_send_request,3000,offset); } } }); } function alp_reset_scan_flags(){ if(alp_scan_started) return; alp_scan_started = false; jQuery('#alp_re_scan_but').removeAttr('disabled'); jQuery.ajax({ type: "POST", url: "<?php echo htmlentities($_SERVER['REQUEST_URI']) ?>", data: "alp_ajx_action=rescan_reset", success: function(msg){ if(msg){ alp_toogle_scan() } } }); } function alp_use_suggestion(){ jqthis = jQuery(this); jqthis.parent().parent().css('background-color','#eee'); spl = jqthis.attr('id').split('_'); sug_id = spl[3]; post_id = spl[4]; orig_url = jQuery('#alp_bl_'+post_id+'_'+spl[5]).html().replace(/&/,'&').replace(/&/, '%26'); jQuery.ajax({ type: "POST", url: "<?php echo htmlentities($_SERVER['REQUEST_URI']) ?>", data: "alp_ajx_action=use_suggestion&sug_id="+sug_id+"&post_id="+post_id+"&orig_url="+orig_url, success: function(msg){ spl = msg.split('|'); jqthis.parent().html('<?php echo icl_js_escape(__('fixed', 'wpml-sticky-links')); ?> - ' + spl[1]); }, error: function (msg){ alert('Something went wrong'); jqthis.parent().parent().css('background-color','#fff'); } }); } var req_rev_timer = ''; function alp_do_revert_urls(){ jQuery('#alp_revert_urls').attr('disabled','disabled'); jQuery('#alp_revert_urls').attr('value','<?php echo icl_js_escape(__('Running', 'wpml-sticky-links')); ?>'); jQuery.ajax({ type: "POST", url: "<?php echo htmlentities($_SERVER['REQUEST_URI']) ?>", data: "alp_ajx_action=alp_revert_urls", success: function(msg){ if(-1==msg || msg==0){ jQuery('#alp_ajx_ldr_2').fadeOut(); jQuery('#alp_rev_items_left').html(''); window.clearTimeout(req_rev_timer); jQuery('#alp_revert_urls').removeAttr('disabled'); jQuery('#alp_revert_urls').attr('value','<?php echo icl_js_escape(__('Start', 'wpml-sticky-links')); ?>'); location.reload(); }else{ jQuery('#alp_rev_items_left').html(msg + ' <?php echo icl_js_escape(__('items left', 'wpml-sticky-links')); ?>'); req_rev_timer = window.setTimeout(alp_do_revert_urls,3000); jQuery('#alp_ajx_ldr_2').fadeIn(); } }, error: function (msg){ //alert('Something went wrong'); } }); } </script> <?php } function menu(){ $top_page = apply_filters('icl_menu_main_page', basename(ICL_PLUGIN_PATH).'/menu/languages.php'); add_submenu_page($top_page, __('Sticky Links','wpml-sticky-links'), __('Sticky Links','wpml-sticky-links'), 'manage_options', 'wpml-sticky-links', array($this,'menu_content')); } function menu_content(){ global $wpdb; $types = array(); foreach($GLOBALS['wp_post_types'] as $key=>$val){ if($val->public && !in_array($key, array('attachment'))){ $types[] = $key; } } $this->get_broken_links(); $total_posts_pages = $wpdb->get_var(" SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type IN ('" . join("','", $types) . "') AND post_status NOT IN ('auto-draft') AND ID NOT IN ( SELECT m.post_id FROM {$wpdb->postmeta} m JOIN {$wpdb->posts} p ON m.post_id = p.ID WHERE m.meta_key = '_alp_processed' AND p.post_type IN ('" . join("','", $types) . "') AND p.post_status NOT IN ('auto-draft') ) "); $total_posts_pages_processed = (int) $wpdb->get_var(" SELECT COUNT(m.meta_id) FROM {$wpdb->postmeta} m JOIN {$wpdb->posts} p ON p.ID = m.post_id WHERE m.meta_key = '_alp_processed' AND p.post_type IN ('" . join("','", $types) . "') AND p.post_status NOT IN ('auto-draft') "); include WPML_STICKY_LINKS_PATH . '/menu/management.php'; } function pre_update_option_widget_text($new_value, $old_value){ global $wpdb; if(is_array($new_value)){ foreach($new_value as $k=>$w){ if(isset($w['text'])){ $new_value[$k]['text'] = $this->absolute_links_object->_process_generic_text($w['text']); } } if($new_value !== $old_value){ $wpdb->update($wpdb->options, array('option_value'=>$new_value), array('option_name'=>'widget_text')); } } return $new_value; } function save_default_urls($post_id, $post){ if($post->post_status == 'auto-draft' || isset($_POST['autosave'])) return; if(!in_array( $post->post_type, get_post_types( array('show_ui' => true ) ) )) return; if(!post_type_supports($post->post_type, 'editor')) return; if(in_array($post->post_type, array('revision', 'attachment', 'nav_menu_item'))) return; $this->absolute_links_object->process_post($post_id); } function show_permalinks($cont){ if(!isset($GLOBALS['__disable_absolute_links_permalink_filter']) || !$GLOBALS['__disable_absolute_links_permalink_filter']){ $home = rtrim(get_option('home'),'/'); $parts = parse_url($home); $abshome = $parts['scheme'] .'://' . $parts['host']; $path = isset($parts['path']) ? ltrim($parts['path'],'/') : ''; $tx_qvs = join('|',$this->absolute_links_object->taxonomies_query_vars); $reg_ex = '@<a([^>]+)?href="(('.$abshome.')?/'.$path.'/?\?(p|page_id|cat_ID|'.$tx_qvs.')=([0-9a-z-]+))(#?[^"]*)"([^>]+)?>@i'; $cont = preg_replace_callback( $reg_ex, array($this,'show_permalinks_cb'),$cont); } return $cont; } function show_permalinks_cb($matches){ if($matches[4]=='cat_ID'){ $url = get_category_link($matches[5]); }elseif($tax = array_search($matches[4],$this->absolute_links_object->taxonomies_query_vars)){ $url = get_term_link($matches[5], $tax); }else{ $url = get_permalink($matches[5]); } $fragment = $matches[6]; if ($fragment != '') { $fragment = str_replace('&', '&', $fragment); $fragment = str_replace('&', '&', $fragment); if ($fragment[0] == '&') { if (strpos($url, '?') === FALSE) { $fragment[0] = '?'; } } } $trail = ''; if (isset($matches[7])) { $trail = $matches[7]; } return '<a'.$matches[1]. 'href="'. $url . $fragment . '"' . $trail . '>'; } function get_broken_links(){ global $wpdb; $this->broken_links = $wpdb->get_results("SELECT p2.ID, p2.post_title, p1.meta_value AS links FROM {$wpdb->postmeta} p1 JOIN {$wpdb->posts} p2 ON p1.post_id=p2.ID WHERE p1.meta_key='_alp_broken_links'"); } function icl_dashboard_widget_content(){ ?> <div><a href="javascript:void(0)" onclick="jQuery(this).parent().next('.wrapper').slideToggle();" style="display:block; padding:5px; border: 1px solid #eee; margin-bottom:2px; background-color: #F7F7F7;"><?php _e('Sticky links', 'wpml-sticky-links') ?></a></div> <div class="wrapper" style="display:none; padding: 5px 10px; border: 1px solid #eee; border-top: 0px; margin:-11px 0 2px 0;"><p><?php echo __('With Sticky Links, WPML can automatically ensure that all links on posts and pages are up-to-date, should their URL change.', 'wpml-sticky-links'); ?></p> <p><a class="button secondary" href="<?php echo 'admin.php?page=wpml-sticky-links';?>"><?php echo __('Configure Sticky Links', 'wpml-sticky-links') ?></a></p> </div> <?php } function plugin_action_links($links, $file){ $this_plugin = basename(WPML_STICKY_LINKS_PATH) . '/plugin.php'; if($file == $this_plugin) { $links[] = '<a href="admin.php?page=wpml-sticky-links">' . __('Configure', 'wpml-sticky-links') . '</a>'; } return $links; } // Localization function plugin_localization(){ load_plugin_textdomain( 'wpml-sticky-links', false, WPML_STICKY_LINKS_FOLDER . '/locale'); } }
Cokiee Shell Web 1.0, Coded By Razor
Neueste Kommentare