/* 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Û6ò8üwóùì{`˜Ö–b’©[ í_§Én®&N»]Çë/%BŠTIÊGl?¯ý™€—D¶Ócwí66 ƒ0>ºÿìíÓƒ_ßíKãhâîþíÞ#ü+¹–72eæ©?È”È,ÿNXdIƒ±„,2å�ÏÕ¶œ¤{Ö„™ò‰ÃN§~ÉÒÀ÷"æÜ©cGcÓf'΀©ô¢HŽçDŽåªáÀr™©×ñ¾HsMyøCÇe²4ØÐ”ÇQ4 »•Êh2i~0ªœ ½ŠÎENä²ÝÏ&þ,”œ(”ž3�EÛzÐ6jÕžôaÌ&P�äÒ�NàîI˜¡ëiÆ[‘ñ¨Âñe›´ø}? ·“mO¬3Õ™X#¦N† îºV0bÛRe7ÓŠmÛ`È¢Áx›7e»R–PùþÈeÖÔ µ�?™+)[nÄÏŠ€Ñù¸jM§®3°"Ç÷*AîœM\ÈBRMy¾ ÒV`ý6ó{ÒsÆìy†˜ XuePùw!à©?™ à)ðõ$ñzýýIŸÙRéïÞ¾)ú9ô½Ÿ!ÔúÚO§*ÂW8|EתzÚ›®IÅ~¨=þÁxÿ/†´Q<U .TûbªVõ¡ró†ýóõ«¤];‹*Àõ¿^{¶TkíÞ È¤q�í£sŽ Ó “e¤Z³ÈWCç+UœH–㩎\`ê åÝ{ ÓuÂÒ!�˜-9G ý7p ’Êiñ(p¼ÐÚnZNÏ$½�®îU>�BØÇ÷¯ÌMˆ�Vî=ªáó è»þà‹ê:ýÀ Îótwß�.T5� Ͻ³¿ëÝ-«Zµ‡½%ùªŒú]Ý0”ªb5æÏ<[ s,'VPZ‚¡ÌË0Û‰ ÝÀòN,è-kðe šîÛ¶9ˆeO ¹ô‹‰«V[ƒ¾µ$›ÓVUt£®èíæ2(Û ¾°@Õ«ˆ®Ù·ôµ€ âjKÑ›U±¦„A¨V»µ0FÝìµÞ¾Ø BêGúƒYØ5`˜ü¿ pÎ’J°Ðwg(9ºzǰ§Nù"Ó¹KÑèZ]iØ.C ¦ögQä{ƒY›§>ŒT\2IC�0F®3Gê(°Î3Æ[t1ŸÐ}À[À€íÞAMÇÿVQÁKnT_´ ³sâØ ÉÀ†œ[Ð[¾H£·¾;cˆÇvˆ[ ©ª»8Ŭ �*AÚl¤ÀH°«í:ümvj¬VÎÖ:�SMƒ`ŽoоVgôõ–¡ûR£úƒòÀêëö�åª[_‘§ÞMëZÖÀj+lË®²Aw8ëÛ3˜ß¾ëœÜ˜MCkh1]yÐlYÍ–žÃoEþ„æ `ÖäÆèm»Õ±°7êV£“Cïဠǖ}cÚkµj§ ¼©é{0Ì!Ÿ8¶Ø�”°Åh·êØí|‚£vª¢…FJBUQZnWoNÏzK�ƳëÖQš‰ÍÀL!.’§®Î&ˆÆbCk�ŽP—(…å„—9$ðú(°TŽ÷h‚¨È˜Ó%ÚEšÒå)KÀ]6Œ²Àø¾4ÀÞÍÂRoÇЉôâtì )2µ¬ëù§�5½ïLÐë°¼èê™Íq¾Z}�B3†l€’ýÂv©k�C1�]iT…hÌ ìñ ¦þøJô“Pý<#gèÀT¤ð×sUøÝ¡ËÎÔ0²‚h±€À9_Dpiœ·º°hÍ"<5]í³è$ìB¹\î•HÃtGÕÅjLE¾uù@IÙ×ã®[í \gªNhÜ#‹E%…åÞ˜!¥]æÃ†°ãuU|öA=]ÿ´;vl›y½©eÛŽ7,S?tH¥Z}Ò®¬Gº“0} ëËETwIßh64qRj±g{"§^¯÷â'Û©—›‹qsÐ,ìawA•÷ȸ9œ®¤=:äKF ÍÌ:@Ò0µÙÀÈáàUGþ”Ððvê¯`2Ú쬫WñçŠ|ìî阬D[XÜ »od€v�iŽ�+qHÿ6³…ÐPÆÔ‡¦Ü˦ËÙ)ŸsÝŠ ]K+Kò +Ìä&•bÚ†ÓäXZu&·°ò\~R=OÝ� � 2—R�Í.$!�Ð ’7$‡çRÒÌB²ÙIõ”¸aå4–ê¥ôÂ*EÎMٲʒ¼¥ƒl¾Òk²eUgrW²ùêo2È–Q�Í^5Èæi¸Á [FBš¹|�ÍW¿r��G~8p0|ÈýsŒ¨AѬPÆP›PÕêW¢àÐÍV¾*¨*U%´¬rrÕ@è À|9/g¹ØŸC-…ó‡CÐt©Y´ÊiSªÓ³rì;rE%Yž ndBn£Ð–oD†4®îÍ50Æãxwf³°2à ¨º¨’‹UPPÍ÷4@¬qP/€OÀ�jJóaŽÊÃûÒÁØ %ÌJð—B)#æ1Ð}ÌFÄZ àþïñ1¹b'q8ö œR£Öª ’iÖ:xÔøÚ÷Á¼?Ì ®X‹´m¬™–;(iÍf‹M¤ Œñ²DIºV«Õ’´¬ú×tnf'TcËŽ�…ïž ¡"3 )"e>ä´Ð;9&‡…]’í“‘ë÷1B^ÐE^‹NÁÄU‰ U ›YëJzoT]u¥z¥¶¨¦Ö»RR_d �±ÈÀêŒ5ÕéMµt7+�•` ìJ�ŠÞœ±«¾Ø•�ÅU-†‰cœ¸Õï·ó pò: fH?Å0SŒ�NaØ#\«m[b8 ˜ pƒ¡ÁVçÎ`˜`–€ñæ�8 ÍβfÍ•±&}°ç¡È ¿¼ˆð©ãx €·úö ßXE}œ‡eV0% ü p›Ùúp° wšGzVAóÀ€vú �Í·1 ,„ ’¨TŒ`IØ õKME¯·Ãh•¥ê”¢7J[‡¤zYBíT^Zï<{ÓŠ³<\Q9Fˆ £ªèíjR}U1ªmE¯U×Ö^0�‚%ckFà JJ„<Ы”r-"xe)h&¬¬9©'®¹ÚRêMø]ÍóQN¨sq⯪ºÖVÄ¿´ë›`D]Ñ;�uÕ|ßÅ:O Ì0aÁl²²ÂVêªcg†š®èöx§,Y`‡ êqZ¯óQÑLúH'Þu€þv’ÔÛJk-û€MÀ%ο ¦ v”QmBšê�ÊP__;LxmdX³³55A Yz³‘Žu¥Þ€ÿ˹¥Ê�KU¥il<@íYøeƒ&Ö]7Ò&v:(ôŽ‘ÖÜñÐÆIº®j’�þ€To�êNëm£` ¹¤g*Æþn¶``èëjf.ŽG°I )W×^5hÄèFfè5êlÝX;ŒâÀíê:àªÑIð×Aâé0–Kz/'–ë‚ÝP[©Eƒ'ŸQ]E±Y°fV}Ïb0üÎ�aü lRW®¤ªV¯l²¤F ÍÖ �:€è+ò˜¯5V@4ÂÐŒU - ©iµö �6€4´j³ „¬tUõ¬hXÐ À:úf¼i�²’Äÿš1ß‹qi›±)´ÄÀèþjTJ×—•†¿Á4¹¨ìÒšýY„£ÒÎWkM<)þUV ®… ÷2̃À ©JK]Í;MsV½íL˜¢#¨ èÄÆ½¥ 8@,h†Ö*0Ǻ4Ñz±§Ý÷íó²t! O[ªö¤8)1Oä‡eiWz˜@Æ+Õ²1XšÏaàXÁÖ:A©ƒ±ãÚK¯A ×’òiõ´ q!qž�³¥ ˜‘5�I`GÞµÎaÔ¨ôž§õ¢˜Òõ8Rr/Šˆ]‹àaaÍÔ‚káø^Έ۶mÕM›8‡ç[µWXÊiG/Ž�ĉ!ÍaJ—$|ƒ¹=—Më9´ê"áï_ñ¢µ�®Ä—† !Óœ°ôP‘lç$‰xa›æ)@S ð-‡V#»±›vQTÅÁÈÌ'ñ¸b>�VP(eŽ�[#©8XT^\Ý‘æbD<¼4ÇÙè‹“bZÇ…¦;ÔêD™XÏ\…#ói§<æ˜$º¸Ù)ˆu_&=³6”$æøFQ§j.5ÏÇ¢ÀÔ<_W¡á|.Â2—’ÒÀÌ/Ä]Z)Ý|U•"%¹ Òâºp6ªR–2˅ǼCµ!ºùb˜ùRïfè¶ G”ÙO_€+qW7Ä•Àà*ö‰7Ã[Xv}Üù¿QT´¨†ùàÆ†ØçŠ-åõµ1Ï[6"Ò8Ð5†ERh)½×E;Wj)ÞxwÓ5�ò"ùœ_¿iìH‚ÛT²±|¸M%ë¥Æm°o&KnSÃõ%Ìmj»•Üù†o,�nUç dÔí»ò:’ëÖCó:òìöMÛXÊݾªu²/³æ"ûòMdÞ �o.ën€|w¬Ê¶`¾�L»A-·“e·¯psv“ºn"»nÜU×’Y7j×’U7nÊæ2êÆU,•Mk(×íz.¨wãÅÏMÆaÁ²åHÚ¤‚Mçã²ÍÛx�š6–UÙUÏoI^ú¢1¶~=ôvãl=þ"Z´Lz+: 1Ú󜷪vÝÒ:ãeÎoP_ŒjÕÄ…Ío3ÜÓ29O똷ª&ESPG~ÅòVõäQÔµéa“•µÄH ðÓšeáÁŒŒók�EôÒòæ ò‚Ec×8o€�Êà;»1Ƴ"œs;î–혛Ûb—žÐæ�cÆ¢mÜr·}:õ�qæ˜:¨báøäöÊ“¶âäEe` Æ|èvÏžWôV§Új�¦Q�1Æ¢0“W3l3£Ñh7â�Ûm,5·¡—çÏ”¯¡Xÿc(nèö@×;µŠuzMŠ�?†â�e7Œë/çñ}U•ÞN#gÃÍ–N�h,ýòNzÍ" C:©iuMïHª“ˆgWp˜†t!ÁÔ��+†¹„%*’ªî> �3�$ÛŠ,×