}
return true;
}
+
+ /**
+ * Add download size and timeout to the configuration file
+ *
+ * @return bool true if the update is successful, false otherwise.
+ */
+ public function updateMethodDownloadSizeAndTimeoutConf()
+ {
+ if ($this->conf->exists('general.download_max_size')
+ && $this->conf->exists('general.download_timeout')
+ ) {
+ return true;
+ }
+
+ if (! $this->conf->exists('general.download_max_size')) {
+ $this->conf->set('general.download_max_size', 1024*1024*4);
+ }
+
+ if (! $this->conf->exists('general.download_timeout')) {
+ $this->conf->set('general.download_timeout', 30);
+ }
+
+ $this->conf->write($this->isLoggedIn);
+
+ return true;
+ }
}
/**
$conf->set('general.title', escape($_POST['title']));
$conf->set('general.header_link', escape($_POST['titleLink']));
$conf->set('resource.theme', escape($_POST['theme']));
- $conf->set('redirector.url', escape($_POST['redirector']));
$conf->set('security.session_protection_disabled', !empty($_POST['disablesessionprotection']));
$conf->set('privacy.default_private_links', !empty($_POST['privateLinkByDefault']));
$conf->set('feed.rss_permalinks', !empty($_POST['enableRssPermalinks']));
$PAGE->assign('title', $conf->get('general.title'));
$PAGE->assign('theme', $conf->get('resource.theme'));
$PAGE->assign('theme_available', ThemeUtils::getThemes($conf->get('resource.raintpl_tpl')));
- $PAGE->assign('redirector', $conf->get('redirector.url'));
list($continents, $cities) = generateTimeZoneData(
timezone_identifiers_list(),
$conf->get('general.timezone')
if (empty($title) && strpos(get_url_scheme($url), 'http') !== false) {
// Short timeout to keep the application responsive
// The callback will fill $charset and $title with data from the downloaded page.
- get_http_response($url, 25, 4194304, get_curl_download_callback($charset, $title));
+ get_http_response(
+ $url,
+ $conf->get('general.download_max_size', 4194304),
+ $conf->get('general.download_timeout', 30),
+ get_curl_download_callback($charset, $title)
+ );
if (! empty($title) && strtolower($charset) != 'utf-8') {
$title = mb_convert_encoding($title, 'utf-8', $charset);
}
$this->assertTrue($updater->updateMethodAtomDefault());
$this->assertTrue($this->conf->get('feed.show_atom'));
}
+
+ /**
+ * Test updateMethodDownloadSizeAndTimeoutConf, it should be set if none is already defined.
+ */
+ public function testUpdateMethodDownloadSizeAndTimeoutConf()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf());
+ $this->assertEquals(4194304, $this->conf->get('general.download_max_size'));
+ $this->assertEquals(30, $this->conf->get('general.download_timeout'));
+
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->assertEquals(4194304, $this->conf->get('general.download_max_size'));
+ $this->assertEquals(30, $this->conf->get('general.download_timeout'));
+ }
+
+ /**
+ * Test updateMethodDownloadSizeAndTimeoutConf, it shouldn't be set if it is already defined.
+ */
+ public function testUpdateMethodDownloadSizeAndTimeoutConfIgnore()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->conf->set('general.download_max_size', 38);
+ $this->conf->set('general.download_timeout', 70);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf());
+ $this->assertEquals(38, $this->conf->get('general.download_max_size'));
+ $this->assertEquals(70, $this->conf->get('general.download_timeout'));
+ }
+
+ /**
+ * Test updateMethodDownloadSizeAndTimeoutConf, only the maz size should be set here.
+ */
+ public function testUpdateMethodDownloadSizeAndTimeoutConfOnlySize()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->conf->set('general.download_max_size', 38);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf());
+ $this->assertEquals(38, $this->conf->get('general.download_max_size'));
+ $this->assertEquals(30, $this->conf->get('general.download_timeout'));
+ }
+
+ /**
+ * Test updateMethodDownloadSizeAndTimeoutConf, only the time out should be set here.
+ */
+ public function testUpdateMethodDownloadSizeAndTimeoutConfOnlyTimeout()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->conf->set('general.download_timeout', 3);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf());
+ $this->assertEquals(4194304, $this->conf->get('general.download_max_size'));
+ $this->assertEquals(3, $this->conf->get('general.download_timeout'));
+ }
}