/** * Insert block * @param array $blockData * @return bool|int */ public function insert(array $blockData) { if (empty($blockData['lang']) || $blockData['lang'] && !array_key_exists($blockData['lang'], $this->iaCore->languages)) { $blockData['lang'] = $this->iaView->language; } if (!isset($blockData['type']) || !in_array($blockData['type'], $this->getTypes())) { $blockData['type'] = self::TYPE_PLAIN; } if (self::TYPE_MENU == $blockData['type']) { $blockData['tpl'] = self::DEFAULT_MENU_TEMPLATE; } if (!empty($blockData['filename'])) { $blockData['external'] = 1; } $order = $this->iaDb->getMaxOrder(self::getTable()); $blockData['order'] = $order ? $order + 1 : 1; if (isset($blockData['pages'])) { $pagesList = $this->_preparePages($blockData['pages']); unset($blockData['pages']); } if (isset($blockData['multilingual'])) { if (!$blockData['multilingual'] && isset($blockData['languages'])) { $languages = $blockData['languages']; $titles = $blockData['titles']; $contents = $blockData['contents']; unset($blockData['languages'], $blockData['titles'], $blockData['contents']); } } $id = parent::insert($blockData); if ($id) { if (isset($languages)) { foreach ($languages as $language) { iaLanguage::addPhrase(self::LANG_PATTERN_TITLE . $id, $titles[$language], $language); iaLanguage::addPhrase(self::LANG_PATTERN_CONTENT . $id, $contents[$language], $language); } } if (isset($pagesList)) { $this->setVisiblePages($id, $pagesList, $blockData['sticky']); } } return $id; }
protected function _postSaveEntry(array &$entry, array $data, $action) { iaUtil::loadUTF8Functions('ascii', 'validation', 'bad', 'utf8_to_ascii'); foreach ($this->_iaCore->languages as $code => $language) { $title = utf8_is_valid($data['title'][$code]) ? $data['title'][$code] : utf8_bad_replace($data['title'][$code]); iaLanguage::addPhrase('usergroup_' . $entry['name'], $title, $code); } // copy privileges $copyFrom = isset($data['copy_from']) ? (int) $data['copy_from'] : 0; if ($copyFrom) { $this->_iaDb->setTable('acl_privileges'); $rows = $this->_iaDb->all(iaDb::ALL_COLUMNS_SELECTION, "`type_id` = '{$copyFrom}' AND `type` = 'group'"); foreach ($rows as $key => &$row) { $row['type_id'] = $entry['id']; unset($rows[$key]['id']); } $this->_iaDb->insert($rows); $this->_iaDb->resetTable(); } }
protected function _gridUpdate($params) { $output = array('result' => false, 'message' => iaLanguage::get('invalid_parameters')); $params = $_POST; if (isset($params['id']) && $params['id']) { $stmt = '`id` IN (' . implode($params['id']) . ')'; unset($params['id']); } elseif (isset($params['key'])) { $stmt = '`key` = :key'; empty($params['lang']) || ($stmt .= ' AND `code` = :lang'); $this->_iaDb->bind($stmt, $params); if (!$this->_iaDb->exists($stmt) && ($row = $this->_iaDb->row_bind(array('extras', 'category'), '`key` = :key AND `code` != :lang', $params))) { $insertion = iaLanguage::addPhrase($params['key'], $params['value'], $params['lang'], $row['extras'], $row['category'], true); } unset($params['key'], $params['lang']); } if (isset($stmt)) { $output['result'] = isset($insertion) ? $insertion : (bool) $this->_iaDb->update($params, $stmt); $output['message'] = iaLanguage::get($output['result'] ? $this->_phraseEditSuccess : $this->_phraseSaveError); empty($output['result']) || $this->getHelper()->createJsCache(true); } return $output; }
protected function _postSaveEntry(array &$entry, array $data, $action) { foreach ($this->_iaCore->languages as $code => $language) { iaLanguage::addPhrase(self::PATTERN_TITLE . $this->getEntryId(), iaSanitize::tags($this->_languages['title'][$code]), $code); iaLanguage::addPhrase(self::PATTERN_DESCRIPTION . $this->getEntryId(), $this->_languages['description'][$code], $code); } }
protected function _addPhrase($key, $value, $category = iaLanguage::CATEGORY_COMMON) { foreach ($this->iaCore->languages as $isoCode => $language) { iaLanguage::addPhrase($key, $value, $isoCode, $this->itemData['name'], $category, false); } }
protected function _processPhrases(array $entries) { $languages = iaCore::instance()->languages; foreach ($entries as $phrase) { foreach ($languages as $code => $data) { iaLanguage::addPhrase($phrase['key'], $phrase['value'], $code, '', $phrase['category']); } } $this->_logInfo(':num phrases added.', self::LOG_SUCCESS, array('num' => count($entries))); }
private function _insert(array $fieldData) { $iaDb =& $this->_iaDb; if ($fieldData['parents']) { $this->_setParents($fieldData['name'], $fieldData['parents']); } if (isset($fieldData['children']) && iaField::TREE != $fieldData['type']) { $this->_setChildren($fieldData['name'], $fieldData['item'], $fieldData['values'], $fieldData['children']); } unset($fieldData['parents'], $fieldData['children']); $this->_setRelations(); $pagesList = $fieldData['pages']; unset($fieldData['pages'], $fieldData['groups']); foreach ($this->_iaCore->languages as $code => $language) { if (!empty($fieldData['title'][$code])) { iaLanguage::addPhrase('field_' . $fieldData['name'], $fieldData['title'][$code], $code); } if (isset($fieldData['annotation'][$code]) && !empty($fieldData['annotation'][$code])) { iaLanguage::addPhrase('field_' . $fieldData['name'] . '_annotation', $fieldData['annotation'][$code], $code); } } unset($fieldData['title'], $fieldData['annotation']); if (isset($fieldData['group']) && !isset($fieldData['fieldgroup_id'])) { $fieldData['fieldgroup_id'] = 0; $rows = $iaDb->all(array('id', 'name', 'item'), "`item` = '{$fieldData['name']}' ORDER BY `item`, `name`", null, null, iaField::getTableGroups()); foreach ($rows as $val) { if ($fieldData['group'] == $val['name']) { $fieldData['fieldgroup_id'] = $val['id']; } } unset($fieldData['group']); } //add language number field search ranges if (isset($fieldData['_numberRangeForSearch']) && is_array($fieldData['_numberRangeForSearch'])) { foreach ($fieldData['_numberRangeForSearch'] as $number) { iaLanguage::addPhrase('field_' . $fieldData['name'] . '_range_' . $number, $number); } } unset($fieldData['_numberRangeForSearch']); $keys = array(); if (isset($fieldData['values']) && is_array($fieldData['values'])) { foreach ($fieldData['values'] as $key => $value) { $key = $keys[$key] = isset($fieldData['keys'][$key]) ? $fieldData['keys'][$key] : $key; iaLanguage::addPhrase('field_' . $fieldData['name'] . '_' . $key, $value); } } elseif (iaField::TREE != $fieldData['type']) { unset($fieldData['values']); } elseif (iaField::TREE == $fieldData['type']) { $iaDb->setTable('fields_tree_nodes'); if ($fieldData['tree_nodes']) { foreach ($fieldData['tree_nodes'] as $id => $node) { $node['field'] = $fieldData['name']; $node['item'] = $fieldData['item']; $iaDb->insert($node); } } $iaDb->resetTable(); unset($fieldData['tree_nodes']); } if (isset($fieldData['lang_values']) && is_array($fieldData['lang_values'])) { foreach ($fieldData['lang_values'] as $lng_code => $lng_phrases) { foreach ($lng_phrases as $ph_key => $ph_value) { iaLanguage::addPhrase('field_' . $fieldData['name'] . '_' . $ph_key, $ph_value, $lng_code); } } unset($fieldData['lang_values']); } if (isset($fieldData['values']) && $fieldData['values'] && isset($fieldData['keys'])) { $fieldData['values'] = implode(',', $fieldData['keys']); } unset($fieldData['keys']); if (isset($fieldData['lang_values'])) { unset($fieldData['lang_values']); } $fieldData['order'] = $iaDb->getMaxOrder() + 1; $fieldId = $iaDb->insert($fieldData); if ($fieldId && $pagesList) { $this->_setPagesList($fieldId, $pagesList); } $fieldData['table_name'] = $this->_iaCore->factory('item')->getItemTable($fieldData['item']); $fields = $iaDb->describe($fieldData['table_name']); $exists = false; foreach ($fields as $f) { if ($f['Field'] == $fieldData['name']) { $exists = true; break; } } $exists || $this->_alterDbTable($fieldData); return $fieldId; }
protected function _postSaveEntry(array &$entry, array $data, $action) { // saving selected menus $selectedMenus = empty($data['menus']) ? array() : $data['menus']; $this->_saveMenus($entry['name'], $selectedMenus); // setting as the home page if needed if (isset($data['home_page']) && $data['home_page']) { $iaAcl = $this->_iaCore->factory('acl'); if ($iaAcl->checkAccess($this->getName() . 'home')) { $this->_iaCore->set('home_page', $entry['name'], true); } } // saving multilingual content $currentLanguage = $this->_iaCore->iaView->language; $extras = $data['extras']; foreach (array('title', 'content') as $type) { if (isset($data[$type . 's']) && is_array($data[$type . 's'])) { foreach ($data[$type . 's'] as $languageCode => $value) { utf8_is_valid($value) || ($value = utf8_bad_replace($value)); iaLanguage::addPhrase('page_' . $type . '_' . $entry['name'], $value, $languageCode, $extras, iaLanguage::CATEGORY_PAGE); } isset($title) || ($title = $data[$type . 's'][$currentLanguage]); } } // writing to log $iaLog = $this->_iaCore->factory('log'); $actionCode = iaCore::ACTION_ADD == $action ? iaLog::ACTION_CREATE : iaLog::ACTION_UPDATE; $iaLog->write($actionCode, array('item' => 'page', 'name' => $title, 'id' => $this->getEntryId())); }
protected function _processPhrases(array $phrases) { if ($phrases) { $defaultLangCode = $this->iaView->language; foreach ($phrases as $key => $phrase) { foreach ($this->iaCore->languages as $languageCode => $language) { $value = isset($phrase['values'][$languageCode]) ? $phrase['values'][$languageCode] : $phrase['values'][$defaultLangCode]; iaLanguage::addPhrase($key, $value, $languageCode, $this->itemData['name'], $phrase['category'], false); } } } }
protected function _postSaveEntry(array &$entry, array $data, $action) { iaUtil::loadUTF8Functions('ascii', 'validation', 'bad', 'utf8_to_ascii'); foreach ($this->_iaCore->languages as $code => $language) { $title = iaSanitize::tags($data['title'][$code]); utf8_is_valid($title) || ($title = utf8_bad_replace($title)); iaLanguage::addPhrase('usergroup_' . $entry['name'], $title, $code); } // copy privileges if ($data['copy_from']) { $this->_iaDb->setTable('acl_privileges'); $where = '`type_id` = :id AND `type` = :type'; $this->_iaDb->bind($where, array('id' => (int) $data['copy_from'], 'type' => 'group')); $rows = $this->_iaDb->all(iaDb::ALL_COLUMNS_SELECTION, $where); foreach ($rows as $key => &$row) { $row['type_id'] = $this->getEntryId(); unset($rows[$key]['id']); } $this->_iaDb->insert($rows); $this->_iaDb->resetTable(); } }
private function _savePhrases(array &$data, $name, $item) { $this->_iaDb->setTable(iaLanguage::getTable()); $phraseKeyTitle = 'fieldgroup_' . $name; $phraseKeyDescription = "fieldgroup_description_{$item}_{$name}"; foreach ($this->_iaCore->languages as $code => $language) { $stmt = '`key` = :phrase AND `code` = :language'; $this->_iaDb->bind($stmt, array('phrase' => $phraseKeyTitle, 'language' => $code)); $this->_iaDb->exists($stmt) ? $this->_iaDb->update(array('value' => iaSanitize::html($data['titles'][$code])), $stmt) : iaLanguage::addPhrase($phraseKeyTitle, iaSanitize::html($data['titles'][$code]), $code); $stmt = '`key` = :phrase && `code` = :language'; $this->_iaDb->bind($stmt, array('phrase' => $phraseKeyDescription, 'language' => $code)); $this->_iaDb->exists($stmt) ? $this->_iaDb->update(array('value' => iaSanitize::html($data['description'][$code])), $stmt) : iaLanguage::addPhrase($phraseKeyDescription, iaSanitize::html($data['description'][$code]), $code); } $this->_iaDb->resetTable(); }
protected function _preSaveEntry(array &$entry, array $data, $action) { $iaAcl = $this->_iaCore->factory('acl'); iaUtil::loadUTF8Functions('ascii', 'validation', 'bad', 'utf8_to_ascii'); $entry['id'] = $iaAcl->obtainFreeId(); $entry['assignable'] = $data['visible']; $entry['visible'] = $data['visible']; if (iaCore::ACTION_ADD == $action) { if (empty($data['name'])) { $this->addMessage('error_usergroup_incorrect'); } else { $entry['name'] = strtolower(iaSanitize::paranoid($data['name'])); if (!iaValidate::isAlphaNumericValid($entry['name'])) { $this->addMessage('error_usergroup_incorrect'); } elseif ($this->_iaDb->exists('`name` = :name', array('name' => $entry['name']))) { $this->addMessage('error_usergroup_exists'); } } } foreach ($this->_iaCore->languages as $iso => $title) { if (empty($data['title'][$iso])) { $this->addMessage(iaLanguage::getf('error_lang_title', array('lang' => $this->_iaCore->languages[$iso])), false); } elseif (!utf8_is_valid($data['title'][$iso])) { $data['title'][$iso] = utf8_bad_replace($data['title'][$iso]); } } if (!$this->getMessages()) { foreach ($this->_iaCore->languages as $iso => $title) { iaLanguage::addPhrase('usergroup_' . $entry['name'], $data['title'][$iso], $iso); } } return !$this->getMessages(); }