www_archline_hu/deployed/tflearn/libraries/techfry/src/TfXml.php
LÁZÁR Imre AI Agent bb1c28ae0c feat(deployed): add TF Learn 1.7.5 (no-source, vetted live)
TF Learn (Tech Fry) + techfry library 1.3.4; login-gated, no repo -> deployed files.

Signed-off-by: LÁZÁR Imre <imre@illusion.hu>
Assisted-by: claude-code@claude-opus-4-8
2026-07-16 11:24:46 +02:00

412 lines
13 KiB
PHP

<?php
/*
* @package Tech Fry Library
* @license https://www.gnu.org/licenses/gpl-3.0.en.html
*/
namespace TechFry\Library;
defined('_JEXEC') or die;
// Script for Xml
class TfXml
{
public static function start_field($field)
{
// name, type, label, description, required, default, hint, readonly
$output = '<field name="' . $field->name . '"';
$output .= ' type="' . $field->type . '"';
$output .= ' label="' . $field->label . '"';
$output .= ' description="' . $field->description . '"';
$output .= (isset($field->default_value)) ? ' default="' . $field->default_value . '"' : '';
$output .= (isset($field->hint)) ? ' hint="' . $field->hint . '"' : '';
$output .= (isset($field->required)) ? ' required="' . $field->required . '"' : '';
$output .= (isset($field->readonly)) ? ' readonly="' . $field->readonly . '"' : '';
return $output;
}
// Set options for list, radio, checkboxes
public static function set_field_options($options)
{
$output = '';
if (is_string($options))
{
$options_obj = explode(',', $options);
foreach ($options_obj as $opt)
{
$output .= '<option value="' . $opt . '">' . $opt . '</option>';
}
}
else
{
foreach ($options as $opt)
{
if (is_array($opt))
{
$opt = (object) $opt;
}
$output .= '<option value="' . $opt->value . '">' . $opt->name . '</option>';
}
}
return $output;
}
// A-01. Text Field
public static function field_text($field)
{
// maxlength
$output = self::start_field($field);
$output .= ' maxlength="' . $field->maxlength . '"';
$output .= '></field>';
return $output;
}
// A-02. Email Field
public static function field_email($field)
{
$output = self::start_field($field);
$output .= '></field>';
return $output;
}
// A-03. Url Field
public static function field_url($field)
{
// maxlength, relative
$output = self::start_field($field);
$output .= (isset($field->relative)) ? ' relative="' . $field->relative . '"' : '';
$output .= (isset($field->maxlength)) ? ' maxlength="' . $field->maxlength . '"' : '';
$output .= '></field>';
return $output;
}
// A-04. List Field (Also used for checkboxes)
public static function field_list($field)
{
// multiple, layout
$output = self::start_field($field);
$output .= (isset($field->form_layout)) ? ' layout="' . $field->form_layout . '"' : '';
$output .= (isset($field->multiple)) ? ' multiple="' . $field->multiple . '"' : '';
$output .= '>';
// Options
$output .= self::set_field_options($field->options);
$output .= '</field>';
return $output;
}
// A-05. Radio Field
public static function field_radio($field)
{
// layout
$output = self::start_field($field);
$output .= (isset($field->form_layout)) ? ' layout="' . $field->form_layout . '"' : '';
$output .= '>';
// Options
$output .= self::set_field_options($field->options);
$output .= '</field>';
return $output;
}
// A-06. Integer Field
public static function field_integer($field)
{
// first, last, step
$output = self::start_field($field);
$output .= ' first="' . $field->first . '"';
$output .= ' last="' . $field->last . '"';
$output .= ' step="' . $field->step . '"';
$output .= '></field>';
return $output;
}
// A-07. Number Field (Also used for Range)
public static function field_number($field)
{
// min, max, step
if ($field->options != '')
{
$arr = str_getcsv($field->options);
foreach ($arr as $v)
{
$a = explode(':', $v);
$var = $a[0];
$field->$var = $a[1];
}
}
$output = self::start_field($field);
$output .= ' min="' . $field->min . '"';
$output .= ' max="' . $field->max . '"';
$output .= ' step="' . $field->step . '"';
$output .= '></field>';
return $output;
}
// A-08. Textarea Field
public static function field_textarea($field)
{
// rows, cols
$output = self::start_field($field);
$output .= ' rows="' . $field->rows . '"';
$output .= ' cols="' . $field->cols . '"';
$output .= '></field>';
return $output;
}
// A-09. Calendar Field
public static function field_calendar($field)
{
// showtime, singleheader, todaybutton, weeknumbers, filltable, translateformat, format, minyear, maxyear
$output = self::start_field($field);
$output .= (isset($field->showtime)) ? ' showtime="' . $field->showtime . '"' : '';
$output .= (isset($field->singleheader)) ? ' singleheader="' . $field->singleheader . '"' : '';
$output .= (isset($field->todaybutton)) ? ' todaybutton="' . $field->todaybutton . '"' : '';
$output .= (isset($field->weeknumbers)) ? ' weeknumbers="' . $field->weeknumbers . '"' : '';
$output .= (isset($field->filltable)) ? ' filltable="' . $field->filltable . '"' : '';
$output .= (isset($field->translateformat)) ? ' translateformat="' . $field->translateformat . '"' : '';
$output .= (isset($field->format)) ? ' format="' . $field->format . '"' : '';
$output .= (isset($field->minyear)) ? ' minyear="' . $field->minyear . '"' : '';
$output .= (isset($field->maxyear)) ? ' maxyear="' . $field->maxyear . '"' : '';
$output .= '></field>';
return $output;
}
// A-10. Password Field
public static function field_password($field)
{
$output = self::start_field($field);
$output .= '></field>';
return $output;
}
// A-10. File Field
public static function field_file($field)
{
// multiple
$output = self::start_field($field);
$output .= (isset($field->multiple)) ? ' multiple="' . $field->multiple . '"' : '';
$output .= '></field>';
return $output;
}
// A-11. Note Field
public static function field_note($field)
{
// class, close
$output = self::start_field($field);
$output .= (isset($field->class_value)) ? ' class="' . $field->class_value . '"' : '';
$output .= (isset($field->close) && $field->close == 'true') ? ' close="' . $field->close . '"' : '';
$output .= '></field>';
return $output;
}
// A-12. Filelist Field
public static function field_filelist($field)
{
// directory, fileFilter, exclude, stripext
$output = self::start_field($field);
$output .= (isset($field->directory)) ? ' directory="' . $field->directory . '"' : '';
$output .= (isset($field->fileFilter)) ? ' fileFilter="' . $field->fileFilter . '"' : '';
$output .= (isset($field->exclude)) ? ' exclude="' . $field->exclude . '"' : '';
$output .= (isset($field->stripext)) ? ' stripext="' . $field->stripext . '"' : '';
$output .= '></field>';
return $output;
}
// A-13. Folderlist Field
public static function field_folderlist($field)
{
// directory, folderFilter, exclude, recursive
$output = self::start_field($field);
$output .= (isset($field->directory)) ? ' directory="' . $field->directory . '"' : '';
$output .= (isset($field->folderFilter)) ? ' folderFilter="' . $field->folderFilter . '"' : '';
$output .= (isset($field->exclude)) ? ' exclude="' . $field->exclude . '"' : '';
$output .= (isset($field->recursive)) ? ' recursive="' . $field->recursive . '"' : '';
$output .= '></field>';
return $output;
}
// A-14. Imagelist Field
public static function field_imagelist($field)
{
// directory, filter, exclude, stripext
$output = self::start_field($field);
$output .= (isset($field->directory)) ? ' directory="' . $field->directory . '"' : '';
$output .= (isset($field->filter)) ? ' filter="' . $field->filter . '"' : '';
$output .= (isset($field->exclude)) ? ' exclude="' . $field->exclude . '"' : '';
$output .= (isset($field->stripext)) ? ' stripext="' . $field->stripext . '"' : '';
$output .= '></field>';
return $output;
}
// A-15. Color Field
public static function field_color($field)
{
// format
$output = self::start_field($field);
$output .= (isset($field->format)) ? ' class="' . $field->format . '"' : '';
$output .= '></field>';
return $output;
}
// A-16. Subform Field
public static function field_subform($field)
{
// multiple, layout
$output = self::start_field($field);
$output .= (isset($field->form_layout)) ? ' layout="' . $field->form_layout . '"' : '';
$output .= (isset($field->multiple)) ? ' multiple="' . $field->multiple . '"' : '';
$output .= '>';
// Subform fields - field_name, field_type
$output .= '<form>';
foreach ($field->subform_fields as $subform_field)
{
$output .= '<field name="' . $subform_field->field_name . '" type="' . $subform_field->field_type . '" label="' . $subform_field->field_name . '" />';
}
$output .= '</form>';
$output .= '</field>';
return $output;
}
// B-01. Limit field
public static function filter_limit_field()
{
$element = '<field name="limit" type="limitbox" label="JGLOBAL_LIST_LIMIT" default="25" onchange="this.form.submit();" />';
return $element;
}
// B-02. Ordering field
public static function filter_ordering_field($orderCol)
{
$element = '<field name="fullordering" type="list" label="JGLOBAL_SORT_BY" onchange="this.form.submit();" default="' . $orderCol . ' DESC" validate="options">';
$element .= '<option value="">JGLOBAL_SORT_BY</option>';
$element .= '</field>';
return $element;
}
// B-03. Published field
public static function filter_published_field()
{
$element = '<field name="published" type="list" label="JOPTION_SELECT_PUBLISHED" onchange="this.form.submit();">';
$element .= '<option value="">JOPTION_SELECT_PUBLISHED</option><option value="1">JPUBLISHED</option><option value="0">JUNPUBLISHED</option>';
$element .= '<option value="2">JARCHIVED</option><option value="-2">JTRASHED</option><option value="*">JALL</option>';
$element .= '</field>';
return $element;
}
// B-04. Access field
public static function filter_access_field()
{
$element = '<field name="access" type="accesslevel" label="JGRID_HEADING_ACCESS" multiple="true" layout="joomla.form.field.list-fancy-select"';
$element .= ' hint="JOPTION_SELECT_ACCESS" onchange="this.form.submit();" />';
return $element;
}
// B-05. Note field
public static function filter_note_field($table_name)
{
$element = '<field name="note" type="sql" query="SELECT DISTINCT note FROM #__' . $table_name . ' ORDER BY note ASC" key_field="note" value_field="note"';
$element .= ' default="" layout="joomla.form.field.list-fancy-select" onchange="this.form.submit();"><option value="0">- Select Note -</option></field>';
return $element;
}
// B-06. Language field
public static function filter_language_field()
{
$element = '<field name="language" type="contentlanguage" label="JGRID_HEADING_LANGUAGE" onchange="this.form.submit();">';
$element .= '<option value="">JOPTION_SELECT_LANGUAGE</option><option value="*">JALL</option></field>';
return $element;
}
}