+#17689 - Extract skill data.
#18507 - Typo at costume column name.
#18506 - Constructor has not compatibility at 5.2.x and 5.3.x.
#18505 - Invalid table name at databae schema.
+#17689 - \82·\82«\82é\82Å\81`\82½\82Ì\92\8a\8fo\8f\88\97\9d\82ð\92Ç\89Á
#18507 - \82±\82·\97p\82Ä\81[\82Ô\82é\82Ì\82©\82ç\82Þ\96¼\82ª\82¨\82©\82µ\82©\82Á\82½\82Ì\82Å\8fC\90³
#18506 - 5.3 \8cn\82Å\82Í\82\82ç\82·\96¼\82±\82ñ\82·\82Æ\82ç\82\82½\82Ì\93®\8dì\82ª\95Ï\82í\82Á\82Ä\82½\82Ì\82Å\8fC\90³
#18505 - \82Å\81[\82½\82×\81[\82·\8d\\91¢\82ª\8aÔ\88á\82Á\82Ä\82½\82Ì\82Å\8fC\90³
const ABILITY = 'Ability';
const CHAR = 'Char';
const COSTUME = 'Costume';
+ const KIND = 'Kind';
+ const SKILL = 'Skill';
+ const SKILL_ELEMENT = 'SkillElement';
+ const TARGET = 'Target';
const UPDATE = 'Update';
}
--- /dev/null
+<?php
+/**
+ * @file
+ * @package sd3rd
+ * @version $Id$
+**/
+
+if(!defined('XOOPS_ROOT_PATH'))
+{
+ exit;
+}
+
+require_once SD3RD_TRUST_PATH . '/class/AbstractMasterHandler.class.php';
+
+/**
+ * Sd3rd_KindObject
+**/
+class Sd3rd_KindObject extends XoopsSimpleObject
+{
+ /**
+ * __construct
+ *
+ * @param void
+ *
+ * @return void
+ **/
+ public function __construct()
+ {
+ $this->initVar('kind_id', XOBJ_DTYPE_INT, '', false);
+ $this->initVar('kind_name', XOBJ_DTYPE_STRING, '', false, 20);
+ }
+}
+
+/**
+ * Sd3rd_KindHandler
+**/
+class Sd3rd_KindHandler extends Sd3rd_AbstractMasterHandler
+{
+ public /*** string ***/ $mTable = '{dirname}_kind';
+ public /*** string ***/ $mPrimary = 'kind_id';
+ public /*** string ***/ $mClass = 'Sd3rd_KindObject';
+ protected /*** string ***/ $_mIdColumn = 'kind_id';
+ protected /*** string ***/ $_mValueColumn = 'kind_name';
+}
+
+?>
--- /dev/null
+<?php
+/**
+ * @file
+ * @package sd3rd
+ * @version $Id$
+**/
+
+if(!defined('XOOPS_ROOT_PATH'))
+{
+ exit;
+}
+
+require_once SD3RD_TRUST_PATH . '/class/AbstractMasterHandler.class.php';
+
+/**
+ * Sd3rd_SkillObject
+**/
+class Sd3rd_SkillObject extends XoopsSimpleObject
+{
+ /**
+ * __construct
+ *
+ * @param void
+ *
+ * @return void
+ **/
+ public function __construct()
+ {
+ $this->initVar('skill_id', XOBJ_DTYPE_INT, '', false);
+ $this->initVar('skill_name', XOBJ_DTYPE_STRING, '', false, 50);
+ $this->initVar('description', XOBJ_DTYPE_STRING, '', false, 255);
+ $this->initVar('range', XOBJ_DTYPE_INT, '', false);
+ $this->initVar('target_id', XOBJ_DTYPE_INT, '', false);
+ $this->initVar('kind_id', XOBJ_DTYPE_INT, '', false);
+ $this->initVar('tp', XOBJ_DTYPE_INT, '', false);
+ $this->initVar('register_time', XOBJ_DTYPE_INT, '', false);
+ }
+}
+
+/**
+ * Sd3rd_SkillHandler
+**/
+class Sd3rd_SkillHandler extends Sd3rd_AbstractMasterHandler
+{
+ public /*** string ***/ $mTable = '{dirname}_skill';
+ public /*** string ***/ $mPrimary = 'skill_id';
+ public /*** string ***/ $mClass = 'Sd3rd_SkillObject';
+ protected /*** string ***/ $_mIdColumn = 'skill_id';
+ protected /*** string ***/ $_mValueColumn = 'skill_name';
+
+ /**
+ * Create new record at master data.
+ *
+ * @param mixed{} $values
+ * @param bool $force
+ *
+ * @return void
+ **/
+ protected function _appendMaster(/*** mixed{} ***/ $values,/*** bool ***/ $force)
+ {
+ $element = $values['element'];
+ unset($values['element']);
+ parent::_appendMaster($values,$force);
+ $this->_setElement($this->getId($values[$this->_mValueColumn]),$element,$force);
+ }
+
+ /**
+ * _setElement
+ *
+ * @param int $skillId
+ * @param int[] $element
+ * @param bool $force
+ *
+ * @return void
+ **/
+ protected function _setElement(/*** int ***/ $skillId,/*** int[] ***/ $element,/*** bool ***/ $force = false)
+ {
+ static $handler = null;
+ if($handler === null)
+ {
+ $handler = Sd3rd_UpdateUtils::getHandler(Sd3rd_HANDLER::SKILL_ELEMENT);
+ }
+ $obj =& $handler->create();
+ $obj->set('skill_id',$skillId);
+ foreach($element as $elementId)
+ {
+ $obj->set('element_id',$elementId);
+ $obj->setNew();
+ if(!$handler->insert($obj,$force))
+ {
+ throw new Sd3rd_QueryErrorException('Cannot insert skill element data.');
+ }
+ }
+ }
+}
+
+?>
--- /dev/null
+<?php
+/**
+ * @file
+ * @package sd3rd
+ * @version $Id$
+**/
+
+if(!defined('XOOPS_ROOT_PATH'))
+{
+ exit;
+}
+
+/**
+ * Sd3rd_SkillElementObject
+**/
+class Sd3rd_SkillElementObject extends XoopsSimpleObject
+{
+ /**
+ * __construct
+ *
+ * @param void
+ *
+ * @return void
+ **/
+ public function __construct()
+ {
+ $this->initVar('skill_id', XOBJ_DTYPE_INT, '', false);
+ $this->initVar('element_id', XOBJ_DTYPE_INT, '', false);
+ }
+}
+
+/**
+ * Sd3rd_SkillElementHandler
+**/
+class Sd3rd_SkillElementHandler extends XoopsObjectGenericHandler
+{
+ public /*** string ***/ $mTable = '{dirname}_skill_element';
+ public /*** string ***/ $mPrimary = 'skill_id';
+ public /*** string ***/ $mClass = 'Sd3rd_SkillElementObject';
+
+ /**
+ * __construct
+ *
+ * @param XoopsDatabase &$db
+ * @param string $dirname
+ *
+ * @return void
+ **/
+ public function __construct(/*** XoopsDatabase ***/ &$db,/*** string ***/ $dirname)
+ {
+ $this->mTable = strtr($this->mTable,array('{dirname}' => $dirname));
+ parent::__construct($db);
+ }
+}
+
+?>
--- /dev/null
+<?php
+/**
+ * @file
+ * @package sd3rd
+ * @version $Id$
+**/
+
+if(!defined('XOOPS_ROOT_PATH'))
+{
+ exit;
+}
+
+require_once SD3RD_TRUST_PATH . '/class/AbstractMasterHandler.class.php';
+
+/**
+ * Sd3rd_TargetObject
+**/
+class Sd3rd_TargetObject extends XoopsSimpleObject
+{
+ /**
+ * __construct
+ *
+ * @param void
+ *
+ * @return void
+ **/
+ public function __construct()
+ {
+ $this->initVar('target_id', XOBJ_DTYPE_INT, '', false);
+ $this->initVar('target_name', XOBJ_DTYPE_STRING, '', false, 10);
+ }
+}
+
+/**
+ * Sd3rd_TargetHandler
+**/
+class Sd3rd_TargetHandler extends Sd3rd_AbstractMasterHandler
+{
+ public /*** string ***/ $mTable = '{dirname}_target';
+ public /*** string ***/ $mPrimary = 'target_id';
+ public /*** string ***/ $mClass = 'Sd3rd_TargetObject';
+ protected /*** string ***/ $_mIdColumn = 'target_id';
+ protected /*** string ***/ $_mValueColumn = 'target_name';
+}
+
+?>
throw new Sd3rd_QueryErrorException('Cannot delete objects.',array('type' => $type,'criteria' => $cri));
}
}
+
+ /**
+ * Cleanup related table.
+ *
+ * @param Enum $base
+ * @param Enum $target
+ *
+ * @return void
+ **/
+ public static function cleanupTable(/*** Enum ***/ $base,/*** Enum ***/ $target)
+ {
+ $sql = 'DELETE `t` FROM `%1$s` AS t LEFT JOIN `%2$s` AS b USING (`%3$s`) WHERE `b`.`%3$s` IS NULL';
+ $handler = self::getHandler($base);
+ if(!$handler->db->queryF(sprintf($sql,self::convertTableName($target),$handler->mTable,$handler->mPrimary)))
+ {
+ throw new Sd3rd_QueryErrorException('Cannot cleanup table.',array('base' => $base,'target' => $target));
+ }
+ }
#endregion
}
Sd3rd_HANDLER::ABILITY,
Sd3rd_HANDLER::CHAR,
Sd3rd_HANDLER::COSTUME,
+ Sd3rd_HANDLER::KIND,
+ Sd3rd_HANDLER::SKILL,
+ Sd3rd_HANDLER::SKILL_ELEMENT,
+ Sd3rd_HANDLER::TARGET,
Sd3rd_HANDLER::UPDATE
);
}
--- /dev/null
+<?php
+/**
+ * @file
+ * @package sd3rd
+ * @version $Id$
+**/
+
+if(!defined('XOOPS_ROOT_PATH'))
+{
+ exit();
+}
+
+/**
+ * Extract process for Chardata at weapon skill
+**/
+class Sd3rd_WSkill_DataChar extends Sd3rd_AbstractParser
+{
+ protected /*** Sd3rd_SkillHandler ***/ $_mHandler = null;
+ protected /*** Sd3rd_TargetHandler ***/ $_mTargetHandler = null;
+ protected /*** Sd3rd_SkillElementHandler ***/ $_mElementHandler = null;
+ protected /*** Sd3rd_KindHandler ***/ $_mKindHandler = null;
+
+ /**
+ * Constructor of this process.
+ *
+ * @param void
+ *
+ * @return void
+ **/
+ public function __construct()
+ {
+ $this->_mHandler = Sd3rd_UpdateUtils::getHandler(Sd3rd_HANDLER::SKILL);
+ $this->_mTargetHandler = Sd3rd_UpdateUtils::getHandler(Sd3rd_HANDLER::TARGET);
+ $this->_mElementHandler = Sd3rd_UpdateUtils::getHandler(Sd3rd_HANDLER::SKILL_ELEMENT);
+ $this->_mKindHandler = Sd3rd_UpdateUtils::getHandler(Sd3rd_HANDLER::KIND);
+ }
+
+ /**
+ * Latest main process.
+ *
+ * @param void
+ *
+ * @return void
+ **/
+ public function executeLatest()
+ {
+ $data = Sd3rd_UpdateUtils::parseByRegex($this->_mSource,"/\('(?P<name>[^']+)','(?P<desc>[^']*)','?(?P<range>[-\d\.]+)'?,'(?P<target>[^']+)','[\d,]+','?(?P<element>[-\d,]+)'?,'(?P<kind>[^']+)',(?P<tp>\d+),(?P<cnt>\d+)\)/");
+ $targetId = $this->_mTargetHandler->getId($data['target'],array(),true);
+ $kindId = $this->_mKindHandler->getId($data['kind'],array(),true);
+ $id = $this->_mHandler->getId($data['name'],array('description' => $data['desc'],'range' => $data['range'],'target_id' => $targetId,'element' => explode(',',$data['element']),'kind_id' => $kindId,'tp' => $data['tp'],'register_time' => $this->_mUpdateTime),true);
+ }
+}
+
+?>
protected /*** Enum[] ***/ $_mRegisterTableList = array();
protected /*** Enum[] ***/ $_mUpdateTableList = array();
protected /*** Enum[] ***/ $_mTruncateTableList = array();
+ protected /*** Enum[][] ***/ $_mCleanupTableList = array();
/**
* Get process priority.
$this->_refreshTableList($this->_mRegisterTableList,'DELETE FROM `%s` WHERE `register_time` >= %d');
$this->_refreshTableList($this->_mUpdateTableList,'DELETE FROM `%s` WHERE `update_time` >= %d');
$this->_refreshTableList($this->_mTruncateTableList,'TRUNCATE TABLE `%s`');
+ array_walk($this->_mCleanupTableList,create_function('$v','call_user_func_array(array("Sd3rd_UpdateUtils","cleanupTable"),$v);'));
}
/**
**/
public function executeLatest()
{
- $this->_mRegisterTableList = array(Sd3rd_HANDLER::ABILITY,Sd3rd_HANDLER::COSTUME);
+ $this->_mRegisterTableList = array(Sd3rd_HANDLER::ABILITY,Sd3rd_HANDLER::COSTUME,Sd3rd_HANDLER::SKILL);
$this->_mUpdateTableList = array(Sd3rd_HANDLER::UPDATE);
$this->_mTruncateTableList = array(Sd3rd_HANDLER::CHAR);
+ $this->_mCleanupTableList = array(array(Sd3rd_HANDLER::SKILL,Sd3rd_HANDLER::SKILL_ELEMENT));
}
/**
Sd3rd_HANDLER::ABILITY,
Sd3rd_HANDLER::CHAR,
Sd3rd_HANDLER::COSTUME,
+ Sd3rd_HANDLER::KIND,
+ Sd3rd_HANDLER::SKILL,
+ Sd3rd_HANDLER::SKILL_ELEMENT,
+ Sd3rd_HANDLER::TARGET,
Sd3rd_HANDLER::UPDATE
);
}
**/
public function executeLatest()
{
- foreach(array(Sd3rd_HANDLER::ABILITY,Sd3rd_HANDLER::COSTUME) as $table)
+ foreach(array(Sd3rd_HANDLER::ABILITY,Sd3rd_HANDLER::COSTUME,Sd3rd_HANDLER::KIND,Sd3rd_HANDLER::SKILL,Sd3rd_HANDLER::TARGET) as $table)
{
Sd3rd_UpdateUtils::getHandler($table)->setupMaster();
}
PRIMARY KEY (`costume_id`)
) ENGINE=MyISAM;
+CREATE TABLE `{prefix}_{dirname}_kind` (
+ `kind_id` tinyint(3) unsigned NOT NULL auto_increment,
+ `kind_name` varchar(20) NOT NULL,
+ PRIMARY KEY (`kind_id`)
+) ENGINE=MyISAM;
+
+CREATE TABLE `{prefix}_{dirname}_skill` (
+ `skill_id` smallint(5) unsigned NOT NULL auto_increment,
+ `skill_name` varchar(50) NOT NULL,
+ `description` varchar(255) NOT NULL,
+ `range` tinyint(4) NOT NULL,
+ `target_id` tinyint(3) unsigned NOT NULL,
+ `kind_id` tinyint(3) unsigned NOT NULL,
+ `tp` tinyint(3) unsigned NOT NULL,
+ `register_time` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`skill_id`)
+) ENGINE=MyISAM;
+
+CREATE TABLE `{prefix}_{dirname}_skill_element` (
+ `skill_id` smallint(5) unsigned NOT NULL,
+ `element_id` tinyint(4) NOT NULL,
+ PRIMARY KEY (`skill_id`,`element_id`)
+) ENGINE=MyISAM;
+
+CREATE TABLE `{prefix}_{dirname}_target` (
+ `target_id` tinyint(3) unsigned NOT NULL auto_increment,
+ `target_name` varchar(10) NOT NULL,
+ PRIMARY KEY (`target_id`)
+) ENGINE=MyISAM;
+
CREATE TABLE `{prefix}_{dirname}_update` (
`update_time` int(10) unsigned NOT NULL,
PRIMARY KEY (`update_time`)