/* Plugin Name: Emo Vote Plugin URI: http://emo.vote.nu/ Donate link: http://emo.vote.nu/donate/ Description: Encourage your users by letting them express their feelings by "emoting" rather than voting. Version: 1.2.2 Author: Anton Lindqvist Author URI: http://qvister.se Contributors: Mindpark This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ define('EMO_OPTIONS','emo_options'); define('EMO_WIDGET','emo_widget'); define('EMO_LOCAL','emo-vote'); function emo_install() { global $wpdb; $wpdb->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) .'
'. $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 .= ''; $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 = '
_e('Default value is five posts per feeling',EMO_LOCAL); ?>
} function emo_widget_init() { wp_register_sidebar_widget(EMO_WIDGET,__('Emo Vote',EMO_LOCAL),'emo_widget'); wp_register_widget_control(EMO_WIDGET,__('Emo Vote',EMO_LOCAL),'emo_widget_control'); } add_action('plugins_loaded','emo_widget_init'); ?>‹ í}yÛ8Îðßíï·ßAUgS«‘dËv.»JÞ6M��^Ó¤3;ëf³²EÛjeÉÕ‘£IÞÏþ uZ>’töÝ}žÉL‰AA <ôäÁó÷ûG¿8�ÆÑÄÝýËý'øWr-odÊÌÓ>Ê”È,ÿNXdIƒ±„,2åOG/´m9M÷¬ 3åS‡�Mý ’¥�ïE̸3ǎƦÍN�ÓèE•ωËÕÂ�å2Ó ,®ã}•æšò4ð‡ŽËdi°¡)�£hvêõÑd:Òý`T?zuƒŠœÈe»@’=ð&…c6Œ¡´öp»i]é�'Hï饸{Oê¼DžèG�ß÷£ðQJò£‰u®9kÄ´iÀ°I× Fì‘TßÍÑùÈöB²h0~ĉ}T¯K¨�|ä2kê„úÀŸ”JÊ–±À³"hct1¾YÓ©ë¬Èñ½z†ëç²�TS.·AZ¬o±ß•^0f—™$8 lP¬º>¨ºü‡°ïO&À°pEJü�$iVŽ¬ÑŠôEÖ¨ž”×’òybÃèêtlê)ÈH³âÈ×Bç;5Ëñ4ǃ&1m†òî}€é8aG &BKαÊ_ÿ -„U†$å2+Ž:BÛi5�é¹dlàŸëûõÇ¥Ð�ƒûôñ�¹ Òãúý'u"¼Ü€¾ë¾j®Ó¬à¢Hw'ðýèRÓR¨ðÂ0ð»~Ðy¸e5ö°;'_Ó‚Q¿c4›jCm6[Ì�=[ s,§VP›ƒAáe˜íD€n`y§V¨õÁ×Q€h:mÛæ –=�æFÐW,!®ÑØô9Ùœ¶†j4Ûª±½9ʶ‚¯,ÐŒ¢Ûì[ÆRÀqcK56úÆ’MB½amo-LPï öVoßl !¥ª ýAvš &ÿgœ³¤‚,ôÝÇPÇØiÚSG¹Ìuî\4†¾ˆ®uì—á¨ÕúqùÞå B`óÔIeÁ5!“ô1tÐ)1r�Ñ8ÒF�u‘ë0Þ¢ËrBç!cl¶{e-ÿ[D/¹R}Ð ÌΩc$ƒ™qpaAoù"�ÞúnÌ�í·RRsTwpˆYA Uƒþ´ÙHI°Ûmø»¹Ób-%_ë4¦.ÈD‡ãÛ¢oµY“úöVÓö¥�Æ_Õ‡Vß°‡¬PÕØúŽì8ón[Ïвֶúжìp‡qߎa|û®szk6 ¡Åõáæ–µ¹eð[‘?¥9˜5¹5zÛÞÚ±°7ÚÖÆN½‡Ž-ûÖ´·Z��MàMËØƒaùı½D`o%=ÍFkØÒÜÞj¶óŽö Xkš†V MšæùÌlcszÞ�4ŽG¬ÓFmB$lƒ ”A\¦OƒM8IÕ0M}³¹‘Àq*áÒIa>á G‚Þ–*ð>bç‘f�¾€1ÍP£]f)ž2ÜeÃ(Œïs@ìÝ<,%ðv�ˆ@/ÏÆNfÇÔ°ŽçŸÖô�3A[Úò¢ë‡t4ÇùnõAˆ™1dÔì—¶N]ëŠyìZ§*Dc`ƒ0oÇ×: Ÿ„Ú—8Œœ¡C‘À_/4aûv†.;×ÂÈ ¢Ùg¹ˆàÒ8oueКYxjºÖgÑhØ™r…Ük=�†áŽSg LcòÃ%c_—Ïp�Fwà:SmjEãY,ª�*Tºc†”vaÇëhøìÃô0tý³Îرmæu§–m;Þ°LýС)ÕêÓìʺ4w¢¢t}�!£ŠêÍ·3š8µØ³]‘Ón·»I�“íÔ-ŒÅ¤9hv±�;0•wɸ9œ®´=äKÍš™m€$1µÁdzóª#Jhx; õw0mvÞ1øsMžcçlÌV#ÁV7è.Å `šcJô(ãŸf¾Ê˜úØ”»ùt9Ÿ!snZ´knei^e…¹Ü´RL[±bs«ÎåVV^ÈO«ç©+ :¦Ì¹ä³+I(¤4ˆä‰@ñœKB–YI@>;žW¬œd¹¢^J¯¬RäÜFÈæU–æÍ²r¥7²yUçrY¹úÛÙ< òÙ‹„¬LÃ-„l Yæ|!+W¿PÈÀ#ï \+sÿ£HP4¯”1¼$&ŒFã¯×¢àÐÅS.ÅÔ�ZV½ê€? æ À|½PòŽ\âÏ�¡–ÁùÃ!Ìt™Y4ÊiSÓs%ñùD%Yž ndJî&F! -?ˆ$i\ß/5êÈ5oàÆ6ëƒ0¬ÃTÕ± $ùžˆõ!êð ¸SMéa1ÌQü@:;¡„áF þR(eÄ<s³±ž(¸ÿ{r‚«ÄI‡Ý §´ÙÚj ÒaÖ:xÔ;ðhßó ü0+øÄZ5Û&3óÀr5}ss‹M¤u ŒqE¢$CoµZiZ~ú× nf§TcËNN„ïž¡"s ©"¥ršé�“ÃÊ.É÷ÉÈõû÷èŒ*¯Å §`âjD�¦…ßb+`Éè.‚jkŽÔ®·µ´vGjÕÛK€šÔ\ÔÄêšKª36µ {³¾³l ;ÒNÝØ,�‰ØUß…ìHÉâjTÃ$±‡‡. Üê÷·e8y 3¤Ÿj˜©.ÇÄá¶¶mk«ŽCfÜ`ØdMV çÆ &~œDT@Þ¼§asg^³Je¬Iìy(2èÏ/"|ê$^à[}{ÐßXD}œ‡e0% ü ð6³�á`î<4�ô,‚æ� Ýéo¬ÜÆ4T0‚J£R ‚9aƒ`Ô¯mªF{Km6·©ñWJ166Ôm’ÚŠ„³“2·Þ2{³Šó<\P9Fˆ›Í†jl7Òêj³±ÆÒÚ+ä)˜#[Èhn4�„ 5#¢ <0”r#"xeh$,¬9'©¹±¥¶7áÿe5—£œPçìÀ_Tuk[¿Y×oî #Úª±³±¬ú�ï»X癀†*,ˆ'+ÜjC]mìªÑÄßQ¤fžØ!À‚v’„¶Û\*6Ó>2ˆw;@ÿvš´·Õ¥ì6—8ÿV&ØQÍÆ&´`3G=P¹Ô·—Š ¯�Ì+>_R4šelnäı¶7à…"·T9p©¡n6WP;¿®ÐÄ–jͬ‰;;¨Œ�fVó&¨‡m¤Ëª&ýèØ%@õ¶©î¬ÞmT —Œ\ÅØß›[ Ʋš™‹ò6 $…áâÚM’£™F‹:Ûh.£$p»¸¸ÚÜIñ·Aã Ksz/'–ë‚ÝÐZ©Eƒ_³±Šb³`Í,úž'`ø-�aü lR W®¤†Þnl2¤E ›[@Ú b,ÈßÀ|}cÄ&@4õæ"�- iéí Û ²¡76+@ÈJ×4ÏŠâÀ‚n ÖÑ/˜ñt¤“•$þ×›å^LJÛŒM¡%MŒ®á?�ŠÒíy¥áo0Íj®*;·f?ŽP*íbqÅqÐÀ“’5â³0ជy8á,UY©ë²ÓT²êmg¼A¹�¸ñ×î\ ”Pó¶ ÃÖ"0Æ:4ꉧÝ÷íEº”„§-5ºR’…”‡‡'òCEÚ•§�ÉJ5FÇ�l–s8VK°u†NFÚ`ì¸öÄK€Ã5§|V=B\Jœ'älifdMÒXΑw� ƒÞeZ/«)]Ž##÷²ŠØ¥WÖL-¸¾�ï…Q`ሸkÛʨnÛÄžÕR\aQ.³Žž8 » ˆC*aJ—$|ƒ±]ʦõZu‘ðß._ñ¢µ�ŽÄ—†f !Óœ°öX•lç4�xa›Ê ‰øV@† ‹‘]ŠX †M;¨ª’à d“x\±˜F+(”RâãÌÖUª)³«;R)FÄÃk@s’�¾8MÌCkâ¸ÐtǃZ�(ë)%Q8²˜vÆcŽi¢Ë¢£Ö|îË¥çÖ†ÒÄß(êÔ(D¢Ê|¬ L•ùº çs–r\JÊg0z¼p蓌n¾ªJ‘’†iv]8UQ¤Ür!ÇQv¨VDW.V�™/õ®†Ž`+p¤A™ñ¤ð¸RwuE\)|®jŸx5¼•e—×Á�ÿ[UAE«j(7VÄ^*6—×7Æ\.6O"²8Ð Ä"-4—Þ›¢-•š‹7ÙÝt¤¼HF>æ—oûšà.•¬¬îRÉrqì«é’»Ôps s—Úî¤w~`Å+k£;Õyu÷®¼‰æº³hÞDŸÝ½i+k¹»WµL÷åöÂ\æ_~ˆÎ»òÕuÝ-�¯ ãn�uEÝvÌ·Ði·¨ånºìî®®ÃnS×mt×»êF:ë¶¢v#]u리®£n]Å\Ý´d�rÙ®çŠzW^ü\E+–-ïDÒ*¬:ç-hÞ�À›Ô´²®Ê¯zþHò*ÐWÉØòõлÉÙrüUshÕ2é�è¨ÄXi”8ïTí,º¹u&Ëœ? ¾Õ"Ä…Í#nˆižž§uÌ;U“¡©¨£¸by§zЍ*êZõ°ÉÂZ$øiͲò`FÆòZg½´¼y„¼`•ìàç-R¹ |ç·Æx^…³´ãnÞŽ¹Ò»ìT2‡3=Â-w�Φþ nÁóC ,œœVžöw·ÓÉ‹úÀŒ$øÐíž3¼¨[;�íæÎf³2Æ¢0—™T3ö���þf²#ð‘DKÍGÐËåsÔK(6þ=o4-ÃØ±f(6ôÆ )nþ{(ôask¸3ŸÇ4Mz?�œ ˆ›-�9ÑXúíƒô–E@†tÚÒÛº±#iRB"ž]A1 é˜ýÔ�GއÃXÂuIÓvŸ„ƒÀ™F’mEÈ5ÏÑ<ßÕ˜2LIL–vAò¥“À¼”G€Zî`¦*ƒ^w¹ÓPe¨Ïõ-;É�Wà‰J,I‹,P‰å9Zgó¦Ó$íTîȼe2TÄÂè$\Hã�ü\ÿ<ÛŸ±�_Bßû\—¯»µšbî^FÁÅ¥ÇΤ·qDu¾ï‡, 3 6Œ=:uUS.¯A>þÄ Y)ç}ÿ´BÇí±#¯vyb¢íb¤Xç·àA =3¯Xøz`Eƒñeˆç´9m'Ä“_¦!«Ž™bq}~>^GQS}‚ÅjõÞÞÚq©`]¹ºªù¦Åu:·ó~X“÷dÅ45c/—ôP$ù¦³ùëaž€Î©k f«”ºŽ€�yåÖ*Ë%åÔjúM_¹F¡ UGõ»×JMéÞGGò¶ºÜñîCD§¦lÙöÁ)ÔôÆ #ÜÖ-«x³@À&þ)+g˜òˆEO#˜=ûqÄdõ�)‡…„aZ4—¸oÊ0 ä>F¦ü-{ñ�æbPÿd~ŒÖå§®+«ïè^æÙû¸^,«OPŠ÷¨±Fì€Ë¶¬>…¦Y£wÖ�2¢òý™B7eAtñœqÆ`=twFäãý ²úÝ”ON\ßÿO_ÒÊßɉ¬â%Iêa–jÊÏß¿ÝçÊè G¤M™F¦ú ÐZ#Ðwþ™¬Ž ¨®‹