protected function _generate() { $className = $this->_getClassName(); $tableName = DevHelper_Generator_Db::getTableName($this->_config, $this->_dataClass['name']); $tableFields = $this->_dataClass['fields']; foreach ($tableFields as &$field) { unset($field['name']); if (!empty($field['length'])) { $field['maxLength'] = $field['length']; unset($field['length']); } $field['type'] = DevHelper_Generator_File::varExportConstantFromArray($field['type'], array('XenForo_DataWriter::TYPE_BOOLEAN', 'XenForo_DataWriter::TYPE_STRING', 'XenForo_DataWriter::TYPE_BINARY', 'XenForo_DataWriter::TYPE_INT', 'XenForo_DataWriter::TYPE_UINT', 'XenForo_DataWriter::TYPE_UINT_FORCED', 'XenForo_DataWriter::TYPE_FLOAT', 'XenForo_DataWriter::TYPE_SERIALIZED', 'XenForo_DataWriter::TYPE_JSON', 'XenForo_DataWriter::TYPE_UNKNOWN')); } $tableFields = DevHelper_Generator_File::varExport($tableFields, 1); $primaryKey = DevHelper_Generator_File::varExport($this->_dataClass['primaryKey']); $modelClassName = DevHelper_Generator_Code_Model::getClassName($this->_addOn, $this->_config, $this->_dataClass); $this->_setClassName($className); $this->_setBaseClass('XenForo_DataWriter'); $this->_addMethod('_getFields', 'protected', array(), "\n\nreturn array(\n '{$tableName}' => {$tableFields}\n);\n\n "); if (count($this->_dataClass['primaryKey']) == 1) { $idField = reset($this->_dataClass['primaryKey']); $this->_addMethod('_getExistingData', 'protected', array('$data'), "\n\nif (!\$id = \$this->_getExistingPrimaryKey(\$data, '{$idField}')) {\n return false;\n}\n\nreturn array('{$tableName}' => \$this->_get{$this->_dataClass['camelCase']}Model()->get{$this->_dataClass['camelCase']}ById(\$id));\n\n "); } else { $this->_addMethod('_getExistingData', 'protected', array('$data'), "\n\nthrow new XenForo_Exception('{$className} does not support _getExistingData()');\n\n "); } $this->_addMethod('_getUpdateCondition', 'protected', array('$tableName'), "\n\n\$conditions = array();\n\nforeach ({$primaryKey} as \$field) {\n \$conditions[] = \$field . ' = ' . \$this->_db->quote(\$this->getExisting(\$field));\n}\n\nreturn implode(' AND ', \$conditions);\n\n "); $this->_addMethod("_get{$this->_dataClass['camelCase']}Model", 'protected', array(), "\n\nreturn \$this->getModelFromCache('{$modelClassName}');\n\n "); $this->_generateImageCode(); $this->_generatePhrasesCode(); $this->_generateParentCode(); return parent::_generate(); }