WordPress.org

Plugin Directory

Changeset 464199


Ignore:
Timestamp:
11/17/11 14:46:48 (2 years ago)
Author:
bolo1988
Message:
 
Location:
googl-url-shorter/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • googl-url-shorter/trunk/googl-url-shorter.php

    r463629 r464199  
    66Author: CodeCTO 
    77Author URI: http://codecto.com/ 
    8 Version: 1.0 
     8Version: 1.0.1 
    99*/ 
    1010/*  
     
    125125 
    126126function GUS_option_page_content(){ 
     127    /* 
     128    global $wpdb; 
     129    $table_name = $wpdb->prefix.'gus'; 
    127130    if($_POST){ 
    128131        check_admin_referer('GUS_setting_save','GUS_setting_save_nonce'); 
    129132    } 
     133    $test = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table_name WHERE long_url = %s", array('http://admindeal.net/'))); 
     134    print_r($test); 
     135    */ 
     136    $GUS_list_table = new WP_GUS_List_Table(); 
     137    $pagenum = $GUS_list_table->get_pagenum(); 
     138    $GUS_list_table->process_bulk_action(); 
     139    $GUS_list_table->prepare_items(); 
     140    //$GUS_list_table->display(); 
    130141    ?> 
    131142<script language=javascript> 
     
    135146    $.getJSON(api+'?callback=?',{ 
    136147        action : 'GUS_api', 
     148        title : $('#title').val(), 
    137149        long_url : $('#long_url').val() 
    138150        },function(data){ 
    139151            $('#short_url').val(data.short_url); 
     152            $('<tr class="new"><th class="check-column" scope="row"><input type="checkbox" value="" name="GUS[]"></th><td class="ID column-ID">'+data.ID+'</td><td class="title column-title">'+data.title+'</td><td class="long_url column-long_url">'+data.long_url+'</td><td class="short_url column-short_url">'+data.short_url+'</td><td class="operation column-operation"><div class="row-actions-visible"><span class="delete"><a href="/wp/wp-admin/options-general.php?page=GUS_option_page&action=delete&GUS[]='+data.ID+'&_wpnonce=862af5a6b6">Delete</a></span></div></td></tr>').insertBefore('#the-list tr:eq(0)'); 
    140153        } 
    141154    ) 
     
    149162<table class="form-table"> 
    150163    <tbody> 
     164        <tr> 
     165            <th> 
     166                <label for="title">Title: </label> 
     167            </th> 
     168            <td> 
     169                <input type="text" class="regular-text code" value="" id="title" name="title"> 
     170            </td> 
     171        </tr> 
    151172        <tr> 
    152173            <th> 
     
    176197 
    177198</div> 
     199<br /> 
     200<h3>Short URLs Manager</h3> 
    178201    <?php 
     202    $GUS_list_table->display(); 
    179203} 
    180204 
     
    182206add_action('wp_ajax_nopriv_GUS_api', 'GUS_api'); 
    183207function GUS_api(){ 
    184     $googl = new goo_gl($_REQUEST['long_url']); 
     208    if(!filter_var($_REQUEST['long_url'], FILTER_VALIDATE_URL)){ 
     209        $result = array( 
     210            'error' => 'Please input a valid long url.', 
     211        ); 
     212        if($_REQUEST['callback']){ 
     213            echo $_REQUEST['callback'].'('.json_encode($result).')'; 
     214        }else{ 
     215            echo json_encode($result); 
     216        } 
     217        die; 
     218    } 
     219    global $wpdb; 
     220    $table_name = $wpdb->prefix.'gus'; 
     221    $title = $_REQUEST['title']; 
     222    $long_url = $_REQUEST['long_url']; 
     223    $find = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table_name WHERE long_url = %s", array($long_url))); 
     224    if(!$find){ 
     225        $googl = new goo_gl($long_url); 
     226        $short_url = $googl->result(); 
     227        $wpdb->insert($wpdb->prefix.'gus', array( 
     228            'id' => null, 
     229            'title' => $title, 
     230            'long_url' => $long_url, 
     231            'short_url' => $short_url, 
     232        )); 
     233        $ID = $wpdb->insert_id; 
     234    }else{ 
     235        $short_url = $find->short_url; 
     236        $ID = $find->ID; 
     237    } 
    185238    $result = array( 
    186         'long_url' => $_REQUEST['long_url'], 
    187         'short_url' => $googl->result(), 
     239        'ID' => $ID, 
     240        'title' => $title, 
     241        'long_url' => $long_url, 
     242        'short_url' => $short_url, 
    188243    ); 
    189244    if($_REQUEST['callback']){ 
     
    230285        'context' => '', 
    231286    ), $atts ) ); 
    232     $googl = new goo_gl($content); 
    233     $short_url = $googl->result(); 
    234     if(!$wpdb->get_var($wpdb->prepare( "SELECT * FROM $table_name WHERE long_url = '$content'" ))){ 
     287    $find = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table_name WHERE long_url = %s", array($content))); 
     288    if(!$find){ 
     289        $googl = new goo_gl($content); 
     290        $short_url = $googl->result(); 
    235291        $wpdb->insert($wpdb->prefix.'gus', array( 
    236292            'id' => null, 
     
    239295            'short_url' => $short_url, 
    240296        )); 
     297    }else{ 
     298        $short_url = $find->short_url; 
    241299    } 
    242300    return '<a href="'.$short_url.'"'.($title?' title="'.$title.'"':'').' target="_blank">'.($context?$context:$content).'</a>'; 
    243301} 
     302 
     303include_once(ABSPATH.'wp-admin/includes/class-wp-list-table.php'); 
     304class WP_GUS_List_Table extends WP_List_Table { 
     305 
     306    function __construct(){ 
     307        global $status, $page; 
     308                 
     309        parent::__construct( array( 
     310            'singular'  => 'GUS',     //singular name of the listed records 
     311            'plural'    => 'GUS',    //plural name of the listed records 
     312            'ajax'      => false        //does this table support ajax? 
     313        ) ); 
     314         
     315    } 
     316     
     317    function column_default($item, $column_name){ 
     318         return $item[$column_name]; 
     319          
     320        switch($column_name){ 
     321            case 'rating': 
     322            case 'director': 
     323                return $item[$column_name]; 
     324            default: 
     325                return print_r($item,true); //Show the whole array for troubleshooting purposes 
     326        } 
     327    } 
     328     
     329    function column_operation($item){ 
     330 
     331        $delete_url = add_query_arg(array( 
     332            'action'=>'delete', 
     333            $this->_args['singular'].'[]'=>$item['ID'], 
     334            '_wpnonce'=>wp_create_nonce('bulk-' . $this->_args['plural']) 
     335            ), 
     336            remove_query_arg( $this->_args['singular'].'[]' )  
     337        ); 
     338                 
     339        //Build row actions 
     340        $actions = array( 
     341            //'edit'      => sprintf('<a href="?page=%s&action=%s&movie=%s">Edit</a>',$_REQUEST['page'],'edit',$item['id']), 
     342            'delete'    => '<a href="'.$delete_url.'">Delete</a>' 
     343        ); 
     344         
     345        //Return the title contents 
     346        return $this->row_actions($actions,true); 
     347    } 
     348     
     349    function column_cb($item){ 
     350        return sprintf( 
     351            '<input type="checkbox" name="%1$s[]" value="%2$s" />', 
     352            /*$1%s*/ $this->_args['singular'],  //Let's simply repurpose the table's singular label ("movie") 
     353            /*$2%s*/ $item['id']                //The value of the checkbox should be the record's id 
     354        ); 
     355    } 
     356     
     357    function get_columns(){ 
     358        $columns = array( 
     359            'cb'        => '<input type="checkbox" />', //Render a checkbox instead of text 
     360            'ID'     => 'ID', 
     361            'title'     => 'Title', 
     362            'long_url'     => 'Long URL', 
     363            'short_url'    => 'Short URL', 
     364            'operation' => 'Operations' 
     365             
     366        ); 
     367        return $columns; 
     368    } 
     369     
     370    function get_sortable_columns() { 
     371        $sortable_columns = array( 
     372            'display_name'     => array('display_name',false),     //true means its already sorted 
     373            'time'     => array('time',false),     //true means its already sorted 
     374            'discount'     => array('discount',false),     //true means its already sorted 
     375        ); 
     376        return $sortable_columns; 
     377    } 
     378     
     379    function get_bulk_actions() { 
     380        $actions = array( 
     381            'delete'    => 'delete' 
     382        ); 
     383        return $actions; 
     384    } 
     385     
     386    function process_bulk_action() { 
     387         
     388        //Detect when a bulk action is being triggered... 
     389        if( 'delete'===$this->current_action() ) { 
     390                check_admin_referer('bulk-' . $this->_args['plural']); 
     391                $delete_redeem_codes = $_REQUEST['GUS']; 
     392                if(is_array($delete_redeem_codes)){ 
     393                    global $wpdb; 
     394                    foreach($delete_redeem_codes as $delete_redeem_code){ 
     395                        $wpdb->query("delete from {$wpdb->prefix}gus where id=".(int)$delete_redeem_code); 
     396                    } 
     397                } 
     398                ?> 
     399                <div class="updated" id="message"><p>Delete Short URL successed!</p></div> 
     400                <?php 
     401 
     402        } 
     403         
     404    } 
     405     
     406    function prepare_items() { 
     407         
     408        $per_page = 20; 
     409         
     410        $columns = $this->get_columns(); 
     411        $hidden = array(); 
     412        $sortable = $this->get_sortable_columns(); 
     413         
     414        $this->_column_headers = array($columns, $hidden, $sortable); 
     415         
     416        global $wpdb; 
     417        $data_per_page = $per_page; //每页显示多少 
     418        $thispage = $this->get_pagenum(); //当前第几页 
     419        if(!empty($_REQUEST['orderby']) && !empty($_REQUEST['order']) && array_key_exists($_REQUEST['orderby'],$this->get_sortable_columns()) && in_array($_REQUEST['order'],array('asc','desc'))){ 
     420            $query_sort = ' ORDER BY '.$_REQUEST['orderby'].' '.$_REQUEST['order'].' '; //排序方式 
     421        }else 
     422            $query_sort = ' ORDER BY id desc '; //排序方式 
     423        $s_display_name = stripslashes_deep($_REQUEST['s_display_name']); 
     424        $thispage = (int) ( 0 == $thispage ) ? 1 : $thispage; 
     425        $first_data = ($thispage - 1) * $data_per_page; 
     426        $query_limit = $wpdb->prepare(" LIMIT %d, %d", $first_data, $data_per_page);     
     427        if(isset($_REQUEST['status'])) 
     428            $where =  $wpdb->prepare(' where status=%d ',$_REQUEST['status']); 
     429        else 
     430            $where =  ' where 1=1 '; 
     431         
     432        $args = array(); //下一页网页中附加的参数 
     433         
     434        if($s_display_name){ 
     435            $where .=  $wpdb->prepare(" and {$wpdb->users}.display_name = %s ",$s_display_name); 
     436        } 
     437         
     438        $sql = "SELECT SQL_CALC_FOUND_ROWS *  
     439from {$wpdb->prefix}gus"; 
     440        $data = $wpdb->get_results($sql.$where.$query_sort.$query_limit,ARRAY_A); 
     441        //echo $sql.$where.$query_sort.$query_limit; 
     442         
     443        $current_page = $this->get_pagenum(); 
     444         
     445        $total_items = $wpdb->get_var( "SELECT FOUND_ROWS()" ); 
     446         
     447        $this->items = $data; 
     448         
     449        $this->set_pagination_args( array( 
     450            'total_items' => $total_items,                  //WE have to calculate the total number of items 
     451            'per_page'    => $per_page,                     //WE have to determine how many items to show on a page 
     452            'total_pages' => ceil($total_items/$per_page)   //WE have to calculate the total number of pages 
     453        ) ); 
     454        return $data; 
     455    } 
     456} 
  • googl-url-shorter/trunk/readme.txt

    r463629 r464199  
    1717== Screenshots == 
    1818 
     191. Short URLs Manager 
     20 
    1921== Changelog == 
     22 
     23= 1.0.1 = 
     24* Program optimize 
     25* Add short urls manager 
    2026 
    2127= 1.0 = 
Note: See TracChangeset for help on using the changeset viewer.