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 '
'; echo $content; echo ''; echo '
'; 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) { self::preOpen(); // 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'; } self::preClose(); } /** * 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) { if (file_exists('../contrib/krumo/class.krumo.php')) { // Use Krumo. include_once '../contrib/krumo/class.krumo.php'; krumo($var); } else { 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) { ksort($data); $radios = '
'; $count = 0; foreach ($data as $key => $value) { if ($count++ > 25) { $count = 0; $radios .= ''; } if ($key == $checked) { $radios .= self::webRadio($name, $key, $value, 'checked'); } else { $radios .= self::webRadio($name, $key, $value); } } $radios .= '
'; return $radios; } }