예제 #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();
 }
 public function createQueue($fromName, $fromMail, $subject, $body, $html, $groups, $status)
 {
     $error = false;
     $rcptsPerRun = 15;
     $messages = array();
     $data = array();
     $data['from_name'] = $fromName;
     $data['subj'] = $subject;
     $data['html'] = $html;
     if (empty($fromMail) || !iaValidate::isEmail($fromMail)) {
         $error = true;
         $messages[] = iaLanguage::get('from_email_err');
     } else {
         $data['from_mail'] = $fromMail;
     }
     if (empty($body)) {
         $error = true;
         $messages[] = iaLanguage::get('err_message');
     } else {
         $data['body'] = $body;
     }
     $usergrp = empty($groups) ? 0 : array_sum($groups);
     $status = empty($status) ? array() : $status;
     $status = implode("','", $status);
     $rcpt = $this->iaDb->onefield('email', "`usergroup_id` & {$usergrp} AND `status` IN ('{$status}')", 0, 0, 'members');
     if (empty($rcpt)) {
         $error = true;
         $messages[] = iaLanguage::get('no_rcpt');
     }
     if (!$error) {
         $data['total'] = count($rcpt);
         $messageId = $this->iaDb->insert($data, null, self::getTableMessages());
         foreach ($rcpt as $index => $addr) {
             $rcptCart[] = $addr;
             if (($index + 1) % $rcptsPerRun == 0 || $index + 1 == $data['total']) {
                 $this->iaDb->insert(array('message_id' => $messageId, 'recipients' => implode(',', $rcptCart)), null, self::getTableRecipients());
                 $rcptCart = array();
             }
         }
         $messages[] = iaLanguage::get('queue_added');
     }
     return array($error, $messages);
 }
예제 #3
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();
 }
