/* 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óùì{@Ø®#Ť$Ê’)Œ9Ü$Û\Mœvûu¼^J„$&©ò°¬Ø~^û33 OQGì¤GÖnc“À`0 sáà½Û�_=:üíõ…cçþ?nÝÿÌ1Ý¡¡pW{÷V¡DnZøwÌC“õG¦ðÐPÞþ¨í*Iºk޹¡œÚ|:ñüPa}Ï ¹pSÛ G†ÅOí>×èEe¶k‡¶éhAßt¸¡Çv?2Ÿ;†2ñ½�íp…�|>0”QN‚N½>O†5ÏÖÏn]…B;tøý·#>DÛø~·©ë]öÚrÖJ^e>{å³'¶ïìß«‹rYÒïø^σ; áwÆæ™f�“6ñ96¬ã˜þ�ßaõûjïXn€ öGwÉwêõ` jCÏ:ÜœØAï�%Ó ¹ïš!´4œM ÷ÌÉıûfh{n݂ͳ±YHª¡ÛÀ6|ó÷Èë²9·Š]`è, Ū뀪+_…€GÞx¬II_‚M’†x˜†ž?[—6 gåˆÂÔe[ÀÒ`Œ¡fF¡§ö'hÈ4¦íj¶MáZ?”û· ¦c•#1šÙǪxý´T’ªçiñзÝÀîÚÎV£Ñ˜œ1½�.oÕï~Ï/òûüÝ›çÆ:D°»õ[÷êDx±=ÇëÔ»ç›þ,OwÇ÷¼ð\Ó¨`æö¹øÏï|¿c6Ö » _Óüa¯£7›jCm6·$˜¹–XNM¿² CU”á–º¾éžš�Ö3û‡>¢é|oY– 1147„±â1q�ÆN¿g.È´5T½ÙRõÝíEP–é侦7ÝvÏÔW&ˆ;ª¾Ý¨µW”hê¶¹»³0F½Ø·rx{žo‰Tmàõ£ Ó6ùcè9“UÄç�çD8w:ú^ÓšØÕóÌà.D£×ڀ貆£àpœZ/ CÏ=ïG~ Ý<ñ€S¹IÈXmtÊ��{8 µ¡oÎ2&Zt^Lè|Ï9ŸÃ€í^Á–Žÿ-£B”\«¾h fûÔ¶ ’ƒ^ìÏL-O¦Ñ[ω8â±lê„ÔÕœb¦Ÿ@U`<->T�¬Ænþnïmñj¶ÖIäOà ? FWE¿ÕâMè[;M}ÐcíÆ?ÕïÍžn x®ª‘ù »cê^µž�iöÍ]õ{Ë´¼ŸÃD=+‚ùí9öé•»i`L®«ßoï˜Û;z¿zcš}Ÿ›ã+£·¬�=G£e¶÷rè]d¨`dZW¦}k«±· }³¥÷þ ‡|l[n̰Wâžfckº¥¹»ÓÄÝ.&8Ú%`«iZ#¤$4Íõ|Ðl}{rÖ]4І¼ÓBiB$ú|�í“Bœ'O��Gå0ÍÚv³Ã Jᥰ˜ðª@‚~> ,•ëû�Ÿ…š òæ4G‰vž¦tDÊp‡Â,0¾/ õqt³°” Ú1°C=ŸŽì�kÁÄìóŽëM}srÛ£%mºáå÷d4Çþdö@HÍð>JösË&Ž9ƒb.¿¬Q²1}°=ý˜µ£Ë Ú‡(í� S‘ ^gš´y;‡ŸiAhúá|‰³XDöÒ¸huiКyxjºÖãá$ì\¹\îe-蓆鎪Kt ¨1 û#%í¾®Ðp�F·ïØmb†£Y<¬€(¬vG)íè0ÆÀ¶ÛÑðÙõ0p¼igd[w»Ó²lwX&^`“J5{¤]y—t'a *z@×Ç92ʨî�¾-Ñlhâ¤ÔâÈveN«ÕêÆ#N¶S77ãæ YØÅ1î€*ï’q's]I{tÈgÍ-43[ Iljñ¾ç“É-ª½ ¡í$ÔŸÀd´øYGoàÏ%ù��éˆû¼BŒ- aÐ�Ë72@;Ði¶•+qDÿ1²…ÐPÆÔ»†Òͦ+Ù–ÏùÜŠ ]+KòJ+Ìä&•bÚšÓäXXu&·´ò\~R½H]“ � 2R�Í.%!�Ð “×$Ùs! if)Ùì¤zJ\³râå’z)½´J™s&[TY’·�ÉŠ•~6“-ª:“»„ÉŠÕ_…ÉQ�Í^ÆdE®Àd‹HH33Y±ú¥LùQß1ƒà®ðÏ1zE³BÃJRa4ÿ¼”ö0òyõ\ª k0´¬rrÕ@ê ÀîœU³Ž\ìÏ�¡–ÂyƒhºÔ,š´©�ÉY5ö…¢b¦k�™�»�QhË" C—· A�:öšÛw"‹õ~ÔAÕ…õ\¬‚Hž[ĵ%!ð „SMéA>ÌQ¿{›Žì€a°‘Á_ ¥¹ËA÷q×’ …ðON0R;‰ƒÁ [â”6·v¶úÉ4k<ê=øÚóÀ¼?Ì ¡XË´m¬™û¦Ó¯Ô¶·wø˜m20Æ«Œ’ôÚÖÖV’–Uÿ5]˜Ù ÕØ²“é»gC(’ÈLCÊH)†œæF'×ÉAé�dÇdèx=Œú–F™×b0q5"HÓ‚ß#Óç¦w—Aµ´kÕ·–miÛª·V 5¨¹¨‰Õ5WT§ok{@÷v}o)Ø vØ^]ß.€ÉØUÏ�ì°ïÉâj”Ãı[„f nöz»ý"�œ¼€ÐO9ÌÄ—cl�p;»–¹S'‚!>· ®?hò&/‡s"`/Š#*ÀoîPа½·¨Y…2æ¸ö<é÷‘>u¯ð�žÕïµ—QŸa™%�’~ x—[ú ¿wZDz–A‹À€îõÚ:/¶1 Ì… ’¨TŒ`AØÀö*ÛªÞÚQ›Í�*kü“Rôv[ÝÕ!©Ue¨�ªë-voZq¶—TŽâf³¡ê»�¤ú†ÚlìªúVceí%ü€,à%d4ÛM ¡¦D4¡ô¥|¢²´h&,9©'®¹±£¶¶áÿU5£œPçüÄ_VõÖ®*ÿ¥C¿½ÑRõ½öªêûžç`�SÓ3E˜�—V¸Ó‚ºZ8ÞVÓU½‰#¾WeÍlà€@´â4 ´Õ\±�Œ‘N}·ôï&iPAkWÝYÙ}ÐMÐK¢ÿÖ˜&8PÍÆ6´`;C=PÙê[+ÙDÔFæ€�¨ š ÍÒ·Ûvl©6ü_¥È-U½ÔP·›k3¨×hâ–ªëÍ´‰{{(ô½fZó6ˆ‡]œ¤«ª&ùèõù !@õ¶¨î´Þ] —ôLÅ8ÞÛ;Àúªš¹ƒü6 $ÁòÚMâ½™™ú ¶Þ\ÉFqàvy*ôjs/Á߉§/µŒ^&ZŒMÇ»akY¤ vœ|ÍÆ2(ŠÍ‚5³4è{ƒaà· †ñ7°I5\¹b�Z«åóñ"�-ÙÞYÒ}I~ókí%Û Ñ¬5—�ì ÈVmkw È.€´k�í²Ò5Í5ÃÈ7a ëè˜ñÒeÅäÿµfqãÒçhI£kø«Ý()ÝZTþú“´æ²²kö¢¹ÒÊ×¶šx,þUU ¡… ÷"Ì}ßæ©JK]�¦‚UoÙcîèjÍ6bûŸÝ… È ì †�e`Žuh¢ucO»çY³*;gÒÓf�.‹³�ò ãðD~Pe÷ÙÝ2^©Æè8��ÁÒ|Çj¶ÎÀöƒPë�lÇZ€xp¸”O«§Uˆs&ú„œ-MÂÍILºË8òŽ9®Ñ0è]¤õ¼œÒÕ8RrÏˈ]‰àniÍÔ‚ÏÂ×÷Ü ôMœ×m[ÕU›XÀó¥ZŠ+,Õót }ÛÊâÄ`LÉâÃ7˜Û…lZÏ¡U†¿»bÅ‹Öv:L, ÍÂN³ƒÊ]•YöiñÂ6)@S ð-‡–#;—±›vPTÅÁÈÌ'‰¸b>�VP(¥Ð�s[#TV,ªÎ¯î°BŒH„×€æ8}qRÌsl;ÐtÛ…Zí0ë)$Q82Ÿ61Ç$ÑáaˆQk¡û2陵¡$1×oujä"QÅ~,LûuÑÏeXŠq)–Î`ö¸ÁÀóÇ)ÝbU•"%¹ l~]8U©²Ìr¡ÀQt¨ÖDW,V‚Y,õ®‡Ž`Kp$A™5ñ$ð%¸wuM\ | ®rŸx=¼¥eW×!œÿ+UAEËj(7ÖÄ^(¶°¯?s±Ø"ŽHã@ŸÁI¡…ô~.ÚB©…xãÝMŸ�T)Á(æüêMc_@\§’µåÃu*Y-5®ƒ}=Yr�>_Â\§¶kÉ�/XñÚÒèZu^AF](?Gr]›5?Gž]¿ikK¹ëWµJöeöœg_¾ˆÌ»òõeÝ�¯!㮀uMÙvÌW�iW¨åz²ìú®/îR×Udו‡ê³dÖUYí³dÕ•›²¾ŒºreÓŠÊU»žKê]{ñs>,Y¶¼IëT°î|\´ y=?§¦µeUvÕóK’W‚¾ŒÇV¯‡^�ÏVã/Ó¡eˤע£c©=P\à¼VµóèÖ/s~�úbTËx6¿»!¦EržÖ1¯UMЦ¤ŽüŠåµêÉ£*©kÝÃ&Kk‰‘”à§5ËÒƒ%‹k�eôÒò抂e¼ƒkœW@HåJð�]ãYÎÂŽ»E;æ [ìÒÓÈrÄyx·ÜÝ™N¼Ü‚9‡X8>¥¼øìw·ÓÉ‹zßì�8$x0ì®=˜Õõ�½ÆÎnso»Yãa�ÉŒ«ìòf»½ÛŽwÞa´±Ô¸£\½‚bý�¡¸[}]ßÛš£X¯5>“âæCqß´ÚÍÞ[ÜÇ·5�½š„öØÍbS;±__³<2ØéVUÓ÷˜Æbñì ²i@‡ì'N4´]¬æ–¨3M»/èûö$d–šÀ×"Gs=OVc( ’¸Âî糓À8W†€Zé`¦ª€\wÌ™Òi¨ Ôçx¦çÀ+ô‰B,N‘‹,P‰éÚcZæó&“8íTé(¢e Tăð$òH�|_??ï±�Ï}_W.»•JÕ¸ú³s—OÙ‹(¤:_õîƒPD.�ºªTÏ/«*‚¼ö½±ðBΫÞhE ·ÇÝÊù¥Š‰–×��⚸ Íjሻù—}3ì�Î<§-:в<ùeèŠj ÇçâkÈjª]c±Jýhã¸P°^½¸¨x†ÅktnçÕ ¢ì+UÃÐôýLÒ÷2É3ìMÈß:ðtN³Ï1[¥ÔMì,*·QZn#.§–ÓoxÕKdš@µU¯{YT»·PÄ¿ÏwbøÑ©¡˜–up 5=·ƒ·u+*Þ(àó±wÊ‹†2äჴg/ ¹¢>7” —0HŠf (�L›ÐP~�À^|KºØÔ?oÂMå�ã(êKºÏ€»Ö#\/VÔÇ(åûÔ�‡XC~ x[Q@ÓÌáKsÈßr¢òÕÔ¦›p?œ=æ¢c°žÝœzxo‚¢~2”“Çó>F“'´òwr¢¨xEGœú6M5”ǯ^<Âè9LG¤…f¦úКC�wÞTQ‡€€û>T×Å>vŒ)ð€7Uû WªO¸Ñ¯Åo²üÂÀ%oÏá5Â@iÿæÆí†úm$?KâvL„pdµ�®7u�£ãK¼2²PuÕÀ¨øª‰cm*ÿæ>ü_¸·ýÚI"yDÏHæ—]=÷yù.³ Ãð÷±’N¥tz\«¢«õA€Vúª¯ZªòágË^ÿ£R… ŒÐÕËnJYm¦jåÈW±n1¡Å#’»_KÆc_äW3€†·tc£’䦙qIÄ“¶úðR¶Ê¿ìŠ!© Ò/.äë±H²ø Œˆ˜�*r eKõ¬’tRx©âAIèÇÐ Çc°ê¥ ƒE‡VP¾t€€êŠ ~(âvÜ®ÀýC)ÚËÈCÿç¨ J³R9"f8&™�ö¬«†Ëz6€Î vn€#�Œ©_^“Ž€éOn¡›Lâ&E=•Y$êf “'Ð4p�9J—@L’ÿ“0ñ~GΰG2�N Iò/"Ôîõ(>ày˜P}ϸÜxV+ ¸Z2+Ϫ*!·DÐ% /ˤٌ¥àë°(ßqãH ½¨?¢-* Ùé1ÅÏH¶|ì›nŸƒàS>òP =¦LÁpr”c5Ñ|/ŽGm!C