public function testGetFieldTitle() { $xs3 = new XS("[pid]\ntype=id"); $this->assertFalse($xs3->getFieldTitle()); // xs1 $f = $this->xs1->getFieldTitle(); $this->assertEquals('subject', $f->name); $this->assertEquals(XSFieldMeta::TYPE_TITLE, $f->type); $this->assertFalse($f->isBoolIndex()); $this->assertTrue($f->hasIndexSelf()); $this->assertTrue($f->hasIndexMixed()); $this->assertEquals(5, $f->weight); $this->assertFalse($f->hasCustomTokenizer()); $this->assertTrue($f->isSpeical()); $this->assertTrue($f->withPos()); $this->assertFalse($f->isNumeric()); // xs2 $f = $this->xs2->getFieldTitle(); $this->assertEquals('subject', $f->name); $this->assertEquals(XSFieldMeta::TYPE_TITLE, $f->type); $this->assertFalse($f->isBoolIndex()); $this->assertTrue($f->hasIndexSelf()); $this->assertFalse($f->hasIndexMixed()); $this->assertEquals(3, $f->weight); $this->assertFalse($f->hasCustomTokenizer()); $this->assertTrue($f->isSpeical()); $this->assertFalse($f->withPos()); $this->assertFalse($f->isNumeric()); }
// basic $vars['@project@'] = is_file($project) ? realpath($project) : $project; $vars['@charset@'] = $xs->getDefaultCharset(); if ($vars['@charset@'] !== 'GB2312' && $vars['@charset@'] !== 'GBK') { $vars['@charset@'] = 'UTF-8'; } $vars['@xs_lib_root@'] = XS_LIB_ROOT; $vars['@date_time@'] = date('Y-m-d H:i:s'); $vars['@project_name@'] = ucfirst($xs->name); $vars['@package_name@'] = PACKAGE_NAME; $vars['@package_version@'] = PACKAGE_VERSION; // fields $vars['@set_filter@'] = ''; $vars['@set_sort@'] = ''; $vars['@field_id@'] = $xs->getFieldId()->name; if (($field = $xs->getFieldTitle()) !== false) { $vars['@field_title@'] = $field->name; } if (($field = $xs->getFieldBody()) !== false) { $vars['@field_body@'] = $field->name; } $vars['@field_info@'] = ''; foreach ($xs->getAllFields() as $field) { if ($field->hasIndexSelf() && $field->type != XSFieldMeta::TYPE_BODY && !$field->isBoolIndex()) { $vars['@set_filter@'] .= "\t\t\t<label class=\"radio inline\"><input type=\"radio\" name=\"f\" value=\"{$field->name}\" <?php echo \$f_{$field->name}; ?> />" . ucfirst($field->name) . "</label>\n"; } if ($field->isNumeric()) { $vars['@set_sort@'] .= "\t\t\t\t\t<option value=\"" . $field->name . "_DESC\" <?php echo \$s_{$field->name}_DESC; ?>>" . ucfirst($field->name) . "从大到小</option>\n"; $vars['@set_sort@'] .= "\t\t\t\t\t<option value=\"" . $field->name . "_ASC\" <?php echo \$s_{$field->name}_ASC; ?>>" . ucfirst($field->name) . "从小到大</option>\n"; } if ($field->isSpeical()) {
foreach ($tmps as $tmp) { $tmp = trim($tmp); if ($tmp === '') { continue; } if (substr($tmp, 0, 1) === '~') { $fields[substr($tmp, 1)] = false; } else { $fields[$tmp] = true; } } $search->setMultiSort($fields); } // special fields $fid = $xs->getFieldId(); $ftitle = $xs->getFieldTitle(); $fbody = $xs->getFieldBody(); if ($fbody) { $xs->getFieldBody()->cutlen = 100; } // add range $ranges = array(); if (strpos($query, '..') !== false) { $regex = '/(\\S+?):(\\S*?)\\.\\.(\\S*)/'; if (preg_match_all($regex, $query, $matches) > 0) { for ($i = 0; $i < count($matches[0]); $i++) { $ranges[] = array($matches[1][$i], $matches[2][$i] === '' ? null : $matches[2][$i], $matches[3][$i] === '' ? null : $matches[3][$i]); $query = str_replace($matches[0][$i], '', $query); } } }