Sequenzia/app/controllers/AdminController.php
2013-10-26 18:06:58 -05:00

128 lines
3.8 KiB
PHP
Executable File

<?php
class AdminController extends ApplicationController
{
protected function init()
{
$this->layout('admin');
}
protected function filters()
{
return [
'before' => [
'admin_only'
]
];
}
public function index()
{
}
public function editUser()
{
if ($this->request()->isPost()) {
$this->user = User::find_by_name($this->params()->user['name']);
if (!$this->user) {
$this->notice('User not found');
$this->redirectTo('#edit_user');
return;
}
$this->user->level = $this->params()->user['level'];
if ($this->user->save()) {
$this->notice('User updated');
$this->redirectTo('#edit_user');
} else {
$this->render_error($this->user);
}
}
}
public function resetPassword()
{
if ($this->request()->isPost()) {
$user = User::find_by_name($this->params()->user['name']);
if ($user) {
$new_password = $user->reset_password();
$this->notice('Password reset to ' . $new_password);
if ($user->email) {
// try {
UserMailer::mail('new_password', [$user, $new_password])->deliver();
// } catch (\Exception $e) {
// $this->respond_to_success("Specified user's email address was invalid",
// ['#reset_password'], ['api' => ['result' => 'invalid-email']]);
// return;
// }
}
} else {
$this->notice('That account does not exist');
$this->redirectTo('#reset_password');
}
} else {
$this->user = new User();
}
}
public function cacheStats()
{
$keys = [];
foreach([0, 20, 30, 35, 40, 50] as $level) {
$keys[] = "stats/count/level=" . $level;
foreach([0, 1, 2, 3, 4, 5] as $tag_count) {
$keys[] = "stats/tags/level=" . $level . "&tags=" . $tag_count;
}
$keys[] = "stats/page/level=${level}&page=0-10";
$keys[] = "stats/page/level=${level}&page=10-20";
$keys[] = "stats/page/level=${level}&page=20+";
}
$h = [];
foreach ($keys as $k) {
$h[$k] = Rails::cache()->reach($k);
}
$this->post_stats = $h;
}
public function resetPostStats()
{
$keys = [];
foreach([0, 20, 30, 35, 40, 50] as $level) {
$keys[] = "stats/count/level=" . $level;
foreach([0, 1, 2, 3, 4, 5] as $tag_count) {
$keys[] = "stats/tags/level=" . $level . "&tags=" . $tag_count;
}
$keys[] = "stats/page/level=${level}&page=0-10";
$keys[] = "stats/page/level=${level}&page=10-20";
$keys[] = "stats/page/level=${level}&page=20+";
}
foreach ($keys as $key) {
Rails::cache()->write($key, 0);
}
$this->redirectTo('#cache_stats');
}
public function recalculateTagCount()
{
Tag::recalculate_post_count();
$this->notice('Tags count recalculated');
$this->redirectTo('#index');
}
public function purgeTags()
{
Tag::purge_tags();
$this->notice('Tags purged');
$this->redirectTo('#index');
}
}