diff --git a/bin/padmin b/bin/padmin index 1874625..8f71ebb 100755 --- a/bin/padmin +++ b/bin/padmin @@ -64,6 +64,23 @@ function padminConsole($options) WebModel::load_model($options['model']); + + //Load classes not defined in Webmodel::$model + + $arr_classes=get_declared_classes(); + + foreach($arr_classes as $class) + { + + if(get_parent_class($class)==='PhangoApp\PhaModels\Webmodel') + { + + Webmodel::$model[strtolower($class)]=new $class(); + + } + + } + try { @@ -290,7 +307,7 @@ function update_table() $id_table_related=Webmodel::load_id_model_related(Webmodel::$model[$key]->components[$field], Webmodel::$model); - Webmodel::$arr_sql_set_index[$key][$field]='ALTER TABLE `'.$key.'` ADD CONSTRAINT `'.$field.'_'.$key.'IDX` FOREIGN KEY ( `'.$field.'` ) REFERENCES `'.$table_related.'` (`'.$id_table_related.'`) ON DELETE RESTRICT ON UPDATE RESTRICT;'; + Webmodel::$arr_sql_set_index[$key][$field]='ALTER TABLE `'.$key.'` ADD CONSTRAINT `'.$field.'_'.$key.'IDX` FOREIGN KEY ( `'.$field.'` ) REFERENCES `'.$table_related.'` (`'.$id_table_related.'`) ON DELETE CASCADE ON UPDATE CASCADE;'; } @@ -364,7 +381,7 @@ function update_table() $id_table_related=Webmodel::load_id_model_related(Webmodel::$model[$key]->components[$new_field], Webmodel::$model); - Webmodel::$arr_sql_set_index[$key][$new_field]='ALTER TABLE `'.$key.'` ADD CONSTRAINT `'.$new_field.'_'.$key.'IDX` FOREIGN KEY ( `'.$new_field.'` ) REFERENCES `'.$table_related.'` (`'.$id_table_related.'`) ON DELETE RESTRICT ON UPDATE RESTRICT;'; + Webmodel::$arr_sql_set_index[$key][$new_field]='ALTER TABLE `'.$key.'` ADD CONSTRAINT `'.$new_field.'_'.$key.'IDX` FOREIGN KEY ( `'.$new_field.'` ) REFERENCES `'.$table_related.'` (`'.$id_table_related.'`) ON DELETE CASCADE ON UPDATE CASCADE;'; } diff --git a/src/CoreFields/ArrayField.php b/src/CoreFields/ArrayField.php index 13da650..d57f736 100644 --- a/src/CoreFields/ArrayField.php +++ b/src/CoreFields/ArrayField.php @@ -4,9 +4,22 @@ namespace PhangoApp\PhaModels\CoreFields; /** * +* Class for create json strings with values +* */ class ArrayField extends SerializeField { + + public $key_value=''; + + public function __construct($related_type, $key_value='') + { + + parent::__construct($related_type); + + $this->key_value=$key_value; + + } /** * This function is used for show the value on a human format @@ -15,7 +28,7 @@ class ArrayField extends SerializeField { public function show_formatted($value, $key_value='') { - $real_value=unserialize($value); + $real_value=json_decode($value, true); if($key_value==='') { @@ -24,10 +37,10 @@ class ArrayField extends SerializeField { } else - if(isset($real_value[$key_value])) + if(isset($real_value[$this->key_value])) { - return $real_value[$key_value]; + return $real_value[$this->key_value]; } @@ -35,4 +48,4 @@ class ArrayField extends SerializeField { } -?> \ No newline at end of file +?> diff --git a/src/CoreFields/BigIntegerField.php b/src/CoreFields/BigIntegerField.php new file mode 100644 index 0000000..5f0359b --- /dev/null +++ b/src/CoreFields/BigIntegerField.php @@ -0,0 +1,23 @@ +size.') NOT NULL DEFAULT "0"'; + + } + +} + +?> diff --git a/src/CoreFields/ForeignKeyField.php b/src/CoreFields/ForeignKeyField.php index e7da30a..47cd3b7 100644 --- a/src/CoreFields/ForeignKeyField.php +++ b/src/CoreFields/ForeignKeyField.php @@ -25,7 +25,7 @@ class ForeignKeyField extends IntegerField{ public $fields_related_model; public $name_field_to_field; - function __construct($related_model, $size=11, $default_id=0, $name_field='', $name_value='') + function __construct($related_model, $size=11, $default_id=0, $name_field='', $select_fields=[]) { $this->size=$size; @@ -33,14 +33,14 @@ class ForeignKeyField extends IntegerField{ $this->related_model=$related_model; $this->container_model=$this->related_model->name; //Fields obtained from related_model if you make a query... - $this->fields_related_model=array(); + $this->fields_related_model=$select_fields; //Representative field for related model... $this->name_field_to_field=$name_field; $this->default_id=$default_id; $this->quot_open=''; $this->quot_close=''; $this->protected=0; - $this->parameters=array($this->related_model, $name_field, $name_value); + $this->parameters=array($this->related_model, $name_field); } diff --git a/src/CoreFields/ParentField.php b/src/CoreFields/ParentField.php index 4fa3c7f..6cac16f 100644 --- a/src/CoreFields/ParentField.php +++ b/src/CoreFields/ParentField.php @@ -12,15 +12,28 @@ class ParentField extends IntegerField{ //field related in the model... public $parent_model=''; - function __construct($size=11, $parent_model, $name_field='', $name_value='') + function __construct($size=11, $name_field='', $name_value='') { - $this->parent_model=$parent_model; + //You need define directly if you dont declare an instance class in a model + //$this->parent_model=$parent_model; + $this->size=$size; - $this->form='PhangoApp\PhaModels\Forms\SelectModelForm'; - $this->parameters=array($this->parent_model, $name_field, $name_value); + $this->name_field=$name_field; + $this->name_value=$name_value; + } + + function after_register() + { + + $this->parent_model=$this->model_instance; + $this->form='PhangoApp\PhaModels\Forms\SelectModelForm'; + $this->parameters=array($this->parent_model, $this->name_field, $this->name_value); + + } + function check($value) { diff --git a/src/CoreFields/PhangoField.php b/src/CoreFields/PhangoField.php index 9405c53..55eec17 100644 --- a/src/CoreFields/PhangoField.php +++ b/src/CoreFields/PhangoField.php @@ -154,6 +154,19 @@ class PhangoField { + } + + /** + * Method used for make things after of register in the model + * + * + */ + + function after_register() + { + + + } /** @@ -219,4 +232,4 @@ class PhangoField { } -?> \ No newline at end of file +?> diff --git a/src/Webmodel.php b/src/Webmodel.php index 73e32af..7b3f931 100644 --- a/src/Webmodel.php +++ b/src/Webmodel.php @@ -430,11 +430,18 @@ class Webmodel { * */ - public function __construct($name_model, $cache=0, $type_cache='PhangoApp\PhaModels\Cache::file_cache') + public function __construct($name_model='', $cache=0, $type_cache='PhangoApp\PhaModels\Cache::file_cache') { //Webmodel::$root_model='app/'.$name_model.'/'.Webmodel::$model_path; + if($name_model=='') + { + + $name_model=strtolower(get_class($this)); + + } + $this->name=$name_model; $this->idmodel='Id'.ucfirst($this->name); $this->components[$this->idmodel]=new PrimaryField(); @@ -457,13 +464,22 @@ class Webmodel { Webmodel::$model[$name_model]=&$this; Webmodel::$m->$name_model=&Webmodel::$model[$name_model]; + + $this->load_components(); } /** - * + * Method for load fields from a method called load_components * */ + + public function load_components() + { + + + + } /** * Method for load models from a project. @@ -1670,7 +1686,7 @@ class Webmodel { //'Id'.ucfirst($this->components[$field]->related_model); - Webmodel::$arr_sql_set_index[$this->name][$field]='ALTER TABLE `'.$this->name.'` ADD CONSTRAINT `'.$field.'_'.$this->name.'IDX` FOREIGN KEY ( `'.$field.'` ) REFERENCES `'.$table_related.'` (`'.$id_table_related.'`) ON DELETE RESTRICT ON UPDATE RESTRICT;'; + Webmodel::$arr_sql_set_index[$this->name][$field]='ALTER TABLE `'.$this->name.'` ADD CONSTRAINT `'.$field.'_'.$this->name.'IDX` FOREIGN KEY ( `'.$field.'` ) REFERENCES `'.$table_related.'` (`'.$id_table_related.'`) ON DELETE CASCADE ON UPDATE CASCADE;'; } } @@ -2258,6 +2274,7 @@ class Webmodel { $this->components[$name]->required=$required; $this->components[$name]->set_relationships(); + $this->components[$name]->after_register(); }