web/wp-content/plugins/all-in-one-seo-pack/aioseop_functions.php
changeset 194 32102edaa81b
child 204 09a1c134465b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/plugins/all-in-one-seo-pack/aioseop_functions.php	Mon Nov 19 18:26:13 2012 +0100
@@ -0,0 +1,416 @@
+<?php
+/**
+ * @package All-in-One-SEO-Pack 
+ */
+
+/** Ajax callback functions for quickedit functionality */
+//add_action( 'wp_ajax_aioseop_ajax_save_meta', 'aioseop_ajax_save_meta');
+
+if (!function_exists('aioseop_activate')) {
+	function aioseop_activate() {
+	  global $aiosp_activation;
+	  $aiosp_activation = true;
+	}
+}
+
+if (!function_exists('aioseop_update_settings_check')) {
+	function aioseop_update_settings_check() {
+		if(isset($_POST['aioseop_migrate'])) aioseop_mrt_fix_meta();
+		if ( ( isset( $_POST['aioseop_migrate_options'] ) )  ||
+			 ( !get_option( 'aiosp_post_title_format' ) && !get_option('aioseop_options') ) ) {
+			aioseop_mrt_mkarry();
+		}
+	}
+}
+
+if (!function_exists('aioseop_class_defined_error')) {
+	function aioseop_class_defined_error() {
+		$aioseop_class_error = "The All in One SEO Pack class is already defined";
+		if ( class_exists( 'ReflectionClass' ) ) {
+			$r = new ReflectionClass( 'All_in_One_SEO_Pack' );
+			$aioseop_class_error .= " in " . $r->getFileName();
+		}
+		$aioseop_class_error .= ", preventing All in One SEO Pack from loading.";
+		echo "<div class='error'>$aioseop_class_error</div>";
+	}
+}
+
+if (!function_exists('aioseop_mrt_fix_meta')) {
+	function aioseop_mrt_fix_meta(){
+		global $wpdb, $aiosp_activation;
+		$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_aioseop_keywords' WHERE meta_key = 'keywords'");
+		$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_aioseop_title' WHERE meta_key = 'title'");
+		$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_aioseop_description' WHERE meta_key = 'description'");
+		$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_aioseop_meta' WHERE meta_key = 'aiosp_meta'");
+		$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_aioseop_disable' WHERE meta_key = 'aiosp_disable'");
+		if ( !$aiosp_activation ) // don't echo on initial plugin activation
+			echo "<div class='updated fade' style='background-color:green;border-color:green;'><p><strong>" . __( "Updating SEO post meta in database.", 'all_in_one_seo_pack' ) . "</strong></p></div>";
+	}
+}
+
+if (!function_exists('aioseop_mrt_mkarry')) {
+	function aioseop_mrt_mkarry() {
+		global $aiosp;
+		$naioseop_options = array(
+		"aiosp_can"=>1,
+		"aiosp_donate"=>0,
+		"aiosp_home_title"=>null,
+		"aiosp_home_description"=>'',
+		"aiosp_home_keywords"=>null,
+		"aiosp_max_words_excerpt"=>'something',
+		"aiosp_rewrite_titles"=>1,
+		"aiosp_post_title_format"=>'%post_title% | %blog_title%',
+		"aiosp_page_title_format"=>'%page_title% | %blog_title%',
+		"aiosp_category_title_format"=>'%category_title% | %blog_title%',
+		"aiosp_archive_title_format"=>'%date% | %blog_title%',
+		"aiosp_tag_title_format"=>'%tag% | %blog_title%',
+		"aiosp_search_title_format"=>'%search% | %blog_title%',
+		"aiosp_description_format"=>'%description%',
+		"aiosp_404_title_format"=>'Nothing found for %request_words%',
+		"aiosp_paged_format"=>' - Part %page%',
+		"aiosp_google_analytics_id"=>null,
+		"aiosp_ga_track_outbound_links"=>0,
+		"aiosp_use_categories"=>0,
+		"aiosp_dynamic_postspage_keywords"=>1,
+		"aiosp_category_noindex"=>0,
+		"aiosp_archive_noindex"=>0,
+		"aiosp_tags_noindex"=>0,
+		"aiosp_cap_cats"=>1,
+		"aiosp_generate_descriptions"=>0,
+		"aiosp_debug_info"=>null,
+		"aiosp_post_meta_tags"=>'',
+		"aiosp_page_meta_tags"=>'',
+		"aiosp_home_meta_tags"=>'',
+		"aiosp_enabled" =>0,
+		"aiosp_enablecpost" => 0,
+		"aiosp_use_tags_as_keywords" =>1,
+		"aiosp_seopostcol" =>1,
+		"aiosp_seocustptcol" => 0,
+		"aiosp_posttypecolumns" => array('post','page'),
+		"aiosp_do_log"=>null);
+		
+		if(get_option('aiosp_post_title_format')){
+		foreach( $naioseop_options as $aioseop_opt_name => $value ) {
+				if( $aioseop_oldval = get_option($aioseop_opt_name) ) {
+					$naioseop_options[$aioseop_opt_name] = $aioseop_oldval;
+				}
+				if( $aioseop_oldval == '') {
+					$naioseop_options[$aioseop_opt_name] = '';
+				}
+				delete_option($aioseop_opt_name);
+			}
+		}
+
+		add_option('aioseop_options',$naioseop_options);
+	}
+}
+
+if (!function_exists('aioseop_activation_notice')) {
+	function aioseop_activation_notice() {
+		global $aioseop_options;
+		echo '<div class="error fade"><p><strong>' . __('All in One SEO Pack must be configured.', 'all_in_one_seo_pack' )
+			 . ' ' . sprintf( __('Go to %s to enable and configure the plugin.', 'all_in_one_seo_pack' ), '<a href="' 
+			 . admin_url( 'options-general.php?page=' . AIOSEOP_PLUGIN_DIRNAME  . '/aioseop.class.php' ) . '">' 
+			 . __('the admin page', 'all_in_one_seo_pack') . '</a>' ) . '</strong><br />' 
+			 . __( 'All in One SEO Pack now supports Custom Post Types and Google Analytics.', 'all_in_one_seo_pack' ) . '</p></div>';
+	}
+}
+
+if (!function_exists('aioseop_activate_pl')) {
+	function aioseop_activate_pl(){
+		if(get_option('aioseop_options')){
+			$aioseop_options = get_option('aioseop_options');
+			$aioseop_options['aiosp_enabled'] = "0";
+
+			if(!$aioseop_options['aiosp_posttypecolumns']){
+				$aioseop_options['aiosp_posttypecolumns'] = array('post','page');
+			}
+
+			update_option('aioseop_options',$aioseop_options);
+		}
+	}
+}
+
+if (!function_exists('aioseop_get_version')) {
+	function aioseop_get_version(){
+		return AIOSEOP_VERSION;
+	}
+}
+
+if (!function_exists('aioseop_add_plugin_row')) {
+	function aioseop_add_plugin_row($links, $file) {
+	echo '<td colspan="5" style="background-color:yellow;">';
+	echo  wp_remote_fopen('http://aioseoppro.semperfiwebdesign.com/');
+	echo '</td>';
+	}
+}
+
+if (!function_exists('aioseop_option_isset')) {
+	function aioseop_option_isset( $option ) {
+		global $aioseop_options;
+		return ( ( isset( $aioseop_options[$option] ) ) && $aioseop_options[$option] );
+	}
+}
+
+if (!function_exists('aioseop_addmycolumns')) {
+	function aioseop_addmycolumns(){
+		$aioseop_options = get_option('aioseop_options');
+		$aiosp_posttypecolumns = $aioseop_options['aiosp_posttypecolumns'];
+
+		if ( !isset($_GET['post_type']) )
+			$post_type = 'post';
+		else	$post_type = $_GET['post_type'];
+		add_action( 'admin_head', 'aioseop_admin_head');
+		
+		if(is_array($aiosp_posttypecolumns) && in_array($post_type,$aiosp_posttypecolumns)) {
+			if($post_type == 'page'){
+				add_action('manage_pages_custom_column', 'aioseop_mrt_pccolumn', 10, 2);
+				add_filter('manage_pages_columns', 'aioseop_mrt_pcolumns');
+			} else {
+				add_action('manage_posts_custom_column', 'aioseop_mrt_pccolumn', 10, 2);
+				add_filter('manage_posts_columns', 'aioseop_mrt_pcolumns');
+			}
+		}
+	}
+}
+
+if (!function_exists('aioseop_mrt_pcolumns')) {
+	function aioseop_mrt_pcolumns($aioseopc) {
+		global $aioseop_options;
+		$aioseopc['seotitle'] = __('SEO Title');
+		$aioseopc['seokeywords'] = __('SEO Keywords');
+		$aioseopc['seodesc'] = __('SEO Description');
+		return $aioseopc;
+	}	
+}
+
+if (!function_exists('aioseop_admin_head')) {
+	function aioseop_admin_head() {
+//		echo '<script type="text/javascript" src="' . AIOSEOP_PLUGIN_URL . 'quickedit_functions.js" ></script>';
+		?><style>
+		.aioseop_edit_button {
+		margin: 0 0 0 5px;
+		opacity: 0.6;
+		width: 12px;
+		}
+		.aioseop_mpc_SEO_admin_options_edit img {
+			margin: 3px 2px;
+			opacity: 0.7;
+		}
+		.aioseop_mpc_admin_meta_options {
+			float: left;
+			display: block;
+			opacity: 1;
+		}
+		.aioseop_mpc_admin_meta_content {
+			float:left;
+			width: 100%;
+			margin: 0 0 10px 0;
+		}	
+		</style>
+		<?php wp_print_scripts( Array( 'sack' ) );
+		?><script type="text/javascript">
+		//<![CDATA[
+		var aioseopadmin = {
+			blogUrl: "<?php print get_bloginfo( 'url'); ?>", 
+			pluginPath: "<?php print AIOSEOP_PLUGIN_DIR; ?>", 
+			pluginUrl: "<?php print AIOSEOP_PLUGIN_URL; ?>", 
+			requestUrl: "<?php print WP_ADMIN_URL . '/admin-ajax.php' ?>", 
+			imgUrl: "<?php print AIOSEOP_PLUGIN_IMAGES_URL; ?>", 
+			Edit: "Edit", Post: "Post", Save: "Save", Cancel: "Cancel", postType: "post", 
+			pleaseWait: "Please wait...", slugEmpty: "Slug may not be empty!", 
+			Revisions: "Post Revisions", Time: "Insert time"
+		}
+		//]]>
+		</script>
+		<?php
+	}
+}
+
+if (!function_exists('aioseop_ajax_save_meta')) {
+	function aioseop_ajax_save_meta() {
+		$post_id = intval( $_POST['post_id'] );
+		$new_meta = $_POST['new_meta'];
+		$target = $_POST['target_meta'];
+		update_post_meta( $post_id, '_aioseop_' . $target, $new_meta );
+		$result = get_post_meta( $post_id, '_aioseop_' . $target, true );
+		if( $result != '' ): $label = $result;  
+		else: $label = ''; $result = '<strong><i>No ' . $target . '</i></strong>' ; endif;
+		$output = $result . '<a id="' . $target . 'editlink' . $post_id . '" href="javascript:void(0);"'; 
+		$output .= 'onclick="aioseop_ajax_edit_meta_form(' . $post_id . ', \'' . $label . '\', \'' . $target . '\');return false;" title="' . __('Edit') . '">';
+		$output .= '<img class="aioseop_edit_button" id="aioseop_edit_id" src="' . AIOSEOP_PLUGIN_IMAGES_URL . '/cog_edit.png" /></a>';
+		die( "jQuery('div#aioseop_" . $target . "_" . $post_id . "').fadeOut('fast', function() {
+			  jQuery('div#aioseop_" . $target . "_" . $post_id . "').html('" . addslashes_gpc($output) . "').fadeIn('fast');
+		});" );
+	}
+}
+
+if (!function_exists('aioseop_mrt_pccolumn')) {
+	function aioseop_mrt_pccolumn($aioseopcn, $aioseoppi) {
+		if( $aioseopcn == 'seotitle' ) {
+			echo htmlspecialchars(stripcslashes(get_post_meta($aioseoppi,'_aioseop_title',TRUE)));
+		}
+		if( $aioseopcn == 'seokeywords' ) {
+			echo htmlspecialchars(stripcslashes(get_post_meta($aioseoppi,'_aioseop_keywords',TRUE)));
+		}
+		if( $aioseopcn == 'seodesc' ) {
+			echo htmlspecialchars(stripcslashes(get_post_meta($aioseoppi,'_aioseop_description',TRUE)));
+		}
+	}	
+}
+
+if ( !function_exists( 'aioseop_unprotect_meta' ) ) {
+	function aioseop_unprotect_meta( $protected, $meta_key, $meta_type ) {
+		if ( isset( $meta_key ) && ( substr( $meta_key, 0, 9 ) === '_aioseop_' ) ) return false;
+		return $protected;
+	}
+}
+
+if (!function_exists('aioseop_get_pages_start')) {
+	function aioseop_get_pages_start($excludes) {
+		global $aioseop_get_pages_start;
+		$aioseop_get_pages_start = 1;
+		return $excludes;
+	}
+}
+
+if (!function_exists('aioseop_get_pages')) {
+	function aioseop_get_pages($pages) {
+		global $aioseop_get_pages_start;
+		if (!$aioseop_get_pages_start) return $pages;
+		foreach ($pages as $k => $v) {
+			$postID = $v->ID;
+			$menulabel = stripslashes(get_post_meta($postID, '_aioseop_menulabel', true));
+			if ($menulabel)    $pages[$k]->post_title = $menulabel;
+		}
+		$aioseop_get_pages_start = 0;
+		return $pages;
+	}
+}
+
+// The following two functions are GPLed from Sarah G's Page Menu Editor, http://wordpress.org/extend/plugins/page-menu-editor/.
+if (!function_exists('aioseop_list_pages')) {
+	function aioseop_list_pages( $content ) {
+		global $wp_version;
+		$matches = array();
+		if ( preg_match_all( '/<li class="page_item page-item-(\d+)/i', $content, $matches ) ) {
+			update_postmeta_cache( array_values( $matches[1] ) );
+			unset( $matches );
+			if ( $wp_version >= 3.3 ) {
+				$pattern = '@<li class="page_item page-item-(\d+)([^\"]*)"><a href=\"([^\"]+)">@is';
+			} else {
+				$pattern = '@<li class="page_item page-item-(\d+)([^\"]*)"><a href=\"([^\"]+)" title="([^\"]+)">@is';
+			}
+			return preg_replace_callback( $pattern, "aioseop_filter_callback", $content );
+		}
+		return $content;
+	}
+}
+
+if (!function_exists('aioseop_filter_callback')) {
+	function aioseop_filter_callback( $matches ) {
+		global $wpdb;
+		if ( $matches[1] && !empty( $matches[1] ) ) $postID = $matches[1];
+		if ( empty( $postID ) ) $postID = get_option( "page_on_front" );
+		$title_attrib = stripslashes( get_post_meta($postID, '_aioseop_titleatr', true ) );
+		if ( empty( $title_attrib ) && !empty( $matches[4] ) ) $title_attrib = $matches[4];
+		if ( !empty( $title_attrib ) ) $title_attrib = ' title="' . strip_tags( $title_attrib ) . '"';
+		return '<li class="page_item page-item-'.$postID.$matches[2].'"><a href="'.$matches[3].'"'.$title_attrib.'>';
+	}
+}
+
+if ( !function_exists('aioseop_add_contactmethods' ) ) {
+	function aioseop_add_contactmethods( $contactmethods ) {
+		$contactmethods['googleplus'] = 'Google+';
+		return $contactmethods;
+	}
+}
+
+if (!function_exists('aioseop_meta_box_add')) {
+	function aioseop_meta_box_add() {
+			$mrt_aioseop_pts=get_post_types('','names'); 
+			$aioseop_options = get_option('aioseop_options');
+			$aioseop_mrt_cpt = $aioseop_options['aiosp_enablecpost'];
+			foreach ($mrt_aioseop_pts as $mrt_aioseop_pt) {
+				if($mrt_aioseop_pt == 'post' || $mrt_aioseop_pt == 'page' || $aioseop_mrt_cpt){
+					add_meta_box('aiosp',__('All in One SEO Pack', 'all_in_one_seo_pack'),'aiosp_meta',$mrt_aioseop_pt);
+				}
+			}
+	}
+}
+
+if (!function_exists('aiosp_meta')) {
+	function aiosp_meta() {
+		global $post;
+		$post_id = $post;
+		if (is_object($post_id)) $post_id = $post_id->ID;
+	 	$keywords = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_keywords', true)));
+	    	$title = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_title', true)));
+		$description = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_description', true)));
+	   	$aiosp_meta = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aiosp_meta', true)));
+	    	$aiosp_disable = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_disable', true)));
+	    	$aiosp_titleatr = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_titleatr', true)));
+	    	$aiosp_menulabel = htmlspecialchars(stripcslashes(get_post_meta($post_id, '_aioseop_menulabel', true)));	
+		?>
+			<SCRIPT LANGUAGE="JavaScript">
+			<!-- Begin
+			function countChars(field,cntfield) {
+			cntfield.value = field.value.length;
+			}
+			//  End -->
+			</script>
+			<input value="aiosp_edit" type="hidden" name="aiosp_edit" />
+
+			<a target="__blank" href="http://semperplugins.com/plugins/all-in-one-seo-pack-pro-version/"><?php _e('Upgrade to All in One SEO Pack Pro Version', 'all_in_one_seo_pack') ?></a>
+			<table style="margin-bottom:40px">
+			<tr>
+			<th style="text-align:left;" colspan="2">
+			</th>
+			</tr>
+
+			<tr>
+			<th scope="row" style="text-align:right;"><?php _e('Title:', 'all_in_one_seo_pack') ?></th>
+			<td><input value="<?php echo $title ?>" type="text" name="aiosp_title" size="62" onKeyDown="countChars(document.post.aiosp_title,document.post.lengthT)" onKeyUp="countChars(document.post.aiosp_title,document.post.lengthT)"/><br />
+				<input readonly type="text" name="lengthT" size="3" maxlength="3" style="text-align:center;" value="<?php echo strlen($title);?>" />
+				<?php _e(' characters. Most search engines use a maximum of 60 chars for the title.', 'all_in_one_seo_pack') ?>
+				</td>
+			</tr>
+
+			<tr>
+			<th scope="row" style="text-align:right;"><?php _e('Description:', 'all_in_one_seo_pack') ?></th>
+			<td><textarea name="aiosp_description" rows="3" cols="60"
+			onKeyDown="countChars(document.post.aiosp_description,document.post.length1)"
+			onKeyUp="countChars(document.post.aiosp_description,document.post.length1)"><?php echo $description ?></textarea><br />
+			<input readonly type="text" name="length1" size="3" maxlength="3" value="<?php echo strlen($description);?>" />
+			<?php _e(' characters. Most search engines use a maximum of 160 chars for the description.', 'all_in_one_seo_pack') ?>
+			</td>
+			</tr>
+
+			<tr>
+			<th scope="row" style="text-align:right;"><?php _e('Keywords (comma separated):', 'all_in_one_seo_pack') ?></th>
+			<td><input value="<?php echo $keywords ?>" type="text" name="aiosp_keywords" size="62"/></td>
+			</tr>
+			<input type="hidden" name="nonce-aioseop-edit" value="<?php echo wp_create_nonce('edit-aioseop-nonce') ?>" />
+	<?php if($post->post_type=='page'){ ?>
+			<tr>
+			<th scope="row" style="text-align:right;"><?php _e('Title Attribute:', 'all_in_one_seo_pack') ?></th>
+			<td><input value="<?php echo $aiosp_titleatr ?>" type="text" name="aiosp_titleatr" size="62"/></td>
+			</tr>
+
+			<tr>
+			<th scope="row" style="text-align:right;"><?php _e('Menu Label:', 'all_in_one_seo_pack') ?></th>
+			<td><input value="<?php echo $aiosp_menulabel ?>" type="text" name="aiosp_menulabel" size="62"/></td>
+			</tr>
+	<?php } ?>
+			<tr>
+			<th scope="row" style="text-align:right; vertical-align:top;">
+			<?php _e('Disable on this page/post:', 'all_in_one_seo_pack')?>
+			</th>
+			<td>
+			<input type="checkbox" name="aiosp_disable" <?php if ($aiosp_disable) echo "checked=\"1\""; ?>/>
+			</td>
+			</tr>
+			</table>
+		<?php
+	}
+}