1: <?php defined('_JOOS_CORE') or exit();
2:
3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
16: class modelAdminCoder
17: {
18: public function get_tableinfo()
19: {
20: return array(
21: 'header_main'=>'Кодер'
22: );
23: }
24:
25: public static function get_model($table, $implode_models = false)
26: {
27: $table_fields = joosDatabase::instance()->get_utils()->get_table_fields($table);
28: $tableName = str_replace(array('#__', '#_', joosDatabase::instance()->get_prefix()), '', $table);
29:
30: $className = str_replace(' ', '', ucwords(strtolower(str_replace('_', ' ', $tableName))));
31:
32: $buffer_site = array();
33: $buffer_site[] = "\n/**";
34: $buffer_site[] = "\n * Модель сайта компонента $className";
35: $buffer_site[] = "\n * ";
36: $buffer_site[] = "\n * @package Components\\$className";
37: $buffer_site[] = "\n * @subpackage Models\Site";
38: $buffer_site[] = "\n * @author JoostinaTeam <info@joostina.ru>";
39: $buffer_site[] = "\n * @copyright (C) 2007-2012 Joostina Team";
40: $buffer_site[] = "\n * @license MIT License http://www.opensource.org/licenses/mit-license.php";
41: $buffer_site[] = "\n * @created " . JCURRENT_SERVER_TIME;
42: $buffer_site[] = "\n * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights";
43: $buffer_site[] = "\n * ";
44: $buffer_site[] = "\n */";
45:
46: $buffer_site[] = "\nclass model$className extends joosModel {";
47: foreach ($table_fields as $k => $v) {
48: $buffer_site[] = "\n /**";
49: $buffer_site[] = "\n * @field $v";
50: $field_type = preg_replace('#[^A-Z]#i', '', $v);
51: $field_type = str_replace('unsigned', '', $field_type);
52: $field_type_name = self::get_type($field_type);
53: $buffer_site[] = "\n * @type $field_type_name";
54: $buffer_site[] = "\n */";
55: $buffer_site[] = "\n public \$$k;";
56: }
57: $buffer_site[] = "\n\n /*";
58: $buffer_site[] = "\n * Constructor";
59: $buffer_site[] = "\n *";
60: $buffer_site[] = "\n */";
61: $buffer_site[] = "\n function __construct(){";
62: $buffer_site[] = "\n parent::__construct( '#__$tableName', 'id' );";
63: $buffer_site[] = "\n }";
64:
65: $buffer_site[] = "\n\n public function check() {";
66: $buffer_site[] = "\n \$this->filter();";
67: $buffer_site[] = "\n return true;";
68: $buffer_site[] = "\n }\n";
69:
70: $buffer_site[] = "\n\n public function before_insert() {\n";
71: $buffer_site[] = " return true;";
72: $buffer_site[] = "\n }\n";
73:
74: $buffer_site[] = "\n\n public function after_insert() {\n";
75: $buffer_site[] = " return true;";
76: $buffer_site[] = "\n }\n";
77:
78: $buffer_site[] = "\n\n public function before_update() {\n";
79: $buffer_site[] = " return true;";
80: $buffer_site[] = "\n }\n";
81:
82: $buffer_site[] = "\n\n public function after_update() {\n";
83: $buffer_site[] = " return true;";
84: $buffer_site[] = "\n }\n";
85:
86: $buffer_site[] = "\n\n public function before_store() {\n";
87: $buffer_site[] = " return true;";
88: $buffer_site[] = "\n }\n";
89:
90: $buffer_site[] = "\n\n public function after_store() {\n";
91: $buffer_site[] = " return true;";
92: $buffer_site[] = "\n }\n";
93:
94: $buffer_site[] = "\n\n public function before_delete() {\n";
95: $buffer_site[] = " return true;";
96: $buffer_site[] = "\n }\n";
97:
98: $buffer_site[] = "\n}\n";
99:
100: $buffer_admin[] = "\n/**";
101: $buffer_admin[] = "\n * Модель панели управления компонента $className";
102: $buffer_admin[] = "\n * ";
103: $buffer_admin[] = "\n * @package Components\\$className";
104: $buffer_admin[] = "\n * @subpackage Models\Admin";
105: $buffer_admin[] = "\n * @author JoostinaTeam <info@joostina.ru>";
106: $buffer_admin[] = "\n * @copyright (C) 2007-2012 Joostina Team";
107: $buffer_admin[] = "\n * @license MIT License http://www.opensource.org/licenses/mit-license.php";
108: $buffer_admin[] = "\n * @created " . JCURRENT_SERVER_TIME;
109: $buffer_admin[] = "\n * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights";
110: $buffer_admin[] = "\n * ";
111: $buffer_admin[] = "\n */";
112:
113: $buffer_admin[] = "\nclass modelAdmin$className extends model$className {";
114:
115: $buffer_admin[] = "\n\n public function get_fieldinfo() {\n";
116: $buffer_admin[] = " return array(";
117: foreach ($table_fields as $k => $v) {
118: $buffer_admin[] = "\n '$k' => array(";
119: $buffer_admin[] = "\n 'name' => '$k',";
120: $buffer_admin[] = "\n 'editable' => true,";
121: $buffer_admin[] = "\n 'in_admintable' => true,";
122: $buffer_admin[] = "\n 'html_table_element' => 'value',";
123: $buffer_admin[] = "\n 'html_table_element_param' => array(),";
124: $buffer_admin[] = "\n 'html_edit_element' => 'edit',";
125: $buffer_admin[] = "\n 'html_edit_element_param' => array(),";
126: $buffer_admin[] = "\n ),";
127: }
128: $buffer_admin[] = "\n );";
129: $buffer_admin[] = "\n }\n";
130:
131: $buffer_admin[] = "\n\n public function get_tableinfo() {\n";
132: $buffer_admin[] = " return array(";
133: $buffer_admin[] = "\n 'header_main' => '$className',";
134: $buffer_admin[] = "\n 'header_list' => '$className',";
135: $buffer_admin[] = "\n 'header_new' => 'Создание $className',";
136: $buffer_admin[] = "\n 'header_edit' => 'Редактирование $className'";
137: $buffer_admin[] = "\n );";
138: $buffer_admin[] = "\n }\n";
139:
140: $buffer_admin[] = "\n\n public function get_extrainfo() {\n";
141: $buffer_admin[] = " return array(";
142: $buffer_admin[] = "\n 'search' => array(),";
143: $buffer_admin[] = "\n 'filter' => array(),";
144: $buffer_admin[] = "\n 'extrafilter' => array()";
145: $buffer_admin[] = "\n );";
146: $buffer_admin[] = "\n }\n";
147:
148: $buffer_admin[] = "\n}\n";
149:
150: $return = array();
151:
152: $return['site'] = $implode_models ? implode('', $buffer_site) : joosHTML::textarea(
153: array('name' => $tableName,
154: 'value' => implode('', $buffer_site),
155: 'rows' => '5',
156: 'class' => 'coder_model_area'
157: )
158: );
159:
160: $return['admin'] = $implode_models ? implode('', $buffer_admin) : joosHTML::textarea(
161: array('name' => $tableName,
162: 'value' => implode('', $buffer_site),
163: 'rows' => '5',
164: 'class' => 'coder_model_area'
165: )
166: );
167:
168: return $return;
169: }
170:
171: 172: 173: 174: 175: 176:
177: private static function get_type($ident_string)
178: {
179: $ident_string = strtolower($ident_string);
180:
181: switch ($ident_string) {
182: case 'tinyint':
183: case 'smallint':
184: case 'mediumint':
185: case 'int':
186: case 'bigint':
187: case 'decimal':
188: case 'double':
189: case 'real':
190: case 'bit':
191: case 'serial':
192:
193: $type = 'int';
194: break;
195:
196: case 'char':
197: case 'varchar':
198: case 'tinytext';
199: case 'text';
200: case 'mediumtext';
201: case 'longtext';
202: case 'binary':
203: case 'varbinary':
204: case 'tinyblob':
205: case 'mediumblob':
206: case 'blob':
207: case 'longblob':
208: case 'enum':
209: case 'set':
210:
211: $type = 'string';
212: break;
213:
214: case 'date':
215: case 'datetime':
216: case 'timestamp':
217: case 'time':
218: case 'year':
219:
220: $type = 'datetime';
221: break;
222:
223: case 'boolean':
224:
225: $type = 'boolean';
226: break;
227:
228: case 'float':
229:
230: $type = 'float';
231: break;
232:
233: default:
234: $type = 'unknown';
235: break;
236: }
237:
238: return $type;
239: }
240:
241: }
242:
243: class modelAdminCoder_Faker
244: {
245: public static $data_types = array('text' => array('name' => 'Текст',
246: 'types' => array('text', 'tinytext', 'mediumtext', 'longtext', 'blob', 'tinyblob', 'mediumblob', 'longblob'),),
247: 'text_small' => array('name' => 'Заголовок',
248: 'types' => array('varchar'),),
249: 'text_name' => array('name' => 'Имя',
250: 'types' => array('varchar'),),
251: 'href' => array('name' => 'Ссылка',
252: 'types' => array('varchar'),),
253: 'integer' => array('name' => 'Число',
254: 'types' => array('tinyint', 'smallint', 'int'),),
255: 'integer_range' => array('name' => 'Числа из диапазона',
256: 'types' => array('tinyint', 'smallint', 'int'),),
257: 'date' => array('name' => 'Дата',
258: 'types' => array('date'),),
259: 'time' => array('name' => 'Время',
260: 'types' => array('time'),),
261: 'date_time' => array('name' => 'Дата и время',
262: 'types' => array('datetime'),));
263: public static $types_mapping = array(
264: );
265:
266: }
267: