]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #1048 from tobiasd/20140711
authortobiasd <tobias.diekershoff@gmx.net>
Thu, 24 Jul 2014 06:40:02 +0000 (08:40 +0200)
committertobiasd <tobias.diekershoff@gmx.net>
Thu, 24 Jul 2014 06:40:02 +0000 (08:40 +0200)
initialize intErrorCode / mobile themes

include/Photo.php
include/bbcode.php
include/diaspora.php
include/items.php
include/network.php
include/onepoll.php
include/plaintext.php
include/text.php
mod/community.php
mod/parse_url.php

index d20dd2ca085a87954e50e288c5252066617da982..fc2ce149c4b62fc6b4e6a065f3a41d15a5ae69b8 100644 (file)
@@ -824,3 +824,147 @@ function scale_image($width, $height, $max) {
        }
        return array("width" => $dest_width, "height" => $dest_height);
 }
+
+function store_photo($a, $uid, $imagedata = "", $url = "") {
+       $r = q("SELECT `user`.`nickname`, `user`.`page-flags`, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid`
+               WHERE `user`.`uid` = %d AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
+               intval($uid));
+
+       if(!count($r)) {
+               logger("Can't detect user data for uid ".$uid, LOGGER_DEBUG);
+               return(array());
+       }
+
+       $page_owner_nick  = $r[0]['nickname'];
+
+//     To-Do:
+//     $default_cid      = $r[0]['id'];
+//     $community_page   = (($r[0]['page-flags'] == PAGE_COMMUNITY) ? true : false);
+
+       if ((strlen($imagedata) == 0) AND ($url == "")) {
+               logger("No image data and no url provided", LOGGER_DEBUG);
+               return(array());
+       } elseif (strlen($imagedata) == 0) {
+               logger("Uploading picture from ".$url, LOGGER_DEBUG);
+               $imagedata = @file_get_contents($url);
+       }
+
+       $maximagesize = get_config('system','maximagesize');
+
+        if(($maximagesize) && (strlen($imagedata) > $maximagesize)) {
+               logger("Image exceeds size limit of ".$maximagesize, LOGGER_DEBUG);
+               return(array());
+        }
+
+/*
+        $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ",
+                intval($uid)
+        );
+
+        $limit = service_class_fetch($uid,'photo_upload_limit');
+
+        if(($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) {
+               logger("Image exceeds personal limit of uid ".$uid, LOGGER_DEBUG);
+               return(array());
+        }
+*/
+
+       $tempfile = tempnam(get_temppath(), "cache");
+       file_put_contents($tempfile, $imagedata);
+       $data = getimagesize($tempfile);
+
+       if (!isset($data["mime"])) {
+               unlink($tempfile);
+               logger("File is no picture", LOGGER_DEBUG);
+               return(array());
+       }
+
+       $ph = new Photo($imagedata, $data["mime"]);
+
+       if(!$ph->is_valid()) {
+               unlink($tempfile);
+               logger("Picture is no valid picture", LOGGER_DEBUG);
+               return(array());
+       }
+
+       $ph->orient($tempfile);
+       unlink($tempfile);
+
+       $max_length = get_config('system','max_image_length');
+       if(! $max_length)
+               $max_length = MAX_IMAGE_LENGTH;
+       if($max_length > 0)
+               $ph->scaleImage($max_length);
+
+       $width = $ph->getWidth();
+       $height = $ph->getHeight();
+
+       $hash = photo_new_resource();
+
+       $smallest = 0;
+
+       // Pictures are always public by now
+       //$defperm = '<'.$default_cid.'>';
+       $defperm = "";
+       $visitor   = 0;
+
+       $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 0, 0, $defperm);
+
+       if(!$r) {
+               logger("Picture couldn't be stored", LOGGER_DEBUG);
+               return(array());
+       }
+
+       $image = array("page" => $a->get_baseurl().'/photos/'.$page_owner_nick.'/image/'.$hash,
+                       "full" => $a->get_baseurl()."/photo/{$hash}-0.".$ph->getExt());
+
+       if($width > 800 || $height > 800)
+               $image["large"] = $a->get_baseurl()."/photo/{$hash}-0.".$ph->getExt();
+
+       if($width > 640 || $height > 640) {
+               $ph->scaleImage(640);
+               $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 1, 0, $defperm);
+               if($r)
+                       $image["medium"] = $a->get_baseurl()."/photo/{$hash}-1.".$ph->getExt();
+       }
+
+       if($width > 320 || $height > 320) {
+               $ph->scaleImage(320);
+               $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 2, 0, $defperm);
+               if($r)
+                       $image["small"] = $a->get_baseurl()."/photo/{$hash}-2.".$ph->getExt();
+       }
+
+       if($width > 160 AND $height > 160) {
+               $x = 0;
+               $y = 0;
+
+               $min = $ph->getWidth();
+               if ($min > 160)
+                       $x = ($min - 160) / 2;
+
+               if ($ph->getHeight() < $min) {
+                       $min = $ph->getHeight();
+                       if ($min > 160)
+                               $y = ($min - 160) / 2;
+               }
+
+               $min = 160;
+               $ph->cropImage(160, $x, $y, $min, $min);
+
+               $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 3, 0, $defperm);
+               if($r)
+                       $image["thumb"] = $a->get_baseurl()."/photo/{$hash}-3.".$ph->getExt();
+       }
+
+       if (isset($image["thumb"]))
+               $image["preview"] = $image["thumb"];
+
+       if (isset($image["small"]))
+               $image["preview"] = $image["small"];
+
+       if (isset($image["medium"]))
+               $image["preview"] = $image["medium"];
+
+       return($image);
+}
index cea1dbdccc6999bf4c1f18d317f88cab32cd6cc6..84969dab9ffb14703347d48a1c5aa9ad099bd6c6 100644 (file)
@@ -488,10 +488,10 @@ function bb_ShareAttributes($share, $simplehtml) {
                        $text = $preshare."&gt;&gt; @".$userid_compact.": <br />".$share[3];
                        break;
                case 7:
-                       $text = $preshare.html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8')." @".$userid_compact." ".$share[3];
+                       $text = $preshare.html_entity_decode("&#x2672; ", ENT_QUOTES, 'UTF-8')." @".$userid_compact.": ".$share[3];
                        break;
                case 8:
-                       $text = $preshare."RT @".$userid_compact." ".$share[3];
+                       $text = $preshare."RT @".$userid_compact.": ".$share[3];
                        break;
                default:
                        $headline = trim($share[1]).'<div class="shared_header">';
@@ -525,8 +525,12 @@ function GetProfileUsername($profile, $username, $compact = false) {
        }
 
        $gplus = preg_replace("=https?://plus.google.com/(.*)=ism", "$1@plus.google.com", $profile);
-       if ($gplus != $profile)
-               return($username." (".$gplus.")");
+       if ($gplus != $profile) {
+               if ($compact)
+                       return($gplususername." (".$username.")");
+               else
+                       return($username." (".$gplus.")");
+       }
 
        $friendica = preg_replace("=https?://(.*)/profile/(.*)=ism", "$2@$1", $profile);
        if ($friendica != $profile) {
index 6df7f4baf82510f9ef636e2ece4ed0bc6c2e297a..72f91ee56e6d509ffaa9c243a4fdb92e80d71b10 100755 (executable)
@@ -872,7 +872,8 @@ function diaspora_post($importer,$xml,$msg) {
        $datarray['uid'] = $importer['uid'];
        $datarray['contact-id'] = $contact['id'];
        $datarray['wall'] = 0;
-       $datarray['network']  = NETWORK_DIASPORA;
+       $datarray['network'] = NETWORK_DIASPORA;
+       $datarray['verb'] = ACTIVITY_POST;
        $datarray['guid'] = $guid;
        $datarray['uri'] = $datarray['parent-uri'] = $message_id;
        $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created);
@@ -1346,6 +1347,7 @@ function diaspora_comment($importer,$xml,$msg) {
        $datarray['type'] = 'remote-comment';
        $datarray['wall'] = $parent_item['wall'];
        $datarray['network']  = NETWORK_DIASPORA;
+       $datarray['verb'] = ACTIVITY_POST;
        $datarray['gravity'] = GRAVITY_COMMENT;
        $datarray['guid'] = $guid;
        $datarray['uri'] = $message_id;
index d71c0e2031a21270cd888e45ffb7b53e4812587a..8e99d82df1adc37908d8b73c9f5253094739aa12 100644 (file)
@@ -678,6 +678,8 @@ function get_atom_elements($feed, $item, $contact = array()) {
        if($rawgeo)
                $res['coord'] = unxmlify($rawgeo[0]['data']);
 
+       if ($contact["network"] == NETWORK_FEED)
+               $res['verb'] = ACTIVITY_POST;
 
        $rawverb = $item->get_item_tags(NAMESPACE_ACTIVITY, 'verb');
 
index 166f911680f94c3a43a5e5ee860fc6f99149df67..f032e712c8698136e16702e31f87696438b04478 100644 (file)
@@ -35,7 +35,6 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_
        }
 
        @curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
-       //@curl_setopt($ch, CURLOPT_USERAGENT, "Friendica");
        @curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Friendica)");
 
 
@@ -135,7 +134,7 @@ function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0)
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch, CURLOPT_POST,1);
        curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
