]> git.mxchange.org Git - friendica.git/blobdiff - include/items.php
Requests for soapbox and freelove accounts are automatically accepted
[friendica.git] / include / items.php
index ebda49e9ad10a53b0ead36c48b977b67af540cd9..65d66b77a17801e597fe54bdba71907d508716e4 100644 (file)
@@ -2381,85 +2381,45 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                $contact_updated = $photo_timestamp;
 
                require_once("include/Photo.php");
-               $photo_failure = false;
-               $have_photo = false;
+               $photos = import_profile_photo($photo_url,$contact['uid'],$contact['id']);
 
-               $r = q("SELECT `resource-id` FROM `photo` WHERE `contact-id` = %d AND `uid` = %d LIMIT 1",
-                       intval($contact['id']),
-                       intval($contact['uid'])
+               q("UPDATE `contact` SET `avatar-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s'
+                       WHERE `uid` = %d AND `id` = %d AND NOT `self`",
+                       dbesc(datetime_convert()),
+                       dbesc($photos[0]),
+                       dbesc($photos[1]),
+                       dbesc($photos[2]),
+                       intval($contact['uid']),
+                       intval($contact['id'])
                );
-               if(count($r)) {
-                       $resource_id = $r[0]['resource-id'];
-                       $have_photo = true;
-               }
-               else {
-                       $resource_id = photo_new_resource();
-               }
-
-               $img_str = fetch_url($photo_url,true);
-               // guess mimetype from headers or filename
-               $type = guess_image_type($photo_url,true);
-
-
-               $img = new Photo($img_str, $type);
-               if($img->is_valid()) {
-                       if($have_photo) {
-                               q("DELETE FROM `photo` WHERE `resource-id` = '%s' AND `contact-id` = %d AND `uid` = %d",
-                                       dbesc($resource_id),
-                                       intval($contact['id']),
-                                       intval($contact['uid'])
-                               );
-                       }
-
-                       $img->scaleImageSquare(175);
-
-                       $hash = $resource_id;
-                       $r = $img->store($contact['uid'], $contact['id'], $hash, basename($photo_url), 'Contact Photos', 4);
-
-                       $img->scaleImage(80);
-                       $r = $img->store($contact['uid'], $contact['id'], $hash, basename($photo_url), 'Contact Photos', 5);
-
-                       $img->scaleImage(48);
-                       $r = $img->store($contact['uid'], $contact['id'], $hash, basename($photo_url), 'Contact Photos', 6);
-
-                       $a = get_app();
-
-                       q("UPDATE `contact` SET `avatar-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s'
-                               WHERE `uid` = %d AND `id` = %d",
-                               dbesc(datetime_convert()),
-                               dbesc($a->get_baseurl() . '/photo/' . $hash . '-4.'.$img->getExt()),
-                               dbesc($a->get_baseurl() . '/photo/' . $hash . '-5.'.$img->getExt()),
-                               dbesc($a->get_baseurl() . '/photo/' . $hash . '-6.'.$img->getExt()),
-                               intval($contact['uid']),
-                               intval($contact['id'])
-                       );
-               }
        }
 
        if((is_array($contact)) && ($name_updated) && (strlen($new_name)) && ($name_updated > $contact['name-date'])) {
                if ($name_updated > $contact_updated)
                        $contact_updated = $name_updated;
 
-               $r = q("select * from contact where uid = %d and id = %d limit 1",
+               $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `id` = %d LIMIT 1",
                        intval($contact['uid']),
                        intval($contact['id'])
                );
 
-               $x = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `uid` = %d AND `id` = %d",
+               $x = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `uid` = %d AND `id` = %d AND `name` != '%s' AND NOT `self`",
                        dbesc(notags(trim($new_name))),
                        dbesc(datetime_convert()),
                        intval($contact['uid']),
-                       intval($contact['id'])
+                       intval($contact['id']),
+                       dbesc(notags(trim($new_name)))
                );
 
                // do our best to update the name on content items
 
-               if(count($r)) {
-                       q("update item set `author-name` = '%s' where `author-name` = '%s' and `author-link` = '%s' and uid = %d",
+               if(count($r) AND (notags(trim($new_name)) != $r[0]['name'])) {
+                       q("UPDATE `item` SET `author-name` = '%s' WHERE `author-name` = '%s' AND `author-link` = '%s' AND `uid` = %d AND `author-name` != '%s'",
                                dbesc(notags(trim($new_name))),
                                dbesc($r[0]['name']),
                                dbesc($r[0]['url']),
-                               intval($contact['uid'])
+                               intval($contact['uid']),
+                               dbesc(notags(trim($new_name)))
                        );
                }
        }
@@ -3119,85 +3079,46 @@ function local_delivery($importer,$data) {
 
                logger('local_delivery: Updating photo for ' . $importer['name']);
                require_once("include/Photo.php");
-               $photo_failure = false;
-               $have_photo = false;
-
-               $r = q("SELECT `resource-id` FROM `photo` WHERE `contact-id` = %d AND `uid` = %d LIMIT 1",
-                       intval($importer['id']),
-                       intval($importer['importer_uid'])
-               );
-               if(count($r)) {
-                       $resource_id = $r[0]['resource-id'];
-                       $have_photo = true;
-               }
-               else {
-                       $resource_id = photo_new_resource();
-               }
-
-               $img_str = fetch_url($photo_url,true);
-               // guess mimetype from headers or filename
-               $type = guess_image_type($photo_url,true);
-
-
-               $img = new Photo($img_str, $type);
-               if($img->is_valid()) {
-                       if($have_photo) {
-                               q("DELETE FROM `photo` WHERE `resource-id` = '%s' AND `contact-id` = %d AND `uid` = %d",
-                                       dbesc($resource_id),
-                                       intval($importer['id']),
-                                       intval($importer['importer_uid'])
-                               );
-                       }
-
-                       $img->scaleImageSquare(175);
-
-                       $hash = $resource_id;
-                       $r = $img->store($importer['importer_uid'], $importer['id'], $hash, basename($photo_url), 'Contact Photos', 4);
 
-                       $img->scaleImage(80);
-                       $r = $img->store($importer['importer_uid'], $importer['id'], $hash, basename($photo_url), 'Contact Photos', 5);
+               $photos = import_profile_photo($photo_url,$importer['importer_uid'],$importer['id']);
 
-                       $img->scaleImage(48);
-                       $r = $img->store($importer['importer_uid'], $importer['id'], $hash, basename($photo_url), 'Contact Photos', 6);
-
-                       $a = get_app();
-
-                       q("UPDATE `contact` SET `avatar-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s'
-                               WHERE `uid` = %d AND `id` = %d",
-                               dbesc(datetime_convert()),
-                               dbesc($a->get_baseurl() . '/photo/' . $hash . '-4.'.$img->getExt()),
-                               dbesc($a->get_baseurl() . '/photo/' . $hash . '-5.'.$img->getExt()),
-                               dbesc($a->get_baseurl() . '/photo/' . $hash . '-6.'.$img->getExt()),
-                               intval($importer['importer_uid']),
-                               intval($importer['id'])
-                       );
-               }
+               q("UPDATE `contact` SET `avatar-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s'
+                       WHERE `uid` = %d AND `id` = %d AND NOT `self`",
+                       dbesc(datetime_convert()),
+                       dbesc($photos[0]),
+                       dbesc($photos[1]),
+                       dbesc($photos[2]),
+                       intval($importer['importer_uid']),
+                       intval($importer['id'])
+               );
        }
 
        if(($name_updated) && (strlen($new_name)) && ($name_updated > $importer['name-date'])) {
                if ($name_updated > $contact_updated)
                        $contact_updated = $name_updated;
 
-               $r = q("select * from contact where uid = %d and id = %d limit 1",
+               $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `id` = %d LIMIT 1",
                        intval($importer['importer_uid']),
                        intval($importer['id'])
                );
 
-               $x = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `uid` = %d AND `id` = %d",
+               $x = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `uid` = %d AND `id` = %d AND `name` != '%s' AND NOT `self`",
                        dbesc(notags(trim($new_name))),
                        dbesc(datetime_convert()),
                        intval($importer['importer_uid']),
-                       intval($importer['id'])
+                       intval($importer['id']),
+                       dbesc(notags(trim($new_name)))
                );
 
                // do our best to update the name on content items
 
-               if(count($r)) {
-                       q("update item set `author-name` = '%s' where `author-name` = '%s' and `author-link` = '%s' and uid = %d",
+               if(count($r) AND (notags(trim($new_name)) != $r[0]['name'])) {
+                       q("UPDATE `item` SET `author-name` = '%s' WHERE `author-name` = '%s' AND `author-link` = '%s' AND `uid` = %d AND `author-name` != '%s'",
                                dbesc(notags(trim($new_name))),
                                dbesc($r[0]['name']),
                                dbesc($r[0]['url']),
-                               intval($importer['importer_uid'])
+                               intval($importer['importer_uid']),
+                               dbesc(notags(trim($new_name)))
                        );
                }
        }
@@ -4250,14 +4171,13 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) {
                        );
                }
                // send email notification to owner?
