<?php
// This script and data application was generated by AppGini, https://bigprof.com/appgini
// Download AppGini for free from https://bigprof.com/appgini/download/

	include_once(__DIR__ . '/lib.php');
	@include_once(__DIR__ . '/hooks/flugbuch_verein.php');
	include_once(__DIR__ . '/flugbuch_verein_dml.php');

	// mm: can the current member access this page?
	$perm = getTablePermissions('flugbuch_verein');
	if(!$perm['access']) {
		echo error_message($Translation['tableAccessDenied']);
		exit;
	}

	$x = new DataList;
	$x->TableName = 'flugbuch_verein';

	// Fields that can be displayed in the table view
	$x->QueryFieldsTV = [
		"`flugbuch_verein`.`id`" => "id",
		"if(`flugbuch_verein`.`datum`,date_format(`flugbuch_verein`.`datum`,'%d.%m.%Y'),'')" => "datum",
		"DATE_FORMAT(`flugbuch_verein`.`beginn`, '%H:%i')" => "beginn",
		"DATE_FORMAT(`flugbuch_verein`.`ende`, '%H:%i')" => "ende",
		"`flugbuch_verein`.`pilot`" => "pilot",
		"`flugbuch_verein`.`anzahl_fluege`" => "anzahl_fluege",
		"`flugbuch_verein`.`max_flughoehe`" => "max_flughoehe",
		"IF(    CHAR_LENGTH(`flugplaetze_oe1`.`vereinsname`) || CHAR_LENGTH(`flugplaetze_oe1`.`flugplatznummer`), CONCAT_WS('',   `flugplaetze_oe1`.`vereinsname`, ', ', `flugplaetze_oe1`.`flugplatznummer`), '') /* Flugplatz */" => "flugplatz",
		"`flugbuch_verein`.`luftraumbeobachter_anwesend`" => "luftraumbeobachter_anwesend",
		"`flugbuch_verein`.`modell`" => "modell",
		"`flugbuch_verein`.`besonderheiten`" => "besonderheiten",
		"concat('<i class=\"glyphicon glyphicon-', if(`flugbuch_verein`.`gastpilot`, 'check', 'unchecked'), '\"></i>')" => "gastpilot",
		"`flugbuch_verein`.`name_gastpilot`" => "name_gastpilot",
		"IF(    CHAR_LENGTH(`mfbo1`.`gelesen`), CONCAT_WS('',   `mfbo1`.`gelesen`), '') /* MFBO gelesen JA/NEIN */" => "mfbo",
		"`flugbuch_verein`.`reg_nr`" => "reg_nr",
		"`flugbuch_verein`.`fluege`" => "fluege",
		"`flugbuch_verein`.`lrb`" => "lrb",
		"`flugbuch_verein`.`hoehe`" => "hoehe",
		"`flugbuch_verein`.`datei`" => "datei",
		"`flugbuch_verein`.`datei_1`" => "datei_1",
		"`flugbuch_verein`.`erfasser`" => "erfasser",
		"if(`flugbuch_verein`.`erfasst`,date_format(`flugbuch_verein`.`erfasst`,'%d.%m.%Y %H:%i'),'')" => "erfasst",
		"`flugbuch_verein`.`geaendert_von`" => "geaendert_von",
		"if(`flugbuch_verein`.`geaendert`,date_format(`flugbuch_verein`.`geaendert`,'%d.%m.%Y %H:%i'),'')" => "geaendert",
	];
	// mapping incoming sort by requests to actual query fields
	$x->SortFields = [
		1 => '`flugbuch_verein`.`id`',
		2 => '`flugbuch_verein`.`datum`',
		3 => '`flugbuch_verein`.`beginn`',
		4 => '`flugbuch_verein`.`ende`',
		5 => 5,
		6 => '`flugbuch_verein`.`anzahl_fluege`',
		7 => '`flugbuch_verein`.`max_flughoehe`',
		8 => 8,
		9 => 9,
		10 => 10,
		11 => 11,
		12 => 12,
		13 => 13,
		14 => '`mfbo1`.`gelesen`',
		15 => 15,
		16 => 16,
		17 => 17,
		18 => 18,
		19 => 19,
		20 => 20,
		21 => 21,
		22 => '`flugbuch_verein`.`erfasst`',
		23 => 23,
		24 => '`flugbuch_verein`.`geaendert`',
	];

	// Fields that can be displayed in the csv file
	$x->QueryFieldsCSV = [
		"`flugbuch_verein`.`id`" => "id",
		"if(`flugbuch_verein`.`datum`,date_format(`flugbuch_verein`.`datum`,'%d.%m.%Y'),'')" => "datum",
		"DATE_FORMAT(`flugbuch_verein`.`beginn`, '%H:%i')" => "beginn",
		"DATE_FORMAT(`flugbuch_verein`.`ende`, '%H:%i')" => "ende",
		"`flugbuch_verein`.`pilot`" => "pilot",
		"`flugbuch_verein`.`anzahl_fluege`" => "anzahl_fluege",
		"`flugbuch_verein`.`max_flughoehe`" => "max_flughoehe",
		"IF(    CHAR_LENGTH(`flugplaetze_oe1`.`vereinsname`) || CHAR_LENGTH(`flugplaetze_oe1`.`flugplatznummer`), CONCAT_WS('',   `flugplaetze_oe1`.`vereinsname`, ', ', `flugplaetze_oe1`.`flugplatznummer`), '') /* Flugplatz */" => "flugplatz",
		"`flugbuch_verein`.`luftraumbeobachter_anwesend`" => "luftraumbeobachter_anwesend",
		"`flugbuch_verein`.`modell`" => "modell",
		"`flugbuch_verein`.`besonderheiten`" => "besonderheiten",
		"`flugbuch_verein`.`gastpilot`" => "gastpilot",
		"`flugbuch_verein`.`name_gastpilot`" => "name_gastpilot",
		"IF(    CHAR_LENGTH(`mfbo1`.`gelesen`), CONCAT_WS('',   `mfbo1`.`gelesen`), '') /* MFBO gelesen JA/NEIN */" => "mfbo",
		"`flugbuch_verein`.`reg_nr`" => "reg_nr",
		"`flugbuch_verein`.`fluege`" => "fluege",
		"`flugbuch_verein`.`lrb`" => "lrb",
		"`flugbuch_verein`.`hoehe`" => "hoehe",
		"`flugbuch_verein`.`datei`" => "datei",
		"`flugbuch_verein`.`datei_1`" => "datei_1",
		"`flugbuch_verein`.`erfasser`" => "erfasser",
		"if(`flugbuch_verein`.`erfasst`,date_format(`flugbuch_verein`.`erfasst`,'%d.%m.%Y %H:%i'),'')" => "erfasst",
		"`flugbuch_verein`.`geaendert_von`" => "geaendert_von",
		"if(`flugbuch_verein`.`geaendert`,date_format(`flugbuch_verein`.`geaendert`,'%d.%m.%Y %H:%i'),'')" => "geaendert",
	];
	// Fields that can be filtered
	$x->QueryFieldsFilters = [
		"`flugbuch_verein`.`id`" => "ID",
		"`flugbuch_verein`.`datum`" => "Datum",
		"`flugbuch_verein`.`beginn`" => "Beginn",
		"`flugbuch_verein`.`ende`" => "Ende",
		"`flugbuch_verein`.`pilot`" => "Pilot",
		"`flugbuch_verein`.`anzahl_fluege`" => "Anzahl der Fl&#252;ge",
		"`flugbuch_verein`.`max_flughoehe`" => "maximale Flugh&#246;he",
		"IF(    CHAR_LENGTH(`flugplaetze_oe1`.`vereinsname`) || CHAR_LENGTH(`flugplaetze_oe1`.`flugplatznummer`), CONCAT_WS('',   `flugplaetze_oe1`.`vereinsname`, ', ', `flugplaetze_oe1`.`flugplatznummer`), '') /* Flugplatz */" => "Flugplatz",
		"`flugbuch_verein`.`luftraumbeobachter_anwesend`" => "Einsatz eines Luftraumbeobachters",
		"`flugbuch_verein`.`modell`" => "Modell",
		"`flugbuch_verein`.`besonderheiten`" => "Besonderheiten",
		"`flugbuch_verein`.`gastpilot`" => "Gastpilot",
		"`flugbuch_verein`.`name_gastpilot`" => "Name des Gastpiloten",
		"IF(    CHAR_LENGTH(`mfbo1`.`gelesen`), CONCAT_WS('',   `mfbo1`.`gelesen`), '') /* MFBO gelesen JA/NEIN */" => "MFBO gelesen JA/NEIN",
		"`flugbuch_verein`.`reg_nr`" => "Registriernummer",
		"`flugbuch_verein`.`fluege`" => "Fl&#252;ge Gastpilot",
		"`flugbuch_verein`.`lrb`" => "Lutraumbeobachter anwesend",
		"`flugbuch_verein`.`hoehe`" => "geflogene H&#246;he",
		"`flugbuch_verein`.`datei`" => "Dokument / Datei 1",
		"`flugbuch_verein`.`datei_1`" => "Dokument / Datei 2",
		"`flugbuch_verein`.`erfasser`" => "Erfasser",
		"`flugbuch_verein`.`erfasst`" => "erfasst am",
		"`flugbuch_verein`.`geaendert_von`" => "letzte &#196;nderung durch",
		"`flugbuch_verein`.`geaendert`" => "letzte &#196;nderung",
	];

	// Fields that can be quick searched
	$x->QueryFieldsQS = [
		"`flugbuch_verein`.`id`" => "id",
		"if(`flugbuch_verein`.`datum`,date_format(`flugbuch_verein`.`datum`,'%d.%m.%Y'),'')" => "datum",
		"DATE_FORMAT(`flugbuch_verein`.`beginn`, '%H:%i')" => "beginn",
		"DATE_FORMAT(`flugbuch_verein`.`ende`, '%H:%i')" => "ende",
		"`flugbuch_verein`.`pilot`" => "pilot",
		"`flugbuch_verein`.`anzahl_fluege`" => "anzahl_fluege",
		"`flugbuch_verein`.`max_flughoehe`" => "max_flughoehe",
		"IF(    CHAR_LENGTH(`flugplaetze_oe1`.`vereinsname`) || CHAR_LENGTH(`flugplaetze_oe1`.`flugplatznummer`), CONCAT_WS('',   `flugplaetze_oe1`.`vereinsname`, ', ', `flugplaetze_oe1`.`flugplatznummer`), '') /* Flugplatz */" => "flugplatz",
		"`flugbuch_verein`.`luftraumbeobachter_anwesend`" => "luftraumbeobachter_anwesend",
		"`flugbuch_verein`.`modell`" => "modell",
		"`flugbuch_verein`.`besonderheiten`" => "besonderheiten",
		"concat('<i class=\"glyphicon glyphicon-', if(`flugbuch_verein`.`gastpilot`, 'check', 'unchecked'), '\"></i>')" => "gastpilot",
		"`flugbuch_verein`.`name_gastpilot`" => "name_gastpilot",
		"IF(    CHAR_LENGTH(`mfbo1`.`gelesen`), CONCAT_WS('',   `mfbo1`.`gelesen`), '') /* MFBO gelesen JA/NEIN */" => "mfbo",
		"`flugbuch_verein`.`reg_nr`" => "reg_nr",
		"`flugbuch_verein`.`fluege`" => "fluege",
		"`flugbuch_verein`.`lrb`" => "lrb",
		"`flugbuch_verein`.`hoehe`" => "hoehe",
		"`flugbuch_verein`.`datei`" => "datei",
		"`flugbuch_verein`.`datei_1`" => "datei_1",
		"`flugbuch_verein`.`erfasser`" => "erfasser",
		"if(`flugbuch_verein`.`erfasst`,date_format(`flugbuch_verein`.`erfasst`,'%d.%m.%Y %H:%i'),'')" => "erfasst",
		"`flugbuch_verein`.`geaendert_von`" => "geaendert_von",
		"if(`flugbuch_verein`.`geaendert`,date_format(`flugbuch_verein`.`geaendert`,'%d.%m.%Y %H:%i'),'')" => "geaendert",
	];

	// Lookup fields that can be used as filterers
	$x->filterers = ['flugplatz' => 'Flugplatz', 'mfbo' => 'MFBO gelesen JA/NEIN', ];

	$x->QueryFrom = "`flugbuch_verein` LEFT JOIN `flugplaetze_oe` as flugplaetze_oe1 ON `flugplaetze_oe1`.`id`=`flugbuch_verein`.`flugplatz` LEFT JOIN `mfbo` as mfbo1 ON `mfbo1`.`id`=`flugbuch_verein`.`mfbo` ";
	$x->QueryWhere = '';
	$x->QueryOrder = '';

	$x->AllowSelection = 1;
	$x->HideTableView = ($perm['view'] == 0 ? 1 : 0);
	$x->AllowDelete = $perm['delete'];
	$x->AllowMassDelete = (getLoggedAdmin() !== false);
	$x->AllowInsert = $perm['insert'];
	$x->AllowUpdate = $perm['edit'];
	$x->SeparateDV = 1;
	$x->AllowDeleteOfParents = 0;
	$x->AllowFilters = 1;
	$x->AllowSavingFilters = 1;
	$x->AllowSorting = 1;
	$x->AllowNavigation = 1;
	$x->AllowPrinting = (getLoggedAdmin() !== false);
	$x->AllowPrintingDV = 1;
	$x->AllowCSV = (getLoggedAdmin() !== false);
	$x->AllowAdminShowSQL = showSQL();
	$x->RecordsPerPage = 100;
	$x->QuickSearch = 1;
	$x->QuickSearchText = $Translation['quick search'];
	$x->ScriptFileName = 'flugbuch_verein_view.php';
	$x->TableTitle = 'Flugbuch';
	$x->TableIcon = 'resources/table_icons/flieger.png';
	$x->PrimaryKey = '`flugbuch_verein`.`id`';
	$x->DefaultSortField = '1';
	$x->DefaultSortDirection = 'desc';

	$x->ColWidth = [150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, ];
	$x->ColCaption = ['ID', 'Datum', 'Beginn', 'Ende', 'Pilot', 'Anzahl der Fl&#252;ge', 'maximale Flugh&#246;he', 'Flugplatz', 'Einsatz eines Luftraumbeobachters', 'Modell', 'Besonderheiten', 'Gastpilot', 'Name des Gastpiloten', 'MFBO gelesen JA/NEIN', 'Registriernummer', 'Fl&#252;ge Gastpilot', 'Lutraumbeobachter anwesend', 'geflogene H&#246;he', 'Dokument / Datei 1', 'Dokument / Datei 2', 'Erfasser', 'erfasst am', 'letzte &#196;nderung durch', 'letzte &#196;nderung', ];
	$x->ColFieldName = ['id', 'datum', 'beginn', 'ende', 'pilot', 'anzahl_fluege', 'max_flughoehe', 'flugplatz', 'luftraumbeobachter_anwesend', 'modell', 'besonderheiten', 'gastpilot', 'name_gastpilot', 'mfbo', 'reg_nr', 'fluege', 'lrb', 'hoehe', 'datei', 'datei_1', 'erfasser', 'erfasst', 'geaendert_von', 'geaendert', ];
	$x->ColNumber  = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, ];

	// template paths below are based on the app main directory
	$x->Template = 'templates/flugbuch_verein_templateTV.html';
	$x->SelectedTemplate = 'templates/flugbuch_verein_templateTVS.html';
	$x->TemplateDV = 'templates/flugbuch_verein_templateDV.html';
	$x->TemplateDVP = 'templates/flugbuch_verein_templateDVP.html';

	$x->ShowTableHeader = 1;
	$x->TVClasses = "";
	$x->DVClasses = "";
	$x->HasCalculatedFields = true;
	$x->AllowConsoleLog = false;
	$x->AllowDVNavigation = true;

	// hook: flugbuch_verein_init
	$render = true;
	if(function_exists('flugbuch_verein_init')) {
		$args = [];
		$render = flugbuch_verein_init($x, getMemberInfo(), $args);
	}

	if($render) $x->Render();

	// column sums
	if(strpos($x->HTML, '<!-- tv data below -->')) {
		// if printing multi-selection TV, calculate the sum only for the selected records
		$record_selector = Request::val('record_selector');
		if(Request::val('Print_x') && is_array($record_selector)) {
			$QueryWhere = '';
			foreach($record_selector as $id) {   // get selected records
				if($id != '') $QueryWhere .= "'" . makeSafe($id) . "',";
			}
			if($QueryWhere != '') {
				$QueryWhere = 'where `flugbuch_verein`.`id` in ('.substr($QueryWhere, 0, -1).')';
			} else { // if no selected records, write the where clause to return an empty result
				$QueryWhere = 'where 1=0';
			}
		} else {
			$QueryWhere = $x->QueryWhere;
		}

		$sumQuery = "SELECT SUM(`flugbuch_verein`.`anzahl_fluege`) FROM {$x->QueryFrom} {$QueryWhere}";
		$res = sql($sumQuery, $eo);
		if($row = db_fetch_row($res)) {
			$sumRow = '<tr class="success sum">';
			if(!Request::val('Print_x')) $sumRow .= '<th class="text-center sum">&sum;</th>';
			$sumRow .= '<td class="flugbuch_verein-id sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-datum sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-beginn sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-ende sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-pilot sum"></td>';
			$sumRow .= "<td class=\"flugbuch_verein-anzahl_fluege text-right sum locale-int\">{$row[0]}</td>";
			$sumRow .= '<td class="flugbuch_verein-max_flughoehe sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-flugplatz sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-luftraumbeobachter_anwesend sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-modell sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-besonderheiten sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-gastpilot sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-name_gastpilot sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-mfbo sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-reg_nr sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-fluege sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-lrb sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-hoehe sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-datei sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-datei_1 sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-erfasser sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-erfasst sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-geaendert_von sum"></td>';
			$sumRow .= '<td class="flugbuch_verein-geaendert sum"></td>';
			$sumRow .= '</tr>';

			$x->HTML = str_replace('<!-- tv data below -->', '', $x->HTML);
			$x->HTML = str_replace('<!-- tv data above -->', $sumRow, $x->HTML);
		}
	}

	// hook: flugbuch_verein_header
	$headerCode = '';
	if(function_exists('flugbuch_verein_header')) {
		$args = [];
		$headerCode = flugbuch_verein_header($x->ContentType, getMemberInfo(), $args);
	}

	if(!$headerCode) {
		include_once(__DIR__ . '/header.php');
	} else {
		ob_start();
		include_once(__DIR__ . '/header.php');
		echo str_replace('<%%HEADER%%>', ob_get_clean(), $headerCode);
	}

	echo $x->HTML;

	// hook: flugbuch_verein_footer
	$footerCode = '';
	if(function_exists('flugbuch_verein_footer')) {
		$args = [];
		$footerCode = flugbuch_verein_footer($x->ContentType, getMemberInfo(), $args);
	}

	if(!$footerCode) {
		include_once(__DIR__ . '/footer.php');
	} else {
		ob_start();
		include_once(__DIR__ . '/footer.php');
		echo str_replace('<%%FOOTER%%>', ob_get_clean(), $footerCode);
	}
