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 XoopsFormHidden($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 XoopsFormSelect) */ 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_date_time = $this->getControl('date_time', $key); $this->addElement($form_date_time, $key, $var); unset($form_date_time); break; case XOBJ_DTYPE_STIME: $form_date_time = $this->getControl('date', $key); $this->addElement($form_date_time, $key, $var); unset($form_date_time); 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->getTextArea($key, $var); $this->addElement($form_text_area, $key, $var); unset($form_text_area); break; case XOBJ_DTYPE_ARRAY: // TODO : To come... break; case XOBJ_DTYPE_SOURCE: // TODO : To come... break; case XOBJ_DTYPE_FORM_SECTION: $section_control = new SmartFormSection($key, $var['value']); $this->addElement($section_control, $key, $var); unset($section_control); break; case XOBJ_DTYPE_FORM_SECTION_CLOSE: $section_control = new SmartFormSectionClose($key, $var['value']); $this->addElement($section_control, $key, $var); unset($section_control); break; } } } } // Add an hidden field to store the URL of the page before this form $this->addElement(new XoopsFormHidden('smart_page_before_form', smart_get_page_before_form())); }
include_once XOOPS_ROOT_PATH . "/modules/smartobject/class/smartobjectcontroller.php"; $controller = new SmartObjectController($smartobject_tag_handler); $controller->handleObjectDeletion(_AM_SOBJECT_TAG_DELETE_CONFIRM); break; case "addtag": include_once XOOPS_ROOT_PATH . "/modules/smartobject/class/smartobjectcontroller.php"; $controller = new SmartObjectController($smartobject_tag_handler); $tagObj = $controller->storeSmartObject(); if ($tagObj->hasError()) { redirect_header($smart_previous_page, 3, _CO_SOBJECT_SAVE_ERROR . $tagObj->getHtmlErrors()); exit; } if ($tagObj->hasError()) { redirect_header($smart_previous_page, 3, _CO_SOBJECT_SAVE_ERROR . $tagObj->getHtmlErrors()); } else { redirect_header(smart_get_page_before_form(), 3, _CO_SOBJECT_SAVE_SUCCESS); } exit; break; case "mod": smart_xoops_cp_header(); edittag($tagid, $language, $fct); break; default: smart_xoops_cp_header(); smart_adminMenu(2, _AM_SOBJECT_TAGS); smart_collapsableBar('tags', _AM_SOBJECT_TAGS, _AM_SOBJECT_TAGS_INFO); include_once SMARTOBJECT_ROOT_PATH . "class/smartobjecttable.php"; $objectTable = new SmartObjectTable($smartobject_tag_handler, false, array('delete')); $objectTable->addColumn(new SmartObjectColumn('name')); $objectTable->addColumn(new SmartObjectColumn('language'));
function &doStoreFromDefaultForm(&$smartObj, $objectid, $created_success_msg, $modified_success_msg, $redirect_page = false, $debug = false) { global $smart_previous_page; $this->postDataToObject($smartObj); if ($smartObj->isNew()) { $redirect_msg = $created_success_msg; } else { $redirect_msg = $modified_success_msg; } // Check if there were uploaded files if (isset($_POST['smart_upload_image']) || isset($_POST['smart_upload_file'])) { include_once XOOPS_ROOT_PATH . "/modules/smartobject/class/smartuploader.php"; $uploaderObj = new SmartUploader($smartObj->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($smartObj->vars))) { if ($uploaderObj->fetchMedia($name)) { $uploaderObj->setTargetFileName(time() . "_" . $uploaderObj->getMediaName()); if ($uploaderObj->upload()) { // Find the related field in the SmartObject $related_field = str_replace('upload_', '', $name); $uploadedArray[] = $related_field; //si c'est un fichier Rich if ($smartObj->vars[$related_field]['data_type'] == XOBJ_DTYPE_FILE) { $object_fileurl = $smartObj->getUploadDir(); $fileObj = $smartObj->getFileObj($related_field); $fileObj->setVar('url', $object_fileurl . $uploaderObj->getSavedFileName()); $fileObj->setVar('caption', $_POST['caption_' . $related_field]); $fileObj->setVar('description', $_POST['desc_' . $related_field]); $smartObj->storeFileObj($fileObj); //todo : catch errors $smartObj->setVar($related_field, $fileObj->getVar('fileid')); } else { $old_file = $smartObj->getUploadDir(true) . $smartObj->getVar($related_field); unlink($old_file); $smartObj->setVar($related_field, $uploaderObj->getSavedFileName()); } } else { $smartObj->setErrors($uploaderObj->getErrors(false)); } } else { $smartObj->setErrors($uploaderObj->getErrors(false)); } } } } if ($debug) { $storeResult = $this->handler->insertD($smartObj); } else { $storeResult = $this->handler->insert($smartObj); } if ($storeResult) { if ($this->handler->getPermissions()) { $smartpermissions_handler = new SmartobjectPermissionHandler($this->handler); $smartpermissions_handler->storeAllPermissionsForId($smartObj->id()); } } if ($redirect_page === null) { return $smartObj; } else { if (!$storeResult) { redirect_header($smart_previous_page, 3, _CO_SOBJECT_SAVE_ERROR . $smartObj->getHtmlErrors()); } $redirect_page = $redirect_page ? $redirect_page : smart_get_page_before_form(); redirect_header($redirect_page, 2, $redirect_msg); } }