diff --git a/index.php b/index.php index 0c15ad2e..d5ed0ae4 100644 --- a/index.php +++ b/index.php @@ -7,7 +7,7 @@ * @link http://sebsauvage.net/wiki/doku.php?id=php:zerobin * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @license http://www.opensource.org/licenses/zlib-license.php The zlib/libpng License - * @version 0.21 + * @version 0.21.1 */ // change this, if your php files and data is outside of your webservers document root diff --git a/lib/configuration.php b/lib/configuration.php new file mode 100644 index 00000000..d65f5df8 --- /dev/null +++ b/lib/configuration.php @@ -0,0 +1,191 @@ + array( + 'discussion' => true, + 'opendiscussion' => false, + 'password' => true, + 'fileupload' => false, + 'burnafterreadingselected' => false, + 'defaultformatter' => 'plaintext', + 'syntaxhighlightingtheme' => null, + 'sizelimit' => 2097152, + 'template' => 'bootstrap', + 'notice' => '', + 'base64version' => '2.1.9', + 'languageselection' => false, + ), + 'expire' => array( + 'default' => '1week', + ), + 'expire_options' => array( + '5min' => 300, + '10min' => 600, + '1hour' => 3600, + '1day' => 86400, + '1week' => 604800, + '1month' => 2592000, + '1year' => 31536000, + 'never' => 0, + ), + 'formatter_options' => array( + 'plaintext' => 'Plain Text', + 'syntaxhighlighting' => 'Source Code', + 'markdown' => 'Markdown', + ), + 'traffic' => array( + 'limit' => 10, + 'header' => null, + 'dir' => 'data', + ), + 'model' => array( + 'class' => 'zerobin_data', + ), + 'model_options' => array( + 'dir' => 'data', + ), + ); + + /** + * parse configuration file and ensure default configuration values are present + * + * @throws Exception + */ + public function __construct() + { + $config = parse_ini_file(PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini', true); + foreach (array('main', 'model') as $section) { + if (!array_key_exists($section, $config)) { + throw new Exception(i18n::_('ZeroBin requires configuration section [%s] to be present in configuration file.', $section), 2); + } + } + foreach ($this->_defaults as $section => $values) + { + if (!array_key_exists($section, $config)) + { + $this->_configuration[$section] = $this->_defaults[$section]; + if (array_key_exists('dir', $this->_configuration[$section])) + { + $this->_configuration[$section]['dir'] = PATH . $this->_configuration[$section]['dir']; + } + continue; + } + foreach ($values as $key => $val) + { + if ($key == 'dir') + { + $val = PATH . $val; + } + $result = $val; + if (array_key_exists($key, $config[$section])) + { + if ($val === null) + { + $result = $config[$section][$key]; + } + elseif (is_bool($val)) + { + $val = strtolower($config[$section][$key]); + if (in_array($val, array('true', 'yes', 'on'))) + { + $result = true; + } + elseif (in_array($val, array('false', 'no', 'off'))) + { + $result = false; + } + else + { + $result = (bool) $config[$section][$key]; + } + } + elseif (is_int($val)) + { + $result = (int) $config[$section][$key]; + } + elseif (is_string($val) && !empty($config[$section][$key])) + { + $result = (string) $config[$section][$key]; + } + } + $this->_configuration[$section][$key] = $result; + } + } + } + + /** + * get configuration as array + * + * return array + */ + public function get() + { + return $this->_configuration; + } + + + /** + * get a key from the configuration, typically the main section or all keys + * + * @param string $key + * @param string $section defaults to main + * @throws Exception + * return mixed + */ + public function getKey($key, $section = 'main') + { + $options = $this->getSection($section); + if (!array_key_exists($key, $options)) + { + throw new Exception(i18n::_('Invalid data.') . " $section / $key", 4); + } + return $this->_configuration[$section][$key]; + } + + + /** + * get a key from the configuration, typically the main section or all keys + * + * @param string $key if empty, return all configuration options + * @param string $section defaults to main + * @throws Exception + * return mixed + */ + public function getSection($section) + { + if (!array_key_exists($section, $this->_configuration)) + { + throw new Exception(i18n::_('ZeroBin requires configuration section [%s] to be present in configuration file.', $section), 3); + } + return $this->_configuration[$section]; + } +} diff --git a/lib/zerobin.php b/lib/zerobin.php index ff78b723..8ab3f95f 100644 --- a/lib/zerobin.php +++ b/lib/zerobin.php @@ -32,14 +32,12 @@ class zerobin const GENERIC_ERROR = 'Paste does not exist, has expired or has been deleted.'; /** - * configuration array + * configuration * * @access private - * @var array + * @var configuration */ - private $_conf = array( - 'model' => 'zerobin_data', - ); + private $_conf; /** * data @@ -164,13 +162,8 @@ class zerobin ); } - $this->_conf = parse_ini_file(PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini', true); - foreach (array('main', 'model') as $section) { - if (!array_key_exists($section, $this->_conf)) { - throw new Exception(i18n::_('ZeroBin requires configuration section [%s] to be present in configuration file.', $section), 2); - } - } - $this->_model = $this->_conf['model']['class']; + $this->_conf = new configuration; + $this->_model = $this->_conf->getKey('class', 'model'); } /** @@ -185,7 +178,7 @@ class zerobin if(is_string($this->_model)) { $this->_model = forward_static_call( array($this->_model, 'getInstance'), - $this->_conf['model_options'] + $this->_conf->getSection('model_options') ); } return $this->_model; @@ -222,12 +215,12 @@ class zerobin $attachmentname = $has_attachmentname ? $_POST['attachmentname'] : ''; // Make sure last paste from the IP address was more than X seconds ago. - trafficlimiter::setLimit($this->_conf['traffic']['limit']); - trafficlimiter::setPath($this->_conf['traffic']['dir']); + trafficlimiter::setLimit($this->_conf->getKey('limit', 'traffic')); + trafficlimiter::setPath($this->_conf->getKey('dir', 'traffic')); $ipKey = 'REMOTE_ADDR'; - if (array_key_exists('header', $this->_conf['traffic'])) + if (($option = $this->_conf->getKey('header', 'traffic')) !== null) { - $header = 'HTTP_' . $this->_conf['traffic']['header']; + $header = 'HTTP_' . $option; if (array_key_exists($header, $_SERVER) && !empty($_SERVER[$header])) { $ipKey = $header; @@ -237,12 +230,12 @@ class zerobin 1, i18n::_( 'Please wait %d seconds between each post.', - $this->_conf['traffic']['limit'] + $this->_conf->getKey('limit', 'traffic') ) ); // Make sure content is not too big. - $sizelimit = (int) $this->_getMainConfig('sizelimit', 2097152); + $sizelimit = $this->_conf->getKey('sizelimit'); if ( strlen($data) + strlen($attachment) + strlen($attachmentname) > $sizelimit ) return $this->_return_message( @@ -260,7 +253,7 @@ class zerobin if($has_attachment) { if ( - !$this->_getMainConfig('fileupload', false) || + !$this->_conf->getKey('fileupload') || !sjcl::isValid($attachment) || !($has_attachmentname && sjcl::isValid($attachmentname)) ) return $this->_return_message(1, 'Invalid attachment.'); @@ -273,13 +266,14 @@ class zerobin if (array_key_exists('expire', $_POST) && !empty($_POST['expire'])) { $selected_expire = (string) $_POST['expire']; - if (array_key_exists($selected_expire, $this->_conf['expire_options'])) + $expire_options = $this->_conf->getSection('expire_options'); + if (array_key_exists($selected_expire, $expire_options)) { - $expire = $this->_conf['expire_options'][$selected_expire]; + $expire = $expire_options[$selected_expire]; } else { - $expire = $this->_conf['expire_options'][$this->_conf['expire']['default']]; + $expire = $this->_conf->getKey($this->_conf->getKey('default', 'expire'), 'expire_options'); } if ($expire > 0) $meta['expire_date'] = time() + $expire; } @@ -297,7 +291,7 @@ class zerobin // Read open discussion flag. if ( - $this->_getMainConfig('discussion', true) && + $this->_conf->getKey('discussion') && array_key_exists('opendiscussion', $_POST) && !empty($_POST['opendiscussion']) ) @@ -314,9 +308,9 @@ class zerobin if (array_key_exists('formatter', $_POST) && !empty($_POST['formatter'])) { $formatter = $_POST['formatter']; - if (!array_key_exists($formatter, $this->_conf['formatter_options'])) + if (!array_key_exists($formatter, $this->_conf->getSection('formatter_options'))) { - $formatter = $this->_getMainConfig('defaultformatter', 'plaintext'); + $formatter = $this->_conf->getKey('defaultformatter'); } $meta['formatter'] = $formatter; } @@ -488,7 +482,7 @@ class zerobin } // Make sure token is valid. - serversalt::setPath($this->_conf['traffic']['dir']); + serversalt::setPath($this->_conf->getKey('dir', 'traffic')); if (!filter::slow_equals($deletetoken, hash_hmac('sha1', $dataid, serversalt::get()))) { $this->_error = 'Wrong deletion token. Paste was not deleted.'; @@ -571,7 +565,7 @@ class zerobin } else { - $paste->meta->formatter = $this->_getMainConfig('defaultformatter', 'plaintext'); + $paste->meta->formatter = $this->_conf->getKey('defaultformatter'); } } @@ -613,17 +607,17 @@ class zerobin // label all the expiration options $expire = array(); - foreach ($this->_conf['expire_options'] as $time => $seconds) + foreach ($this->_conf->getSection('expire_options') as $time => $seconds) { $expire[$time] = ($seconds == 0) ? i18n::_(ucfirst($time)): filter::time_humanreadable($time); } // translate all the formatter options - $formatters = array_map(array('i18n', 'translate'), $this->_conf['formatter_options']); + $formatters = array_map(array('i18n', 'translate'), $this->_conf->getSection('formatter_options')); // set language cookie if that functionality was enabled $languageselection = ''; - if ($this->_getMainConfig('languageselection', false)) + if ($this->_conf->getKey('languageselection')) { $languageselection = i18n::getLanguage(); setcookie('lang', $languageselection); @@ -636,38 +630,23 @@ class zerobin $page->assign('ERROR', i18n::_($this->_error)); $page->assign('STATUS', i18n::_($this->_status)); $page->assign('VERSION', self::VERSION); - $page->assign('DISCUSSION', $this->_getMainConfig('discussion', true)); - $page->assign('OPENDISCUSSION', $this->_getMainConfig('opendiscussion', true)); + $page->assign('DISCUSSION', $this->_conf->getKey('discussion')); + $page->assign('OPENDISCUSSION', $this->_conf->getKey('opendiscussion')); $page->assign('MARKDOWN', array_key_exists('markdown', $formatters)); $page->assign('SYNTAXHIGHLIGHTING', array_key_exists('syntaxhighlighting', $formatters)); - $page->assign('SYNTAXHIGHLIGHTINGTHEME', $this->_getMainConfig('syntaxhighlightingtheme', '')); + $page->assign('SYNTAXHIGHLIGHTINGTHEME', $this->_conf->getKey('syntaxhighlightingtheme')); $page->assign('FORMATTER', $formatters); - $page->assign('FORMATTERDEFAULT', $this->_getMainConfig('defaultformatter', 'plaintext')); - $page->assign('NOTICE', i18n::_($this->_getMainConfig('notice', ''))); - $page->assign('BURNAFTERREADINGSELECTED', $this->_getMainConfig('burnafterreadingselected', false)); - $page->assign('PASSWORD', $this->_getMainConfig('password', true)); - $page->assign('FILEUPLOAD', $this->_getMainConfig('fileupload', false)); - $page->assign('BASE64JSVERSION', $this->_getMainConfig('base64version', '2.1.9')); + $page->assign('FORMATTERDEFAULT', $this->_conf->getKey('defaultformatter')); + $page->assign('NOTICE', i18n::_($this->_conf->getKey('notice'))); + $page->assign('BURNAFTERREADINGSELECTED', $this->_conf->getKey('burnafterreadingselected')); + $page->assign('PASSWORD', $this->_conf->getKey('password')); + $page->assign('FILEUPLOAD', $this->_conf->getKey('fileupload')); + $page->assign('BASE64JSVERSION', $this->_conf->getKey('base64version')); $page->assign('LANGUAGESELECTION', $languageselection); $page->assign('LANGUAGES', i18n::getLanguageLabels(i18n::getAvailableLanguages())); $page->assign('EXPIRE', $expire); - $page->assign('EXPIREDEFAULT', $this->_conf['expire']['default']); - $page->draw($this->_getMainConfig('template', 'page')); - } - - /** - * get configuration option from [main] section, optionally set a default - * - * @access private - * @param string $option - * @param mixed $default (optional) - * @return mixed - */ - private function _getMainConfig($option, $default = false) - { - return array_key_exists($option, $this->_conf['main']) ? - $this->_conf['main'][$option] : - $default; + $page->assign('EXPIREDEFAULT', $this->_conf->getKey('default', 'expire')); + $page->draw($this->_conf->getKey('template')); } /** diff --git a/tst/bootstrap.php b/tst/bootstrap.php index ba6336a5..5f635cbb 100644 --- a/tst/bootstrap.php +++ b/tst/bootstrap.php @@ -3,6 +3,7 @@ error_reporting( E_ALL | E_STRICT ); // change this, if your php files and data is outside of your webservers document root if (!defined('PATH')) define('PATH', '..' . DIRECTORY_SEPARATOR); +if (!defined('CONF')) define('CONF', PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini'); if (!defined('PUBLIC_PATH')) define('PUBLIC_PATH', '..'); require PATH . 'lib/auto.php'; @@ -63,7 +64,6 @@ class helper return self::$pasteid; } - /** * get example paste * @@ -76,7 +76,6 @@ class helper return $example; } - /** * get example paste ID * @@ -87,7 +86,6 @@ class helper return self::$commentid; } - /** * get example comment * @@ -127,6 +125,28 @@ class helper } } + /** + * create a backup of the config file + * + * @return void + */ + public static function confBackup() + { + if (!is_file(CONF . '.bak') && is_file(CONF)) + rename(CONF, CONF . '.bak'); + } + + /** + * restor backup of the config file + * + * @return void + */ + public static function confRestore() + { + if (is_file(CONF . '.bak')) + rename(CONF . '.bak', CONF); + } + /** * create ini file * diff --git a/tst/configGenerator.php b/tst/configGenerator.php index d2f6358a..a9a06a99 100755 --- a/tst/configGenerator.php +++ b/tst/configGenerator.php @@ -589,7 +589,7 @@ class configurationTestGenerator return <<<'EOT' _conf = PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini'; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); + helper::confBackup(); $this->_model = zerobin_data::getInstance(array('dir' => PATH . 'data')); serversalt::setPath(PATH . 'data'); @@ -612,7 +610,7 @@ class configurationTest extends PHPUnit_Framework_TestCase public function tearDown() { /* Tear Down Routine */ - rename($this->_conf . '.bak', $this->_conf); + helper::confRestore(); } public function reset($configuration = array()) @@ -622,7 +620,7 @@ class configurationTest extends PHPUnit_Framework_TestCase $_SERVER = array(); if ($this->_model->exists(helper::getPasteId())) $this->_model->delete(helper::getPasteId()); - helper::createIniFile($this->_conf, $configuration); + helper::createIniFile(CONF, $configuration); } diff --git a/tst/zerobin.php b/tst/zerobin.php index f3283ed9..4a11ac73 100644 --- a/tst/zerobin.php +++ b/tst/zerobin.php @@ -1,8 +1,6 @@ _model = zerobin_data::getInstance(array('dir' => PATH . 'data')); serversalt::setPath(PATH . 'data'); - $this->_conf = PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini'; $this->reset(); } @@ -26,8 +23,7 @@ class zerobinTest extends PHPUnit_Framework_TestCase $_SERVER = array(); if ($this->_model->exists(helper::getPasteId())) $this->_model->delete(helper::getPasteId()); - if (is_file($this->_conf . '.bak')) - rename($this->_conf . '.bak', $this->_conf); + helper::confRestore(); } /** @@ -55,11 +51,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testViewLanguageSelection() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['main']['languageselection'] = true; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_COOKIE['lang'] = 'de'; ob_start(); new zerobin; @@ -104,9 +99,8 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testConf() { $this->reset(); - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - file_put_contents($this->_conf, ''); + helper::confBackup(); + file_put_contents(CONF, ''); ob_start(); new zerobin; $content = ob_get_contents(); @@ -155,12 +149,11 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateInvalidSize() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['main']['sizelimit'] = 10; $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getPaste(); $_SERVER['REMOTE_ADDR'] = '::1'; ob_start(); @@ -177,11 +170,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateProxyHeader() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['header'] = 'X_FORWARDED_FOR'; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getPaste(); $_SERVER['HTTP_X_FORWARDED_FOR'] = '::1'; ob_start(); @@ -198,11 +190,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateDuplicateId() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $this->_model->create(helper::getPasteId(), helper::getPaste()); $_POST = helper::getPaste(); $_SERVER['REMOTE_ADDR'] = '::1'; @@ -220,11 +211,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateValidExpire() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getPaste(); $_POST['expire'] = '5min'; $_POST['formatter'] = 'foo'; @@ -248,11 +238,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateInvalidExpire() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getPaste(); $_POST['expire'] = 'foo'; $_SERVER['REMOTE_ADDR'] = '::1'; @@ -275,11 +264,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateInvalidBurn() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getPaste(); $_POST['burnafterreading'] = 'neither 1 nor 0'; $_SERVER['REMOTE_ADDR'] = '::1'; @@ -297,11 +285,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateInvalidOpenDiscussion() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getPaste(); $_POST['opendiscussion'] = 'neither 1 nor 0'; $_SERVER['REMOTE_ADDR'] = '::1'; @@ -319,13 +306,14 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateAttachment() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; $options['main']['fileupload'] = true; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getPaste(); + $_POST['attachment'] = $_POST['meta']['attachment']; + $_POST['attachmentname'] = $_POST['meta']['attachmentname']; $_SERVER['REMOTE_ADDR'] = '::1'; ob_start(); new zerobin; @@ -346,11 +334,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateValidNick() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getPaste(); $_POST['nickname'] = helper::getComment()['meta']['nickname']; $_SERVER['REMOTE_ADDR'] = '::1'; @@ -373,11 +360,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateInvalidNick() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getPaste(); $_POST['nickname'] = 'foo'; $_SERVER['REMOTE_ADDR'] = '::1'; @@ -395,11 +381,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateComment() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getComment(); $_POST['pasteid'] = helper::getPasteId(); $_POST['parentid'] = helper::getPasteId(); @@ -419,11 +404,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateInvalidComment() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getComment(); $_POST['pasteid'] = helper::getPasteId(); $_POST['parentid'] = 'foo'; @@ -443,11 +427,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateCommentDiscussionDisabled() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getComment(); $_POST['pasteid'] = helper::getPasteId(); $_POST['parentid'] = helper::getPasteId(); @@ -468,11 +451,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateCommentInvalidPaste() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $_POST = helper::getComment(); $_POST['pasteid'] = helper::getPasteId(); $_POST['parentid'] = helper::getPasteId(); @@ -491,11 +473,10 @@ class zerobinTest extends PHPUnit_Framework_TestCase public function testCreateDuplicateComment() { $this->reset(); - $options = parse_ini_file($this->_conf, true); + $options = parse_ini_file(CONF, true); $options['traffic']['limit'] = 0; - if (!is_file($this->_conf . '.bak') && is_file($this->_conf)) - rename($this->_conf, $this->_conf . '.bak'); - helper::createIniFile($this->_conf, $options); + helper::confBackup(); + helper::createIniFile(CONF, $options); $this->_model->create(helper::getPasteId(), helper::getPaste()); $this->_model->createComment(helper::getPasteId(), helper::getPasteId(), helper::getCommentId(), helper::getComment()); $this->assertTrue($this->_model->existsComment(helper::getPasteId(), helper::getPasteId(), helper::getCommentId()), 'comment exists before posting data');