Skip to content
Snippets Groups Projects
Commit b83f4a72 authored by Demian Katz's avatar Demian Katz
Browse files

Implemented browse.

parent 3cfea548
Branches
Tags
No related merge requests found
...@@ -67,6 +67,7 @@ $config = array( ...@@ -67,6 +67,7 @@ $config = array(
'alphabrowse' => 'VuFind\Controller\AlphabrowseController', 'alphabrowse' => 'VuFind\Controller\AlphabrowseController',
'author' => 'VuFind\Controller\AuthorController', 'author' => 'VuFind\Controller\AuthorController',
'authority' => 'VuFind\Controller\AuthorityController', 'authority' => 'VuFind\Controller\AuthorityController',
'browse' => 'VuFind\Controller\BrowseController',
'cover' => 'VuFind\Controller\CoverController', 'cover' => 'VuFind\Controller\CoverController',
'error' => 'VuFind\Controller\ErrorController', 'error' => 'VuFind\Controller\ErrorController',
'index' => 'VuFind\Controller\IndexController', 'index' => 'VuFind\Controller\IndexController',
......
This diff is collapsed.
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
* @link http://vufind.org Main Site * @link http://vufind.org Main Site
*/ */
namespace VuFind\Db\Table; namespace VuFind\Db\Table;
use Zend\Db\Sql\Expression;
/** /**
* Table Definition for tags * Table Definition for tags
...@@ -79,13 +80,11 @@ class Tags extends Gateway ...@@ -79,13 +80,11 @@ class Tags extends Gateway
*/ */
public function matchText($text) public function matchText($text)
{ {
/* TODO $callback = function ($select) use ($text) {
$select = $this->select(); $select->where->literal('lower(tag) like lower(?)', array($text . '%'));
$select->where('lower(tag) LIKE lower(?)', $text . '%'); $select->order('tag');
$select->order('tag'); };
$result = $this->fetchAll($select); return $this->select($callback);
return $result->toArray();
*/
} }
/** /**
...@@ -118,18 +117,20 @@ class Tags extends Gateway ...@@ -118,18 +117,20 @@ class Tags extends Gateway
*/ */
public function getCount($tag_id) public function getCount($tag_id)
{ {
/* TODO $resourceTagTable = new ResourceTags();
$resourceTagTable = new VuFind_Model_Db_ResourceTags(); $callback = function ($select) use ($tag_id) {
$select = $resourceTagTable $select->columns(
->select() array(
->from( 'cnt' => new Expression(
array('resource_tags'), 'COUNT(DISTINCT(?))', array('resource_id'),
array('cnt' => 'COUNT(*)') array(Expression::TYPE_IDENTIFIER)
) )
->where('tag_id = ?', $tag_id); )
$count = $resourceTagTable->fetchRow($select); );
return $count['cnt']; $select->where->equalTo('tag_id', $tag_id);
*/ };
$count = $resourceTagTable->select($callback)->current();
return isset($count['cnt']) ? $count['cnt'] : 0;
} }
/** /**
...@@ -190,52 +191,57 @@ class Tags extends Gateway ...@@ -190,52 +191,57 @@ class Tags extends Gateway
* *
* @param string $sort Sort/search parameter * @param string $sort Sort/search parameter
* @param int $limit Maximum number of tags * @param int $limit Maximum number of tags
* @param string $extra_where Additional select parameters
* *
* @return array Tag details. * @return array Tag details.
*/ */
public function getTagList($sort, $limit = 100, $extra_where = '') public function getTagList($sort, $limit = 100)
{ {
/* TODO $callback = function($select) use ($sort, $limit) {
$tagList = array(); $select->columns(
$select = $this->select(); array(
$select->from( 'tag',
array('tags'), 'cnt' => new Expression(
array('tags.tag', 'COUNT(resource_tags.id) AS cnt') 'COUNT(DISTINCT(?))', array('resource_tags.resource_id'),
); array(Expression::TYPE_IDENTIFIER)
$select->join( ),
array('resource_tags'), 'posted' => new Expression(
'tags.id = resource_tags.tag_id', 'MAX(?)', array('resource_tags.posted'),
array() array(Expression::TYPE_IDENTIFIER)
); )
if (strlen($extra_where) > 0) { )
$select->where($extra_where);
}
$select->group('tags.tag');
switch ($sort) {
case 'alphabetical':
$select->order(array('tags.tag', 'cnt DESC'));
break;
case 'popularity':
$select->order(array('cnt DESC', 'tags.tag'));
break;
case 'recent':
$select->order(
array('max(resource_tags.posted) DESC', 'cnt DESC', 'tags.tag')
); );
break; $select->join(
} 'resource_tags', 'tags.id = resource_tags.tag_id', array()
// Limit the size of our results based on the ini browse limit setting );
$select->limit($limit); if (strlen($extra_where) > 0) {
$tags = $this->fetchAll($select); $select->where($extra_where);
foreach ($tags as $t) { }
$select->group('tags.tag');
switch ($sort) {
case 'alphabetical':
$select->order(array('tags.tag', 'cnt DESC'));
break;
case 'popularity':
$select->order(array('cnt DESC', 'tags.tag'));
break;
case 'recent':
$select->order(
array('posted DESC', 'cnt DESC', 'tags.tag')
);
break;
}
// Limit the size of our results based on the ini browse limit setting
//$select->limit($limit);
};
$tagList = array();
foreach ($this->select($callback) as $t) {
$tagList[] = array( $tagList[] = array(
'tag' => $t->tag, 'tag' => $t->tag,
'cnt' => $t->cnt 'cnt' => $t->cnt
); );
} }
return $tagList; return $tagList;
*/
} }
/** /**
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment