Example #1
0
 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();
 }