mirror of
https://github.com/wbbaddons/Tims-Chat.git
synced 2024-12-22 21:40:08 +00:00
Fix Suspension commands and clean up
This commit is contained in:
parent
d64f11b315
commit
2936b2f3aa
@ -36,8 +36,9 @@ public function prune() {
|
|||||||
time < ?";
|
time < ?";
|
||||||
$stmt = \wcf\system\WCF::getDB()->prepareStatement($sql);
|
$stmt = \wcf\system\WCF::getDB()->prepareStatement($sql);
|
||||||
$stmt->execute(array(TIME_NOW - CHAT_LOG_ARCHIVETIME));
|
$stmt->execute(array(TIME_NOW - CHAT_LOG_ARCHIVETIME));
|
||||||
|
|
||||||
$objectIDs = array();
|
$objectIDs = array();
|
||||||
while ($objectIDs[] = $stmt->fetchColumn());
|
while ($objectID = $stmt->fetchColumn()) $objectIDs[] = $objectID;
|
||||||
|
|
||||||
return call_user_func(array($this->className, 'deleteAll'), $objectIDs);
|
return call_user_func(array($this->className, 'deleteAll'), $objectIDs);
|
||||||
}
|
}
|
||||||
|
@ -46,14 +46,14 @@ public function canEnter(\wcf\data\user\User $user = null) {
|
|||||||
$canEnter = $ph->getPermission($this, 'user.canEnter');
|
$canEnter = $ph->getPermission($this, 'user.canEnter');
|
||||||
// room suspension
|
// room suspension
|
||||||
if ($canEnter && isset($suspensions[$this->roomID][Suspension::TYPE_BAN])) {
|
if ($canEnter && isset($suspensions[$this->roomID][Suspension::TYPE_BAN])) {
|
||||||
if ($suspensions[$this->roomID][Suspension::TYPE_BAN]->time > TIME_NOW) {
|
if ($suspensions[$this->roomID][Suspension::TYPE_BAN]->isValid()) {
|
||||||
$canEnter = false;
|
$canEnter = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// global suspension
|
// global suspension
|
||||||
if ($canEnter && isset($suspensions[null][Suspension::TYPE_BAN])) {
|
if ($canEnter && isset($suspensions[null][Suspension::TYPE_BAN])) {
|
||||||
if ($suspensions[null][Suspension::TYPE_BAN]->time > TIME_NOW) {
|
if ($suspensions[null][Suspension::TYPE_BAN]->isValid()) {
|
||||||
$canEnter = false;
|
$canEnter = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -77,14 +77,14 @@ public function canWrite(\wcf\data\user\User $user = null) {
|
|||||||
$canWrite = $ph->getPermission($this, 'user.canWrite');
|
$canWrite = $ph->getPermission($this, 'user.canWrite');
|
||||||
// room suspension
|
// room suspension
|
||||||
if ($canWrite && isset($suspensions[$this->roomID][Suspension::TYPE_MUTE])) {
|
if ($canWrite && isset($suspensions[$this->roomID][Suspension::TYPE_MUTE])) {
|
||||||
if ($suspensions[$this->roomID][Suspension::TYPE_MUTE]->time > TIME_NOW) {
|
if ($suspensions[$this->roomID][Suspension::TYPE_MUTE]->isValid()) {
|
||||||
$canWrite = false;
|
$canWrite = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// global suspension
|
// global suspension
|
||||||
if ($canWrite && isset($suspensions[null][Suspension::TYPE_MUTE])) {
|
if ($canWrite && isset($suspensions[null][Suspension::TYPE_MUTE])) {
|
||||||
if ($suspensions[null][Suspension::TYPE_MUTE]->time > TIME_NOW) {
|
if ($suspensions[null][Suspension::TYPE_MUTE]->isValid()) {
|
||||||
$canWrite = false;
|
$canWrite = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ public function prune() {
|
|||||||
$stmt->execute(array(0, 'roomID'));
|
$stmt->execute(array(0, 'roomID'));
|
||||||
$objectIDs = array();
|
$objectIDs = array();
|
||||||
|
|
||||||
while ($objectIDs[] = $stmt->fetchColumn());
|
while ($objectID = $stmt->fetchColumn()) $objectIDs[] = $objectID;
|
||||||
|
|
||||||
return call_user_func(array($this->className, 'deleteAll'), $objectIDs);
|
return call_user_func(array($this->className, 'deleteAll'), $objectIDs);
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,15 @@ class Suspension extends \chat\data\CHATDatabaseObject {
|
|||||||
const TYPE_MUTE = 1;
|
const TYPE_MUTE = 1;
|
||||||
const TYPE_BAN = 2;
|
const TYPE_BAN = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether the suspension still is valid.
|
||||||
|
*
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function isValid() {
|
||||||
|
return $this->expires > TIME_NOW;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all the suspensions for the specified user (current user if no user was specified).
|
* Returns all the suspensions for the specified user (current user if no user was specified).
|
||||||
*
|
*
|
||||||
@ -42,7 +51,7 @@ public static function getSuspensionsForUser(\wcf\data\user\User $user = null) {
|
|||||||
chat".WCF_N."_suspension
|
chat".WCF_N."_suspension
|
||||||
WHERE
|
WHERE
|
||||||
userID = ?
|
userID = ?
|
||||||
AND time > ?";
|
AND expires > ?";
|
||||||
$stmt = WCF::getDB()->prepareStatement($sql);
|
$stmt = WCF::getDB()->prepareStatement($sql);
|
||||||
$stmt->execute(array($user->userID, TIME_NOW));
|
$stmt->execute(array($user->userID, TIME_NOW));
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ public function prune() {
|
|||||||
FROM
|
FROM
|
||||||
".call_user_func(array($this->className, 'getDatabaseTableName'))."
|
".call_user_func(array($this->className, 'getDatabaseTableName'))."
|
||||||
WHERE
|
WHERE
|
||||||
time < ?";
|
expires < ?";
|
||||||
$stmt = \wcf\system\WCF::getDB()->prepareStatement($sql);
|
$stmt = \wcf\system\WCF::getDB()->prepareStatement($sql);
|
||||||
$stmt->execute(array(TIME_NOW));
|
$stmt->execute(array(TIME_NOW));
|
||||||
$objectIDs = array();
|
$objectIDs = array();
|
||||||
|
@ -17,12 +17,12 @@
|
|||||||
class BanCommand extends MuteCommand {
|
class BanCommand extends MuteCommand {
|
||||||
public function executeAction() {
|
public function executeAction() {
|
||||||
if ($suspension = suspension\Suspension::getSuspensionByUserRoomAndType($this->user, $this->room, suspension\Suspension::TYPE_BAN)) {
|
if ($suspension = suspension\Suspension::getSuspensionByUserRoomAndType($this->user, $this->room, suspension\Suspension::TYPE_BAN)) {
|
||||||
if ($suspension->time > TIME_NOW + $this->time) {
|
if ($suspension->expires > $this->expires) {
|
||||||
throw new \wcf\system\exception\UserInputException('text', WCF::getLanguage()->get('wcf.chat.suspension.exists'));
|
throw new \wcf\system\exception\UserInputException('text', WCF::getLanguage()->get('wcf.chat.suspension.exists'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$editor = new suspension\SuspensionEditor($suspension);
|
$action = new suspension\SuspensionAction(array($suspension), 'delete');
|
||||||
$editor->delete();
|
$action->executeAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->suspensionAction = new suspension\SuspensionAction(array(), 'create', array(
|
$this->suspensionAction = new suspension\SuspensionAction(array(), 'create', array(
|
||||||
@ -30,7 +30,7 @@ public function executeAction() {
|
|||||||
'userID' => $this->user->userID,
|
'userID' => $this->user->userID,
|
||||||
'roomID' => ChatUtil::readUserData('roomID'),
|
'roomID' => ChatUtil::readUserData('roomID'),
|
||||||
'type' => suspension\Suspension::TYPE_BAN,
|
'type' => suspension\Suspension::TYPE_BAN,
|
||||||
'time' => TIME_NOW + $this->time
|
'expires' => $this->expires
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
$this->suspensionAction->executeAction();
|
$this->suspensionAction->executeAction();
|
||||||
|
@ -19,12 +19,12 @@ public function executeAction() {
|
|||||||
$room = new \chat\data\room\Room(null, array('roomID' => null));
|
$room = new \chat\data\room\Room(null, array('roomID' => null));
|
||||||
|
|
||||||
if ($suspension = suspension\Suspension::getSuspensionByUserRoomAndType($this->user, $room, suspension\Suspension::TYPE_BAN)) {
|
if ($suspension = suspension\Suspension::getSuspensionByUserRoomAndType($this->user, $room, suspension\Suspension::TYPE_BAN)) {
|
||||||
if ($suspension->time > TIME_NOW + $this->time) {
|
if ($suspension->expires > $this->expires) {
|
||||||
throw new \wcf\system\exception\UserInputException('text', WCF::getLanguage()->get('wcf.chat.suspension.exists'));
|
throw new \wcf\system\exception\UserInputException('text', WCF::getLanguage()->get('wcf.chat.suspension.exists'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$editor = new suspension\SuspensionEditor($suspension);
|
$action = new suspension\SuspensionAction(array($suspension), 'delete');
|
||||||
$editor->delete();
|
$action->executeAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->suspensionAction = new suspension\SuspensionAction(array(), 'create', array(
|
$this->suspensionAction = new suspension\SuspensionAction(array(), 'create', array(
|
||||||
@ -32,7 +32,7 @@ public function executeAction() {
|
|||||||
'userID' => $this->user->userID,
|
'userID' => $this->user->userID,
|
||||||
'roomID' => null,
|
'roomID' => null,
|
||||||
'type' => suspension\Suspension::TYPE_BAN,
|
'type' => suspension\Suspension::TYPE_BAN,
|
||||||
'time' => TIME_NOW + $this->time
|
'expires' => $this->expires
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
$this->suspensionAction->executeAction();
|
$this->suspensionAction->executeAction();
|
||||||
|
@ -19,12 +19,12 @@ public function executeAction() {
|
|||||||
$room = new \chat\data\room\Room(null, array('roomID' => null));
|
$room = new \chat\data\room\Room(null, array('roomID' => null));
|
||||||
|
|
||||||
if ($suspension = suspension\Suspension::getSuspensionByUserRoomAndType($this->user, $room, suspension\Suspension::TYPE_MUTE)) {
|
if ($suspension = suspension\Suspension::getSuspensionByUserRoomAndType($this->user, $room, suspension\Suspension::TYPE_MUTE)) {
|
||||||
if ($suspension->time > TIME_NOW + $this->time) {
|
if ($suspension->expires > $this->expires) {
|
||||||
throw new \wcf\system\exception\UserInputException('text', WCF::getLanguage()->get('wcf.chat.suspension.exists'));
|
throw new \wcf\system\exception\UserInputException('text', WCF::getLanguage()->get('wcf.chat.suspension.exists'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$editor = new suspension\SuspensionEditor($suspension);
|
$action = new suspension\SuspensionAction(array($suspension), 'delete');
|
||||||
$editor->delete();
|
$action->executeAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->suspensionAction = new suspension\SuspensionAction(array(), 'create', array(
|
$this->suspensionAction = new suspension\SuspensionAction(array(), 'create', array(
|
||||||
@ -32,7 +32,7 @@ public function executeAction() {
|
|||||||
'userID' => $this->user->userID,
|
'userID' => $this->user->userID,
|
||||||
'roomID' => null,
|
'roomID' => null,
|
||||||
'type' => suspension\Suspension::TYPE_MUTE,
|
'type' => suspension\Suspension::TYPE_MUTE,
|
||||||
'time' => TIME_NOW + $this->time
|
'expires' => $this->expires
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
$this->suspensionAction->executeAction();
|
$this->suspensionAction->executeAction();
|
||||||
|
@ -49,7 +49,9 @@ public function __construct(\chat\system\command\CommandHandler $commandHandler)
|
|||||||
$suspensions = \chat\data\suspension\Suspension::getSuspensionsForUser($this->user);
|
$suspensions = \chat\data\suspension\Suspension::getSuspensionsForUser($this->user);
|
||||||
foreach ($suspensions as $roomSuspensions) {
|
foreach ($suspensions as $roomSuspensions) {
|
||||||
foreach ($roomSuspensions as $typeSuspension) {
|
foreach ($roomSuspensions as $typeSuspension) {
|
||||||
$dateTime = DateUtil::getDateTimeByTimestamp($typeSuspension->time);
|
if (!$typeSuspension->isValid()) continue;
|
||||||
|
|
||||||
|
$dateTime = DateUtil::getDateTimeByTimestamp($typeSuspension->expires);
|
||||||
$this->lines[$typeSuspension->type.'-'.$typeSuspension->roomID] = str_replace('%time%', DateUtil::format($dateTime, DateUtil::TIME_FORMAT), str_replace('%date%', DateUtil::format($dateTime, DateUtil::DATE_FORMAT), WCF::getLanguage()->get('wcf.date.dateTimeFormat')));
|
$this->lines[$typeSuspension->type.'-'.$typeSuspension->roomID] = str_replace('%time%', DateUtil::format($dateTime, DateUtil::TIME_FORMAT), str_replace('%date%', DateUtil::format($dateTime, DateUtil::DATE_FORMAT), WCF::getLanguage()->get('wcf.date.dateTimeFormat')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
class MuteCommand extends \chat\system\command\AbstractRestrictedCommand {
|
class MuteCommand extends \chat\system\command\AbstractRestrictedCommand {
|
||||||
public $user = null;
|
public $user = null;
|
||||||
public $time = 0;
|
public $expires = 0;
|
||||||
public $suspensionAction = null;
|
public $suspensionAction = null;
|
||||||
public $link = '';
|
public $link = '';
|
||||||
public $room = null;
|
public $room = null;
|
||||||
@ -27,8 +27,8 @@ public function __construct(\chat\system\command\CommandHandler $commandHandler)
|
|||||||
try {
|
try {
|
||||||
list($username, $modifier) = explode(',', $commandHandler->getParameters(), 2);
|
list($username, $modifier) = explode(',', $commandHandler->getParameters(), 2);
|
||||||
$modifier = ChatUtil::timeModifier(\wcf\util\StringUtil::trim($modifier));
|
$modifier = ChatUtil::timeModifier(\wcf\util\StringUtil::trim($modifier));
|
||||||
$this->time = strtotime($modifier, TIME_NOW);
|
$expires = strtotime($modifier, TIME_NOW);
|
||||||
$this->time = min(max(-0x80000000, $this->time), 0x7FFFFFFF);
|
$this->expires = min(max(-0x80000000, $expires), 0x7FFFFFFF);
|
||||||
}
|
}
|
||||||
catch (\wcf\system\exception\SystemException $e) {
|
catch (\wcf\system\exception\SystemException $e) {
|
||||||
throw new \chat\system\command\NotFoundException();
|
throw new \chat\system\command\NotFoundException();
|
||||||
@ -49,7 +49,7 @@ public function __construct(\chat\system\command\CommandHandler $commandHandler)
|
|||||||
|
|
||||||
public function executeAction() {
|
public function executeAction() {
|
||||||
if ($suspension = suspension\Suspension::getSuspensionByUserRoomAndType($this->user, $this->room, suspension\Suspension::TYPE_MUTE)) {
|
if ($suspension = suspension\Suspension::getSuspensionByUserRoomAndType($this->user, $this->room, suspension\Suspension::TYPE_MUTE)) {
|
||||||
if ($suspension->time > $this->time) {
|
if ($suspension->expires > $this->expires) {
|
||||||
throw new \wcf\system\exception\UserInputException('text', WCF::getLanguage()->get('wcf.chat.suspension.exists'));
|
throw new \wcf\system\exception\UserInputException('text', WCF::getLanguage()->get('wcf.chat.suspension.exists'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ public function executeAction() {
|
|||||||
'userID' => $this->user->userID,
|
'userID' => $this->user->userID,
|
||||||
'roomID' => ChatUtil::readUserData('roomID'),
|
'roomID' => ChatUtil::readUserData('roomID'),
|
||||||
'type' => suspension\Suspension::TYPE_MUTE,
|
'type' => suspension\Suspension::TYPE_MUTE,
|
||||||
'time' => $this->time
|
'expires' => $this->expires
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
$this->suspensionAction->executeAction();
|
$this->suspensionAction->executeAction();
|
||||||
@ -92,7 +92,7 @@ public function getType() {
|
|||||||
public function getMessage() {
|
public function getMessage() {
|
||||||
return serialize(array(
|
return serialize(array(
|
||||||
'link' => $this->link,
|
'link' => $this->link,
|
||||||
'until' => $this->time,
|
'expires' => $this->expires,
|
||||||
'type' => str_replace(array('chat\system\command\commands\\', 'command'), '', strtolower(get_class($this)))
|
'type' => str_replace(array('chat\system\command\commands\\', 'command'), '', strtolower(get_class($this)))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
class UnmuteCommand extends \chat\system\command\AbstractRestrictedCommand {
|
class UnmuteCommand extends \chat\system\command\AbstractRestrictedCommand {
|
||||||
public $user = null;
|
public $user = null;
|
||||||
public $time = 0;
|
|
||||||
public $suspensionAction = null;
|
public $suspensionAction = null;
|
||||||
public $link = '';
|
public $link = '';
|
||||||
public $room = null;
|
public $room = null;
|
||||||
@ -71,7 +70,6 @@ public function getType() {
|
|||||||
public function getMessage() {
|
public function getMessage() {
|
||||||
return serialize(array(
|
return serialize(array(
|
||||||
'link' => $this->link,
|
'link' => $this->link,
|
||||||
'until' => TIME_NOW + $this->time,
|
|
||||||
'type' => str_replace(array('chat\system\command\commands\\', 'command'), '', strtolower(get_class($this)))
|
'type' => str_replace(array('chat\system\command\commands\\', 'command'), '', strtolower(get_class($this)))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
20
install.sql
20
install.sql
@ -22,22 +22,22 @@ CREATE TABLE chat1_message (
|
|||||||
color1 INT(10) NOT NULL DEFAULT 0,
|
color1 INT(10) NOT NULL DEFAULT 0,
|
||||||
color2 INT(10) NOT NULL DEFAULT 0,
|
color2 INT(10) NOT NULL DEFAULT 0,
|
||||||
|
|
||||||
KEY roomID (roomID),
|
KEY (roomID),
|
||||||
KEY sender (sender),
|
KEY (sender),
|
||||||
KEY receiver (receiver)
|
KEY (receiver)
|
||||||
);
|
);
|
||||||
|
|
||||||
DROP TABLE IF EXISTS chat1_room;
|
DROP TABLE IF EXISTS chat1_room;
|
||||||
CREATE TABLE chat1_room (
|
CREATE TABLE chat1_room (
|
||||||
roomID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
roomID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
title VARCHAR(255) NOT NULL,
|
title VARCHAR(255) NOT NULL,
|
||||||
topic VARCHAR(255) NOT NULL,
|
topic VARCHAR(255) NOT NULL DEFAULT '',
|
||||||
showOrder INT(10) NOT NULL DEFAULT 0,
|
showOrder INT(10) NOT NULL DEFAULT 0,
|
||||||
permanent TINYINT(1) NOT NULL DEFAULT 1,
|
permanent TINYINT(1) NOT NULL DEFAULT 1,
|
||||||
owner INT(10) DEFAULT NULL,
|
owner INT(10) DEFAULT NULL,
|
||||||
|
|
||||||
KEY showOrder (showOrder),
|
KEY (showOrder),
|
||||||
KEY owner (owner)
|
KEY (owner)
|
||||||
);
|
);
|
||||||
|
|
||||||
DROP TABLE IF EXISTS chat1_suspension;
|
DROP TABLE IF EXISTS chat1_suspension;
|
||||||
@ -46,12 +46,12 @@ CREATE TABLE chat1_suspension (
|
|||||||
userID INT(10) NOT NULL,
|
userID INT(10) NOT NULL,
|
||||||
roomID INT(10) DEFAULT NULL,
|
roomID INT(10) DEFAULT NULL,
|
||||||
type TINYINT(3) NOT NULL,
|
type TINYINT(3) NOT NULL,
|
||||||
time INT(10) NOT NULL,
|
expires INT(10) NOT NULL,
|
||||||
|
|
||||||
UNIQUE KEY suspension (userID, roomID, type),
|
UNIQUE KEY suspension (userID, roomID, type),
|
||||||
KEY roomID (roomID),
|
KEY (roomID),
|
||||||
KEY type (type),
|
KEY (type),
|
||||||
KEY time (time)
|
KEY (time)
|
||||||
);
|
);
|
||||||
|
|
||||||
ALTER TABLE chat1_message ADD FOREIGN KEY (receiver) REFERENCES wcf1_user (userID) ON DELETE CASCADE;
|
ALTER TABLE chat1_message ADD FOREIGN KEY (receiver) REFERENCES wcf1_user (userID) ON DELETE CASCADE;
|
||||||
|
@ -107,10 +107,10 @@
|
|||||||
<item name="chat.message.4"><![CDATA[ist jetzt wieder da.]]></item>
|
<item name="chat.message.4"><![CDATA[ist jetzt wieder da.]]></item>
|
||||||
<!-- 5 = TYPE_MODERATE -->
|
<!-- 5 = TYPE_MODERATE -->
|
||||||
<item name="chat.message.5.restore"><![CDATA[hat {@$link} zurückgesetzt.]]></item>
|
<item name="chat.message.5.restore"><![CDATA[hat {@$link} zurückgesetzt.]]></item>
|
||||||
<item name="chat.message.5.mute"><![CDATA[hat {@$link} bis {@$until|plainTime} geknebelt.]]></item>
|
<item name="chat.message.5.mute"><![CDATA[hat {@$link} bis {@$expires|plainTime} geknebelt.]]></item>
|
||||||
<item name="chat.message.5.ban"><![CDATA[hat {@$link} bis {@$until|plainTime} gebannt.]]></item>
|
<item name="chat.message.5.ban"><![CDATA[hat {@$link} bis {@$expires|plainTime} gebannt.]]></item>
|
||||||
<item name="chat.message.5.gmute"><![CDATA[hat {@$link} bis {@$until|plainTime} global geknebelt.]]></item>
|
<item name="chat.message.5.gmute"><![CDATA[hat {@$link} bis {@$expires|plainTime} global geknebelt.]]></item>
|
||||||
<item name="chat.message.5.gban"><![CDATA[hat {@$link} bis {@$until|plainTime} global gebannt.]]></item>
|
<item name="chat.message.5.gban"><![CDATA[hat {@$link} bis {@$expires|plainTime} global gebannt.]]></item>
|
||||||
<item name="chat.message.5.unmute"><![CDATA[hat {@$link} entknebelt.]]></item>
|
<item name="chat.message.5.unmute"><![CDATA[hat {@$link} entknebelt.]]></item>
|
||||||
|
|
||||||
<item name="chat.message.color.success"><![CDATA[Die Farbe wurde erfolgreich geändert.]]></item>
|
<item name="chat.message.color.success"><![CDATA[Die Farbe wurde erfolgreich geändert.]]></item>
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
</authorinformation>
|
</authorinformation>
|
||||||
|
|
||||||
<requiredpackages>
|
<requiredpackages>
|
||||||
<requiredpackage minversion="2.0.0 Alpha 1">com.woltlab.wcf</requiredpackage>
|
<requiredpackage minversion="2.0.0 Beta 1">com.woltlab.wcf</requiredpackage>
|
||||||
<requiredpackage file="requirements/be.bastelstu.max.wcf.jCounter.tar">be.bastelstu.max.wcf.jCounter</requiredpackage>
|
<requiredpackage file="requirements/be.bastelstu.max.wcf.jCounter.tar">be.bastelstu.max.wcf.jCounter</requiredpackage>
|
||||||
<requiredpackage file="requirements/be.bastelstu.wcf.nodePush.tar">be.bastelstu.wcf.nodePush</requiredpackage>
|
<requiredpackage file="requirements/be.bastelstu.wcf.nodePush.tar">be.bastelstu.wcf.nodePush</requiredpackage>
|
||||||
</requiredpackages>
|
</requiredpackages>
|
||||||
|
Loading…
Reference in New Issue
Block a user