aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2014-03-31 16:25:05 -0700
committerfriendica <info@friendica.com>2014-03-31 16:25:05 -0700
commitced6d826334c3d4979c296bb292fbc393cc6a034 (patch)
treecd4a337a494bfd22f15ef4374f5ab4e13806367e
parent1108eaaed0cf451668dcaf04bd532a3615724dbc (diff)
downloadvolse-hubzilla-ced6d826334c3d4979c296bb292fbc393cc6a034.tar.gz
volse-hubzilla-ced6d826334c3d4979c296bb292fbc393cc6a034.tar.bz2
volse-hubzilla-ced6d826334c3d4979c296bb292fbc393cc6a034.zip
finish up the source route storage so we can prevent messages from flowing upstream in complicated delivery chains
-rwxr-xr-xboot.php2
-rwxr-xr-xinclude/items.php27
-rw-r--r--install/database.sql23
-rw-r--r--install/update.php9
4 files changed, 31 insertions, 30 deletions
diff --git a/boot.php b/boot.php
index 737e11001..f274b264e 100755
--- a/boot.php
+++ b/boot.php
@@ -47,7 +47,7 @@ define ( 'RED_PLATFORM', 'Red Matrix' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'R');
define ( 'ZOT_REVISION', 1 );
-define ( 'DB_UPDATE_VERSION', 1104 );
+define ( 'DB_UPDATE_VERSION', 1105 );
define ( 'EOL', '<br />' . "\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
diff --git a/include/items.php b/include/items.php
index 71e89e1e2..b60c0c2f1 100755
--- a/include/items.php
+++ b/include/items.php
@@ -81,12 +81,8 @@ function collect_recipients($item,&$private) {
$recipients = check_list_permissions($item['uid'],$recipients,'view_stream');
- $routes = q("select * from route where iid = %d",
- intval($item['id'])
- );
-
- if($routes) {
- $route = explode(',',$routes[0]['route']);
+ if($item['route']) {
+ $route = explode(',',$item['route']);
if(count($route)) {
$route = array_unique($route);
$recipients = array_diff($recipients,$route);
@@ -156,21 +152,16 @@ function can_comment_on_post($observer_xchan,$item) {
function add_source_route($iid,$hash) {
if((! $iid) || (! $route))
return;
- $r = q("select * from route where iid = %d limit 1",
+ $r = q("select route from item where id = %d limit 1",
intval($iid)
);
- if($r && $r[0]['route']) {
- q("update route set route = '%s' where iid = %d limit 1",
- dbesc(',' . $hash),
+ if($r) {
+ $new_route = (($r[0]['route']) ? $r[0]['route'] . ',' : '') . $hash;
+ q("update item set route = '%s' where id = %d limit 1",
+ (dbesc($new_route)),
intval($iid)
);
}
- else {
- q("insert into route ( iid, route ) values ( %d, '%s') ",
- intval($iid),
- dbesc($route)
- );
- }
}
@@ -670,6 +661,7 @@ function get_item_elements($x) {
$arr['app'] = (($x['app']) ? htmlspecialchars($x['app'], ENT_COMPAT,'UTF-8',false) : '');
+ $arr['route'] = (($x['route']) ? htmlspecialchars($x['route'], ENT_COMPAT,'UTF-8',false) : '');
$arr['mid'] = (($x['message_id']) ? htmlspecialchars($x['message_id'], ENT_COMPAT,'UTF-8',false) : '');
$arr['parent_mid'] = (($x['message_top']) ? htmlspecialchars($x['message_top'], ENT_COMPAT,'UTF-8',false) : '');
$arr['thr_parent'] = (($x['message_parent']) ? htmlspecialchars($x['message_parent'], ENT_COMPAT,'UTF-8',false) : '');
@@ -681,7 +673,7 @@ function get_item_elements($x) {
$arr['mimetype'] = (($x['mimetype']) ? htmlspecialchars($x['mimetype'], ENT_COMPAT,'UTF-8',false) : '');
$arr['obj_type'] = (($x['object_type']) ? htmlspecialchars($x['object_type'], ENT_COMPAT,'UTF-8',false) : '');
$arr['tgt_type'] = (($x['target_type']) ? htmlspecialchars($x['target_type'], ENT_COMPAT,'UTF-8',false) : '');
- $arr['comment_policy'] = (($x['comment_scope']) ? htmlspecialchars($x['comment_scope'], ENT_COMPAT,'UTF-8',false) : 'contacts');
+ $arr['comment_policy'] = (($x['comment_scope']) ? htmlspecialchars($x['comment_scope'], ENT_COMPAT,'UTF-8',false) : 'contacts');
$arr['sig'] = (($x['signature']) ? htmlspecialchars($x['signature'], ENT_COMPAT,'UTF-8',false) : '');
@@ -870,6 +862,7 @@ function encode_item($item) {
$x['location'] = $item['location'];
$x['longlat'] = $item['coord'];
$x['signature'] = $item['sig'];
+ $x['route'] = $item['route'];
$x['owner'] = encode_item_xchan($item['owner']);
$x['author'] = encode_item_xchan($item['author']);
diff --git a/install/database.sql b/install/database.sql
index cbfca822c..329db698e 100644
--- a/install/database.sql
+++ b/install/database.sql
@@ -470,31 +470,32 @@ CREATE TABLE IF NOT EXISTS `item` (
`author_xchan` char(255) NOT NULL DEFAULT '',
`source_xchan` char(255) NOT NULL DEFAULT '',
`mimetype` char(255) NOT NULL DEFAULT '',
- `title` text NOT NULL,
- `body` mediumtext NOT NULL,
+ `title` text NOT NULL DEFAULT '',
+ `body` mediumtext NOT NULL DEFAULT '',
`app` char(255) NOT NULL DEFAULT '',
`lang` char(64) NOT NULL DEFAULT '',
`revision` int(10) unsigned NOT NULL DEFAULT '0',
`verb` char(255) NOT NULL DEFAULT '',
`obj_type` char(255) NOT NULL DEFAULT '',
- `object` text NOT NULL,
+ `object` text NOT NULL DEFAULT '',
`tgt_type` char(255) NOT NULL DEFAULT '',
- `target` text NOT NULL,
+ `target` text NOT NULL DEFAULT '',
`layout_mid` char(255) NOT NULL DEFAULT '',
- `postopts` text NOT NULL,
+ `postopts` text NOT NULL DEFAULT '',
+ `route` text NOT NULL DEFAULT '',
`llink` char(255) NOT NULL DEFAULT '',
`plink` char(255) NOT NULL DEFAULT '',
`resource_id` char(255) NOT NULL DEFAULT '',
`resource_type` char(16) NOT NULL DEFAULT '',
- `attach` mediumtext NOT NULL,
- `sig` text NOT NULL,
+ `attach` mediumtext NOT NULL DEFAULT '',
+ `sig` text NOT NULL DEFAULT '',
`location` char(255) NOT NULL DEFAULT '',
`coord` char(255) NOT NULL DEFAULT '',
`comment_policy` char(255) NOT NULL DEFAULT '',
- `allow_cid` mediumtext NOT NULL,
- `allow_gid` mediumtext NOT NULL,
- `deny_cid` mediumtext NOT NULL,
- `deny_gid` mediumtext NOT NULL,
+ `allow_cid` mediumtext NOT NULL DEFAULT '',
+ `allow_gid` mediumtext NOT NULL DEFAULT '',
+ `deny_cid` mediumtext NOT NULL DEFAULT '',
+ `deny_gid` mediumtext NOT NULL DEFAULT '',
`item_restrict` int(11) NOT NULL DEFAULT '0',
`item_flags` int(11) NOT NULL DEFAULT '0',
`item_private` tinyint(4) NOT NULL DEFAULT '0',
diff --git a/install/update.php b/install/update.php
index 06a60db79..55e404e4e 100644
--- a/install/update.php
+++ b/install/update.php
@@ -1,6 +1,6 @@
<?php
-define( 'UPDATE_VERSION' , 1104 );
+define( 'UPDATE_VERSION' , 1105 );
/**
*
@@ -1166,3 +1166,10 @@ function update_r1103() {
set_config('system','curl_ssl_ciphers','ALL:!eNULL');
return UPDATE_SUCCESS;
}
+
+function update_r1104() {
+ $r = q("ALTER TABLE `item` ADD `route` TEXT NOT NULL DEFAULT '' AFTER `postopts` ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}