]> git.mxchange.org Git - friendica.git/blobdiff - include/like.php
added much more curly braces + space between "if" and brace
[friendica.git] / include / like.php
index 6aef0cb5b8b3b4421e8ac25c764def3a0ac1d764..8223cf3626080ec9803ac0fb8f8819ffb13012da 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+require_once("include/diaspora.php");
 
 /**
  * @brief add/remove activity to an item
@@ -56,7 +57,7 @@ function do_like($item_id, $verb) {
                dbesc($item_id)
        );
 
-       if(! $item_id || (! count($r))) {
+       if(! $item_id || (! dbm::is_result($r))) {
                logger('like: no item ' . $item_id);
                return false;
        }
@@ -77,8 +78,9 @@ function do_like($item_id, $verb) {
                        intval($item['contact-id']),
                        intval($item['uid'])
                );
-               if(! count($r))
+               if (! dbm::is_result($r)) {
                        return false;
+               }
                if(! $r[0]['self'])
                        $remote_owner = $r[0];
        }
@@ -89,7 +91,7 @@ function do_like($item_id, $verb) {
                WHERE `contact`.`self` = 1 AND `contact`.`uid` = %d LIMIT 1",
                intval($owner_uid)
        );
-       if(count($r))
+       if (dbm::is_result($r))
                $owner = $r[0];
 
        if(! $owner) {
@@ -111,7 +113,7 @@ function do_like($item_id, $verb) {
                        intval($_SESSION['visitor_id']),
                        intval($owner_uid)
                );
-               if(count($r))
+               if (dbm::is_result($r))
                        $contact = $r[0];
        }
        if(! $contact) {
@@ -134,7 +136,7 @@ function do_like($item_id, $verb) {
                dbesc($item_id), dbesc($item_id), dbesc($item['uri'])
        );
 
-       if(count($r)) {
+       if (dbm::is_result($r)) {
                $like_item = $r[0];
 
                // Already voted, undo it
@@ -151,11 +153,8 @@ function do_like($item_id, $verb) {
                        intval($like_item['id'])
                );
 
-               // Save the author information for the unlike in case we need to relay to Diaspora
-               store_diaspora_like_retract_sig($activity, $item, $like_item, $contact);
-
                $like_item_id = $like_item['id'];
-               proc_run('php',"include/notifier.php","like","$like_item_id");
+               proc_run(PRIORITY_HIGH, "include/notifier.php", "like", $like_item_id);
 
                return true;
        }
@@ -163,10 +162,10 @@ function do_like($item_id, $verb) {
        $uri = item_new_uri($a->get_hostname(),$owner_uid);
 
        $post_type = (($item['resource-id']) ? t('photo') : t('status'));
-       if($item['obj_type'] === ACTIVITY_OBJ_EVENT)
+       if($item['object-type'] === ACTIVITY_OBJ_EVENT)
                $post_type = t('event');
        $objtype = (($item['resource-id']) ? ACTIVITY_OBJ_PHOTO : ACTIVITY_OBJ_NOTE );
-       $link = xmlify('<link rel="alternate" type="text/html" href="' . $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . '" />' . "\n") ;
+       $link = xmlify('<link rel="alternate" type="text/html" href="' . App::get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . '" />' . "\n") ;
        $body = $item['body'];
 
        $obj = <<< EOT
@@ -196,6 +195,7 @@ EOT;
 
        $arr = array();
 
+       $arr['guid'] = get_guid(32);
        $arr['uri'] = $uri;
        $arr['uid'] = $owner_uid;
        $arr['contact-id'] = $contact['id'];
@@ -215,7 +215,7 @@ EOT;
 
        $ulink = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]';
        $alink = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]';
-       $plink = '[url=' . $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . ']' . $post_type . '[/url]';
+       $plink = '[url=' . App::get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . ']' . $post_type . '[/url]';
        $arr['body'] =  sprintf( $bodyverb, $ulink, $alink, $plink );
 
        $arr['verb'] = $activity;
@@ -240,135 +240,13 @@ EOT;
 
 
        // Save the author information for the like in case we need to relay to Diaspora
-       store_diaspora_like_sig($activity, $post_type, $contact, $post_id);
+       diaspora::store_like_signature($contact, $post_id);
 
        $arr['id'] = $post_id;
 
        call_hooks('post_local_end', $arr);
 
-       proc_run('php',"include/notifier.php","like","$post_id");
+       proc_run(PRIORITY_HIGH, "include/notifier.php", "like", $post_id);
 
        return true;
 }
-
-
-
-function store_diaspora_like_retract_sig($activity, $item, $like_item, $contact) {
-       // Note that we can only create a signature for a user of the local server. We don't have
-       // a key for remote users. That is ok, because if a remote user is "unlike"ing a post, it
-       // means we are the relay, and for relayable_retractions, Diaspora
-       // only checks the parent_author_signature if it doesn't have to relay further
-       //
-       // If $item['resource-id'] exists, it means the item is a photo. Diaspora doesn't support
-       // likes on photos, so don't bother.
-
-       $enabled = intval(get_config('system','diaspora_enabled'));
-       if(! $enabled) {
-               logger('mod_like: diaspora support disabled, not storing like retraction signature', LOGGER_DEBUG);
-               return;
-       }
-
-       logger('mod_like: storing diaspora like retraction signature');
-
-       if(($activity === ACTIVITY_LIKE) && (! $item['resource-id'])) {
-               $signed_text = $like_item['guid'] . ';' . 'Like';
-
-               // Only works for NETWORK_DFRN
-               $contact_baseurl_start = strpos($contact['url'],'://') + 3;
-               $contact_baseurl_length = strpos($contact['url'],'/profile') - $contact_baseurl_start;
-               $contact_baseurl = substr($contact['url'], $contact_baseurl_start, $contact_baseurl_length);
-               $diaspora_handle = $contact['nick'] . '@' . $contact_baseurl;
-
-               // Get contact's private key if he's a user of the local Friendica server
-               $r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1",
-                       dbesc($contact['url'])
-               );
-
-               if( $r) {
-                       $contact_uid = $r['uid'];
-                       $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1",
-                               intval($contact_uid)
-                       );
-
-                       if( $r)
-                               $authorsig = base64_encode(rsa_sign($signed_text,$r['prvkey'],'sha256'));
-               }
-
-               if(! isset($authorsig))
-                       $authorsig = '';
-
-               q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
-                       intval($like_item['id']),
-                       dbesc($signed_text),
-                       dbesc($authorsig),
-                       dbesc($diaspora_handle)
-               );
-       }
-
-       return;
-}
-
-function store_diaspora_like_sig($activity, $post_type, $contact, $post_id) {
-       // Note that we can only create a signature for a user of the local server. We don't have
-       // a key for remote users. That is ok, because if a remote user is "unlike"ing a post, it
-       // means we are the relay, and for relayable_retractions, Diaspora
-       // only checks the parent_author_signature if it doesn't have to relay further
-
-       $enabled = intval(get_config('system','diaspora_enabled'));
-       if(! $enabled) {
-               logger('mod_like: diaspora support disabled, not storing like signature', LOGGER_DEBUG);
-               return;
-       }
-
-       logger('mod_like: storing diaspora like signature');
-
-       if(($activity === ACTIVITY_LIKE) && ($post_type === t('status'))) {
-               // Only works for NETWORK_DFRN
-               $contact_baseurl_start = strpos($contact['url'],'://') + 3;
-               $contact_baseurl_length = strpos($contact['url'],'/profile') - $contact_baseurl_start;
-               $contact_baseurl = substr($contact['url'], $contact_baseurl_start, $contact_baseurl_length);
-               $diaspora_handle = $contact['nick'] . '@' . $contact_baseurl;
-
-               // Get contact's private key if he's a user of the local Friendica server
-               $r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1",
-                       dbesc($contact['url'])
-               );
-
-               if( $r) {
-                       $contact_uid = $r['uid'];
-                       $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1",
-                               intval($contact_uid)
-                       );
-
-                       if( $r)
-                               $contact_uprvkey = $r['prvkey'];
-               }
-
-               $r = q("SELECT guid, parent FROM `item` WHERE id = %d LIMIT 1",
-                       intval($post_id)
-               );
-               if( $r) {
-                       $p = q("SELECT guid FROM `item` WHERE id = %d AND parent = %d LIMIT 1",
-                               intval($r[0]['parent']),
-                               intval($r[0]['parent'])
-                       );
-                       if( $p) {
-                               $signed_text = $r[0]['guid'] . ';Post;' . $p[0]['guid'] . ';true;' . $diaspora_handle;
-
-                               if(isset($contact_uprvkey))
-                                       $authorsig = base64_encode(rsa_sign($signed_text,$contact_uprvkey,'sha256'));
-                               else
-                                       $authorsig = '';
-
-                               q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
-                                       intval($post_id),
-                                       dbesc($signed_text),
-                                       dbesc($authorsig),
-                                       dbesc($diaspora_handle)
-                               );
-                       }
-               }
-       }
-
-       return;
-}