<?php
/*
Plugin Name: Blog Copyright
Plugin URI: http://guff.szub.net/blog-copyright/
Description: Display dated copyright mark. Post/Page (post date or custom field) and archive aware.
Version: R2.1
Author: Kaf Oseo
Author URI: http://szub.net

    Copyright (c) 2005, 2006 Kaf Oseo (http://szub.net)
    Blog Copyright is released under the GNU General Public License
    (GPL) http://www.gnu.org/licenses/gpl.txt

    This is a WordPress plugin (http://wordpress.org).

USAGE

<?php blog_copyright(owner, author, 'idmode', 'customkey', 'before', 'after', 'copyterm', 'rights', in_loop, display); ?>
<?php szub_blog_copyright('args'); ?>

PARAMETERS

owner : (integer -or- string)
    User ID of copyright holder. Set to 0 (zero) to use the blog name
    as holder (default). Provide a string to override value and use a
    custom name for holder: 'Joe aka The Bloggermeister'.

author : (boolean)
    Show post or Page author as copyright holder. Set to FALSE (0) to
    use 'owner' (blog name if 'owner' is 0). Defaults to TRUE (1).

idmode : (enum)
    Set format for copyright holder's name. Default is display option
    set under their user profile. Options:
        'login' - login name
        'nickname' - nickname only
        'firstname' - first name only
        'lastname' - last name only
        'namefl' - name in format "firstname lastname"
        'namelf' - name in format "lastname firstname"
        'namenl' - name in format "nickname lastname"

customkey : (string)
    Copyright custom field key expected when using a custom field for
    individual post or Page copyright information. Example: 'cc' (for
    say a Creative Commons license). Default is 'copyright'.

before : (string)
    Text or HTML displayed before copyright. Default is '<p>'.

after : (string)
    Text or HTML displayed after copyright. Default is '</p>'.

copyterm : (string)
    Text displayed for copyright term. Default is 'Copyright&169;'.

rights : (string)
    Text displayed for "reservation of rights," which comes after the
    copyright holder's name. Example: 'All Rights Reserved'. There is
    no default.

in_loop : (boolean)
    If used in The Loop, set this to TRUE (1) to force post date year
    for copyright year. Defaults to FALSE (0).

display : (boolean)
    Display copyright notice (TRUE (1)) or return it for use in other
    code (FALSE (0)). Defaults to TRUE (1).

~Changelog:
R2.1 (Feb-2-2005)
Added 'display' parameter.

R2 (Jan-8-2005)
Fixes for WordPress 2.0 support; new parameter (in_loop) forces post-
specific copydate when used in The Loop.

Added function: szub_blog_copyright(), a query-string style argument
wrapper for blog_copyright(). Example:

    <?php szub_blog_copyright('in_loop=1&before=&after='); ?>

R1.0.1 (Jul-15-2005)
Fixed code logic handling $author.
*/

function szub_blog_copyright($args='') {
    
parse_str($args);
    if (!isset(
$owner)) $owner 0;
    if (!isset(
$author)) $author 1;
    if (!isset(
$idmode)) $idmode '';
    if (!isset(
$customkey)) $customkey '';
    if (!isset(
$before)) $before '<p>';
    if (!isset(
$after)) $after '</p>';
    if (!isset(
$copyterm)) $copyterm '';
    if (!isset(
$rights)) $rights '';
    if (!isset(
$in_loop)) $in_loop 0;
    if (!isset(
$display)) $display 1;

    return 
blog_copyright($owner$author$idmode$customkey$before$after$copyterm$rights$in_loop$display);
}

function 
blog_copyright($owner=0$author=true$idmode=''$customkey=''$before='<p>'$after='</p>'$copyterm=''$rights=''$in_loop=false$display=true) {
    global 
$post$wp_query$wpdb$m$year;

    if(!
$owner) {
        
$copyowner get_bloginfo('name');
    } else {
        if(
is_numeric($owner)) {
            
$copyowner get_copyright_owner($owner$idmode);
        } else {
            
$copyowner $owner;
        }
    }

    if(
$in_loop || is_single() || is_page()) {
        
$post $wp_query->post;
        
get_post_custom($post->ID);

        if(
$author) {
            
$copyowner get_copyright_owner($post->post_author$idmode);
        }
        if(!
$customkey) {
            
$customkey='copyright';
        }
        if(
get_post_custom_values("$customkey")) {
            
$post_override 1;
            foreach(
get_post_custom_values("$customkey") as $copyright) {}
        } else {
            
$copydate substr($post->post_date04);
        }
    } else {
        if(
$m) {
            
$copydate substr($m04);
        } elseif(
$year) {
            
$copydate $year;
        } else {
            
$postdate = @$wpdb->get_row("SELECT MIN(YEAR(post_date)) AS first, MAX(YEAR(post_date)) AS last FROM $wpdb->posts WHERE post_status = 'publish'");
            if(
$postdate->first === $postdate->last) {
                
$copydate $postdate->last;
            } else {
                
$copydate $postdate->first '-' $postdate->last;
            }
        }
    }

    if(!
$post_override) {
        if(!
$copyterm) {
            
$copyterm='Copyright&#169;';
        }
        
$copyright $copyterm $copydate ' ' $copyowner;

        if(
$rights) {
            
$copyright .= '. ' $rights;
        }
    }

    if(
$display)
        echo 
$before $copyright $after;

    return 
$copyright;
}

function 
get_copyright_owner($owner$idmode) {
    global 
$wp_version;

    
$owner get_userdata($owner);

    if(
$wp_version >= 2) {
        
$firstname $owner->first_name;
        
$lastname $owner->last_name;
        
$nickname =  $owner->nickname;
    } else {
        if(empty(
$idmode)) {
            
$idmode $owner->user_idmode;
        }
        
$firstname $owner->user_firstname;
        
$lastname $owner->user_lastname;
        
$nickname =  $owner->user_nickname;
    }

    switch(
$idmode) {
        case 
'login' :
            
$copyowner $owner->user_login;
            break;
        case 
'nickname' :
            
$copyowner $nickname;
            break;
        case 
'firstname' :
            
$copyowner $firstname;
            break;
        case 
'lastname' :
            
$copyowner $lastname;
            break;
        case 
'namefl' :
            
$copyowner $firstname ' ' $lastname;
            break;
        case 
'namelf' :
            
$copyowner $lastname ' ' $firstname;
            break;
        case 
'namenl' :
            
$copyowner $nickname ' ' $lastname;
            break;
        default :
            if(
$wp_version >= 2) {
                
$copyowner $owner->display_name;
            } else {
                
$copyowner $nickname;
            }
    }


    return 
$copyowner;
}

// uncomment next line to auto-display copyright in theme footer
// add_action('wp_footer', 'blog_copyright');
?>