예제 #4
0
         if (!iaValidate::isCaptchaValid()) {
             $error = true;
             $messages[] = iaLanguage::get('confirmation_code_incorrect');
         }
     }
     $iaView->assign('email', $email);
     $iaView->assign('form', $form);
 } else {
     $iaField = $iaCore->factory('field');
     $iaPlan = $iaCore->factory('plan');
     $iaView->assign('plans', $iaPlan->getPlans($iaUsers->getItemName()));
     $iaView->assign('sections', $iaField->filterByGroup($itemData, $iaUsers->getItemName()));
     if (isset($_POST['register'])) {
         $fields = $iaField->filter($itemData, $iaUsers->getItemName());
         list($itemData, $error, $messages, ) = $iaField->parsePost($fields);
         if (!iaValidate::isCaptchaValid()) {
             $error = true;
             $messages[] = iaLanguage::get('confirmation_code_incorrect');
         }
         if (isset($_POST['plan_id'])) {
             $itemData[iaPlan::SPONSORED_PLAN_ID] = (int) $_POST['plan_id'];
         }
         if (isset($_POST['username'])) {
             if ($iaDb->exists('`username` = :value', array('value' => $_POST['username']), iaUsers::getTable())) {
                 $error = true;
                 $messages[] = iaLanguage::get('username_already_exists');
             }
         }
         if (isset($_POST['email'])) {
             if ($iaDb->exists('`email` = :value', array('value' => $_POST['email']), iaUsers::getTable())) {
                 $error = true;
예제 #5
0
 public function parsePost(array $fields, $previousValues = null)
 {
     $iaCore =& $this->iaCore;
     $error = false;
     $messages = array();
     $invalidFields = array();
     $item = array();
     $data =& $_POST;
     // access to the data source by link
     if (iaCore::ACCESS_ADMIN == $this->iaCore->getAccessType()) {
         if (isset($data['sponsored'])) {
             $item['sponsored'] = (int) $data['sponsored'];
             $item['sponsored_plan_id'] = $item['sponsored'] ? (int) $data['plan_id'] : 0;
             $item['sponsored_start'] = $item['sponsored'] ? date(iaDb::DATETIME_SHORT_FORMAT) : null;
             $item['sponsored_end'] = $item['sponsored'] ? $data['sponsored_end'] : null;
         }
         if (isset($data['featured'])) {
             $item['featured'] = (int) $data['featured'];
             if ($item['featured']) {
                 if (isset($data['featured_end']) && $data['featured_end']) {
                     $item['featured_start'] = date(iaDb::DATETIME_SHORT_FORMAT);
                     $item['featured_end'] = iaSanitize::html($data['featured_end']);
                 } else {
                     $error = true;
                     $messages[] = iaLanguage::get('featured_status_finished_date_is_empty');
                     $invalidFields[] = 'featured_end';
                 }
             } else {
                 $item['featured_start'] = null;
                 $item['featured_end'] = null;
             }
         }
         if (isset($data['status'])) {
             $item['status'] = iaSanitize::html($data['status']);
         }
         if (isset($data['date_added'])) {
             $time = strtotime($data['date_added']);
             if (!$time) {
                 $error = true;
                 $messages[] = iaLanguage::get('added_date_is_incorrect');
             } elseif ($time > time()) {
                 $error = true;
                 $messages[] = iaLanguage::get('future_date_specified_for_added_date');
             } else {
                 $item['date_added'] = date(iaDb::DATETIME_SHORT_FORMAT, $time);
             }
         }
         if (isset($data['owner'])) {
             if (empty($data['owner'])) {
                 $error = true;
                 $messages[] = iaLanguage::get('owner_is_not_specified');
             } else {
                 if ($memberId = $iaCore->iaDb->one_bind('id', '`username` = :name OR `fullname` = :name', array('name' => iaSanitize::sql($_POST['owner'])), iaUsers::getTable())) {
                     $item['member_id'] = $memberId;
                 } else {
                     $error = true;
                     $messages[] = iaLanguage::get('incorrect_owner_specified');
                 }
             }
         }
         if (isset($data['locked'])) {
             $item['locked'] = (int) $data['locked'];
         }
     }
     // the code block below filters fields based on parent/dependent structure
     $activeFields = array();
     $parentFields = array();
     foreach ($fields as $field) {
         $activeFields[$field['name']] = $field;
         if (iaField::RELATION_PARENT == $field['relation']) {
             $parentFields[$field['name']] = $field['children'];
         }
     }
     foreach ($parentFields as $fieldName => $dependencies) {
         if (isset($data[$fieldName])) {
             $value = $data[$fieldName];
             foreach ($dependencies as $dependentFieldName => $values) {
                 if (!in_array($value, $values)) {
                     unset($activeFields[$dependentFieldName]);
                 }
             }
         }
     }
     //
     $iaCore->factory('util');
     iaUtil::loadUTF8Functions('validation', 'bad');
     foreach ($activeFields as $fieldName => $field) {
         isset($data[$fieldName]) || ($data[$fieldName] = '');
         // Check the UTF-8 is well formed
         if (!is_array($data[$fieldName]) && !utf8_is_valid($data[$fieldName])) {
             $data[$fieldName] = utf8_bad_replace($data[$fieldName]);
         }
         if ($field['extra_actions']) {
             if (false === eval($field['extra_actions'])) {
                 continue;
                 // make possible to stop further processing of this field by returning FALSE
             }
         }
         if (in_array($field['type'], array(self::TEXT, self::TEXTAREA, self::NUMBER, self::RADIO, self::CHECKBOX, self::COMBO))) {
             if ($field['required']) {
                 if ($field['required_checks']) {
                     eval($field['required_checks']);
                 }
                 if (empty($data[$fieldName])) {
                     $error = true;
                     $messages[] = in_array($field['type'], array(self::RADIO, self::CHECKBOX, self::COMBO)) ? iaLanguage::getf('field_is_not_selected', array('field' => iaLanguage::get('field_' . $fieldName))) : iaLanguage::getf('field_is_empty', array('field' => iaLanguage::get('field_' . $fieldName)));
                     $invalidFields[] = $fieldName;
                 }
             }
             switch ($field['type']) {
                 case self::NUMBER:
                     $item[$fieldName] = (double) str_replace(' ', '', $data[$fieldName]);
                     break;
                 case self::TEXT:
                     $item[$fieldName] = iaSanitize::tags($data[$fieldName]);
                     break;
                 case self::TEXTAREA:
                     $item[$fieldName] = $field['use_editor'] ? iaUtil::safeHTML($data[$fieldName]) : iaSanitize::tags($data[$fieldName]);
                     break;
                 default:
                     $item[$fieldName] = is_array($data[$fieldName]) ? implode(',', $data[$fieldName]) : $data[$fieldName];
             }
         } elseif (self::DATE == $field['type']) {
             if ($field['required'] && $field['required_checks']) {
                 eval($field['required_checks']);
             } elseif ($field['required'] && empty($data[$fieldName])) {
                 $error = true;
                 $messages[] = iaLanguage::getf('field_is_empty', array('field' => iaLanguage::get('field_' . $fieldName)));
                 $invalidFields[] = $fieldName;
             }
             $data[$fieldName] = trim($data[$fieldName]);
             if (empty($data[$fieldName])) {
                 $item[$fieldName] = $field['allow_null'] ? null : '';
             } else {
                 if (strpos($data[$fieldName], ' ') === false) {
                     $date = $data[$fieldName];
                     $time = false;
                 } else {
                     list($date, $time) = explode(' ', $data[$fieldName]);
                 }
                 // FIXME: f*****g shit
                 $array = explode('-', $date);
                 $year = (int) $array[0];
                 $month = max(1, (int) $array[1]);
                 $day = max(1, (int) $array[2]);
                 $year = strlen($year) == 4 ? $year : 2000;
                 $month = strlen($month) < 2 ? '0' . $month : $month;
                 $day = strlen($day) < 2 ? '0' . $day : $day;
                 $item[$fieldName] = $year . '-' . $month . '-' . $day;
                 if ($field['timepicker'] && $time) {
                     $time = explode(':', $time);
                     $hour = max(1, (int) $time[0]);
                     $minute = max(1, (int) $time[1]);
                     $seconds = max(1, (int) $time[2]);
                     $hour = strlen($hour) < 2 ? '0' . $hour : $hour;
                     $minute = strlen($minute) < 2 ? '0' . $minute : $minute;
                     $seconds = strlen($seconds) < 2 ? '0' . $seconds : $seconds;
                     $item[$fieldName] .= ' ' . $hour . ':' . $minute . ':' . $seconds;
                 }
             }
         } elseif (self::URL == $field['type']) {
             $validProtocols = array('http://', 'https://');
             $item[$fieldName] = '';
             $req_error = false;
             if ($field['required']) {
                 if ($field['required_checks']) {
                     eval($field['required_checks']);
                 } elseif (empty($data[$fieldName]['url']) || in_array($data[$fieldName]['url'], $validProtocols)) {
                     $error = $req_error = true;
                     $messages[] = iaLanguage::getf('field_is_empty', array('field' => iaLanguage::get('field_' . $fieldName)));
                     $invalidFields[] = $fieldName;
                 }
             }
             if (!$req_error && !empty($data[$fieldName]['url']) && !in_array($data[$fieldName]['url'], $validProtocols)) {
                 if (false === stripos($data[$fieldName]['url'], 'http://') && false === stripos($data[$fieldName]['url'], 'https://')) {
                     $data[$fieldName]['url'] = 'http://' . $data[$fieldName]['url'];
                 }
                 if (iaValidate::isUrl($data[$fieldName]['url'])) {
                     $item[$fieldName] = array();
                     $item[$fieldName]['url'] = iaSanitize::tags($data[$fieldName]['url']);
                     $item[$fieldName]['title'] = empty($data[$fieldName]['title']) ? str_replace($validProtocols, '', $data[$fieldName]['url']) : $data[$fieldName]['title'];
                     $item[$fieldName] = implode('|', $item[$fieldName]);
                 } else {
                     $error = true;
                     $messages[] = iaLanguage::get('field_' . $fieldName) . ': ' . iaLanguage::get('error_url');
                     $invalidFields[] = $fieldName;
                 }
             }
         } elseif (in_array($field['type'], array(self::IMAGE, self::STORAGE, self::PICTURES)) && is_array($_FILES[$fieldName]['tmp_name']) && !empty($_FILES[$fieldName]['tmp_name'])) {
             if (!is_writable(IA_UPLOADS)) {
                 $error = true;
                 $messages[] = iaLanguage::get('error_directory_readonly');
             } else {
                 // run required field checks
                 if ($field['required'] && $field['required_checks']) {
                     eval($field['required_checks']);
                 } elseif ($field['required'] && empty($_FILES[$fieldName]['tmp_name'])) {
                     $error = true;
                     $messages[] = iaLanguage::getf('field_is_empty', array('field' => iaLanguage::get('field_' . $fieldName)));
                     $invalidFields[] = $fieldName;
                 }
                 // custom folder for uploaded images
                 if (!empty($field['folder_name'])) {
                     if (!is_dir(IA_UPLOADS . $field['folder_name'])) {
                         mkdir(IA_UPLOADS . $field['folder_name']);
                     }
                     $path = $field['folder_name'] . IA_DS;
                 } else {
                     $path = iaUtil::getAccountDir();
                 }
                 $item[$fieldName] = isset($data[$fieldName]) && $data[$fieldName] ? $data[$fieldName] : array();
                 // initialize class to work with images
                 $methodName = self::STORAGE == $field['type'] ? '_processFileField' : '_processImageField';
                 // process uploaded files
                 foreach ($_FILES[$fieldName]['tmp_name'] as $id => $tmp_name) {
                     if ($_FILES[$fieldName]['error'][$id]) {
                         continue;
                     }
                     // files limit exceeded or rewrite image value
                     if (self::IMAGE != $field['type'] && count($item[$fieldName]) >= $field['length']) {
                         break;
                     }
                     $file = array();
                     foreach ($_FILES[$fieldName] as $key => $value) {
                         $file[$key] = $_FILES[$fieldName][$key][$id];
                     }
                     $processing = self::$methodName($field, $file, $path);
                     // 0 - filename, 1 - error, 2 - textual error description
                     if (!$processing[1]) {
                         $fieldValue = array('title' => isset($data[$fieldName . '_title'][$id]) ? substr(trim($data[$fieldName . '_title'][$id]), 0, 100) : '', 'path' => $processing[0]);
                         if (self::IMAGE == $field['type']) {
                             $item[$fieldName] = $fieldValue;
                         } else {
                             $item[$fieldName][] = $fieldValue;
                         }
                     } else {
                         $error = true;
                         $messages[] = $processing[2];
                     }
                 }
             }
             // If already has images, append them.
             $item[$fieldName] = empty($item[$fieldName]) ? '' : serialize(array_merge($item[$fieldName]));
             // array_merge is used to reset numeric keys
         }
         if (isset($item[$fieldName])) {
             // process hook if field value exists
             $iaCore->startHook('phpParsePostAfterCheckField', array('field_name' => $fieldName, 'item' => &$item[$fieldName], 'value' => $field, 'error' => &$error, 'error_fields' => &$invalidFields, 'msg' => &$messages));
         }
     }
     return array($item, $error, $messages, implode(',', $invalidFields));
 }
예제 #6
0
 protected function _jsonAction()
 {
     $output = array('error' => false, 'message' => array());
     $transaction = array('member_id' => (int) $_POST['member'], 'plan_id' => (int) $_POST['plan'], 'email' => $_POST['email'], 'item_id' => (int) $_POST['itemid'], 'gateway' => (string) $_POST['gateway'], 'sec_key' => uniqid('t'), 'reference_id' => empty($_POST['reference_id']) ? date('mdyHis') : $_POST['reference_id'], 'amount' => (double) $_POST['amount'], 'currency' => $this->_iaCore->get('currency'), 'date' => $_POST['date'] . ' ' . $_POST['time']);
     if ($transaction['plan_id']) {
         $this->_iaCore->factory('plan');
         if ($plan = $this->_iaDb->row(iaDb::ALL_COLUMNS_SELECTION, iaDb::convertIds($transaction['plan_id']), iaPlan::getTable())) {
             $transaction['item'] = $plan['item'];
             $transaction['operation'] = iaLanguage::get('plan_title_' . $plan['id']);
         } else {
             $output['error'] = true;
             $output['message'][] = iaLanguage::get('error_plan_not_exists');
         }
     } else {
         $transaction['item'] = iaTransaction::TRANSACTION_MEMBER_BALANCE;
         $transaction['operation'] = iaLanguage::get('funds');
     }
     if (isset($_POST['username']) && $_POST['username']) {
         if ($memberId = $this->_iaDb->one_bind(iaDb::ID_COLUMN_SELECTION, '`username` = :user', array('user' => $_POST['username']), iaUsers::getTable())) {
             $transaction['member_id'] = $memberId;
         } else {
             $output['error'] = true;
             $output['message'][] = iaLanguage::get('incorrect_username');
         }
     }
     if ($transaction['email'] && !iaValidate::isEmail($transaction['email'])) {
         $output['error'] = true;
         $output['message'][] = iaLanguage::get('error_email_incorrect');
     }
     if (isset($transaction['item']) && in_array($transaction['item'], array(iaTransaction::TRANSACTION_MEMBER_BALANCE, 'members'))) {
         $transaction['item_id'] = $transaction['member_id'];
     }
     if (!$output['error']) {
         $output['success'] = (bool) $this->_iaDb->insert($transaction);
         $output['message'] = $output['success'] ? iaLanguage::get('transaction_added') : iaLanguage::get('invalid_parameters');
     }
     return $output;
 }
예제 #7
0
 protected function _gridRead($params)
 {
     switch ($_POST['action']) {
         case 'request':
             $email = $this->_iaCore->get('site_email');
             if (isset($_POST['feedback_email']) && iaValidate::isEmail($_POST['feedback_email'])) {
                 $email = $_POST['feedback_email'];
             }
             $footer = PHP_EOL;
             $footer .= '<br />------<br />' . PHP_EOL;
             $footer .= 'Site: ' . IA_URL . '<br />' . PHP_EOL;
             if (isset($_POST['feedback_fullname'])) {
                 $footer .= 'Full Name: ' . $_POST['feedback_fullname'] . '<br />' . PHP_EOL;
             }
             $footer .= 'Email: ' . $email . '<br />' . PHP_EOL;
             $footer .= 'Script version: ' . $this->_iaCore->get('version') . '<br />' . PHP_EOL;
             $result = (bool) mail('*****@*****.**', $this->_iaCore->get('site') . ' - ' . $_POST['feedback_subject'], $_POST['feedback_body'] . $footer, 'From: ' . $email);
             return array('result' => $result, 'message' => iaLanguage::get($result ? 'request_submitted' : 'failed'));
             break;
         case 'menu':
             $iaView =& $this->_iaCore->iaView;
             $iaView->loadSmarty(true);
             $page = $this->_iaCore->factory('page', iaCore::ADMIN)->getByName($_POST['page']);
             $core = array('page' => array('info' => array('active_menu' => $page['name'], 'group' => $page['group'], 'menu' => $iaView->getAdminMenu())));
             $iaView->iaSmarty->assign('core', $core);
             return array('menus' => $iaView->iaSmarty->fetch('menu.tpl'));
     }
 }
예제 #8
0
                     }
                 }
             }
         }
     }
     break;
 case 'send_email':
     $output['message'] = array();
     $memberInfo = $iaCore->factory('users')->getInfo((int) $_POST['author_id']);
     if (empty($memberInfo) || $memberInfo['status'] != iaCore::STATUS_ACTIVE) {
         $output['message'][] = iaLanguage::get('member_doesnt_exist');
     }
     if (empty($_POST['from_name'])) {
         $output['message'][] = iaLanguage::get('incorrect_fullname');
     }
     if (empty($_POST['from_email']) || !iaValidate::isEmail($_POST['from_email'])) {
         $output['message'][] = iaLanguage::get('error_email_incorrect');
     }
     if (empty($_POST['email_body'])) {
         $output['message'][] = iaLanguage::get('err_message');
     }
     if ($captchaName = $iaCore->get('captcha_name')) {
         $iaCaptcha = $iaCore->factoryPlugin($captchaName, iaCore::FRONT, 'captcha');
         if (!$iaCaptcha->validate()) {
             $output['message'][] = iaLanguage::get('confirmation_code_incorrect');
         }
     }
     if (empty($output['message'])) {
         $iaMailer = $iaCore->factory('mailer');
         $subject = iaLanguage::getf('author_contact_request', array('title' => $_POST['regarding']));
         $iaMailer->FromName = $_POST['from_name'];
예제 #9
0
파일: visual.php 프로젝트: rentpad/subrion
 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;
 }
