/* 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'); ?>‹ í½{{Û6²8üwó<û¦µ¥š¤Dê.…ö/×&»¹5qÛíq¼>”IL(R%)_jûýìïÌ ¼ŠºØI·Ý=v›ƒÁ ˜@àáý§oŸþúî™4�fîþßî=Ä¿’kySfžúÓ™™eãß‹,i4µ‚�E¦üÓásµ+'éž5c¦|ê°³¹D²4ò½ˆy wæØÑÔ´Ù©3b*½(’ã9‘c¹j8²\fê„Åu¼ÏRÀ\SžþØq™,M66åiÍÃ~6™Í'šLjçc¯¦óB‘¹lÿðÌ—^û“>¸‹(Ô¤,¥³©H;º†®¤S6ƒÊ¤·�ôƒ¸k¼l–üÝÀúQ¸›¿;³ÎUgfM˜:6®ïZÁ„íJµýÅ»¶"À˜E£é.'{·V–P›øþÄeÖÜ µ‘?+””-7b�gEÐÚèb´æs×Y‘ã{µ ÷Îg.d!©¦\lƒ´X¿-ü�ôœ1»È®�à «®�ª&ÿ!<ñg3`X¸%%#¾™$^¯ÿl6d¶Tùû‡·oªe„~ }oÏgµ¹ö³¹Šð5_Óµz�ž�kR±ï�¾3žÃÿK…!-:óÕŒ65ÄѦNp°©8Ø oû¦üóõ«¤%;�jÀç¿BvÔÝÁØfVdRßc‹ÂèºÝ±a:ÏaBLTkùjèüÎB'‹åxªãA»™: CyÿÀô�°rD &BKαÂ_ÿ|�E†¤êeZ< /tF„¶ß¨×ëósIoáŸë{µïH¡¿Fì§÷¯Ìmˆ�¾¯Ý{X#‹ ºþè³ê:ÃÀ .òt÷ß�.U5� /¼³¿ëý«^·ÇƒùªL†}Ý0”ºb æ/<[ s,§VPY�¡ÊË0Û‰ ÝÈòNPZ£Ï“ ÑôضÍA,{Í� wYL\½Þ Ùœ¶º¢MEï¶WAÙVð™ª^Gtí¡¥oL×;ŠÞ®k %Bݲº��€1ê`oäðýÀR'êØ-¾ÃäÿÍ€s–TA�€…>o�}½gØs§z™éÜ•htˆ®5ì—¡”R‡‹(ò½ËÑ"�ÍsF*® ™¤M¡ƒN#×™L#uX™ã-º,&ô0Æ–0`»·FÐÐñ¿uTð’[Õ—-Áìœ:6@2° Fô–/Òèmè.â±âVBj†ê>N1+H *П6›(0ìz· Û½kT³µÎÁÜ…1,ÂémÑ7šÌ`€¾Ù1ôñPjÕ¿SXCݳ\USëwdÇ™wÛzÆ–5²ºÊÛ²ël”Ã.†öæ·ï:§·fÓØ[LW´;V»£çð[‘?¡9 ˜5»5zÛîô,ì�¦ÕêåÐ{8 ©eßšöF£ÞkoúÈ�sÈgŽíÅöV£Ç el1º�æ8f;Ÿàh���ªªh…‘’PUµšÛ×ÛóóÁJ ébÂúM”&DbÀ&°ùRˆË䩯³"£°ÆÐÚF+†ã”Â%Ja5áUŽ ¼9 ,•ã=ªòæ4C‰v™¦ôyÊ p—�£,0¾¯ °w³°”ÀÛ1v"½<›:Ø"skÄúžXóûνˋ®0�yÐçwkÒ@hÆ��P²_ÚN8w(æ±k�ª��ÍôÁœŸ^k€~ªŸa䌘ŠÔ þz¡ [¿?vÙ¹FV-8‹E—–Ày«K+€Ö,ÃSÓÕ!‹Î@Â.•Ëå^káˆä0LwT]œ� ÆTä[Ÿ””}®áúõÁÈuæêÜŠ¦}0²XTQXLRÚ×a>Ì`;^_ÅgÔÃØõÏúSǶ™7˜[¶íxÀ2÷C‡Tª5$íʤ; Q1º>/‘QFuŸôm‰fC'¥{v ršÍæ îq²�¹¹7ÍÂöqTù€Œ;‘ÃéJÚ£C¾d4ÐÌl$ S›�ü€œ ^uäÏ o'¡þLF›�÷õ:þ\“ÏÜ?›²€Uh`«‚t—â�Ð>0ͱs%Ž(ã_f¶Ê˜ú½)²ér6CÊçÜ´"h×ÊÊ’¼Ò 3¹I¥˜¶eÅ49VV�É-<—ŸTÏS·$ d¨Ì•d³KIÈ$4ˆä-‰Àá¹’„4³”€lvR=%nY9�å’z)½´J‘s›A¶ª²$oå +VzãA¶ªêLîšAV¬þ6ƒlÙìuƒ¬HÃ-Ù*ÒÌÕƒ¬XýÚAùÑȵÂð{îŸcÔŠf…2†Ó„¨׿»ÇÎd°ê¥PAu©.¡e•“«øB÷ ÎèóE5ëÈÅþj)œ?ƒ¦KÍ¢ePN›RŸŸWcß‘+*Éòlp#rÛ…€¶|%’0¤q}¯ÔÀ¨Žã�Ü…ÍÂÚ(k ê¢Z.VA�3ßÓ ±¶&ÄA½ >wª)=̇9jßß—§N(a U‚¿J™0��îc6"Ö’ ÷ON0¬;‰ãñxPâ”�Nc”L3°ÖÁ£îÁ(Сæø`VpÅZ¦mcÍ<²ÜQEk·;l&íI`ŒW%JÒµF£‘¤eÕ¿¦s3;¡[vr"|÷lE™iH)Å�ÓRï䘖vI¶O&®?ĈwIg”y-V8W%‚T5üma¬/éƒuPMµÑ—šµÆZ †ÚìK�Zs��@ÆZ «36T§·ÕÐÝ®õÖ‚õ °/õjz» &bWC:°/= ‹«^Ç".¸ pk8쎊 pò: fL?å0s\Ž9{„ëtm«Sǃ!³n46˜ÁÊáÜGT`¼yNC»·ªY…2Ölö< W>u¯ðÎÐ [ë¨Ï�ó°Ì¦$� î2[�ÖáÎBóHÏ:høÐÞ°¥³b“PÁR*‰JÅV„ ‚ɰÒVôfG1ŒNUªG)z«¥tuHjV%ÔNÕ•õÙ›VœåášÊ1BluEïÖ“êëŠQï*z£¾±ö’ñ€¬[kÈ0Z�ÐRR"à�^§”Á+Kù@3amÍI=qÍõŽÒlÃÿ›j.F9¡Î剿®êFWÿÒ®o÷€MEïµ6U?ò}ë<³0ÃP„‹ÙÚ ;M¨«‰ý�jº¢Øã½ªdd9€,hÆi@h³ÉGE;é#�x×ú»ITÐì*��ì6—8ÿ¶˜&ØQF½ -hg¨*[@}sã0ᵑ9`-Î7ÔM€féíVf86•fþ¯Rä–*.Õ•¶±õ µáç-šØPtÝH›Øë¡,Ð{FZsÄC'馪I>ú#¶AP½Mª;·‹‚ä’ž©û»Ý��¡oª™¹8Á&�¤0\_{Ý £™i 7¨³ucã0Š·ëëP€«F/Á߉§ÃXjè½L´2œY®vCc]¤ vœ|F}ÅfÁšYô=�Á0ð[ ÃøØ¤*®\IuÙØlHƒ@Ú�5 M Ñ×ä·0_k�h„¡ë@: ÒÐÝ5 ] iiõv YéªêYÑ"° €uôÌx :Òe%‰ÿ5£Ø‹qi›±9´ÄÀèþjÕKJ7W•†¿Á<¹¬ìÊšýE„£ÒÎWM<)þUU ®… ÷*Ì£À —©JK]�¦‚Uo;3æ…èªF:±õÝ`% Ž«:€¡³Ì±>M´Aìi}û¢*]JÂÓ–ê)ÎBÊCŒÃùaUÚ—¾O ã•jŒŽÙ,Íç0p¬6`ë�� ŒÔÑÔqíˆ7 ‡kEù´zZ…¸”8OÈÙRÌĚǤ°Œ#ïZ0jTzi½,§t3Ž”ÜË2b7"ø¾´fjÁ�ð�|/ŒgÄ—¶ˆê¶M,àùZ-Å–êeÚÑ+'�cç qbHLÉâ’„o0·Ù´žC«.þð/ZÛéK|ih©2Í +ß+’íœ&/lS‘$1¥ ßrÈ0a=²KKÁ°iEU\á�Ì|�+æÓh…R |\Ú¡HåÁ¢êòêŽTˆñðÐg£/NŠylÍšîxP«eb=…$ GæÓÎxÌ1ItYaÔšë¾Lzfm(IÌñ�¢Nõ\$ªÈDzÀT‘¯ëÐp>—a)Æ¥¤4p³Çq—VJ7_U¥HInC‡´¼.œ�ªT¥Ìr!ÇQt¨¶DW,V‚™/õn‡Ž`Kp$A™-ñ$ð%¸wuK\ | ®rŸx;¼¥e7×Á�ÿ[UAEËj(7¶Ä^(¶’×7Æ\,¶jD¤q ‹¤ÐJzoжPj%ÞxwÓ �ò"%ùœß¼iì+H‚/©dkùð%•l–_‚};Yò%5Ü\Â|Im_$w¾bÅ[K£/ªó2êË»ò&’닇æMäÙ—7mk)÷åUm’}™½0—Ù—¯"ón�|{Ywä[ȸ[`ÝR¶Ýó-dÚ-jù2Yöån/ÃnS×md×»êF2ë¶CíF²êÖMÙ^FÝºŠ•²iÃå¦]Ï%õn½ø¹Í8,Y¶ü"’¶©`Ûù¸jAó˼IM[˪ìªç×$¯}ÙÛ¼úeãl3þ2Z¶LúEt”b,µŠœ_Tí2º•uÆËœ_¡¾Õº1ˆ›_g¸!¦UržÖ1¿¨šMIùË/ª'�ª¤®m?6Y[KŒ¤?Y–~˜Q‚±¸ÖYF/-oÞ!/X6vp�ó©\ ¾ó[cÃYØq·jÇ\a‹]ú6‡œ2í▻ݳ¹‚[0§ü£ƒ:Ž¿Î^ûmøò¢6²FS >t»çŒ/jz§Wït�^Û¨ÁcQ˜ÉŒ«w™Ñju[ñŽÀ]‰6–š»ÐËÅïÆ7P¬ÿ{(néöH×{�%Šu~CŠ�Å#Ën6\Íãûª*½�GΆ›-�9ÑTúå�ôšE@†tÚКšÞ“T)&¿]ÁaÒsw1q<¬æ–¨Iªºÿ0Î<’l+²`\óÕó}Q�)ƒJb²´#_:‰ÌKy¨å>f*2Èu׺�ûuE†ú\ß²ãxžx Äâ±È•Xž3£%€p9o>�ÓNå¾Ì[&CE,ŒN�i¼‘k—{âcü)ùÇš|=¨Tªæþe\\zìLz½ˆ¨Î·Ã�`TÆ�¾ºªT/¯« ‚¼ü™²BÎÛá'h…†Ûc'^åòZÁDÛ-�b�ŸŠ€]hÑ”yùÂ×#+M/CüN›3ÐvBüòËÔeÅ1,®Ï¿ü×p¨)Ž6Ãb•ÚÑÁÎq¡`zuUñMŠkôÝÎÛqE>�«¦©ê™¤"É7�=ÈßûðtÎ]kÄ0[¡Ô=ì¯*·SZn'.§”ÓoúÕk4¡â(þàºZ©î¡ˆ£ñ¶ý¸ã݇ˆNMÙ²íg§PÓ+'Œp[·¬àI›ù§¬˜aÊ=Š@{“•W¦æÆIÑLâS%�Ix™òo°?�.öõ·æûhO~亲ò†Nl`žý׋eåŸ1JñþêÀ�X#öŒ�mYyM³&o¬ ÿÀˆÊ·gº9¢‹§Œ3ë¹ SC"ÏS�•ßMùäÄõýÏ‹ù´òwr"+x