mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-16 19:49:28 +00:00
- Added exit codes for udf validation to constants.php
- Added messages for udf validation to fhc_model_lang - Added MAX_LENGTH and MIN_LENGTH to UDFWidgetTpl in WidgetLib - UDF validation second version in DB_Model
This commit is contained in:
@@ -101,7 +101,13 @@ define('EXIT_UNKNOWN_CLASS', 5); // unknown class
|
||||
define('EXIT_UNKNOWN_METHOD', 6); // unknown class member
|
||||
define('EXIT_USER_INPUT', 7); // invalid user input
|
||||
define('EXIT_DATABASE', 8); // database error
|
||||
define('EXIT_VALIDATION_UDF', 9); // UDF validation has been failed
|
||||
define('EXIT_VALIDATION_UDF', 10); // UDF validation has been failed
|
||||
define('EXIT_VALIDATION_UDF_MIN_VALUE', 11); // UDF validation has been failed -> MIN VALUE
|
||||
define('EXIT_VALIDATION_UDF_MAX_VALUE', 12); // UDF validation has been failed -> MAX VALUE
|
||||
define('EXIT_VALIDATION_UDF_MIN_LENGTH', 11); // UDF validation has been failed -> MIN LENGTH
|
||||
define('EXIT_VALIDATION_UDF_MAX_LENGTH', 12); // UDF validation has been failed -> MAX LENGTH
|
||||
define('EXIT_VALIDATION_UDF_REGEX', 13); // UDF validation has been failed -> REGEX
|
||||
define('EXIT_VALIDATION_UDF_REQUIRED', 14); // UDF validation has been failed -> REQUIRED
|
||||
|
||||
define('EXIT_AUTO_MIN', 1000); // lowest automatically-assigned error code
|
||||
define('EXIT_AUTO_MAX', 2000); // highest automatically-assigned error code
|
||||
@@ -2,17 +2,36 @@
|
||||
|
||||
class DB_Model extends FHC_Model
|
||||
{
|
||||
// Default schema used by the models
|
||||
const DEFAULT_SCHEMA = 'public';
|
||||
|
||||
// Default model class name postfix
|
||||
const MODEL_POSTFIX = '_model';
|
||||
|
||||
// Query used to get the list of columns from a table
|
||||
const QUERY_LIST_FIELDS = 'SELECT * FROM %s WHERE 0 = 1';
|
||||
|
||||
// Constants used to convert postgresql arrays and booleans to the php equivalent
|
||||
const PGSQL_ARRAY_TYPE = '_';
|
||||
const PGSQL_BOOLEAN_TYPE = 'bool';
|
||||
const PGSQL_BOOLEAN_ARRAY_TYPE = '_bool';
|
||||
const PGSQL_BOOLEAN_TRUE = 't';
|
||||
const PGSQL_BOOLEAN_FALSE = 'f';
|
||||
const MODEL_POSTFIX = '_model';
|
||||
const DEFAULT_SCHEMA = 'public';
|
||||
|
||||
// UDF constants
|
||||
const UDF_FIELD_NAME = 'udf_values';
|
||||
const UDF_FIELD_TYPE = 'jsonb';
|
||||
const UDF_FIELD_PREFIX = 'udf_';
|
||||
const QUERY_LIST_FIELDS = 'SELECT * FROM %s WHERE 0 = 1';
|
||||
const UDF_ATTRIBUTE_NAME = 'name';
|
||||
|
||||
// UDF validation attributes
|
||||
const UDF_REGEX = 'regex';
|
||||
const UDF_REGEX_LANG = 'php';
|
||||
const UDF_REQUIRED = 'required';
|
||||
const UDF_MAX_VALUE = 'max-value';
|
||||
const UDF_MIN_VALUE = 'min-value';
|
||||
const UDF_MAX_LENGTH = 'max-length';
|
||||
const UDF_MIN_LENGTH = 'min-length';
|
||||
|
||||
protected $dbTable; // Name of the DB-Table for CI-Insert, -Update, ...
|
||||
protected $pk; // Name of the PrimaryKey for DB-Update, Load, ...
|
||||
@@ -843,6 +862,7 @@ class DB_Model extends FHC_Model
|
||||
private function _validateUDFs($udfDescription, $udfValue)
|
||||
{
|
||||
$isValid = true;
|
||||
$valid = success(true);
|
||||
|
||||
$tmpUdfValues = $udfValue;
|
||||
if (!is_array($udfValue))
|
||||
@@ -863,29 +883,43 @@ class DB_Model extends FHC_Model
|
||||
foreach($tmpUdfValues as $udfValIndx => $udfVal)
|
||||
{
|
||||
//
|
||||
if (isset($validation->{'max-value'}) && $udfVal > $validation->{'max-value'})
|
||||
if (isset($validation->{DB_Model::UDF_MAX_VALUE}) && $udfVal > $validation->{DB_Model::UDF_MAX_VALUE})
|
||||
{
|
||||
$isValid = false;
|
||||
$valid = error($udfDescription->{DB_Model::UDF_ATTRIBUTE_NAME}, EXIT_VALIDATION_UDF_MAX_VALUE);
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
if (isset($validation->{'min-value'}) && $udfVal < $validation->{'min-value'})
|
||||
if (isset($validation->{DB_Model::UDF_MIN_VALUE}) && $udfVal < $validation->{DB_Model::UDF_MIN_VALUE})
|
||||
{
|
||||
$isValid = false;
|
||||
$valid = error($udfDescription->{DB_Model::UDF_ATTRIBUTE_NAME}, EXIT_VALIDATION_UDF_MIN_VALUE);
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
if (isset($validation->regex) && is_array($validation->regex))
|
||||
if (isset($validation->{DB_Model::UDF_MAX_LENGTH}) && $udfVal > $validation->{DB_Model::UDF_MAX_LENGTH})
|
||||
{
|
||||
foreach($validation->regex as $regexIndx => $regex)
|
||||
$valid = error($udfDescription->{DB_Model::UDF_ATTRIBUTE_NAME}, EXIT_VALIDATION_UDF_MAX_LENGTH);
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
if (isset($validation->{DB_Model::UDF_MIN_LENGTH}) && $udfVal < $validation->{DB_Model::UDF_MIN_LENGTH})
|
||||
{
|
||||
$valid = error($udfDescription->{DB_Model::UDF_ATTRIBUTE_NAME}, EXIT_VALIDATION_UDF_MIN_LENGTH);
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
if (isset($validation->{DB_Model::UDF_REGEX}) && is_array($validation->{DB_Model::UDF_REGEX}))
|
||||
{
|
||||
foreach($validation->{DB_Model::UDF_REGEX} as $regexIndx => $regex)
|
||||
{
|
||||
if ($regex->language == 'php')
|
||||
if ($regex->language == DB_Model::UDF_REGEX_LANG)
|
||||
{
|
||||
if (preg_match($regex->expression, $udfVal) != 1)
|
||||
{
|
||||
$isValid = false;
|
||||
$valid = error($udfDescription->{DB_Model::UDF_ATTRIBUTE_NAME}, EXIT_VALIDATION_UDF_REGEX);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -894,15 +928,7 @@ class DB_Model extends FHC_Model
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
if ($isValid === true)
|
||||
{
|
||||
return success(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
return error($udfDescription->name, EXIT_VALIDATION_UDF);
|
||||
}
|
||||
return $valid;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -910,7 +936,8 @@ class DB_Model extends FHC_Model
|
||||
*/
|
||||
private function _manageUDFs(&$data)
|
||||
{
|
||||
$validate = error('manageUDFs', EXIT_DATABASE);
|
||||
$validate = success(true);
|
||||
$notValidUDFsArray = array();
|
||||
|
||||
if ($this->hasUDF()) // Checks if this table has UDFs
|
||||
{
|
||||
@@ -931,10 +958,10 @@ class DB_Model extends FHC_Model
|
||||
|
||||
foreach($this->UDFs as $key => $val)
|
||||
{
|
||||
if ($udfDescription->name == $key)
|
||||
if ($udfDescription->{DB_Model::UDF_ATTRIBUTE_NAME} == $key)
|
||||
{
|
||||
// Validation of UDF parameter value
|
||||
$validate = $this->_validateUDFs($udfDescription, $val);
|
||||
// $validate = $this->_validateUDFs($udfDescription, $val);
|
||||
|
||||
// If validation is ok copy the value
|
||||
if (isSuccess($validate))
|
||||
@@ -943,14 +970,14 @@ class DB_Model extends FHC_Model
|
||||
}
|
||||
else // otherwise stop the elaboration
|
||||
{
|
||||
break;
|
||||
$notValidUDFsArray[] = $validate;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If validation was ok
|
||||
if (isSuccess($validate))
|
||||
if (count($notValidUDFsArray) == 0)
|
||||
{
|
||||
$jsonEncodedUDFs = json_encode($jsonb); // encode to json
|
||||
if ($jsonEncodedUDFs !== false)
|
||||
@@ -958,12 +985,12 @@ class DB_Model extends FHC_Model
|
||||
$data[DB_Model::UDF_FIELD_NAME] = $jsonEncodedUDFs;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$validate = error($notValidUDFsArray, EXIT_VALIDATION_UDF);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return success(true);
|
||||
}
|
||||
|
||||
return $validate;
|
||||
}
|
||||
|
||||
@@ -6,4 +6,10 @@ if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
$lang['fhc_'.FHC_MODEL_ERROR] = 'Fehler in Model';
|
||||
$lang['fhc_'.FHC_NODBTABLE] = '"dbTable" ist nicht gesetzt!';
|
||||
$lang['fhc_'.FHC_NORIGHT] = 'Rechte sind nicht ausreichend!';
|
||||
$lang['fhc_'.EXIT_VALIDATION_UDF] = 'UDF validation has been failed';
|
||||
$lang['fhc_'.EXIT_VALIDATION_UDF] = 'UDF validation has been failed';
|
||||
$lang['fhc_'.EXIT_VALIDATION_UDF_MIN_VALUE] = 'UDF validation has been failed - MIN VALUE';
|
||||
$lang['fhc_'.EXIT_VALIDATION_UDF_MAX_VALUE] = 'UDF validation has been failed - MAX VALUE';
|
||||
$lang['fhc_'.EXIT_VALIDATION_UDF_MIN_LENGTH] = 'UDF validation has been failed - MIN LENGTH';
|
||||
$lang['fhc_'.EXIT_VALIDATION_UDF_MAX_LENGTH] = 'UDF validation has been failed - MAX LENGTH';
|
||||
$lang['fhc_'.EXIT_VALIDATION_UDF_REGEX] = 'UDF validation has been failed - REGEX';
|
||||
$lang['fhc_'.EXIT_VALIDATION_UDF_REQUIRED] = 'UDF validation has been failed - REQUIRED';
|
||||
@@ -1179,7 +1179,8 @@ class CheckboxWidgetUDF extends CheckboxWidget
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Defined here because these constants can be used
|
||||
* in the views also
|
||||
*/
|
||||
abstract class UDFWidgetTpl extends Widget
|
||||
{
|
||||
@@ -1189,12 +1190,17 @@ abstract class UDFWidgetTpl extends Widget
|
||||
const FIELD_ARG_NAME = 'field';
|
||||
const UDFS_ARG_NAME = 'udfs';
|
||||
|
||||
// HTML components
|
||||
const TITLE = 'description';
|
||||
const LABEL = 'title';
|
||||
const PLACEHOLDER = 'placeholder';
|
||||
const DEFAULT_VALUE = 'defaultValue';
|
||||
|
||||
// Validation attributes
|
||||
const REGEX = 'regex';
|
||||
const REQUIRED = 'required';
|
||||
const MAX_VALUE = 'max-value';
|
||||
const MIN_VALUE = 'min-value';
|
||||
const MAX_LENGTH = 'max-length';
|
||||
const MIN_LENGTH = 'min-length';
|
||||
}
|
||||
Reference in New Issue
Block a user