header($title);
$this->title($title);
}
}
/**
* Determine internal method names.
*
* @param $method
* Method name.
*
* @return
* Method name.
*/
static function methodName($method) {
if (php_sapi_name() == "cli") {
return 'cli'. ucfirst($method);
}
else {
return 'web'. ucfirst($method);
}
}
/**
* Dispatcher, dynamic version.
*
* @param $method
* Method name.
*
* @param $arguments
* Argument list.
*
* @return
* Callback result.
*/
public function __call($method, $arguments) {
$method = $this->methodName($method);
if (method_exists($this, $method)) {
return call_user_func_array(array($this, $method), $arguments);
}
}
/**
* Dispatcher, static version.
*
* @param $method
* Method name.
*
* @param $arguments
* Argument list.
*
* @return
* Callback result.
*/
public static function __callStatic($method, $arguments) {
$method = self::methodName($method);
if (is_callable('self', $method)) {
return call_user_func_array(array('self', $method), $arguments);
}
}
/**
* Draws a page title.
*
* @param $title
* Page title;
*/
protected static function webTitle($title) {
if (php_sapi_name() == "cli") {
echo "$title\n";
}
else {
echo "
$title
\n";
}
}
/**
* Draws title, CLI version.
*
* @param $title
* Page title;
*/
protected static function cliTitle($title) {
echo "$title\n";
}
/**
* Draws the page header.
*
* @param $title
* Page title;
*/
protected static function webHeader($title) {
echo '';
echo '';
echo '';
echo '';
echo ''. $title .'';
echo '';
echo '';
}
/**
* Draws the page footer.
*/
protected static function webFooter() {
echo '';
}
/**
* Draws a form.
*
* @param $content
* Form inner content.
*
* @param $action
* Form action.
*
* @param $method
* Form method.
*/
protected static function webForm($content, $action = 'index.php', $method = 'get') {
echo '';
echo '
';
}
/**
* Draws a form text input.
*
* @param $name
* Input name.
*
* @param $default
* Default value.
*
* @return
* Rendered text input.
*/
protected static function webFormInputText($name, $default = null) {
if ($default) {
$default = 'value="'. $default .'"';
}
return ucfirst($name) .': ';
}
/**
* Draws a navigation bar.
*
* @param $entry
* Current entry.
*
* @param $entries
* Total number of entries.
*
* @param $action
* Page action.
*
* @param $extra
* Extra parameters.
*/
protected static function webNavbar($entry, $entries, $action = 'index.php', $extra = NULL) {
// First / prev links.
if ($entry != 1) {
$prev = $entry - 1;
echo 'first ';
echo '< prev ';
}
// Next / last links.
if ($entry < $entries) {
$next = $entry + 1;
echo 'next > ';
echo 'last';
}
}
/**
* Format a link.
*
* @param $action
* Link action.
*
* @param $args
* Action arguments.
*
* @param $title
* Link title.
*
* @return
* Formatted link.
*/
protected static function webLink($action, $args, $title) {
return ''. $title .'';
}
/**
* Format an entry link.
*
* @param $entry
* Entry number.
*
* @return
* Formatted link.
*/
protected static function webEntryLink($entry) {
return self::link('index.php', '?entry='. $entry, $entry);
}
/**
* Format a link to the field app.
*
* @param $entry
* Entry number.
*
* @param $fid
* Field code.
*
* @return
* Formatted link.
*/
protected static function webFieldLink($entry, $fid) {
return "Field search: ". self::link('field.php', '?entry='. $entry .'&fid='. $fid, $entry);
}
/**
* Format a link to the field app.
*
* @param $entry
* Entry number.
*
* @param $fid
* Field code.
*
* @return
* Formatted link.
*/
protected static function webRepetitionLink($entry, $fid) {
return "Repetition search: ". self::link('repetition.php', '?entry='. $entry .'&fid='. $fid, $entry);
}
/**
* Draws tags for opening a table.
*/
protected static function webOpenTable() {
echo '';
}
/**
* Draws tags for closing a table.
*/
protected static function webCloseTable() {
echo '
';
}
/**
* Draws a h2 element.
*
* @param $text
* Inner text.
*/
protected static function webH2($text) {
echo "$text
";
}
/**
* Draws a h2 element, CLI version.
*
* @param $text
* Inner text.
*/
protected static function cliH2($text) {
echo "$text\n";
}
/**
* Draws a h3 element.
*
* @param $text
* Inner text.
*/
protected static function webH3($text) {
echo "$text
";
}
/**
* Draws a h3 element, CLI version.
*
* @param $text
* Inner text.
*/
protected static function cliH3($text) {
echo "$text\n";
}
/**
* Draws a line break element.
*/
protected static function webBr() {
echo "
";
}
/**
* Draws a line break element, CLI version.
*/
protected static function cliBr() {
echo "\n";
}
/**
* Draws a pre format block element.
*
* @param $text
* Inner text.
*/
protected static function webPre($text) {
echo "$text
";
}
/**
* Draws a pre open element.
*/
protected static function webPreOpen() {
echo "";
}
/**
* Draws a pre open element.
*/
protected static function webPreClose() {
echo "
";
}
/**
* Draws a pre format block element.
*
* @param $text
* Inner text.
*/
protected static function cliPre($text) {
echo "$text\n";
}
/**
* Dump value.
*
* @param $var
* Variable to dump.
*/
protected static function webDump($var) {
self::preOpen();
print_r($var);
self::preClose();
}
/**
* Dump value.
*
* @param $var
* Variable to dump.
*/
protected static function cliDump($var) {
print_r($var);
}
/**
* Set the response helper.
*
* @param $mime
* MIME type.
*
* @param $filename
* File name.
*/
protected static function webHttpHeader($mime, $filename) {
header("Content-type: $mime");
header("Content-Disposition: attachment; filename=$filename");
header("Pragma: no-cache");
header("Expires: 0");
}
/**
* Display a value with CSV format.
*
* @param $value
* Value entry.
*/
protected static function webCsv($value = NULL) {
echo '"'. preg_replace('/"/', '""', $value) .'",';
}
/**
* Display CSV titles.
*
* @param $format
* ISIS database format.
*/
protected static function webCsvTitles($format) {
// Format fields.
foreach ($format['fields'] as $field) {
self::csv($field['name']);
if (isset($field['subfields']) && is_array($field['subfields'])) {
foreach ($field['subfields'] as $key => $value) {
self::csv($field['name'] .': '. $value);
}
}
}
}
/**
* Display a new CSV row.
*/
protected static function webCsvRow() {
echo "\n";
}
/**
* Merge items in a CSV roll.
*
* @param $items
* Array with items to be merged.
*/
protected static function webMergeCsvItems($items) {
if (!empty($items)) {
self::csv(implode(';', $items));
}
else {
self::csv();
}
}
/**
* Renders a radio button.
*
* @param $name
* Radio name.
*
* @param $value
* Radio value.
*
* @param $caption
* Radio caption.
*
* @param $checked
* Whether the radio is checked.
*
* @return
* HTML rendered radio button.
*/
protected static function webRadio($name, $value, $caption, $checked = NULL) {
return ' '. $value .' - '. $caption .'
';
}
/**
* Draws a combination of radio buttons.
*
* @param $name
* Radio names.
*
* @param $data
* Array with values and captions.
*
* @param $checked
* Index of the selected option.
*/
protected static function webRadios($name, $data, $checked = NULL) {
$radios = '';
$count = 0;
foreach ($data as $key => $value) {
if ($count++ > 5) {
$count = 0;
$radios .= ' | ';
}
if ($key == $checked) {
$radios .= self::webRadio($name, $key, $value, 'checked');
}
else {
$radios .= self::webRadio($name, $key, $value);
}
}
$radios .= ' |
';
return $radios;
}
}