8 if(!defined('XOOPS_ROOT_PATH'))
14 * @class Sd2nd_GarbageCollectionDispose
16 class Sd2nd_GarbageCollectionDispose extends Sd2nd_AbstractFilter
21 const ACTIVE_TABLE = Sd2nd_AssetManager::HANDLER_LEARNED_ABILITY;
26 const CHAR_TABLE = Sd2nd_AssetManager::HANDLER_CHAR;
31 protected $_mTableName = array();
40 public function getPriority()
42 return XCUBE_DELEGATE_PRIORITY_FIRST;
51 * @throw Sd2nd_QueryException
53 protected function _executeGC()
55 $root =& XCube_Root::getSingleton();
56 $db =& $root->mController->mDB;
58 if(!$res = $db->query('select `m`.`eno` as `eno` from `' . Sd2nd_UpdateUtils::convertTableName(self::ACTIVE_TABLE) . '` as m left join `' . Sd2nd_UpdateUtils::convertTableName(self::CHAR_TABLE) . '` as c on `m`.`eno` = `c`.`eno` where isnull(`c`.`full_name`) group by `m`.`eno`'))
60 throw new Sd2nd_QueryException(array('active' => self::ACTIVE_TABLE,'char' => self::CHAR_TABLE));
63 $cri = new CriteriaCompo();
64 while($row = $db->fetchArray($res))
66 $cri->add(new Criteria('eno',$row['eno']));
69 if($cri->hasChildElements())
71 foreach($this->_mTableName as $type)
73 Sd2nd_UpdateUtils::deleteMultiObjects($type,$cri);
84 * @throw Sd2nd_QueryException
86 public function executeLatest()
88 $this->_mTableName = array(
89 Sd2nd_AssetManager::HANDLER_ICON,
90 Sd2nd_AssetManager::HANDLER_IMAGE,
91 Sd2nd_AssetManager::HANDLER_LEARNED_ABILITY,
92 Sd2nd_AssetManager::HANDLER_LEARNED_COSTUME,
93 Sd2nd_AssetManager::HANDLER_LEARNED_SKILL