-       curl_setopt($ch, CURLOPT_USERAGENT, "Friendica");
+       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Friendica)");
 
        if(intval($timeout)) {
                curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
@@ -1164,7 +1163,8 @@ function original_url($url, $depth=1, $fetchbody = false) {
 
         curl_setopt($ch, CURLOPT_TIMEOUT, 10);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
-        curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0');
+        //curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0');
+       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Friendica)");
 
         $header = curl_exec($ch);
         $curl_info = @curl_getinfo($ch);
index 309764c74fb4ad281787a46b653d3d31710d2642..f5c253803b64257dde136ad9a49a57074befb160 100644 (file)
@@ -330,6 +330,7 @@ function onepoll_run(&$argv, &$argc){
                                                logger("Mail: Parsing mail ".$msg_uid, LOGGER_DATA);
 
                                                $datarray = array();
+                                               $datarray['verb'] = ACTIVITY_POST;
        //                                      $meta = email_msg_meta($mbox,$msg_uid);
        //                                      $headers = email_msg_headers($mbox,$msg_uid);
 
index 4bbca636ce63397aa6340a3bb1b5142beb4ab38a..eb33d16e968f8ecc52e3fc84014ab6e6f9379e85 100644 (file)
@@ -53,7 +53,6 @@ function get_attached_data($body) {
                        if (count($pictures) == 1) {
                                // Checking, if the link goes to a picture
                                $data = parseurl_getsiteinfo($pictures[0][1], true);
-
                                if ($data["type"] == "photo") {
                                        $post["type"] = "photo";
                                        if (isset($data["images"][0]))
@@ -64,8 +63,7 @@ function get_attached_data($body) {
                                        $post["preview"] = $pictures[0][2];
                                        $post["text"] = str_replace($pictures[0][0], "", $body);
                                } else {
-                                       $img_str = fetch_url($pictures[0][1]);
-                                       $imgdata = get_photo_info($img_str);
+                                       $imgdata = get_photo_info($pictures[0][1]);
                                        if (substr($imgdata["mime"], 0, 6) == "image/") {
                                                $post["type"] = "photo";
                                                $post["image"] = $pictures[0][1];
index 4d6aa8697ae650e57499d8dc5f24b6523084dc30..3c08fe3785815e0ecc21c60787166f7dc0a562df 100644 (file)
@@ -1629,10 +1629,11 @@ function get_plink($item) {
 
        if ($a->user['nickname'] != "") {
                $ret = array(
-                               'href' => $a->get_baseurl()."/display/".$a->user['nickname']."/".$item['id'],
+                               //'href' => $a->get_baseurl()."/display/".$a->user['nickname']."/".$item['id'],
+                               'href' => $a->get_baseurl()."/display/".$item['guid'],
+                               'orig' => $a->get_baseurl()."/display/".$item['guid'],
                                'title' => t('link to source'),
                        );
-               $ret["orig"] = $ret["href"];
 
                if (x($item,'plink'))
                        $ret["href"] = $item['plink'];
index 8a2c64ad8c062347d81d09abbdd76c109b136387..8d23c4af287b59b7d35c34d005a1c012f1ce303c 100644 (file)
@@ -65,25 +65,7 @@ function community_content(&$a, $update = 0) {
 
        }
 
-       $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`,
-               `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`,
-               `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
-               `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
-               `user`.`nickname`, `user`.`hidewall`
-               FROM `thread` FORCE INDEX (`wall_private_received`)
-               INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND `user`.`hidewall` = 0
-               INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
-               AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = ''
-               AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = ''
-               INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
-               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self`
-               WHERE `thread`.`visible` = 1 AND `thread`.`deleted` = 0 and `thread`.`moderated` = 0
-               AND `thread`.`private` = 0 AND `thread`.`wall` = 1
-               ORDER BY `thread`.`received` DESC LIMIT %d, %d ",
-               intval($a->pager['start']),
-               intval($a->pager['itemspage'])
-
-       );
+       $r = community_getitems($a->pager['start'], $a->pager['itemspage']);
 
        if(! count($r)) {
                info( t('No results.') . EOL);
@@ -93,21 +75,27 @@ function community_content(&$a, $update = 0) {
        $maxpostperauthor = get_config('system','max_author_posts_community_page');
 
        if ($maxpostperauthor != 0) {
+               $count = 1;
                $previousauthor = "";
                $numposts = 0;
                $s = array();
 
-               foreach ($r AS $row=>$item) {
-                       if ($previousauthor == $item["author-link"])
-                               ++$numposts;
-                       else
-                               $numposts = 0;
+               do {
+                       foreach ($r AS $row=>$item) {
+                               if ($previousauthor == $item["author-link"])
+                                       ++$numposts;
+                               else
+                                       $numposts = 0;
 
-                       $previousauthor = $item["author-link"];
+                               $previousauthor = $item["author-link"];
 
-                       if ($numposts < $maxpostperauthor)
-                               $s[] = $item;
-               }
+                               if (($numposts < $maxpostperauthor) AND (sizeof($s) < $a->pager['itemspage']))
+                                       $s[] = $item;
+                       }
+                       if ((sizeof($s) < $a->pager['itemspage']))
+                               $r = community_getitems($a->pager['start'] + ($count * $a->pager['itemspage']), $a->pager['itemspage']);
+
+               } while ((sizeof($s) < $a->pager['itemspage']) AND (++$count < 50) AND (sizeof($r) > 0));
        } else
                $s = $r;
 
@@ -125,3 +113,26 @@ function community_content(&$a, $update = 0) {
        return $o;
 }
 
+function community_getitems($start, $itemspage) {
+       $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`,
+               `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`,
+               `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
+               `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
+               `user`.`nickname`, `user`.`hidewall`
+               FROM `thread` FORCE INDEX (`wall_private_received`)
+               INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND `user`.`hidewall` = 0
+               INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
+               AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = ''
+               AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = ''
+               INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
+               AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self`
+               WHERE `thread`.`visible` = 1 AND `thread`.`deleted` = 0 and `thread`.`moderated` = 0
+               AND `thread`.`private` = 0 AND `thread`.`wall` = 1
+               ORDER BY `thread`.`received` DESC LIMIT %d, %d ",
+               intval($start),
+               intval($itemspage)
+       );
+
+       return($r);
+
+}
index 481b26533d25da5586a8f9f135f90ea0e7b96ec6..7ab71a2fc520d7f7ae68a07711a7cc35fe947633 100644 (file)
@@ -50,10 +50,15 @@ function completeurl($url, $scheme) {
         return($complete);
 }
 
-function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true) {
+function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $count = 1) {
 
        $siteinfo = array();
 
+       if ($count > 10) {
+               logger("parseurl_getsiteinfo: Endless loop detected for ".$url, LOGGER_DEBUG);
+               return($siteinfo);
+       }
+
        $url = trim($url, "'");
        $url = trim($url, '"');
        $siteinfo["url"] = $url;
@@ -66,7 +71,8 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true) {
        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
-       curl_setopt($ch,CURLOPT_USERAGENT,' Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0');
+       //curl_setopt($ch,CURLOPT_USERAGENT,' Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0');
+       curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Friendica)");
 
        $header = curl_exec($ch);
        $curl_info = @curl_getinfo($ch);
@@ -76,9 +82,9 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true) {
        if ((($curl_info['http_code'] == "301") OR ($curl_info['http_code'] == "302") OR ($curl_info['http_code'] == "303") OR ($curl_info['http_code'] == "307"))
                AND (($curl_info['redirect_url'] != "") OR ($curl_info['location'] != ""))) {
                if ($curl_info['redirect_url'] != "")
-                       $siteinfo = parseurl_getsiteinfo($curl_info['redirect_url']);
+                       $siteinfo = parseurl_getsiteinfo($curl_info['redirect_url'], $no_guessing, $do_oembed, ++$count);
                else
-                       $siteinfo = parseurl_getsiteinfo($curl_info['location']);
+                       $siteinfo = parseurl_getsiteinfo($curl_info['location'], $no_guessing, $do_oembed, ++$count);
                return($siteinfo);
        }
 
@@ -142,7 +148,7 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true) {
                                         $content = substr($value, 4);
                         }
                         if ($content != "") {
-                                $siteinfo = parseurl_getsiteinfo($content);
+                                $siteinfo = parseurl_getsiteinfo($content, $no_guessing, $do_oembed, ++$count);
                                 return($siteinfo);
                         }
                 }
@@ -219,7 +225,7 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true) {
                        }
        }
 
-       if (isset($oembed_data) AND ($oembed_data->type == "link")) {
+       if (isset($oembed_data) AND ($oembed_data->type == "link") AND ($siteinfo["type"] != "photo")) {
                if (isset($oembed_data->title) AND (trim($oembed_data->title) != ""))
                        $siteinfo["title"] = $oembed_data->title;
                if (isset($oembed_data->description) AND (trim($oembed_data->description) != ""))