]> git.mxchange.org Git - friendica.git/blobdiff - include/like.php
provide local time for notifications
[friendica.git] / include / like.php
index 646e0727be4ec63f09773ed6fddea299ed635db0..e997e05d6b0e43601d6924dd1bf23ebec532915c 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,7 +78,7 @@ 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 +90,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 +112,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 +135,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 +152,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,9 +161,9 @@ 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 );
+       $objtype = (($item['resource-id']) ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE );
        $link = xmlify('<link rel="alternate" type="text/html" href="' . $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . '" />' . "\n") ;
        $body = $item['body'];
 
@@ -196,6 +194,7 @@ EOT;
 
        $arr = array();
 
+       $arr['guid'] = get_guid(32);
        $arr['uri'] = $uri;
        $arr['uid'] = $owner_uid;
        $arr['contact-id'] = $contact['id'];
@@ -240,159 +239,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;
-
-               // This code could never had worked (the return values form the queries were used in a wrong way.
-               // Additionally it is needlessly complicated. Either the contact is owner or not. And we have this data already.
-/*
-               // 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)
-                       );
-*/
-               // Is the contact the owner? Then fetch the private key
-               if ($contact['self'] AND ($contact['uid'] > 0)) {
-                       $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1",
-                               intval($contact['uid'])
-                       );
-
-                       if($r)
-                               $authorsig = base64_encode(rsa_sign($signed_text,$r[0]['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;
-
-
-               // This code could never had worked (the return values form the queries were used in a wrong way.
-               // Additionally it is needlessly complicated. Either the contact is owner or not. And we have this data already.
-/*
-               // 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'];
-               }
-*/
-
-               // Is the contact the owner? Then fetch the private key
-               if ($contact['self'] AND ($contact['uid'] > 0)) {
-                       $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1",
-                               intval($contact['uid'])
-                       );
-
-                       if($r)
-                               $contact_uprvkey = $r[0]['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 = 'true;'.$r[0]['guid'].';Post;'.$p[0]['guid'].';'.$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;
-}