fix character cache updates when changing XP-levels
This commit is contained in:
parent
8f6495b3fe
commit
ce15085113
7 changed files with 249 additions and 57 deletions
|
|
@ -159,6 +159,9 @@
|
||||||
// No XP-level
|
// No XP-level
|
||||||
}
|
}
|
||||||
$character['rank'] = $this->Characters->getXPRank($seminary['id'], $character['xps']);
|
$character['rank'] = $this->Characters->getXPRank($seminary['id'], $character['xps']);
|
||||||
|
if(!is_null($character['avatar_id'])) {
|
||||||
|
$character['avatar'] = $this->Avatars->getAvatarById($character['avatar_id']);
|
||||||
|
}
|
||||||
|
|
||||||
// Get User
|
// Get User
|
||||||
$user = $this->Users->getUserById($character['user_id']);
|
$user = $this->Users->getUserById($character['user_id']);
|
||||||
|
|
@ -371,7 +374,6 @@
|
||||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||||
|
|
||||||
// Set sort order and page
|
// Set sort order and page
|
||||||
|
|
||||||
$selectedCharacters = array();
|
$selectedCharacters = array();
|
||||||
$sortorder = 'name';
|
$sortorder = 'name';
|
||||||
if($this->request->getRequestMethod() == 'POST')
|
if($this->request->getRequestMethod() == 'POST')
|
||||||
|
|
@ -443,7 +445,15 @@
|
||||||
$characters = $this->Characters->getCharactersForSeminarySorted($seminary['id'], $sortorder);
|
$characters = $this->Characters->getCharactersForSeminarySorted($seminary['id'], $sortorder);
|
||||||
foreach($characters as &$character)
|
foreach($characters as &$character)
|
||||||
{
|
{
|
||||||
$character['xplevel'] = $this->Xplevels->getXPLevelById($character['xplevel_id']);
|
try {
|
||||||
|
$character['xplevel'] = $this->Xplevels->getXPLevelById($character['xplevel_id']);
|
||||||
|
}
|
||||||
|
catch(\nre\exceptions\IdNotFoundException $e) {
|
||||||
|
// No XP-level
|
||||||
|
}
|
||||||
|
if(!is_null($character['avatar_id'])) {
|
||||||
|
$character['avatar'] = $this->Avatars->getAvatarById($character['avatar_id']);
|
||||||
|
}
|
||||||
$character['user'] = $this->Users->getUserById($character['user_id']);
|
$character['user'] = $this->Users->getUserById($character['user_id']);
|
||||||
$character['characterroles'] = array_map(function($r) { return $r['name']; }, $this->Characterroles->getCharacterrolesForCharacterById($character['id']));
|
$character['characterroles'] = array_map(function($r) { return $r['name']; }, $this->Characterroles->getCharacterrolesForCharacterById($character['id']));
|
||||||
$character['characterfields'] = array();
|
$character['characterfields'] = array();
|
||||||
|
|
|
||||||
203
db/create.sql
203
db/create.sql
|
|
@ -316,14 +316,14 @@ CREATE TABLE `cache_characters` (
|
||||||
`character_id` int(11) NOT NULL,
|
`character_id` int(11) NOT NULL,
|
||||||
`xps` int(10) unsigned NOT NULL,
|
`xps` int(10) unsigned NOT NULL,
|
||||||
`quest_xps` int(10) unsigned NOT NULL,
|
`quest_xps` int(10) unsigned NOT NULL,
|
||||||
`xplevel_id` int(11) NOT NULL,
|
`xplevel_id` int(11) DEFAULT NULL,
|
||||||
`avatar_id` int(11) NOT NULL,
|
`avatar_id` int(11) DEFAULT NULL,
|
||||||
PRIMARY KEY (`character_id`),
|
PRIMARY KEY (`character_id`),
|
||||||
KEY `xplevel_id` (`xplevel_id`),
|
KEY `xplevel_id` (`xplevel_id`),
|
||||||
KEY `avatar_id` (`avatar_id`),
|
KEY `avatar_id` (`avatar_id`),
|
||||||
CONSTRAINT `cache_characters_ibfk_1` FOREIGN KEY (`character_id`) REFERENCES `characters` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
CONSTRAINT `cache_characters_ibfk_1` FOREIGN KEY (`character_id`) REFERENCES `characters` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
CONSTRAINT `cache_characters_ibfk_2` FOREIGN KEY (`xplevel_id`) REFERENCES `xplevels` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
CONSTRAINT `cache_characters_ibfk_2` FOREIGN KEY (`xplevel_id`) REFERENCES `xplevels` (`id`) ON DELETE SET NULL ON UPDATE SET NULL,
|
||||||
CONSTRAINT `cache_characters_ibfk_3` FOREIGN KEY (`avatar_id`) REFERENCES `avatars` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
CONSTRAINT `cache_characters_ibfk_3` FOREIGN KEY (`avatar_id`) REFERENCES `avatars` (`id`) ON DELETE SET NULL ON UPDATE SET NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
|
@ -1974,6 +1974,63 @@ CREATE TABLE `xplevels` (
|
||||||
CONSTRAINT `xplevels_ibfk_2` FOREIGN KEY (`seminary_id`) REFERENCES `seminaries` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
CONSTRAINT `xplevels_ibfk_2` FOREIGN KEY (`seminary_id`) REFERENCES `seminaries` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = '' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
/*!50003 CREATE*/ /*!50017 DEFINER=`z`@`%`*/ /*!50003 TRIGGER `update_cache_characters_xplevels_insert`
|
||||||
|
AFTER INSERT ON xplevels
|
||||||
|
FOR EACH ROW BEGIN
|
||||||
|
CALL update_cache_characters_xplevels(NEW.seminary_id, NEW.xps, NULL);
|
||||||
|
END */;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = '' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
/*!50003 CREATE*/ /*!50017 DEFINER=`z`@`%`*/ /*!50003 TRIGGER `update_cache_characters_xplevels_update`
|
||||||
|
AFTER UPDATE ON xplevels
|
||||||
|
FOR EACH ROW BEGIN
|
||||||
|
CALL update_cache_characters_xplevels(NEW.seminary_id, OLD.xps, NEW.xps);
|
||||||
|
END */;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = '' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
/*!50003 CREATE*/ /*!50017 DEFINER=`z`@`%`*/ /*!50003 TRIGGER `update_cache_characters_xplevels_delete`
|
||||||
|
AFTER DELETE ON xplevels
|
||||||
|
FOR EACH ROW BEGIN
|
||||||
|
CALL update_cache_characters_xplevels(OLD.seminary_id, OLD.xps, NULL);
|
||||||
|
END */;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Dumping routines for database 'z'
|
-- Dumping routines for database 'z'
|
||||||
|
|
@ -2053,52 +2110,52 @@ DELIMITER ;
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
/*!50003 SET sql_mode = '' */ ;
|
/*!50003 SET sql_mode = '' */ ;
|
||||||
DELIMITER ;;
|
DELIMITER ;;
|
||||||
CREATE DEFINER=`z`@`%` PROCEDURE `update_cache_characters`(
|
CREATE DEFINER=`z`@`%` PROCEDURE `update_cache_characters`(
|
||||||
IN CHARACTERID INT(11)
|
IN CHARACTERID INT(11)
|
||||||
)
|
)
|
||||||
BEGIN
|
BEGIN
|
||||||
DECLARE QUESTXPS INT UNSIGNED;
|
DECLARE QUESTXPS INT UNSIGNED;
|
||||||
DECLARE GROUPSXPS INT UNSIGNED;
|
DECLARE GROUPSXPS INT UNSIGNED;
|
||||||
DECLARE TOTALXPS INT UNSIGNED;
|
DECLARE TOTALXPS INT UNSIGNED;
|
||||||
DECLARE XPLEVELID INT;
|
DECLARE XPLEVELID INT;
|
||||||
DECLARE AVATARID INT;
|
DECLARE AVATARID INT;
|
||||||
|
|
||||||
|
|
||||||
SELECT IFNULL(SUM(quests.xps),0) INTO QUESTXPS
|
SELECT IFNULL(SUM(quests.xps),0) INTO QUESTXPS
|
||||||
FROM quests_characters
|
FROM quests_characters
|
||||||
LEFT JOIN quests ON quests.id = quests_characters.quest_id
|
LEFT JOIN quests ON quests.id = quests_characters.quest_id
|
||||||
WHERE quests_characters.character_id = CHARACTERID AND quests_characters.status = 3;
|
WHERE quests_characters.character_id = CHARACTERID AND quests_characters.status = 3;
|
||||||
SELECT IFNULL(SUM(cache_charactergroups.xps),0) INTO GROUPSXPS
|
SELECT IFNULL(SUM(cache_charactergroups.xps),0) INTO GROUPSXPS
|
||||||
FROM characters_charactergroups
|
FROM characters_charactergroups
|
||||||
LEFT JOIN cache_charactergroups ON cache_charactergroups.charactergroup_id = characters_charactergroups.charactergroup_id
|
LEFT JOIN cache_charactergroups ON cache_charactergroups.charactergroup_id = characters_charactergroups.charactergroup_id
|
||||||
WHERE characters_charactergroups.character_id = CHARACTERID;
|
WHERE characters_charactergroups.character_id = CHARACTERID;
|
||||||
SET TOTALXPS = QUESTXPS + GROUPSXPS;
|
SET TOTALXPS = QUESTXPS + GROUPSXPS;
|
||||||
|
|
||||||
|
|
||||||
SELECT (
|
SELECT (
|
||||||
SELECT id
|
SELECT id
|
||||||
FROM xplevels
|
FROM xplevels
|
||||||
WHERE seminary_id = charactertypes.seminary_id AND xps = (
|
WHERE seminary_id = charactertypes.seminary_id AND xps = (
|
||||||
SELECT MAX(xps)
|
SELECT MAX(xplevels_sub.xps)
|
||||||
FROM xplevels AS xplevels_sub
|
FROM xplevels AS xplevels_sub
|
||||||
WHERE xps <= TOTALXPS
|
WHERE xplevels_sub.seminary_id = charactertypes.seminary_id AND xps <= TOTALXPS
|
||||||
)
|
)
|
||||||
) INTO XPLEVELID
|
) INTO XPLEVELID
|
||||||
FROM characters
|
FROM characters
|
||||||
LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id
|
LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id
|
||||||
WHERE characters.id = CHARACTERID;
|
WHERE characters.id = CHARACTERID;
|
||||||
|
|
||||||
|
|
||||||
SELECT avatars.id INTO AVATARID
|
SELECT avatars.id INTO AVATARID
|
||||||
FROM characters
|
FROM characters
|
||||||
LEFT JOIN avatars ON avatars.charactertype_id = characters.charactertype_id AND avatars.xplevel_id = XPLEVELID
|
LEFT JOIN avatars ON avatars.charactertype_id = characters.charactertype_id AND avatars.xplevel_id = XPLEVELID
|
||||||
WHERE characters.id = CHARACTERID;
|
WHERE characters.id = CHARACTERID;
|
||||||
|
|
||||||
|
|
||||||
REPLACE INTO cache_characters
|
REPLACE INTO cache_characters
|
||||||
(character_id, xps, quest_xps, xplevel_id, avatar_id)
|
(character_id, xps, quest_xps, xplevel_id, avatar_id)
|
||||||
VALUES
|
VALUES
|
||||||
(CHARACTERID, TOTALXPS, QUESTXPS, XPLEVELID, AVATARID);
|
(CHARACTERID, TOTALXPS, QUESTXPS, XPLEVELID, AVATARID);
|
||||||
END ;;
|
END ;;
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
|
@ -2179,6 +2236,54 @@ DELIMITER ;
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
/*!50003 DROP PROCEDURE IF EXISTS `update_cache_characters_xplevels` */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = '' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
CREATE DEFINER=`z`@`%` PROCEDURE `update_cache_characters_xplevels`(
|
||||||
|
IN SEMINARYID INT(11),
|
||||||
|
IN XPS_LOWER INT(11),
|
||||||
|
IN XPS_UPPER INT(11)
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
DECLARE CHARACTERID INT;
|
||||||
|
DECLARE done INT DEFAULT FALSE;
|
||||||
|
DECLARE characters_cursor CURSOR FOR
|
||||||
|
SELECT cache_characters.character_id
|
||||||
|
FROM charactertypes
|
||||||
|
INNER JOIN characters ON characters.charactertype_id = charactertypes.id
|
||||||
|
INNER JOIN cache_characters ON cache_characters.character_id = characters.id
|
||||||
|
WHERE charactertypes.seminary_id = SEMINARY_ID AND cache_characters.xps >= LEAST(XPS_LOWER, IFNULL(XPS_UPPER,XPS_LOWER)) AND (XPS_UPPER IS NULL OR cache_characters.xps <= GREATEST(XPS_LOWER, XPS_UPPER));
|
||||||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
|
||||||
|
|
||||||
|
IF XPS_UPPER IS NULL THEN
|
||||||
|
SELECT MIN(xps) INTO XPS_UPPER
|
||||||
|
FROM xplevels
|
||||||
|
WHERE seminary_id = SEMINARYID AND xps > XPS_LOWER;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
|
SET done = 0;
|
||||||
|
OPEN characters_cursor;
|
||||||
|
get_characters: LOOP
|
||||||
|
FETCH characters_cursor INTO CHARACTERID;
|
||||||
|
IF done = TRUE THEN
|
||||||
|
LEAVE get_characters;
|
||||||
|
END IF;
|
||||||
|
CALL update_cache_characters(CHARACTERID);
|
||||||
|
END LOOP get_characters;
|
||||||
|
END ;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,44 @@ END $$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
||||||
|
|
||||||
|
DROP PROCEDURE IF EXISTS update_cache_characters_xplevels;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE update_cache_characters_xplevels(
|
||||||
|
IN SEMINARYID INT(11),
|
||||||
|
IN XPS_LOWER INT(11),
|
||||||
|
IN XPS_UPPER INT(11)
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
DECLARE CHARACTERID INT;
|
||||||
|
DECLARE done INT DEFAULT FALSE;
|
||||||
|
DECLARE characters_cursor CURSOR FOR
|
||||||
|
SELECT cache_characters.character_id
|
||||||
|
FROM charactertypes
|
||||||
|
INNER JOIN characters ON characters.charactertype_id = charactertypes.id
|
||||||
|
INNER JOIN cache_characters ON cache_characters.character_id = characters.id
|
||||||
|
WHERE charactertypes.seminary_id = SEMINARY_ID AND cache_characters.xps >= LEAST(XPS_LOWER, IFNULL(XPS_UPPER,XPS_LOWER)) AND (XPS_UPPER IS NULL OR cache_characters.xps <= GREATEST(XPS_LOWER, XPS_UPPER));
|
||||||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
|
||||||
|
|
||||||
|
-- Get upper XPs
|
||||||
|
IF XPS_UPPER IS NULL THEN
|
||||||
|
SELECT MIN(xps) INTO XPS_UPPER
|
||||||
|
FROM xplevels
|
||||||
|
WHERE seminary_id = SEMINARYID AND xps > XPS_LOWER;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
SET done = 0;
|
||||||
|
OPEN characters_cursor;
|
||||||
|
get_characters: LOOP
|
||||||
|
FETCH characters_cursor INTO CHARACTERID;
|
||||||
|
IF done = TRUE THEN
|
||||||
|
LEAVE get_characters;
|
||||||
|
END IF;
|
||||||
|
CALL update_cache_characters(CHARACTERID);
|
||||||
|
END LOOP get_characters;
|
||||||
|
END $$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS update_cache_characters;
|
DROP PROCEDURE IF EXISTS update_cache_characters;
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE DEFINER = 'z'@'%' PROCEDURE update_cache_characters(
|
CREATE DEFINER = 'z'@'%' PROCEDURE update_cache_characters(
|
||||||
|
|
@ -80,9 +118,9 @@ BEGIN
|
||||||
SELECT id
|
SELECT id
|
||||||
FROM xplevels
|
FROM xplevels
|
||||||
WHERE seminary_id = charactertypes.seminary_id AND xps = (
|
WHERE seminary_id = charactertypes.seminary_id AND xps = (
|
||||||
SELECT MAX(xps)
|
SELECT MAX(xplevels_sub.xps)
|
||||||
FROM xplevels AS xplevels_sub
|
FROM xplevels AS xplevels_sub
|
||||||
WHERE xps <= TOTALXPS
|
WHERE xplevels_sub.seminary_id = charactertypes.seminary_id AND xps <= TOTALXPS
|
||||||
)
|
)
|
||||||
) INTO XPLEVELID
|
) INTO XPLEVELID
|
||||||
FROM characters
|
FROM characters
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/** Characters +Quests **/
|
/** Characters + Quests **/
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS update_cache_characters_insert;
|
DROP TRIGGER IF EXISTS update_cache_characters_insert;
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
|
|
@ -49,7 +49,7 @@ DELIMITER ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Charactergroups +Charactergroupsquests **/
|
/** Charactergroups + Charactergroupsquests **/
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS update_cache_charactergroups_insert;
|
DROP TRIGGER IF EXISTS update_cache_charactergroups_insert;
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
|
|
@ -100,7 +100,7 @@ DELIMITER ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Characters → Charactergroups **/
|
/** Characters + Charactergroups **/
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS update_cache_characters_charactergroups_insert;
|
DROP TRIGGER IF EXISTS update_cache_characters_charactergroups_insert;
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
|
|
@ -153,3 +153,34 @@ FOR EACH ROW BEGIN
|
||||||
END $$
|
END $$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** XP-levels **/
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS update_cache_characters_xplevels_insert;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE DEFINER = 'z'@'%' TRIGGER `update_cache_characters_xplevels_insert`
|
||||||
|
AFTER INSERT ON xplevels
|
||||||
|
FOR EACH ROW BEGIN
|
||||||
|
CALL update_cache_characters_xplevels(NEW.seminary_id, NEW.xps, NULL);
|
||||||
|
END $$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS update_cache_characters_xplevels_update;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE DEFINER = 'z'@'%' TRIGGER `update_cache_characters_xplevels_update`
|
||||||
|
AFTER UPDATE ON xplevels
|
||||||
|
FOR EACH ROW BEGIN
|
||||||
|
CALL update_cache_characters_xplevels(NEW.seminary_id, OLD.xps, NEW.xps);
|
||||||
|
END $$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS update_cache_characters_xplevels_delete;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE DEFINER = 'z'@'%' TRIGGER `update_cache_characters_xplevels_delete`
|
||||||
|
AFTER DELETE ON xplevels
|
||||||
|
FOR EACH ROW BEGIN
|
||||||
|
CALL update_cache_characters_xplevels(OLD.seminary_id, OLD.xps, NULL);
|
||||||
|
END $$
|
||||||
|
DELIMITER ;
|
||||||
|
|
|
||||||
|
|
@ -55,10 +55,14 @@
|
||||||
<form method="post" class="logreg" enctype="multipart/form-data">
|
<form method="post" class="logreg" enctype="multipart/form-data">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend><?=_('Images')?></legend>
|
<legend><?=_('Images')?></legend>
|
||||||
|
<?php if(!is_null($achievement['unachieved_achievementsmedia_id'])) : ?>
|
||||||
<img src="<?=$linker->link(array('media','achievement',$seminary['url'],$achievement['url'],'locked'))?>" />
|
<img src="<?=$linker->link(array('media','achievement',$seminary['url'],$achievement['url'],'locked'))?>" />
|
||||||
|
<?php endif ?>
|
||||||
<label for="unachievedImage"><?=_('Unachieved')?></label>
|
<label for="unachievedImage"><?=_('Unachieved')?></label>
|
||||||
<input id="unachievedImage" type="file" name="unachieved_image" accept="<?=implode(',', array_map(function($m) { return $m['mimetype']; }, $mimetypes))?>" /><br />
|
<input id="unachievedImage" type="file" name="unachieved_image" accept="<?=implode(',', array_map(function($m) { return $m['mimetype']; }, $mimetypes))?>" /><br />
|
||||||
|
<?php if(!is_null($achievement['achieved_achievementsmedia_id'])) : ?>
|
||||||
<img src="<?=$linker->link(array('media','achievement',$seminary['url'],$achievement['url']))?>" />
|
<img src="<?=$linker->link(array('media','achievement',$seminary['url'],$achievement['url']))?>" />
|
||||||
|
<?php endif ?>
|
||||||
<label for="achievedImage"><?=_('Achieved')?></label>
|
<label for="achievedImage"><?=_('Achieved')?></label>
|
||||||
<input id="achievedImage" type="file" name="achieved_image" accept="<?=implode(',', array_map(function($m) { return $m['mimetype']; }, $mimetypes))?>" /><br />
|
<input id="achievedImage" type="file" name="achieved_image" accept="<?=implode(',', array_map(function($m) { return $m['mimetype']; }, $mimetypes))?>" /><br />
|
||||||
<p><?=_('Allowed file types')?>:</p>
|
<p><?=_('Allowed file types')?>:</p>
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,9 @@
|
||||||
</div>
|
</div>
|
||||||
<?php if(array_key_exists('xplevel', $character) && !is_null($character['xplevel'])) : ?>
|
<?php if(array_key_exists('xplevel', $character) && !is_null($character['xplevel'])) : ?>
|
||||||
<div class="cportrait">
|
<div class="cportrait">
|
||||||
|
<?php if(array_key_exists('avatar', $character) && !is_null($character['avatar']['avatarpicture_id'])) : ?>
|
||||||
<img src="<?=$linker->link(array('media','avatar',$seminary['url'],$character['charactertype_url'],$character['xplevel']['level']))?>" />
|
<img src="<?=$linker->link(array('media','avatar',$seminary['url'],$character['charactertype_url'],$character['xplevel']['level']))?>" />
|
||||||
|
<?php endif ?>
|
||||||
</div>
|
</div>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -84,7 +86,7 @@
|
||||||
</li>
|
</li>
|
||||||
<?php endforeach ?>
|
<?php endforeach ?>
|
||||||
<li>
|
<li>
|
||||||
<?php if(array_key_exists('xplevel', $character) && !is_null($character['xplevel'])) : ?>
|
<?php if(array_key_exists('avatar', $character) && !is_null($character['avatar']['avatarpicture_id'])) : ?>
|
||||||
<img src="<?=$linker->link(array('media','avatar',$seminary['url'],$character['charactertype_url'],$character['xplevel']['level'],'portrait'))?>">
|
<img src="<?=$linker->link(array('media','avatar',$seminary['url'],$character['charactertype_url'],$character['xplevel']['level'],'portrait'))?>">
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
<p class="fwb"><?=$character['rank']?>. <?=$character['name']?></p>
|
<p class="fwb"><?=$character['rank']?>. <?=$character['name']?></p>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,9 @@
|
||||||
<li class="cf">
|
<li class="cf">
|
||||||
<input type="checkbox" id="characters-<?=$character['id']?>" name="characters[]" value="<?=$character['id']?>" <?php if(in_array($character['id'], $selectedCharacters)) : ?>checked="checked"<?php endif ?> <?php if($character['id'] == \hhu\z\controllers\SeminaryController::$character['id']) : ?>disabled="disabled"<?php endif ?>/>
|
<input type="checkbox" id="characters-<?=$character['id']?>" name="characters[]" value="<?=$character['id']?>" <?php if(in_array($character['id'], $selectedCharacters)) : ?>checked="checked"<?php endif ?> <?php if($character['id'] == \hhu\z\controllers\SeminaryController::$character['id']) : ?>disabled="disabled"<?php endif ?>/>
|
||||||
<label for="characters-<?=$character['id']?>">
|
<label for="characters-<?=$character['id']?>">
|
||||||
|
<?php if(array_key_exists('avatar', $character) && !is_null($character['avatar']['small_avatarpicture_id'])) : ?>
|
||||||
<img src="<?=$linker->link(array('media','avatar',$seminary['url'],$character['charactertype_url'],$character['xplevel']['level'],'portrait'))?>">
|
<img src="<?=$linker->link(array('media','avatar',$seminary['url'],$character['charactertype_url'],$character['xplevel']['level'],'portrait'))?>">
|
||||||
|
<?php endif ?>
|
||||||
<p><a href="<?=$linker->link(array('characters','character',$seminary['url'],$character['url']))?>"><?=$character['name']?></a><span><?=$character['xps']?> XP</span></p>
|
<p><a href="<?=$linker->link(array('characters','character',$seminary['url'],$character['url']))?>"><?=$character['name']?></a><span><?=$character['xps']?> XP</span></p>
|
||||||
<p><small><a href="<?=$linker->link(array('users','user',$character['user']['url']))?>"><?=$character['user']['username']?></a></small>
|
<p><small><a href="<?=$linker->link(array('users','user',$character['user']['url']))?>"><?=$character['user']['username']?></a></small>
|
||||||
<?php if(in_array('admin', $character['characterroles'])) : ?><small>(<?=_('Admin')?>)</small><?php endif ?>
|
<?php if(in_array('admin', $character['characterroles'])) : ?><small>(<?=_('Admin')?>)</small><?php endif ?>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue