TimeTrex/classes/modules/ui_kit/UIKitSampleFactory.class.php

540 lines
12 KiB
PHP
Raw Normal View History

2022-12-13 07:10:06 +01:00
<?php
/*
* $License$
*/
/**
* @package Modules\UIKit
*/
class UIKitSampleFactory extends Factory {
protected $table = 'ui_kit';
/**
* @param $name
* @param null $parent
* @return array|null
*/
function _getFactoryOptions( $name, $parent = null ) {
$retval = null;
switch ( $name ) {
case 'combo_box':
$retval = [
10 => TTi18n::gettext( 'Option 1' ),
20 => TTi18n::gettext( 'Option 2' ),
30 => TTi18n::gettext( 'Option 3' ),
40 => TTi18n::gettext( 'Option 4' ),
];
break;
case 'columns':
$retval = [
'-1010-text_input' => TTi18n::gettext( 'Name' ),
'-1020-tag' => TTi18n::gettext( 'Tags' ),
'-1030-combo_box_parent' => TTi18n::gettext( 'Combo Box Parent' ),
'-1030-combo_box_child' => TTi18n::gettext( 'Combo Box Child' ),
'-1040-date' => TTi18n::gettext( 'Date' ),
'-1060-time' => TTi18n::gettext( 'Time' ),
'-1070-checkbox' => TTi18n::gettext( 'Checkbox' ),
'-1080-numeric_input' => TTi18n::gettext( 'Numeric' ),
'-2000-created_by' => TTi18n::gettext( 'Created By' ),
'-2010-created_date' => TTi18n::gettext( 'Created Date' ),
'-2020-updated_by' => TTi18n::gettext( 'Updated By' ),
'-2030-updated_date' => TTi18n::gettext( 'Updated Date' ),
];
$retval = $this->getCustomFieldsColumns( $retval, null );
break;
case 'list_columns':
$retval = Misc::arrayIntersectByKey( $this->getOptions( 'default_display_columns' ), Misc::trimSortPrefix( $this->getOptions( 'columns' ) ) );
break;
case 'default_display_columns': //Columns that are displayed by default.
$retval = [
'text_input',
'tag',
'combo_box_parent',
'combo_box_child',
'date',
'time',
'checkbox',
'numeric_input',
];
break;
}
return $retval;
}
/**
* @param $data
* @return array
*/
function _getVariableToFunctionMap( $data ) {
$variable_function_map = [
'id' => 'ID',
'company_id' => 'Company',
'text_input' => 'TextInput',
'password_input' => 'PasswordInput',
'numeric_input' => 'NumericInput',
'textarea' => 'Textarea',
'checkbox' => 'Checkbox',
'wysiwg_text' => 'WYSIWGText',
'tag' => 'Tag',
'combo_box' => 'ComboBox',
'combo_box_parent' => 'ComboBoxParent',
'combo_box_child' => 'ComboBoxChild',
'awesome_box_multi' => 'AwesomeBoxMulti',
'awesome_box_single' => 'AwesomeBoxSingle',
'date' => 'Date',
'date_range' => 'DateRange',
'time' => 'Time',
'color' => 'Color',
'formula_builder' => 'FormulaBuilder',
'deleted' => 'Deleted',
];
return $variable_function_map;
}
/**
* @return bool|mixed
*/
function getCompany() {
return $this->getGenericDataValue( 'company_id' );
}
/**
* @param $value
* @return bool
*/
function setCompany( $value ) {
$value = TTUUID::castUUID( $value );
return $this->setGenericDataValue( 'company_id', $value );
}
/**
* @return string
*/
function getTextInput() {
return $this->getGenericDataValue( 'text_input' );
}
/**
* @param $value
* @return bool
*/
function setTextInput( $value ) {
$value = trim( $value );
return $this->setGenericDataValue( 'text_input', $value );
}
/**
* @return string
*/
function getPasswordInput() {
return $this->getGenericDataValue( 'password_input' );
}
/**
* @param $value
* @return bool
*/
function setPasswordInput( $value ) {
$password = trim( $value );
//Check to see if the password is hashed and being passed back into itself from the LogDetailFactory or UIKitSample
if ( strlen( $password ) > 100 && strpos( $password, ':' ) !== false ) {
Debug::Text( 'Password is hashed, ignoring: ' . $password, __FILE__, __LINE__, __METHOD__, 10 );
return false;
}
return $this->setGenericDataValue( 'password_input', TTPassword::encryptPassword( $password, $this->getCompany() ) );
}
/**
* @return string
*/
function getNumericInput() {
return (float)$this->getGenericDataValue( 'numeric_input' ); //Needs to return float so TTi18n::NumberFormat() can always handle it properly.
}
/**
* @param $value
* @return bool
*/
function setNumericInput( $value ) {
//Pull out only digits and periods.
$value = $this->Validator->stripNonFloat( $value );
return $this->setGenericDataValue( 'numeric_input', $value );
}
/**
* @return string
*/
function getTag() {
return $this->getGenericDataValue( 'tag' );
}
/**
* @param $value
* @return bool
*/
function setTag( $value ) {
$value = trim( $value );
return $this->setGenericDataValue( 'tag', $value );
}
/**
* @return string
*/
function getTextarea() {
return $this->getGenericDataValue( 'textarea' );
}
/**
* @param $value
* @return bool
*/
function setTextarea( $value ) {
$value = trim( $value );
return $this->setGenericDataValue( 'textarea', $value );
}
/**
* @return string
*/
function getWYSIWGText() {
return $this->getGenericDataValue( 'wysiwg_text' );
}
/**
* @param $value
* @return bool
*/
function setWYSIWGText( $value ) {
$value = trim( $value );
return $this->setGenericDataValue( 'wysiwg_text', $value );
}
/**
* @param bool $value
* @return bool
*/
function setCheckbox( $value ) {
return $this->setGenericDataValue( 'checkbox', $this->toBool( $value ) );
}
/**
* @return bool
*/
function getCheckbox() {
return $this->fromBool( $this->getGenericDataValue( 'checkbox' ) );
}
/**
* @return bool|int
*/
function getComboBox() {
return $this->getGenericDataValue( 'combo_box' );
}
/**
* @param $value
* @return bool
*/
function setComboBox( $value ) {
$value = (int)trim( $value );
return $this->setGenericDataValue( 'combo_box', $value );
}
/**
* @return bool|int
*/
function getComboBoxParent() {
return $this->getGenericDataValue( 'combo_box_parent' );
}
/**
* @param $value
* @return bool
*/
function setComboBoxParent( $value ) {
$value = trim( $value );
return $this->setGenericDataValue( 'combo_box_parent', $value );
}
/**
* @return bool|int
*/
function getComboBoxChild() {
return $this->getGenericDataValue( 'combo_box_child' );
}
/**
* @param $value
* @return bool
*/
function setComboBoxChild( $value ) {
$value = trim( $value );
return $this->setGenericDataValue( 'combo_box_child', $value );
}
/**
* @return array
*/
function getAwesomeBoxMulti() {
return $this->getGenericJSONDataValue( 'awesome_box_multi' );
}
/**
* @param array $value records.
* @return bool
*/
function setAwesomeBoxMulti( $value ) {
return $this->setGenericJSONDataValue( 'awesome_box_multi', $value );
}
/**
* @return array
*/
function getAwesomeBoxSingle() {
return $this->getGenericDataValue( 'awesome_box_single' );
}
/**
* @param array $value records.
* @return bool
*/
function setAwesomeBoxSingle( $value ) {
return $this->setGenericDataValue( 'awesome_box_single', $value );
}
/**
* @param bool $raw
* @return bool|mixed
*/
function getDate( $raw = false ) {
$value = $this->getGenericDataValue( 'date' );
if ( $value !== false ) {
if ( $raw === true ) {
return $value;
} else {
return TTDate::strtotime( $value );
}
}
return false;
}
/**
* @param $value
* @return bool
*/
function setDate( $value ) {
return $this->setGenericDataValue( 'date', TTDate::getISODateStamp( $value ) );
}
/**
* @return array
*/
function getDateRange() {
return $this->getGenericJSONDataValue( 'date_range' );
}
/**
* @param array $value records.
* @return bool
*/
function setDateRange( $value ) {
return $this->setGenericJSONDataValue( 'date_range', $value );
}
/**
* @param bool $raw
* @return bool|int
*/
function getTime( $raw = false ) {
$value = $this->getGenericDataValue( 'time' );
if ( $value !== false ) {
if ( $raw === true ) {
return $value;
} else {
return TTDate::strtotime( $value );
}
}
return false;
}
/**
* @param $value
* @return bool
*/
function setTime( $value ) {
$value = ( !is_int( $value ) && $value !== null ) ? trim( $value ) : $value;//Dont trim integer values, as it changes them to strings.
return $this->setGenericDataValue( 'time', $value );
}
/**
* @return bool|mixed
*/
function getColor() {
return $this->getGenericJSONDataValue( 'color' );
}
/**
* @param $value
* @return bool
*/
function setColor( $value ) {
$value = trim( $value );
return $this->setGenericJSONDataValue( 'color', $value );
}
/**
* @return bool|mixed
*/
function getFormulaBuilder() {
return $this->getGenericJSONDataValue( 'formula_builder' );
}
/**
* @param $value
* @return bool
*/
function setFormulaBuilder( $value ) {
$value = trim( $value );
return $this->setGenericJSONDataValue( 'formula_builder', $value );
}
/**
* @param bool $ignore_warning
* @return bool
*/
function Validate( $ignore_warning = true ) {
$this->validateCustomFields( $this->getCompany() );
return true;
}
/**
* @return bool
*/
function preSave() {
return true;
}
/**
* @return bool
*/
function postSave() {
return true;
}
/**
* @param $data
* @return bool
*/
function setObjectFromArray( $data ) {
if ( is_array( $data ) ) {
$data = $this->parseCustomFieldsFromArray( $data );
$variable_function_map = $this->getVariableToFunctionMap();
foreach ( $variable_function_map as $key => $function ) {
if ( isset( $data[$key] ) ) {
$function = 'set' . $function;
switch ( $key ) {
case 'time':
case 'date':
if ( method_exists( $this, $function ) ) {
$this->$function( TTDate::parseDateTime( $data[$key] ) );
}
break;
case 'numeric_input':
$this->$function( TTi18n::parseFloat( $data[$key] ) );
break;
default:
if ( method_exists( $this, $function ) ) {
$this->$function( $data[$key] );
}
break;
}
}
}
$this->setCreatedAndUpdatedColumns( $data );
return true;
}
return false;
}
/**
* @param null $include_columns
* @return array
*/
function getObjectAsArray( $include_columns = null ) {
$data = [];
$variable_function_map = $this->getVariableToFunctionMap();
if ( is_array( $variable_function_map ) ) {
foreach ( $variable_function_map as $variable => $function_stub ) {
if ( $include_columns == null || ( isset( $include_columns[$variable] ) && $include_columns[$variable] == true ) ) {
$function = 'get' . $function_stub;
switch ( $variable ) {
case 'date':
if ( method_exists( $this, $function ) ) {
$data[ $variable ] = TTDate::getAPIDate( 'DATE', $this->$function() );
}
break;
case 'time':
$data[$variable] = ( defined( 'TIMETREX_API' ) ) ? TTDate::getAPIDate( 'TIME', TTDate::strtotime( $this->$function() ) ) : $this->$function();
break;
case 'numeric_input':
$data[$variable] = Misc::removeTrailingZeros( $this->$function(), 2 );
break;
case 'password_input': //Must not be returned to the API ever due to security risks. Replicating that in this UIkit
break;
default:
if ( method_exists( $this, $function ) ) {
$data[$variable] = $this->$function();
}
break;
}
}
}
$this->getCreatedAndUpdatedColumns( $data, $include_columns );
$data = $this->getCustomFields( $this->getCompany(), $data, $include_columns );
}
return $data;
}
/**
* @param $log_action
* @return bool
*/
function addLog( $log_action ) {
return TTLog::addEntry( $this->getId(), $log_action, TTi18n::getText( 'UI Kit Sample' ), null, $this->getTable(), $this );
}
}
?>