public function runConfigureUploads(framework\Request $request) { $this->uploads_enabled = framework\Context::getScope()->isUploadsEnabled(); if ($this->uploads_enabled && $request->isPost()) { $this->forward403unless($this->access_level == framework\Settings::ACCESS_FULL); if ($request['enable_uploads']) { if (framework\Context::getScope()->isDefault()) { $settings = array('upload_restriction_mode', 'upload_extensions_list', 'upload_max_file_size', 'upload_storage', 'upload_localpath'); if ($request['upload_storage'] == 'files' && (bool) $request['enable_uploads']) { if (!is_dir($request['upload_localpath'])) { mkdir($request['upload_localpath'], 0744, true); } if (!is_writable($request['upload_localpath'])) { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__("The upload path isn't writable"))); } } } else { $settings = array('upload_restriction_mode', 'upload_extensions_list', 'upload_max_file_size'); framework\Settings::copyDefaultScopeSetting('upload_localpath'); } if (!is_numeric($request['upload_max_file_size'])) { $this->getResponse()->setHttpStatus(400); return $this->renderJSON(array('error' => framework\Context::getI18n()->__("The maximum file size must be a number"))); } foreach ($settings as $setting) { if (framework\Context::getRequest()->hasParameter($setting)) { framework\Settings::saveSetting($setting, framework\Context::getRequest()->getParameter($setting)); } } } framework\Settings::saveSetting('upload_allow_image_caching', framework\Context::getRequest()->getParameter('upload_allow_image_caching')); framework\Settings::saveSetting('upload_delivery_use_xsend', framework\Context::getRequest()->getParameter('upload_delivery_use_xsend')); framework\Settings::saveSetting('enable_uploads', framework\Context::getRequest()->getParameter('enable_uploads')); return $this->renderJSON(array('title' => framework\Context::getI18n()->__('All settings saved'))); } }