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