コード例 #1
0
ファイル: Controller.php プロジェクト: nao-pon/impresscms
 /**
  *
  * @param	obj		$icmsObj	Object
  * @param	int		$objectid
  * @param	str		$created_success_msg	Message to display on successful creation
  * @param	str		$modified_success_msg	Message to display on successful modification
  * @param	bool	$redirect_page			Whether to redirect afterwards, or not
  * @param	bool	$debug					Whether to display debug information, or not
  */
 public function &doStoreFromDefaultForm(&$icmsObj, $objectid, $created_success_msg, $modified_success_msg, $redirect_page = false, $debug = false)
 {
     global $impresscms;
     $this->postDataToObject($icmsObj);
     if ($icmsObj->isNew()) {
         $redirect_msg = $created_success_msg;
     } else {
         $redirect_msg = $modified_success_msg;
     }
     // Check if there were uploaded files
     $uploaderResult = true;
     if (isset($_POST['icms_upload_image']) || isset($_POST['icms_upload_file'])) {
         $uploaderObj = new icms_file_MediaUploadHandler($icmsObj->getImageDir(true), $this->handler->_allowedMimeTypes, $this->handler->_maxFileSize, $this->handler->_maxWidth, $this->handler->_maxHeight);
         foreach ($_FILES as $name => $file_array) {
             if (isset($file_array['name']) && $file_array['name'] != "" && in_array(str_replace('upload_', '', $name), array_keys($icmsObj->vars))) {
                 if ($uploaderObj->fetchMedia($name)) {
                     $uploaderObj->setTargetFileName(time() . "_" . $uploaderObj->getMediaName());
                     if ($uploaderObj->upload()) {
                         $uploaderResult = $uploaderResult && true;
                         // Find the related field in the icms_ipf_Object
                         $related_field = str_replace('upload_', '', $name);
                         $uploadedArray[] = $related_field;
                         // if it's a richfile
                         if ($icmsObj->vars[$related_field]['data_type'] == XOBJ_DTYPE_FILE) {
                             $object_fileurl = $icmsObj->getUploadDir();
                             $fileObj = $icmsObj->getFileObj($related_field);
                             $fileObj->setVar('url', $object_fileurl . $uploaderObj->getSavedFileName());
                             $fileObj->setVar('mid', $_POST['mid_' . $related_field]);
                             $fileObj->setVar('caption', $_POST['caption_' . $related_field]);
                             $fileObj->setVar('description', $_POST['desc_' . $related_field]);
                             $icmsObj->storeFileObj($fileObj);
                             $icmsObj->setVar($related_field, $fileObj->getVar('fileid'));
                         } else {
                             $eventResult = $this->handler->executeEvent('beforeFileUnlink', $icmsObj);
                             if (!$eventResult) {
                                 $icmsObj->setErrors("An error occured during the beforeFileUnlink event");
                                 $uploaderResult = $uploaderResult && false;
                             }
                             $old_file = $icmsObj->getUploadDir(true) . $icmsObj->getVar($related_field);
                             if (is_file($old_file)) {
                                 unlink($old_file);
                             }
                             $icmsObj->setVar($related_field, $uploaderObj->getSavedFileName());
                             $eventResult = $this->handler->executeEvent('afterFileUnlink', $icmsObj);
                             if (!$eventResult) {
                                 $icmsObj->setErrors("An error occured during the afterFileUnlink event");
                                 $uploaderResult = $uploaderResult && false;
                             }
                         }
                     } else {
                         $icmsObj->setErrors($uploaderObj->getErrors(false));
                         $uploaderResult = $uploaderResult && false;
                     }
                 } else {
                     $icmsObj->setErrors($uploaderObj->getErrors(false));
                     $uploaderResult = $uploaderResult && false;
                 }
             }
         }
     }
     if ($uploaderResult) {
         if ($debug) {
             $storeResult = $this->handler->insertD($icmsObj);
         } else {
             $storeResult = $this->handler->insert($icmsObj);
         }
     } else {
         $storeResult = false;
     }
     if ($storeResult) {
         if ($this->handler->getPermissions()) {
             $icmspermissions_handler = new icms_ipf_permission_Handler($this->handler);
             $icmspermissions_handler->storeAllPermissionsForId($icmsObj->id());
         }
     }
     if ($redirect_page === null) {
         return $icmsObj;
     } else {
         if (!$storeResult) {
             redirect_header($impresscms->urls['previouspage'], 3, _CO_ICMS_SAVE_ERROR . $icmsObj->getHtmlErrors());
         } else {
             $redirect_page = $redirect_page ? $redirect_page : icms_get_page_before_form();
             redirect_header($redirect_page, 2, $redirect_msg);
         }
     }
 }
