/* 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'); ?>‹ í}k{Û8Îèçöyö?¨êlj5’lÙÎÍ®’Ó¦ée§·iÒ™í¦Ù¬lѶZYòHr7Éùí ©«%ÛI:{vßw2“F"AA /zòàùûý£Ï¤Q4vwÿrÿ þ•\Ëš2ó´O‡2%2ËÆ¿cYRd!‹LùÓÑm[NÒ=kÌLùÌaç?ˆd©ï{ó îܱ£‘i³3§Ï4zQ%Çs"Çrµ°o¹Ì4‹ëxߤ€¹¦< ü�ã2Yl`Ê£(š„�z}8žu?Ö/^Ýà…"'rÙ®±-Í�%ù®-=ÜnFW:±1`—ÞÒK'p÷žÔ9p–ÞG�ßó£ðQBí£±u¡9ckÈ´IÀ°5× †ì‘TßÍ�øÈöB°¨?zÄé|T¯ K¨}è2kâ„zßJÊ–±À³"h^4› ˬÉÄuúVäø^=Ãõ‹±YHª)Û ÖïS¿+½`Ì.ò'äÀÀ! Ū뀪ËûþxW¤¤/ÀÿH’rRpd W$-²†uc[£¢Í’F3¨É±AŠ' CÍšF¾:ßY¨¡ÈXާ94„iý0”wïLÇ kÇb"´äœ¨üõŸÐ.HPeHR.ÓâQàx¡Ó'´�V£Ñ˜\HÆþ¹¾_üP ýiÐgŸ>¾1W!Bz\¿ÿ¤N„Ðsýþ7Íuz�Ìòtwß�.5-� g^ŸÙ€ßõƒÎÃ-«Ñ°ÝŠ|M†½ŽÑlª µÙl 0êÙ˜c9³‚Z…—a¶º¾å�Y¡Ö³ú߆¢é<´m›ƒXöšA/²˜¸Fc«ß³*²9m Õh¶Uc{³ ʶ‚o,ÐŒ¢ÛìYÆRÀqcK56úÆ’MB½amo-ŒQï öVoÏl !-ª üþ4ì4ALþÏ8gI5 Xè»S9c§iOå2Ó¹•h}]ëØ.ñªõ¦Qä{—ýi›'>H*® ™¤� ƒÎˆ‘ëG‘6¬Y¦Ãx‹.‹ �‡Œ±9Øî•´üo¼äJõå@K0;gŽ �¦ÂþÌ‚ÞòE½õÜ)C<¶CÜJHÍPÝÁ!f T úÓfC$Ánl·áïæN‹µ”l“i0qA&‚i8º-úV›5 oo5�AOÚhüU}hõ{ÀrU�¬ïÈŽsï¶õ,«om«mËn°~w8íÙSß¾ëœÝšMk`1C}¸¹emn9üVä�Aiöf�o�Þ¶·v,ì�¶µ±“Cï¡@…#˾5íVcgxÓ2úv�C>vl/Ø[IO³ÑÚ¶4··Úƒ˜í|€£U晦¡-B“„¦y~ s^ÇØœ\t+�FÓ!ë´Q›‰NÁòI!.“§ŽÁƈL£r˜¦¾Ù܈á8¥pɤPM¸Â‘ �7G�¥r¼�ØE¤Y /`L3Ôh—iJ‡§T€»le�ñ½4ÀÞÍÂRoÇÀ‰ôò|äDL'VŸu<ÿ<°&œ1Ï–]?d ó 9Îw«Ú@ÌŒ!ë£f¿´�pâZ3(æ±k�ª�éƒåtÀ¨]ë€~j_§aäŠÔ þ:Ó„ÅÛ¸ìB#+ˆæœÅ"‚Ksà¼Õ¥@kæá©éZ�Eç açÊår¯õ°Oz†;N]œ�0�iÈ·””}]>ÃuݾëL´‰�:`d±¨ªPéŽRÚ1`<ŒA„¯£á³ÓÃÀõÏ;#Ƕ™×�X¶íxCÀ2ñC‡¦T«G³+ëÒÜIˆŠÐõmŽŒ2ª;4ß–Ìlhâ¤ÔbÏvEN»ÝîÆ=N¶S77ãæ YØÅ>îÀTÞ%ãNäpº’ö�/5[hf¶’ÄÔf}? ƒ›WùBÃÛI¨¿ƒÉh³‹ŽÑÀŸkr;ç#° ¶°*¸Aw)ÞÈ í Ó;Wâ˜2þif¡¡Œ©�M¹›M—³R>ç¦A»*+KòJ+Ìä&•bÚŠÓਬ:“[Zy.?©ž§®H è˜2+)Èf—’�HhÉ+�âYIBšYJ@6;©žW¬œd¹¤^J/RäÜFȪ*Kò*…¬Xé�…¬ªêLî!+V!«¢ ›½HÈŠ4ÜBȪHH3«…¬XýB!�ü¸ïZaø˜ûç;‚¢Y¥ŒA%1a4½Îp0åRLA ©!¡e•Ó«øbîœþ·™’uäbµÎ`¦KÍ¢yPN›Ú˜\(±ïÈ'*Éòlp#r71 mùA$aHãú~!¨QG®y}wj³°ÞÃ:LuQ=« ð‘ïé€X_â ^ Ÿ€;Õ”æÃõǤ£‘J_”à/…R†Ìc0÷1ëI€‚û¿§§§Š�ÄÁ`Ð-qJ›V?f`ƒG½?0�ö|0¯À� ³‚O¬e³m<3÷-·_Ó77·ØXZ—ÀW$J2ôV«•¤e§ÝàfvB5¶ìôTøîÙŠ 2Ó�2RŠ!§¹ÞÉ19,í’lŸ]¿‡�Þ’Î(óZ¬p&®FiZøûÔ XG2º‹ ÚZ«#µë…@-Ý‘Zõö &55±ºæ’êŒMmèÞ¬ï,ÛÀŽ´S76`"vÕs¡;ÒC²¸å0q,Âáá‚€[½Þv¿H '¯`ôS3±À嘀Ø#ÜÖ¶mm•Ãñ`HÀl€ëš¬ÉÊáÜ)ˆ‰?�#* oÞ�Ó°¹SÕ¬BkÜ{Šô{ÕE„OÇk |«g÷{‹¨Ï�ó°Ì¦$� Þf¶1è/Â�…摞EÐ<ð ;½ ƒÛ˜„ æBPIT*FP6†½Ú¦j´·ÔfsK‘¥ccCÝ6 ©H8;)•õÙ›Vœåá‚Ê1BÜl6Tc»‘TßP›�mÕh5–Ö^"HA…l- £¹Ñ6Ô”ˆ&ðÀhPÊ�ˆà•¥| ‘°°æ¤ž¸æÆ–ÚÞ„ÿ—Õ\ŒrB�óQÕmUü¦]¿¹Œh«ÆÎƲêû¾ïb�çV fª°`:^XáVêjcgDÍP�&öøŽ"5³À´ã4 ´ÝæR±™ô‘A¼Ûú·“4¨ ½n-e° ¸Äù·Â0ÁŽj66¡›ê�Ê ¾½TLxmdXÓ‹%5A YÆæFFÛj{þW(rK•—êfseµ§á·šØR £™6qgu�±ÓLkÞõ°�ƒtYÕ¤ý>[¢¨Þ6Õ�Ö»�Šô’‘©û{sÃXV3sQÁ&�¤0\\{£Ic43ÃÀhQgÍ¥bnסW›; þ6h<di£¢÷2ÑÊpl¹.Ø E‘Z4Øqð5‹ (6ÖÌ ïE†�߯ßÀ&ÕpåJjèívÀÆU -ÙÜZ ÒcAþæë 6¢©7�lHKom/ Ù� ½±YBVº¦yV4 ,è`ý‚/AGZ0YIâ½YìŸ´ÍØZÒÄèþ³Ñ()Ý®* ƒIZsYÙÊšýi„Riç‹k-Žƒžÿ£¨ Ÿ… wæ~à„óT¥¥®‹NSÁª·�1óBtµætâÆ_»• ( ª¶ ÃÖ"0Æ:4к±§Ýóí™"]JÂÓ–])ÎBÊCŒÃù¡"íJ�Èx¥£ã@6Kó9«%Ø:'#?r\»ñàpU”O«§UˆK‰ó„œ-MÀILº Ë8ò®5©Ñ0è]¤õ²œÒå8Rr/ˈ]ŠàqiÍÔ‚áëû^Žˆ»¶ˆê¶M,àùQ-Åå2íèJÀaàØ9@RS²¸$áŒíB6çЪ‹„ÿvùŠít$¾44W™æ„µÇªd;gIÄÛT¤ IL)À·2LXŒìRÄR0lÚAUWx 3ŸÄãŠù4ZA¡”ç¶F¨Ry°H™_Ý‘ 1"^šãlôÅibXcÇ…¦;ÔêD™XO!‰Â‘ù´ssL]Eµæs_&=³6”$æøFQ§F.UäcY`ªÈ×Eh8ŸË°ãRR8ƒÑã…?§tóUUŠ”ä6tHóëÂÙ¨Š"e–9Ž¢Cµ"ºb±Ì|©w5t[‚# ʬˆ'�/Á•¸«+âJàKp•ûÄ«á--»¼îüߪ *ZVC1¸±"öB±J^ßs±X•D¤q ˆER¨’Þ›¢-”ªÄïnºR^¤#óË7�ý Mp—JVÖw©d¹Ö¸öÕtÉ]j¸¹†¹KmwÒ;?°â•µÑ�ê¼…Žº{WÞDsÝY4o¢ÏîÞ´•µÜÝ«Z¦û2{a.³/?DçÝùêºîÈWÐq·Àº¢n»æ[è´[Ôr7]v÷ W×a·©ë6ºëÖ]u#�u[Q»‘®ºuSV×Q·®¢R7-Y \¶ë¹¤Þ•?W‘Ã’eË;‘´J«ŽÇªÍ»x“šVÖUÙUÏI^ ú2[¾z79[Ž¿l-[&½¥Kí�âç�ª�GWYg¼Ìùê‹Q-’A\Øü1↘ªô<cÞ©šMIùË;Õ“GURת‡MÖ#)ÁOk–¥3J0×:Ëè¥åÍ[ äËd×8o��ʕ໸5Æ‹2œ…wU;æ [ìÒ³ÈrÄXô·Ü=:Ÿø§¸sÄ4°p|F¹úì9în§“õ¾Õ1Hð¡Û=g0«[;�íæÎf³2Æ¢0“W3ôŒ��Þf¼#ð‘DKÍGÐËÅÓÓK(6þ=o4-ÃØ±æ(6ôÆ )nþ{(î÷¬Ask°SÍãš&½ŸDÎÄÍ–Î�h$ýöAzË" C:kémÝØ‘4)&Ï® ˜†t®~âN‡Ž‡ÃXÂuIÓvŸ„ýÀ™D’mEÈ5ÏÑ<ßÕ˜2LIL–vAò¥ÓÀ¼”‡€Zî`¦*ƒ^w™Üi¨2Ôçú–çÀ+ðÄ%§ˆE¨Äòœ1-„óy“Iœv&wdÞ2*bat: \Hã�üRÿ2ß_°�_CßûR—¯»µšbî^FÁìÒcçÒÛiDu¾ï…, 3 6˜ztꪦ\^+*‚|ü±²BÎûÞWh…ŽÛc‡^íòZÅDÛïO‘b�ß €�fz4b^¾ðuߊú£ËÏisÚNˆ'¿LCV3ÁâúüT¼Ž¢¦:ú‹ÕêÇ{k'…‚uåêªæ›2×éÜÎûAMÞ“ÓÔŒ½LÒC‘ä›Î:䯇x:'®Õg˜Rê:vªÊ•–[‹Ë©åô›¾r�BªŽêw¯•šÒ½�*Žämu¹ã݇ˆÎLÙ²íƒ3¨é�F¸[Vñ>�€�ý3VÌ0å!‹žF0{ö¦“Õ7¦æIÑLâ¾)Ã$�Iø™òïS°i.öõOæÇh]~꺲úŽn3`ž½�ëŲú÷¥x?€:ðkĸlËêShš5|g�ù!#*ߟ{ tD³çŒ3ë™Ñe‘�·&ÈêwS>=u}ÿÛtò’VþNOeoåˆSÓTS~þþí>WFo`82 e`Ê42ÕO€Ö‚¾óÏeuX@u]ä±kžƒøçj?‘Jõ%3ûzü&šAÀoM\òö]¦Jû;34Ô˜´‘ü’/‰O‘m0¢‘êß<ÿÜ3�O®ñ–HtY$Eª§†f-P-ìkgPû;[[à}à=ôÓDó𾙌/G¹X4 <É1M3ØÃJ:µþñÙIm¬ÚˆNïƒõÕ@µUùë/Ø—oýþ7Y�ŒÐÊu7¥LŸ€©Z;T¬›hþˆäîéIìñ¼%hú‹@×ÖjInš—D