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(); }
protected function _preSaveEntry(array &$entry, array $data, $action) { $entry['assignable'] = (int) $data['visible']; $entry['visible'] = (int) $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 $code => $language) { if (empty($data['title'][$code])) { $this->addMessage(iaLanguage::getf('error_lang_title', array('lang' => $language['title'])), false); } } return !$this->getMessages(); }
protected function _jsonAction() { $this->_iaCore->factory('validate'); $output = array('result' => false, 'message' => iaLanguage::get('invalid_parameters')); if (isset($_POST['action']) && 'save' == $_POST['action']) { $type = $_POST['type']; $global = (int) $_POST['global']; $page = (int) $_POST['page']; $name = $_POST['name']; $pagename = $_POST['pagename']; if (!iaValidate::isAlphaNumericValid($name) || !iaValidate::isAlphaNumericValid($pagename)) { return $output; } // convert blocks to id if ('blocks' == $type) { $name = $this->_iaDb->one('id', "`name` = '{$name}'"); } if (in_array($type, array('positions', 'blocks'))) { $this->_iaDb->setTable('objects_pages'); if (!$global) { // get previous state if (!$this->_iaDb->exists("`object_type` = '{$type}' && `page_name` = '' && `object` = '{$name}' && `access` = 0")) { // delete previous settings $this->_iaDb->delete("`object_type` = '{$type}' && `object` = '{$name}'"); // hide for all pages $this->_iaDb->insert(array('object_type' => $type, 'page_name' => '', 'object' => $name, 'access' => 0)); } if ($page) { $this->_iaDb->insert(array('object_type' => $type, 'page_name' => $pagename, 'object' => $name, 'access' => $page)); } else { $this->_iaDb->delete("`object_type` = '{$type}' && `page_name` = '{$pagename}' && `object` = '{$name}'"); } } else { if ($this->_iaDb->exists("`object_type` = '{$type}' && `page_name` = '' && `object` = '{$name}' && `access` = 0")) { // delete previous settings $this->_iaDb->delete("`object_type` = '{$type}' && `object` = '{$name}'"); } if (!$page) { $this->_iaDb->insert(array('object_type' => $type, 'page_name' => $pagename, 'object' => $name, 'access' => $page)); } else { $this->_iaDb->delete("`object_type` = '{$type}' && `page_name` = '{$pagename}' && `object` = '{$name}'"); } } $this->_iaDb->resetTable(); } } if (isset($_GET['get']) && 'access' == $_GET['get']) { $type = $_GET['type']; $object = $_GET['object']; $page = $_GET['page']; if (!iaValidate::isAlphaNumericValid($_GET['object']) || !iaValidate::isAlphaNumericValid($_GET['page'])) { return $output; } // convert blocks to id if ('blocks' == $type) { $object = $this->_iaDb->one('id', "`name` = '{$object}'"); } $sql = "SELECT IF(`page_name` = '', 'global', 'page'), `access` FROM `{$this->_iaDb->prefix}objects_pages` "; $sql .= "WHERE `object_type` = '{$type}' && `object` = '{$object}' && `page_name` IN ('', '{$page}')"; if ($access = $this->_iaDb->getKeyValue($sql)) { $output['result'] = array_merge(array('global' => 1, 'page' => isset($access['page']) ? $access['page'] : $access['global']), $access); } else { $output['result']['global'] = 1; $output['result']['page'] = 1; } } elseif ($_GET) { $params = $_GET; $positions = array_keys($this->_iaDb->assoc(array('name', 'menu', 'movable'), null, 'positions')); foreach ($positions as $p) { if (isset($params[$p . 'Blocks']) && is_array($params[$p . 'Blocks']) && $params[$p . 'Blocks']) { foreach ($params[$p . 'Blocks'] as $k => $v) { $blockName = str_replace('start_block_', '', 'start_' . $v); $this->_iaCore->startHook('phpOrderChangeBeforeUpdate', array('block' => &$blockName, 'position' => &$p)); is_numeric($blockName) ? $this->_iaDb->update(array('id' => $blockName, 'position' => $p, 'order' => $k + 1)) : $this->_iaDb->update(array('position' => $p, 'order' => $k + 1), iaDb::convertIds($blockName, 'name')); } } } $output['result'] = true; $output['message'] = iaLanguage::get('saved'); } return $output; }
protected function _preSaveEntry(array &$entry, array $data, $action) { $this->_iaCore->startHook('adminAddBlockValidation'); iaUtil::loadUTF8Functions('ascii', 'validation', 'bad', 'utf8_to_ascii'); // validate block name if (iaCore::ACTION_ADD == $action) { if (empty($data['name'])) { $entry['name'] = 'block_' . mt_rand(1000, 9999); } else { $entry['name'] = strtolower(iaSanitize::paranoid($data['name'])); if (!iaValidate::isAlphaNumericValid($entry['name'])) { $this->addMessage('error_block_name'); } elseif ($this->_iaDb->exists('`name` = :name', array('name' => $entry['name']))) { $this->addMessage('error_block_name_duplicate'); } } } $entry['classname'] = $data['classname']; $entry['position'] = $data['position']; $entry['type'] = $data['type']; $entry['status'] = isset($data['status']) ? in_array($data['status'], array(iaCore::STATUS_ACTIVE, iaCore::STATUS_INACTIVE)) ? $data['status'] : iaCore::STATUS_ACTIVE : iaCore::STATUS_ACTIVE; $entry['header'] = (int) $data['header']; $entry['collapsible'] = (int) $data['collapsible']; $entry['collapsed'] = (int) $data['collapsed']; $entry['multilingual'] = (int) $data['multilingual']; $entry['sticky'] = (int) $data['sticky']; $entry['external'] = (int) $data['external']; $entry['filename'] = $data['filename']; $entry['pages'] = isset($data['pages']) ? $data['pages'] : array(); $entry['title'] = $data['title']; $entry['contents'] = $data['content']; if ($entry['multilingual']) { if (empty($entry['title'])) { $this->addMessage('title_is_empty'); } elseif (!utf8_is_valid($entry['title'])) { $entry['title'] = utf8_bad_replace($entry['title']); } if (empty($entry['contents']) && !$entry['external']) { $this->addMessage('error_contents'); } elseif (empty($entry['filename']) && $entry['external']) { $this->addMessage('error_filename'); } if (iaBlock::TYPE_HTML != $entry['type']) { if (!utf8_is_valid($entry['contents'])) { $entry['contents'] = utf8_bad_replace($entry['contents']); } } } else { $this->_multilingualContent = $data['content']; if (isset($data['languages']) && $data['languages']) { $entry['languages'] = $data['languages']; $entry['titles'] = $data['titles']; $entry['contents'] = $data['contents']; foreach ($entry['languages'] as $langCode) { if (isset($entry['titles'][$langCode])) { if (empty($entry['titles'][$langCode])) { $this->addMessage(iaLanguage::getf('error_lang_title', array('lang' => $this->_iaCore->languages[$langCode]['title'])), false); } elseif (!utf8_is_valid($entry['titles'][$langCode])) { $entry['titles'][$langCode] = utf8_bad_replace($entry['titles'][$langCode]); } } if (isset($entry['contents'][$langCode])) { if (empty($entry['contents'][$langCode])) { $this->addMessage(iaLanguage::getf('error_lang_contents', array('lang' => $this->_iaCore->languages[$langCode]['title'])), false); } if (iaBlock::TYPE_HTML != $entry['type']) { if (!utf8_is_valid($entry['contents'][$langCode])) { $entry['contents'][$langCode] = utf8_bad_replace($entry['contents'][$langCode]); } } } } } else { $this->addMessage('block_languages_empty'); } } $this->_iaCore->startHook('phpAdminBlocksEdit', array('block' => &$entry)); return !$this->getMessages(); }