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; }