Missing stuff in "develop"? (#5516)

* "post-type" replaces "bookmark" and "type"

* Removed some more type

* Added index to permission set

* The permission set is now stored

* The permission set is now removed upon expiry

* Post update now stores the permission set

* New file

* Permissions are now sorted

* The permission set is now used for item permissions

* Check for allow_cid, ... is superfluous. Checking for "private" is enough

* We query the permissionset

* Permissions are displayed correctly

* Changed index

* We don't store the permissions in the item table anymore

* Permission fields are now deprecated

* Reversed ...

* Postupdate now handles "postopts" as well

* Set deprecated fields to "null" if empty

* Postupdates are enabled again

* "post-type" replaces "bookmark" and "type"

* The permission set is now stored

* The permission set is now removed upon expiry

* Postupdate now handles "postopts" as well
This commit is contained in:
Michael Vogel 2018-07-28 19:11:46 +02:00 committed by Hypolite Petovan
parent 0902ea508d
commit 36d4516e7a
5 changed files with 19 additions and 7 deletions

View File

@ -262,8 +262,7 @@ class PostUpdate
$item['owner-id'] = Contact::getIdForURL($item["owner-link"], 0, false, $default); $item['owner-id'] = Contact::getIdForURL($item["owner-link"], 0, false, $default);
} }
if (!is_null($item['allow_cid']) && !is_null($item['allow_gid']) if (empty($item['psid'])) {
&& !is_null($item['deny_cid']) && !is_null($item['deny_gid'])) {
$item['psid'] = PermissionSet::fetchIDForPost($item); $item['psid'] = PermissionSet::fetchIDForPost($item);
} else { } else {
$item['allow_cid'] = null; $item['allow_cid'] = null;

View File

@ -16,6 +16,7 @@ use Friendica\Core\System;
use Friendica\Core\Worker; use Friendica\Core\Worker;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\PermissionSet;
use Friendica\Object\Image; use Friendica\Object\Image;
use Friendica\Protocol\Diaspora; use Friendica\Protocol\Diaspora;
use Friendica\Protocol\OStatus; use Friendica\Protocol\OStatus;

View File

@ -22,11 +22,6 @@ class PermissionSet extends BaseObject
*/ */
public static function fetchIDForPost(&$postarray) public static function fetchIDForPost(&$postarray)
{ {
if (is_null($postarray['allow_cid']) || is_null($postarray['allow_gid'])
|| is_null($postarray['deny_cid']) || is_null($postarray['deny_gid'])) {
return null;
}
$condition = ['uid' => $postarray['uid'], $condition = ['uid' => $postarray['uid'],
'allow_cid' => self::sortPermissions(defaults($postarray, 'allow_cid', '')), 'allow_cid' => self::sortPermissions(defaults($postarray, 'allow_cid', '')),
'allow_gid' => self::sortPermissions(defaults($postarray, 'allow_gid', '')), 'allow_gid' => self::sortPermissions(defaults($postarray, 'allow_gid', '')),

View File

@ -43,6 +43,11 @@ class Expire
if (!empty($row['psid']) && !DBA::exists('item', ['psid' => $row['psid']])) { if (!empty($row['psid']) && !DBA::exists('item', ['psid' => $row['psid']])) {
DBA::delete('permissionset', ['id' => $row['psid']]); DBA::delete('permissionset', ['id' => $row['psid']]);
} }
// When the permission set will be used in photo and events as well.
// this query here needs to be extended.
if (!empty($row['psid']) && !dba::exists('item', ['psid' => $row['psid']])) {
dba::delete('permissionset', ['id' => $row['psid']]);
}
} }
DBA::close($rows); DBA::close($rows);

View File

@ -258,3 +258,15 @@ function update_1278() {
return UPDATE_SUCCESS; return UPDATE_SUCCESS;
} }
function update_1278() {
Config::set('system', 'maintenance', 1);
Config::set('system', 'maintenance_reason', L10n::t('%s: Updating post-type.', DBM::date().' '.date('e')));
Item::update(['post-type' => Item::PT_PAGE], ['bookmark' => true]);
Item::update(['post-type' => Item::PT_PERSONAL_NOTE], ['type' => 'note']);
Config::set('system', 'maintenance', 0);
return UPDATE_SUCCESS;
}