HEX
Server: Apache
System: Linux clpupre 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64
User: undanet (1000)
PHP: 7.4.3
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/undanet/www/PortalEmpleo/src/Views/reports/candidatePersolInfo.php
<?php 
$root = get_site_url() . '/';;
?>
<div class="table-responsive" id="candidatepersonalinfo">
<table class="table table-striped table-hover table-export table-export-persolinfo" id="candidate-personal-info-table">
	<thead class="table-secondary input-container">
		<tr>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Name', 'panoramic_child' ); ?></span>
				<div class="input-group mb-3 input-group-large">
					<input type="text" name="name-field" class="form-control text-filter-field" placeholder="<?php echo __( 'Name', 'panoramic_child' ); ?>" aria-label="Name" aria-describedby="basic-addon1">
					<span class="col_ordened col_0_order"></span>
				</div>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'DNI', 'panoramic_child' ); ?></span>
				<div class="input-group mb-3">
					<input type="text" name="dni-field" class="form-control text-filter-field" placeholder="<?php echo __( 'DNI', 'panoramic_child' ); ?>" aria-label="DNI" aria-describedby="basic-addon1">
					<span class="col_ordened col_1_order"></span>
				</div>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Email', 'panoramic_child' ); ?></span>
				<div class="input-group mb-3 input-group-large">
					<input type="text" name="email-field" class="form-control text-filter-field" placeholder="<?php echo __( 'Email', 'panoramic_child' ); ?>" aria-label="Email" aria-describedby="basic-addon1">
					<span class="col_ordened col_2_order"></span>
				</div>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Age', 'panoramic_child' ); ?></span>
				<div class="input-group input-daterange mb-3">
					<input type="text" name="age-date-field" class="daterange-filter-field datarange-filter-exact" value="<?php echo getMinDate(array_column($data, 'edad')); ?> - <?php echo getMaxDate(array_column($data, 'edad')); ?>" />
					<input type="hidden" name="min-date-field" class="form-control min-date-field" value="100">
					<input type="hidden" name="max-date-field" class="form-control max-date-field" value="0">
					<span class="col_ordened col_3_order"></span>
				</div>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Area', 'panoramic_child' ); ?></span>
				<div class="input-group mb-3">
					<select class="selectpicker multiple-select-filter-field area-field" multiple name="area-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
						<?php foreach(array_unique(array_column($data, 'area')) as $area) { ?>
							<option value="<?php echo strtolower($area); ?>"><?php echo $area; ?></option>
						<?php } ?>
					</select>
					<span class="col_ordened col_4_order"></span>
				</div>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Title', 'panoramic_child' ); ?></span>
				<div class="input-group mb-3 input-group-medium">
					<input type="text" name="title-field" class="form-control text-filter-field" placeholder="<?php echo __( 'Title', 'panoramic_child' ); ?>" aria-label="Title" aria-describedby="basic-addon1">
					<span class="col_ordened col_5_order"></span>
				</div>
			</th>
			<th scope="col"><span class="col-title"><?php echo __( 'Matter', 'panoramic_child' ); ?></span>
				<div class="input-group mb-3 input-group-medium">
					<input type="text" name="matter-field" class="form-control text-filter-field" placeholder="<?php echo __( 'Matter', 'panoramic_child' ); ?>" aria-label="Matter" aria-describedby="basic-addon1">
					<span class="col_ordened col_6_order"></span>
				</div>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Master', 'panoramic_child' ); ?></span>
				<div class="input-group mb-3">
					<select class="selectpicker select-filter-field master-field" name="master-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
						<option selected value=""></option>
						<?php foreach(array_unique(array_column($data, 'master')) as $master) { ?>
							<?php if(!empty($master)) { ?>
								<option value="<?php echo strtolower($master); ?>"><?php echo $master; ?></option>
							<?php } 
						} ?>
					</select>
					<span class="col_ordened col_7_order"></span>
				</div>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Specialization', 'panoramic_child' ); ?></span>
				<div class="input-group mb-3">
					<select class="selectpicker select-filter-field specialization-field" name="specialization-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
						<option selected value=""></option>
						<?php foreach(array_unique(array_column($data, 'especializacion')) as $especializacion) { 
							if(!empty($especializacion)) { ?>							
								<option value="<?php echo strtolower($especializacion); ?>"><?php echo $especializacion; ?></option>
							<?php } 
						} ?>
					</select>
					<span class="col_ordened col_8_order"></span>
				</div>
			</th>
			<th scope="col" class="notexport col_9_order"><span class="col-title-not"><?php echo __( 'Curriculum', 'panoramic_child' ); ?></span></th>
			<th scope="col" class="notexport col_10_order"><span class="col-title-not"><?php echo __( 'Presentation Letter', 'panoramic_child' ); ?></span></th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Languages', 'panoramic_child' );?></span> 
				<div class="input-group mb-3">
					<div class="two-column">
						 
						<?php $idiomas = array();
						foreach(array_column($data, 'idiomas') as $idioma) { 
							foreach(array_column($idioma, 'nombre') as $nombreIdioma){
								array_push($idiomas, $nombreIdioma);
							}
						} 
						?>				
						<select class="selectpicker multiple-select-filter-field language-field" multiple name="language-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
						<?php foreach(array_unique($idiomas) as $nombreIdioma) { ?>
							<option value="<?php echo strtolower($nombreIdioma); ?>"><?php echo $nombreIdioma; ?></option>
						<?php } ?>					
						</select>
						<?php $niveles = array();
						foreach(array_column($data, 'idiomas') as $nivel) { 
							foreach(array_column($nivel, 'nivel') as $nombrenivel){
								array_push($niveles, $nombrenivel);
							}
						} 
						?>				
						<select class="selectpicker multiple-select-filter-field level-field" multiple name="level-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
						<?php foreach(array_unique($niveles) as $nombrenivel) { ?>
							<option value="<?php echo strtolower($nombrenivel); ?>"><?php echo $nombrenivel; ?></option>
						<?php } ?>					
						</select>
					</div>
					<span class="col_ordened col_11_order"></span>
				</div>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Profiles', 'panoramic_child' );?></span>
				<div class="input-group mb-3">
					<div class="two-column">
					
					<?php $perfiles = array();
					foreach(array_column($data, 'perfiles') as $perfil) { 
						foreach(array_column($perfil, 'nombreperfil') as $nombrePerfil){
							array_push($perfiles, $nombrePerfil);
						}
					} 
					?>				
					<select class="selectpicker multiple-select-filter-field profile-field" multiple name="profile-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
					<?php foreach(array_unique($perfiles) as $nombrePerfil) { ?>
						<option value="<?php echo strtolower($nombrePerfil); ?>"><?php echo $nombrePerfil; ?></option>
					<?php } ?>					
					</select>
					<?php $experiencias = array();
					foreach(array_column($data, 'perfiles') as $perfil) { 
						foreach(array_column($perfil, 'nombreexperiencia') as $nombreexperiencia){
							array_push($experiencias, $nombreexperiencia);
						}
					} 
					?>				
					<select class="selectpicker multiple-select-filter-field experience-field" multiple name="experience-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
					<?php foreach(array_unique($experiencias) as $nombreexperiencia) { ?>
						<option value="<?php echo strtolower($nombreexperiencia); ?>"><?php echo $nombreexperiencia; ?></option>
					<?php } ?>					
					</select>
					</div>
					<span class="col_ordened col_12_order"></span>
				</div>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Calls', 'panoramic_child' );?></span> 
				<div class="input-group mb-3">
					<?php $convocatorias = array();
					foreach(array_column($data, 'convocatorias') as $convocatoria) {
						foreach($convocatoria as $itemConvocatoria){
							if (!empty($itemConvocatoria)) {
								array_push($convocatorias, $itemConvocatoria['refdescconvocatoria'] . ' ' . $itemConvocatoria['descconvocatoria']);
							}
						}
					} 
					sort($convocatorias);
					?>
					<select class="selectpicker multiple-select-filter-field call-field" multiple name="call-field" data-live-search="true" title="<?php echo __('Select', 'panoramic_child')?>">
					<?php foreach(array_unique($convocatorias) as $convocatoria) { 
						if (str_replace(' ', '', $convocatoria) != '') { ?>
							<option value="<?php echo strtolower($convocatoria); ?>"><?php echo $convocatoria; ?></option>
						<?php } 
					} ?>					
					</select>
					<span class="col_ordened col_13_order"></span>
				</div>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Lang hidden field', 'panoramic_child' ); ?></span>
			</th>			
			<th scope="col">
				<span class="col-title"><?php echo __( 'Level hidden field', 'panoramic_child' ); ?></span>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Profile hidden field', 'panoramic_child' ); ?></span>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Experience hidden field', 'panoramic_child' ); ?></span>
			</th>
			<th scope="col">
				<span class="col-title"><?php echo __( 'Call hidden field', 'panoramic_child' ); ?></span>
			</th>
		</tr>
	</thead> 
	<tbody>
		<?php foreach ($data as $user) { ?>
			<tr class="tr-row">
				<td scope="row"><?php echo $user['nombre']; ?></td>
				<td scope="row"><?php echo $user['dni']; ?></td>
				<td scope="row"><?php echo $user['correo']; ?></td> 
				<td scope="row"><?php echo getEdad($user['edad']); ?></td>
				<td scope="row"><?php echo $user['area']; ?></td>
				<td scope="row"><?php echo $user['titulacion']; ?></td>
				<td scope="row"><?php echo $user['materia']; ?></td>
				<td scope="row"><?php echo $user['master']; ?></td>
				<td scope="row"><?php echo $user['especializacion']; ?></td>
				<td scope="row" class="not-export">
					<a href="<?php echo $root . 'descarga/?id=' . $user['id'] . '&file=' . basename($user['cv']) ?>" target="_blank">
						<?php echo __( 'Download', 'panoramic_child' ); ?>
					</a>
				</td>
				<td scope="row" class="not-export">					
					<?php if (!empty($user['cp'])) { ?>
					<a href="<?php echo $root . 'descarga/?id=' . $user['id'] . '&file=' . basename($user['cp']) ?>" target="_blank">
						<?php echo __( 'Download', 'panoramic_child' ); ?>
					</a>
					<?php } else { ?>
						-
					<?php } ?>
				</td>
				<td scope="row"><?php echo customImplode( $user['idiomas']); ?></td>
				<td scope="row"><?php echo customImplode( $user['perfiles']); ?></td>
				<td scope="row"><?php echo customImplode( $user['convocatorias']); ?></td>
				<td scope="row"><?php echo strtolower(implode(' ', array_column($user['idiomas'], 'nombre'))); ?></td>
				<td scope="row"><?php echo strtolower(implode(' ', array_column($user['idiomas'], 'nivel'))); ?></td>
				<td scope="row"><?php echo strtolower(implode(' ', array_column($user['perfiles'], 'nombreperfil'))); ?></td>
				<td scope="row"><?php echo strtolower(implode(' ', array_column($user['perfiles'], 'nombreexperiencia'))); ?></td>
				<?php 
				$stringconv = '';
				foreach($user['convocatorias'] as $conv){
					$stringconv .= $conv['refdescconvocatoria'] . ' ' . $conv['descconvocatoria'] . ' ' ;
				}
				?>
				<td scope="row"><?php echo strtolower($stringconv); ?></td>
			</tr>
		<?php } ?>
	</tbody>
