Exemple #1
0
 function createPathByTokens($path, array $names)
 {
     if (strpos($path, '|') === false) {
         return $path;
     }
     $path = str_replace('|', DS, $path);
     foreach ($names as $id => $name) {
         $is_array = 'STRING';
         if (is_array(JRequest::getVar('cb_' . $id, ''))) {
             $is_array = 'ARRAY';
         }
         $value = JRequest::getVar('cb_' . $id, '', 'POST', $is_array, JREQUEST_ALLOWRAW);
         if ($is_array == 'ARRAY' && count($value)) {
             $arrvals = array();
             foreach ($value as $val) {
                 if ($val != 'cbGroupMark') {
                     $arrvals[] = $val;
                 }
             }
             $value = implode(DS, $arrvals);
         }
         if (trim($value) == '') {
             $value = '_empty_';
         }
         $path = str_replace('{' . strtolower($name) . ':value}', $value, $path);
     }
     $path = str_replace('{userid}', JFactory::getUser()->get('id', 0), $path);
     $path = str_replace('{username}', JFactory::getUser()->get('username', 'anonymous') . '_' . JFactory::getUser()->get('id', 0), $path);
     $path = str_replace('{name}', JFactory::getUser()->get('name', 'Anonymous') . '_' . JFactory::getUser()->get('id', 0), $path);
     $_now = JFactory::getDate();
     jimport('joomla.version');
     $version = new JVersion();
     if (version_compare($version->getShortVersion(), '3.0', '>=')) {
         $path = str_replace('{date}', $_now->toSql(), $path);
         $path = str_replace('{time}', $_now->format('H:i:s'), $path);
         $path = str_replace('{date}', $_now->toSql(), $path);
         $path = str_replace('{datetime}', $_now->format('Y-m-d H:i:s'), $path);
     } else {
         $path = str_replace('{date}', $_now->toMySQL(), $path);
         $path = str_replace('{time}', $_now->toFormat('H:i:s'), $path);
         $path = str_replace('{date}', $_now->toMySQL(), $path);
         $path = str_replace('{datetime}', $_now->toFormat('Y-m-d H:i:s'), $path);
     }
     $endpath = contentbuilder::makeSafeFolder($path);
     $parts = explode(DS, $endpath);
     $inner_path = '';
     foreach ($parts as $part) {
         if (!JFolder::exists($inner_path . $part)) {
             $inner_path .= DS;
         }
         JFolder::create($inner_path . $part);
         $inner_path .= $part;
     }
     return $endpath;
 }
 function cbCreatePathByTokens($path, array $rows)
 {
     if (strpos(strtolower($path), '{cbsite}') === 0) {
         $path = str_replace(array('{cbsite}', '{CBSite}'), array(JPATH_SITE, JPATH_SITE), $path);
     }
     if (strpos($path, '|') === false) {
         return $path;
     }
     $path = str_replace('|', DS, $path);
     foreach ($rows as $row) {
         $value = JRequest::getVar('ff_nm_' . $row->name, array(), 'POST', 'ARRAY', JREQUEST_ALLOWRAW);
         $value = implode(DS, $value);
         if (trim($value) == '') {
             $value = '_empty_';
         }
         $path = str_replace('{' . strtolower($row->name) . ':value}', trim($value), $path);
     }
     $path = str_replace('{userid}', JFactory::getUser()->get('id', 0), $path);
     $path = str_replace('{username}', JFactory::getUser()->get('username', 'anonymous') . '_' . JFactory::getUser()->get('id', 0), $path);
     $path = str_replace('{name}', JFactory::getUser()->get('name', 'Anonymous') . '_' . JFactory::getUser()->get('id', 0), $path);
     jimport('joomla.version');
     $version = new JVersion();
     $is3 = false;
     if (version_compare($version->getShortVersion(), '3.0', '>=')) {
         $is3 = true;
     }
     $_now = JFactory::getDate();
     $path = str_replace('{date}', $is3 ? $_now->toSql() : $_now->toMySQL(), $path);
     $path = str_replace('{time}', $is3 ? $_now->format('H:i:s') : $_now->toFormat('H:i:s'), $path);
     $path = str_replace('{date}', $is3 ? $_now->toSql() : $_now->toMySQL(), $path);
     $path = str_replace('{datetime}', $is3 ? $_now->format('Y-m-d H:i:s') : $_now->toFormat('Y-m-d H:i:s'), $path);
     $endpath = contentbuilder::makeSafeFolder($path);
     $parts = explode(DS, $endpath);
     $inner_path = '';
     foreach ($parts as $part) {
         if (!JFolder::exists($inner_path . $part)) {
             $inner_path .= DS;
         }
         JFolder::create($inner_path . $part);
         $inner_path .= $part;
     }
     return $endpath;
 }
 function store()
 {
     if (JRequest::getInt('type_change', 0)) {
         $this->_db->setQuery("Update #__contentbuilder_elements Set `type`=" . $this->_db->Quote(JRequest::getCmd('type_selection', '')) . " Where id = " . $this->_element_id);
         $this->_db->query();
         return 1;
     }
     $query = '';
     $plugins = contentbuilder::getFormElementsPlugins();
     $type = JRequest::getCmd('field_type', '');
     switch ($type) {
         case in_array(JRequest::getCmd('field_type', ''), contentbuilder::getFormElementsPlugins()):
             $hint = JRequest::getVar('hint', '', 'POST', 'STRING', JREQUEST_ALLOWHTML);
             $removables = array();
             $plgs = CBPluginHelper::importPlugin('contentbuilder_form_elements', JRequest::getCmd('field_type', ''));
             $removables = array_merge($removables, $plgs);
             $dispatcher = JDispatcher::getInstance();
             $results = $dispatcher->trigger('onSettingsStore', array());
             if (count($results)) {
                 $results = $results[0];
             }
             foreach ($removables as $removable) {
                 $dispatcher->detach($removable);
             }
             $the_item = $results;
             $query = " `options`='" . base64_encode(serialize($the_item['options'])) . "', `type`=" . $this->_db->Quote(JRequest::getCmd('field_type', '')) . ", `change_type`=" . $this->_db->Quote(JRequest::getCmd('field_type', '')) . ", `hint`=" . $this->_db->Quote($hint) . ", `default_value`=" . $this->_db->Quote($the_item['default_value']) . " ";
             break;
         case '':
         case 'text':
             $length = JRequest::getVar('length', '');
             $maxlength = JRequest::getInt('maxlength', '');
             $password = JRequest::getInt('password', 0);
             $readonly = JRequest::getInt('readonly', 0);
             $default_value = JRequest::getVar('default_value', '');
             $allow_raw = JRequest::getInt('allow_encoding', 0) == 2 ? true : false;
             // 0 = filter on, 1 = allow html, 2 = allow raw
             $allow_html = JRequest::getInt('allow_encoding', 0) == 1 ? true : false;
             $hint = JRequest::getVar('hint', '', 'POST', 'STRING', JREQUEST_ALLOWHTML);
             $options = new stdClass();
             $options->length = $length;
             $options->maxlength = $maxlength;
             $options->password = $password;
             $options->readonly = $readonly;
             $options->allow_raw = $allow_raw;
             $options->allow_html = $allow_html;
             $query = " `options`='" . base64_encode(serialize($options)) . "', `type`='text', `change_type`='text', `hint`=" . $this->_db->Quote($hint) . ", `default_value`=" . $this->_db->Quote($default_value) . " ";
             break;
         case 'textarea':
             $maxlength = JRequest::getInt('maxlength', '');
             $width = JRequest::getVar('width', '');
             $height = JRequest::getVar('height', '');
             $default_value = JRequest::getVar('default_value', '');
             $readonly = JRequest::getInt('readonly', 0);
             $allow_raw = JRequest::getInt('allow_encoding', 0) == 2 ? true : false;
             // 0 = filter on, 1 = allow html, 2 = allow raw
             $allow_html = JRequest::getInt('allow_encoding', 0) == 1 ? true : false;
             $hint = JRequest::getVar('hint', '', 'POST', 'STRING', JREQUEST_ALLOWHTML);
             $options = new stdClass();
             $options->maxlength = $maxlength;
             $options->width = $width;
             $options->height = $height;
             $options->readonly = $readonly;
             $options->allow_raw = $allow_raw;
             $options->allow_html = $allow_html;
             $query = " `options`='" . base64_encode(serialize($options)) . "', `type`='textarea', `change_type`='textarea', `hint`=" . $this->_db->Quote($hint) . ", `default_value`=" . $this->_db->Quote($default_value) . " ";
             break;
         case 'checkboxgroup':
         case 'radiogroup':
         case 'select':
             $seperator = ',';
             //JRequest::getVar('seperator',',');
             $default_value = implode($seperator, JRequest::getVar('default_value', array()));
             $allow_raw = JRequest::getInt('allow_encoding', 0) == 2 ? true : false;
             // 0 = filter on, 1 = allow html, 2 = allow raw
             $allow_html = JRequest::getInt('allow_encoding', 0) == 1 ? true : false;
             $hint = JRequest::getVar('hint', '', 'POST', 'STRING', JREQUEST_ALLOWHTML);
             $options = new stdClass();
             $options->seperator = $seperator;
             $options->allow_raw = $allow_raw;
             $options->allow_html = $allow_html;
             if ($type == 'select') {
                 $multi = JRequest::getInt('multiple', 0);
                 $options->multiple = $multi;
                 $options->length = JRequest::getVar('length', '');
             }
             if ($type == 'checkboxgroup' || $type == 'radiogroup') {
                 $options->horizontal = JRequest::getBool('horizontal', 0);
                 $options->horizontal_length = JRequest::getVar('horizontal_length', '');
             }
             $query = " `options`='" . base64_encode(serialize($options)) . "', `type`='" . $type . "', `change_type`='" . $type . "', `hint`=" . $this->_db->Quote($hint) . ", `default_value`=" . $this->_db->Quote($default_value) . " ";
             break;
         case 'upload':
             jimport('joomla.filesystem.file');
             jimport('joomla.filesystem.folder');
             $this->_db->setQuery("Select upload_directory, protect_upload_directory From #__contentbuilder_forms Where id = " . $this->_id);
             $setup = $this->_db->loadAssoc();
             // rel check for setup
             $tokens = '';
             $upl_ex = explode('|', $setup['upload_directory']);
             $setup['upload_directory'] = $upl_ex[0];
             $upl_ex2 = explode('|', trim(JRequest::getVar('upload_directory', '')));
             JRequest::setVar('upload_directory', $upl_ex2[0]);
             $is_relative = strpos(strtolower($setup['upload_directory']), '{cbsite}') === 0;
             $tmp_upload_directory = $setup['upload_directory'];
             $upload_directory = $is_relative ? str_replace(array('{CBSite}', '{cbsite}'), JPATH_SITE, $setup['upload_directory']) : $setup['upload_directory'];
             // rel check for element options
             $is_opt_relative = strpos(strtolower(trim(JRequest::getVar('upload_directory', ''))), '{cbsite}') === 0;
             $tmp_opt_upload_directory = trim(JRequest::getVar('upload_directory', ''));
             JRequest::setVar('upload_directory', $is_relative ? str_replace(array('{CBSite}', '{cbsite}'), JPATH_SITE, trim(JRequest::getVar('upload_directory', ''))) : trim(JRequest::getVar('upload_directory', '')));
             $protect = $setup['protect_upload_directory'];
             if (!trim(JRequest::getVar('upload_directory', '')) && !JFolder::exists($upload_directory)) {
                 if (!JFolder::exists(JPATH_SITE . DS . 'media' . DS . 'contentbuilder')) {
                     JFolder::create(JPATH_SITE . DS . 'media' . DS . 'contentbuilder');
                     JFile::write(JPATH_SITE . DS . 'media' . DS . 'contentbuilder' . DS . 'index.html', $def = '');
                 }
                 if (!JFolder::exists(JPATH_SITE . DS . 'media' . DS . 'contentbuilder' . DS . 'upload')) {
                     JFolder::create(JPATH_SITE . DS . 'media' . DS . 'contentbuilder' . DS . 'upload');
                     JFile::write(JPATH_SITE . DS . 'media' . DS . 'contentbuilder' . DS . 'upload' . DS . 'index.html', $def = '');
                 }
                 $upload_directory = JPATH_SITE . DS . 'media' . DS . 'contentbuilder' . DS . 'upload';
                 if ($is_opt_relative) {
                     $is_relative = 1;
                     $tmp_upload_directory = '{CBSite}' . DS . 'media' . DS . 'contentbuilder' . DS . 'upload';
                 }
                 if (isset($upl_ex[1])) {
                     $tokens = '|' . $upl_ex[1];
                 }
                 JFactory::getApplication()->enqueueMessage(JText::_('COM_CONTENTBUILDER_FALLBACK_UPLOAD_CREATED') . ' (' . DS . 'media' . DS . 'contentbuilder' . DS . 'upload' . ')', 'warning');
             } else {
                 if (trim(JRequest::getVar('upload_directory', '')) != '' && !JFolder::exists(contentbuilder::makeSafeFolder(JRequest::getVar('upload_directory', '')))) {
                     $upload_directory = contentbuilder::makeSafeFolder(JRequest::getVar('upload_directory', ''));
                     JFolder::create($upload_directory);
                     JFile::write($upload_directory . DS . 'index.html', $def = '');
                     if ($is_opt_relative) {
                         $is_relative = 1;
                         $tmp_upload_directory = $tmp_opt_upload_directory;
                     }
                     if (isset($upl_ex2[1])) {
                         $tokens = '|' . $upl_ex2[1];
                     }
                     JFactory::getApplication()->enqueueMessage(JText::_('COM_CONTENTBUILDER_FALLBACK_UPLOAD_CREATED') . ' (' . $upload_directory . ')', 'warning');
                 } else {
                     if (trim(JRequest::getVar('upload_directory', '')) != '' && JFolder::exists(contentbuilder::makeSafeFolder(JRequest::getVar('upload_directory', '')))) {
                         $upload_directory = contentbuilder::makeSafeFolder(JRequest::getVar('upload_directory', ''));
                         if ($is_opt_relative) {
                             $is_relative = 1;
                             $tmp_upload_directory = $tmp_opt_upload_directory;
                         }
                         if (isset($upl_ex2[1])) {
                             $tokens = '|' . $upl_ex2[1];
                         }
                     } else {
                         if (isset($upl_ex[1])) {
                             $tokens = '|' . $upl_ex[1];
                         }
                     }
                 }
             }
             if ($protect && JFolder::exists($upload_directory)) {
                 JFile::write(contentbuilder::makeSafeFolder($upload_directory) . DS . '.htaccess', $def = 'deny from all');
             } else {
                 if (!$protect && JFolder::exists($upload_directory)) {
                     if (JFile::exists(contentbuilder::makeSafeFolder($upload_directory) . DS . '.htaccess')) {
                         JFile::delete(contentbuilder::makeSafeFolder($upload_directory) . DS . '.htaccess');
                     }
                 }
             }
             $default_value = JRequest::getVar('default_value', '');
             $hint = JRequest::getVar('hint', '', 'POST', 'STRING', JREQUEST_ALLOWHTML);
             $options = new stdClass();
             $options->upload_directory = JFolder::exists($upload_directory) ? ($is_relative ? $tmp_upload_directory : $upload_directory) . $tokens : '';
             $options->allowed_file_extensions = JRequest::getVar('allowed_file_extensions', '');
             $options->max_filesize = JRequest::getVar('max_filesize', '');
             $query = " `options`='" . base64_encode(serialize($options)) . "', `type`='" . $type . "', `change_type`='" . $type . "', `hint`=" . $this->_db->Quote($hint) . ", `default_value`=" . $this->_db->Quote($default_value) . " ";
             break;
         case 'captcha':
             $default_value = JRequest::getVar('default_value', '');
             $hint = JRequest::getVar('hint', '', 'POST', 'STRING', JREQUEST_ALLOWHTML);
             $options = new stdClass();
             $query = " `options`='" . base64_encode(serialize($options)) . "', `type`='" . $type . "', `change_type`='" . $type . "', `hint`=" . $this->_db->Quote($hint) . ", `default_value`=" . $this->_db->Quote($default_value) . " ";
             break;
         case 'calendar':
             $length = JRequest::getVar('length', '');
             $format = JRequest::getVar('format', '');
             $transfer_format = JRequest::getVar('transfer_format', '');
             $maxlength = JRequest::getInt('maxlength', '');
             $readonly = JRequest::getInt('readonly', 0);
             $default_value = JRequest::getVar('default_value', '');
             $hint = JRequest::getVar('hint', '', 'POST', 'STRING', JREQUEST_ALLOWHTML);
             $options = new stdClass();
             $options->length = $length;
             $options->maxlength = $maxlength;
             $options->readonly = $readonly;
             $options->format = $format;
             $options->transfer_format = $transfer_format;
             $query = " `options`='" . base64_encode(serialize($options)) . "', `type`='calendar', `change_type`='calendar', `hint`=" . $this->_db->Quote($hint) . ", `default_value`=" . $this->_db->Quote($default_value) . " ";
             break;
         case 'hidden':
             $allow_raw = JRequest::getInt('allow_encoding', 0) == 2 ? true : false;
             // 0 = filter on, 1 = allow html, 2 = allow raw
             $allow_html = JRequest::getInt('allow_encoding', 0) == 1 ? true : false;
             $default_value = JRequest::getVar('default_value', '');
             $hint = '';
             $options = new stdClass();
             $options->allow_raw = $allow_raw;
             $options->allow_html = $allow_html;
             $query = " `options`='" . base64_encode(serialize($options)) . "', `type`='" . $type . "', `change_type`='" . $type . "', `hint`=" . $this->_db->Quote($hint) . ", `default_value`=" . $this->_db->Quote($default_value) . " ";
             break;
     }
     if ($query) {
         $custom_init_script = JRequest::getVar('custom_init_script', '', 'POST', 'STRING', JREQUEST_ALLOWRAW);
         $custom_action_script = JRequest::getVar('custom_action_script', '', 'POST', 'STRING', JREQUEST_ALLOWRAW);
         $custom_validation_script = JRequest::getVar('custom_validation_script', '', 'POST', 'STRING', JREQUEST_ALLOWRAW);
         $validation_message = JRequest::getVar('validation_message', '');
         $validations = JRequest::getVar('validations', array());
         $other = " `validations`=" . $this->_db->Quote(implode(',', $validations)) . ", ";
         $other .= " `custom_init_script`=" . $this->_db->Quote($custom_init_script) . ", ";
         $other .= " `custom_action_script`=" . $this->_db->Quote($custom_action_script) . ", ";
         $other .= " `custom_validation_script`=" . $this->_db->Quote($custom_validation_script) . ", ";
         $other .= " `validation_message`=" . $this->_db->Quote($validation_message) . ", ";
         $this->_db->setQuery("Update #__contentbuilder_elements Set {$other} {$query} Where id = " . $this->_element_id);
         $this->_db->query();
         return true;
     }
     return false;
 }
