From dd5023e494d2b5d80494026cb82d490e2dfbd27b Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Sat, 15 Aug 2015 12:49:56 -0400 Subject: [PATCH 01/61] Updating logo icon in Readme file and change markup heading for universality. --- README.md | 6 +++--- images/hubzilla_house_arrows.png | Bin 0 -> 22076 bytes 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 images/hubzilla_house_arrows.png diff --git a/README.md b/README.md index ac62f721a..44357eb3c 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ Hubzilla ======== -###Websites. Redefined. +Websites. Redefined. +-------------------- - -![Hubzilla](images/ghash-32.png) +![Hubzilla](images/hubzilla_house_arrows.png) **What are Hubs?** diff --git a/images/hubzilla_house_arrows.png b/images/hubzilla_house_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..56402a96bdbf24c36ba4dbbbfdaceb967b9713d3 GIT binary patch literal 22076 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 Date: Thu, 3 Sep 2015 01:55:07 -0700 Subject: [PATCH 02/61] bug reporting doc --- doc/bugs.bb | 31 +++++++++++++++++++++++++++++++ doc/members.bb | 1 + 2 files changed, 32 insertions(+) create mode 100644 doc/bugs.bb diff --git a/doc/bugs.bb b/doc/bugs.bb new file mode 100644 index 000000000..9fefdef08 --- /dev/null +++ b/doc/bugs.bb @@ -0,0 +1,31 @@ +[h2]Bugs, Issues, and things that go bump in the night...[/h2] + +[h3]Something went wrong! Who is charge of fixing it?[/h3] + +This software is open source and was built by and is maintained by unpaid volunteers. So the quick answer is that nobody is in charge of fixing things. However, some of us have worked long and hard to provide a quality experience for you and don't wish to see you in discomfort because of a software issue or bug. + +The first thing you need to do is talk to your hub administrator - the person who runs and manages your site. They are in the unique position of having access to the internal software and database and [b]logfiles[/b] and will need to be involved in fixing your problem. Other people "on the net" can't really help with this. The first thing [b]they[/b] need to do is look at their logs and/or try to reproduce the problem. So try to be as helpful and courteous as possible in helping them look into the problem. + +To find your site administrator (if you don't know who they are) please look at [url=[baseurl]/siteinfo]this page[/url]. If they have not provided any contact info on that page or provided an "Impressum" there, see [url=[baseurl]/siteinfo/json]this site info summary[/url] under the heading "admin:". + +[h3]I'm a site administrator; what do I do?[/h3] + +It's your site, fix it! OK, sometimes it isn't that easy. There could be other sites involved, and the problem may not even be on your site but elsewhere in the network. Try to pin down the communication endpoints (hubs or sites) involved in the problem and contact the administrator of that site or those sites. Please try and provide an event time of when things went wrong so it can be found in the logs. Work with the other administrator(s) to find the cause of the problem. Logfiles are your friend. When something happens in the software that we didn't expect, it is nearly always logged. + +[h3]The white screen of death[/h3] + +If you get a blank white screen when doing something, this is almost always a code or syntax error. There are instructions in your .htconfig.php file for enabling syntax logging. Do this and repeat the sequence which led to the error and it should log the offending line of code. Hopefully you will be able to fix the problem with this information. When you do, please submit the fix "upstream" so that we can share the fix with the rest of the project members. This is the key benefit of using open source software - we share with each other and everybody benefits. + +[h3]I'm stumped. I can't figure out what is wrong.[/h3] + +At this point it might be worthwhile discussing the issue on one of the online forums. There may be several of these and some may be more suited to your spoken language. As a last resort, try "Channel One", which is in English. + +Other developers may need to find out more, so do your homework and document what is happening and everything you've tried. Don't say "I did xyz and it didn't work." That doesn't tell us anything. Tell us precisely what steps you took and what you expected the result to be, and precisely what happened as a result. If there were any error messages, don't say "there was an error message". Tell us exactly what the message said. + +If the project developers can't help you right away, understand that they are volunteers and may have a lot of other work and demands on their time. At this point you need to file a bug report. You will need an account on github.com to do this. So register, and then visit https://github.com/redmatrix/hubzilla/issues +. Create an issue here and provide all the same information that you provided online. Don't leave out anything. + +Then you wait. If it's a high profile issue, it may get fixed quickly. But nobody is in charge of fixing bugs. If it lingers without resolution, please spend some more time investigating the problem. Ask about anything you don't understand related to the behaviour. You will learn more about how the software works and quite possibly figure out why it isn't working now. Ultimately it is somebody in the community who is going to fix this and you are a member of the community; and this is how the open source process works. + +And just a word of warning. If you file 10 or 20 or 40 bugs on your first day looking at the project and without exploring how the software was supposed to work in the first place, you will probably be ignored. This is a public project and we are unfortunately frequented by "whingers" who like to waste our time complaining about stuff. Don't be one of them. The more helpful and courteous you are, the more helpful and courteous we will be in return. This applies to everything you do in life and is only mentioned here as a reminder. + \ No newline at end of file diff --git a/doc/members.bb b/doc/members.bb index 705154b56..13339ef2d 100644 --- a/doc/members.bb +++ b/doc/members.bb @@ -22,3 +22,4 @@ [zrl=[baseurl]/help/addons]Help With Addons[/zrl] [zrl=[baseurl]/help/diaspora_compat]Diaspora Communications Compatibility (Diaspora and Friendica)[/zrl] [zrl=[baseurl]/help/faq_members]FAQ For Members[/zrl] +[zrl=[baseurl]/help/bugs]Bugs, Issues, and things that go bump in the night...[/zrl] From 5cef672f9a128506f8531cec5d294dda83c3936d Mon Sep 17 00:00:00 2001 From: zottel Date: Thu, 3 Sep 2015 13:55:47 +0200 Subject: [PATCH 03/61] fix update 1148 --- boot.php | 2 +- install/update.php | 29 ++++++++++++++++++----------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/boot.php b/boot.php index 3423ef85c..43b5581ac 100755 --- a/boot.php +++ b/boot.php @@ -49,7 +49,7 @@ define ( 'PLATFORM_NAME', 'redmatrix' ); define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'R'); define ( 'ZOT_REVISION', 1 ); -define ( 'DB_UPDATE_VERSION', 1151 ); +define ( 'DB_UPDATE_VERSION', 1152 ); /** * @brief Constant with a HTML line break. diff --git a/install/update.php b/install/update.php index 3fd75754d..16db09328 100644 --- a/install/update.php +++ b/install/update.php @@ -1,6 +1,6 @@ Date: Thu, 3 Sep 2015 13:10:03 -0700 Subject: [PATCH 04/61] revision update --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index da2499cde..9cfd95d30 100644 --- a/version.inc +++ b/version.inc @@ -1 +1 @@ -2015-09-02.1143 +2015-09-03.1144 From e1af81ea55bbec1ce9c03f824386ec062ae37581 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Thu, 3 Sep 2015 15:48:01 -0700 Subject: [PATCH 05/61] in this case no results is not an error --- install/update.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/install/update.php b/install/update.php index 16db09328..82792a82d 100644 --- a/install/update.php +++ b/install/update.php @@ -1750,8 +1750,7 @@ function update_r1151() { } } - if ($r3) - return UPDATE_SUCCESS; - return UPDATE_FAILED; + + return UPDATE_SUCCESS; } From c83da012ffcced1cbe1910c53a345fd581e1e4cd Mon Sep 17 00:00:00 2001 From: redmatrix Date: Thu, 3 Sep 2015 16:19:59 -0700 Subject: [PATCH 06/61] profile import error #34 --- mod/import.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mod/import.php b/mod/import.php index c2ed82a0a..391461687 100644 --- a/mod/import.php +++ b/mod/import.php @@ -161,7 +161,6 @@ function import_post(&$a) { } - if($completed < 3) { if($data['photo']) { @@ -169,8 +168,8 @@ function import_post(&$a) { import_channel_photo(base64url_decode($data['photo']['data']),$data['photo']['type'],get_account_id(),$channel['channel_id']); } - if(is_array($data['profiles'])) - import_profiles($channel,$data['profiles']); + if(is_array($data['profile'])) + import_profiles($channel,$data['profile']); logger('import step 3'); $_SESSION['import_step'] = 3; From 2a7ff3018b8f82013c739eb70cd02c51737211bb Mon Sep 17 00:00:00 2001 From: redmatrix Date: Thu, 3 Sep 2015 17:21:20 -0700 Subject: [PATCH 07/61] channel export - don't include linked resource items (photos, events). These items will need to be provided with those objects so that they can be re-linked. --- include/identity.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/identity.php b/include/identity.php index e236b5a90..ca4c009c8 100644 --- a/include/identity.php +++ b/include/identity.php @@ -598,7 +598,9 @@ function identity_basic_export($channel_id, $items = false) { /** @warning this may run into memory limits on smaller systems */ - $r = q("select * from item where (item_flags & %d)>0 and not (item_restrict & %d)>0 and uid = %d order by created", + /** Don't export linked resource items. we'll have to pull those out separately. */ + + $r = q("select * from item where (item_flags & %d) > 0 and not (item_restrict & %d) > 0 and uid = %d and resource_type = '' order by created", intval(ITEM_WALL), intval(ITEM_DELETED), intval($channel_id) @@ -635,7 +637,7 @@ function identity_export_year($channel_id,$year,$month = 0) { else $maxdate = datetime_convert('UTC','UTC',$year+1 . '-01-01 00:00:00'); - $r = q("select * from item where (item_flags & %d) > 0 and (item_restrict & %d) = 0 and uid = %d and created >= '%s' and created < '%s' order by created ", + $r = q("select * from item where (item_flags & %d) > 0 and (item_restrict & %d) = 0 and uid = %d and created >= '%s' and created < '%s' and resource_type = '' order by created ", intval(ITEM_WALL), intval(ITEM_DELETED), intval($channel_id), From f7d9523c7da3c193dd0216fa00e62a940d0d174d Mon Sep 17 00:00:00 2001 From: redmatrix Date: Thu, 3 Sep 2015 18:43:44 -0700 Subject: [PATCH 08/61] export chatrooms --- include/identity.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/identity.php b/include/identity.php index ca4c009c8..1a2a9c177 100644 --- a/include/identity.php +++ b/include/identity.php @@ -577,6 +577,12 @@ function identity_basic_export($channel_id, $items = false) { if($r) $ret['app'] = $r; + $r = q("select * from chatroom where cr_uid = %d", + intval($channel_id) + ); + if($r) + $ret['chatroom'] = $r; + if(! $items) return $ret; From d79e81a0697617b5552917c2fe169b30433c54f6 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Thu, 3 Sep 2015 18:44:40 -0700 Subject: [PATCH 09/61] import and sync chatrooms --- include/chat.php | 2 + include/identity.php | 7 +++- include/import.php | 99 +++++++++++++++++++++++++++++++++++++++++++- include/zot.php | 3 ++ mod/chat.php | 4 +- mod/import.php | 3 ++ 6 files changed, 114 insertions(+), 4 deletions(-) diff --git a/include/chat.php b/include/chat.php index 05bb02bb9..a0646265a 100644 --- a/include/chat.php +++ b/include/chat.php @@ -91,6 +91,8 @@ function chatroom_destroy($channel,$arr) { return $ret; } + create_sync_packet($channel['channel_id'],array('chatroom' => $r)); + q("delete from chatroom where cr_id = %d", intval($r[0]['cr_id']) ); diff --git a/include/identity.php b/include/identity.php index c3f59b371..393378cc4 100644 --- a/include/identity.php +++ b/include/identity.php @@ -566,13 +566,18 @@ function identity_basic_export($channel_id, $items = false) { if($r) $ret['obj'] = $r; - $r = q("select * from app where app_channel = %d", intval($channel_id) ); if($r) $ret['app'] = $r; + $r = q("select * from chatroom where cr_uid = %d", + intval($channel_id) + ); + if($r) + $ret['chatroom'] = $r; + if(! $items) return $ret; diff --git a/include/import.php b/include/import.php index 6ce572ea2..261219ce0 100644 --- a/include/import.php +++ b/include/import.php @@ -349,7 +349,7 @@ function sync_apps($channel,$apps) { intval($channel['channel_id']) ); if($x) { - if($x[0]['app_edited'] >= $obj['app_edited']) + if($x[0]['app_edited'] >= $app['app_edited']) continue; $exists = true; } @@ -377,4 +377,99 @@ function sync_apps($channel,$apps) { } } } -} \ No newline at end of file +} + + + +function import_chatrooms($channel,$chatrooms) { + + if($channel && $chatrooms) { + foreach($chatrooms as $chatroom) { + + if(! $chatroom['cr_name']) + continue; + + unset($chatroom['cr_id']); + unset($chatroom['cr_aid']); + unset($chatroom['cr_uid']); + + $chatroom['cr_aid'] = $channel['channel_account_id']; + $chatroom['cr_uid'] = $channel['channel_id']; + + dbesc_array($chatroom); + $r = dbq("INSERT INTO chatroom (`" + . implode("`, `", array_keys($chatroom)) + . "`) VALUES ('" + . implode("', '", array_values($chatroom)) + . "')" + ); + } + } +} + + + +function sync_chatrooms($channel,$chatrooms) { + + if($channel && $chatrooms) { + foreach($chatrooms as $chatroom) { + + if(! $chatroom['cr_name']) + continue; + + if(array_key_exists('cr_deleted',$chatroom) && $chatroom['cr_deleted']) { + q("delete from chatroom where cr_name = '%s' and cr_uid = %d limit 1", + dbesc($chatroom['cr_name']), + intval($channel['channel_id']) + ); + continue; + } + + + unset($chatroom['cr_id']); + unset($chatroom['cr_aid']); + unset($chatroom['cr_uid']); + + if(! $chatroom['cr_created'] || $chatroom['cr_created'] === NULL_DATE) + $chatroom['cr_created'] = datetime_convert(); + if(! $chatroom['cr_edited'] || $chatroom['cr_edited'] === NULL_DATE) + $chatroom['cr_edited'] = datetime_convert(); + + $chatroom['cr_aid'] = $channel['channel_account_id']; + $chatroom['cr_uid'] = $channel['channel_id']; + + $exists = false; + + $x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1", + dbesc($chatroom['cr_name']), + intval($channel['channel_id']) + ); + if($x) { + if($x[0]['cr_edited'] >= $chatroom['cr_edited']) + continue; + $exists = true; + } + $name = $chatroom['cr_name']; + + if($exists) { + foreach($chatroom as $k => $v) { + $r = q("UPDATE chatroom SET `%s` = '%s' WHERE cr_name = '%s' AND cr_uid = %d", + dbesc($k), + dbesc($v), + dbesc($name), + intval($channel['channel_id']) + ); + } + } + else { + dbesc_array($chatroom); + $r = dbq("INSERT INTO chatroom (`" + . implode("`, `", array_keys($chatroom)) + . "`) VALUES ('" + . implode("', '", array_values($chatroom)) + . "')" + ); + } + } + } +} diff --git a/include/zot.php b/include/zot.php index fecaa7ad2..9610df894 100644 --- a/include/zot.php +++ b/include/zot.php @@ -2881,6 +2881,9 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) { if(array_key_exists('app',$arr) && $arr['app']) sync_apps($channel,$arr['app']); + if(array_key_exists('chatroom',$arr) && $arr['chatroom']) + sync_apps($channel,$arr['chatroom']); + if(array_key_exists('channel',$arr) && is_array($arr['channel']) && count($arr['channel'])) { if(array_key_exists('channel_page_flags',$arr['channel']) && intval($arr['channel']['channel_pageflags'])) { $arr['channel']['channel_removed'] = (($arr['channel']['channel_pageflags'] & 0x8000) ? 1 : 0); diff --git a/mod/chat.php b/mod/chat.php index c2c11d0ab..633ecae22 100644 --- a/mod/chat.php +++ b/mod/chat.php @@ -62,11 +62,13 @@ function chat_post(&$a) { chatroom_create($channel,$arr); - $x = q("select cr_id from chatroom where cr_name = '%s' and cr_uid = %d limit 1", + $x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1", dbesc($room), intval(local_channel()) ); + create_sync_packet(0, array['chatroom'] => $x); + if($x) goaway(z_root() . '/chat/' . $channel['channel_address'] . '/' . $x[0]['cr_id']); diff --git a/mod/import.php b/mod/import.php index 391461687..1d1799e00 100644 --- a/mod/import.php +++ b/mod/import.php @@ -435,6 +435,9 @@ function import_post(&$a) { if(is_array($data['app'])) import_apps($channel,$data['app']); + if(is_array($data['chatroom'])) + import_chatrooms($channel,$data['chatroom']); + $saved_notification_flags = notifications_off($channel['channel_id']); if($import_posts && array_key_exists('item',$data) && $data['item']) { From b1888afa108fb09d0ebe3d50cc70ee9024ea76f1 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Thu, 3 Sep 2015 18:47:03 -0700 Subject: [PATCH 10/61] fix typos before pushing --- mod/chat.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/chat.php b/mod/chat.php index 633ecae22..9ad58bc32 100644 --- a/mod/chat.php +++ b/mod/chat.php @@ -67,7 +67,7 @@ function chat_post(&$a) { intval(local_channel()) ); - create_sync_packet(0, array['chatroom'] => $x); + create_sync_packet(0, array('chatroom' => $x)); if($x) goaway(z_root() . '/chat/' . $channel['channel_address'] . '/' . $x[0]['cr_id']); From ee21d87d1b43a52be7568cfa285f1b6ddb3c16e2 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Fri, 4 Sep 2015 09:33:34 +0200 Subject: [PATCH 11/61] uexport template fixes --- view/tpl/uexport.tpl | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/view/tpl/uexport.tpl b/view/tpl/uexport.tpl index 5de995ba0..b9a1b9572 100644 --- a/view/tpl/uexport.tpl +++ b/view/tpl/uexport.tpl @@ -1,9 +1,12 @@
-

{{$title}}

-
{{$basictitle}}

-

{{$basic}}

- -

{{$fulltitle}}

-

{{$full}}

+
+

{{$title}}

+
+
+ {{$basictitle}}

+

{{$basic}}

+

{{$fulltitle}}

+

{{$full}}

+
From fc804751a2967db0d46385bb89248228b2b5d8bf Mon Sep 17 00:00:00 2001 From: jeroenpraat Date: Fri, 4 Sep 2015 12:39:47 +0200 Subject: [PATCH 12/61] Fix for PHP Fatal error: Function name must be a string in /var/www/hubzilla/include/items.php on line 3325 Please review if this is correct? --- include/items.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/items.php b/include/items.php index 9807831e3..91afad0e6 100755 --- a/include/items.php +++ b/include/items.php @@ -3322,7 +3322,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent) { dbesc($title), dbesc($body), intval($item_wall), - $intval($item_origin), + intval($item_origin), intval($item_id) ); From 3f6d6745def41da7ab2abc04eb0554f2a27a085d Mon Sep 17 00:00:00 2001 From: redmatrix Date: Sat, 5 Sep 2015 15:33:09 -0700 Subject: [PATCH 13/61] syntax --- mod/photos.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/photos.php b/mod/photos.php index d06a8e69c..f48603d71 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -85,7 +85,7 @@ function photos_post(&$a) { $owner_record = $s[0]; - $acl = AccessList($a->data['channel']); + $acl = new AccessList($a->data['channel']); if((argc() > 3) && (argv(2) === 'album')) { From 55ab968edf93c4c903e2a88e0eed94741cc80fb6 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Sat, 5 Sep 2015 17:35:00 -0700 Subject: [PATCH 14/61] make js_upload work with hubzilla. It still needs a rewrite. --- include/attach.php | 46 +++++++++++++++++++++++++++++++++++----------- include/photos.php | 4 ++-- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/include/attach.php b/include/attach.php index 620c7620c..513486bfc 100644 --- a/include/attach.php +++ b/include/attach.php @@ -405,6 +405,9 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { require_once('include/photos.php'); + + call_hooks('photo_upload_begin',$arr); + $ret = array('success' => false); $channel_id = $channel['channel_id']; $sql_options = ''; @@ -451,15 +454,28 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { $hash = $arr['resource_id']; } elseif($options !== 'update') { - if(! x($_FILES,'userfile')) { - $ret['message'] = t('No source file.'); - return $ret; + $f = array('src' => '', 'filename' => '', 'filesize' => 0, 'type' => ''); + + call_hooks('photo_upload_file',$f); + call_hooks('attach_upload_file',$f); + + if (x($f,'src') && x($f,'filesize')) { + $src = $f['src']; + $filename = $f['filename']; + $filesize = $f['filesize']; + $type = $f['type']; + + } else { + + if(! x($_FILES,'userfile')) { + $ret['message'] = t('No source file.'); + return $ret; + } + + $src = $_FILES['userfile']['tmp_name']; + $filename = basename($_FILES['userfile']['name']); + $filesize = intval($_FILES['userfile']['size']); } - - $src = $_FILES['userfile']['tmp_name']; - $filename = basename($_FILES['userfile']['name']); - $filesize = intval($_FILES['userfile']['size']); - } $existing_size = 0; @@ -615,6 +631,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { if(($maxfilesize) && ($filesize > $maxfilesize)) { $ret['message'] = sprintf( t('File exceeds size limit of %d'), $maxfilesize); @unlink($src); + call_hooks('photo_upload_end',$ret); return $ret; } @@ -627,10 +644,11 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { if(($r) && (($r[0]['total'] + $filesize) > ($limit - $existing_size))) { $ret['message'] = upgrade_message(true) . sprintf(t("You have reached your limit of %1$.0f Mbytes attachment storage."), $limit / 1024000); @unlink($src); + call_hooks('photo_upload_end',$ret); return $ret; } } - $mimetype = z_mime_content_type($filename); + $mimetype = ((isset($type) && $type) ? $type : z_mime_content_type($filename)); } $os_basepath = 'store/' . $channel['channel_address'] . '/' ; @@ -658,7 +676,6 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { else $edited = $created; - if($options === 'replace') { $r = q("update attach set filename = '%s', filetype = '%s', folder = '%s', filesize = %d, os_storage = %d, is_photo = %d, data = '%s', edited = '%s' where id = %d and uid = %d", dbesc($filename), @@ -714,6 +731,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { ); } else { + $r = q("INSERT INTO attach ( aid, uid, hash, creator, filename, filetype, folder, filesize, revision, os_storage, is_photo, data, created, edited, allow_cid, allow_gid,deny_cid, deny_gid ) VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ", intval($channel['channel_account_id']), @@ -738,6 +756,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { } if($is_photo) { + $args = array( 'source' => $source, 'visible' => 0, 'resource_id' => $hash, 'album' => basename($pathname), 'os_path' => $os_basepath . $os_relpath, 'filename' => $filename, 'getimagesize' => $gis, 'directory' => $direct); if($arr['contact_allow']) $args['contact_allow'] = $arr['contact_allow']; @@ -772,6 +791,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { if(! $r) { $ret['message'] = t('File upload failed. Possible system limit or action terminated.'); + call_hooks('photo_upload_end',$ret); return $ret; } @@ -784,13 +804,17 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { if(! $r) { $ret['message'] = t('Stored file could not be verified. Upload failed.'); + call_hooks('photo_upload_end',$ret); return $ret; } $ret['success'] = true; $ret['data'] = $r[0]; - + if(! $is_photo) { + // This would've been called already with a success result in photos_upload() if it was a photo. + call_hooks('photo_upload_end',$ret); + } return $ret; } diff --git a/include/photos.php b/include/photos.php index b4129fbf1..25818124a 100644 --- a/include/photos.php +++ b/include/photos.php @@ -27,7 +27,7 @@ function photo_upload($channel, $observer, $args) { return $ret; } - call_hooks('photo_upload_begin', $args); +// call_hooks('photo_upload_begin', $args); /* * Determine the album to use @@ -84,7 +84,7 @@ function photo_upload($channel, $observer, $args) { } else { $f = array('src' => '', 'filename' => '', 'filesize' => 0, 'type' => ''); - call_hooks('photo_upload_file',$f); +// call_hooks('photo_upload_file',$f); if (x($f,'src') && x($f,'filesize')) { $src = $f['src']; From ebb07def7e8f64776aad64be9a04a0ca8da363b6 Mon Sep 17 00:00:00 2001 From: jeroenpraat Date: Sun, 6 Sep 2015 23:26:28 +0200 Subject: [PATCH 15/61] Update dav_nautilus.bb --- doc/dav_nautilus.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/dav_nautilus.bb b/doc/dav_nautilus.bb index 51663b6de..c8911cda8 100644 --- a/doc/dav_nautilus.bb +++ b/doc/dav_nautilus.bb @@ -2,8 +2,8 @@ 1. Open a File browsing window (that's Nautilus) 2. Select File > Connect to server from the menu -3. Type davs://<domain_name>/cloud/<your_username> and click Connect -4. You will be prompted for your username (same as above) and password +3. Type davs://<domain_name>/dav/<your_channelname> and click Connect +4. You will be prompted for your channel name (same as above) and password 5. Your personal DAV directory will be shown in the window #include doc/macros/cloud_footer.bb; From 20f211b70af874e04a004a6e6a8c127c02062e13 Mon Sep 17 00:00:00 2001 From: jeroenpraat Date: Sun, 6 Sep 2015 23:27:55 +0200 Subject: [PATCH 16/61] Update dav_dolphin.bb --- doc/dav_dolphin.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/dav_dolphin.bb b/doc/dav_dolphin.bb index a1ebba394..ae60a6d52 100644 --- a/doc/dav_dolphin.bb +++ b/doc/dav_dolphin.bb @@ -1,8 +1,8 @@ [b]Using The Cloud - Dolphin[/b] -Visit webdavs://example.com/cloud where "example.com" is the URL of your hub. +Visit webdavs://example.com/dav where "example.com" is the URL of your hub. -When prompted for a username and password, enter your username (the first part of your webbie - no @ or domain name) and password for your normal account. +When prompted for a username and password, enter your channel name (the first part of your webbie - no @ or domain name) and password for your normal account. Note, if you are already logged in to the web interface via Konqueror, you will not be prompted for further authentication. From 67ed7e40be69e82fdff674aee71cfa5dc789f4d3 Mon Sep 17 00:00:00 2001 From: jeroenpraat Date: Sun, 6 Sep 2015 23:30:25 +0200 Subject: [PATCH 17/61] Update dav_mount.bb --- doc/dav_mount.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/dav_mount.bb b/doc/dav_mount.bb index d8cb2e08e..663251a9d 100644 --- a/doc/dav_mount.bb +++ b/doc/dav_mount.bb @@ -25,7 +25,7 @@ Edit /etc/fstab to include your cloud directory by adding [code] -[baseurl]/cloud/ /mount/point davfs user,noauto,uid=<DesktopUser>,file_mode=600,dir_mode=700 0 1 +[baseurl]/dav/ /mount/point davfs user,noauto,uid=<DesktopUser>,file_mode=600,dir_mode=700 0 1 [/code] Where [baseurl] is the URL of your hub, /mount/point is the location you want to mount the cloud, and <DesktopUser> is the user you log in to one your computer. Note that if you are mounting as a normal user (not root) the mount point must be in your home directory. From 38ea8d1d86a1a10473f6999133e92be78a1fa179 Mon Sep 17 00:00:00 2001 From: jeroenpraat Date: Sun, 6 Sep 2015 23:32:14 +0200 Subject: [PATCH 18/61] Update dav_mount.bb --- doc/dav_mount.bb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/dav_mount.bb b/doc/dav_mount.bb index 663251a9d..0fd3d4691 100644 --- a/doc/dav_mount.bb +++ b/doc/dav_mount.bb @@ -32,7 +32,7 @@ Where [baseurl] is the URL of your hub, /mount/point is the location you want to For example, if I wanted to mount my cloud to a directory called 'cloud' in my home directory, and my username was bob, my fstab would be -[code][baseurl]/cloud/ /home/bob/cloud davfs user,noauto,uid=bob,file_mode=600,dir_mode=700 0 1[/code] +[code][baseurl]/dav/ /home/bob/cloud davfs user,noauto,uid=bob,file_mode=600,dir_mode=700 0 1[/code] Now, create the mount point. @@ -49,7 +49,7 @@ Create a file called 'secrets' and add your cloud login credentials [code] -[baseurl]/cloud <username> <password> +[baseurl]/dav <username> <password> [/code] Where <username> and <password> are the username and password [i]for your hub[/i]. @@ -60,7 +60,7 @@ Don't let this file be writeable by anyone who doesn't need it with Finally, mount the drive. -[code]mount [baseurl]/cloud[/code] +[code]mount [baseurl]/dav[/code] You can now find your cloud at /home/bob/cloud and use it as though it were part of your local filesystem - even if the applications you are using have no dav support themselves. From 302fe94705c95183ce309fa27a1354d4b7037b55 Mon Sep 17 00:00:00 2001 From: jeroenpraat Date: Sun, 6 Sep 2015 23:35:35 +0200 Subject: [PATCH 19/61] Update dav_nemo.bb --- doc/dav_nemo.bb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/dav_nemo.bb b/doc/dav_nemo.bb index 2c88b0782..f2d994fbb 100644 --- a/doc/dav_nemo.bb +++ b/doc/dav_nemo.bb @@ -3,16 +3,16 @@ For (file browser) Nemo 1.8.2 under Linux Mint 15, Cinnamon 1.8.8. Nemo ist the standard file browser there. 1st way -type "davs://yourusername@friendicared.net/cloud" in the address bar +type "davs://<domain_name>/dav/<your_channelname>" in the address bar. 2nd way Menu > file > connect to server Fill the dialog -- Server: friendicared.net +- Server: hubzilla_domain_name - Type: Secure WebDAV (https) -- Folder: /cloud -- Username: yourusername -- Passwort: yourpasswort +- Folder: /dav +- Username: yourchannelname +- Password: yourpassword Once open you can set a bookmark. From 6ea1cf71b513701777cb0992a4a37bd9819ade3a Mon Sep 17 00:00:00 2001 From: jeroenpraat Date: Sun, 6 Sep 2015 23:36:26 +0200 Subject: [PATCH 20/61] Update dav_windows.bb --- doc/dav_windows.bb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/dav_windows.bb b/doc/dav_windows.bb index 0eaffd4d0..96862e2b5 100644 --- a/doc/dav_windows.bb +++ b/doc/dav_windows.bb @@ -4,8 +4,8 @@ RedDav using Windows 7 graphical user interface wizard: 1. Left-click the Start-button to open the start menu. 2. Right-click the My computer icon to access its menu. 3. Left-click Map network drive... to open the connection dialog wizard. -4. Type #^[url=https://example.net/cloud/your_user_name]https://example.net/cloud/your_user_name[/url] in the textbox and click the Complete button where "example.net" is the URL of your hub. -5. Type your Red account's user name. IMPORTANT - NO at-sign or domain name. -6. Type your Red password +4. Type #^[url=https://example.net/dav/your_channel_name]https://example.net/dav/your_channel_name[/url] in the textbox and click the Complete button where "example.net" is the URL of your hub. +5. Type your Hubzilla account's user name. IMPORTANT - NO at-sign or domain name. +6. Type your Hubzilla password #include doc/macros/cloud_footer.bb; From 1d09e4b6201a75e830c303746291ba75d94f937d Mon Sep 17 00:00:00 2001 From: redmatrix Date: Sun, 6 Sep 2015 16:42:50 -0700 Subject: [PATCH 21/61] use conversation defaults for /public page instead of collapsed list mode, but allow over-ride --- mod/public.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mod/public.php b/mod/public.php index 2106be7a6..45edda6c0 100644 --- a/mod/public.php +++ b/mod/public.php @@ -22,7 +22,7 @@ function public_content(&$a, $update = 0, $load = false) { $maxheight = get_config('system','home_divmore_height'); if(! $maxheight) - $maxheight = 75; + $maxheight = 400; $o .= '
' . "\r\n"; $o .= "