Skip to content

Commit

Permalink
Merge branch 'feature/sort-removal' into develop. Fixes #25.
Browse files Browse the repository at this point in the history
  • Loading branch information
Eric Rochester committed May 2, 2012
2 parents 069461a + 1f9da7f commit a74b77c
Show file tree
Hide file tree
Showing 10 changed files with 54 additions and 150 deletions.
16 changes: 7 additions & 9 deletions SolrSearchPlugin.php
Expand Up @@ -224,15 +224,15 @@ protected function _addFacetMappings()
$elements = $this->_db->getTable('Element')->findAll();
$sql = <<<SQL
INSERT INTO `{$this->_db->prefix}solr_search_facets`
(element_id, name, element_set_id, is_facet, is_displayed, is_sortable)
VALUES (?, ?, ?, ?, ?, ?);
(element_id, name, element_set_id, is_facet, is_displayed)
VALUES (?, ?, ?, ?, ?);
SQL;
$stmt = $this->_db->prepare($sql);

// $stmt->execute(array(null, 'Image', null, 1, 1, 1));
$stmt->execute(array(null, 'Tag', null, 1, 1, 1));
$stmt->execute(array(null, 'Collection', null, 1, 1, 1));
$stmt->execute(array(null, 'Itemtype', null, 1, 1, 1));
// $stmt->execute(array(null, 'Image', null, 1, 1));
$stmt->execute(array(null, 'Tag', null, 1, 1));
$stmt->execute(array(null, 'Collection', null, 1, 1));
$stmt->execute(array(null, 'Itemtype', null, 1, 1));

foreach ($elements as $element) {
$v = 0;
Expand All @@ -244,8 +244,7 @@ protected function _addFacetMappings()
}

$stmt->execute(array(
$element['id'], $element['name'], $element['element_set_id'],
$v, $v, $v
$element['id'], $element['name'], $element['element_set_id'], 0, $v
));
}
}
Expand Down Expand Up @@ -287,7 +286,6 @@ protected function _createSolrTable()
`element_set_id` int(10) unsigned,
`is_facet` tinyint unsigned DEFAULT 0,
`is_displayed` tinyint unsigned DEFAULT 0,
`is_sortable` tinyint unsigned DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
SQL;
Expand Down
12 changes: 2 additions & 10 deletions controllers/ConfigController.php
Expand Up @@ -55,7 +55,7 @@ public function indexAction()
$options = array();

/**
* Test for is_facet and is_sortable values.
* Test for is_facet values.
*/

// is_displayed
Expand All @@ -72,18 +72,10 @@ public function indexAction()
$options['is_facet'] = 0;
}

// is_sortable
if (isset($values) && in_array('is_sortable',$values)){
$options['is_sortable'] = 1;
} else {
$options['is_sortable'] = 0;
}

$data = array(
'id' => $split[1],
'is_displayed' => $options['is_displayed'],
'is_facet' => $options['is_facet'],
'is_sortable' => $options['is_sortable']
'is_facet' => $options['is_facet']
);

