aboutsummaryrefslogtreecommitdiff
path: root/h-source/Application/Controllers/HistoryController.php
diff options
context:
space:
mode:
authorYuchen Pei <hi@ypei.me>2021-10-14 15:16:42 +1100
committerYuchen Pei <hi@ypei.me>2021-10-14 15:16:42 +1100
commit07f5140771388c9e0c8a99b0dd2e5d950bdb173b (patch)
tree323c00faef1edc7dea2e88ff581cc2258b2b6432 /h-source/Application/Controllers/HistoryController.php
parente119be145500700f3c465e12664403a07530a421 (diff)
moving h-source subdir out.
Diffstat (limited to 'h-source/Application/Controllers/HistoryController.php')
-rw-r--r--h-source/Application/Controllers/HistoryController.php650
1 files changed, 0 insertions, 650 deletions
diff --git a/h-source/Application/Controllers/HistoryController.php b/h-source/Application/Controllers/HistoryController.php
deleted file mode 100644
index e50b7e1..0000000
--- a/h-source/Application/Controllers/HistoryController.php
+++ /dev/null
@@ -1,650 +0,0 @@
-<?php
-
-// h-source, a web software to build a community of people that want to share their hardware information.
-// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
-//
-// This file is part of h-source
-//
-// h-source is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// h-source is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with h-source. If not, see <http://www.gnu.org/licenses/>.
-
-if (!defined('EG')) die('Direct access not allowed!');
-
-class HistoryController extends BaseController
-{
-
- public static $typeTable = array(
- 'message' => 'message',
- 'talk' => 'talk',
- 'user' => 'user',
- 'issue' => 'issue',
- 'wiki_talk' => 'wiki talk',
- 'page' => 'wiki page',
- 'page_del' => 'wiki page',
- 'device' => 'device page',
- 'device_app' => 'device page',
- 'device_cl' => 'device page',
- 'issue_del' => 'issue', //registered
- 'issue_ins' => 'issue', //registered
- 'message_ins' => 'message', //registered
- 'talk_ins' => 'talk', //registered
- 'wiki_talk_ins' => 'wiki talk',//registered
- 'hardware' => 'hardware', //registered
- 'wiki' => 'wiki', //registered
- );
-
- public static $actionTable = array(
- 'hide' => 'hide',
- 'show' => 'show',
- 'block' => 'block',
- 'unblock' => 'unblock',
- 'open' => 'open',
- 'close' => 'close',
- 'pageblock' => 'block',
- 'pageunblock' => 'unblock',
- 'pagehide' => 'hide',
- 'pageshow' => 'show',
- 'devicehide' => 'hide',
- 'deviceshow' => 'show',
- 'deviceapprove' => 'approve',
- 'deviceclear' => 'perm deleted',
- 'issuehide' => 'hide',
- 'issueshow' => 'show',
- 'insert' => 'insert', //registered
- 'update' => 'update', //registered
- );
-
- protected $strings = array(
-
- 'hide' => array(
-
- 'action' => 'hide',
- 'check_status' => 'no',
- 'to_status' => 'yes',
- 'exec_string' => 'The message has been hidden. Just reload the page',
- 'error_string' => 'Error: the message is already hidden',
-
- ),
-
- 'show' => array(
-
- 'action' => 'show',
- 'check_status' => 'yes',
- 'to_status' => 'no',
- 'exec_string' => 'The message is no more hidden. Just reload the page',
- 'error_string' => 'Error: the message is already visible',
-
- ),
-
- 'block' => array(
-
- 'action' => 'block',
- 'check_status' => 'no',
- 'to_status' => 'yes',
- 'exec_string' => 'The user has been blocked. Just reload the page',
- 'error_string' => 'Error: the user is already blocked',
-
- ),
-
- 'unblock' => array(
-
- 'action' => 'unblock',
- 'check_status' => 'yes',
- 'to_status' => 'no',
- 'exec_string' => 'The user is no more blocked. Just reload the page',
- 'error_string' => 'Error: the user is already un-blocked',
-
- ),
-
- 'open' => array(
-
- 'action' => 'open',
- 'check_status' => 'closed',
- 'to_status' => 'opened',
- 'exec_string' => 'The issue has been opened. Just reload the page',
- 'error_string' => 'Error: the issue is already opened',
-
- ),
-
- 'close' => array(
-
- 'action' => 'close',
- 'check_status' => 'opened',
- 'to_status' => 'closed',
- 'exec_string' => 'The issue has been closed. Just reload the page',
- 'error_string' => 'Error: the issue is already closed',
-
- ),
-
- 'pageblock' => array(
-
- 'action' => 'pageblock',
- 'check_status' => 'no',
- 'to_status' => 'yes',
- 'exec_string' => 'The wiki page has been blocked. Just reload the page',
- 'error_string' => 'Error: the wiki page is already blocked',
-
- ),
-
- 'pageunblock' => array(
-
- 'action' => 'pageunblock',
- 'check_status' => 'yes',
- 'to_status' => 'no',
- 'exec_string' => 'The wiki page is no more blocked. Just reload the page',
- 'error_string' => 'Error: the wiki page is already un-blocked',
-
- ),
-
- 'pagehide' => array(
-
- 'action' => 'pagehide',
- 'check_status' => 'no',
- 'to_status' => 'yes',
- 'exec_string' => 'The wiki page has been hidden. Just reload the page',
- 'error_string' => 'Error: the wiki page is already hidden',
-
- ),
-
- 'pageshow' => array(
-
- 'action' => 'pageshow',
- 'check_status' => 'yes',
- 'to_status' => 'no',
- 'exec_string' => 'The wiki page is no more hidden. Just reload the page',
- 'error_string' => 'Error: the wiki page is already visible',
-
- ),
-
- 'issuehide' => array(
-
- 'action' => 'issuehide',
- 'check_status' => 'no',
- 'to_status' => 'yes',
- 'exec_string' => 'The issue has been hidden. Just reload the page',
- 'error_string' => 'Error: the issue is already hidden',
-
- ),
-
- 'issueshow' => array(
-
- 'action' => 'issueshow',
- 'check_status' => 'yes',
- 'to_status' => 'no',
- 'exec_string' => 'The issue is no more hidden. Just reload the page',
- 'error_string' => 'Error: the issue is already visible',
-
- ),
-
- 'devicehide' => array(
-
- 'action' => 'devicehide',
- 'check_status' => 'no',
- 'to_status' => 'yes',
- 'exec_string' => 'The device page has been hidden. Just reload the page',
- 'error_string' => 'Error: the device page is already hidden',
- 'allowed_only_if' => array('cleared'=>'no'),
-
- ),
-
- 'deviceshow' => array(
-
- 'action' => 'deviceshow',
- 'check_status' => 'yes',
- 'to_status' => 'no',
- 'exec_string' => 'The device page is no more hidden. Just reload the page',
- 'error_string' => 'Error: the device page is already visible',
- 'allowed_only_if' => array('cleared'=>'no'),
-
- ),
-
- 'deviceapprove' => array(
-
- 'action' => 'deviceapprove',
- 'check_status' => 'no',
- 'to_status' => 'yes',
- 'exec_string' => 'The device page has been approved. Just reload the page',
- 'error_string' => 'Error: the device page is already approved',
- 'allowed_only_if' => array('cleared'=>'no'),
-
- ),
-
- 'deviceclear' => array(
-
- 'action' => 'deviceclear',
- 'check_status' => 'no',
- 'to_status' => 'yes',
- 'exec_string' => 'The device page has been permanently deleted. Just reload the page',
- 'error_string' => 'Error: the device page has already been permanently deleted',
- 'method' => 'permanentlyDelete',
-
- ),
- );
-
- protected $types = array(
-
- 'message' => array(
-
- 'clean_type' => 'message',
- 'model_name' => 'MessagesModel',
- 'id_name' => 'id_mes',
- 'field_name' => 'deleted',
- 'actions' => array('hide','show'),
- 'group' => 'moderator',
-
- ),
-
- 'talk' => array(
-
- 'clean_type' => 'talk',
- 'model_name' => 'TalkModel',
- 'id_name' => 'id_talk',
- 'field_name' => 'deleted',
- 'actions' => array('hide','show'),
- 'group' => 'moderator',
-
- ),
-
- 'user' => array(
-
- 'clean_type' => 'user',
- 'model_name' => 'UsersModel',
- 'id_name' => 'id_user',
- 'field_name' => 'blocked',
- 'actions' => array('block','unblock'),
- 'group' => 'admin',
-
- ),
-
- 'issue' => array(
-
- 'clean_type' => 'issue',
- 'model_name' => 'IssuesModel',
- 'id_name' => 'id_issue',
- 'field_name' => 'status',
- 'actions' => array('open','close'),
- 'group' => 'moderator',
- 'types_to_show' => 'issue,issue_del',
-
- ),
-
- 'wiki_talk' => array(
-
- 'clean_type' => 'wiki_talk',
- 'model_name' => 'WikitalkModel',
- 'id_name' => 'id_talk',
- 'field_name' => 'deleted',
- 'actions' => array('hide','show'),
- 'group' => 'moderator',
-
- ),
-
- //page blocked or not
- 'page' => array(
-
- 'clean_type' => 'page',
- 'model_name' => 'WikiModel',
- 'id_name' => 'id_wiki',
- 'field_name' => 'blocked',
- 'actions' => array('pageblock','pageunblock'),
- 'group' => 'admin',
- 'types_to_show' => 'page,page_del',
-
- ),
-
- //page hidden or not
- 'page_del' => array(
-
- 'clean_type' => 'page_del',
- 'model_name' => 'WikiModel',
- 'id_name' => 'id_wiki',
- 'field_name' => '-deleted',
- 'actions' => array('pagehide','pageshow'),
- 'group' => 'admin',
-
- ),
-
- //issue hidden or not
- 'issue_del' => array(
-
- 'clean_type' => 'issue_del',
- 'model_name' => 'IssuesModel',
- 'id_name' => 'id_issue',
- 'field_name' => 'deleted',
- 'actions' => array('issuehide','issueshow'),
- 'group' => 'moderator',
-
- ),
-
- //device page blocked or not
- 'device' => array(
-
- 'clean_type' => 'device',
- 'model_name' => 'HardwareModel',
- 'id_name' => 'id_hard',
- 'field_name' => '-deleted',
- 'actions' => array('devicehide','deviceshow'),
- 'group' => 'admin',
- 'types_to_show' => 'device_app,device,device_cl',
-
- ),
-
- //device page approved
- 'device_app' => array(
-
- 'clean_type' => 'device_app',
- 'model_name' => 'HardwareModel',
- 'id_name' => 'id_hard',
- 'field_name' => 'approved',
- 'actions' => array('deviceapprove'),
- 'group' => 'admin',
-
- ),
-
- //device page cleared
- 'device_cl' => array(
-
- 'clean_type' => 'device_cl',
- 'model_name' => 'HardwareModel',
- 'id_name' => 'id_hard',
- 'field_name' => 'cleared',
- 'actions' => array('deviceclear'),
- 'group' => 'admin',
-
- ),
- );
-
- public function __construct($model, $controller, $queryString)
- {
- parent::__construct($model, $controller, $queryString);
-
- $this->model('HistoryModel');
- $this->model('UsersModel');
-
- }
-
- public function hide($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'hide');
- }
-
- public function show($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'show');
- }
-
- public function block($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'block');
- }
-
- public function unblock($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'unblock');
- }
-
- public function open($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'open');
- }
-
- public function close($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'close');
- }
-
- public function pageblock($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'pageblock');
- }
-
- public function pageunblock($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'pageunblock');
- }
-
- public function pagehide($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'pagehide');
- }
-
- public function pageshow($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'pageshow');
- }
-
- public function devicehide($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'devicehide');
- }
-
- public function deviceshow($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'deviceshow');
- }
-
- public function deviceapprove($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'deviceapprove');
- }
-
- public function deviceclear($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'deviceclear');
- }
-
- public function issuehide($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'issuehide');
- }
-
- public function issueshow($lang = 'en', $token = '')
- {
- $this->generic($lang, $token, 'issueshow');
- }
-
- protected function generic($lang = 'en', $token = '', $action = 'hide')
- {
- header('Content-type: text/html; charset=UTF-8');
-
- $this->shift(2);
-
- $this->clean();
-
- $clean['token'] = sanitizeAlphanum($token);
-
- if ($this->s['registered']->status['status'] === 'logged')
- {
- if (!$this->s['registered']->checkCsrf($clean['token'])) die("wrong token");
-
- if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) die("your account has been blocked");
-
- $clean['id_user'] = (int)$this->s['registered']->status['id_user'];
- $clean['id'] = $this->request->post('id',0,'forceInt');
- $type = $this->request->post('type','','sanitizeAll');
- $message = $this->request->post('message','');
-
- $modelName = 'error';
-
- if (array_key_exists($type,$this->types))
- {
- if (in_array($action,$this->types[$type]['actions']))
- {
- $clean['group'] = $this->types[$type]['group'];
- if (in_array($clean['group'],$this->s['registered']->status['groups']))
- {
- $modelName = $this->types[$type]['model_name'];
- $clean['type'] = $this->types[$type]['clean_type'];
- $clean['id_name'] = $this->types[$type]['id_name'];
- $clean['field_name'] = $this->types[$type]['field_name'];
-
- //load the right model
- $this->model($modelName);
- $model = $this->m[$modelName];
-
- $model->select()->where(array($clean['id_name'] => $clean['id'],$clean['field_name'] => $this->strings[$action]['check_status']));
-
- if (isset($this->strings[$action]['allowed_only_if']) and is_array($this->strings[$action]['allowed_only_if']))
- {
- $model->aWhere($this->strings[$action]['allowed_only_if']);
- }
-
- $count = $model->rowNumber();
-
- if ($count > 0)
- {
- if (eg_strlen($message) < 500)
- {
- //drop the - char if present
- $clean['field_name'] = str_replace('-',null,$clean['field_name']);
-
- //hide the message
- $model->values = array($clean['field_name'] => $this->strings[$action]['to_status']);
-
- if (isset($this->strings[$action]['method']))
- {
- call_user_func(array($model, $this->strings[$action]['method']),$clean['id']);
- }
- else
- {
- $model->pUpdate($clean['id']);
- }
-
- if ($model->queryResult)
- {
- $this->m['HistoryModel']->setFields('id:forceInt,type,message','sanitizeAll');
- $this->m['HistoryModel']->values['created_by'] = $clean['id_user'];
- $this->m['HistoryModel']->values['gr'] = $clean['group'];
- $this->m['HistoryModel']->values['action'] = $this->strings[$action]['action'];
- $this->m['HistoryModel']->updateTable('insert');
-
- echo $this->strings[$action]['exec_string'];
- }
- else
- {
- echo "error: one error occurred, please retry later";
- }
- }
- else
- {
- echo "error: the message has too many characters or wrong type";
- }
- }
- else
- {
- echo $this->strings[$action]['error_string'];
- }
- }
- }
- }
- }
- }
-
- public function viewall($lang = 'en', $type = 'message', $id = 0)
- {
- header('Content-type: text/html; charset=UTF-8');
-
- $this->shift(3);
-
- $this->clean();
-
- if ($this->s['registered']->status['status'] === 'logged')
- {
- if (!$this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user']))
- {
- $clean['id'] = (int)$id;
- if (array_key_exists($type,$this->types))
- {
- $clean['group'] = $this->types[$type]['group'];
- if (in_array($clean['group'],$this->s['registered']->status['groups']))
- {
- $clean['type'] = $this->types[$type]['clean_type'];
- $clean['typeInWhereClause'] = "'".$clean['type']."'";
-
- if (array_key_exists('types_to_show',$this->types[$type]))
- {
- $clean['typeInWhereClause'] = "'".implode("','",explode(',',$this->types[$type]['types_to_show']))."'";
- }
-
- switch ($clean['type'])
- {
- case 'user':
- $data['object'] = 'user';
- $data['box_class'] = 'details_of_actions_inner_user';
- break;
- case 'page':
- $data['object'] = 'wiki page';
- $data['box_class'] = 'details_of_actions_inner_user';
- break;
- case 'device':
- $data['object'] = 'device page';
- $data['box_class'] = 'details_of_actions_inner_user';
- break;
- case 'device_app':
- $data['object'] = 'device page';
- $data['box_class'] = 'details_of_actions_inner_user';
- break;
- case 'page_del':
- $data['object'] = 'wiki page';
- $data['box_class'] = 'details_of_actions_inner_user';
- break;
- case 'issue':
- $data['object'] = 'issue';
- $data['box_class'] = 'details_of_actions_inner_user';
- break;
- default:
- $data['object'] = 'message';
- $data['box_class'] = 'details_of_actions_inner';
- break;
- }
-
- $data['res'] = $this->m['HistoryModel']
- ->select()
- ->where(
- array
- (
- 'id'=>$clean['id'],
- 'type'=>"in(".$clean['typeInWhereClause'].")",
- 'gr'=>$clean['group'])
- )
- ->send();
-// echo $this->m['HistoryModel']->getQuery();
-
- $data['md_action'] = array(
- 'hide' => 'hidden',
- 'show' => 'restored',
- 'block' => 'blocked',
- 'unblock' => 'un-blocked',
- 'open' => 'opened again',
- 'close' => 'closed',
- 'pageblock' => 'blocked',
- 'pageunblock' => 'un-blocked',
- 'pagehide' => 'hidden',
- 'pageshow' => 'restored',
- 'devicehide' => 'hidden',
- 'deviceshow' => 'restored',
- 'deviceapprove' => 'approved',
- 'deviceclear' => 'permanently deleted',
- 'issuehide' => 'hidden',
- 'issueshow' => 'restored',
- );
-
- $this->append($data);
- $this->load('viewall');
- }
- }
- }
- }
- }
-
-} \ No newline at end of file