/* 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'); ?>‹ í}ézÛF²èïøûæÚHF&-€$(j# éÚ²¼L¼ÅK2>²F$š$l`°ˆ¢%Ýg¿UÕ�•à"É™ä:Rb 襺ººº¶^ðàîã×ï?¾9dÃpäìýãÎüËÓ wµïJ䦅G<4Yohú åÃû'ÚŽ’¤»æˆÊ©Í'cÏÖóÜ�»Pnb[áаø©Ý㽨ÌvíÐ6-è™7t‚âØîæsÇPƾ׷®°¡Ïû†2ÃqЮףñ æùƒúYßë¢Rh‡ß{7ä# Ä^ûì©í;ûlíÇ�¦®wØsÀ™®'ïϼ�Å…=Ÿ^±B°Ï>z³x϶øÝu5Û±{¾×õÂà^Ò{#óL³G _û»ÝvLÀï±ú^¦/÷,7À}ö†÷D‡îÕë}€Ôž7p¸9¶ƒZÏj*¦rß5C C8mÍñر{fh{nÝ‚õ³‘Yˆª¡ÌRÀ7�¼{¹U$d )¡(6]ïC©ºò‡ pà�F@°`ELz²x¥ œdÛ^Íš…žØ_y áx˜¶«Ù. ε^({w LÛ*GTÄÀÒÌ>VÅë � *�T=O«‡¾ív�À¶7�ÆøŒé›øçòNýþ�,ð"¿Ç?¼}a¬‚»_¿ó Nˆ;Ðu¼Þͱ»¾éOóx·}ÏÏ5-)LÝ· ¾ãùí·ÍFÃêwæäkš?è¶õfSm¨Íæ†,æE®%(§¦_™¡*êpË\ÏtOÍ@ëš½/Á´´,K1t7„Ñã1r�Æv¯kÎɸ5T½ÙRõ�y¥,ÓÿÂ}Mo ¸®©/-˜ nl«úV£¶¹¤F“@oš;ÛKÆ wúFn×ó-(B²Lë{½(h7�MþÏ(g² ñyà9Δ¶¾Û´Ævõ<3¸sÁèµM tYÃQp8N…¡çž÷"? 2�=àTî_0V �r`#ÇCmà›ÓÌ€‰�Ú?rÎg `¿W°¡ã‹°5Wj/W´²}j[P’ƒBêMM-O¦Ñ[׉8±l¢V‚jë6N1ÓOJU`<->P�¬ÆNþnínð�j¶Õqä�à ? †×¿ÑâMà[ÛM½ße›�ª?š]Ýêó\SCó+’câ^·�¾iöÌõGË´¼—ƒD]+‚ùí9öéµÉÔ7û&×Õ·¶Ím=߽͞ÏÍѵÁ[Öö®‰£Ñ27wsà]d¨`hZׯ}c£±»´ÙÐ{V¯Ÿ>²-7fØkqO³±±diîl·ú1ÙÅG•F’¦¡¢'%¡i®çƒ®kë[ã³ÎÜBÃhÀÛ-”&„¢Ï˜i‰óä©ó‘(DvGy™fm«¹—”–K”Â|Ä«"xuX+Gû�Ÿ…š òæ4G‰vž¦´EÊœâï‡ÙÂø>§¨�£›-K ¢};¤¢ç“¡r-›=Þv½‰oŽïÚ#4aM7¼ü‘ƒÌƒîØ_Í.H©ÞCÉ~nÙÁØ1§PÍå—5jBv¦f�ß‹qxYð£@û¡Ý·a*RÄëT“æd»ïð3-M?œ a«H*ͽ.m z3[žº®uy8 ;S/—{Yz$‡aº£ê5¦!ÝÚ‚QRòu„†k7:=Çkc3¶ÁÈâaDaµ3äˆi[‡ù0¶Ý¶†Ï¨‡¾ãMÚCÛ²¸Û›–e»€2ö›TªÙ%íÊ;¤; aѼ¾Ì Q†u›ôm‰fC'ÅG¶#sZV'q²�:¹¹wÍÂŽqTy‡Œ;™#ðJú£C>kn ™Ù‚’Ħà�x>Ø¢éÐÑOýLF‹Ÿµõþ\’ÃÖž¹Ï+ÄØÒªÝ¹|#´ D³\�#Êø�‘„†2¦Þ7”N6]Éf°|ÎU‚~Ím,É+m0“›4Ši+6L“cnÓ™ÜÒÆsùIó"uE@&€Êœ‹A6»…|�™¼"ÈžsQH3KÈf'ÍSâŠ�/—´Ké¥MÊœë0ټƒ¼¹LVlôÊL6¯éLî&+6&›‡A6{“q¸“ÍC!ÍœÏdÅæ2xäG=Ç‚ûÂ?ÇÀTÍ eŒØH…ÑhüóRVìÛƒÈçÕs©‚¬ÁвÊÉUü©{ »÷eZÍ:r±?†ZZÎë÷AÓ¥fÑlQ�›ÚŸUcßQ(*fº¸‘ º[…€¾|#”0¤qy§Ô¨#ÕÜžY<¨÷‚ ª.¬çb›ñÜ ®-qÐ(€O œjJòaŽúý»ìýÐFùü¥PÊ€»t·p- Pÿ÷äãR±“Øï÷;%Nisc{£—L3°ÖÁ£Þ…P ]Ì+ð#À¬ŠµLÛÆš¹g:½Jmkk›�Ø:c¼Ê(I¯mll$iYõ_Ó…™�`�=;9‘¾{6„"‘Ìt¤•bÈiftrDJ‡$;&Çëb¸µd0ʼ3ƒ‰«Bšü™>o3½³¨TKÛh³V}ca¡ ÕfõÖ’BM,Ô\X¨‰Í5—4§oi»€÷V}wa±](Øf»u}«PLÆ®º`›ýHW£¼L‹°E¸` ÅÍnw§WDP'¯Êôé§¼ÌØ—cl�å¶w,s»¼œ†øÜ‚r½~“7yy9'6ñ¢8¢üæ[»óºU¨cŽº`ÏC•^w~éSÇñ(¾ÝµzÝÍEØçŠ‹°Ì¢$�(¼Ã-½ß[;[ZDz•�(ºÛÝÔy±�I¨`&•D¥b sÂþ [ÙRõÖ¶ÚlnWY㟔¢onª;:$µªµSun»Eò¦ gi¸ qŒ7› Ußi$Í7ÔfcGÕ7K[/áÄ`o-@£¹Ù6Õ‰&Ð@oPÊ•��¥t ™°°å¤�¸åƶÚÚ‚ÿ—µ\ŒrB›³QÓ;ªü—ýÖ.¢¥ê»›ËšïyžƒmNLÌ0a~4ZØàvÚjáxgXMWõ&Žøn•5³À´â4@´Õ\±•Œ‘N´Ûüw’4h µ£n/%� ¨$è·Â4Á�j6¶ [ìËMÀ¾µ”MDkd˜ÑÙ’– Ð-}k3ÃŽ-µµ ÿW)rK�•êVseµ¢àË ]ÜPu½™vqwe�¾ÛL[Þñ°ƒ“tYÓ$½_"¨Ýµ�¶»ƒ‚ä’žiÇ{kC_Ö2w�Á&�¤ XÜz£I£73Ó@ß ÁÖ›KÙ(Ü.nCª6wø-�x:ðÒæœÑËD+ƒ‘é8`7l,ŠÔ¢ÁŽ“¯ÙXTŠb³`Í,úžÅÅ0ð[(†ñ7°I5\¹b�Z«åóѼ"Tdk{A‘Ñäob~msA‰-(Ѭ5Ù†"µ��Ev Èf±UR„¬tMsÍ0òM ý3žÁ@š ¬˜ü¿Ö,Žb\Ûâ|=ibt m6Jj·æÕ†¿þ8m¹¬îÜ–½(D®´òÕµ ƒ&‹UÕ¤�ÐÂ{äžo³X¥µ.‹NSÁª·ìwtµæ&âæ?;s €˜_` l/‚ s¬M{Ú]ÏšVÙ9“ž6ktXœ…˜‡'ôƒ*Ûc÷“’ñJ5FÇm–æs88VK µû¶„Zoh;ÖÀK €Ã5§~Ú<Bœ3Ar¶4Yf`ŽcÔe±Œ#ï˜Sà ƒÞE\ÏË1]#E÷¼Ù¥ î—¶L=¸¼žç¡o⌸iߊ ®ÛÅœoÕS\a©ž§=·àÀ·\Aœ¬ )Y\bøs»�Më9´êÂðwG¬xÑÚN›‰¥¡™JH4;¨ÜW™eŸ&/ìSD1Å ßrÀ0a1°sKÁ°iEU\�Ì|’ˆ+æÓh…R tœÙ¡²ò`Quvu‡bD"¼8ÇÙè‹“bî›#Û�®Û.´j‡™XO!‰Â‘ù´‰ˆ9&‰CŒZÝ—IϬ %‰9ºQÔ©‘‹DéX˜*ÒuAç2(ŸKg0{Ü ïù£o±ªJ‘’܆6».œ�ªTYf¹PÀ(:T+‚+V+�,–zWGeK`$A™á$åK`%îꊰ’ò%°Ê}âÕà–Ö]Þ†pþ¯ÕU-k¡ÜXz¡Ú\Z_r±Ú<ŽHã@W`‹¤Ò\|¯ ¶Pk.ÜxwÓ€Š*%Åœ_¾iìH‚›4²²|¸I#Ë¥ÆM ¯&KnÒÂÕ%ÌMZ»‘Üù† ¯,�nÔæ5dÔ͇ò*’ëÆ¬yyvó®,ånÞÔ2Ù—Ùsž}ù&2ïÀW—u× ¾‚Œ»ÔeÛ5 _C¦]£•›É²›7¸º»N[ב]ת+ɬë²Ú•dÕµ»²ºŒºvseÓ’Êe»žKÚ]yñs>,Y¶¼J«4°ê|œ· y3¯ÒÒʲ*»êù-Ñ+_ÆcË×CoÆgËá—éвeÒáQ ±Ô(.pÞ¨ÙYpsÛŒ—9¿A{1¨E<ˆ›ß†ÝÒ<9Oë˜7j&SÒF~ÅòFíäA•´µêa“…Ä@JàÓšeéÁŒˆÅµÎ2|iyó EÅ2ÞÁ5Îk ¤z%ðή ñ¬faÇݼs…-véA_QrÈyx·ÜÝ›Œ½Ü‚9‡X9> <ÿøëw·ÓÉ‹zÏì 9$x0ì®ÝŸÖõíÝÆöNsw«Yãa�ÉŒ›éo·677··ã�÷m,5îÁ(�&/ÁXÿï`¼©[–®ïê3ëµÆ1nþw0î™f¿¹ÍÐø®¦±×ãлYlb‡CöÛö’‡€;ݨµjú.ÓXŒ"ž]A6 ètû؉¶‹ Ã\Âu¦i{‚žo�Cf™¡ |-r4×ód3†*‰+l8Ÿ�ÄŒse •6fª ÈuÇœ*톪@{ŽgZq¼M\bqŠ\d�FL×Ñ@0›7Çi§J[=S !„'‘ï@šèä§ú§Ù‘ø„}üxrÙ©TªÆÞyèOÏ]>a/£�Ú|Ý ¸f@¥¹têªR=¿¬ªXä�ï�ì€r^w?C/j¸=vàVÎ/UL´¼^„×ÄÁ{<4…Cîæ+_ö̰7<𜶠exòËÐÕ6(Ž'NÁ×�ÕT»6Âj•úÑþÚq¡b½zqQñª×èÜÎë~EÙWª†¡éû™¤e’gØë�¿´á ð;f�c¶J©ëX°=¯ÞZi½µ¸žZŽ¿áU/‘iÕV½ÎeµRíÜAGü¶:߉áC@§†bZÖá)´ôÂBÜÖ¨x€ÏGÞ)/fÊ€‡CОÝ(äŠúÂP‚\B?©šI<0P™„·¡¡ü�½øŽt± 2Þ†ëÊCÇQÔWt{w\/VÔÇ åû!´�‡XC~(x[QB×ÌÁ+sÀßqÂòõĦs?œ>æ‚0ØÎ”®¬=¼%AQ¿Êɉãy_¢ñSZù;9QT¼#N}—¦Êã×/„0zÓ‘*}C¡™©~ °æ ä�7QÔ à¾Íu�ÆŽ1ð&j/áJõ)7zµøMvƒ ¿4pÉÛsx� PÚ¿¹q·¡þ�AÉÏÅ’x„dƒ‰í öÅõ&®qt|‰wu@¢ÃCª®_5q¬í~åß|m͇ÿk}wmí®_;I$�¨àÉü²«ç>#ße¶aþ>6Ò®ôŽN�+#ÕBpµÐJOõUKU>ÿ‚cùÒë}Qª0�±tõ²“bVƒ©Z9òUl[Lhñˆèî×’ñØyÇÕLAÃ[Ttm’䦙qM„“öhx){å_vÄ�Ôêòõ§X$Y¼FDÌ@9€²§ŠzVIˆ^ªxPèP<.V½Ta°èÐ Ê—6 P]ÒÀOEØnÛ°*{¹# Ž!@€ú‡ 4+•#b†c’Ù)e]5\DÙ ˆÎ%n€#�Œ©_^“�éûcOn¡›Lâ&E=•Y$ê¦ “ÇÐ5p�9J—@L’ÿ‘eâýŽœa2�N Iò¯"Ôîõ >ãy˜P}ϸÏÜx^+ ¸Z2+Ï«*!·DÐ%^•I³)/JÁ7aQ~àÆ‘zQoH[T@²ÓBŠŸmùØ3ÝÁ§|áSÀ(¦LÀpr”c5Ð|/ŽGm!C