3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Declare everything to be output before the table $before = <<<BEFORE BEFORE; // Declare everything to be output after the table $after = <<<AFTER <div class="table-legend"> <h4>Activity Codes key:</h4> <ol class="legend-list three-col"> <li>Civil engineering and buildings</li> <li>Electrical engineering and energy</li> <li>Electronics (including radiofrequency equipment)</li> <li>Computer systems and communication, including rental and maintenance</li> <li>Mechanical structures - Supplies &amp; manufacturing techniques</li> <li>Vacuum and low-temperature technology</li> <li>Particle detectors</li> <li>Miscellaneous (insurances, photoequipment, gases, vehicles, petrol, tools, furniture, office supplies, publications)</li> <li>Design studies - Miscellaneous supplies</li> </ol> <ul><li><sup>1</sup> Including commitments carried forward from previous years and excluding commitments for future years. Ratio between the percentage of expenditure in an individual Member State for the above-mentioned period and that Member State's percentage contribution to the Budget <em>(TARGET for 2013: 0.91)</em>.</li> <li><sup>2</sup> Additional special contributions from France (excluding in-kind) and Switzerland were included in the calculation. Excluding individual purchase orders &lt; 1 000 CHF from 1 July 2013</li> <!--<li><sup>3</sup> See Table V of document <em>CERN/FC/5722/RA</em></li>--></ul> </div> AFTER; // fixme: this formats are obsolete, since data transform has been moved to 'body' // Formats for numbers. ### is a wildcard for 'current column' $to_french_number = "TO_CHAR(###, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '', ''')"; $to_percent = "TO_CHAR(ROUND(###, 2), '90.00')"; $table_template = array( 'db' => array( 'from' => 'PURCHASING_REPORT_TABLE_0', 'select' => array( 'MS' => FALSE, 'COUNTRY_ISO' => FALSE, 'COUNTRY_NAME' => NULL, 'SUPPLIES_1' => '###', 'SUPPLIES_2' => '###', 'SUPPLIES_3' => '###', 'SUPPLIES_4' => '###', 'SUPPLIES_5' => '###', 'SUPPLIES_6' => '###', 'SUPPLIES_7' => '###', 'SUPPLIES_8' => '###', 'SUPPLIES_9' => '###', 'SUPPLIES_TOTAL' => '###', 'SUPPLIES_RATIO' => '###', 'IR_PREV_YEAR' => '###', ), 'where' => array( 'MS' => array('LIKE', '%'), 'COUNTRY_ISO' => array('LIKE', '%') ), ), 'filters' => array( 'country_iso' => array( 'type' => 'country', 'description' => 'Country', 'where' => array( 'COUNTRY_ISO' => array('LIKE', '%'), ), ), 'ms' => array( 'type' => 'ms', 'description' => 'Member State', 'where' => array( 'MS' => array('LIKE', '%'), ), ), ), 'dynamic' => TRUE, 'editable' => FALSE, 'number' => 1, 'title' => "Payments and oustanding commitments in 2013 for Supplies<br><small>(Excluding visiting research teams and collaborations)</small>", 'subtitle' => "by country and by category of supplies", 'graph' => array( 'dynamic' => FALSE, ), 'headers' => array( array( 'from_db' => FALSE, // fixme: UNUSED 'layout' => array( 0 => array( 'colspan' => 11, 'class' => "text-center" ), 1 => array( 'rowspan' => 2, 'class' => "text-center border-left" ), 2 => array( 'rowspan' => 2, 'class' => "text-center border-left" ), ), 'data' => array( 0 => "<h3>Payments per activity code <small>(rounded kCHF)</small></h3>", 1 => "<h4>Industrial return<sup>2</sup><br><small>2013</small></h4>", 2 => "<h4>Return coefficient<br><small>2009 &ndash; 2012<!--<sup>3</sup>--></small></h4>", ), ), array( // fixme: unused 'from_db' => TRUE, 'layout' => array( 'SUPPLIES_1' => array( 'class' => "text-center" ), 'SUPPLIES_2' => array( 'class' => "text-center" ), 'SUPPLIES_3' => array( 'class' => "text-center" ), 'SUPPLIES_4' => array( 'class' => "text-center" ), 'SUPPLIES_5' => array( 'class' => "text-center" ), 'SUPPLIES_6' => array( 'class' => "text-center" ), 'SUPPLIES_7' => array( 'class' => "text-center" ), 'SUPPLIES_8' => array( 'class' => "text-center" ), 'SUPPLIES_9' => array( 'class' => "text-center" ), 'SUPPLIES_TOTAL' => array( 'class' => "text-center" ), 'SUPPLIES_RATIO' => array( 'class' => "text-center border-left" ), 'IR_PREV_YEAR' => array( 'class' => "text-center border-left" ), ), 'data' => array( 'MS' => FALSE, 'COUNTRY_ISO' => FALSE, 'COUNTRY_NAME' => "", 'SUPPLIES_1' => "1", 'SUPPLIES_2' => "2", 'SUPPLIES_3' => "3", 'SUPPLIES_4' => "4", 'SUPPLIES_5' => "5", 'SUPPLIES_6' => "6", 'SUPPLIES_7' => "7", 'SUPPLIES_8' => "8", 'SUPPLIES_9' => "9", 'SUPPLIES_TOTAL' => "Total", 'SUPPLIES_RATIO' => FALSE, 'IR_PREV_YEAR' => FALSE, ), ), ), 'body' => array( 'layout' => array( 'COUNTRY_NAME' => array( 'class' => "text-left" ), 'SUPPLIES_1' => array( 'class' => "text-right no-wrap" ), 'SUPPLIES_2' => array( 'class' => "text-right no-wrap" ), 'SUPPLIES_3' => array( 'class' => "text-right no-wrap" ), 'SUPPLIES_4' => array( 'class' => "text-right no-wrap" ), 'SUPPLIES_5' => array( 'class' => "text-right no-wrap" ), 'SUPPLIES_6' => array( 'class' => "text-right no-wrap" ), 'SUPPLIES_7' => array( 'class' => "text-right no-wrap" ), 'SUPPLIES_8' => array( 'class' => "text-right no-wrap" ), 'SUPPLIES_9' => array( 'class' => "text-right no-wrap" ), 'SUPPLIES_TOTAL' => array( 'class' => "text-center no-wrap" ), 'SUPPLIES_RATIO' => array( 'class' => "text-center border-left" ), 'IR_PREV_YEAR' => array( 'class' => "text-center border-left" ), ), 'format' => array( 'SUPPLIES_1' => array('format_french_number', 'format_no_decimals'), 'SUPPLIES_2' => array('format_french_number', 'format_no_decimals'), 'SUPPLIES_3' => array('format_french_number', 'format_no_decimals'), 'SUPPLIES_4' => array('format_french_number', 'format_no_decimals'), 'SUPPLIES_5' => array('format_french_number', 'format_no_decimals'), 'SUPPLIES_6' => array('format_french_number', 'format_no_decimals'), 'SUPPLIES_7' => array('format_french_number', 'format_no_decimals'), 'SUPPLIES_8' => array('format_french_number', 'format_no_decimals'), 'SUPPLIES_9' => array('format_french_number', 'format_no_decimals'), 'SUPPLIES_TOTAL' => array('format_french_number', 'format_no_decimals'), 'SUPPLIES_RATIO' => 'format_french_number', 'IR_PREV_YEAR' => 'format_french_number', ), ), // TODO: Implement footers with custom queries and formatting 'footers' => array( array( // fixme: unused 'from_db' => TRUE, // fixme: this is not used, and should go 'exclude' => array( 'MS' => "Others" ), 'layout' => array( 'COUNTRY_NAME' => array( 'class' => "text-right" ) ), 'data' => array( 'COUNTRY_NAME' => array( 'text' => "Sub-Total member states" ), 'SUPPLIES_1' => array( 'SUM' => "SUPPLIES_1" ), 'SUPPLIES_2' => array( 'SUM' => "SUPPLIES_2" ), 'SUPPLIES_3' => array( 'SUM' => "SUPPLIES_3" ), 'SUPPLIES_4' => array( 'SUM' => "SUPPLIES_4" ), 'SUPPLIES_5' => array( 'SUM' => "SUPPLIES_5" ), 'SUPPLIES_6' => array( 'SUM' => "SUPPLIES_6" ), 'SUPPLIES_7' => array( 'SUM' => "SUPPLIES_7" ), 'SUPPLIES_8' => array( 'SUM' => "SUPPLIES_8" ), 'SUPPLIES_9' => array( 'SUM' => "SUPPLIES_9" ), 'SUPPLIES_TOTAL' => array( 'SUM' => "SUPPLIES_TOTAL" ), 'SUPPLIES_RATIO' => false, 'IR_PREV_YEAR' => false, ), ), array( 'from_db' => TRUE, 'exclude' => array( 'MS' => "Others" ), 'layout' => array( '*' => array( 'class' => "text-italic text-bold" ) ), 'data' => array( 'COUNTRY_NAME' => "", 'SUPPLIES_1' => array( 'PERCENT' => array( 'SUPPLIES_1', 'SUPPLIES_TOTAL' )), 'SUPPLIES_2' => array( 'PERCENT' => array( 'SUPPLIES_2', 'SUPPLIES_TOTAL' )), 'SUPPLIES_3' => array( 'PERCENT' => array( 'SUPPLIES_3', 'SUPPLIES_TOTAL' )), 'SUPPLIES_4' => array( 'PERCENT' => array( 'SUPPLIES_4', 'SUPPLIES_TOTAL' )), 'SUPPLIES_5' => array( 'PERCENT' => array( 'SUPPLIES_5', 'SUPPLIES_TOTAL' )), 'SUPPLIES_6' => array( 'PERCENT' => array( 'SUPPLIES_6', 'SUPPLIES_TOTAL' )), 'SUPPLIES_7' => array( 'PERCENT' => array( 'SUPPLIES_7', 'SUPPLIES_TOTAL' )), 'SUPPLIES_8' => array( 'PERCENT' => array( 'SUPPLIES_8', 'SUPPLIES_TOTAL' )), 'SUPPLIES_9' => array( 'PERCENT' => array( 'SUPPLIES_9', 'SUPPLIES_TOTAL' )), 'SUPPLIES_TOTAL' => array( 'PERCENT' => array( 'SUPPLIES_TOTAL', 'SUPPLIES_TOTAL' )), 'SUPPLIES_RATIO' => false, 'IR_PREV_YEAR' => false, ), ), array( 'from_db' => TRUE, 'exclude' => array( 'MS' => "Member States", ), 'layout' => array( 'COUNTRY_NAME' => array( 'class' => "text-right" ) ), 'data' => array( 'COUNTRY_NAME' => array( 'text' => "Sub-Total other" ), 'SUPPLIES_1' => array( 'SUM' => "SUPPLIES_1" ), 'SUPPLIES_2' => array( 'SUM' => "SUPPLIES_2" ), 'SUPPLIES_3' => array( 'SUM' => "SUPPLIES_3" ), 'SUPPLIES_4' => array( 'SUM' => "SUPPLIES_4" ), 'SUPPLIES_5' => array( 'SUM' => "SUPPLIES_5" ), 'SUPPLIES_6' => array( 'SUM' => "SUPPLIES_6" ), 'SUPPLIES_7' => array( 'SUM' => "SUPPLIES_7" ), 'SUPPLIES_8' => array( 'SUM' => "SUPPLIES_8" ), 'SUPPLIES_9' => array( 'SUM' => "SUPPLIES_9" ), 'SUPPLIES_TOTAL' => array( 'SUM' => "SUPPLIES_TOTAL" ), 'SUPPLIES_RATIO' => false, 'IR_PREV_YEAR' => false, ), ), array( 'from_db' => TRUE, 'layout' => array( 'COUNTRY_NAME' => array( 'class' => "text-right" ) ), 'data' => array( 'COUNTRY_NAME' => array( 'text' => "Total" ), 'SUPPLIES_1' => array( 'SUM' => "SUPPLIES_1" ), 'SUPPLIES_2' => array( 'SUM' => "SUPPLIES_2" ), 'SUPPLIES_3' => array( 'SUM' => "SUPPLIES_3" ), 'SUPPLIES_4' => array( 'SUM' => "SUPPLIES_4" ), 'SUPPLIES_5' => array( 'SUM' => "SUPPLIES_5" ), 'SUPPLIES_6' => array( 'SUM' => "SUPPLIES_6" ), 'SUPPLIES_7' => array( 'SUM' => "SUPPLIES_7" ), 'SUPPLIES_8' => array( 'SUM' => "SUPPLIES_8" ), 'SUPPLIES_9' => array( 'SUM' => "SUPPLIES_9" ), 'SUPPLIES_TOTAL' => array( 'SUM' => "SUPPLIES_TOTAL" ), 'SUPPLIES_RATIO' => false, 'IR_PREV_YEAR' => false, ), ), ), 'html' => array( 'before' => $before, 'after' => $after, ), ); echo json_encode($table_template);

preferences:
37.63 ms | 402 KiB | 5 Q