' . $option_value . '' ); } } } // Make sure the current value is in the list. if ( $value[ $column ] != '' && ! isset( $options[ $value[ $column ] ] ) ) { $options[ $value[ $column ] ] = array( $value[ $column ], '' . $value[ $column ] . '' ); } if ( $value[ $column ] != '---' && count( $options ) > 1 ) { // FJ select field is required. $extra = ( $field['REQUIRED'] === 'Y' ? 'required' : '' ); return SelectInput( $value[ $column ], $request . '[' . $column . ']', $name, $options, 'N/A', $extra, $div ); } // FJ new option. return TextInput( $value[ $column ] === '---' ? array( '---', '-' . _( 'Edit' ) . '-' ) : $value[ $column ], $request . '[' . $column . ']', $name, ( $field['REQUIRED'] === 'Y' ? 'required' : '' ), $div ); } /** * Make Checkbox Input * * @since 6.4.2 Fix Required & div for checkbox input. * * @global array $value * @global array $field * * @param string $column Field column. * @param string $name Field name. * @param string $request students|staff|values[PEOPLE]|values[ADDRESS]. * * @return string Checkbox Input */ function _makeCheckboxInput( $column, $name, $request ) { global $value, $field; $div = true; $new = _isNew( $request ); if ( $new || ( $field['REQUIRED'] === 'Y' && empty( $value[ $column ] ) ) ) { $value[ $column ] = $field['DEFAULT_SELECTION']; // No div if new or if Required AND not checked. $div = false; } return CheckboxInput( issetVal( $value[ $column ] ), $request . '[' . $column . ']', $name, '', $new, 'Yes', 'No', $div, ( $field['REQUIRED'] === 'Y' ? 'required' : '' ) ); } /** * Make Textarea Input * * @global array $value * @global array $field * * @param string $column Field column. * @param string $name Field name. * @param string $request students|staff|values[PEOPLE]|values[ADDRESS]. * * @return string Textarea Input */ function _makeTextAreaInput( $column, $name, $request ) { global $value, $field; $div = true; if ( $field['DEFAULT_SELECTION'] && _isNew( $request ) ) { $value[ $column ] = $field['DEFAULT_SELECTION']; $div = false; } // FJ text area is required. // FJ textarea field maxlength=50000 (soft limit). return TextAreaInput( issetVal( $value[ $column ] ), $request . '[' . $column . ']', $name, 'maxlength=50000' . ( $field['REQUIRED'] == 'Y' ? ' required': '' ), $div ); } /** * Make Files Input * * @since 4.6 * @since 7.0 CSS Add .widefat.files class * * @global array $value * @global array $field * * @param string $column Field column. * @param string $name Field name. * @param string $request students|staff|values[PEOPLE]|values[ADDRESS]. * * @return string Files Input */ function _makeFilesInput( $column, $name, $request, $remove_url = '' ) { global $value, $field; require_once 'ProgramFunctions/FileUpload.fnc.php'; $div = true; $file_paths = explode( '||', trim( issetVal( $value[ $column ] ), '||' ) ); $files = array(); foreach ( (array) $file_paths as $file_path ) { if ( ! file_exists( $file_path ) ) { continue; } $file_name = mb_substr( mb_strrchr( $file_path, '/' ), 1 ); $file_size = HumanFilesize( filesize( $file_path ) ); // Truncate file name if > 36 chars. $file_name_display = mb_strlen( $file_name ) <= 36 ? $file_name : mb_substr( $file_name, 0, 30 ) . '..' . mb_strrchr( $file_name, '.' ); $file = button( 'download', $file_name_display, '"' . URLEscape( $file_path ) . '" target="_blank" title="' . $file_name . ' (' . $file_size . ')"', 'bigger' ); if ( AllowEdit() && $remove_url ) { $file = button( 'remove', '', '"' . URLEscape( $remove_url . $file_name ) . '" title="' . _( 'Delete' ) . '"' ) . ' ' . $file; } $files[] = $file; } $files_html = ''; if ( $files ) { $files_html = '
' . implode( '
', $files ) . '
'; } $required = $field['REQUIRED'] == 'Y' && AllowEdit() && ! $files; if ( AllowEdit() ) { $files_html .= FileInput( $request . $column, '', ( $required ? ' required': '' ) ); } elseif ( ! $files ) { $files_html = '-'; } $files_html .= FormatInputTitle( $name, ( AllowEdit() ? $request . $column : '' ), $required, ( AllowEdit() || ! $files ? '
' : '' ) ); return $files_html; } /** * Make Multiple Input * * @since 6.1 Return HTML instead of echo. * * @global array $value * @global array $field * * @param string $column Field column. * @param string $name Field name. * @param string $request students|staff|values[PEOPLE]|values[ADDRESS]. * * @return string Multiple Input */ function _makeMultipleInput( $column, $name, $request ) { global $value, $field; if ( ! AllowEdit() || isset( $_REQUEST['_ROSARIO_PDF'] ) ) { return ( ! empty( $value[ $column ] ) ? str_replace( '||', ', ', mb_substr( $value[ $column ], 2, -2 ) ) : '-' ) . FormatInputTitle( $name ); } $select_options = array(); if ( $field['SELECT_OPTIONS'] ) { $select_options = explode( "\r", str_replace( array( "\r\n", "\n" ), "\r", $field['SELECT_OPTIONS'] ) ); } foreach ( (array) $select_options as $option ) { $options[ $option ] = $option; } $table = ''; if ( count( $options ) > 12 ) { $table .= ''; } $table .= ''; $i = 0; foreach ( (array) $options as $option ) { if ( $i % 2 === 0 ) { $table .= ''; } // FJ add '; $i++; } $table .= '
'; $table .= FormatInputTitle( $name, '', false, '' ); $table .= '
'; $table .= '
'; // FJ fix bug none selected not saved. $table .= ''; $table .= '
'; $table .= '
'; $table .= FormatInputTitle( $name, '', false, '' ); if ( empty( $value[ $column ] ) ) { return $table; } return InputDivOnclick( GetInputID( $request . $column ), $table, str_replace( '||', ', ', mb_substr( $value[ $column ], 2, -2 ) ), FormatInputTitle( $name ) ); } /** * Make Student Age * FJ display age next to birthdate * * @global array $value * * @param string $column Field column. * @param string $name Field name. * * @return string Student Age */ function _makeStudentAge( $column, $name ) { global $value; if ( $_REQUEST['student_id'] !== 'new' && date_create( $value[ $column ] ) ) { $datetime1 = date_create( $value[ $column ] ); $datetime2 = date_create( 'now' ); $interval = date_diff( $datetime1, $datetime2 ); $age_text = _( '%Y Years %m Months %d Days' ); $age_text = $interval->format( $age_text ); return NoInput( $age_text, $name ); } return ''; } // MEDICAL. /** * Make Medical Immunization or Physical type Select Input * * @global array $THIS_RET * * @param string $value Field value. * @param string $column Field column. * * @return string Medical Immunization or Physical type Select Input */ function _makeType( $value, $column ) { global $THIS_RET; if ( empty( $THIS_RET['ID'] ) ) { $THIS_RET['ID'] = 'new'; } return SelectInput( $value, 'values[STUDENT_MEDICAL][' . $THIS_RET['ID'] . '][TYPE]', '', array( 'Immunization' => _( 'Immunization' ), 'Physical' => _( 'Physical' ) ) ); } /** * Make Medical Date Input * * @global array $THIS_RET * @global string $table * * @param string $value Field value. * @param string $column Field column. * * @return string Medical Date Input */ function _makeDate( $value, $column = 'MEDICAL_DATE' ) { global $THIS_RET, $table; if ( empty( $THIS_RET['ID'] ) ) { $THIS_RET['ID'] = 'new'; } return DateInput( $value, 'values[' . $table . '][' . $THIS_RET['ID'] . '][' . $column . ']' ); } /** * Make Medical Comments Input * * @since 3.6 Add custom input size per column. * * @global array $THIS_RET * @global string $table * * @param string $value Field value. * @param string $column Field column. * * @return string Medical Comments Input */ function _makeComments( $value, $column ) { global $THIS_RET, $table; if ( empty( $THIS_RET['ID'] ) ) { $THIS_RET['ID'] = 'new'; } $input_size = 12; if ( $column === 'TIME_IN' || $column === 'TIME_OUT' ) { $input_size = 5; } elseif ( $column === 'COMMENTS' || $column === 'TITLE' ) { $input_size = 20; } return TextInput( $value, 'values[' . $table . '][' . $THIS_RET['ID'] . '][' . $column . ']', '', 'size="' . $input_size . '"' ); } // ENROLLMENT. /** * Make Enrollment Start Date & Code Inputs * * @since 5.4 Enrollment Start: No N/A option if already has Drop date. * * @global array $THIS_RET * * @param string $value Field value. * @param string $column Field column. * * @return string Enrollment Start Date & Code Inputs */ function _makeStartInput( $value, $column ) { global $THIS_RET, $_ROSARIO; static $add_codes = false; $add = ''; $na = 'N/A'; if ( ! empty( $THIS_RET['ID'] ) ) { $id = $THIS_RET['ID']; if ( ! empty( $THIS_RET['END_DATE'] ) ) { // @since 5.4 Enrollment Start: No N/A option if already has Drop date. $na = false; } } elseif ( $_REQUEST['student_id'] === 'new' ) { $id = 'new'; $default = DBGetOne( "SELECT min(SCHOOL_DATE) AS START_DATE FROM ATTENDANCE_CALENDAR WHERE SYEAR='" . UserSyear() . "' AND SCHOOL_ID='" . UserSchool() . "'" ); if ( ! $default || DBDate() > $default ) { $default = DBDate(); } $value = $default; } else { $add = button( 'add' ) . ' '; $id = 'new'; } if ( ! $add_codes ) { $options_RET = DBGet( "SELECT ID,TITLE AS TITLE FROM STUDENT_ENROLLMENT_CODES WHERE SYEAR='" . UserSyear() . "' AND TYPE='Add' ORDER BY SORT_ORDER" ); foreach ( (array) $options_RET as $option ) { $add_codes[$option['ID']] = $option['TITLE']; } } $div = true; if ( $_REQUEST['student_id'] === 'new' ) { $div = false; } if ( AllowEdit() && ( User( 'PROFILE' ) === 'parent' || User( 'PROFILE' ) === 'student' ) ) { // Do not allow Parents/Students to edit Enrollment Records. $_ROSARIO['allow_edit'] = false; $disallow_edit_parent_student = true; } $return = '
' . $add . DateInput( $value, 'values[STUDENT_ENROLLMENT][' . $id . '][' . $column . ']', '', $div, ! empty( $na ) ) . ' - ' . SelectInput( issetVal( $THIS_RET['ENROLLMENT_CODE'] ), 'values[STUDENT_ENROLLMENT][' . $id . '][ENROLLMENT_CODE]', '', $add_codes, $na, 'style="max-width:150px;"' ) . '
'; if ( ! empty( $disallow_edit_parent_student ) ) { // Do not allow Parents/Students to edit Enrollment Records. $_ROSARIO['allow_edit'] = true; } return $return; } /** * Make Enrollment End Date & Code Inputs * * @global array $THIS_RET * * @param string $value Field value. * @param string $column Field column. * * @return string Enrollment End Date & Code Inputs */ function _makeEndInput( $value, $column ) { global $THIS_RET, $_ROSARIO; static $drop_codes; $id = 'new'; if ( ! empty( $THIS_RET['ID'] ) ) { $id = $THIS_RET['ID']; } if ( ! $drop_codes ) { $options_RET = DBGet( "SELECT ID,TITLE AS TITLE FROM STUDENT_ENROLLMENT_CODES WHERE SYEAR='" . UserSyear() . "' AND TYPE='Drop' ORDER BY SORT_ORDER" ); foreach ( (array) $options_RET as $option ) { $drop_codes[$option['ID']] = $option['TITLE']; } } if ( AllowEdit() && ( User( 'PROFILE' ) === 'parent' || User( 'PROFILE' ) === 'student' ) ) { // Do not allow Parents/Students to edit Enrollment Records. $_ROSARIO['allow_edit'] = false; $disallow_edit_parent_student = true; } $return = '
' . DateInput( $value, 'values[STUDENT_ENROLLMENT][' . $id . '][' . $column . ']' ) . ' - ' . SelectInput( $THIS_RET['DROP_CODE'], 'values[STUDENT_ENROLLMENT][' . $id . '][DROP_CODE]', '', $drop_codes, 'N/A', 'style="max-width:150px;"' ) . '
'; if ( ! empty( $disallow_edit_parent_student ) ) { // Do not allow Parents/Students to edit Enrollment Records. $_ROSARIO['allow_edit'] = true; } return $return; } /** * Make Enrollment School Select Input * * @global array $THIS_RET * * @param string $value Field value. * @param string $column Field column. * * @return string Enrollment School Select Input */ function _makeSchoolInput( $value, $column ) { global $THIS_RET; static $schools; $id = 'new'; if ( ! empty( $THIS_RET['ID'] ) ) { $id = $THIS_RET['ID']; } if ( ! isset( $schools ) || ! is_array( $schools ) ) { $schools = DBGet( "SELECT ID,TITLE FROM SCHOOLS WHERE SYEAR='" . UserSyear() . "'", array(), array( 'ID' ) ); } foreach ( (array) $schools as $sid => $school ) { $options[ $sid ] = $school[1]['TITLE']; } // Mab - allow school to be edited if illegal value. if ( $_REQUEST['student_id'] !== 'new' ) { if ( $id !== 'new' ) { if ( is_array( $schools[ $value ] ) ) { return $schools[ $value ][1]['TITLE']; } return SelectInput( $value, 'values[STUDENT_ENROLLMENT][' . $id . '][SCHOOL_ID]', '', $options ); } return SelectInput( UserSchool(), 'values[STUDENT_ENROLLMENT][' . $id . '][SCHOOL_ID]', '', $options, false, '', false ); } // FJ save new Student's Enrollment in Enrollment.inc.php. return '' . $schools[ UserSchool() ][1]['TITLE']; } /** * Is New Student / User / People / Address? * Local function * * @param string $request students|staff|values[PEOPLE]|values[ADDRESS]. * * @return boolean true if new, else false */ function _isNew( $request ) { switch ( $request ) { case 'students': $request_key = 'student_id'; break; case 'staff': $request_key = 'staff_id'; break; case 'values[PEOPLE]': $request_key = 'person_id'; break; case 'values[ADDRESS]': $request_key = 'address_id'; break; default: return false; } return isset( $_REQUEST[ $request_key ] ) && $_REQUEST[ $request_key ] === 'new'; }