-       }
-       else {
+       } else {
 
                // create contact record
 
-               $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `name`, `nick`, `photo`, `network`, `rel`,
-                       `blocked`, `readonly`, `pending`, `writable` )
-                       VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, 0, 0, 1, 1 ) ",
+               $r = q("INSERT INTO `contact` (`uid`, `created`, `url`, `nurl`, `name`, `nick`, `photo`, `network`, `rel`,
+                       `blocked`, `readonly`, `pending`, `writable`)
+                       VALUES (%d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, 0, 0, 1, 1)",
                        intval($importer['uid']),
                        dbesc(datetime_convert()),
                        dbesc($url),
@@ -4272,27 +4192,38 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) {
                                intval($importer['uid']),
                                dbesc($url)
                );
-               if(count($r))
+               if(count($r)) {
                                $contact_record = $r[0];
 
-               // create notification
-               $hash = random_string();
+                               $photos = import_profile_photo($photo,$importer["uid"],$contact_record["id"]);
 
-               if(is_array($contact_record)) {
-                       $ret = q("INSERT INTO `intro` ( `uid`, `contact-id`, `blocked`, `knowyou`, `hash`, `datetime`)
-                               VALUES ( %d, %d, 0, 0, '%s', '%s' )",
-                               intval($importer['uid']),
-                               intval($contact_record['id']),
-                               dbesc($hash),
-                               dbesc(datetime_convert())
-                       );
+                               q("UPDATE `contact` SET `photo` = '%s', `thumb` = '%s', `micro` = '%s' WHERE `id` = %d",
+                                       dbesc($photos[0]),
+                                       dbesc($photos[1]),
+                                       dbesc($photos[2]),
+                                       intval($contact_record["id"])
+                               );
                }
 
+
                $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
                        intval($importer['uid'])
                );
                $a = get_app();
-               if(count($r)) {
+               if(count($r) AND !in_array($r[0]['page-flags'], array(PAGE_SOAPBOX, PAGE_FREELOVE))) {
+
+                       // create notification
+                       $hash = random_string();
+
+                       if(is_array($contact_record)) {
+                               $ret = q("INSERT INTO `intro` ( `uid`, `contact-id`, `blocked`, `knowyou`, `hash`, `datetime`)
+                                       VALUES ( %d, %d, 0, 0, '%s', '%s' )",
+                                       intval($importer['uid']),
+                                       intval($contact_record['id']),
+                                       dbesc($hash),
+                                       dbesc(datetime_convert())
+                               );
+                       }
 
                        if(intval($r[0]['def_gid'])) {
                                require_once('include/group.php');
@@ -4300,7 +4231,7 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) {
                        }
 
                        if(($r[0]['notify-flags'] & NOTIFY_INTRO) &&
-                               in_array($r[0]['page-flags'], array(PAGE_NORMAL, PAGE_SOAPBOX, PAGE_FREELOVE))) {
+                               in_array($r[0]['page-flags'], array(PAGE_NORMAL))) {
 
                                notification(array(
                                        'type'         => NOTIFY_INTRO,
@@ -4318,7 +4249,13 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) {
                                ));
 
                        }
+               } elseif (count($r) AND in_array($r[0]['page-flags'], array(PAGE_SOAPBOX, PAGE_FREELOVE))) {
+                       $r = q("UPDATE `contact` SET `pending` = 0 WHERE `uid` = %d AND `url` = '%s' AND `pending` LIMIT 1",
+                                       intval($importer['uid']),
+                                       dbesc($url)
+                       );
                }
+
        }
 }
 
@@ -4558,7 +4495,8 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) {
        //$o .= "\t".'<link rel="self" type="application/atom+xml" href="'.xmlify($a->get_baseurl().'/api/statuses/show/'.$item['id'].'.atom').'"/>'."\r\n";
        //$o .= "\t".'<link rel="edit" type="application/atom+xml" href="'.xmlify($a->get_baseurl().'/api/statuses/show/'.$item['id'].'.atom').'"/>'."\r\n";
 
-       $o .= item_get_attachment($item);
+       // Deactivated since it was meant only for OStatus
+       //$o .= item_get_attachment($item);
 
        $o .= item_getfeedattach($item);
 
@@ -4723,7 +4661,7 @@ function item_getfeedtags($item) {
        if($cnt) {
                for($x = 0; $x < $cnt; $x ++) {
                        if($matches[1][$x])
-                               $ret[] = array('#',$matches[1][$x], $matches[2][$x]);
+                               $ret[$matches[2][$x]] = array('#',$matches[1][$x], $matches[2][$x]);
                }
        }
        $matches = false;