try {
Expand Down
6 changes: 1 addition & 5 deletions controllers/ResultsController.php
Expand Up @@ -108,8 +108,6 @@ private function getSearchParameters($facets) {
$fields .= ",$hiddenFields";
}

$sort = isset($_REQUEST['sort']) ? $_REQUEST['sort'] : '';

if (!empty($facets)) {
$params = array(
'fl' => $fields,
Expand All @@ -120,13 +118,11 @@ private function getSearchParameters($facets) {
'hl' => get_option('solr_search_hl'),
'hl.snippets' => get_option('solr_search_snippets'),
'hl.fragsize' => get_option('solr_search_fragsize'),
'sort' => $sort,
'facet.sort' => get_option('solr_search_facet_sort')
);
} else {
$params = array(
'fl' => $displayFields,
'sort' => $sort
'fl' => $displayFields
);
}

Expand Down
5 changes: 2 additions & 3 deletions forms/FacetForm.php
Expand Up @@ -59,7 +59,7 @@ public function init()

// Construct values array.
$values = array();
foreach (array('is_displayed', 'is_facet', 'is_sortable') as $key) {
foreach (array('is_displayed', 'is_facet') as $key) {
if ($facet->$key == 1) {
array_push($values, $key);
}
Expand All @@ -70,8 +70,7 @@ public function init()
'label' => $facet->name,
'multiOptions' => array(
'is_displayed' => 'Is Searchable',
'is_facet' => 'Is Facet',
'is_sortable' => 'Is Sortable'
'is_facet' => 'Is Facet'
),
'value' => $values
));
Expand Down
2 changes: 1 addition & 1 deletion helpers/SolrSearch_IndexHelpers.php
Expand Up @@ -118,7 +118,7 @@ public static function getIndexSet($db)
->findAll();

foreach ($facets as $facet) {
if ($facet->is_displayed || $facet->is_facet || $facet->is_sortable) {
if ($facet->is_displayed || $facet->is_facet) {
$key = $facet->element_id
? $facet->element_id
: strtolower($facet->name);
Expand Down
151 changes: 40 additions & 111 deletions helpers/SolrSearch_ViewHelpers.php
Expand Up @@ -158,107 +158,6 @@ public static function getDocTitle($doc)
return $title;
}

/**
*
* @return Zend_Form
*/
function createSortForm()
{
$params = SolrSearch_QueryHelpers::getParams();
$uri = SolrSearch_ViewHelpers::getBaseUrl();
require "Zend/Form/Element.php";

$form = new Zend_Form();
$form->setAction($uri);
$form->setMethod('get');
$form->setDecorators(array('FormElements',array('HtmlTag', array('tag' => 'div')),'Form',));

$query = new Zend_Form_Element_Hidden('solrq');
$query->setValue($params['q']);
$query->setDecorators(
array('ViewHelper',
array(array('data' => 'HtmlTag'),
array('tag' => 'span', 'class' => 'element')),
array('Label', array('tag' => 'span')),));
$form->addElement($query);

$facet = new Zend_Form_Element_Hidden('solrfacet');
$facet->setValue($params['facet']);
$facet->setDecorators(
array('ViewHelper',
array(array('data' => 'HtmlTag'),
array('tag' => 'span', 'class' => 'element')),
array('Label', array('tag' => 'span')),));
$form->addElement($facet);

$sortField = new Zend_Form_Element_Select('sort');
$sortField->setLabel('Sorted By:');

//get sortable fields
$db = get_db();
$sortableList = $db
->getTable('SolrSearch_Facet')
->findBySql('is_sortable = ?', array('1'));

//sortable fields
$fields = array();
$fields[''] = 'Relevancy';
foreach ($sortableList as $sortable) {
if ($sortable->element_id != NULL) {
$elements = $db
->getTable('Element')
->findBySql(
'element_set_id = ?',
array($sortable['element_set_id'])
);

foreach ($elements as $element) {
if ($element['name'] == $sortable['name']){
$fields[$element->id . '_s asc'] = $element->name
. ', Ascending';
$fields[$element->id . '_s desc'] = $element->name
. ', Descending';
}
}
} else {
$fields[$sortable->name . ' asc'] = ucwords($sortable->name)
. ', Ascending';
$fields[$sortable->name . ' desc'] = ucwords($sortable->name)
. ', Descending';
}
}

$sortField->setOptions(array('multiOptions'=>$fields));
$sortField->setDecorators(array('ViewHelper',
array(
array('data' => 'HtmlTag'),
array('tag' => 'span', 'class' => 'element')),
array('Label', array('tag' => 'span')),));

//select the current sorted option
$sort = isset($_REQUEST['sort']) ? $_REQUEST['sort'] : '';
$sortField->setValue($sort);
$form->addElement($sortField);

//Submit button
$form->addElement('submit','submit');
$submitElement=$form->getElement('submit');
$submitElement->setLabel('Go');
$submitElement->setDecorators(array(
'ViewHelper', array(
array('data' => 'HtmlTag'),
array('tag' => 'span', 'class' => 'element')),));


// Only return the form if there are sortable fields (other than
// relevancy).
if (count($fields) > 1) {
return $form;
} else {
return '';
}
}

/**
* Return the path for an image
*
Expand Down Expand Up @@ -346,17 +245,20 @@ public static function tagsToStrings($tags=array(), $delimiter=null)
if(!empty($tags)) {
$tagStrings = array();

foreach($tags as $key => $tag) {
$label = html_escape($tag);

if(isset($current['facet'])) {
$facetq = $current['facet'] . '+AND+tag:"' . $label .'"';
} else {
$facetq = 'tag:"' . $label .'"';
if (is_array($tags)) {
foreach($tags as $key => $tag) {
$tagStrings[$key] = SolrSearch_ViewHelpers::tagToString(
$uri, $current, $tag
);
}

$searchpath = $uri . '?sorlq=' . $current['q'] . '&solrfacet=' . htmlspecialchars($facetq, ENT_QUOTES);
$tagStrings[$key] = '<a href="' . $searchpath .'" reg="tag">' . $label . '</a>';
} else {
$parts = explode(',', $tags);
foreach ($parts as $tag) {
$tagStrings[$tag] = SolrSearch_ViewHelpers::tagToString(
$uri, $current, trim($tag)
);
}
}

$tagString = join(html_escape($delimiter), $tagStrings);
Expand All @@ -365,6 +267,33 @@ public static function tagsToStrings($tags=array(), $delimiter=null)
return $tagString;
}

/**
* This takes atag and returns a string containing the tab label wrapped in
* an A.
*
* @param string $uri The base URI for the links
* @param array $params The current set of search parameters.
* @param string $tag The tag to change to a wrapped string.
*
* @return string $a The A tag.
* @author Eric Rochester <erochest@virginia.edu>
**/
private static function tagToString($uri, $params, $tag)
{
$label = html_escape($tag);

if (isset($params['facet'])) {
$facetq = $params['facet'] . '+AND+tag:"' . $label .'"';
} else {
$facetq = 'tag:"' . $label .'"';
}

$searchpath = $uri . '?sorlq=' . $params['q'] . '&solrfacet=' . htmlspecialchars($facetq, ENT_QUOTES);
$a = '<a href="' . $searchpath .'" reg="tag">' . $label . '</a>';

return $a;
}

/**
* This creates and returns the configuration form.
*
Expand Down Expand Up @@ -409,7 +338,7 @@ public static function makeConfigFields($form=null) {
->addErrorMessage('Results count must be numeric');

$fields[] = SolrSearch_ViewHelpers::makeOptionField(
$form, 'solr_search_facet_sort', 'Default Sort Order:', false,
$form, 'solr_search_facet_sort', 'Facet Field Constraint Order:', false,
null, 'Zend_Form_Element_Select'
)
->addMultiOption('index', 'Alphabetical')
Expand Down
5 changes: 0 additions & 5 deletions models/SolrSearchFacet.php
Expand Up @@ -51,11 +51,6 @@ class SolrSearchFacet extends Omeka_Record
*/
public $is_displayed;

/**
* Sortable status [boolean/tinyint].
*/
public $is_sortable;


/**
* Get the parent element set.
Expand Down
2 changes: 0 additions & 2 deletions tests/unit/SolrSearchFacetTest.php
Expand Up @@ -42,7 +42,6 @@ public function testAttributeAccess()
$facet->name = 'name';
$facet->is_facet = 1;
$facet->is_displayed = 1;
$facet->is_sortable = 1;
$facet->save();

// Re-get the facet object.
Expand All @@ -54,7 +53,6 @@ public function testAttributeAccess()
$this->assertEquals($facet->name, 'name');
$this->assertEquals($facet->is_facet, 1);
$this->assertEquals($facet->is_displayed, 1);
$this->assertEquals($facet->is_sortable, 1);

}

Expand Down
3 changes: 1 addition & 2 deletions views/admin/config/index.php
Expand Up @@ -38,8 +38,7 @@
<?php browse_headings(array(
'Field' => null,
'Is Searchable' => null,
'Is Facet' => null,
'Is Sortable' => null
'Is Facet' => null
)); ?>
</tr>
</thead>
Expand Down
2 changes: 0 additions & 2 deletions views/shared/results/index.php
Expand Up @@ -25,8 +25,6 @@
<nav class="pagination">
<?php echo pagination_links(); ?>
</nav>
<div class="solr_sort_form"><?php echo SolrSearch_ViewHelpers::createSortForm(); ?></div>

</div>

<?php if(!empty($facets)): ?>
Expand Down

0 comments on commit a74b77c

Please sign in to comment.