Пример #1
0
 /**
  * Backend area (only rightpane) with a
  * form to create a file.
  * Redirect on succes to index page.
  * @return void
  */
 public function createFile()
 {
     // check perm for action
     // uses iddirectory as id because perm type is directory and reset parent id
     if ($this->file_sql_item->hasPerm('create', $this->params['iddirectory'], 0) == FALSE) {
         $this->_setUserLogMessage('permission_denied', array('id' => '0'), 'debug');
         $this->_indexRedirect('error_permission_denied');
     }
     $form = sf_api('VIEW', 'Form');
     // assign real form vals to config fields
     $config_fields = $this->_assignValuesToConfigFields($this->config_fields['edit_file'], $this->file_sql_item, $form->wasSend());
     // validate or save form
     $msg_string = '';
     if ($form->wasSend()) {
         // check if invalid files are allowed
         switch ($this->config_area['allow_invalid_filenames']) {
             // no: check by normal validation
             case 0:
                 break;
                 // yes: disable validation
             // yes: disable validation
             case 1:
                 unset($config_fields['filename']['validation']['filename']);
                 break;
                 // correct filename: disable validation and correct filename in file_sql_item
             // correct filename: disable validation and correct filename in file_sql_item
             case 2:
                 unset($config_fields['filename']['validation']['filename']);
                 break;
         }
         // validate form
         $msg_string = $this->_validateConfigFields($config_fields);
         $fsm = sf_api('LIB', 'FilesystemManipulation');
         $extension = $fsm->getPathinfo($config_fields['filename']['val'], 'extension');
         unset($fsm);
         // validation errors found, so mark them as errors
         if ($msg_string != '') {
             $msg_string = 'error_' . $msg_string;
         } else {
             if ($this->_isForbiddenFileExtension($extension) == TRUE) {
                 $msg_string = 'error_forbidden_file_extension';
             } else {
                 $filedata = $this->_getItemFieldArrayFromConfigFields($config_fields);
                 $filedata['area'] = $this->config_area['area_name'];
                 $filedata['idclient'] = $this->config_area['idclient'];
                 //$filedata['idlang'] = $this->config_area['idlang'];
                 try {
                     if ($this->file_sql_item->create($filedata) == TRUE) {
                         $msgcode = 'ok_save_file_success';
                         $filedata['id'] = $this->file_sql_item->getId();
                         $filedata['path'] = $this->file_sql_item->getRelativePath();
                         $this->_setUserLogMessage('save_file_success', $filedata);
                         // redirect to tableview
                         if ($form->saveWasPressed()) {
                             $this->_indexRedirect($msgcode);
                         } else {
                             $this->url->urlAddModifyParams(array('msgcode' => $msgcode, 'id' => $this->file_sql_item->getId()));
                             $this->http_header->redirect($this->url->urlGet(array('area' => $this->config_area['area_name'] . '_edit_file')));
                         }
                     }
                 } catch (Exception $e) {
                     switch ($e->getCode()) {
                         // 0 = fatal, 1 = error
                         case 0:
                         case 1:
                             $code = 'error';
                             break;
                             // 2 = warning
                         // 2 = warning
                         case 2:
                             $code = 'warning';
                             break;
                         default:
                             $code = 'info';
                     }
                     $lng = $this->lng->get($this->config_area['area_name'] . '_' . $e->getMessage());
                     $msg_string = $code . '_';
                     $msg_string .= $lng != '' ? $lng : $e->getMessage();
                     $filedata['path'] = $this->file_sql_item->getRelativePath();
                     $this->_setUserLogMessage($e->getMessage(), $filedata, $code);
                 }
             }
         }
     }
     // build form
     $this->_buildFormFromConfigFields($config_fields, $form);
     $backend_area = sf_api('VIEW', 'BackendArea');
     $backend_area->addCmsHeader($this->config_area['js_lang']);
     $backend_area->addFooter();
     // error or warning templates
     $msg = $this->_getMessage($this->req->req('msgcode', $msg_string));
     if ($msg !== FALSE) {
         $backend_area->addMessage($msg['type'], $msg['message']);
     }
     $backend_area->addTemplateVar('TITLE', $this->lng->get($this->config_area['area_name'] . '_area_create_file'), 'RIGHTPANE.TITLE');
     $backend_area->addTemplateVar('RIGHTPANE', $form, 'RIGHTPANE');
     $backend_area->generate();
     return $backend_area->get();
 }