/** * Convert Plugin Main Function */ function convert() { global $vars, $defaultpage; sonots::init_myerror(); do { // try $args = func_get_args(); $inclpage = array_shift($args); $current = isset($vars['page']) ? $vars['page'] : $defaultpage; $this->visited[$current] = TRUE; $inclpage = PluginIncludex::check_page($inclpage, $current, $this->visited); if (sonots::mycatch()) { break; } $this->visited[$inclpage] = TRUE; $argline = csv_implode(',', $args); $argoptions = PluginSonotsOption::parse_option_line($argline); list($options, $unknowns) = PluginSonotsOption::evaluate_options($argoptions, $this->conf_options); $options = PluginIncludex::check_options($options, $unknowns, $argoptions); if (sonots::mycatch()) { break; } $html = PluginIncludex::display_include($inclpage, $options, $this->syntax); return $html; } while (false); if (sonots::mycatch()) { // catch return '</p>#includex(): ' . sonots::mycatch() . '</p>'; } }
/** * Check option validities and compatibilities * * @param array $options * @param array $unknown unknown options * @param array $conf_options * @return array */ function check_options($options, $unknowns, $conf_options) { global $vars; // first arg if (!isset($options['tag']) && count($unknowns) > 0) { $unknown_keys = array_diff_key($unknowns, $conf_options); $options['tag'] = $key = key($unknown_keys); unset($unknowns[$key]); } if (count($unknowns) > 0) { $line = PluginSonotsOption::glue_option_line($unknowns); sonots::mythrow('Argument(s) "' . htmlspecialchars($line) . '" are invalid'); return; } if (isset($options['include'])) { $options['include'] = PluginIncludex::check_options($options['include']); $options['date'] = false; // include does not use definitely $options['new'] = false; // include does not use definitely $options['info'] = null; $options['contents'] = null; // include does not use definitely } //// Compat if ($options['date'] || $options['new']) { $options['info'] = array(); } if ($options['date']) { if (!in_array('date', $options['info'])) { $options['info'][] = 'date'; } } if ($options['new']) { if (!in_array('new', $options['info'])) { $options['info'][] = 'new'; } } return $options; }
/** * Check option validities and compatibilities * * @param array $options * @param array $unknown unknown options * @param array $conf_options * @return array */ function check_options($options, $unknowns, $conf_options) { global $vars; // first arg if (!isset($options['prefix']) && count($unknowns) > 0) { $unknown_keys = array_diff_key($unknowns, $conf_options); $options['prefix'] = $key = key($unknown_keys); // compat with ls, ls2 unset($unknowns[$key]); } if (count($unknowns) > 0) { $line = PluginSonotsOption::glue_option_line($unknowns); sonots::mythrow('Argument(s) "' . htmlspecialchars($line) . '" are invalid'); return; } if (!isset($options['prefix'])) { if (!isset($options['tag'])) { $options['prefix'] = $vars['page'] != '' ? $vars['page'] . '/' : ''; } } elseif ($options['prefix'] === '/') { $options['prefix'] = ''; } else { $options['prefix'] = sonots::get_fullname($options['prefix'], $vars['page']); } //// hierarchy off if (isset($options['tag'])) { $options['hierarchy'] = false; } if ($options['sort'] == 'date') { $options['hierarchy'] = false; } if ($options['sort'] == 'title') { $options['hierarchy'] = false; } if (isset($options['include'])) { $options['include'] = PluginIncludex::check_options($options['include']); $options['hierarchy'] = false; // hierarchy + include => XHTML invalid $options['date'] = false; // include does not use definitely $options['new'] = false; // include does not use definitely $options['info'] = null; $options['contents'] = null; // include does not use definitely } if ($options['linkstr'] === 'relative' && $options['hierarchy']) { $options['linkstr'] = 'basename'; // equivalent to basename } //// Compat if ($options['basename']) { $options['linkstr'] = 'basename'; } if ($options['date'] || $options['new']) { $options['info'] = array(); } if ($options['date']) { if (!in_array('date', $options['info'])) { $options['info'][] = 'date'; } } if ($options['new']) { if (!in_array('new', $options['info'])) { $options['info'][] = 'new'; } } return $options; }