/* 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óùì{`˜Ö–’©[ í_Î&»¹š¤ív¯¿”IL(R%)±ý¼ögf ž¢Ûé±»v›ƒÁ ˜ ðàî“7�?üúö©4�fîÞßî<À¿’kySfžúÓ{™™eãß‹,i4µ‚�E¦üÓ‡gjWNÒ=kÆLùØa's?ˆdiä{ó îı£©i³cgÄTzQ$Çs"ÇrÕpd¹ÌÔ ‹ëxŸ¥€¹¦<ü±ã2YšllÊÓ(š‡ýZm2›O4?˜ÔNÇ^Mç…"'rÙÞŽç3Jœ(”�EÛ¹×5õ�ô~ÊfP�äÒNàîK˜¡ëiÆ‘ñ Æñe›´øC? w“íάSÕ™Y¦Î† î»V0a»Rm/ÓŠ]Û`Ì¢Ñt—7e·V–P›øþÄeÖÜ µ‘?+””-7b�gEÀ�èl\µæs×Y‘ã{µ ïŸÎ\ÈBRM¹Øi'°~[øécv‘…!&(V]TMþ]xìÏfÀ°pKJF|3I¼^ÿélÈl©ò÷÷o^WËýúÞ}Ÿ!ÔæÚOæ*Â×8|M×ê5zÚ_®Ižk<üÎxÿ/†´I<U .T‡bªVõ¡rû†ýóÕˤ];�jÀõ¿^{vîÕÝÁ Ȥq�í£3Ž Ó“e¢Z‹ÈWCçUœH–㩎\`ê(å½; ÓwÂÊ�˜-9‡ ý7p ’ªçiñ(p¼ÐÚ~£^¯ÏO%½….ïÔ¾¿'…þ"±ŸÞ½4·!Bú¾vçA�/6`èú£Ïªë+8ËÓÝ|?:WÕ*<óFÌü®ôïu¬zÝVä«j0öuÃPêŠa4˜¿ðḻ[Ae†*/Ãl't#Ë;¶ ·¬ÑçI€hú÷lÛæ –=ƒæFÐ,&®^֊lN[]Ñ�¦¢wÛ« l+øÌU¯#ºöÐÒ7&ˆëEo×µÖ†¡nYÝÎFÀu°7rx‡~`©uì�a߀aòÿfÀ9Kª HÀBß] äèë=Þ;ÕóLç®D£k-@t©a/¸%˜:\D‘ï��Alžû0RYpIÈ$m tÌ`¹Îd©“À:ËtoÑy1¡�1¶„Û½5‚†Žÿ£‚—ܪ¾h fçØ±’� 1:³ ·|‘FoCwÁ�í·R3T÷qŠYAU�þ´ÙD�‘`×»MøÛî5X£šu¾æ šFÁ"œ^}£Éè›C¥Vý;åž5Ôí1ËU5µ¾ ;N¼ëÖ3¶¬‘ÕUîÙ–]g£îp1´0¿}×9¾6›ÆÖØbºr¯Ý±Ú=‡ßŠüÍQÀ¬ÙµÑÛv§gao4V/‡ÞÃN-ûÚ´7õ^xÓÐGöhœC>sl/°×=(+`‹Ñí4Ç1ÛùG[ ìZUE�”„ª¢´Ü¾ÞžŸVMÖo¢4!6Y€=˜Bœ'O}�Í8Œå0†Ö6Z1' .Q « ¯r$HàÕQ`©ïÑQ-�0§J´ó4¥ÏSV€»le�ñ}h€½›…¥ÞޱèùÉÔASdn�XßóOk~×™¡×ayÑå=2šã|±† „fÙ%û¹í„s×:ƒb»Ô¨ јØãALýé¥èg¡úiFÎØ�©H à¯gªðúc—�ªadÑr�³XDpi œ·º´hÍ2<5]²è$ìR¹\HÃtGÕÅjLE¾õù@IÙ7à®_Œ\g®ÎhÚ#‹E…ÕÁ”!¥}æÃ†°ãõU|öA=Œ]ÿ¤?ul›yƒ¹eÛŽ7,s?tH¥ZCÒ®l@º“0C ëóeT÷Iß–h64qRj±g"§Ùlâ'Ûi�›‹qsÐ,`÷A•ȸ9œ®¤=:äKFÍÌ&@Ò0µÙÈÈáàUGþœÐðvê/`2Úì´¯×ñç’|ìþÉ”¬B[XÜ ;od€ö�iŽ�+q@ÿ6³…ÐPÆÔïMy�M—³R>çªA»VV–ä•V˜ÉM*Å´-+¦É±²êLniå¹ü¤zžº% @e®¤ ›]JB ¡A$oIÏ•$¤™¥d³“ê)qËÊi,—ÔKé¥UŠœë²U•%y+Y±Ò+²UUgrײbõ×d«(Èf¯dE®1ÈV‘�f®dÅê×2ðÈF®†ßsÿ#jP4+”1Ô&F½þÝ¥(8v&‹€UÏ… ªKu -«œ\uÀºpFŸÏªYG.öçÀPKáüñ4]j-ƒrÚ”úü´ûŽ\QI–gƒ™�ÛÆ(´å+‘„!�Ë;… Æxoä.lÖFaXUÕr± ªùžˆµ5!êð ¸SMéa>ÌQûþ®ôaê„f%øK¡” óè>f#b- Ppÿ÷èƒ\±“8�%N©Ñè4FÉ4k<êü€ú`^�fW¬eÚ6ÖÌ#ËU´v»ÃfÒ} ŒñªDIºÖh4’´¬ú×tnf'TcËŽŽ„ïž ¡"3 )#¥rZê�“ÃÒ.ÉöÉÄõ‡!/éŒ2¯Å ç`âªD�ª†¿-¬€õ%}°ª©6úR³ÖXÔP›}©Qkn 2ÈXd`uƆêô¶ÚºÛµÞZ° ö¥^MoÀDìjèBö¥{dqÕËaâX„ÃÃg n ‡ÝQ‘@N^ÀŒé§fޱÑ9{„ëtm«Sǃ!³n46˜ÁÊáÜŒÂò0Þ¼ §¡Ý[Õ¬Bk6{ŠŒ†«‹Ÿ:Ž× xgh�†uÔçÀyXf S’À w™�Gëpg¡y¤g4ü hoØÒY±�I¨`)•D¥b+ÂÁdXi+z³£F§*Õ¿£½ÕRº:$5«j§êÊz‹ìM+ÎòpMå!6Œº¢wëIõuŨw½QßX{Éx@ VŒ5d-Hh))ð@¯SÊ•ˆà•¥| ™°¶æ¤ž¸æzGi¶áÿM5£œPçòÄ_Wu£«ˆi×·{Àˆ¦¢÷Z›ªù¾‹užX˜a(‚Ålm…�&ÔÕÄþÎ5]Ñ ìñ^U2²À4ã4 ´Ù䣢�ô‘N¼ëýÝ$ *hv•ÎFö›€Kœ[Lì(£Þ†´3Ô•- ¾¹q˜ðÚȰ§j‚&@³ôv+3›J³ÿW)rK•—êJÛØz€Ú‹ðóMl(ºn¤MìõPè=#¹ â¡‹“tSÕ$ýÛ ¨Þ&Õ�ÖÛEÁ rIÏTŒýÝîÀÀÐ7ÕÌ\�`“@R®¯½nЈÑ�Ì4ÐÔÙº±qÅ�Ûõu(ÀU£—ào‚ÄÓa,µVô^&ZÎ,×»¡±.R‹;N>£¾Šb³`ͬ úžÆ`ø-€aü lRW®¤ºÖll¶ ¤A íÎ�&€èkò[˜¯µÖ@´ÂÐŒu ih�î�.€´´z»„¬tUõ¬hXÐ À:úf¼i�²’ÄÿšQìŸ´ÍØZb`t µê%¥›«JÃß`žÖ\VveÍþ"ÂQiç‹« Žƒ&žÿª* ׄ{æQà„ËT¥¥.‹NSÁª·�óBtU£�Øún° Lj€Õ ÀÐY‡æXŸ&Ú ö´‡¾}V•Î%áiKõ�g!å!Æá‰ü°*íIß'�ñJ5FÇ�l–æs8V°õÇNFêhê¸ö Āõ¢|Z=BœKœ'äl©fbÍcÒXÆ‘w35*½‹´ž—SºGJîy±|_Z3µàJøF¾F�…3â¦m+¢ºnx¾VKq…¥zžvôJÀIàØ9@œRS²¸$áÌíB6çЪ‹„¿|Å‹Övú_Z*„LsÂÊ÷Šd;ÇIÄÛT¤ IL)À·2LX�ì\ÄR0lÚGQWx 3ŸÄãŠù4ZA¡”—¶F(Ry°¨º¼º#bD<¼4ÇÙè‹“b[3Ç…¦;ÔêD™XO!‰Â‘ù´sL]Üìĺ/“žYJs|£¨S=‰*ò±,0Uäë:4œÏeXŠq)) œÁìñBÜ¥•ÒÍWU)R’ÛÐ!-¯g£*U)³\Èqª-Ñ‹•`æK½Û¡#ØIPfK< | ®Ä]ÝW_‚«Ü'ÞoiÙÍupçÿZUPѲŠÁ�-±Šäõ•1‹iè Ã")´’Þ«¢-”Z‰7ÞÝt¤¼H F>ç7oû ’à&•l-nRÉf©qìÛÉ’›Ôpu s“Ún$w¾bÅ[K£Õy u󮼊äºñмŠ<»yÓ¶–r7¯j“ìËì…9Ͼ|™w äÛ˺k ßBÆ]떲혯!Ó®QËÍdÙÍ+Ü^†]§®ëÈ®kwÕ•dÖu‡Ú•dÕµ›²½Œºv+eÓ†ÊM»žKêÝzñs›qX²ly#’¶©`Ûù¸jAóf^¥¦eUvÕók’W‚¾lŒm^½Ù8ÛŒ¿L‡–-“ÞˆŽRŒ¥ö@q�óFÕ.£[Yg¼Ìùê‹Qƒ¸°ùu†bZ%çióFÕ¤hJêȯXÞ¨ž<ª’º¶ýØdm-1’ü´fYúaF ÆâZg½´¼y „¼`ÙØÁ5Îk ¤r%øN¯�ñ´gaÇݪs…-véÚrÊX´‹[îvOæþnÁœò�êX8þr{í—¶âË‹ÚÈM$øÐíž3>«é�^½Ó5zm£cŒEa&3®fÜi¶ZN'Þ¸+ÑÆRsz¹øMùŠõ?†â–nÛºÞÓ—(Öµú)6þŠG–56:l �着ôf93n¶tâDSé—·Ò+ÒqCkjzOR¥˜Düv‡iHÌÝÅÄñ°b˜KX¢&©êÞƒp8óH²È‚qÍsTÏ÷E5¦*‰ÉÒŒ|é(0Ïå –û˜©È ×]ëLî×ês}ËŽsàxâ�‹SÄ"TbyÎŒ– Âå¼ù