EventTypeModuleCode::updateModel PHP Method

updateModel() public method

public updateModel ( $model_path, $element )
    public function updateModel($model_path, $element)
    {
        $data = file_get_contents($model_path);
        if (preg_match('/public function rules.*?\\}/si', $data, $m)) {
            $replace = '';
            foreach (explode(chr(10), $m[0]) as $line) {
                if (preg_match('/array\\(([a-zA-Z0-9_ ,\']+),[\\s\\t]*\'safe\'\\),/', $line, $n)) {
                    $fields = preg_replace('/[, \']+$/', '', preg_replace('/^[ ,\']+/', '', $n[1]));
                    foreach ($element['fields'] as $num => $field) {
                        if ($field['type'] != 'Multi select') {
                            $fields .= ', ' . $field['name'];
                        }
                    }
                    $replace .= "\t\t\tarray('{$fields}', 'safe'),\n";
                } elseif (preg_match('/array\\(([a-zA-Z0-9_ ,\']+),[\\s\\t]*\'required\'\\),/', $line, $n)) {
                    $fields = preg_replace('/[, \']+$/', '', preg_replace('/^[ ,\']+/', '', $n[1]));
                    foreach ($element['fields'] as $num => $field) {
                        if ($field['required'] && $field['type'] != 'Multi select') {
                            $fields .= ', ' . $field['name'];
                        }
                    }
                    $replace .= "\t\t\tarray('{$fields}', 'required'),\n";
                } elseif (preg_match('/array\\(([a-zA-Z0-9_ ,\']+),[\\s\\t]*\'safe\',[\\s\\t]*\'on\'[\\s\\t]*=>[\\s\\t]*\'search\'\\),/', $line, $n)) {
                    $fields = preg_replace('/[, \']+$/', '', preg_replace('/^[ ,\']+/', '', $n[1]));
                    foreach ($element['fields'] as $num => $field) {
                        if ($field['type'] != 'Multi select') {
                            $fields .= ', ' . $field['name'];
                        }
                    }
                    $replace .= "\t\t\tarray('{$fields}', 'safe', 'on' => 'search'),\n";
                } else {
                    $replace .= $line . "\n";
                }
            }
            $data = str_replace($m[0], $replace, $data);
        }
        if (preg_match('/public function relations.*?\\}/si', $data, $m)) {
            $relations = "public function relations()\n\t{\n\t\t// NOTE: you may need to adjust the relation name and the related\n\t\t// class name for the relations automatically generated below.\n\t\treturn array(\n";
            foreach (explode(chr(10), $m[0]) as $line) {
                if (preg_match('/\\(self::/', $line)) {
                    $relations .= $line . "\n";
                }
            }
            foreach ($element['relations'] as $relation) {
                $relations .= "\t\t\t'{$relation['name']}' => array(self::{$relation['type']}, '{$relation['class']}', '{$relation['field']}'),\n";
            }
            $relations .= "\t\t);\n\t}";
            $data = str_replace($m[0], $relations, $data);
        }
        if (preg_match('/public function attributeLabels.*?\\}/si', $data, $m)) {
            $labels = "public function attributeLabels()\n\t{\n\t\treturn array(\n";
            foreach (explode(chr(10), $m[0]) as $line) {
                if (preg_match('/=>/', $line)) {
                    $labels .= "\t\t\t" . preg_replace('/^[\\s\\t]+/', '', $line) . "\n";
                }
            }
            foreach ($element['fields'] as $field) {
                $labels .= "\t\t\t'{$field['name']}' => '{$field['label']}',\n";
            }
            $labels .= "\t\t);\n\t}";
            $data = str_replace($m[0], $labels, $data);
        }
        file_put_contents($model_path, $data);
    }