/**
 * buildProdcutLanguageVariant
 */
function buildProdcutLanguageVariant($objProduct)
{
    global $objConsoleOpts, $core;
    // product form
    $objProductForm = new GenericForm();
    $objProductForm->Setup()->setElementId($objProduct->id);
    $objProductForm->Setup()->setElementLinkId($objProduct->linkGlobalId);
    $objProductForm->Setup()->setFormId($objProduct->genericFormId);
    $objProductForm->Setup()->setTemplateId($objProduct->templateId);
    $objProductForm->Setup()->setFormVersion($objProduct->version);
    $objProductForm->Setup()->setActionType($core->sysConfig->generic->actions->edit);
    $objProductForm->Setup()->setLanguageId($objConsoleOpts->fromLanguageId);
    $objProductForm->Setup()->setFormLanguageId($core->sysConfig->languages->default->id);
    $objProductForm->Setup()->setModelSubPath('global/models/');
    // load basic generic form
    $objProductForm->Setup()->loadGenericForm();
    // load generic form structur
    $objProductForm->Setup()->loadGenericFormStructure();
    // init data type object
    $objProductForm->initDataTypeObject();
    // load data
    $objProductForm->loadFormData();
    // set fallback language
    $objProductForm->Setup()->setLanguageFallbackId($objConsoleOpts->toLanguageId);
    // reset fields
    foreach ($objProductForm->Setup()->FieldNames() as $strField => $intType) {
        if ($strField != 'title' && $strField != 'internal_links_title' && $strField != 'internal_links' && $strField != 'category' && $strField != 'label') {
            $objProductForm->Setup()->getField($strField)->setValue(null);
        }
    }
    // reset multi regions
    foreach ($objProductForm->Setup()->MultiplyRegionIds() as $intRegionId) {
        $objProductForm->Setup()->getRegion($intRegionId)->resetRegionInstances();
    }
    // set new language
    $objProductForm->saveFormData();
}
/**
 * buildProdcutLanguageVariant
 */
function buildProdcutUrl($objProduct)
{
    global $objConsoleOpts, $core;
    // product form
    $objProductForm = new GenericForm();
    $objProductForm->Setup()->setElementId($objProduct->id);
    $objProductForm->Setup()->setElementLinkId($objProduct->linkGlobalId);
    $objProductForm->Setup()->setFormId($objProduct->genericFormId);
    $objProductForm->Setup()->setTemplateId($objProduct->templateId);
    $objProductForm->Setup()->setFormVersion($objProduct->version);
    $objProductForm->Setup()->setActionType($core->sysConfig->generic->actions->edit);
    $objProductForm->Setup()->setLanguageId($objConsoleOpts->languageId);
    $objProductForm->Setup()->setFormLanguageId($core->sysConfig->languages->default->id);
    $objProductForm->Setup()->setModelSubPath('global/models/');
    // load basic generic form
    $objProductForm->Setup()->loadGenericForm();
    // load generic form structur
    $objProductForm->Setup()->loadGenericFormStructure();
    // init data type object
    $objProductForm->initDataTypeObject();
    // load data
    $objProductForm->loadFormData();
    // product url form
    $objProductUrlForm = new GenericForm();
    $objProductUrlForm->Setup()->setElementId($objProduct->id);
    $objProductUrlForm->Setup()->setElementLinkId($objProduct->linkGlobalId);
    $objProductUrlForm->Setup()->setFormId($objProduct->genericFormId);
    $objProductUrlForm->Setup()->setTemplateId($objProduct->templateId);
    $objProductUrlForm->Setup()->setFormVersion($objProduct->version);
    $objProductUrlForm->Setup()->setActionType($core->sysConfig->generic->actions->edit);
    $objProductUrlForm->Setup()->setLanguageId($objConsoleOpts->urlLanguageId);
    $objProductUrlForm->Setup()->setFormLanguageId($core->sysConfig->languages->default->id);
    $objProductUrlForm->Setup()->setModelSubPath('global/models/');
    // load basic generic form
    $objProductUrlForm->Setup()->loadGenericForm();
    // load generic form structur
    $objProductUrlForm->Setup()->loadGenericFormStructure();
    // init data type object
    $objProductUrlForm->initDataTypeObject();
    // load data
    $objProductUrlForm->loadFormData();
    //rest url
    if ($objProductForm->Setup()->getField('url') && $objProductUrlForm->Setup()->getField('title') && $objProductUrlForm->Setup()->getField('title')->getValue() != '') {
        $_POST['url_EditableUrl'] = trim($objProductUrlForm->Setup()->getField('title')->getValue(), ' _-+!?');
        $objProductForm->Setup()->getField('url')->save($objProduct->linkGlobalId, 'global');
        $objProductForm->Setup()->getField('url')->removeUrlHistory($objProduct->linkGlobalId, 'global');
    }
}
/**
 * buildProdcutLanguageVariant
 */
function buildProdcutLanguageVariant($objProduct)
{
    global $objConsoleOpts, $core;
    // product form
    $objProductForm = new GenericForm();
    $objProductForm->Setup()->setElementId($objProduct->id);
    $objProductForm->Setup()->setElementLinkId($objProduct->linkGlobalId);
    $objProductForm->Setup()->setFormId($objProduct->genericFormId);
    $objProductForm->Setup()->setTemplateId($objProduct->templateId);
    $objProductForm->Setup()->setFormVersion($objProduct->version);
    $objProductForm->Setup()->setActionType($core->sysConfig->generic->actions->edit);
    $objProductForm->Setup()->setLanguageId($objConsoleOpts->fromLanguageId);
    $objProductForm->Setup()->setFormLanguageId($core->sysConfig->languages->default->id);
    $objProductForm->Setup()->setModelSubPath('global/models/');
    // load basic generic form
    $objProductForm->Setup()->loadGenericForm();
    // load generic form structur
    $objProductForm->Setup()->loadGenericFormStructure();
    // init data type object
    $objProductForm->initDataTypeObject();
    // load data
    $objProductForm->loadFormData();
    // set new language
    $objProductForm->Setup()->setLanguageId($objConsoleOpts->toLanguageId);
    //rest url
    if ($objProductForm->Setup()->getField('url')) {
        $objProductForm->Setup()->getField('url')->setValue('');
    }
    // set new language
    $objProductForm->saveFormData();
}
 /**
  * getGenericForm
  * @author Cornelius Hansjakob <*****@*****.**>
  * @version 1.1
  * @return GenericForm
  */
 public function getGenericForm()
 {
     try {
         //TODO : get Form from cache or create ??
         $objForm = new GenericForm();
         $objForm->Setup()->setFormId($this->strFormId);
         $objForm->Setup()->setTemplateId($this->intTemplateId);
         $objForm->Setup()->setFormVersion($this->intFormVersion);
         $objForm->Setup()->setActionType($this->intActionType);
         $objForm->Setup()->setLanguageId($this->intLanguageId);
         $objForm->Setup()->setFormLanguageId($this->intFormLanguageId);
         $objForm->Setup()->setElementId($this->intElementId);
         /**
          * load basic generic form
          */
         $objForm->Setup()->loadGenericForm();
         /**
          * load generic form structur
          */
         $objForm->Setup()->loadGenericFormStructure();
         /**
          * init data type object
          */
         $objForm->initDataTypeObject();
         return $objForm;
     } catch (Exception $exc) {
         $this->core->logger->err($exc);
     }
 }