diff options
author | Philip Nicolcev <frugen@gmail.com> | 2014-08-24 13:12:44 -0400 |
---|---|---|
committer | Philip Nicolcev <frugen@gmail.com> | 2014-08-24 13:12:44 -0400 |
commit | f5fe739314de24e3a9cb94b9c8c64e11ed9cc14c (patch) | |
tree | be46c6120d6dc0d08a7112a8dc80840281cbad33 /source/Command/Channel/Edit.php | |
parent | 9ffeed7646620ae7de51b929a3b44f2cdffb677f (diff) | |
parent | 5d8755faf06fd2ff9d3977f103e641b0ba9f714e (diff) | |
download | AJAX-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/Channel/Edit.php')
-rw-r--r-- | source/Command/Channel/Edit.php | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/source/Command/Channel/Edit.php b/source/Command/Channel/Edit.php new file mode 100644 index 0000000..fc852b6 --- /dev/null +++ b/source/Command/Channel/Edit.php @@ -0,0 +1,102 @@ +<?php +/** + * @author stev leibelt <artodeto@bazzline.net> + * @since 2014-08-14 + */ + +/** + * Class Command_Channel_Edit + */ +class Command_Channel_Edit extends Command_Channel_AbstractCommand +{ + /** + * @var string + */ + private $inputName; + + /** + * @var int + */ + private $inputId; + + /** + * @throws Exception + */ + public function execute() + { + reset($this->channels); + + $lines = $this->file->read(); + $content = array(); + $contentAfterCurrentChannel = array(); + $string = new String(); + + $foundCurrentChannelLine = false; + $linePrefixToSearchFor = '$channels[' . $this->inputId . ']'; + + foreach ($lines as $line) { + if ($string->startsWith($line, $linePrefixToSearchFor)) { + $foundCurrentChannelLine = true; + } else { + if ($foundCurrentChannelLine) { + $contentAfterCurrentChannel[] = $line; + } else { + $content[] = $line; + } + } + } + + $content[] = '$channels[' . $this->inputId . '] = \'' . $this->inputName . '\';'; + + foreach ($contentAfterCurrentChannel as $line) { + $content[] = $line; + } + + $this->file->write($content); + } + + /** + * @return array + */ + public function getUsage() + { + return array( + 'id=<id> name="<name>"', + ' available channels: ' . implode(',', array_keys($this->channels)) + ); + } + + /** + * @throws Exception + */ + public function verify() + { + if ($this->input->getNumberOfArguments() !== 2) { + throw new Exception( + 'invalid number of arguments provided' + ); + } + + $name = $this->input->getParameterValue('name'); + $id = $this->input->getParameterValue('id'); + + if (is_null($name)) { + throw new Exception( + 'no name provided' + ); + } + + if (is_null($id)) { + throw new Exception( + 'no id provided' + ); + } else if (!isset($this->channels[$id])) { + throw new Exception( + 'invalid id provided' + ); + } + + $this->inputName = $name; + $this->inputId = $id; + } +}
\ No newline at end of file |