Пример #1
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['home']) && count($unknowns) > 0) {
         $unknown_keys = array_diff_key($unknowns, $conf_options);
         $options['home'] = $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['home'])) {
         if (!isset($options['tag'])) {
             $options['home'] = $vars['page'] != '' ? sonots::get_dirname($vars['page']) : '';
         }
     } elseif ($options['home'] === '/') {
         $options['home'] = '';
     } else {
         $options['home'] = sonots::get_fullname($options['home'], $vars['page']);
     }
     $options['prefix'] = $options['home'] . '/';
     //// Compat
     if ($options['basename']) {
         $options['linkstr'] = 'basename';
     }
     return $options;
 }
Пример #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['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;
 }