Ejemplo n.º 1
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();
 }
Ejemplo n.º 2
0
 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();
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 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();
 }