emo_vote = $wpdb->prefix .'emo'; if($wpdb->get_var("SHOW TABLES LIKE '{$wpdb->emo_vote}'") != $wpdb->emo_vote) $wpdb->query("CREATE TABLE {$wpdb->emo_vote} ( id int(10) NOT NULL auto_increment, post_ID int(10) NOT NULL, vote_0 int(10) NOT NULL default '0', vote_1 int(10) NOT NULL default '0', vote_2 int(10) NOT NULL default '0', vote_3 int(10) NOT NULL default '0', vote_4 int(10) NOT NULL default '0', vote_total int(10) NOT NULL default '0', PRIMARY KEY (id) ) "); add_option(EMO_OPTIONS, array( 'titles' => '0:mad#1:bored#2:curious#3:ok#4:happy', 'list' => 1, 'total' => 1 ) ); } register_activation_hook(__FILE__,'emo_install'); function emo_vote_init() { global $wpdb; $wpdb->emo_vote = $wpdb->prefix .'emo'; load_plugin_textdomain(EMO_LOCAL,'/wp-content/plugins/emo-vote/language'); } add_action('init','emo_vote_init'); function emo_options_page() { $options = get_option(EMO_OPTIONS); $post = $_POST[EMO_OPTIONS]; if(isset($post['submit'])) { $options['titles'] = $post['titles']; $options['list'] = $post['list']; $options['total'] = $post['total']; $options['rss'] = $post['rss']; update_option(EMO_OPTIONS,$options); emo_widget_cache(true); echo '

'. __('Options Updated',EMO_LOCAL) .'

'; } $options['titles'] = split('#',$options['titles']); ?>

' : '

'. $question .'

'; if($options['list'] > 0) $values = $wpdb->get_row($wpdb->prepare("SELECT CONCAT(round(vote_0/vote_total*100,0),'%') as vote_0, CONCAT(round(vote_1/vote_total*100,0),'%') as vote_1, CONCAT(round(vote_2/vote_total*100,0),'%') as vote_2, CONCAT(round(vote_3/vote_total*100,0),'%') as vote_3, CONCAT(round(vote_4/vote_total*100,0),'%') as vote_4, vote_total FROM {$wpdb->emo_vote} WHERE post_ID = %d",$post_id),ARRAY_A); else $values = $wpdb->get_row($wpdb->prepare("SELECT vote_0, vote_1, vote_2, vote_3, vote_4, vote_total FROM {$wpdb->emo_vote} WHERE post_ID = %d",$post_id),ARRAY_A); if(is_emo()) $disabled = 'disabled="disabled" '; foreach ($titles as $title) { list($key, $val) = split(':', $title); if ($_COOKIE['emo_vote-'. $post_id] == $key) $checked = 'checked="checked" '; $value = ($values['vote_'. $key]) ? $values['vote_'. $key] : (($options['list'] > 0) ? '0%' : '0'); $return .= ''; $return .= ' '; $return .= '('. $value .')'; $checked = null; } if($options['total'] > 0) { $total = $values['vote_total'] > 1 ? str_replace('%',$values['vote_total'],$more) : ($values['vote_total'] == 1 ? $one : $zero); $return .= '
'. $total .'
'; } $return .= '
'; if(is_single() && !is_emo() && strlen($vote) > 0) $return .= ''; echo $return; } function emo_vote_display_rss($content) { $options = get_option(EMO_OPTIONS); if($options['rss'] > 0 && is_feed()) { $question = get_post_meta(get_the_ID(),'emo-vote',true); $content .= '

'; $content .= (!$question) ? '' : $question .'

'; $permalink = (!get_option('permalink_structure')) ? get_permalink(get_the_ID()) . '&' : get_permalink(get_the_ID()) . '?'; $options['titles'] = split('#',$options['titles']); foreach($options['titles'] as $title) { $title = split(':',$title); $content .= ''. $title[1] .'? '; } $content .= '

'; } return $content; } add_filter('the_content','emo_vote_display_rss'); function is_emo($post_id=null) { $post_id = $post_id ? $post_id : get_the_ID(); // Determines whether a user already has emoted or not. return isset($_COOKIE['emo_vote-'. $post_id]) ? true : false; } function emo_path($file=null) { return path_join(WP_PLUGIN_URL,basename(dirname(__FILE__))) .'/'. $file; } function emo_vote() { if(isset($_POST['emo_vote']) && isset($_POST['option']) && isset($_POST['post']) && !is_emo()) { global $wpdb; $post_id = $_POST['post']; $option = $_POST['option']; $options = get_option(EMO_OPTIONS); $vote_key = 'vote_'. $option; // Insert a row for the post first when a user emotes. if(!$wpdb->get_var($wpdb->prepare("SELECT id FROM {$wpdb->emo_vote} WHERE post_id = %d LIMIT 1",$post_id))) $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->emo_vote} (post_ID) VALUES (%d)",$post_id)); // Update the choosen key and total sum. $results = $wpdb->get_row($wpdb->prepare("SELECT {$vote_key},vote_total FROM {$wpdb->emo_vote} WHERE post_ID = %d",$post_id),ARRAY_A); $vote_val = intval($results[$vote_key]); $vote_total = intval($results['vote_total']); ++$vote_val; ++$vote_total; if($wpdb->query($wpdb->prepare("UPDATE {$wpdb->emo_vote} SET {$vote_key} = %d,vote_total = %d WHERE post_ID = %d LIMIT 1",$vote_val,$vote_total,$post_id))) { // Thanks to Stephen Cronin for solving the setcookie probs: http://www.scratch99.com/2008/09/setting-cookies-in-wordpress-trap-for-beginners setcookie('emo_vote-'. $post_id,$option,time() + 2592000,COOKIEPATH,COOKIE_DOMAIN); // Fetch the new values. if($options['list'] > 0) $return = $wpdb->get_row($wpdb->prepare("SELECT CONCAT(round(vote_0/vote_total*100,0),'%') as vote_0, CONCAT(round(vote_1/vote_total*100,0),'%') as vote_1, CONCAT(round(vote_2/vote_total*100,0),'%') as vote_2, CONCAT(round(vote_3/vote_total*100,0),'%') as vote_3, CONCAT(round(vote_4/vote_total*100,0),'%') as vote_4, vote_total FROM {$wpdb->emo_vote} WHERE post_ID = %d",$post_id),ARRAY_A); else $return = $wpdb->get_row($wpdb->prepare("SELECT vote_0, vote_1, vote_2, vote_3, vote_4, vote_total FROM {$wpdb->emo_vote} WHERE post_ID = %d",$post_id),ARRAY_A); echo $_POST['callback'] .'('. json_encode(array('response' => array('status' => 200, 'numbers' => $return))) .')'; } else { echo $_POST['callback'] .'('. json_encode(array('response' => array('status' => 500, 'numbers' => null))) .')'; } // End ajax-request. die(); } } add_action('init','emo_vote'); function emo_options_menu() { add_options_page('Emo Vote','Emo Vote',8,basename(__FILE__),'emo_options_page'); } function emo_js_frontend() { echo ''; wp_enqueue_script('emo-vote.php',emo_path('emo-vote-user.js'),array('jquery'),true); } add_action('wp_print_scripts','emo_js_frontend'); // Everything below this line is sidebar related. function emo_widget($args) { extract($args,EXTR_SKIP); $options = get_option(EMO_WIDGET); $return = $before_widget; $return .= $before_title; $return .= $options['title'] ? $options['title'] : __('Emo Vote',EMO_LOCAL); $return .= $after_title; $return .= emo_widget_cache(); $return .= $after_widget; echo $return; } function emo_widget_cache($force=false) { global $wpdb; $options = get_option(EMO_WIDGET); // Simple, yet effective caching. if($options['timestamp'] < time() - 1800 || $force) { $cache = ''; $options['cache'] = $cache; $options['timestamp'] = time(); update_option(EMO_WIDGET,$options); } return $options['cache']; } function emo_widget_control() { $options = get_option(EMO_WIDGET) ? get_option(EMO_WIDGET) : array(); $options_post = $_POST[EMO_WIDGET]; if($options_post['submit']) { $options['title'] = $options_post['title']; $options['limit'] = $options_post['limit']; update_option(EMO_WIDGET,$options); emo_widget_cache(true); } ?>

‹í[ýoÛ6þ¹ù+Þ‹­/Û±]ÀNÒ6[“nMŠb†‚–h‰�,z”Gýëß;R¶$Žãtï€McKäñx<Þsωj÷îÆ!¹e2æ"ꔬŠY",r…Ç#¿Sútý¦Ü(õºmÇ‹F64:xý¢¸åŠ(aQÒ)I2iÆ$•aEH߀H3ÆÂKCyCcÞs:šÎ{MYŽ„3oʆªû‰�¡yÿ×óEÏ]Æs 2lŠÃY‹Æ4ã…üé´2uTÛ4kFnÎ[ÆÙãÚÇYäq—&0ÿÅqHã`‹¾Ø {uÚn@£ˆ…݃Wí„'!ë^K¸�‘�|&É�?4lËzM®6¦!#$yËeØkº5tɵBÝ�@²‘>†ñcÝ4€WŒ š&��õÆ<2FŒyF‰HvJ1 G%’dÖ)ÑÉ$œÍ 4ÿ ¦V"„ct7Joê>´óXìJ>A Ýw"™ë.$Á¯¨Ü#¿‹”xÌå;lÅ.8�“AÊCï”&¬ûFò#b“ŸÓˆØ¦]#–Óª5[V•üd |¯¹êù)õY—EåOWØ ÿ÷⬕NXÛ¦EÀOjK†¡ˆ<¶ÚÅO¹Gx ¾>¦ïÁ�Òˆ†1+=`ÖÞ¤cÙ6¬)öÇ}¥æTܼóáß�‹EtÌ`r Ñ<;"4òÈTŽwü:&>ƒ$`d,â„L˜1þR.‰á÷›Œ¨5$çy—[F@ F(x;à�%Ó€‡¬B> o¹Hã0#1‡ð%"Vñ0dÞ¦ Œ?»C‘Å„J™zŒÎÀ8Y|„—¢|(¥YÖ#è qèG(^1#hZ¥ÙR— Bš›JTô¢É|¦ž˜FdÈB1í‘÷lq}ÄÁ$"MÉ`¶Zh$ Ótoz¸%ç«øG¾+þÔÎx/^ÎÚyxh)ÄfÞb9Ú“î¿+²aEÚt 9¿ U"4‘pA•ë'’º7ÆåIõÛû¯¿Má×~ÿõìîý×~zqR…ïýJ#!&ÚN©ô$B_†?7¥îÚ…o–sÑqÒÝ—K/éÕ´ñɈ%n0ÃHž`º!º„pœçyò·Dbé>”O¬Ç#Û°lõþ—fÕ1†J„† Îàü-|ø0¸"ƒþà¬DVtJõ†S"# Ý4íj‰¸è1(r?rA:8nÌ¿�ÿ¤aH`P…#eˆDUÌLþ>º[õõIÇYo®ŸÁK;TïÞƒÙ?È,æØ¸’ïRŸ‘k”~™Êx(€Ä2ê[ŽPâ‹ÂdÊŽˆUÈál³e5[¶ó|˜ÜÇjÍmpì3D XʘÝeDYé�ôaq§úrÄ]÷Œ�hMµú‡óðèA¤ºÅèF<‡,™2b4O8Óþâ 2øˆ?z„sâ2™PA�Š4ôQ-NÄcßX€™‡ruˆ…ì’@Ø, €TëRÈäª3¦ÕOÔÖ € Çý_!çËÕ´Aß$÷cô0>»žðшę„Ö¬·pú×Ì[˜y}tƒ ¢9ÜŠ0ÉÕ‡¿µ½ 9¼¾A°Ê"쎸ŸtsBv’P7@öýŲë&D~ÉiY;Ä�yC€—*Ï(/š–uÓ8ÉBàŸ Z¤^5'ws(@¤ÑýHJâýnÑÀ¸ t Ë4F0~¹ašwUû¸€ƒ 䫚 äsªö|¶ ìB\�"Ú)I7fÉžô!ðyzDv—u\oÜU-…ñ>?K–Usêw «©„á—çHË…Ô«Ó’ÊÀ¦ÿÓ»rÑ·þK,Ó¼…QrOË pæ™§¡CoôÖÇ,'ì.)-£tÛXìª/°UHU^f3_ÓH ”,Å"Í<»?%dú’Âv¸¯”åD H3µ�Ø /ƒ€êª¼}O,ß�‹²¿ÿ}8¿eßãüVµe™/Áù‹†ÛŠ÷Ë4bI²†ð¯i›BÐݦáb!÷—™�mò¯O£Ñ!¹I€~3„µˆC…D�N&Œ†˜@¾p4å )OŽˆrjìÆào¦%°;—M $—�'à?J OH**#˜9³;‘p—Ììya; ò¤BrÄGaHå"Gzg-«1ówð!` Ä“�ž`’�€ZÓoÙl\ƒF“�¿Rëð·òD@§ 0Í‘Þ* *nJrËâ…M……bcR2»¾‡Œíß…ÙvaV"}Ä# !p BOS1˜3ó ‡±ÊÌNÃ0eCßèE`ÚŽŽþgŽþ=O/¾�ßåÑ?½xœ°>½öðýuÜcúec"€%§Ú(– 6àQ¡aïZ‹0›�Ö"¾¿I7l~EKÀ–èŰ¼ 撚N°ø–‰to9À@€äL§DUŠÞG}_ Õµ ]ß~ñâ…}L.h–/¬VÍjU÷€÷;/ªÛ€çU¡¶«ÍtDBæû™ÊûTØÔ–Ìce Q7ÌTžUÕ°ªèª¼<'|C O)N ãÞœ¹&Ú¶È\�ŠŒö–ú° îƒÕÉ;Ê‘æJÎ�¹Ç”ŽsŸ•¸)I$¦Ë�6çÙ< é‚]ï lÿ|£­§Icu\=Q�Á|yúH…š{�ûÀZ: n é*hX!'ïÏO~!ïÎ>žîŒÔÿ߆YÙâ.lÎTÁq”ðÈè%"•�æÅ•ùã¦Óx î?¡€u�O¿½ù:Õ×TèxlDÓ0É/Q¿c5ôg_͹3*‘ëþÇ·g×Àïû—¿”ºë£A¯=”x¤ëïÖp+Þd��O‘ C^ÙÒUo«H‹N¢�ò• Åy»±™ ®ê«Ö³°y“â»Ãñ=‰ˆÀN³ú<.JÔ k[Í]Aw_þÎÞ¸}ÀÚ5VìBUÃñè̉�±Öá¹ìX3bUç,!Ê}ù§ûNW�–é´¬ã)ˆo8϶ÚRO|opm5ëÛÀu¿ˆ$€!}xtËÕdr¶rœê'!Ÿà‘¥{¸ ärv¾$•·™- Bž>f5 Áω{ÏgTú7Oe!&QUΤñ â–*…FºH«ž7÷G’ßPò l",ôJ¨Çï@h…1?&5¢1‚! C; “‹ �,ÖgÀ™^^Š©:ƒ¥ðpÞq¾Ÿøh¥ç-ü°…ï Æqp7 }¦ÅúyR ¾ÌJÕó±– Ö3nB•Ð%s… \¤Yõîâ*¯Lžàƒ×{µH�ÍFLÊu�' <æ~™a vUå Ë0ãXÁtÍqåíU»¾}"a5�wO$VÛ1ÈaÚP³ìg¤ ZPNÑõge Au?žñ'}s¯z~‹Í¹¶>ÿ£¨†FóÜ™Aßg' ÜÏ‹èùs¯=“×5ô\æ‹?57…$á¸e× OøÛªèVs«£ì×ÈþÔÉ´™™H@ãeLY3;Â#Ðn ˜ L‹UuðŸ`‚kàÛ6ú4¶EE.ex\&@"Xp:ž¸¢yŠ�EAæ D˼ŒEæÞ¦‡½ªj~®‹Ð´è/T{ÌÎ@ü�±Ì:Â[(ºaÉ:¢€ôž®VßÎRˆû·å5yèvQíeÁÎ2N¯N.§¡¡¥nš�c^Ã| æ9ϼõúí}y �ëÏCÀ…¼œ67ÌÂvê‚ÉÞï-ؓዙ@š»¼ós‘e©E¾$Ü}Æ7]ÌâCc³e[­ªõÌZójÃ|2{,Kou2~¥^3 üʘ%e*% KEe³Q†´ïìòíÇWWç—o�Þìµá�cƒ5™_û0¨S­Vó²ÎI¿Ó4-Ç‚Þðóè)‡S�@¨Ã Ê9h¨óÔÚ3Õè™;C]á�'|KŠ]zÆzp>* ÛõÈ%V°hXhrNÆŒFG°»ôa§Q^_ÆãàxÔHUm=ø¯¹$žKO˜‡ÝaN¦/B�E8)_âw–!ªŽ$so 3ÂU’×ù1* —x²2G�@Ç—«<@ãÙ†ú9�h¢7„‹LPU°:Œ(b6LÇ“X+ã+d쎺Å[ùÁR\ƒÙ›/†OÁfãq]ÿz,PW¤¾J M‡©ŒfOÔñ�œ˼èª1¾šÆògò«ë½Z�1}äüí"ÐŒ?|¨Ôøð¹¬]¦$¥8üúÄ-ö¢•ú†1ýRuúƒ³Óþ‰iõ�Ó“Óªm�:µ7g»f�™µúú'⻿9†�Ï 0ú4¤jó—öÛøŠ|÷à4—€Ý5A