SHOW:
|
|
- or go back to the newest paste.
| 1 | <?php | |
| 2 | /* | |
| 3 | Plugin Name: AV - Vote for Standalone Document | |
| 4 | Plugin URI: http://pippinsplugins.com/write-a-love-it-plugin-with-ajax/ | |
| 5 | Description: AJAX voting on posts/pages | |
| 6 | Version: 1.0 | |
| 7 | Author: Alex Vallejo | |
| 8 | Author URI: | |
| 9 | */ | |
| 10 | ||
| 11 | if(!defined('DOC_VOTE_BASE_DIR')){
| |
| 12 | define('DOC_VOTE_BASE_DIR', dirname(__FILE__));
| |
| 13 | } | |
| 14 | if(!defined('DOC_VOTE_BASE_URL')){
| |
| 15 | define('DOC_VOTE_BASE_URL',plugin_dir_url(__FILE__));
| |
| 16 | } | |
| 17 | ||
| 18 | function vote_standalone_doc_table(){
| |
| 19 | global $wpdb; | |
| 20 | $sql = "CREATE TABLE IF NOT EXISTS wp_vote_standalone_doc ( | |
| 21 | - | ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, |
| 21 | + | ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, |
| 22 | - | doc_id SMALLINT NOT NULL, |
| 22 | + | doc_id SMALLINT NOT NULL, |
| 23 | - | votes SMALLINT NOT NULL, |
| 23 | + | votes SMALLINT NOT NULL, |
| 24 | - | drilldown SMALLINT NOT NULL |
| 24 | + | drilldown SMALLINT NOT NULL |
| 25 | )"; | |
| 26 | require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); | |
| 27 | dbDelta($sql); | |
| 28 | } | |
| 29 | register_activation_hook( __FILE__, 'vote_standalone_doc_table' ); | |
| 30 | ||
| 31 | class Vote_Standalone_Doc{
| |
| 32 | ||
| 33 | function vote_load_js(){
| |
| 34 | wp_enqueue_script('av-vote', DOC_VOTE_BASE_URL . 'js/av_vote.js', array( 'jquery' ));
| |
| 35 | - | wp_enqueue_script('av-vote', DOC_VOTE_BASE_URL . 'js/av_vote.js', array( 'jquery' ));
|
| 35 | + | wp_localize_script('av-vote', 'av_vote_vars',
|
| 36 | - | wp_localize_script('av-vote', 'av_vote_vars',
|
| 36 | + | array( |
| 37 | - | array( |
| 37 | + | 'ajaxurl' => admin_url( 'admin-ajax.php' ), |
| 38 | - | 'ajaxurl' => admin_url( 'admin-ajax.php' ), |
| 38 | + | 'nonce' => wp_create_nonce('av-vote-nonce'),
|
| 39 | - | 'nonce' => wp_create_nonce('av-vote-nonce'),
|
| 39 | + | 'thanks' => 'Thanks for your feedback.', |
| 40 | - | 'thanks' => 'Thanks for your feedback.', |
| 40 | + | 'error_message' => 'Sorry, there was a problem processing your request.' |
| 41 | - | 'error_message' => 'Sorry, there was a problem processing your request.' |
| 41 | + | ) |
| 42 | - | ) |
| 42 | + | ); |
| 43 | - | ); |
| 43 | + | wp_register_style('vote_standalone_doc_survey', DOC_VOTE_BASE_URL . 'includes/style.css');
|
| 44 | - | wp_register_style('vote_standalone_doc_survey', DOC_VOTE_BASE_URL . 'includes/style.css');
|
| 44 | + | wp_enqueue_style('vote_standalone_doc_survey', DOC_VOTE_BASE_URL . 'includes/style.css');
|
| 45 | - | wp_enqueue_style('vote_standalone_doc_survey', DOC_VOTE_BASE_URL . 'includes/style.css');
|
| 45 | + | |
| 46 | ||
| 47 | ||
| 48 | function __construct(){
| |
| 49 | $this->hooks(); | |
| 50 | } | |
| 51 | function hooks(){
| |
| 52 | //add_action('wp_enqueue_scripts', 'vote_load_js');
| |
| 53 | add_action('wp_head',array($this,'vote_load_js'));
| |
| 54 | add_action( 'wp_ajax_register_vote', array($this,'handle_vote') ); | |
| 55 | } | |
| 56 | ||
| 57 | function av_vsd_display_link(){
| |
| 58 | global $wpdb; | |
| 59 | //Show Vote option only if Embeds_On_Page == 0 | |
| 60 | global $post; | |
| 61 | ||
| 62 | $doc_id = $post->ID; | |
| 63 | - | $doc_id = $post->ID; |
| 63 | + | |
| 64 | $vote_count = $wpdb->get_results($wpdb->prepare("SELECT votes FROM wp_vote_standalone_doc WHERE doc_id = %d", $doc_id));
| |
| 65 | - | $vote_count = $wpdb->get_results($wpdb->prepare("SELECT votes FROM wp_vote_standalone_doc WHERE doc_id = %d", $doc_id));
|
| 65 | + | if(is_array($vote_count)){$vote_count = intval($vote_count[0]->votes);}
|
| 66 | - | if(is_array($vote_count)){$vote_count = intval($vote_count[0]->votes);}
|
| 66 | + | if(is_int($vote_count)){
|
| 67 | - | if(is_int($vote_count)){
|
| 67 | + | if($vote_count == 1){$vote_or_votes = 'Vote';}else{$vote_or_votes = 'Votes';} // Display "vote" or "votes"
|
| 68 | - | if($vote_count == 1){$vote_or_votes = 'Vote';}else{$vote_or_votes = 'Votes';} // Display "vote" or "votes"
|
| 68 | + | if(isset($doc_id)){
|
| 69 | - | if(isset($doc_id)){
|
| 69 | + | $html = '<div class="questions"><span id="question1"><a href="#" class="vote_for_doc" data-doc_id="'.$doc_id.'"> |
| 70 | - | $html = '<div class="questions"><span id="question1"><a href="#" class="vote_for_doc" data-doc_id="'.$doc_id.'"> |
| 70 | + | I would like to have this document integrated into CT2</a></span> |
| 71 | - | I would like to have this document integrated into CT2</a></span> |
| 71 | + | |
| 72 | <span id="question2" class="drilldown_text">I would like the document to have in-line links to further information on various topics: <a href="#" class="drilldown" data-drilldown=1>Yes, show me drilldown content</a><a href="#" class="drilldown" data-drilldown=0>No thanks</a></span> | |
| 73 | - | <span id="question2" class="drilldown_text">I would like the document to have in-line links to further information on various topics: <a href="#" class="drilldown" data-drilldown=1>Yes, show me drilldown content</a><a href="#" class="drilldown" data-drilldown=0>No thanks</a></span> |
| 73 | + | |
| 74 | <span id="status">(<span class="vote-count">' . $vote_count . '</span> '.$vote_or_votes.' for ' . get_the_title($doc_id) . ')</span></div>'; | |
| 75 | - | <span id="status">(<span class="vote-count">' . $vote_count . '</span> '.$vote_or_votes.' for ' . get_the_title($doc_id) . ')</span></div>'; |
| 75 | + | |
| 76 | }else{ // get_the_title failed
| |
| 77 | $html = 'The title for this document was not found.'; | |
| 78 | } | |
| 79 | ||
| 80 | }else{
| |
| 81 | if(is_string($vote_count)){
| |
| 82 | $html = '$vote_count is a string in the database<p>' . print_r($vote_count); | |
| 83 | }if(is_array($vote_count)){
| |
| 84 | $html = '$vote_count is an array in the database<p>' . print_r($vote_count); | |
| 85 | }else{
| |
| 86 | $html = '$vote_count is not a string or an integer<p>' . var_dump($vote_count); | |
| 87 | } | |
| 88 | } | |
| 89 | //} | |
| 90 | return $html; | |
| 91 | } | |
| 92 | function handle_vote(){
| |
| 93 | global $wpdb; | |
| 94 | ||
| 95 | /*if( !is_user_logged_in() ) | |
| 96 | return false;*/ | |
| 97 | ||
| 98 | if( !wp_verify_nonce( $_POST['nonce'], 'av-vote-nonce' )) | |
| 99 | die( 'Go away!'); | |
| 100 | ||
| 101 | $get_old_votes = $wpdb->get_results($wpdb->prepare("SELECT votes FROM wp_vote_standalone_doc WHERE doc_id = %d", $_POST['doc_id']));
| |
| 102 | if(is_array($get_old_votes)){$get_old_votes = $get_old_votes[0]->votes;}
| |
| 103 | ||
| 104 | $old_drilldown = $wpdb->get_results($wpdb->prepare("SELECT drilldown FROM wp_vote_standalone_doc WHERE doc_id = %d", $_POST['doc_id']));
| |
| 105 | if(is_array($get_old_votes)){$get_old_votes = $get_old_votes[0]->votes;}
| |
| 106 | ||
| 107 | if($get_old_votes){
| |
| 108 | $new_votes = $get_old_votes + 1; | |
| 109 | $new_drilldown = intval($_POST['drilldown']) + intval($old_drilldown); | |
| 110 | if(is_int($new_votes)){
| |
| 111 | ||
| 112 | $update_vote = $wpdb->update( 'wp_vote_standalone_doc', | |
| 113 | array( 'votes' => $new_votes, | |
| 114 | - | array( 'votes' => $new_votes, |
| 114 | + | 'drilldown' => $new_drilldown), |
| 115 | - | 'drilldown' => $new_drilldown |
| 115 | + | array( 'doc_id' => $_POST['doc_id']), |
| 116 | - | ), |
| 116 | + | array( '%d', '%d' ), |
| 117 | - | array( 'doc_id' => $_POST['doc_id'] |
| 117 | + | array( '%d' ) |
| 118 | - | ), |
| 118 | + | ); |
| 119 | - | array( '%d', '%d' ), |
| 119 | + | |
| 120 | - | array( '%d' ) |
| 120 | + | |
| 121 | - | ); |
| 121 | + | |
| 122 | }else{
| |
| 123 | echo "Vote recorded"; | |
| 124 | } | |
| 125 | } | |
| 126 | //$wpdb->print_error(); | |
| 127 | }else{ // New row entry
| |
| 128 | $insert_row = $wpdb->insert( 'wp_vote_standalone_doc', | |
| 129 | array( 'doc_id' => $_POST['doc_id'], | |
| 130 | 'drilldown' => $_POST['drilldown'], | |
| 131 | 'votes' => 1), | |
| 132 | - | array( 'doc_id' => $_POST['doc_id'], |
| 132 | + | array( '%d','%d','%d' ) |
| 133 | - | 'drilldown' => $_POST['drilldown'], |
| 133 | + | ); |
| 134 | - | 'votes' => 1), |
| 134 | + | |
| 135 | - | array( '%d','%d','%d' ) |
| 135 | + | |
| 136 | - | ); |
| 136 | + | |
| 137 | echo "Vote not recorded"; | |
| 138 | }else{
| |
| 139 | echo "Vote recorded"; | |
| 140 | } | |
| 141 | } | |
| 142 | //} | |
| 143 | die(); | |
| 144 | } | |
| 145 | ||
| 146 | } // END CLASS MY_LIKE_BUTTON | |
| 147 | ||
| 148 | $vote_button = new Vote_Standalone_Doc; | |
| 149 | add_shortcode( 'vote', array('Vote_Standalone_Doc', 'av_vsd_display_link') );
| |
| 150 | ?> |