Exemple #4
0
 function store()
 {
     $db = JFactory::getDBO();
     $row = $this->getTable();
     $form = $this->getForm();
     $form_id = 0;
     $data = JRequest::get('post');
     $data['details_template'] = JRequest::getVar('details_template', '', 'POST', 'STRING', JREQUEST_ALLOWRAW);
     $data['editable_template'] = JRequest::getVar('editable_template', '', 'POST', 'STRING', JREQUEST_ALLOWRAW);
     $data['details_prepare'] = JRequest::getVar('details_prepare', '', 'POST', 'STRING', JREQUEST_ALLOWRAW);
     $data['editable_prepare'] = JRequest::getVar('editable_prepare', '', 'POST', 'STRING', JREQUEST_ALLOWRAW);
     $data['intro_text'] = JRequest::getVar('intro_text', '', 'POST', 'STRING', JREQUEST_ALLOWHTML);
     $data['editable'] = JRequest::getVar('editable', '', 'POST', 'STRING', JREQUEST_ALLOWHTML);
     $data['email_admin_template'] = JRequest::getVar('email_admin_template', '', 'POST', 'STRING', JREQUEST_ALLOWRAW);
     $data['email_template'] = JRequest::getVar('email_template', '', 'POST', 'STRING', JREQUEST_ALLOWRAW);
     #### SETTINGS
     $data['create_articles'] = JRequest::getInt('create_articles', 0);
     $data['protect_upload_directory'] = JRequest::getInt('protect_upload_directory', 0);
     //$data['upload_directory'] = JPATH_SITE . DS . 'media/contentbuilder/upload';
     //$data['protect_upload_directory'] = 1;
     jimport('joomla.filesystem.file');
     jimport('joomla.filesystem.folder');
     // determine if it contains a replacement
     $tokens = '';
     $upl_ex = explode('|', $data['upload_directory']);
     $data['upload_directory'] = $upl_ex[0];
     $is_relative = strpos(strtolower($data['upload_directory']), '{cbsite}') === 0;
     $tmp_upload_directory = $data['upload_directory'];
     $upload_directory = $is_relative ? str_replace(array('{CBSite}', '{cbsite}'), JPATH_SITE, $data['upload_directory']) : $data['upload_directory'];
     $data['upload_directory'] = $upload_directory;
     $protect = $data['protect_upload_directory'];
     // if not exissting, we create the fallback directory
     if (!JFolder::exists($upload_directory)) {
         if (!JFolder::exists(JPATH_SITE . DS . 'media' . DS . 'contentbuilder')) {
             JFolder::create(JPATH_SITE . DS . 'media' . DS . 'contentbuilder');
             JFile::write(JPATH_SITE . DS . 'media' . DS . 'contentbuilder' . DS . 'index.html', $def = '');
         }
         if (!JFolder::exists(JPATH_SITE . DS . 'media' . DS . 'contentbuilder' . DS . 'upload')) {
             JFolder::create(JPATH_SITE . DS . 'media' . DS . 'contentbuilder' . DS . 'upload');
             JFile::write(JPATH_SITE . DS . 'media' . DS . 'contentbuilder' . DS . 'upload' . DS . 'index.html', $def = '');
             if ($protect) {
                 JFile::write(JPATH_SITE . DS . 'media' . DS . 'contentbuilder' . DS . 'upload' . DS . '.htaccess', $def = 'deny from all');
             }
         }
         $data['upload_directory'] = JPATH_SITE . DS . 'media' . DS . 'contentbuilder' . DS . 'upload';
         if ($is_relative) {
             $tmp_upload_directory = '{CBSite}' . DS . 'media' . DS . 'contentbuilder' . DS . 'upload';
         }
         JFactory::getApplication()->enqueueMessage(JText::_('COM_CONTENTBUILDER_FALLBACK_UPLOAD_CREATED') . ' (' . DS . 'media' . DS . 'contentbuilder' . DS . 'upload' . ')', 'warning');
     }
     if (isset($upl_ex[1])) {
         $tokens = '|' . $upl_ex[1];
     }
     if ($data['protect_upload_directory'] && JFolder::exists(contentbuilder::makeSafeFolder($data['upload_directory']))) {
         if (!JFile::exists(contentbuilder::makeSafeFolder($data['upload_directory']) . DS . 'index.html')) {
             JFile::write(contentbuilder::makeSafeFolder($data['upload_directory']) . DS . 'index.html', $def = '');
         }
     }
     if ($data['protect_upload_directory'] && JFolder::exists(contentbuilder::makeSafeFolder($data['upload_directory']))) {
         if (!JFile::exists(contentbuilder::makeSafeFolder($data['upload_directory']) . DS . '.htaccess')) {
             JFile::write(contentbuilder::makeSafeFolder($data['upload_directory']) . DS . '.htaccess', $def = 'deny from all');
         }
     } else {
         if (JFile::exists(contentbuilder::makeSafeFolder($data['upload_directory']) . DS . '.htaccess')) {
             JFile::delete(contentbuilder::makeSafeFolder($data['upload_directory']) . DS . '.htaccess');
         }
     }
     // reverting back to possibly including cbsite replacement
     $data['upload_directory'] = $tmp_upload_directory . $tokens;
     #### USERS
     $data['verification_required_view'] = JRequest::getInt('verification_required_view', 0);
     $data['verification_required_new'] = JRequest::getInt('verification_required_new', 0);
     $data['verification_required_edit'] = JRequest::getInt('verification_required_edit', 0);
     #### MISC
     $data['show_all_languages_fe'] = JRequest::getInt('show_all_languages_fe', 0);
     if (!$data['show_all_languages_fe'] && !$data['default_lang_code_ignore']) {
         JFactory::getApplication()->enqueueMessage(JText::_('COM_CONTENTBUILDER_LANGUAGE_WARNING'), 'warning');
     }
     #### PERMISSIONS
     $gmap = array();
     $config = array();
     $config['permissions'] = array();
     $config['permissions_fe'] = array();
     $config['own'] = array();
     $config['own_fe'] = array();
     // backend
     if (isset($data['own']) && isset($data['own']['view']) && intval($data['own']['view']) == 1) {
         $config['own']['view'] = true;
     }
     if (isset($data['own']) && isset($data['own']['edit']) && intval($data['own']['edit']) == 1) {
         $config['own']['edit'] = true;
     }
     if (isset($data['own']) && isset($data['own']['delete']) && intval($data['own']['delete']) == 1) {
         $config['own']['delete'] = true;
     }
     if (isset($data['own']) && isset($data['own']['state']) && intval($data['own']['state']) == 1) {
         $config['own']['state'] = true;
     }
     if (isset($data['own']) && isset($data['own']['publish']) && intval($data['own']['publish']) == 1) {
         $config['own']['publish'] = true;
     }
     if (isset($data['own']) && isset($data['own']['fullarticle']) && intval($data['own']['fullarticle']) == 1) {
         $config['own']['fullarticle'] = true;
     }
     if (isset($data['own']) && isset($data['own']['listaccess']) && intval($data['own']['listaccess']) == 1) {
         $config['own']['listaccess'] = true;
     }
     if (isset($data['own']) && isset($data['own']['new']) && intval($data['own']['new']) == 1) {
         $config['own']['new'] = true;
     }
     if (isset($data['own']) && isset($data['own']['language']) && intval($data['own']['language']) == 1) {
         $config['own']['language'] = true;
     }
     if (isset($data['own']) && isset($data['own']['rating']) && intval($data['own']['rating']) == 1) {
         $config['own']['rating'] = true;
     }
     // frontend
     if (isset($data['own_fe']) && isset($data['own_fe']['view']) && intval($data['own_fe']['view']) == 1) {
         $config['own_fe']['view'] = true;
     }
     if (isset($data['own_fe']) && isset($data['own_fe']['edit']) && intval($data['own_fe']['edit']) == 1) {
         $config['own_fe']['edit'] = true;
     }
     if (isset($data['own_fe']) && isset($data['own_fe']['delete']) && intval($data['own_fe']['delete']) == 1) {
         $config['own_fe']['delete'] = true;
     }
     if (isset($data['own_fe']) && isset($data['own_fe']['state']) && intval($data['own_fe']['state']) == 1) {
         $config['own_fe']['state'] = true;
     }
     if (isset($data['own_fe']) && isset($data['own_fe']['publish']) && intval($data['own_fe']['publish']) == 1) {
         $config['own_fe']['publish'] = true;
     }
     if (isset($data['own_fe']) && isset($data['own_fe']['fullarticle']) && intval($data['own_fe']['fullarticle']) == 1) {
         $config['own_fe']['fullarticle'] = true;
     }
     if (isset($data['own_fe']) && isset($data['own_fe']['listaccess']) && intval($data['own_fe']['listaccess']) == 1) {
         $config['own_fe']['listaccess'] = true;
     }
     if (isset($data['own_fe']) && isset($data['own_fe']['new']) && intval($data['own_fe']['new']) == 1) {
         $config['own_fe']['new'] = true;
     }
     if (isset($data['own_fe']) && isset($data['own_fe']['language']) && intval($data['own_fe']['language']) == 1) {
         $config['own_fe']['language'] = true;
     }
     if (isset($data['own_fe']) && isset($data['own_fe']['rating']) && intval($data['own_fe']['rating']) == 1) {
         $config['own_fe']['rating'] = true;
     }
     jimport('joomla.version');
     $version = new JVersion();
     if (version_compare($version->getShortVersion(), '1.6', '<')) {
         $acl = JFactory::getACL();
         $gmap = $acl->get_group_children_tree(null, 'USERS', false);
     } else {
         $db = JFactory::getDbo();
         $query = 'SELECT CONCAT( REPEAT(\'..\', COUNT(parent.id) - 1), node.title) as text, node.id as value' . ' FROM #__usergroups AS node, #__usergroups AS parent' . ' WHERE node.lft BETWEEN parent.lft AND parent.rgt' . ' GROUP BY node.id' . ' ORDER BY node.lft';
         $db->setQuery($query);
         $gmap = $db->loadObjectList();
     }
     foreach ($gmap as $entry) {
         // backend
         if (isset($data['perms'][$entry->value]) && isset($data['perms'][$entry->value]['listaccess']) && intval($data['perms'][$entry->value]['listaccess']) == 1) {
             $config['permissions'][$entry->value]['listaccess'] = true;
         }
         if (isset($data['perms'][$entry->value]) && isset($data['perms'][$entry->value]['view']) && intval($data['perms'][$entry->value]['view']) == 1) {
             $config['permissions'][$entry->value]['view'] = true;
         }
         if (isset($data['perms'][$entry->value]) && isset($data['perms'][$entry->value]['new']) && intval($data['perms'][$entry->value]['new']) == 1) {
             $config['permissions'][$entry->value]['new'] = true;
         }
         if (isset($data['perms'][$entry->value]) && isset($data['perms'][$entry->value]['edit']) && intval($data['perms'][$entry->value]['edit']) == 1) {
             $config['permissions'][$entry->value]['edit'] = true;
         }
         if (isset($data['perms'][$entry->value]) && isset($data['perms'][$entry->value]['delete']) && intval($data['perms'][$entry->value]['delete']) == 1) {
             $config['permissions'][$entry->value]['delete'] = true;
         }
         if (isset($data['perms'][$entry->value]) && isset($data['perms'][$entry->value]['state']) && intval($data['perms'][$entry->value]['state']) == 1) {
             $config['permissions'][$entry->value]['state'] = true;
         }
         if (isset($data['perms'][$entry->value]) && isset($data['perms'][$entry->value]['publish']) && intval($data['perms'][$entry->value]['publish']) == 1) {
             $config['permissions'][$entry->value]['publish'] = true;
         }
         if (isset($data['perms'][$entry->value]) && isset($data['perms'][$entry->value]['fullarticle']) && intval($data['perms'][$entry->value]['fullarticle']) == 1) {
             $config['permissions'][$entry->value]['fullarticle'] = true;
         }
         if (isset($data['perms'][$entry->value]) && isset($data['perms'][$entry->value]['language']) && intval($data['perms'][$entry->value]['language']) == 1) {
             $config['permissions'][$entry->value]['language'] = true;
         }
         if (isset($data['perms'][$entry->value]) && isset($data['perms'][$entry->value]['rating']) && intval($data['perms'][$entry->value]['rating']) == 1) {
             $config['permissions'][$entry->value]['rating'] = true;
         }
         // frontend
         if (isset($data['perms_fe'][$entry->value]) && isset($data['perms_fe'][$entry->value]['listaccess']) && intval($data['perms_fe'][$entry->value]['listaccess']) == 1) {
             $config['permissions_fe'][$entry->value]['listaccess'] = true;
         }
         if (isset($data['perms_fe'][$entry->value]) && isset($data['perms_fe'][$entry->value]['view']) && intval($data['perms_fe'][$entry->value]['view']) == 1) {
             $config['permissions_fe'][$entry->value]['view'] = true;
         }
         if (isset($data['perms_fe'][$entry->value]) && isset($data['perms_fe'][$entry->value]['new']) && intval($data['perms_fe'][$entry->value]['new']) == 1) {
             $config['permissions_fe'][$entry->value]['new'] = true;
         }
         if (isset($data['perms_fe'][$entry->value]) && isset($data['perms_fe'][$entry->value]['edit']) && intval($data['perms_fe'][$entry->value]['edit']) == 1) {
             $config['permissions_fe'][$entry->value]['edit'] = true;
         }
         if (isset($data['perms_fe'][$entry->value]) && isset($data['perms_fe'][$entry->value]['delete']) && intval($data['perms_fe'][$entry->value]['delete']) == 1) {
             $config['permissions_fe'][$entry->value]['delete'] = true;
         }
         if (isset($data['perms_fe'][$entry->value]) && isset($data['perms_fe'][$entry->value]['state']) && intval($data['perms_fe'][$entry->value]['state']) == 1) {
             $config['permissions_fe'][$entry->value]['state'] = true;
         }
         if (isset($data['perms_fe'][$entry->value]) && isset($data['perms_fe'][$entry->value]['publish']) && intval($data['perms_fe'][$entry->value]['publish']) == 1) {
             $config['permissions_fe'][$entry->value]['publish'] = true;
         }
         if (isset($data['perms_fe'][$entry->value]) && isset($data['perms_fe'][$entry->value]['fullarticle']) && intval($data['perms_fe'][$entry->value]['fullarticle']) == 1) {
             $config['permissions_fe'][$entry->value]['fullarticle'] = true;
         }
         if (isset($data['perms_fe'][$entry->value]) && isset($data['perms_fe'][$entry->value]['language']) && intval($data['perms_fe'][$entry->value]['language']) == 1) {
             $config['permissions_fe'][$entry->value]['language'] = true;
         }
         if (isset($data['perms_fe'][$entry->value]) && isset($data['perms_fe'][$entry->value]['rating']) && intval($data['perms_fe'][$entry->value]['rating']) == 1) {
             $config['permissions_fe'][$entry->value]['rating'] = true;
         }
     }
     // remove perms
     if (isset($data['perms'])) {
         unset($data['perms']);
     }
     if (isset($data['perms_fe'])) {
         unset($data['perms_fe']);
     }
     if (isset($data['own'])) {
         unset($data['own']);
     }
     if (isset($data['own_fe'])) {
         unset($data['own_fe']);
     }
     ### PERMISSIONS END
     $list_states = $data['list_states'];
     unset($data['list_states']);
     $version = new JVersion();
     if (version_compare($version->getShortVersion(), '1.6', '>=')) {
         $data['default_category'] = JRequest::getInt('sectioncategories', 0);
     } else {
         // Joomla 1.5 begin
         $sectioncategory = explode(':', JRequest::getVar('sectioncategories', ''));
         $data['default_section'] = intval($sectioncategory[0]);
         $data['default_category'] = intval(isset($sectioncategory[1]) ? $sectioncategory[1] : 0);
         // Joomla 1.5 end
     }
     $data['edit_by_type'] = JRequest::getInt('edit_by_type', 0);
     if ($data['edit_by_type'] && $data['type'] == 'com_breezingforms') {
         if (isset($data['type_name'])) {
             $data['editable_template'] = "{BreezingForms: " . $data['type_name'] . "}";
         }
     }
     $data['act_as_registration'] = JRequest::getInt('act_as_registration', 0);
     if ($data['edit_by_type'] && $data['act_as_registration']) {
         $data['act_as_registration'] = 0;
         JFactory::getApplication()->enqueueMessage(JText::_('COM_CONTENTBUILDER_ACT_AS_REGISTRATION_WARNING'), 'warning');
     }
     if ($data['act_as_registration'] && (!$data['registration_name_field'] || !$data['registration_username_field'] || !$data['registration_email_field'] || !$data['registration_email_repeat_field'] || !$data['registration_password_field'] || !$data['registration_password_repeat_field'])) {
         JFactory::getApplication()->enqueueMessage(JText::_('COM_CONTENTBUILDER_ACT_AS_REGISTRATION_MISSING_FIELDS_WARNING'), 'warning');
     }
     $data['email_notifications'] = JRequest::getInt('email_notifications', 0);
     $data['limited_article_options'] = JRequest::getInt('limited_article_options', 0);
     $data['limited_article_options_fe'] = JRequest::getInt('limited_article_options_fe', 0);
     $data['own_only'] = JRequest::getInt('own_only', 0);
     $data['own_only_fe'] = JRequest::getInt('own_only_fe', 0);
     $data['config'] = base64_encode(serialize($config));
     contentbuilder::createBackendMenuItem($form->id, $form->name, JRequest::getInt('display_in', 0));
     if (JRequest::getBool('create_sample', false)) {
         $data['details_template'] .= contentbuilder::createDetailsSample($form->id, $form->form, $data['theme_plugin']);
     }
     if (JRequest::getBool('create_editable_sample', false)) {
         $data['editable_template'] .= contentbuilder::createEditableSample($form->id, $form->form, $data['theme_plugin']);
     }
     if (JRequest::getBool('email_admin_create_sample', false)) {
         $data['email_admin_template'] .= contentbuilder::createEmailSample($form->id, $form->form, JRequest::getBool('email_admin_html', false));
     }
     if (JRequest::getBool('email_create_sample', false)) {
         $data['email_template'] .= contentbuilder::createEmailSample($form->id, $form->form, JRequest::getBool('email_html', false));
     }
     if (!JRequest::getBool('show_filter', false)) {
         $data['show_filter'] = 0;
     }
     if (!JRequest::getBool('show_records_per_page', false)) {
         $data['show_records_per_page'] = 0;
     }
     if (!JRequest::getBool('metadata', false)) {
         $data['metadata'] = 0;
     }
     if (!JRequest::getBool('export_xls', false)) {
         $data['export_xls'] = 0;
     }
     if (!JRequest::getBool('print_button', false)) {
         $data['print_button'] = 0;
     }
     if (JRequest::getVar('tag', '') == '') {
         $data['tag'] = 'default';
     }
     if ($form->form) {
         $data['title'] = $form->form->getPageTitle();
     }
     $last_update = JFactory::getDate();
     $last_update = CBCompat::toSql($last_update);
     $data['last_update'] = $last_update;
     if (!$row->bind($data)) {
         $this->setError($this->_db->getErrorMsg());
         return false;
     }
     if (!$row->check()) {
         $this->setError($this->_db->getErrorMsg());
         return false;
     }
     $form_id = 0;
     $storeRes = $row->store();
     if (!$storeRes) {
         $this->setError($this->_db->getErrorMsg());
         return false;
     } else {
         if (intval($data['id']) != 0) {
             $form_id = intval($data['id']);
             foreach ($list_states as $state_id => $item) {
                 if (intval($state_id)) {
                     $db->setQuery("Update #__contentbuilder_list_states Set published = " . $db->Quote(isset($item['published']) && $item['published'] ? 1 : 0) . ", `title` = " . $db->Quote(stripslashes(strip_tags($item['title']))) . ", color = " . $db->Quote(stripslashes(strip_tags($item['color']))) . ", action = " . $db->Quote($item['action']) . " Where form_id = {$form_id} And id = " . intval($state_id));
                     $db->query();
                 }
             }
             // FALLBACK IF SOMEHOW REMOVED FROM DATABASE
             if (count($list_states) < count($this->_default_list_states)) {
                 $add_count = count($this->_default_list_states) - count($list_states);
                 for ($i = 0; $i <= $add_count; $i++) {
                     $db->setQuery("Insert Into #__contentbuilder_list_states (form_id,`title`,color,action) Values ({$form_id}," . $db->Quote('State') . "," . $db->Quote('FFFFFF') . "," . $db->Quote('') . ")");
                     $db->query();
                 }
             }
         } else {
             $form_id = $this->_db->insertid();
             foreach ($list_states as $item) {
                 $db->setQuery("Insert Into #__contentbuilder_list_states (form_id,`title`,color,action, published) Values ({$form_id}," . $db->Quote(stripslashes(strip_tags($item['title']))) . "," . $db->Quote($item['color']) . "," . $db->Quote($item['action']) . "," . $db->Quote(isset($item['published']) && $item['published'] ? 1 : 0) . ")");
                 $db->query();
             }
             // FALLBACK IF SOMEHOW REMOVED FROM DATABASE
             if (count($list_states) < count($this->_default_list_states)) {
                 $add_count = count($this->_default_list_states) - count($list_states);
                 for ($i = 0; $i <= $add_count; $i++) {
                     $db->setQuery("Insert Into #__contentbuilder_list_states (form_id,`title`,color,action) Values ({$form_id}," . $db->Quote('State') . "," . $db->Quote('FFFFFF') . "," . $db->Quote('') . ")");
                     $db->query();
                 }
             }
         }
         // is the list states empty?
         $db->setQuery("Select id From #__contentbuilder_list_states Where form_id = " . $form_id . " Limit 1");
         $has_states = $db->loadResult();
         if (!$has_states) {
             $add_count = count($this->_default_list_states);
             for ($i = 0; $i <= $add_count; $i++) {
                 $db->setQuery("Insert Into #__contentbuilder_list_states (form_id,`title`,color,action) Values ({$form_id}," . $db->Quote('State') . "," . $db->Quote('FFFFFF') . "," . $db->Quote('') . ")");
                 $db->query();
             }
         }
     }
     $row->reorder();
     $item_wrapper = JRequest::getVar('itemWrapper', '', 'POST', 'ARRAY', JREQUEST_ALLOWRAW);
     $wordwrap = JRequest::getVar('itemWordwrap', array(), 'post', 'array');
     $labels = JRequest::getVar('itemLabels', array(), 'post', 'array');
     $order_types = JRequest::getVar('itemOrderTypes', array(), 'post', 'array');
     JArrayHelper::toInteger($wordwrap);
     foreach ($item_wrapper as $elementId => $value) {
         $this->_db->setQuery("Update #__contentbuilder_elements Set `order_type` = " . $this->_db->Quote($order_types[$elementId]) . ", `label`= " . $this->_db->Quote($labels[$elementId]) . ", `wordwrap` = " . $this->_db->Quote($wordwrap[$elementId]) . ", `item_wrapper` =  " . $this->_db->Quote(trim($value)) . " Where form_id = {$form_id} And id = " . $elementId);
         $this->_db->query();
     }
     return $form_id;
 }