Added new fields type and added many improvenments to fields creation
This commit is contained in:
parent
8c8df9eb9b
commit
ee83acf576
7 changed files with 113 additions and 17 deletions
21
bin/padmin
21
bin/padmin
|
|
@ -64,6 +64,23 @@ function padminConsole($options)
|
||||||
|
|
||||||
|
|
||||||
WebModel::load_model($options['model']);
|
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 {
|
try {
|
||||||
|
|
||||||
|
|
@ -290,7 +307,7 @@ function update_table()
|
||||||
|
|
||||||
$id_table_related=Webmodel::load_id_model_related(Webmodel::$model[$key]->components[$field], Webmodel::$model);
|
$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);
|
$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;';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,22 @@ namespace PhangoApp\PhaModels\CoreFields;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
* Class for create json strings with values
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class ArrayField extends SerializeField {
|
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
|
* 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='')
|
public function show_formatted($value, $key_value='')
|
||||||
{
|
{
|
||||||
|
|
||||||
$real_value=unserialize($value);
|
$real_value=json_decode($value, true);
|
||||||
|
|
||||||
if($key_value==='')
|
if($key_value==='')
|
||||||
{
|
{
|
||||||
|
|
@ -24,10 +37,10 @@ class ArrayField extends SerializeField {
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
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 {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
23
src/CoreFields/BigIntegerField.php
Normal file
23
src/CoreFields/BigIntegerField.php
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BigIntegerfield is a field for big integers values.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace PhangoApp\PhaModels\CoreFields;
|
||||||
|
use PhangoApp\PhaUtils\Utils;
|
||||||
|
use PhangoApp\PhaI18n\I18n;
|
||||||
|
|
||||||
|
class BigIntegerField extends IntegerField {
|
||||||
|
|
||||||
|
function get_type_sql()
|
||||||
|
{
|
||||||
|
|
||||||
|
return 'BIGINT('.$this->size.') NOT NULL DEFAULT "0"';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
@ -25,7 +25,7 @@ class ForeignKeyField extends IntegerField{
|
||||||
public $fields_related_model;
|
public $fields_related_model;
|
||||||
public $name_field_to_field;
|
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;
|
$this->size=$size;
|
||||||
|
|
@ -33,14 +33,14 @@ class ForeignKeyField extends IntegerField{
|
||||||
$this->related_model=$related_model;
|
$this->related_model=$related_model;
|
||||||
$this->container_model=$this->related_model->name;
|
$this->container_model=$this->related_model->name;
|
||||||
//Fields obtained from related_model if you make a query...
|
//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...
|
//Representative field for related model...
|
||||||
$this->name_field_to_field=$name_field;
|
$this->name_field_to_field=$name_field;
|
||||||
$this->default_id=$default_id;
|
$this->default_id=$default_id;
|
||||||
$this->quot_open='';
|
$this->quot_open='';
|
||||||
$this->quot_close='';
|
$this->quot_close='';
|
||||||
$this->protected=0;
|
$this->protected=0;
|
||||||
$this->parameters=array($this->related_model, $name_field, $name_value);
|
$this->parameters=array($this->related_model, $name_field);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,15 +12,28 @@ class ParentField extends IntegerField{
|
||||||
//field related in the model...
|
//field related in the model...
|
||||||
public $parent_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->size=$size;
|
||||||
$this->form='PhangoApp\PhaModels\Forms\SelectModelForm';
|
$this->name_field=$name_field;
|
||||||
$this->parameters=array($this->parent_model, $name_field, $name_value);
|
$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)
|
function check($value)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -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;
|
//Webmodel::$root_model='app/'.$name_model.'/'.Webmodel::$model_path;
|
||||||
|
|
||||||
|
if($name_model=='')
|
||||||
|
{
|
||||||
|
|
||||||
|
$name_model=strtolower(get_class($this));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
$this->name=$name_model;
|
$this->name=$name_model;
|
||||||
$this->idmodel='Id'.ucfirst($this->name);
|
$this->idmodel='Id'.ucfirst($this->name);
|
||||||
$this->components[$this->idmodel]=new PrimaryField();
|
$this->components[$this->idmodel]=new PrimaryField();
|
||||||
|
|
@ -457,13 +464,22 @@ class Webmodel {
|
||||||
Webmodel::$model[$name_model]=&$this;
|
Webmodel::$model[$name_model]=&$this;
|
||||||
|
|
||||||
Webmodel::$m->$name_model=&Webmodel::$model[$name_model];
|
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.
|
* Method for load models from a project.
|
||||||
|
|
@ -1670,7 +1686,7 @@ class Webmodel {
|
||||||
|
|
||||||
//'Id'.ucfirst($this->components[$field]->related_model);
|
//'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]->required=$required;
|
||||||
|
|
||||||
$this->components[$name]->set_relationships();
|
$this->components[$name]->set_relationships();
|
||||||
|
$this->components[$name]->after_register();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue