summaryrefslogtreecommitdiffstats
path: root/source/Command/User/Delete.php
diff options
context:
space:
mode:
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;
+ }
+}