diff --git a/widgets/widget_friends.php b/widgets/widget_friends.php
index 2286f68ca..fc7d7aa98 100644
--- a/widgets/widget_friends.php
+++ b/widgets/widget_friends.php
@@ -23,8 +23,13 @@ function friends_widget_content(&$a, $conf){
$o = "";
$o .= "";
$o .= _abs_url(contact_block());
$o .= "profile['nickname']."'>". t('Connect on Friendika!') ."";
diff --git a/widgets/widget_like.php b/widgets/widget_like.php
index 6927d4324..b60d2d94d 100644
--- a/widgets/widget_like.php
+++ b/widgets/widget_like.php
@@ -14,9 +14,49 @@ function like_widget_args(){
function like_widget_content(&$a, $conf){
$args = explode(",",$_GET['a']);
- if ($args[0]!=""){
- return " #TODO like/dislike count for item with " .$args[0]. " # ";
- } else {
- return " #TODO# ";
- }
+
+ $baseq="SELECT COUNT(`item`.`id`) as `c`, `p`.`id`
+ FROM `item`,
+ (SELECT `i`.`id` FROM `item` as `i` WHERE
+ `i`.`visible` = 1 AND `i`.`deleted` = 0
+ AND (( `i`.`wall` = 1 AND `i`.`allow_cid` = ''
+ AND `i`.`allow_gid` = ''
+ AND `i`.`deny_cid` = ''
+ AND `i`.`deny_gid` = '' )
+ OR `i`.`uid` = %d )
+ AND `i`.`body` LIKE '%%%s%%' LIMIT 1) as `p`
+ WHERE `item`.`parent` = `p`.`id` ";
+
+ // count likes
+ $r = q( $baseq . "AND `item`.`verb` = 'http://activitystrea.ms/schema/1.0/like'",
+ intval($conf['uid']),
+ dbesc($args[0])
+ );
+ $likes = $r[0]['c'];
+ $iid = $r[0]['id'];
+
+ // count dislikes
+ $r = q( $baseq . "AND `item`.`verb` = 'http://purl.org/macgirvin/dfrn/1.0/dislike'",
+ intval($conf['uid']),
+ dbesc($args[0])
+ );
+ $dislikes = $r[0]['c'];
+
+
+ require_once("include/conversation.php");
+
+ $o = "";
+
+ $t = file_get_contents( dirname(__file__). "/widget_like.tpl" );
+ $o .= replace_macros($t, array(
+ '$like' => $likes,
+ '$strlike' => sprintf( tt("%d person likes this", "%d people like this", $likes), $likes),
+
+ '$dislike' => $dislikes,
+ '$strdislike'=> sprintf( tt("%d person doesn't like this", "%d people don't like this", $dislikes), $dislikes),
+
+ '$baseurl' => $a->get_baseurl(),
+ ));
+
+ return $o;
}
diff --git a/widgets/widget_like.tpl b/widgets/widget_like.tpl
new file mode 100644
index 000000000..e43e7a540
--- /dev/null
+++ b/widgets/widget_like.tpl
@@ -0,0 +1,2 @@
+$like
+$dislike
diff --git a/widgets/widgets.js b/widgets/widgets.js
index 45d36c4d7..e6382d711 100644
--- a/widgets/widgets.js
+++ b/widgets/widgets.js
@@ -22,11 +22,13 @@ var f9a_widget_$widget_id = {
dorequest : function(args, cb) {
if (args===null) args = new Array();
args['k']=this.key;
- args['s']=window.location;
+ args['s']=window.location.href;
args['a']=this.argstr;
var urlencodedargs = new Array();
- for(k in args){ urlencodedargs.push( encodeURIComponent(k)+"="+encodeURIComponent(args[k]) ); }
-
+ for(k in args){
+ if (typeof args[k] != 'function')
+ urlencodedargs.push( encodeURIComponent(k)+"="+encodeURIComponent(args[k]) );
+ }
var url = this.entrypoint + "?"+ urlencodedargs.join("&");
this.xmlhttp.open("GET", url ,true);
diff --git a/widgets/widgets.php b/widgets/widgets.php
index 13c4f93bb..cedaea34b 100644
--- a/widgets/widgets.php
+++ b/widgets/widgets.php
@@ -40,8 +40,10 @@ function widgets_settings(&$a,&$o) {
if(substr($f,0,7)=="widget_") {
preg_match("|widget_([^.]+).php|", $f, $m);
$w=$m[1];
- require_once($f);
- $widgets[] = array($w, call_user_func($w."_widget_name"));
+ if ($w!=""){
+ require_once($f);
+ $widgets[] = array($w, call_user_func($w."_widget_name"));
+ }
}
}
@@ -104,13 +106,7 @@ function widgets_content(&$a) {
//echo "
"; var_dump($a->argv); die(); if ($a->argv[2]=="cb"){ - /*if (!local_user()){ - if (!isset($_GET['s'])) - {header('HTTP/1.0 400 Bad Request'); killme();} - - if (substr($_GET['s'],0,strlen($conf['site'])) !== $conf['site']) - {header('HTTP/1.0 400 Bad Request'); killme();} - } */ + header('Access-Control-Allow-Origin: *'); $o .= call_user_func($a->argv[1].'_widget_content',$a, $conf); } else { @@ -136,14 +132,15 @@ function widgets_content(&$a) { $o .= replace_macros($script, array( '$entrypoint' => $a->get_baseurl()."/widgets/".$a->argv[1]."/cb/", '$key' => $conf['key'], - '$widget_id' => 'f9k_'.$a->argv[1]."_".time(), + '$widget_id' => 'f9a_'.$a->argv[1]."_". ceil(microtime(true)*100), '$loader' => $a->get_baseurl()."/images/rotator.gif", '$args' => (isset($_GET['a'])?$_GET['a']:''), )); if (isset($_GET['p'])) { - $jsargs = implode(",", call_user_func($a->argv[1].'_widget_args')); + $wargs = call_user_func($a->argv[1].'_widget_args'); + $jsargs = implode(",", $wargs); if ($jsargs!='') $jsargs = "&a=".$jsargs.""; $o .= " @@ -155,6 +152,8 @@ function widgets_content(&$a) { .$jsargs .htmlspecialchars('">') .""; + + return $o; }