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

Added new admin module action to display statistics on usage of social features.

parent 85fb7093
No related merge requests found
......@@ -576,8 +576,8 @@ $listRoutes = array('userList' => 'MyList', 'editList' => 'EditList');
// Define static routes -- Controller/Action strings
$staticRoutes = array(
'Admin/Config', 'Admin/DeleteExpiredSearches', 'Admin/EnableAutoConfig',
'Admin/Home', 'Admin/Maintenance', 'Admin/Statistics', 'Alphabrowse/Home',
'Author/Home', 'Author/Search',
'Admin/Home', 'Admin/Maintenance', 'Admin/SocialStats', 'Admin/Statistics',
'Alphabrowse/Home', 'Author/Home', 'Author/Search',
'Authority/Home', 'Authority/Record', 'Authority/Search',
'Browse/Author', 'Browse/Dewey', 'Browse/Era', 'Browse/Genre', 'Browse/Home',
'Browse/LCC', 'Browse/Region', 'Browse/Tag', 'Browse/Topic',
......
......@@ -139,6 +139,20 @@ class AdminController extends AbstractBase
return $view;
}
/**
* Social statistics reporting
*
* @return \Zend\View\Model\ViewModel
*/
public function socialstatsAction()
{
$view = $this->createViewModel();
$view->comments = $this->getTable('comments')->getStatistics();
$view->favorites = $this->getTable('userresource')->getStatistics();
$view->tags = $this->getTable('resourcetags')->getStatistics();
return $view;
}
/**
* Statistics reporting
*
......
......@@ -26,6 +26,7 @@
* @link http://vufind.org Main Site
*/
namespace VuFind\Db\Table;
use Zend\Db\Sql\Expression;
/**
* Table Definition for comments
......@@ -105,4 +106,30 @@ class Comments extends Gateway
$row->delete();
return true;
}
/**
* Get statistics on use of comments.
*
* @return array
*/
public function getStatistics()
{
$select = $this->sql->select();
$select->columns(
array(
'users' => new Expression(
'COUNT(DISTINCT(?))', array('user_id'),
array(Expression::TYPE_IDENTIFIER)
),
'resources' => new Expression(
'COUNT(DISTINCT(?))', array('resource_id'),
array(Expression::TYPE_IDENTIFIER)
),
'total' => new Expression('COUNT(*)')
)
);
$statement = $this->sql->prepareStatementForSqlObject($select);
$result = $statement->execute();
return (array)$result->current();
}
}
......@@ -158,6 +158,32 @@ class ResourceTags extends Gateway
return $this->select($callback);
}
/**
* Get statistics on use of tags.
*
* @return array
*/
public function getStatistics()
{
$select = $this->sql->select();
$select->columns(
array(
'users' => new Expression(
'COUNT(DISTINCT(?))', array('user_id'),
array(Expression::TYPE_IDENTIFIER)
),
'resources' => new Expression(
'COUNT(DISTINCT(?))', array('resource_id'),
array(Expression::TYPE_IDENTIFIER)
),
'total' => new Expression('COUNT(*)')
)
);
$statement = $this->sql->prepareStatementForSqlObject($select);
$result = $statement->execute();
return (array)$result->current();
}
/**
* Unlink rows for the specified resource.
*
......
......@@ -163,4 +163,34 @@ class UserResource extends Gateway
// Delete the rows:
$this->delete($callback);
}
/**
* Get statistics on use of lists.
*
* @return array
*/
public function getStatistics()
{
$select = $this->sql->select();
$select->columns(
array(
'users' => new Expression(
'COUNT(DISTINCT(?))', array('user_id'),
array(Expression::TYPE_IDENTIFIER)
),
'lists' => new Expression(
'COUNT(DISTINCT(?))', array('list_id'),
array(Expression::TYPE_IDENTIFIER)
),
'resources' => new Expression(
'COUNT(DISTINCT(?))', array('resource_id'),
array(Expression::TYPE_IDENTIFIER)
),
'total' => new Expression('COUNT(*)')
)
);
$statement = $this->sql->prepareStatementForSqlObject($select);
$result = $statement->execute();
return (array)$result->current();
}
}
<ul id="list1">
<li<?=ucwords($this->layout()->templateName) == "Home" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-home')?>"><?=$this->transEsc('Home')?></a></li>
<li<?=ucwords($this->layout()->templateName) == "Statistics" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-statistics')?>"><?=$this->transEsc('Statistics')?></a></li>
<li<?=ucwords($this->layout()->templateName) == "Config" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-config')?>"><?=$this->transEsc('Configuration')?></a>
<li<?=ucwords($this->layout()->templateName) == "Maintenance" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-maintenance')?>"><?=$this->transEsc('System Maintenance')?></a></li>
<li<?=strtolower($this->layout()->templateName) == "home" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-home')?>"><?=$this->transEsc('Home')?></a></li>
<li<?=strtolower($this->layout()->templateName) == "socialstats" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-socialstats')?>"><?=$this->transEsc('Social Statistics')?></a></li>
<li<?=strtolower($this->layout()->templateName) == "statistics" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-statistics')?>"><?=$this->transEsc('Statistics')?></a></li>
<li<?=strtolower($this->layout()->templateName) == "config" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-config')?>"><?=$this->transEsc('Configuration')?></a>
<li<?=strtolower($this->layout()->templateName) == "maintenance" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-maintenance')?>"><?=$this->transEsc('System Maintenance')?></a></li>
</ul>
<?
// Set page title.
$this->headTitle($this->translate('VuFind Administration - Social Statistics'));
?>
<div class="span-5">
<?=$this->render("admin/menu.phtml")?>
</div>
<div class="span-18 last">
<h1><?=$this->transEsc('Social Statistics')?></h1>
<h2>Comments</h2>
<table>
<tr><th>Total Users</th><th>Total Resources</th><th>Total Comments</th></tr>
<tr><td><?=$comments['users']?></td><td><?=$comments['resources']?></td><td><?=$comments['total']?></td></tr>
</table>
<h2>Favorites</h2>
<table>
<tr><th>Total Users</th><th>Total Resources</th><th>Total Lists</th><th>Total Saved Items</th></tr>
<tr><td><?=$favorites['users']?></td><td><?=$favorites['resources']?></td><td><?=$favorites['lists']?></td><td><?=$favorites['total']?></td></tr>
</table>
<h2>Tags</h2>
<table>
<tr><th>Total Users</th><th>Total Resources</th><th>Total Tags</th></tr>
<tr><td><?=$tags['users']?></td><td><?=$tags['resources']?></td><td><?=$tags['total']?></td></tr>
</table>
</div>
<div class="clear"></div>
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