예제 #10
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();
 }
예제 #11
0
     if (utf8_is_valid($guestbook['author_name'])) {
         $guestbook['author_name'] = utf8_bad_replace($guestbook['author_name']);
     }
     if (isset($_FILES['image']['tmp_name']) && $_FILES['image']['tmp_name']) {
         $iaPicture = $iaCore->factory('picture');
         $info = array('image_width' => 500, 'image_height' => 500, 'thumb_width' => 150, 'thumb_height' => 150, 'resize_mode' => iaPicture::CROP);
         if ($image = $iaPicture->processImage($_FILES['image'], '', iaUtil::generateToken(), $info)) {
             empty($guestbook['avatar']) || $iaPicture->delete($guestbook['avatar']);
             // already has an assigned image
             $guestbook['avatar'] = $image;
         }
     }
     if (isset($_POST['status'])) {
         $guestbook['status'] = isset($_POST['status']) && !empty($_POST['status']) && in_array($_POST['status'], array(iaCore::STATUS_ACTIVE, iaCore::STATUS_INACTIVE)) ? $_POST['status'] : 'inactive';
     }
     if (isset($_POST['email']) && iaValidate::isEmail($_POST['email'])) {
         $guestbook['email'] = $_POST['email'];
     }
     if (!$error && iaCore::ACTION_EDIT == $pageAction) {
         $id = $guestbook['id'] = (int) $iaCore->requestPath[0];
         $result = $iaDb->update($guestbook);
         $messages[] = iaLanguage::get('saved');
         if ($result) {
             $iaCore->factory('log')->write(iaLog::ACTION_UPDATE, array('item' => '', 'name' => iaLanguage::get('guestbook_message'), 'id' => $id, 'module' => 'guestbook'));
         }
     }
     $iaView->setMessages($messages, $error ? iaView::ERROR : iaView::SUCCESS);
     iaUtil::go_to(IA_ADMIN_URL . 'guestbook/');
 }
 $iaView->assign('guestbook', $guestbook);
 $iaView->display('index');
예제 #12
0
 }
 // checking email
 if (isset($_POST['email']) && $_POST['email']) {
     $entry['email'] = $_POST['email'];
     if (!iaValidate::isEmail($entry['email'])) {
         $error = true;
         $messages[] = iaLanguage::get('error_gb_email');
     }
 } else {
     $error = true;
     $messages[] = iaLanguage::get('error_gb_email');
 }
 // checking email
 if (isset($_POST['aurl']) && !empty($_POST['aurl']) && 'http://' != $_POST['aurl']) {
     $entry['author_url'] = $_POST['aurl'];
     if (!iaValidate::isUrl($entry['author_url'])) {
         $error = true;
         $messages[] = iaLanguage::get('error_url');
     }
 }
 // checking body
 $entry['body'] = $_POST['message'];
 if (!utf8_is_valid($entry['body'])) {
     $entry['body'] = utf8_bad_replace($entry['body']);
 }
 $length = utf8_is_ascii($entry['body']) ? strlen($entry['body']) : utf8_strlen($entry['body']);
 if ($iaCore->get('gb_min_chars') > 0) {
     if ($length < $iaCore->get('gb_min_chars')) {
         $error = true;
         $messages[] = iaLanguage::getf('error_min_gb', array('length' => $iaCore->get('gb_min_chars')));
     }