' . $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 = '';
$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';
}