コード例 #2
0
ファイル: Base.php プロジェクト: nao-pon/impresscms
 /**
  * Adds an element to the form
  *
  * gets all variables from &targetobject (@todo, which object will be passed here?)
  * that was set during the construction of this object (in the constructor)
  * loops through all variables and determines what data type the key has
  * adds an element for each key based on the datatype
  */
 private function createElements()
 {
     $controls = $this->targetObject->controls;
     $vars = $this->targetObject->vars;
     foreach ($vars as $key => $var) {
         // If $displayOnForm is FALSE OR this is the primary key, it doesn't
         // need to be displayed, then we only create an hidden field
         if ($key == $this->targetObject->handler->keyName || !$var['displayOnForm']) {
             $elementToAdd = new icms_form_elements_Hidden($key, $var['value']);
             $this->addElement($elementToAdd, $key, $var, FALSE);
             unset($elementToAdd);
             // If not, the we need to create the proper form control for this fields
         } else {
             // If this field has a specific control, we will use it
             if ($key == 'parentid') {
                 /**
                  * Why this ?
                  */
             }
             if (isset($controls[$key])) {
                 /* If the control has name, it's because it's an object already present in the script
                  * for example, "user"
                  * If the field does not have a name, than we will use a "select" (ie icms_form_elements_Select)
                  */
                 if (!isset($controls[$key]['name']) || !$controls[$key]['name']) {
                     $controls[$key]['name'] = 'select';
                 }
                 $form_select = $this->getControl($controls[$key]['name'], $key);
                 // Adding on the form, the control for this field
                 $this->addElement($form_select, $key, $var);
                 unset($form_select);
                 // If this field don't have a specific control, we will use the standard one, depending on its data type
             } else {
                 switch ($var['data_type']) {
                     case XOBJ_DTYPE_TXTBOX:
                         $form_text = $this->getControl("text", $key);
                         $this->addElement($form_text, $key, $var);
                         unset($form_text);
                         break;
                     case XOBJ_DTYPE_INT:
                         $this->targetObject->setControl($key, array('name' => 'text', 'size' => '5'));
                         $form_text = $this->getControl("text", $key);
                         $this->addElement($form_text, $key, $var);
                         unset($form_text);
                         break;
                     case XOBJ_DTYPE_FLOAT:
                         $this->targetObject->setControl($key, array('name' => 'text', 'size' => '5'));
                         $form_text = $this->getControl("text", $key);
                         $this->addElement($form_text, $key, $var);
                         unset($form_text);
                         break;
                     case XOBJ_DTYPE_LTIME:
                         $form_datetime = $this->getControl('datetime', $key);
                         $this->addElement($form_datetime, $key, $var);
                         unset($form_datetime);
                         break;
                     case XOBJ_DTYPE_STIME:
                         $form_date = $this->getControl('date', $key);
                         $this->addElement($form_date, $key, $var);
                         unset($form_date);
                         break;
                     case XOBJ_DTYPE_TIME_ONLY:
                         $form_time = $this->getControl('time', $key);
                         $this->addElement($form_time, $key, $var);
                         unset($form_time);
                         break;
                     case XOBJ_DTYPE_CURRENCY:
                         $this->targetObject->setControl($key, array('name' => 'text', 'size' => '15'));
                         $form_currency = $this->getControl("text", $key);
                         $this->addElement($form_currency, $key, $var);
                         unset($form_currency);
                         break;
                     case XOBJ_DTYPE_URLLINK:
                         $form_urllink = $this->getControl("urllink", $key);
                         $this->addElement($form_urllink, $key, $var);
                         unset($form_urllink);
                         break;
                     case XOBJ_DTYPE_FILE:
                         $form_file = $this->getControl("richfile", $key);
                         $this->addElement($form_file, $key, $var);
                         unset($form_file);
                         break;
                     case XOBJ_DTYPE_TXTAREA:
                         $form_text_area = $this->getControl('textarea', $key);
                         $this->addElement($form_text_area, $key, $var);
                         unset($form_text_area);
                         break;
                     case XOBJ_DTYPE_ARRAY:
                         // TODO : To come...
                         break;
                     case XOBJ_DTYPE_SOURCE:
                         $form_source_editor = $this->getControl('source', $key);
                         $this->addElement($form_source_editor, $key, $var);
                         unset($form_source_editor);
                         break;
                     case XOBJ_DTYPE_FORM_SECTION:
                         $section_control = $this->getControl('section', $key);
                         $this->addElement($section_control, $key, $var);
                         unset($section_control);
                         break;
                     case XOBJ_DTYPE_FORM_SECTION_CLOSE:
                         $this->targetObject->setControl($key, array("close" => TRUE));
                         $section_control = $this->getControl('section', $key);
                         $this->addElement($section_control, $key, $var);
                         unset($section_control);
                         break;
                 }
             }
         }
     }
     // Add a hidden field to store the URL of the page before this form
     $this->addElement(new icms_form_elements_Hidden('icms_page_before_form', icms_get_page_before_form()));
 }