summaryrefslogtreecommitdiffstats
path: root/source/Command/User/Delete.php
diff options
context:
space:
mode:
authorPhilip Nicolcev <frugen@gmail.com>2014-08-24 13:12:44 -0400
committerPhilip Nicolcev <frugen@gmail.com>2014-08-24 13:12:44 -0400
commitf5fe739314de24e3a9cb94b9c8c64e11ed9cc14c (patch)
treebe46c6120d6dc0d08a7112a8dc80840281cbad33 /source/Command/User/Delete.php
parent9ffeed7646620ae7de51b929a3b44f2cdffb677f (diff)
parent5d8755faf06fd2ff9d3977f103e641b0ba9f714e (diff)
downloadAJAX-Chat-origin/cli_testing.zip
AJAX-Chat-origin/cli_testing.tar.gz
AJAX-Chat-origin/cli_testing.tar.bz2
Merge pull request #178 from stevleibelt/masterorigin/cli_testing
Implemented Command Line Tools in cli_testing branch
Diffstat (limited to 'source/Command/User/Delete.php')
-rw-r--r--source/Command/User/Delete.php105
1 files changed, 105 insertions, 0 deletions
diff --git a/source/Command/User/Delete.php b/source/Command/User/Delete.php
new file mode 100644
index 0000000..aeed24a
--- /dev/null
+++ b/source/Command/User/Delete.php
@@ -0,0 +1,105 @@
+<?php
+/**
+ * @author stev leibelt <artodeto@bazzline.net>
+ * @since 2014-08-12
+ */
+
+/**
+ * Class Command_User_Delete
+ */
+class Command_User_Delete extends Command_User_AbstractCommand
+{
+ /**
+ * @var int
+ */
+ private $inputId;
+
+ /**
+ * @throws Exception
+ */
+ public function execute()
+ {
+ reset($this->users);
+
+ $lines = $this->file->read();
+ $content = array();
+
+ foreach ($lines as $line) {
+ if ($line == '$users[0][\'channels\'] = array(0);') {
+ $content[] = $line;
+ $content[] = '';
+ break;
+ } else {
+ $content[] = $line;
+ }
+ }
+
+ unset($this->users[0]);
+
+ if (empty($this->users)) {
+ throw new Exception(
+ 'nothing to delete'
+ );
+ } else {
+ unset($this->users[$this->inputId]);
+ $idToUser = array_values($this->users);
+
+ if (!empty($idToUser)) {
+ foreach ($idToUser as $id => $user) {
+ ++$id; //we have to increase by one since we have to prevent overwriting the "0" user
+ $content[] = '// updated - ' . date('Y-m-d H:i:s');
+ $content[] = '$users[' . $id . '] = array();';
+ $content[] = '$users[' . $id . '][\'userRole\'] = ' . $this->roles[$user['userRole']] . ';';
+ $content[] = '$users[' . $id . '][\'userName\'] = \'' . $user['userName'] . '\';';
+ $content[] = '$users[' . $id . '][\'password\'] = \'' . $user['password'] . '\';';
+ $content[] = '$users[' . $id . '][\'channels\'] = array(' . implode(',', $user['channels']) . ');';
+ }
+ }
+
+ $this->file->write($content);
+ }
+ }
+
+ /**
+ * @return array
+ */
+ public function getUsage()
+ {
+ $users = $this->users;
+ unset($users[0]);
+
+ return array(
+ 'userid=<id>',
+ ' available users: ' . implode(',', array_keys($users))
+ );
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function verify()
+ {
+ if ($this->input->getNumberOfArguments() !== 1) {
+ throw new Exception(
+ 'invalid number of arguments provided'
+ );
+ }
+
+ $validIds = array_keys($this->users);
+ $userId = $this->input->getParameterValue('user_id');
+
+ if (!isset($validIds[$userId])) {
+ throw new Exception(
+ 'invalid id "' . $userId . '" provided'
+ );
+ }
+
+ if ($userId === 0) {
+ throw new Exception(
+ 'you are not allowed to delete id "' . $userId . '"'
+ );
+ }
+
+ $this->inputId = $userId;
+ }
+}