Merge branch 'master' into develop
15
CHANGELOG.md
@ -1,11 +1,22 @@
|
||||
HumHub Changelog
|
||||
================
|
||||
|
||||
1.15.3 (Unreleased)
|
||||
-------------------
|
||||
1.15.3 (February 8, 2024)
|
||||
-------------------------
|
||||
- Fix #6713: Keep class option for Pjax Widget
|
||||
- Enh #6779: Added Twig Sandbox Extension for Statistic Tracking Codes
|
||||
- Fix #6791: Fix number of filtered modules on Marketplace
|
||||
- Fix #6744: Make sure to call `humhub\components\Module::update()` on Module updates
|
||||
- Fix #6796: Files in the RichText doesn't open as new tab
|
||||
- Fix #6800: Fix missed domain of profile url in email notifications
|
||||
- Fix #6801: Add missed twemoji images
|
||||
- Fix: Iso3166Codes class calls
|
||||
- Fix #6813: Fix for displaying whether I follow a user
|
||||
- Fix #6126: `Session::$timeout` takes effect before configured `User::$authTimeout`
|
||||
- Fix #6795: Fix searching of disabled users in Administration
|
||||
- Fix #6834: Fix notification switcher in wall stream entry context menu
|
||||
- Fix #6836: Fix check permission of changing content to public from context menu
|
||||
- Fix #6837: Fix saving of public content
|
||||
|
||||
1.15.2 (December 19, 2023)
|
||||
--------------------------
|
||||
|
@ -342,15 +342,10 @@ class Module extends \yii\base\Module
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
if (!$this->beforeUpdate()) {
|
||||
return null;
|
||||
if ($this->beforeUpdate() !== false) {
|
||||
$this->migrate();
|
||||
$this->afterUpdate();
|
||||
}
|
||||
|
||||
$result = $this->getMigrationService()->migrateUp();
|
||||
|
||||
$this->afterUpdate();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -359,6 +354,8 @@ class Module extends \yii\base\Module
|
||||
* The update will cancel if this function does return false;
|
||||
*
|
||||
* @return bool
|
||||
* @deprecated
|
||||
*
|
||||
*/
|
||||
public function beforeUpdate()
|
||||
{
|
||||
@ -367,6 +364,8 @@ class Module extends \yii\base\Module
|
||||
|
||||
/**
|
||||
* Called right after the module update.
|
||||
*
|
||||
* @deprecated
|
||||
*/
|
||||
public function afterUpdate()
|
||||
{
|
||||
|
@ -243,6 +243,7 @@ abstract class SocialActivity extends BaseObject implements rendering\Viewable
|
||||
/**
|
||||
* Url of the origin of this notification
|
||||
* If source is a Content / ContentAddon / ContentContainer this will automatically generated.
|
||||
* NOTE: Returned URL must be absolute with scheme
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
@ -252,10 +253,10 @@ abstract class SocialActivity extends BaseObject implements rendering\Viewable
|
||||
|
||||
if ($this->source instanceof Comment) {
|
||||
$url = $this->source->getUrl();
|
||||
} elseif ($this->hasContent()) {
|
||||
$url = $this->getContent()->getUrl();
|
||||
} else if ($this->hasContent()) {
|
||||
$url = $this->getContent()->getUrl(true);
|
||||
} elseif ($this->source instanceof ContentContainerActiveRecord) {
|
||||
$url = $this->source->getUrl();
|
||||
$url = $this->source->getUrl(true);
|
||||
}
|
||||
|
||||
// Create absolute URL, for E-Mails
|
||||
|
@ -113,7 +113,7 @@ class UserSearch extends User
|
||||
['like', 'concat(profile.lastname, " ", profile.firstname)', $this->freeText],
|
||||
]);
|
||||
|
||||
if (!empty($this->status)) {
|
||||
if (isset($this->status) && in_array($this->status, [User::STATUS_ENABLED, User::STATUS_DISABLED, User::STATUS_SOFT_DELETED])) {
|
||||
$query->andFilterWhere(['user.status' => $this->status]);
|
||||
}
|
||||
return $dataProvider;
|
||||
|
@ -208,7 +208,7 @@ class ContentController extends Controller
|
||||
|
||||
if (!$content) {
|
||||
throw new NotFoundHttpException(Yii::t('ContentModule.base', 'Invalid content id given!'));
|
||||
} elseif (!$content->canEdit()) {
|
||||
} elseif (!$content->canEdit() || (!$content->visibility && !$content->container->visibility)) {
|
||||
throw new ForbiddenHttpException();
|
||||
} elseif ($content->isPrivate() && !$content->container->permissionManager->can(new CreatePublicContent())) {
|
||||
throw new ForbiddenHttpException();
|
||||
|
@ -229,10 +229,20 @@ class Content extends ActiveRecord implements Movable, ContentOwner, Archiveable
|
||||
}
|
||||
|
||||
$this->archived ??= 0;
|
||||
$this->visibility ??= self::VISIBILITY_PRIVATE;
|
||||
$this->pinned ??= 0;
|
||||
$this->state ??= Content::STATE_PUBLISHED;
|
||||
|
||||
$this->visibility ??= self::VISIBILITY_PRIVATE;
|
||||
// Force to private content for private space or if user has no permission to create public content
|
||||
if ($this->container instanceof Space &&
|
||||
$this->container->visibility !== Space::VISIBILITY_ALL &&
|
||||
$this->visibility === self::VISIBILITY_PUBLIC) {
|
||||
if ($this->container->visibility === Space::VISIBILITY_NONE ||
|
||||
!$this->container->can(CreatePublicContent::class)) {
|
||||
$this->visibility = self::VISIBILITY_PRIVATE;
|
||||
}
|
||||
}
|
||||
|
||||
if ($insert) {
|
||||
$this->created_by ??= Yii::$app->user->id;
|
||||
}
|
||||
|
@ -102,8 +102,8 @@ humhub.module('content.container', function (module, require, $) {
|
||||
if (response.success) {
|
||||
const contentId = event.$trigger.data('content-id');
|
||||
|
||||
$('#notification_off_' + contentId).hide();
|
||||
$('#notification_on_' + contentId).show();
|
||||
$('#notification_on_' + contentId).hide();
|
||||
$('#notification_off_' + contentId).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -113,8 +113,8 @@ humhub.module('content.container', function (module, require, $) {
|
||||
if (response.success) {
|
||||
const contentId = event.$trigger.data('content-id');
|
||||
|
||||
$('#notification_on_' + contentId).hide();
|
||||
$('#notification_off_' + contentId).show();
|
||||
$('#notification_off_' + contentId).hide();
|
||||
$('#notification_on_' + contentId).show();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
@ -70,6 +70,7 @@ class ContentVisibilityTest extends ContentModelTest
|
||||
|
||||
public function testCreatePublicContentOnProtectedSpace()
|
||||
{
|
||||
$this->space->addMember(Yii::$app->user->id);
|
||||
$this->space->visibility = Space::VISIBILITY_REGISTERED_ONLY;
|
||||
|
||||
$newModel = new TestContent($this->space, Content::VISIBILITY_PUBLIC, [
|
||||
|
@ -45,6 +45,7 @@ ContentContainerAsset::register($this);
|
||||
'data' => [
|
||||
'action-click' => 'content.container.turnOnNotifications',
|
||||
'action-url' => Url::to(['/content/content/notification-switch', 'id' => $content->id, 'switch' => 1]),
|
||||
'content-id' => $content->id,
|
||||
]
|
||||
]
|
||||
); ?>
|
||||
|
@ -163,7 +163,7 @@ class DashboardMemberStreamQueryTest extends DashboardStreamTest
|
||||
|
||||
public function testSpaceFollowerDoesNotSeePublicContentOnPrivateSpace()
|
||||
{
|
||||
$this->assertSpaceFollowerDoesSee(Space::VISIBILITY_NONE, Content::VISIBILITY_PUBLIC);
|
||||
$this->assertSpaceFollowerDoesNotSee(Space::VISIBILITY_NONE, Content::VISIBILITY_PUBLIC);
|
||||
}
|
||||
|
||||
public function testSpaceFollowerDoesNotSeePrivateContentOnPrivateSpace()
|
||||
|
@ -39,7 +39,7 @@ class Request extends BaseNotification
|
||||
*/
|
||||
public function getUrl()
|
||||
{
|
||||
return $this->originator->getUrl();
|
||||
return $this->originator->getUrl(true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -47,7 +47,7 @@ class RequestApproved extends BaseNotification
|
||||
*/
|
||||
public function getUrl()
|
||||
{
|
||||
return $this->originator->getUrl();
|
||||
return $this->originator->getUrl(true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -52,7 +52,7 @@ class RequestDeclined extends BaseNotification
|
||||
*/
|
||||
public function getUrl()
|
||||
{
|
||||
return $this->originator->getUrl();
|
||||
return $this->originator->getUrl(true);
|
||||
}
|
||||
|
||||
public function getMailSubject()
|
||||
|
@ -179,6 +179,7 @@ class OnlineModuleManager extends Component
|
||||
|
||||
$updatedModule = Yii::$app->moduleManager->getModule($moduleId);
|
||||
$updatedModule->getMigrationService()->migrateUp();
|
||||
$updatedModule->update();
|
||||
|
||||
(new MarketplaceService())->refreshPendingModuleUpdateCount();
|
||||
|
||||
|
@ -42,7 +42,7 @@ class MemberAdded extends BaseActivity implements ConfigurableActivityInterface
|
||||
public function getUrl()
|
||||
{
|
||||
if ($this->originator) {
|
||||
return $this->originator->getUrl();
|
||||
return $this->originator->getUrl(true);
|
||||
}
|
||||
|
||||
return parent::getUrl();
|
||||
|
@ -11,6 +11,7 @@ namespace humhub\modules\ui\form\widgets;
|
||||
use humhub\modules\content\components\ContentActiveRecord;
|
||||
use humhub\modules\content\components\ContentContainerActiveRecord;
|
||||
use humhub\modules\content\models\Content;
|
||||
use humhub\modules\content\permissions\CreatePublicContent;
|
||||
use humhub\modules\space\models\Space;
|
||||
use Yii;
|
||||
use yii\bootstrap\InputWidget;
|
||||
@ -115,9 +116,11 @@ class ContentVisibilitySelect extends InputWidget
|
||||
$contentContainer = $this->getContentContainer();
|
||||
|
||||
// Should hide on private spaces (Only provide private content visibility option)
|
||||
if ($contentContainer instanceof Space) {
|
||||
// or if user has no permission to create public content
|
||||
if ($contentContainer instanceof Space && $contentContainer->visibility !== Space::VISIBILITY_ALL) {
|
||||
/** @var Space $contentContainer */
|
||||
if ($contentContainer->visibility == Space::VISIBILITY_NONE) {
|
||||
if ($contentContainer->visibility === Space::VISIBILITY_NONE ||
|
||||
!$contentContainer->can(CreatePublicContent::class)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ class Followable extends Behavior
|
||||
public function getFollowRecord($userId)
|
||||
{
|
||||
$userId = ($userId instanceof User) ? $userId->id : $userId;
|
||||
return Yii::$app->runtimeCache->getOrSet(__METHOD__ . $userId, function () use ($userId) {
|
||||
return Yii::$app->runtimeCache->getOrSet(__METHOD__ . $this->owner->getPrimaryKey() . '-' . $userId, function () use ($userId) {
|
||||
return Follow::find()
|
||||
->where([
|
||||
'object_model' => get_class($this->owner),
|
||||
|
@ -39,6 +39,14 @@ class Session extends DbSession
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function getTimeout()
|
||||
{
|
||||
return (int) Yii::$app->user->authTimeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
|
@ -11,13 +11,14 @@ namespace humhub\modules\user\models\fieldtype;
|
||||
use Collator;
|
||||
use humhub\libs\Iso3166Codes;
|
||||
use humhub\modules\user\models\User;
|
||||
use humhub\libs\Html;
|
||||
use Yii;
|
||||
use yii\helpers\Html;
|
||||
|
||||
/**
|
||||
* ProfileFieldTypeSelect handles numeric profile fields.
|
||||
*
|
||||
* @package humhub.modules_core.user.models
|
||||
* @package humhub\modules\user\models\fieldtype
|
||||
* @since 0.5
|
||||
*/
|
||||
class CountrySelect extends Select
|
||||
@ -56,17 +57,17 @@ class CountrySelect extends Select
|
||||
|
||||
// if no options set basically return a translated map of all defined countries
|
||||
if (empty($this->options) || trim($this->options) == false) {
|
||||
$items = iso3166Codes::$countries;
|
||||
foreach ($items as $code => $value) {
|
||||
$items[$code] = iso3166Codes::country($code);
|
||||
$isoCodes = Iso3166Codes::$countries;
|
||||
|
||||
foreach ($isoCodes as $code => $value) {
|
||||
$items[Iso3166Codes::country($code)] = Iso3166Codes::country($code);
|
||||
}
|
||||
} else {
|
||||
foreach (explode(",", $this->options) as $code) {
|
||||
|
||||
$key = trim($code);
|
||||
$value = iso3166Codes::country($key, true);
|
||||
$value = Iso3166Codes::country($key, true);
|
||||
if (!empty($key) && $key !== $value) {
|
||||
$items[trim($key)] = trim($value);
|
||||
$items[$key] = trim($value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -87,7 +88,7 @@ class CountrySelect extends Select
|
||||
$value = $user->profile->$internalName;
|
||||
|
||||
if (!$raw) {
|
||||
return Html::encode(iso3166Codes::country($value));
|
||||
return Html::encode(Iso3166Codes::country($value));
|
||||
}
|
||||
|
||||
return $value;
|
||||
|
@ -47,7 +47,7 @@ class Followed extends BaseNotification
|
||||
throw new IntegrityException('Originator cannot be null.');
|
||||
}
|
||||
|
||||
return $this->originator->getUrl();
|
||||
return $this->originator->getUrl(true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
0
static/img/twemoji/72x72/1f6dd.png
Executable file → Normal file
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
0
static/img/twemoji/72x72/1f6de.png
Executable file → Normal file
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
0
static/img/twemoji/72x72/1f6df.png
Executable file → Normal file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
static/img/twemoji/72x72/1f7f0.png
Executable file → Normal file
Before Width: | Height: | Size: 188 B After Width: | Height: | Size: 188 B |
0
static/img/twemoji/72x72/1f91d-1f3fb.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1f91d-1f3fc.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1f91d-1f3fd.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1f91d-1f3fe.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1f91d-1f3ff.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1f979.png
Executable file → Normal file
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
static/img/twemoji/72x72/1f9cc.png
Executable file → Normal file
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
0
static/img/twemoji/72x72/1fa7b.png
Executable file → Normal file
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
0
static/img/twemoji/72x72/1fa7c.png
Executable file → Normal file
Before Width: | Height: | Size: 661 B After Width: | Height: | Size: 661 B |
0
static/img/twemoji/72x72/1faa9.png
Executable file → Normal file
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
0
static/img/twemoji/72x72/1faaa.png
Executable file → Normal file
Before Width: | Height: | Size: 381 B After Width: | Height: | Size: 381 B |
0
static/img/twemoji/72x72/1faab.png
Executable file → Normal file
Before Width: | Height: | Size: 805 B After Width: | Height: | Size: 805 B |
0
static/img/twemoji/72x72/1faac.png
Executable file → Normal file
Before Width: | Height: | Size: 948 B After Width: | Height: | Size: 948 B |
0
static/img/twemoji/72x72/1fab7.png
Executable file → Normal file
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
static/img/twemoji/72x72/1fab8.png
Executable file → Normal file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
static/img/twemoji/72x72/1fab9.png
Executable file → Normal file
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
0
static/img/twemoji/72x72/1faba.png
Executable file → Normal file
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
0
static/img/twemoji/72x72/1fac3-1f3fb.png
Executable file → Normal file
Before Width: | Height: | Size: 976 B After Width: | Height: | Size: 976 B |
0
static/img/twemoji/72x72/1fac3-1f3fc.png
Executable file → Normal file
Before Width: | Height: | Size: 1000 B After Width: | Height: | Size: 1000 B |
0
static/img/twemoji/72x72/1fac3-1f3fd.png
Executable file → Normal file
Before Width: | Height: | Size: 996 B After Width: | Height: | Size: 996 B |
0
static/img/twemoji/72x72/1fac3-1f3fe.png
Executable file → Normal file
Before Width: | Height: | Size: 1010 B After Width: | Height: | Size: 1010 B |
0
static/img/twemoji/72x72/1fac3-1f3ff.png
Executable file → Normal file
Before Width: | Height: | Size: 999 B After Width: | Height: | Size: 999 B |
0
static/img/twemoji/72x72/1fac3.png
Executable file → Normal file
Before Width: | Height: | Size: 1018 B After Width: | Height: | Size: 1018 B |
0
static/img/twemoji/72x72/1fac4-1f3fb.png
Executable file → Normal file
Before Width: | Height: | Size: 998 B After Width: | Height: | Size: 998 B |
0
static/img/twemoji/72x72/1fac4-1f3fc.png
Executable file → Normal file
Before Width: | Height: | Size: 997 B After Width: | Height: | Size: 997 B |
0
static/img/twemoji/72x72/1fac4-1f3fd.png
Executable file → Normal file
Before Width: | Height: | Size: 1002 B After Width: | Height: | Size: 1002 B |
0
static/img/twemoji/72x72/1fac4-1f3fe.png
Executable file → Normal file
Before Width: | Height: | Size: 1005 B After Width: | Height: | Size: 1005 B |
0
static/img/twemoji/72x72/1fac4-1f3ff.png
Executable file → Normal file
Before Width: | Height: | Size: 983 B After Width: | Height: | Size: 983 B |
0
static/img/twemoji/72x72/1fac4.png
Executable file → Normal file
Before Width: | Height: | Size: 1000 B After Width: | Height: | Size: 1000 B |
0
static/img/twemoji/72x72/1fac5-1f3fb.png
Executable file → Normal file
Before Width: | Height: | Size: 1014 B After Width: | Height: | Size: 1014 B |
0
static/img/twemoji/72x72/1fac5-1f3fc.png
Executable file → Normal file
Before Width: | Height: | Size: 1011 B After Width: | Height: | Size: 1011 B |
0
static/img/twemoji/72x72/1fac5-1f3fd.png
Executable file → Normal file
Before Width: | Height: | Size: 1011 B After Width: | Height: | Size: 1011 B |
0
static/img/twemoji/72x72/1fac5-1f3fe.png
Executable file → Normal file
Before Width: | Height: | Size: 1013 B After Width: | Height: | Size: 1013 B |
0
static/img/twemoji/72x72/1fac5-1f3ff.png
Executable file → Normal file
Before Width: | Height: | Size: 1011 B After Width: | Height: | Size: 1011 B |
0
static/img/twemoji/72x72/1fac5.png
Executable file → Normal file
Before Width: | Height: | Size: 1010 B After Width: | Height: | Size: 1010 B |
0
static/img/twemoji/72x72/1fad7.png
Executable file → Normal file
Before Width: | Height: | Size: 1010 B After Width: | Height: | Size: 1010 B |
0
static/img/twemoji/72x72/1fad8.png
Executable file → Normal file
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
static/img/twemoji/72x72/1fad9.png
Executable file → Normal file
Before Width: | Height: | Size: 814 B After Width: | Height: | Size: 814 B |
0
static/img/twemoji/72x72/1fae0.png
Executable file → Normal file
Before Width: | Height: | Size: 707 B After Width: | Height: | Size: 707 B |
0
static/img/twemoji/72x72/1fae1.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1fae2.png
Executable file → Normal file
Before Width: | Height: | Size: 924 B After Width: | Height: | Size: 924 B |
0
static/img/twemoji/72x72/1fae3.png
Executable file → Normal file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
static/img/twemoji/72x72/1fae4.png
Executable file → Normal file
Before Width: | Height: | Size: 600 B After Width: | Height: | Size: 600 B |
0
static/img/twemoji/72x72/1fae5.png
Executable file → Normal file
Before Width: | Height: | Size: 1000 B After Width: | Height: | Size: 1000 B |
0
static/img/twemoji/72x72/1fae6.png
Executable file → Normal file
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 646 B |
0
static/img/twemoji/72x72/1fae7.png
Executable file → Normal file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
static/img/twemoji/72x72/1faf0-1f3fb.png
Executable file → Normal file
Before Width: | Height: | Size: 861 B After Width: | Height: | Size: 861 B |
0
static/img/twemoji/72x72/1faf0-1f3fc.png
Executable file → Normal file
Before Width: | Height: | Size: 861 B After Width: | Height: | Size: 861 B |
0
static/img/twemoji/72x72/1faf0-1f3fd.png
Executable file → Normal file
Before Width: | Height: | Size: 861 B After Width: | Height: | Size: 861 B |
0
static/img/twemoji/72x72/1faf0-1f3fe.png
Executable file → Normal file
Before Width: | Height: | Size: 861 B After Width: | Height: | Size: 861 B |
0
static/img/twemoji/72x72/1faf0-1f3ff.png
Executable file → Normal file
Before Width: | Height: | Size: 861 B After Width: | Height: | Size: 861 B |
0
static/img/twemoji/72x72/1faf0.png
Executable file → Normal file
Before Width: | Height: | Size: 861 B After Width: | Height: | Size: 861 B |
0
static/img/twemoji/72x72/1faf1-1f3fb-200d-1faf2-1f3fc.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fb-200d-1faf2-1f3fd.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fb-200d-1faf2-1f3fe.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fb-200d-1faf2-1f3ff.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fb.png
Executable file → Normal file
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 499 B |
0
static/img/twemoji/72x72/1faf1-1f3fc-200d-1faf2-1f3fb.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fc-200d-1faf2-1f3fd.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fc-200d-1faf2-1f3fe.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fc-200d-1faf2-1f3ff.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fc.png
Executable file → Normal file
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 499 B |
0
static/img/twemoji/72x72/1faf1-1f3fd-200d-1faf2-1f3fb.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fd-200d-1faf2-1f3fc.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fd-200d-1faf2-1f3fe.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fd-200d-1faf2-1f3ff.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fd.png
Executable file → Normal file
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 499 B |
0
static/img/twemoji/72x72/1faf1-1f3fe-200d-1faf2-1f3fb.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fe-200d-1faf2-1f3fc.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fe-200d-1faf2-1f3fd.png
Executable file → Normal file
Before Width: | Height: | Size: 1023 B After Width: | Height: | Size: 1023 B |
0
static/img/twemoji/72x72/1faf1-1f3fe-200d-1faf2-1f3ff.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3fe.png
Executable file → Normal file
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 499 B |
0
static/img/twemoji/72x72/1faf1-1f3ff-200d-1faf2-1f3fb.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3ff-200d-1faf2-1f3fc.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3ff-200d-1faf2-1f3fd.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
static/img/twemoji/72x72/1faf1-1f3ff-200d-1faf2-1f3fe.png
Executable file → Normal file
Before Width: | Height: | Size: 1016 B After Width: | Height: | Size: 1016 B |