</table>
<script>
(function($) {
	$(document).ready(function () {
		var table = $('#candidate-personal-info-table').DataTable({
			dom: 'Bfrtlip',
			initComplete: function(settings, json) {
				$('th.sorting').off();
			},	
			buttons: [{
				extend: "csv",
				charset: 'UTF-8',
				text: '<?php echo __( 'Export results to CSV file', 'panoramic_child' ); ?>',
				bom: true,
				filename: '<?php echo __( 'personal_information_candidates', 'panoramic_child' ); ?>',
				exportOptions: {
					format: {
						header: function (data) {
							return $('<span></span>').append(data).find('.col-title').text()
						}
					},   
					columns: ':visible:not(.notexport)'
				}
			}],
			columnDefs: [
				{ targets: [14, 15, 16, 17, 18], visible: false },
			],
			language: {
				paginate: {
				  next: '<?php echo __( 'Next', 'panoramic_child' ); ?>', // &#8594; or '→'
				  previous: '<?php echo __( 'Previous', 'panoramic_child' ); ?>' //&#8592; or '←' 
				},
				'search':'<?php echo __( 'Search:', 'panoramic_child' ); ?>',
				"info":"<?php echo __( 'Showing', 'panoramic_child' ); ?> _START_ <?php echo __( 'to', 'panoramic_child' ); ?> _END_ <?php echo __( 'of', 'panoramic_child' ); ?> _TOTAL_ <?php echo __( 'entries', 'panoramic_child' ); ?>",
				"infoEmpty":"<?php echo __( 'Showing 0 to 0 of 0 entries', 'panoramic_child' ); ?>",
				"infoFiltered":"(<?php echo __( 'filtered', 'panoramic_child' ); ?> <?php echo __( 'from', 'panoramic_child' ); ?> _MAX_ total <?php echo __( 'entries', 'panoramic_child' ); ?>)",
				"zeroRecords":"<?php echo __( 'No matching records found', 'panoramic_child' ); ?>",
				"lengthMenu": "<?php echo __( 'Show', 'panoramic_child' ); ?> _MENU_ <?php echo __( 'entries', 'panoramic_child' ); ?>",
				"loadingRecords":"<?php echo __( 'Loading...', 'panoramic_child' ); ?>",
			  }
		});
		
		table.order.listener( '.col_0_order', 0 );
		table.order.listener( '.col_1_order', 1 );
		table.order.listener( '.col_2_order', 2 );
		table.order.listener( '.col_3_order', 3 );
		table.order.listener( '.col_4_order', 4 );
		table.order.listener( '.col_5_order', 5 );
		table.order.listener( '.col_6_order', 6 );
		table.order.listener( '.col_7_order', 7 );
		table.order.listener( '.col_8_order', 8 );
		table.order.listener( '.col_9_order', 9 );
		table.order.listener( '.col_10_order', 10 );
		table.order.listener( '.col_11_order', 11 );
		table.order.listener( '.col_12_order', 12 );
		table.order.listener( '.col_13_order', 13 );
		
		$('.input-container input[type="text"]').on('keyup', function() {
			table.draw();
		});
		
		$('.input-container .selectpicker').on('change', function() {
			table.draw();
		});		
		
		$('input[name="age-date-field"]').daterangepicker({
			opens: 'center' 
			}, function(start, end, label) {                         
				var date1 = new Date(start);
				var date2 = new Date(end);
				$('.input-container input[name="min-date-field"]').val(getAge(date1));	
				$('.input-container input[name="max-date-field"]').val(getAge(date2));	
				table.draw();		
			});
	});
	
	$.fn.dataTable.ext.search.push(function (settings, data, dataIndex) {
		let namefield = $('.input-container input[name="name-field"]').val().toLowerCase();
		let dnifield = $('.input-container input[name="dni-field"]').val().toLowerCase();
		let emailfield = $('.input-container input[name="email-field"]').val().toLowerCase();
		let age = parseFloat(data[3]) || 0; 
		let minAge = parseInt($('.input-container input[name="max-date-field"]').val(), 10);
		let maxAge = parseInt($('.input-container input[name="min-date-field"]').val(), 10);		
		let areafield = $('.input-container .selectpicker.area-field').val().join(' ').toLowerCase();
		let titlefield = $('.input-container input[name="title-field"]').val().toLowerCase();
		let matterfield = $('.input-container input[name="matter-field"]').val().toLowerCase();
		let masterfield = $('.input-container .selectpicker.master-field').val().toLowerCase();
		let specializationfield = $('.input-container .selectpicker.specialization-field').val().toLowerCase();
		let languagefield = $('.input-container .selectpicker.language-field').val(); 
		let levelfield = $('.input-container .selectpicker.level-field').val();
		let profilefield = $('.input-container .selectpicker.profile-field').val();
		let experiencefield = $('.input-container .selectpicker.experience-field').val();
		let callfield = $('.input-container .selectpicker.call-field').val();
	 
		if (
			data[0].toLowerCase().indexOf(namefield) > -1 && 
			data[1].toLowerCase().indexOf(dnifield) > -1 && 
			data[2].toLowerCase().indexOf(emailfield) > -1 &&
			((isNaN(minAge) && isNaN(maxAge)) || 
				(isNaN(minAge) && age <= maxAge) ||
				(minAge <= age && isNaN(maxAge)) ||
				(minAge <= age && age <= maxAge)
			) && 
			(areafield == '' || areafield.indexOf(data[4].toLowerCase()) > -1) &&
			data[5].toLowerCase().indexOf(titlefield) > -1 &&
			data[6].toLowerCase().indexOf(matterfield) > -1 &&
			(masterfield == '' || data[7].toLowerCase().indexOf(masterfield) > -1) &&
			(specializationfield == '' || data[8].toLowerCase().indexOf(specializationfield) > -1) &&
			(languagefield.length === 0 || 
				languagefield.every(
					(element) => data[14].toLowerCase().indexOf(element.toLowerCase()) > -1
				)	
			) && 
			(levelfield.length === 0 || 
				levelfield.every(
					(element) => data[15].toLowerCase().indexOf(element.toLowerCase()) > -1
				)	
			) && 
			(profilefield.length === 0 || 
				profilefield.every(
					(element) => data[16].toLowerCase().indexOf(element.toLowerCase()) > -1
				)	
			) && 
			(experiencefield.length === 0 || 
				experiencefield.every(
					(element) => data[17].toLowerCase().indexOf(element.toLowerCase()) > -1
				)	
			) && 
			(callfield.length === 0 || 
				callfield.every(
					(element) => data[18].toLowerCase().indexOf(element.toLowerCase()) > -1
				)	
			)  			
		) {
			return true;
		}
		
		return false;
	});	
		  
})(jQuery); 

function getAge(birthDate) {
    var today = new Date();
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
        age--;
    }
    return age;
}

</script>
</div>