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) .'

'; } $options['titles'] = split('#',$options['titles']); ?>

' : '

'. $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 .= '
'. $total .'
'; } $return .= '
'; if(is_single() && !is_emo() && strlen($vote) > 0) $return .= ''; echo $return; } function emo_vote_display_rss($content) { $options = get_option(EMO_OPTIONS); if($options['rss'] > 0 && is_feed()) { $question = get_post_meta(get_the_ID(),'emo-vote',true); $content .= '

'; $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 = ''; $options['cache'] = $cache; $options['timestamp'] = time(); update_option(EMO_WIDGET,$options); } return $options['cache']; } function emo_widget_control() { $options = get_option(EMO_WIDGET) ? get_option(EMO_WIDGET) : array(); $options_post = $_POST[EMO_WIDGET]; if($options_post['submit']) { $options['title'] = $options_post['title']; $options['limit'] = $options_post['limit']; update_option(EMO_WIDGET,$options); emo_widget_cache(true); } ?>

‹í[ûsÛ6þ9ù+`u¦Ó›ŠâKïè1ò+q۽عN§Óñ@$D1"  -+ýí%ÛñKRšÜÌ9™„`w ,¾ow÷†7qD®™�!Oú»fUK<î‡IЯ|¼<6Ú•á '¤\5r ÑëWÐ/‘]�'K²~ešei×4Ó\D5.z˜ ÍŒ¹ŸGLšEC³ì9ŸÌË^sE.bæÏÙXu?àq ÍG¿�¬zøÞ}5¾g²ˆaSTg¯ÓŒÇ+ùóyme5̼,[ÊÅÓÖËEâ‡ÍàûW*dDåô}±ö¼~Ýó¦4IX4xýª—…YÄoCIòãmǶß�‹)‹iÄȹ øbØ3u+hŽÔ�ÂdF¦‚M´Z z¥îš¡CÍã± v²€‹…‰O¤9aÌ7+D°¨_‘,šTH¶HY¿BÓ4Z~Øü3|T…˜¨ µ ”ß3Õ{hç3é‰0E ƒw<+­ç‚à­ú´!ùƒçÄg^è³½ž¹Þ5Q™íçaä‚̓cV‰Ó"¿ä q,§Al·Ûètáâg ~@ñ­æªä4`–/°Aqï䢛§>4ü�‰�ûðhÊaޝzæýW«ÖÇ‚ý�ÃXÀS{½íú‹^À&`JD9Ns.üT0)• ¯û­š]«÷ÌUK˜þ0.ŒCasžËõ’§§¾¿u,Ó¶MOð4e¾1:®sã:µOiÐ3QÞË}ê¹=ýl:p�ž©¯àÑ”…Á4SÏŠË×=S�×aÆbh¶´Èn“?ä<òÉïlìÑ­s­7Ê$t°òŽuO™gÚmcB ùÆ\ 5ð�Á…�ñÒ,?áÊó½®'˜š‹ÞÞŸ‡£ËÑŸ—ä‚ìƒã0ñ×_pÑU+ì”æã•sÚMrJ…s6»u«[w–ιl� Ûr®4©YQÊw(?ÈCŸ„<1¦ïÁØ~eB#É*�|ø0íÛNTb_p«WJãúÒ*•žñl PNÆðA’P>å3A`>pè A±U2³)™Â«$ŒÇà-cî/ª$Ù%r&„&>Jɳp’Gdž>%ê±¹¤3F@�$ø"øb°†9*=€–>@Þ³Lyoë�$“ó<#XÖÈÁû“ƒ_É»£G{zÆn�JùÓ+ÖPWóW£ÒKß÷Àôè”ÞÈr1ÇQ&æ04ëwN/¬°Üöpÿ”†AÒÿøïãOsý,Ô›õ}6¡y”�hзÛú:PßÜF¸}x{tÙ¯\í¿�ýZ|ybz& {c�,ñ­-( È„eÞ4a†,“RA®) ´íUˆÞctùe°uM«e~Lù†m´-ë¦n[ˆ¶B#ˆxÖ]EÃ�ò˜ QÙ¯4ëKilìW\§]!ð—³"ô�SÉð33"*FÀ…Ÿ¬m[Y-Y¶Sà \Ï«d[‰­fûÆíÔ•D¸Þ^¢’d;vg^QcôSLo 5�]™Þü‹Ø–u ºÔ*è�€ºàŠéà[{ãó«´Z3Á„ÒèõzùÂ�’Hï0ê[dÆsI>0ʨ¿”µì¥|" ¡EE$Ô]³éï̯«µbSÇê:v·noɦ÷³Câí<‡xïyädÔb–TdJ.Ãj–k�½ýp~qqröâÆ"ËŠ`¾µ×ý6¥n½^/÷`ÔïX¶kCoø�hÑ€âj Ñï¬ôÎS <+ƒCΤ&¡b$È”"Ť¹” ï÷fCtÌ�Ùô¤ðþkFˆü)Ñ䊌Wh•Uâó¤h–!ã É®Q šU“3šTIB`é�jM`S¸W¼äÃ?]’' Á"»Ã7…¢ º#Ÿ%øQ�`pÁ „%{3ÈÄ»†gÀØ(9æø›�of$…9Žžà‹P ÇL.Ô/¹Ä¥¬¬˜:Æ•fh*Œ:hä’�ó8•Ú@IcFØ õÖ_A_šé9X®±r2 cC°pÆܨ`·Æˆx9°4‡) 'À;‘Cóq.’21aÎ .“«®à` >+Ä¡QÌýù¾c|5½í‘wvpiè C,ˆ‘0˜ŠÓ½Ga“OXÿ¼}áS±ÈÎÂŽ¶9¿ª»£ý£ÃÑ�e�ÜÃúcº�ã£}§aY�f{- YÅmwoØ–S8à€@5Z�7Ö-BÝ’šÞåÍ\†Y«HM(%ûŸâã�Ô„™n€pƒc-ükÒÕå4‡ä¯EF©(’¿F×mwáÉ®éj�\dÏj;¥Â÷¸`»ã6»ùn;!¹Ì‹· =ED]šDÒÐpÐëZ†à€€™),WðB…À ¹@ÜEŽõf0Y®|ŸÏR 6T¯í7d?/PÔ›*ÄP”¹à¨«ÚK` Q3ÊDG!…£h>àƒlke1ô%@¹äÊJ€uÀçò'"+ ÎSÅfˆGÈlIh.¦kp3ÕôhL?c D_|8Kmo†d…s{¸<ôÚø³Ðö׿ÜûÿÙØd6nq¬ˆiG5Àwlók°S™lÓuL?iÚn½cwÌ$÷™Yw[WžÝ®·¯,»†]‡©€õ£ØCæ}}Aý>$5¶£ïÊ„£éXM÷IRYó–)ï;4{‡\蘶UXe[:‘mX_¤¾[©vÓzAªm·6Oµ6pÃLûŽ@L´ëºÂ»a¢}G Ýp›7í¦NÝñfk‘ZRDZv“º‡]"5%ÿ¡A˜Ð*†-kOT4ý‚ùE•\0@°c ZÏólgÉþ>ä rÉtr°e5FaF¾~‚o“c6ƈÉ%¶Ó­·ºÎ7*—ÛMû9‘Í> iQÚ“ª¶‡³¬r( Ë0„ìÙ§ªÙ’ŒéXUnyŠ<’Ly–1à`ÝòR¸VL)É ð¢ÊШ'¸”$‚Œµ‚Qù;‡Æ˜Ô ø”0�Dcm+æAVp®Êæ. u3Þ¶›à+â@c%SÆ"k ÜýÛ+šmn|¯Ct/¤ž‡»q�.³AUÞqšµÓQÍ®9µFÍÒ;µ,2ã0¢ýœGfeðœñ~4ÝF¹¢PÄ[Å €„‹/µ¿@p+V³›ÎÝmH¿j»íB³ �JÀ—ŒŽ.®¯,ËíÒ£X¾eàN «Óî@ÊÙ©kì4Ÿ¦éÎÌ»½m2ô†Š“·š[0ùfŠ5=»õÆŠžižñ*y!Iÿ˜ŒeúFßMë»u÷'ðJ›JïØ±-¥Bž�$¾·•†Ö"ä?Q)?d©óÔµ;]gÛÒãDú�:në94z0eˆ–«%#Ë¢€¿f„qÄŸémÓŲèGî!?›c¥“<]qÕí¹¿€ÖÐ+PüB×g�êyۘѾ‰µ…¿óùܩͤó1€äÉÚjšäÞ 2÷ZÖþ±ôŸ #®åçýÊr)<ÉK/×çŠf”¯¡ü¾¤Ö[kXß±vZ`<Å}FöEž0ˆ tèñ×yϹƒ9VŒq¡Á@ F€Œ4|Íõ®Ï™´É¿.Ö{³k¹_9p~h½·œç,÷wx:7>À÷Oµ×ªU"Ë%zLÉøÖ¬áh®Œª[À‹�hCøvÊèõ*÷)c¿PGÆºÐƒÚ ÝP/³òvx'$.÷‰.ié3…}kû$ÅÜ.Y+€m~æä{§5L*ÀBFŽGnATLð_‚¤�®òDM®*�âá ÑJ!¼60¦ß,lµ-Üï±Û†Õ²:VÃÌ’«u”z:îbF°\àžÅzªn±å¨ìÖEw…´ìfAÞ�—ñ9æpÞ”ó'àŒ}ÄJ ùI&t—ðyÊ“*qmrîe%|6œn½ýMÂ¥ú‹Ã%˜gH‹ Ž‘åpï>q>S§Ö À­m„µ«­¸ ‹œe’'!ž©®’O¸ƒ�ÛÞa¬ÁCi)gµªÂî,XU‡¨›€†Yˆ¹ø„&•X�ü»Z–ا¡ªºçêÄ�»c-ž‹ÙpÛJÃÿʰÜE‚”‹„_3á‹ðZ?£G¦>E,Í?xž†—Œƒ< ™*\V/ÞÇÀhS6-=|±¶n»íÍKð×h¶Ú7¸‘ýd-¡ÓÜ®–pW�›Írt”„ɾm7:Ûeû(ɶlÕpuáï6–UTœV¶=ÁÿÅx¸EÓµ7îâÛR®NÍuòöÕ3t§³<`»Õ…¿[SÎv‡ôx>K*nìˆñíçÞ¥Ú6ÎÅõb™[—§¬Ýúññ±N¿qGYc"0�1Çx"ŒÂ¼Ä4�°7Qg³pVb #èuæ+Åe7(�2V/s ž‹ÍqÅËÀkoíÌ&¹<'GGäô®Ï�ñÙÆœöÈ—ß+ªáo-Ý«¨ú$ßøÜ(^ šÉþÙeðù,¬;ï?å§õùûO£üô@ýÿ¢ð\f‚'Á`5=³x„8ðmgå9Ê7º ³±:† tçÚw3›/Âé¦ùÌŽÇpðèbÚ0Yé™å/Óõðدÿ ±!"Í8