예제 #1
0
 /**
  * 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>';
     }
 }
예제 #2
0
 /**
  * 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;
 }
예제 #3
0
 /**
  * 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;
 }