예제 #1
0
 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')));
     }
 }