Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 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();
     }
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
 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);
     }
 }
Ejemplo n.º 6
0
 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)));
 }
Ejemplo n.º 7
0
 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;
 }
Ejemplo n.º 8
0
 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()));
 }
Ejemplo n.º 9
0
 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);
             }
         }
     }
 }
Ejemplo n.º 10
0
 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();
     }
 }
Ejemplo n.º 11
0
 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();
 }
Ejemplo n.º 12
0
 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();
 }