Added new fields type and added many improvenments to fields creation

This commit is contained in:
Antonio de la Rosa 2016-09-01 18:45:11 +02:00
parent 8c8df9eb9b
commit ee83acf576
7 changed files with 113 additions and 17 deletions

View file

@ -65,6 +65,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 {
if(count(Webmodel::$model)>0)
@ -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;';
}

View file

@ -4,10 +4,23 @@ 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];
}

View 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"';
}
}
?>

View file

@ -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);
}

View file

@ -12,16 +12,29 @@ 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)
{

View file

@ -154,6 +154,19 @@ class PhangoField {
}
/**
* Method used for make things after of register in the model
*
*
*/
function after_register()
{
}
/**

View file

@ -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();
@ -458,13 +465,22 @@ class Webmodel {
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();
}