<?php
/*
Plugin Name: Seo Http error manager
Plugin URI: http://www.wordpress-seo.com/seo-http-error-manager.php
Description: Modifiez en un clic le code d'erreur Http de votre page ( 301,302,404 ) Aidez nous a faire conna&icirc;tre ce Plugin en ajoutant un lien vers wordpress-seo.com ( optionnel mais appr&eacute;ci&eacute; , merci )
Author: Songeur.com pour Wordpress-seo.com
Version: 0.1
Author URI: http://www.songeur.com
*/ 

/* ************** A LIRE *********************************
Remarques, Traduction, Suggestion, Bug : http://www.wordpress-seo.com/seo-http-error-manager.php
Modifiez en un clic le code d'erreur Http de votre page ( 301,302,404 )
Aidez nous a faire conna&icirc;tre ce Plugin en ajoutant un lien vers wordpress-seo.com 
( optionnel mais appr&eacute;ci&eacute; , merci )
*********************************************************** */

// ---------------------------------------------
// Constantes
// ---------------------------------------------
$TAGERROR        "code_errorcode_worpress_seo"// ne pas editer
$TAGURL            "url_errorcode_worpress_seo"// ne pas editer
$DEFAULTURL    "http://www.wordpress-seo.com/redirection-par-defaut.php"// editable a vos risques et peril
// ----------------------------------------------------------
// source http://www.wordpress-seo.com/utiliser-les-postmeta.php 
// ----------------------------------------------------------
function wordpress_seo_http_error_code_manager_GetPostMeta_FromKeyAndPostId($TagKey,$Id,$Max=1)
{
    
// Les global issues de wordpress
    
global $wpdb,$table_prefix;
    
//
    // On force le debug
    
$Print_debug=0;
    
    
$ArrMsgAll=array();
    
$ArrMsgCount=0;
    
// ———————————-
    // On isole la liste
    
$SQL="SELECT meta_id,meta_value FROM `".$table_prefix."postmeta` where meta_key='".$TagKey."' AND post_id='".$Id."' limit ".$Max." " ;
    
    
$search_counter 0;
    
$A_meta $wpdb->get_results($SQL);
    if(
$A_meta){return $A_meta[0]->meta_value;}
    else{if(
$Print_debug==1){echo "<br>DEBUG : <br><p>No results.</p><br>";}}
    return 
""// vide !
}
// ----------------------
// definit un champ
// ----------------------
function wordpress_seo_http_error_code_manager_SetUserMeta($TagKey="error",$NewVal,$Id=0)
{
    
// Les global issues de wordpress
    
global $wpdb,$table_prefix;
    
//
    // On force le debug
    
$Print_debug=0;
    
    
$SQL="DELETE FROM `".$table_prefix."postmeta` where meta_key='".$TagKey."' AND post_id='".$Id."' " ;
    
$wpdb->get_results($SQL);
    
    
$SQL="INSERT INTO `".$table_prefix."postmeta` set meta_key='".$TagKey."', meta_value='".addslashes($NewVal)."' , post_id='".$Id."' " ;
    if(
$Print_debug==1){echo "<br>DEBUG : <br>$SQL<br>";}
    
$wpdb->get_results($SQL);
}
// ----------------------
// Affiche le formulaire
// ----------------------
function wordpress_seo_http_error_code_manager_print() {
    
    global 
$TAGERROR,$TAGURL,$DEFAULTURL;
    
$Tag_error="0"// 0 = ne rien faire
    
$Tag_url=$DEFAULTURL;
    if(isset(
$_GET['post']))
    {
        
$Tag_error=wordpress_seo_http_error_code_manager_GetPostMeta_FromKeyAndPostId($TAGERROR,$_GET['post']);
        
$Tag_urlt=wordpress_seo_http_error_code_manager_GetPostMeta_FromKeyAndPostId($TAGURL,$_GET['post']);
        if(
strlen($Tag_urlt)>0) {$Tag_url=$Tag_urlt;}

    
// inutil a la creation ! 
?>
<br><hr><br>
<fieldset id="wpseoerrcode">
<legend>Plugin Seo, Wordpress-seo.com : Imposer un code d'erreur.<br>Nous vous remercions de ne pas cree d'erreur 302 vers http://www.wordpress-seo.com</legend> 
<div>
Action : 
<select name="wordpressseoerrorcode_err" id="wordpressseoerrorcode_err">
<option value="0"<? if($Tag_error==0){echo " selected";}?>>Ne rien faire</option>
<option value="1"<? if($Tag_error==1){echo " selected";}?>>301 ( redirection permanante )</option>
<option value="2"<? if($Tag_error==2){echo " selected";}?>>302  ( redirection temporaire )</option>
<option value="3"<? if($Tag_error==3){echo " selected";}?>>404  ( n'existe plus )</option>
</select>
<br>
URL (301 ou 302 ): <input type="text" name="wordpressseoerrorcode_url" value="<? echo $Tag_url; ?>" size="50">
</div>
</fieldset>
<?
    }

}
//--------------------------------------------------------//
// Redirection
//--------------------------------------------------------//
function wordpress_seo_http_error_code_manager_redirecte()  {
     global $wp_query, $TAGERROR,$TAGURL,$DEFAULTURL;

if(isset($wp_query))
{
    if(isset($wp_query->post->ID))
    {
        $Tag_url=$DEFAULTURL;
        $Tag_error=wordpress_seo_http_error_code_manager_GetPostMeta_FromKeyAndPostId($TAGERROR,$wp_query->post->ID);
        $Tag_urlt=wordpress_seo_http_error_code_manager_GetPostMeta_FromKeyAndPostId($TAGURL,$wp_query->post->ID);
        if(strlen($Tag_urlt)>0) {$Tag_url=$Tag_urlt;}
        
        switch($Tag_error)
        {
            case 3: 
            header("HTTP/1.1 404 Not Found");
            die("<b>404 File not found!</b>"); 
            exit(); 
            break;
            case 2: 
            header("HTTP/1.1 302 Found", false, 302);
            header("Location: ".$Tag_url."");
            exit();
            break;
            case 1: 
            header('HTTP/1.1 301 Moved Permanently', false, 301); 
            header('Location: '.$Tag_url.''); 
      exit(); 
            break;
            case 0: default:     break;
        }
    }
}
}


//--------------------------------------------------------//
// Sauvegarde
//--------------------------------------------------------//
function wordpress_seo_http_error_code_manager_save()  {
     global $TAGERROR,$TAGURL,$DEFAULTURL;

     wordpress_seo_http_error_code_manager_SetUserMeta($TAGERROR,$_POST['wordpressseoerrorcode_err'],$_POST['ID']);
     wordpress_seo_http_error_code_manager_SetUserMeta($TAGURL,$_POST['wordpressseoerrorcode_url'],$_POST['ID']);
}

// ------------------------------------------------------------
// Action pour l'edition/sauvegarde
// ------------------------------------------------------------
add_action('edit_form_advanced', 'wordpress_seo_http_error_code_manager_print');
add_action('simple_edit_form', 'wordpress_seo_http_error_code_manager_print');
add_action('edit_page_form', 'wordpress_seo_http_error_code_manager_print');
add_action('publish_post', 'wordpress_seo_http_error_code_manager_save');
add_action('template_redirect', 'wordpress_seo_http_error_code_manager_redirecte');
?>