1 <?php
2
3 Yii::setPathOfAlias("gtc", dirname(__FILE__) . DIRECTORY_SEPARATOR . '..');
4
5 class FullCrudGenerator extends CCodeGenerator
6 {
7
8 public $codeModel = 'gtc.fullCrud.FullCrudCode';
9
10 11 12 13 14 15 16
17 protected function getModels()
18 {
19 $models = array();
20 $aliases = array();
21 $aliases[] = 'application.models';
22 foreach (Yii::app()->getModules() as $moduleName => $config) {
23 if ($moduleName != 'gii')
24 $aliases[] = $moduleName . ".models";
25 }
26
27 foreach ($aliases as $alias) {
28 if (!is_dir(Yii::getPathOfAlias($alias)))
29 continue;
30 $files = scandir(Yii::getPathOfAlias($alias));
31 Yii::import($alias . ".*");
32 foreach ($files as $file) {
33 if ($fileClassName = $this->checkFile($file, $alias)) {
34 $classname = sprintf('%s.%s', $alias, $fileClassName);
35 Yii::import($classname);
36 try {
37 if (!class_exists($fileClassName))
38 throw new Exception('Model '.$fileClassName.' does not exist');
39
40 $model = new $fileClassName;
41 if (is_object($model) && $model->getMetaData())
42 $models[$classname] = $model->attributes;
43 else
44 $models[$classname] = array();
45 } catch (ErrorException $e) {
46 break;
47 } catch (CDbException $e) {
48 break;
49 } catch (Exception $e) {
50 break;
51 }
52 }
53 }
54 }
55
56 return $models;
57 }
58
59 private function checkFile($file, $alias = '')
60 {
61 if (substr($file, 0, 1) !== '.'
62 && substr($file, 0, 2) !== '..'
63 && substr($file, 0, 4) !== 'Base'
64 && $file != 'GActiveRecord'
65 && strtolower(substr($file, -4)) === '.php') {
66 $fileClassName = substr($file, 0, strpos($file, '.'));
67 if (class_exists($fileClassName)
68 && is_subclass_of($fileClassName, 'CActiveRecord')) {
69 $fileClass = new ReflectionClass($fileClassName);
70 if ($fileClass->isAbstract())
71 return null;
72 else
73 return $models[] = $fileClassName;
74 }
75 }
76 }
77
78 protected function getAuthTemplates()
79 {
80 foreach(scandir(Yii::getPathOfAlias('gtc.fullCrud.templates.slim.auth')) AS $file){
81 if (substr($file,0,1) === ".") {
82 continue;
83 }
84 $name = str_replace(".php", "", $file);
85 $return[$name] = $name;
86 }
87 return $return;
88 }
89
90 }
91
92 ?>
93