diff --git a/CHANGELOG b/CHANGELOG
index 9821eda26..272f839fb 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,25 @@
+Hubzilla 3.8.2 (2018-10-29)
+ - Merge unmerged changes from dev into master
+ - Fix issues with forum handling in mod network and ping
+ - Fix delivery chain linkage messed up if original post was edited
+ - Fix issues with the experimental queue worker
+ - Fix call to image source {1} from html template
+ - Group stream filters by threaded and unthreaded default view
+ - Show only unseen forum messages when clicking on forum notification
+ - Improve editor contact autocomplete performance
+ - Convert non UTF-8 content on link embeding
+ - Make textcomplete return up to 100 items
+ - Look for for matches in the entire string when suggesting emojis
+ - Add [summary] bbcode to autocomplete list
+ - Update blueimp_upload to version 9.23
+ - Update spanish strings
+
+ Addons
+ - Cart: don't allow items to be added unless user is logged into the Grid.
+ - Pubcrawl: simplify asencode_activity() addressing to reflect upcoming changes in mastodon 2.6
+ - Rendezvous: Update rendezvous_group.tpl to fix broken Bootstrap library reference
+
+
Hubzilla 3.8.1 (2018-10-21)
- Fix issue with too long navbar banners
- Fix menu item edit link
diff --git a/Zotlabs/Access/PermissionLimits.php b/Zotlabs/Access/PermissionLimits.php
index b8ca3034c..c11dc95e6 100644
--- a/Zotlabs/Access/PermissionLimits.php
+++ b/Zotlabs/Access/PermissionLimits.php
@@ -88,4 +88,4 @@ class PermissionLimits {
return false;
}
-}
+}
\ No newline at end of file
diff --git a/Zotlabs/Daemon/Master.php b/Zotlabs/Daemon/Master.php
index 3a71ee578..0656ca05b 100644
--- a/Zotlabs/Daemon/Master.php
+++ b/Zotlabs/Daemon/Master.php
@@ -60,7 +60,8 @@ class Master {
$k = explode('_',$worker['k']);
q("delete from config where cat='queueworkers' and k='%s'",
'workerstarted_'.$k[1]);
- q("update config set k='workitem' where cat='queuework' and k='%s'",
+ q("update config set k='%s' where cat='queuework' and k='%s'",
+ dbesc(uniqid('workitem:',true)),
'workitem_'.$k[1]);
unset($workers[$idx]);
}
@@ -69,7 +70,7 @@ class Master {
return false;
}
}
- return uniqid();
+ return uniqid('',true);
}
diff --git a/Zotlabs/Module/Acl.php b/Zotlabs/Module/Acl.php
index ea131e08c..738e8fbe2 100644
--- a/Zotlabs/Module/Acl.php
+++ b/Zotlabs/Module/Acl.php
@@ -83,7 +83,8 @@ class Acl extends \Zotlabs\Web\Controller {
if($search) {
$sql_extra = " AND pgrp.gname LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " ";
$sql_extra2 = "AND ( xchan_name LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " OR xchan_addr LIKE " . protect_sprintf( "'%" . dbesc(punify($search)) . ((strpos($search,'@') === false) ? "%@%'" : "%'")) . ") ";
-
+ $sql_extra2_xchan = "AND ( xchan_name LIKE " . protect_sprintf( "'" . dbesc($search) . "%'" ) . " OR xchan_addr LIKE " . protect_sprintf( "'" . dbesc(punify($search)) . ((strpos($search,'@') === false) ? "%@%'" : "%'")) . ") ";
+
// This horrible mess is needed because position also returns 0 if nothing is found.
// Would be MUCH easier if it instead returned a very large value
// Otherwise we could just
@@ -226,7 +227,7 @@ class Acl extends \Zotlabs\Web\Controller {
else { // Visitors
$r = q("SELECT xchan_hash as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags, 0 as abook_self
FROM xchan left join xlink on xlink_link = xchan_hash
- WHERE xlink_xchan = '%s' AND xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
+ WHERE xlink_xchan = '%s' AND xchan_deleted = 0 $sql_extra2_xchan order by $order_extra2 xchan_name asc" ,
dbesc(get_observer_hash())
);
@@ -270,7 +271,7 @@ class Acl extends \Zotlabs\Web\Controller {
if((count($r) < 100) && $type == 'c') {
$r2 = q("SELECT substr(xchan_hash,1,18) as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags, 0 as abook_self
FROM xchan
- WHERE xchan_deleted = 0 and not xchan_network in ('rss','anon','unknown') $sql_extra2 order by $order_extra2 xchan_name asc"
+ WHERE xchan_deleted = 0 and not xchan_network in ('rss','anon','unknown') $sql_extra2_xchan order by $order_extra2 xchan_name asc"
);
if($r2) {
$r = array_merge($r,$r2);
diff --git a/Zotlabs/Module/Linkinfo.php b/Zotlabs/Module/Linkinfo.php
index f0d62b5e0..a0ad17e68 100644
--- a/Zotlabs/Module/Linkinfo.php
+++ b/Zotlabs/Module/Linkinfo.php
@@ -228,8 +228,8 @@ class Linkinfo extends \Zotlabs\Web\Controller {
$header = $result['header'];
$body = $result['body'];
-
- $body = mb_convert_encoding($body, 'UTF-8', 'UTF-8');
+
+ $body = mb_convert_encoding($body, 'UTF-8', (preg_match('/meta.+content=["|\']text\/html;\s+charset=([^"|\']+)/i', $body, $o) ? $o[1] : 'UTF-8'));
$body = mb_convert_encoding($body, 'HTML-ENTITIES', "UTF-8");
$doc = new \DOMDocument();
diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php
index 792f92418..294e11c52 100644
--- a/Zotlabs/Module/Network.php
+++ b/Zotlabs/Module/Network.php
@@ -128,11 +128,12 @@ class Network extends \Zotlabs\Web\Controller {
$xchan = ((x($_GET,'xchan')) ? $_GET['xchan'] : '');
$net = ((x($_GET,'net')) ? $_GET['net'] : '');
$pf = ((x($_GET,'pf')) ? $_GET['pf'] : '');
+ $unseen = ((x($_GET,'unseen')) ? $_GET['unseen'] : '');
$deftag = '';
- if(x($_GET,'search') || $file || (!$pf && $cid) || $hashtags || $verb || $category)
+ if(x($_GET,'search') || $file || (!$pf && $cid) || $hashtags || $verb || $category || $conv || $unseen)
$nouveau = true;
if($cid) {
@@ -220,6 +221,7 @@ class Network extends \Zotlabs\Web\Controller {
$sql_extra = '';
if($group) {
+
$contact_str = '';
$contacts = group_get_members($group);
if($contacts) {
@@ -232,7 +234,6 @@ class Network extends \Zotlabs\Web\Controller {
}
}
$item_thread_top = '';
-
$sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND (( author_xchan IN ( $contact_str ) OR owner_xchan in ( $contact_str )) or allow_gid like '" . protect_sprintf('%<' . dbesc($group_hash) . '>%') . "' ) and id = parent $item_normal ) ";
$x = group_rec_byhash(local_channel(), $group_hash);
@@ -252,15 +253,35 @@ class Network extends \Zotlabs\Web\Controller {
if($load || $update) {
if(!$pf && $nouveau) {
+ // This is for nouveau view cid queries (not a public forum)
$sql_extra = " AND author_xchan = '" . dbesc($cid_r[0]['abook_xchan']) . "' ";
}
+ elseif($pf && $unseen && $nouveau) {
+
+ // This is for nouveau view public forum cid queries (if a forum notification is clicked)
+ $p = q("SELECT oid AS parent FROM term WHERE uid = %d AND ttype = %d AND term = '%s'",
+ intval(local_channel()),
+ intval(TERM_FORUM),
+ dbesc($cid_r[0]['xchan_name'])
+ );
+
+ $p_str = ids_to_querystr($p, 'parent');
+ if($p_str)
+ $p_sql = " OR item.parent IN ( $p_str ) ";
+
+ $sql_extra = " AND ( owner_xchan = '" . protect_sprintf(dbesc($cid_r[0]['abook_xchan'])) . "' OR owner_xchan = '" . protect_sprintf(dbesc($cid_r[0]['abook_xchan'])) . "' $p_sql ) AND item_unseen = 1 ";
+ }
else {
+ // This is for threaded view cid queries (e.g. if a forum is selected from the forum filter)
$ttype = (($pf) ? TERM_FORUM : TERM_MENTION);
$p1 = q("SELECT DISTINCT parent FROM item WHERE uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($cid_r[0]['abook_xchan']) . "' OR owner_xchan = '" . dbesc($cid_r[0]['abook_xchan']) . "' ) $item_normal ");
$p2 = q("SELECT oid AS parent FROM term WHERE uid = " . intval(local_channel()) . " AND ttype = $ttype AND term = '" . dbesc($cid_r[0]['xchan_name']) . "'");
$p_str = ids_to_querystr(array_merge($p1,$p2),'parent');
+ if(! $p_str)
+ killme();
+
$sql_extra = " AND item.parent IN ( $p_str ) ";
}
}
@@ -345,7 +366,8 @@ class Network extends \Zotlabs\Web\Controller {
'$verb' => $verb,
'$net' => $net,
'$dbegin' => $datequery2,
- '$pf' => (($pf) ? $pf : '0'),
+ '$pf' => (($pf) ? $pf : '0'),
+ '$unseen' => $unseen
));
}
@@ -386,15 +408,7 @@ class Network extends \Zotlabs\Web\Controller {
if($conv) {
$item_thread_top = '';
-
- if($nouveau) {
- $sql_extra .= " AND author_xchan = '" . dbesc($channel['channel_hash']) . "' ";
- }
- else {
- $sql_extra .= sprintf(" AND parent IN (SELECT distinct(parent) from item where ( author_xchan = '%s' or item_mentionsme = 1 )) ",
- dbesc(protect_sprintf($channel['channel_hash']))
- );
- }
+ $sql_extra .= " AND ( author_xchan = '" . dbesc($channel['channel_hash']) . "' OR item_mentionsme = 1 ) ";
}
if($update && ! $load) {
@@ -441,9 +455,11 @@ class Network extends \Zotlabs\Web\Controller {
$page_mode = 'list';
else
$page_mode = 'client';
-
- $simple_update = (($update) ? " and item_unseen = 1 " : '');
+ $parents_str = '';
+ $update_unseen = '';
+
+ $simple_update = (($update) ? " and item_unseen = 1 " : '');
// This fixes a very subtle bug so I'd better explain it. You wake up in the morning or return after a day
// or three and look at your matrix page - after opening up your browser. The first page loads just as it
@@ -459,15 +475,15 @@ class Network extends \Zotlabs\Web\Controller {
if($update && $_SESSION['loadtime'])
$simple_update = " AND (( item_unseen = 1 AND item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) OR item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ) ";
- if($load)
- $simple_update = '';
+
+ if($load)
+ $simple_update = '';
if($static && $simple_update)
$simple_update .= " and item_thread_top = 0 and author_xchan = '" . protect_sprintf(get_observer_hash()) . "' ";
if($nouveau && $load) {
// "New Item View" - show all items unthreaded in reverse created date order
-
$items = q("SELECT item.*, item.id AS item_id, created FROM item
left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids )
$net_query
@@ -478,7 +494,12 @@ class Network extends \Zotlabs\Web\Controller {
$net_query2
ORDER BY item.created DESC $pager_sql "
);
-
+
+ $parents_str = ids_to_querystr($items,'item_id');
+ if($parents_str) {
+ $update_unseen = " AND id IN ( " . dbesc($parents_str) . " )";
+ }
+
require_once('include/items.php');
xchan_query($items);
@@ -521,8 +542,6 @@ class Network extends \Zotlabs\Web\Controller {
}
// Then fetch all the children of the parents that are on this page
- $parents_str = '';
- $update_unseen = '';
if($r) {
diff --git a/Zotlabs/Module/Photo.php b/Zotlabs/Module/Photo.php
index 3f68e5c67..8efc00707 100644
--- a/Zotlabs/Module/Photo.php
+++ b/Zotlabs/Module/Photo.php
@@ -151,18 +151,6 @@ class Photo extends \Zotlabs\Web\Controller {
$allowed = attach_can_view($r[0]['uid'],$observer_xchan,$photo);
}
- if(intval($r[0]['photo_usage'])) {
- $allowed = 1;
- if(intval($r[0]['photo_usage']) === PHOTO_COVER)
- if($resolution < PHOTO_RES_COVER_1200)
- $allowed = (-1);
- if(intval($r[0]['photo_usage']) === PHOTO_PROFILE)
- if(! in_array($resolution,[4,5,6]))
- $allowed = (-1);
- }
- if($allowed === (-1))
- $allowed = attach_can_view($r[0]['uid'],$observer_xchan,$photo);
-
$channel = channelx_by_n($r[0]['uid']);
// Now we'll see if we can access the photo
diff --git a/Zotlabs/Module/Ping.php b/Zotlabs/Module/Ping.php
index 14627f56e..75e8843d6 100644
--- a/Zotlabs/Module/Ping.php
+++ b/Zotlabs/Module/Ping.php
@@ -634,23 +634,30 @@ class Ping extends \Zotlabs\Web\Controller {
if($vnotify & VNOTIFY_FORUMS) {
$forums = get_forum_channels(local_channel());
- if(! $forums) {
- $result['forums'] = 0;
- }
- else {
-
- $perms_sql = item_permissions_sql(local_channel()) . item_normal();
+ if($forums) {
+ $perms_sql = item_permissions_sql(local_channel());
+ $item_normal = item_normal();
$fcount = count($forums);
$forums['total'] = 0;
for($x = 0; $x < $fcount; $x ++) {
- $r = q("select sum(item_unseen) as unseen from item
- where uid = %d and owner_xchan = '%s' and item_unseen = 1 $perms_sql ",
+ $p = q("SELECT oid AS parent FROM term WHERE uid = %d AND ttype = %d AND term = '%s'",
intval(local_channel()),
+ intval(TERM_FORUM),
+ dbesc($forums[$x]['xchan_hash'])
+ );
+
+ $p_str = ids_to_querystr($p, 'parent');
+ $p_sql = (($p_str) ? "OR parent IN ( $p_str )" : '');
+
+ $r = q("select sum(item_unseen) as unseen from item
+ where uid = %d and ( owner_xchan = '%s' OR author_xchan = '%s' $p_sql ) and item_unseen = 1 $perms_sql $item_normal",
+ intval(local_channel()),
+ dbesc($forums[$x]['xchan_hash']),
dbesc($forums[$x]['xchan_hash'])
);
if($r[0]['unseen']) {
- $forums[$x]['notify_link'] = (($forums[$x]['private_forum']) ? $forums[$x]['xchan_url'] : z_root() . '/network/?f=&pf=1&cid=' . $forums[$x]['abook_id']);
+ $forums[$x]['notify_link'] = (($forums[$x]['private_forum']) ? $forums[$x]['xchan_url'] : z_root() . '/network/?f=&pf=1&unseen=1&cid=' . $forums[$x]['abook_id']);
$forums[$x]['name'] = $forums[$x]['xchan_name'];
$forums[$x]['url'] = $forums[$x]['xchan_url'];
$forums[$x]['photo'] = $forums[$x]['xchan_photo_s'];
diff --git a/Zotlabs/Widget/Activity_filter.php b/Zotlabs/Widget/Activity_filter.php
index 4ea0086dd..32ab10c77 100644
--- a/Zotlabs/Widget/Activity_filter.php
+++ b/Zotlabs/Widget/Activity_filter.php
@@ -16,35 +16,6 @@ class Activity_filter {
$tabs = [];
- if(feature_enabled(local_channel(),'personal_tab')) {
- if(x($_GET,'conv')) {
- $conv_active = (($_GET['conv'] == 1) ? 'active' : '');
- $filter_active = 'personal';
- }
-
- $tabs[] = [
- 'label' => t('Personal Posts'),
- 'icon' => 'user-circle',
- 'url' => z_root() . '/' . $cmd . '/?f=&conv=1',
- 'sel' => $conv_active,
- 'title' => t('Show posts that mention or involve me')
- ];
- }
-
- if(feature_enabled(local_channel(),'star_posts')) {
- if(x($_GET,'star')) {
- $starred_active = (($_GET['star'] == 1) ? 'active' : '');
- $filter_active = 'star';
- }
-
- $tabs[] = [
- 'label' => t('Starred Posts'),
- 'icon' => 'star',
- 'url'=>z_root() . '/' . $cmd . '/?f=&star=1',
- 'sel'=>$starred_active,
- 'title' => t('Show posts that I have starred')
- ];
- }
if(Apps::system_app_installed(local_channel(), 'Privacy Groups')) {
$groups = q("SELECT * FROM pgrp WHERE deleted = 0 AND uid = %d ORDER BY gname ASC",
@@ -110,6 +81,36 @@ class Activity_filter {
}
}
+ if(feature_enabled(local_channel(),'star_posts')) {
+ if(x($_GET,'star')) {
+ $starred_active = (($_GET['star'] == 1) ? 'active' : '');
+ $filter_active = 'star';
+ }
+
+ $tabs[] = [
+ 'label' => t('Starred Posts'),
+ 'icon' => 'star',
+ 'url'=>z_root() . '/' . $cmd . '/?f=&star=1',
+ 'sel'=>$starred_active,
+ 'title' => t('Show posts that I have starred')
+ ];
+ }
+
+ if(feature_enabled(local_channel(),'personal_tab')) {
+ if(x($_GET,'conv')) {
+ $conv_active = (($_GET['conv'] == 1) ? 'active' : '');
+ $filter_active = 'personal';
+ }
+
+ $tabs[] = [
+ 'label' => t('Personal Posts'),
+ 'icon' => 'user-circle',
+ 'url' => z_root() . '/' . $cmd . '/?f=&conv=1',
+ 'sel' => $conv_active,
+ 'title' => t('Show posts that mention or involve me')
+ ];
+ }
+
if(feature_enabled(local_channel(),'filing')) {
$terms = q("select distinct term from term where uid = %d and ttype = %d order by term asc",
intval(local_channel()),
diff --git a/Zotlabs/Widget/Activity_order.php b/Zotlabs/Widget/Activity_order.php
index 1cba1ce8c..d3fe2a30f 100644
--- a/Zotlabs/Widget/Activity_order.php
+++ b/Zotlabs/Widget/Activity_order.php
@@ -54,8 +54,8 @@ class Activity_order {
}
}
- // override order for search, filer and cid results
- if(x($_GET,'search') || x($_GET,'file') || (! x($_GET,'pf') && x($_GET,'cid')) || x($_GET,'verb') || x($_GET,'tag') || x($_GET,'cat')) {
+ // override order for some filter results
+ if(x($_GET,'search') || x($_GET,'file') || (! x($_GET,'pf') && x($_GET,'cid')) || x($_GET,'verb') || x($_GET,'tag') || x($_GET,'cat') || x($_GET,'conv') || x($_GET,'unseen')) {
$unthreaded_active = 'active';
$commentord_active = $postord_active = 'disabled';
}
diff --git a/Zotlabs/Widget/Wiki_pages.php b/Zotlabs/Widget/Wiki_pages.php
index f178c940d..dee0a2229 100644
--- a/Zotlabs/Widget/Wiki_pages.php
+++ b/Zotlabs/Widget/Wiki_pages.php
@@ -61,8 +61,6 @@ class Wiki_pages {
$wikiname = '';
- $wikiname = '';
-
$pages = array();
$p = \Zotlabs\Lib\NativeWikiPage::page_list($arr['channel_id'],get_observer_hash(),$arr['resource_id']);
diff --git a/boot.php b/boot.php
index aa1941d19..e01763ca5 100755
--- a/boot.php
+++ b/boot.php
@@ -50,7 +50,7 @@ require_once('include/attach.php');
require_once('include/bbcode.php');
define ( 'PLATFORM_NAME', 'hubzilla' );
-define ( 'STD_VERSION', '3.8.1' );
+define ( 'STD_VERSION', '3.8.2' );
define ( 'ZOT_REVISION', '6.0a' );
diff --git a/home.png b/home.png
new file mode 100755
index 000000000..a9e2993eb
Binary files /dev/null and b/home.png differ
diff --git a/include/connections.php b/include/connections.php
index 874237f97..d97ea3887 100644
--- a/include/connections.php
+++ b/include/connections.php
@@ -379,8 +379,6 @@ function contact_remove($channel_id, $abook_id) {
intval($channel_id)
);
if($r) {
- $r = fetch_post_tags($r,true);
-
foreach($r as $rr) {
$x = q("select uid from term where otype = %d and oid = %d and ttype = %d limit 1",
intval(TERM_OBJ_POST),
diff --git a/include/dba/dba_driver.php b/include/dba/dba_driver.php
index 9e9f24bb3..9533acc7f 100755
--- a/include/dba/dba_driver.php
+++ b/include/dba/dba_driver.php
@@ -484,4 +484,4 @@ function db_columns($table) {
}
return [];
-}
\ No newline at end of file
+}
diff --git a/include/import.php b/include/import.php
index 19e2bbcec..714161c57 100644
--- a/include/import.php
+++ b/include/import.php
@@ -168,7 +168,6 @@ function import_profiles($channel, $profiles) {
unset($profile['id']);
$profile['aid'] = get_account_id();
$profile['uid'] = $channel['channel_id'];
- unset($profile['profile_vcard']);
convert_oldfields($profile,'name','fullname');
convert_oldfields($profile,'with','partner');
diff --git a/include/items.php b/include/items.php
index 58461cc3a..cae380b01 100755
--- a/include/items.php
+++ b/include/items.php
@@ -2150,6 +2150,7 @@ function item_store_update($arr, $allow_exec = false, $deliver = true) {
unset($arr['created']);
unset($arr['author_xchan']);
unset($arr['owner_xchan']);
+ unset($arr['source_xchan']);
unset($arr['thr_parent']);
unset($arr['llink']);
@@ -2514,7 +2515,7 @@ function tag_deliver($uid, $item_id) {
// Just start the second delivery chain to deliver the updated post
// after resetting ownership and permission bits
logger('updating edited tag_deliver post for ' . $u[0]['channel_address']);
- start_delivery_chain($u[0], $item, $item_id, 0);
+ start_delivery_chain($u[0], $item, $item_id, 0, true);
return;
}
@@ -2941,7 +2942,7 @@ function tgroup_check($uid, $item) {
* @param int $item_id
* @param boolean $parent
*/
-function start_delivery_chain($channel, $item, $item_id, $parent) {
+function start_delivery_chain($channel, $item, $item_id, $parent, $edit = false) {
$sourced = check_item_source($channel['channel_id'],$item);
@@ -2950,7 +2951,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
intval($channel['channel_id']),
dbesc(($item['source_xchan']) ? $item['source_xchan'] : $item['owner_xchan'])
);
- if($r) {
+ if($r && ! $edit) {
$t = trim($r[0]['src_tag']);
if($t) {
$tags = explode(',',$t);
@@ -3017,9 +3018,17 @@ function start_delivery_chain($channel, $item, $item_id, $parent) {
}
else {
$item_uplink = 1;
- $r = q("update item set source_xchan = owner_xchan where id = %d",
- intval($item_id)
- );
+
+ // if this is an edit, item_store_update() will have already updated the item
+ // with the correct value for source_xchan (by ignoring it). We cannot set to owner_xchan
+ // in this case because owner_xchan will point to the parent of this chain
+ // and not the original sender.
+
+ if(! $edit) {
+ $r = q("update item set source_xchan = owner_xchan where id = %d",
+ intval($item_id)
+ );
+ }
}
$title = $item['title'];
diff --git a/include/nav.php b/include/nav.php
index 9c15552e2..d405b9f06 100644
--- a/include/nav.php
+++ b/include/nav.php
@@ -224,7 +224,6 @@ function nav($template = 'default') {
//app bin
if($is_owner) {
- //daily system apps import
if(get_pconfig(local_channel(), 'system','import_system_apps') !== datetime_convert('UTC','UTC','now','Y-m-d')) {
Apps::import_system_apps();
set_pconfig(local_channel(), 'system','import_system_apps', datetime_convert('UTC','UTC','now','Y-m-d'));
diff --git a/include/zot.php b/include/zot.php
index 4a8892083..1a632cf87 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -4327,7 +4327,7 @@ function zotinfo($arr) {
if($role === 'forum' || $role === 'repository') {
$public_forum = true;
}
- elseif($ztarget_hash) {
+ else {
// check if it has characteristics of a public forum based on custom permissions.
$m = \Zotlabs\Access\Permissions::FilledAutoperms($e['channel_id']);
if($m) {
diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql
index 5d1b8baaa..cb4476628 100644
--- a/install/schema_postgres.sql
+++ b/install/schema_postgres.sql
@@ -1,6 +1,6 @@
CREATE TABLE "abconfig" (
"id" serial NOT NULL,
- "chan" bigint NOT NULL DEFAULT 0,
+ "chan" bigint NOT NULL DEFAULT '0',
"xchan" text NOT NULL,
"cat" text NOT NULL,
"k" text NOT NULL,
@@ -73,13 +73,13 @@ CREATE TABLE "account" (
"account_language" varchar(16) NOT NULL DEFAULT 'en',
"account_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"account_lastlog" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- "account_flags" bigint NOT NULL DEFAULT 0 ,
- "account_roles" bigint NOT NULL DEFAULT 0 ,
+ "account_flags" bigint NOT NULL DEFAULT '0',
+ "account_roles" bigint NOT NULL DEFAULT '0',
"account_reset" text NOT NULL DEFAULT '',
"account_expires" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"account_expire_notified" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"account_service_class" varchar(32) NOT NULL DEFAULT '',
- "account_level" bigint NOT NULL DEFAULT 0 ,
+ "account_level" bigint NOT NULL DEFAULT '0',
"account_password_changed" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY ("account_id")
);
@@ -97,11 +97,11 @@ create index "account_password_changed" on account ("account_password_changed")
CREATE TABLE "addon" (
"id" serial NOT NULL,
"aname" text NOT NULL,
- "version" text NOT NULL DEFAULT 0 ,
- "installed" numeric(1) NOT NULL DEFAULT 0 ,
- "hidden" numeric(1) NOT NULL DEFAULT 0 ,
- "tstamp" numeric(20) NOT NULL DEFAULT 0 ,
- "plugin_admin" numeric(1) NOT NULL DEFAULT 0 ,
+ "version" text NOT NULL DEFAULT '0',
+ "installed" numeric(1) NOT NULL DEFAULT '0',
+ "hidden" numeric(1) NOT NULL DEFAULT '0',
+ "tstamp" numeric(20) NOT NULL DEFAULT '0',
+ "plugin_admin" numeric(1) NOT NULL DEFAULT '0',
PRIMARY KEY ("id")
);
create index "addon_hidden_idx" on addon ("hidden");
@@ -117,13 +117,13 @@ CREATE TABLE "app" (
"app_url" text NOT NULL DEFAULT '',
"app_photo" text NOT NULL DEFAULT '',
"app_version" text NOT NULL DEFAULT '',
- "app_channel" bigint NOT NULL DEFAULT 0 ,
+ "app_channel" bigint NOT NULL DEFAULT '0',
"app_addr" text NOT NULL DEFAULT '',
"app_price" text NOT NULL DEFAULT '',
"app_page" text NOT NULL DEFAULT '',
"app_requires" text NOT NULL DEFAULT '',
- "app_deleted" smallint NOT NULL DEFAULT 0 ,
- "app_system" smallint NOT NULL DEFAULT 0 ,
+ "app_deleted" smallint NOT NULL DEFAULT '0',
+ "app_system" smallint NOT NULL DEFAULT '0',
"app_plugin" text NOT NULL DEFAULT '',
"app_options" smallint NOT NULL DEFAULT '0',
"app_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -159,19 +159,19 @@ create index atoken_expires on atoken (atoken_expires);
CREATE TABLE "attach" (
"id" serial NOT NULL,
- "aid" bigint NOT NULL DEFAULT 0 ,
- "uid" bigint NOT NULL DEFAULT 0 ,
+ "aid" bigint NOT NULL DEFAULT '0',
+ "uid" bigint NOT NULL DEFAULT '0',
"hash" varchar(64) NOT NULL DEFAULT '',
"creator" varchar(128) NOT NULL DEFAULT '',
"filename" text NOT NULL DEFAULT '',
"filetype" varchar(64) NOT NULL DEFAULT '',
- "filesize" bigint NOT NULL DEFAULT 0 ,
- "revision" bigint NOT NULL DEFAULT 0 ,
+ "filesize" bigint NOT NULL DEFAULT '0',
+ "revision" bigint NOT NULL DEFAULT '0',
"folder" varchar(64) NOT NULL DEFAULT '',
- "flags" bigint NOT NULL DEFAULT 0 ,
- "is_dir" smallint NOT NULL DEFAULT 0 ,
- "is_photo" smallint NOT NULL DEFAULT 0 ,
- "os_storage" smallint NOT NULL DEFAULT 0 ,
+ "flags" bigint NOT NULL DEFAULT '0',
+ "is_dir" smallint NOT NULL DEFAULT '0',
+ "is_photo" smallint NOT NULL DEFAULT '0',
+ "os_storage" smallint NOT NULL DEFAULT '0',
"os_path" text NOT NULL,
"display_path" text NOT NULL,
"content" bytea NOT NULL,
@@ -215,8 +215,8 @@ CREATE TABLE "cache" (
);
CREATE TABLE "cal" (
"cal_id" serial NOT NULL,
- "cal_aid" bigint NOT NULL DEFAULT 0 ,
- "cal_uid" bigint NOT NULL DEFAULT 0 ,
+ "cal_aid" bigint NOT NULL DEFAULT '0',
+ "cal_uid" bigint NOT NULL DEFAULT '0',
"cal_hash" text NOT NULL,
"cal_name" text NOT NULL,
"uri" text NOT NULL,
@@ -224,7 +224,7 @@ CREATE TABLE "cal" (
"pass" text NOT NULL,
"ctag" text NOT NULL,
"synctoken" text NOT NULL,
- "cal_types" text NOT NULL DEFAULT 0 ,
+ "cal_types" text NOT NULL DEFAULT '0',
PRIMARY KEY ("cal_id")
);
create index "cal_hash_idx" on cal ("cal_hash");
@@ -235,8 +235,8 @@ create index "cal_uid_idx" on cal ("cal_uid");
CREATE TABLE "channel" (
"channel_id" serial NOT NULL,
- "channel_account_id" bigint NOT NULL DEFAULT 0 ,
- "channel_primary" numeric(1) NOT NULL DEFAULT 0 ,
+ "channel_account_id" bigint NOT NULL DEFAULT '0',
+ "channel_primary" numeric(1) NOT NULL DEFAULT '0',
"channel_name" text NOT NULL DEFAULT '',
"channel_address" text NOT NULL DEFAULT '',
"channel_guid" text NOT NULL DEFAULT '',
@@ -248,8 +248,8 @@ CREATE TABLE "channel" (
"channel_startpage" text NOT NULL DEFAULT '',
"channel_pubkey" text NOT NULL,
"channel_prvkey" text NOT NULL,
- "channel_notifyflags" bigint NOT NULL DEFAULT 65535,
- "channel_pageflags" bigint NOT NULL DEFAULT 0 ,
+ "channel_notifyflags" bigint NOT NULL DEFAULT '65535',
+ "channel_pageflags" bigint NOT NULL DEFAULT '0',
"channel_dirdate" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"channel_lastpost" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"channel_deleted" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -294,7 +294,7 @@ create index "channel_system" on channel ("channel_system");
create index "channel_moved" on channel ("channel_moved");
CREATE TABLE "chat" (
"chat_id" serial NOT NULL,
- "chat_room" bigint NOT NULL DEFAULT 0 ,
+ "chat_room" bigint NOT NULL DEFAULT '0',
"chat_xchan" text NOT NULL DEFAULT '',
"chat_text" text NOT NULL,
"created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -305,7 +305,7 @@ create index "chat_xchan_idx" on chat ("chat_xchan");
create index "chat_created_idx" on chat ("created");
CREATE TABLE "chatpresence" (
"cp_id" serial NOT NULL,
- "cp_room" bigint NOT NULL DEFAULT 0 ,
+ "cp_room" bigint NOT NULL DEFAULT '0',
"cp_xchan" text NOT NULL DEFAULT '',
"cp_last" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"cp_status" text NOT NULL,
@@ -319,12 +319,12 @@ create index "cp_status" on chatpresence ("cp_status");
CREATE TABLE "chatroom" (
"cr_id" serial NOT NULL,
- "cr_aid" bigint NOT NULL DEFAULT 0 ,
- "cr_uid" bigint NOT NULL DEFAULT 0 ,
+ "cr_aid" bigint NOT NULL DEFAULT '0',
+ "cr_uid" bigint NOT NULL DEFAULT '0',
"cr_name" text NOT NULL DEFAULT '',
"cr_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"cr_edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- "cr_expire" bigint NOT NULL DEFAULT 0 ,
+ "cr_expire" bigint NOT NULL DEFAULT '0',
"allow_cid" text NOT NULL,
"allow_gid" text NOT NULL,
"deny_cid" text NOT NULL,
@@ -343,7 +343,7 @@ CREATE TABLE "clients" (
"redirect_uri" varchar(200) NOT NULL,
"clname" text,
"icon" text,
- "uid" bigint NOT NULL DEFAULT 0 ,
+ "uid" bigint NOT NULL DEFAULT '0',
PRIMARY KEY ("client_id")
);
CREATE TABLE "config" (
@@ -390,9 +390,9 @@ create index "dreport_channel" on dreport ("dreport_channel");
CREATE TABLE "event" (
"id" serial NOT NULL,
- "aid" bigint NOT NULL DEFAULT 0 ,
+ "aid" bigint NOT NULL DEFAULT '0',
"uid" bigint NOT NULL,
- "cal_id" bigint NOT NULL DEFAULT 0 ,
+ "cal_id" bigint NOT NULL DEFAULT '0',
"event_xchan" text NOT NULL DEFAULT '',
"event_hash" text NOT NULL DEFAULT '',
"created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -403,19 +403,19 @@ CREATE TABLE "event" (
"description" text NOT NULL,
"location" text NOT NULL,
"etype" text NOT NULL,
- "nofinish" numeric(1) NOT NULL DEFAULT 0 ,
- "adjust" numeric(1) NOT NULL DEFAULT 1,
- "dismissed" numeric(1) NOT NULL DEFAULT 0 ,
+ "nofinish" numeric(1) NOT NULL DEFAULT '0',
+ "adjust" numeric(1) NOT NULL DEFAULT '1',
+ "dismissed" numeric(1) NOT NULL DEFAULT '0',
"allow_cid" text NOT NULL,
"allow_gid" text NOT NULL,
"deny_cid" text NOT NULL,
"deny_gid" text NOT NULL,
"event_status" varchar(255) NOT NULL DEFAULT '',
"event_status_date" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- "event_percent" smallint NOT NULL DEFAULT 0 ,
+ "event_percent" smallint NOT NULL DEFAULT '0',
"event_repeat" text NOT NULL,
- "event_sequence" smallint NOT NULL DEFAULT 0 ,
- "event_priority" smallint NOT NULL DEFAULT 0 ,
+ "event_sequence" smallint NOT NULL DEFAULT '0',
+ "event_priority" smallint NOT NULL DEFAULT '0',
"event_vdata" text NOT NULL,
PRIMARY KEY ("id")
);
@@ -449,8 +449,8 @@ CREATE TABLE "pgrp" (
"id" serial NOT NULL,
"hash" text NOT NULL DEFAULT '',
"uid" bigint NOT NULL,
- "visible" numeric(1) NOT NULL DEFAULT 0 ,
- "deleted" numeric(1) NOT NULL DEFAULT 0 ,
+ "visible" numeric(1) NOT NULL DEFAULT '0',
+ "deleted" numeric(1) NOT NULL DEFAULT '0',
"gname" text NOT NULL,
PRIMARY KEY ("id")
@@ -465,8 +465,8 @@ CREATE TABLE "hook" (
"hook" text NOT NULL,
"file" text NOT NULL,
"fn" text NOT NULL,
- "priority" smallint NOT NULL DEFAULT 0 ,
- "hook_version" smallint NOT NULL DEFAULT 0 ,
+ "priority" smallint NOT NULL DEFAULT '0',
+ "hook_version" smallint NOT NULL DEFAULT '0',
PRIMARY KEY ("id")
);
@@ -483,8 +483,8 @@ CREATE TABLE "hubloc" (
"hubloc_hash" text NOT NULL,
"hubloc_addr" text NOT NULL DEFAULT '',
"hubloc_network" text NOT NULL DEFAULT '',
- "hubloc_flags" bigint NOT NULL DEFAULT 0 ,
- "hubloc_status" bigint NOT NULL DEFAULT 0 ,
+ "hubloc_flags" bigint NOT NULL DEFAULT '0',
+ "hubloc_status" bigint NOT NULL DEFAULT '0',
"hubloc_url" text NOT NULL DEFAULT '',
"hubloc_url_sig" text NOT NULL DEFAULT '',
"hubloc_site_id" text NOT NULL DEFAULT '',
@@ -494,10 +494,10 @@ CREATE TABLE "hubloc" (
"hubloc_sitekey" text NOT NULL DEFAULT '',
"hubloc_updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"hubloc_connected" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- "hubloc_primary" smallint NOT NULL DEFAULT 0 ,
- "hubloc_orphancheck" smallint NOT NULL DEFAULT 0 ,
- "hubloc_error" smallint NOT NULL DEFAULT 0 ,
- "hubloc_deleted" smallint NOT NULL DEFAULT 0 ,
+ "hubloc_primary" smallint NOT NULL DEFAULT '0',
+ "hubloc_orphancheck" smallint NOT NULL DEFAULT '0',
+ "hubloc_error" smallint NOT NULL DEFAULT '0',
+ "hubloc_deleted" smallint NOT NULL DEFAULT '0',
PRIMARY KEY ("hubloc_id")
);
create index "hubloc_url" on hubloc ("hubloc_url");
@@ -518,11 +518,11 @@ create index "hubloc_error" on hubloc ("hubloc_error");
create index "hubloc_deleted" on hubloc ("hubloc_deleted");
CREATE TABLE "iconfig" (
"id" serial NOT NULL,
- "iid" bigint NOT NULL DEFAULT 0 ,
+ "iid" bigint NOT NULL DEFAULT '0',
"cat" text NOT NULL DEFAULT '',
"k" text NOT NULL DEFAULT '',
"v" text NOT NULL DEFAULT '',
- "sharing" int NOT NULL DEFAULT 0 ,
+ "sharing" int NOT NULL DEFAULT '0',
PRIMARY KEY("id")
);
create index "iconfig_iid" on iconfig ("iid");
@@ -549,9 +549,9 @@ create index "issue_component" on issue ("issue_component");
CREATE TABLE "item" (
"id" serial NOT NULL,
"mid" text NOT NULL DEFAULT '',
- "aid" bigint NOT NULL DEFAULT 0 ,
- "uid" bigint NOT NULL DEFAULT 0 ,
- "parent" bigint NOT NULL DEFAULT 0 ,
+ "aid" bigint NOT NULL DEFAULT '0',
+ "uid" bigint NOT NULL DEFAULT '0',
+ "parent" bigint NOT NULL DEFAULT '0',
"parent_mid" text NOT NULL DEFAULT '',
"thr_parent" text NOT NULL DEFAULT '',
"created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
@@ -570,7 +570,7 @@ CREATE TABLE "item" (
"html" text NOT NULL,
"app" text NOT NULL DEFAULT '',
"lang" varchar(64) NOT NULL DEFAULT '',
- "revision" bigint NOT NULL DEFAULT 0 ,
+ "revision" bigint NOT NULL DEFAULT '0',
"verb" text NOT NULL DEFAULT '',
"obj_type" text NOT NULL DEFAULT '',
"obj" text NOT NULL,
@@ -593,32 +593,32 @@ CREATE TABLE "item" (
"allow_gid" text NOT NULL,
"deny_cid" text NOT NULL,
"deny_gid" text NOT NULL,
- "item_restrict" bigint NOT NULL DEFAULT 0 ,
- "item_flags" bigint NOT NULL DEFAULT 0 ,
- "item_private" numeric(4) NOT NULL DEFAULT 0 ,
- "item_unseen" smallint NOT NULL DEFAULT 0 ,
- "item_wall" smallint NOT NULL DEFAULT 0 ,
- "item_origin" smallint NOT NULL DEFAULT 0 ,
- "item_starred" smallint NOT NULL DEFAULT 0 ,
- "item_uplink" smallint NOT NULL DEFAULT 0 ,
- "item_consensus" smallint NOT NULL DEFAULT 0 ,
- "item_thread_top" smallint NOT NULL DEFAULT 0 ,
- "item_notshown" smallint NOT NULL DEFAULT 0 ,
- "item_nsfw" smallint NOT NULL DEFAULT 0 ,
- "item_relay" smallint NOT NULL DEFAULT 0 ,
- "item_mentionsme" smallint NOT NULL DEFAULT 0 ,
- "item_nocomment" smallint NOT NULL DEFAULT 0 ,
- "item_obscured" smallint NOT NULL DEFAULT 0 ,
- "item_verified" smallint NOT NULL DEFAULT 0 ,
- "item_retained" smallint NOT NULL DEFAULT 0 ,
- "item_rss" smallint NOT NULL DEFAULT 0 ,
- "item_deleted" smallint NOT NULL DEFAULT 0 ,
- "item_type" int NOT NULL DEFAULT 0 ,
- "item_hidden" smallint NOT NULL DEFAULT 0 ,
- "item_unpublished" smallint NOT NULL DEFAULT 0 ,
- "item_delayed" smallint NOT NULL DEFAULT 0 ,
- "item_pending_remove" smallint NOT NULL DEFAULT 0 ,
- "item_blocked" smallint NOT NULL DEFAULT 0 ,
+ "item_restrict" bigint NOT NULL DEFAULT '0',
+ "item_flags" bigint NOT NULL DEFAULT '0',
+ "item_private" numeric(4) NOT NULL DEFAULT '0',
+ "item_unseen" smallint NOT NULL DEFAULT '0',
+ "item_wall" smallint NOT NULL DEFAULT '0',
+ "item_origin" smallint NOT NULL DEFAULT '0',
+ "item_starred" smallint NOT NULL DEFAULT '0',
+ "item_uplink" smallint NOT NULL DEFAULT '0',
+ "item_consensus" smallint NOT NULL DEFAULT '0',
+ "item_thread_top" smallint NOT NULL DEFAULT '0',
+ "item_notshown" smallint NOT NULL DEFAULT '0',
+ "item_nsfw" smallint NOT NULL DEFAULT '0',
+ "item_relay" smallint NOT NULL DEFAULT '0',
+ "item_mentionsme" smallint NOT NULL DEFAULT '0',
+ "item_nocomment" smallint NOT NULL DEFAULT '0',
+ "item_obscured" smallint NOT NULL DEFAULT '0',
+ "item_verified" smallint NOT NULL DEFAULT '0',
+ "item_retained" smallint NOT NULL DEFAULT '0',
+ "item_rss" smallint NOT NULL DEFAULT '0',
+ "item_deleted" smallint NOT NULL DEFAULT '0',
+ "item_type" int NOT NULL DEFAULT '0',
+ "item_hidden" smallint NOT NULL DEFAULT '0',
+ "item_unpublished" smallint NOT NULL DEFAULT '0',
+ "item_delayed" smallint NOT NULL DEFAULT '0',
+ "item_pending_remove" smallint NOT NULL DEFAULT '0',
+ "item_blocked" smallint NOT NULL DEFAULT '0',
"item_search_vector" tsvector,
PRIMARY KEY ("id")
);
@@ -731,9 +731,9 @@ create index "ltype_idx" on listeners ("ltype");
CREATE TABLE "mail" (
"id" serial NOT NULL,
- "convid" bigint NOT NULL DEFAULT 0 ,
+ "convid" bigint NOT NULL DEFAULT '0',
"conv_guid" text NOT NULL,
- "mail_flags" bigint NOT NULL DEFAULT 0 ,
+ "mail_flags" bigint NOT NULL DEFAULT '0',
"from_xchan" text NOT NULL DEFAULT '',
"to_xchan" text NOT NULL DEFAULT '',
"account_id" bigint NOT NULL DEFAULT '0',
@@ -745,13 +745,13 @@ CREATE TABLE "mail" (
"attach" text NOT NULL DEFAULT '',
"mid" text NOT NULL,
"parent_mid" text NOT NULL,
- "mail_deleted" smallint NOT NULL DEFAULT 0 ,
- "mail_replied" smallint NOT NULL DEFAULT 0 ,
- "mail_isreply" smallint NOT NULL DEFAULT 0 ,
- "mail_seen" smallint NOT NULL DEFAULT 0 ,
- "mail_recalled" smallint NOT NULL DEFAULT 0 ,
- "mail_obscured" smallint NOT NULL DEFAULT 0 ,
- "mail_raw" smallint NOT NULL DEFAULT 0 ,
+ "mail_deleted" smallint NOT NULL DEFAULT '0',
+ "mail_replied" smallint NOT NULL DEFAULT '0',
+ "mail_isreply" smallint NOT NULL DEFAULT '0',
+ "mail_seen" smallint NOT NULL DEFAULT '0',
+ "mail_recalled" smallint NOT NULL DEFAULT '0',
+ "mail_obscured" smallint NOT NULL DEFAULT '0',
+ "mail_raw" smallint NOT NULL DEFAULT '0',
"created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"expires" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY ("id")
@@ -775,10 +775,10 @@ create index "mail_recalled" on mail ("mail_recalled");
create index "mail_obscured" on mail ("mail_obscured");
CREATE TABLE "menu" (
"menu_id" serial NOT NULL,
- "menu_channel_id" bigint NOT NULL DEFAULT 0 ,
+ "menu_channel_id" bigint NOT NULL DEFAULT '0',
"menu_name" text NOT NULL DEFAULT '',
"menu_desc" text NOT NULL DEFAULT '',
- "menu_flags" bigint NOT NULL DEFAULT 0 ,
+ "menu_flags" bigint NOT NULL DEFAULT '0',
"menu_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"menu_edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
PRIMARY KEY ("menu_id")
@@ -792,14 +792,14 @@ CREATE TABLE "menu_item" (
"mitem_id" serial NOT NULL,
"mitem_link" text NOT NULL DEFAULT '',
"mitem_desc" text NOT NULL DEFAULT '',
- "mitem_flags" bigint NOT NULL DEFAULT 0 ,
+ "mitem_flags" bigint NOT NULL DEFAULT '0',
"allow_cid" text NOT NULL,
"allow_gid" text NOT NULL,
"deny_cid" text NOT NULL,
"deny_gid" text NOT NULL,
"mitem_channel_id" bigint NOT NULL,
- "mitem_menu_id" bigint NOT NULL DEFAULT 0 ,
- "mitem_order" bigint NOT NULL DEFAULT 0 ,
+ "mitem_menu_id" bigint NOT NULL DEFAULT '0',
+ "mitem_order" bigint NOT NULL DEFAULT '0',
PRIMARY KEY ("mitem_id")
);
@@ -818,7 +818,7 @@ CREATE TABLE "notify" (
"uid" bigint NOT NULL,
"link" text NOT NULL,
"parent" text NOT NULL DEFAULT '',
- "seen" numeric(1) NOT NULL DEFAULT 0 ,
+ "seen" numeric(1) NOT NULL DEFAULT '0',
"ntype" bigint NOT NULL,
"verb" text NOT NULL,
"otype" varchar(16) NOT NULL,
@@ -867,18 +867,18 @@ create index "obj_quantity" on obj ("obj_quantity");
CREATE TABLE "outq" (
"outq_hash" text NOT NULL,
- "outq_account" bigint NOT NULL DEFAULT 0 ,
- "outq_channel" bigint NOT NULL DEFAULT 0 ,
+ "outq_account" bigint NOT NULL DEFAULT '0',
+ "outq_channel" bigint NOT NULL DEFAULT '0',
"outq_driver" varchar(32) NOT NULL DEFAULT '',
"outq_posturl" text NOT NULL DEFAULT '',
- "outq_async" numeric(1) NOT NULL DEFAULT 0 ,
- "outq_delivered" numeric(1) NOT NULL DEFAULT 0 ,
+ "outq_async" numeric(1) NOT NULL DEFAULT '0',
+ "outq_delivered" numeric(1) NOT NULL DEFAULT '0',
"outq_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"outq_updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"outq_scheduled" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"outq_notify" text NOT NULL,
"outq_msg" text NOT NULL,
- "outq_priority" smallint NOT NULL DEFAULT 0 ,
+ "outq_priority" smallint NOT NULL DEFAULT '0',
PRIMARY KEY ("outq_hash")
);
create index "outq_account" on outq ("outq_account");
@@ -906,7 +906,7 @@ create index "pchan_hash" on pchan ("pchan_hash");
CREATE TABLE "pconfig" (
"id" serial NOT NULL,
- "uid" bigint NOT NULL DEFAULT 0 ,
+ "uid" bigint NOT NULL DEFAULT '0',
"cat" text NOT NULL,
"k" text NOT NULL,
"v" text NOT NULL,
@@ -916,7 +916,7 @@ CREATE TABLE "pconfig" (
CREATE TABLE "photo" (
"id" serial NOT NULL,
- "aid" bigint NOT NULL DEFAULT 0 ,
+ "aid" bigint NOT NULL DEFAULT '0',
"uid" bigint NOT NULL,
"xchan" text NOT NULL DEFAULT '',
"resource_id" text NOT NULL,
@@ -929,16 +929,16 @@ CREATE TABLE "photo" (
"mimetype" varchar(128) NOT NULL DEFAULT 'image/jpeg',
"height" numeric(6) NOT NULL,
"width" numeric(6) NOT NULL,
- "filesize" bigint NOT NULL DEFAULT 0 ,
+ "filesize" bigint NOT NULL DEFAULT '0',
"content" bytea NOT NULL,
- "imgscale" numeric(3) NOT NULL DEFAULT 0 ,
- "profile" numeric(1) NOT NULL DEFAULT 0 ,
- "photo_usage" smallint NOT NULL DEFAULT 0 ,
- "is_nsfw" smallint NOT NULL DEFAULT 0 ,
- "os_storage" smallint NOT NULL DEFAULT 0 ,
+ "imgscale" numeric(3) NOT NULL DEFAULT '0',
+ "profile" numeric(1) NOT NULL DEFAULT '0',
+ "photo_usage" smallint NOT NULL DEFAULT '0',
+ "is_nsfw" smallint NOT NULL DEFAULT '0',
+ "os_storage" smallint NOT NULL DEFAULT '0',
"os_path" text NOT NULL,
"display_path" text NOT NULL,
- "photo_flags" bigint NOT NULL DEFAULT 0 ,
+ "photo_flags" bigint NOT NULL DEFAULT '0',
"allow_cid" text NOT NULL,
"allow_gid" text NOT NULL,
"deny_cid" text NOT NULL,
@@ -965,8 +965,8 @@ CREATE TABLE "poll" (
"poll_channel" bigint NOT NULL DEFAULT '0',
"poll_author" text NOT NULL,
"poll_desc" text NOT NULL,
- "poll_flags" bigint NOT NULL DEFAULT 0 ,
- "poll_votes" bigint NOT NULL DEFAULT 0 ,
+ "poll_flags" bigint NOT NULL DEFAULT '0',
+ "poll_votes" bigint NOT NULL DEFAULT '0',
PRIMARY KEY ("poll_id")
);
@@ -1002,7 +1002,7 @@ CREATE TABLE "profdef" (
create index "profdef_field_name" on profdef ("field_name");
CREATE TABLE "profext" (
"id" serial NOT NULL,
- "channel_id" bigint NOT NULL DEFAULT 0 ,
+ "channel_id" bigint NOT NULL DEFAULT '0',
"hash" text NOT NULL DEFAULT '',
"k" text NOT NULL DEFAULT '',
"v" text NOT NULL,
@@ -1018,8 +1018,8 @@ CREATE TABLE "profile" (
"aid" bigint NOT NULL DEFAULT '0',
"uid" bigint NOT NULL,
"profile_name" text NOT NULL,
- "is_default" numeric(1) NOT NULL DEFAULT 0 ,
- "hide_friends" numeric(1) NOT NULL DEFAULT 0 ,
+ "is_default" numeric(1) NOT NULL DEFAULT '0',
+ "hide_friends" numeric(1) NOT NULL DEFAULT '0',
"fullname" text NOT NULL,
"pdesc" text NOT NULL DEFAULT '',
"chandesc" text NOT NULL DEFAULT '',
@@ -1056,7 +1056,7 @@ CREATE TABLE "profile" (
"homepage" text NOT NULL DEFAULT '',
"photo" text NOT NULL,
"thumb" text NOT NULL,
- "publish" numeric(1) NOT NULL DEFAULT 0 ,
+ "publish" numeric(1) NOT NULL DEFAULT '0',
"profile_vcard" text NOT NULL DEFAULT '',
PRIMARY KEY ("id"),
UNIQUE ("profile_guid","uid")
@@ -1078,7 +1078,7 @@ create index "profile_guid" on profile ("profile_guid");
CREATE TABLE "profile_check" (
"id" serial NOT NULL,
"uid" bigint NOT NULL,
- "cid" bigint NOT NULL DEFAULT 0 ,
+ "cid" bigint NOT NULL DEFAULT '0',
"dfrn_id" text NOT NULL,
"sec" text NOT NULL,
"expire" bigint NOT NULL,
@@ -1113,8 +1113,8 @@ create index "session_sid" on session ("sid");
create index "session_expire" on session ("expire");
CREATE TABLE "shares" (
"share_id" serial NOT NULL,
- "share_type" bigint NOT NULL DEFAULT 0 ,
- "share_target" bigint NOT NULL DEFAULT 0 ,
+ "share_type" bigint NOT NULL DEFAULT '0',
+ "share_target" bigint NOT NULL DEFAULT '0',
"share_xchan" text NOT NULL DEFAULT '',
PRIMARY KEY ("share_id")
);
@@ -1124,8 +1124,8 @@ create index "share_xchan" on shares ("share_xchan");
CREATE TABLE "sign" (
"id" serial NOT NULL,
- "iid" bigint NOT NULL DEFAULT 0 ,
- "retract_iid" bigint NOT NULL DEFAULT 0 ,
+ "iid" bigint NOT NULL DEFAULT '0',
+ "retract_iid" bigint NOT NULL DEFAULT '0',
"signed_text" text NOT NULL,
"signature" text NOT NULL,
"signer" text NOT NULL,
@@ -1136,19 +1136,19 @@ create index "sign_retract_iid" on "sign" ("retract_iid");
CREATE TABLE "site" (
"site_url" text NOT NULL,
- "site_access" bigint NOT NULL DEFAULT 0 ,
- "site_flags" bigint NOT NULL DEFAULT 0 ,
+ "site_access" bigint NOT NULL DEFAULT '0',
+ "site_flags" bigint NOT NULL DEFAULT '0',
"site_update" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"site_pull" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"site_sync" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"site_directory" text NOT NULL DEFAULT '',
- "site_register" bigint NOT NULL DEFAULT 0 ,
+ "site_register" bigint NOT NULL DEFAULT '0',
"site_sellpage" text NOT NULL DEFAULT '',
"site_location" text NOT NULL DEFAULT '',
"site_realm" text NOT NULL DEFAULT '',
- "site_valid" smallint NOT NULL DEFAULT 0 ,
- "site_dead" smallint NOT NULL DEFAULT 0 ,
- "site_type" smallint NOT NULL DEFAULT 0 ,
+ "site_valid" smallint NOT NULL DEFAULT '0',
+ "site_dead" smallint NOT NULL DEFAULT '0',
+ "site_type" smallint NOT NULL DEFAULT '0',
"site_project" text NOT NULL DEFAULT '',
"site_version" text NOT NULL DEFAULT '',
"site_crypto" text NOT NULL DEFAULT '',
@@ -1168,7 +1168,7 @@ create index "site_project" on site ("site_project");
CREATE TABLE "source" (
"src_id" serial NOT NULL,
- "src_channel_id" bigint NOT NULL DEFAULT 0 ,
+ "src_channel_id" bigint NOT NULL DEFAULT '0',
"src_channel_xchan" text NOT NULL DEFAULT '',
"src_xchan" text NOT NULL DEFAULT '',
"src_patt" text NOT NULL DEFAULT '',
@@ -1188,8 +1188,8 @@ CREATE TABLE "sys_perms" (
);
CREATE TABLE "term" (
"tid" serial NOT NULL,
- "aid" bigint NOT NULL DEFAULT 0 ,
- "uid" bigint NOT NULL DEFAULT 0 ,
+ "aid" bigint NOT NULL DEFAULT '0',
+ "uid" bigint NOT NULL DEFAULT '0',
"oid" bigint NOT NULL,
"otype" numeric(3) NOT NULL,
"ttype" numeric(3) NOT NULL,
@@ -1228,7 +1228,7 @@ CREATE TABLE "updates" (
"ud_guid" text NOT NULL DEFAULT '',
"ud_date" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"ud_last" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- "ud_flags" bigint NOT NULL DEFAULT 0 ,
+ "ud_flags" bigint NOT NULL DEFAULT '0',
"ud_addr" text NOT NULL DEFAULT '',
PRIMARY KEY ("ud_id")
);
@@ -1240,7 +1240,7 @@ create index "ud_addr" on updates ("ud_addr");
create index "ud_last" on updates ("ud_last");
CREATE TABLE "verify" (
"id" serial NOT NULL,
- "channel" bigint NOT NULL DEFAULT 0 ,
+ "channel" bigint NOT NULL DEFAULT '0',
"vtype" varchar(32) NOT NULL DEFAULT '',
"token" text NOT NULL DEFAULT '',
"meta" text NOT NULL DEFAULT '',
@@ -1282,16 +1282,16 @@ CREATE TABLE "xchan" (
"xchan_name" text NOT NULL DEFAULT '',
"xchan_network" text NOT NULL DEFAULT '',
"xchan_instance_url" text NOT NULL DEFAULT '',
- "xchan_flags" bigint NOT NULL DEFAULT 0 ,
+ "xchan_flags" bigint NOT NULL DEFAULT '0',
"xchan_photo_date" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
"xchan_name_date" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- "xchan_hidden" smallint NOT NULL DEFAULT 0 ,
- "xchan_orphan" smallint NOT NULL DEFAULT 0 ,
- "xchan_censored" smallint NOT NULL DEFAULT 0 ,
- "xchan_selfcensored" smallint NOT NULL DEFAULT 0 ,
- "xchan_system" smallint NOT NULL DEFAULT 0 ,
- "xchan_pubforum" smallint NOT NULL DEFAULT 0 ,
- "xchan_deleted" smallint NOT NULL DEFAULT 0 ,
+ "xchan_hidden" smallint NOT NULL DEFAULT '0',
+ "xchan_orphan" smallint NOT NULL DEFAULT '0',
+ "xchan_censored" smallint NOT NULL DEFAULT '0',
+ "xchan_selfcensored" smallint NOT NULL DEFAULT '0',
+ "xchan_system" smallint NOT NULL DEFAULT '0',
+ "xchan_pubforum" smallint NOT NULL DEFAULT '0',
+ "xchan_deleted" smallint NOT NULL DEFAULT '0',
PRIMARY KEY ("xchan_hash")
);
create index "xchan_guid" on xchan ("xchan_guid");
@@ -1336,7 +1336,7 @@ create index "xconfig_cat" on xconfig ("cat");
create index "xconfig_k" on xconfig ("k");
CREATE TABLE "xign" (
"id" serial NOT NULL,
- "uid" bigint NOT NULL DEFAULT 0 ,
+ "uid" bigint NOT NULL DEFAULT '0',
"xchan" text NOT NULL DEFAULT '',
PRIMARY KEY ("id")
);
@@ -1346,10 +1346,10 @@ CREATE TABLE "xlink" (
"xlink_id" serial NOT NULL,
"xlink_xchan" text NOT NULL DEFAULT '',
"xlink_link" text NOT NULL DEFAULT '',
- "xlink_rating" bigint NOT NULL DEFAULT 0 ,
+ "xlink_rating" bigint NOT NULL DEFAULT '0',
"xlink_rating_text" TEXT NOT NULL DEFAULT '',
"xlink_updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
- "xlink_static" numeric(1) NOT NULL DEFAULT 0 ,
+ "xlink_static" numeric(1) NOT NULL DEFAULT '0',
"xlink_sig" text NOT NULL DEFAULT '',
PRIMARY KEY ("xlink_id")
);
@@ -1361,7 +1361,7 @@ create index "xlink_static" on xlink ("xlink_static");
CREATE TABLE "xperm" (
"xp_id" serial NOT NULL,
"xp_client" varchar( 20 ) NOT NULL DEFAULT '',
- "xp_channel" bigint NOT NULL DEFAULT 0 ,
+ "xp_channel" bigint NOT NULL DEFAULT '0',
"xp_perm" varchar( 64 ) NOT NULL DEFAULT '',
PRIMARY KEY ("xp_id")
);
@@ -1370,7 +1370,7 @@ create index "xp_channel" on xperm ("xp_channel");
create index "xp_perm" on xperm ("xp_perm");
CREATE TABLE "xprof" (
"xprof_hash" text NOT NULL,
- "xprof_age" numeric(3) NOT NULL DEFAULT 0 ,
+ "xprof_age" numeric(3) NOT NULL DEFAULT '0',
"xprof_desc" text NOT NULL DEFAULT '',
"xprof_dob" varchar(12) NOT NULL DEFAULT '',
"xprof_gender" text NOT NULL DEFAULT '',
@@ -1401,7 +1401,7 @@ CREATE TABLE "xtag" (
"xtag_id" serial NOT NULL,
"xtag_hash" text NOT NULL,
"xtag_term" text NOT NULL DEFAULT '',
- "xtag_flags" bigint NOT NULL DEFAULT 0 ,
+ "xtag_flags" bigint NOT NULL DEFAULT '0',
PRIMARY KEY ("xtag_id")
);
create index "xtag_term" on xtag ("xtag_term");
diff --git a/library/jqupload/.gitignore b/library/blueimp_upload/.gitignore
similarity index 100%
rename from library/jqupload/.gitignore
rename to library/blueimp_upload/.gitignore
diff --git a/library/jqupload/.jshintrc b/library/blueimp_upload/.jshintrc
similarity index 100%
rename from library/jqupload/.jshintrc
rename to library/blueimp_upload/.jshintrc
diff --git a/library/blueimp_upload/.npmignore b/library/blueimp_upload/.npmignore
new file mode 100644
index 000000000..0530f5dbd
--- /dev/null
+++ b/library/blueimp_upload/.npmignore
@@ -0,0 +1,20 @@
+*
+!css/jquery.fileupload-noscript.css
+!css/jquery.fileupload-ui-noscript.css
+!css/jquery.fileupload-ui.css
+!css/jquery.fileupload.css
+!img/loading.gif
+!img/progressbar.gif
+!js/cors/jquery.postmessage-transport.js
+!js/cors/jquery.xdr-transport.js
+!js/vendor/jquery.ui.widget.js
+!js/jquery.fileupload-angular.js
+!js/jquery.fileupload-audio.js
+!js/jquery.fileupload-image.js
+!js/jquery.fileupload-jquery-ui.js
+!js/jquery.fileupload-process.js
+!js/jquery.fileupload-ui.js
+!js/jquery.fileupload-validate.js
+!js/jquery.fileupload-video.js
+!js/jquery.fileupload.js
+!js/jquery.iframe-transport.js
diff --git a/library/blueimp_upload/LICENSE b/library/blueimp_upload/LICENSE
deleted file mode 100644
index 0ecca3e8c..000000000
--- a/library/blueimp_upload/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2017 jQuery-File-Upload Authors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/library/blueimp_upload/LICENSE.txt b/library/blueimp_upload/LICENSE.txt
new file mode 100644
index 000000000..87a644638
--- /dev/null
+++ b/library/blueimp_upload/LICENSE.txt
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright © 2010 Sebastian Tschan, https://blueimp.net
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/library/blueimp_upload/README.md b/library/blueimp_upload/README.md
index 56785b847..76bdf89d5 100644
--- a/library/blueimp_upload/README.md
+++ b/library/blueimp_upload/README.md
@@ -39,7 +39,7 @@ Supports cross-domain, chunked and resumable file uploads and client-side image
* **Multiple plugin instances:**
Allows to use multiple plugin instances on the same webpage.
* **Customizable and extensible:**
- Provides an API to set individual options and define callBack methods for various upload events.
+ Provides an API to set individual options and define callback methods for various upload events.
* **Multipart and file contents stream uploads:**
Files can be uploaded as standard "multipart/form-data" or file contents stream (HTTP PUT file upload).
* **Compatible with any server-side application platform:**
@@ -60,7 +60,7 @@ Supports cross-domain, chunked and resumable file uploads and client-side image
* [Bootstrap](http://getbootstrap.com/) v. 3.2.0+
* [Glyphicons](http://glyphicons.com/)
-The user interface of all versions except the jQuery UI version is built with [Bootstrap](http://getbootstrap.com/) and icons from [Glyphicons](http://glyphicons.com/).
+The user interface of all versions, except the jQuery UI version, is built with [Bootstrap](http://getbootstrap.com/) and icons from [Glyphicons](http://glyphicons.com/).
### Cross-domain requirements
[Cross-domain File Uploads](https://github.com/blueimp/jQuery-File-Upload/wiki/Cross-domain-uploads) using the [Iframe Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.iframe-transport.js) require a redirect back to the origin server to retrieve the upload results. The [example implementation](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/main.js) makes use of [result.html](https://github.com/blueimp/jQuery-File-Upload/blob/master/cors/result.html) as a static redirect page for the origin server.
diff --git a/library/blueimp_upload/angularjs.html b/library/blueimp_upload/angularjs.html
index 4858c8600..2051bbf79 100644
--- a/library/blueimp_upload/angularjs.html
+++ b/library/blueimp_upload/angularjs.html
@@ -22,11 +22,11 @@
-
+
-
+
@@ -79,7 +79,7 @@
-