} if ($e['all'] === false) { $smarty->assign('data', $values); $smarty->assign('form_rows', $form_rows); $smarty->assign('options', getSiteOptions()); $smarty->assign('__lang', $__lang); $smarty->assign('site_url', 'http://' . $_SERVER['SERVER_NAME'] . '/'); $mail_body = $smarty->fetch(DOC . 'templates/site/mail_templates/mail.tpl'); $check = sendMail($form['email'], $form['subj'], $mail_body, '', $files); //sendMail($form['email'], $form['subj'], $mail_body, $files); //$test = sendMail('*****@*****.**', $form['subj'], $mail_body, $files); if ($form['admin'] == 1) { $v = array($form_rows, $values, $files); $val = serialize($v); $query = 'CALL form_orders_insert(:field_name, :field_value)'; $params = array(':field_name' => $form['name'], ':field_value' => $mail_body); PdoWrap::execute($query, $params); } if (Text::get_post('ajax') == 'yes') { echo $check; exit; } header("Location: /"); exit; } } if (Text::get_post('ajax') == 'yes') { echo implode('|', array_keys($e)); exit; } $smarty->assign('e', $e);
foreach ($data as $key => $value) { if (in_array($key, $tables)) { $data[$key]['relation']['values'] = $object->getGroupsList($key, 0); } elseif (!in_array($key, $object->getExc()) && isset($foreign_keys[$key]) && $foreign_keys[$key] != '') { $data[$key]['relation']['values'] = $object->getGroupsList($foreign_keys[$key], 0); } } // Добавление визуального редактора $editor_cell = array('anons', 'text', 'text2', 'text3', 'text4', 'text5', 'full_text'); } // подключение файла модуля if (is_file(DOC . 'modules/' . $action . '/admin/' . $module_do . '.php')) { require DOC . 'modules/' . $action . '/admin/' . $module_do . '.php'; } // Обработчик Добавления/обновления записей в таблице if (Text::get_post('send') != '') { if ($id == 0) { // Добавление записи в таблицу $new_id = $object->setRow($table); } else { // Редактирование записи $object->editRow($table, $id); clearCacheFiles($smarty, 0, $table, $id); if ($table == 'catalog_groups') { $query = 'CALL catalog_groups_update_links_after_update(:id)'; $params = array(':id' => $id); PdoWrap::execute($query, $params); } } $errors = $object->getErrors(); // Редирект
header('location: /profile/?action=options'); exit; } } // Получение настроек $cat = $user->getCatOptions(); $catall = empty($cat) ? 1 : 0; self::setTemplatesVar($tpl, 'cat', $cat); self::setTemplatesVar($tpl, 'catall', $catall); break; case 'addWallMessage': // Добавление сообщение на стену $text = Text::adsl(strip_tags(Text::get_post('text'))); $user_id = (int) Text::get_post('user_id'); $profile_id = (int) Text::get_post('profile_id'); $parent = (int) Text::get_post('parent'); $id = $user->addComment($text, $user_id, $profile_id, $parent, PROFILE); echo $id; exit; break; case 'getWallMessage': $id = (int) Text::get_get('id'); $result = $user->getMessage($id); $result['text'] = Text::stsl($result['text']); echo json_encode($result); exit; break; case 'showlist': // Определение шаблона $tpl = 'profile_publics'; $type = Text::get_get('type') == 'all' ? Text::get_get('type') : (int) Text::get_get('type');
/** * Дополнительная оработка полей * @param $id * @return array * */ public function additionInputDataHandler($id = 0) { $errors = array('all' => false); // Обработка даты рождения if (isset($_POST['birthday'])) { $birthday = Text::get_post('birthday'); $_POST['birthday'] = getTimestampFromCalendar($birthday); } if ($id == 0) { // Проверяем наличие E-mail $email = Text::get_post('email'); if (Text::check_mail($email) == false) { $errors['all'] = $errors['email'] = true; } else { $result = $this->getRowByField('users', 'email', $email); if (isset($result['id'])) { $errors['all'] = $errors['email2'] = true; } } // Проверяем пароль $pass = Text::get_post('pass'); $pass_repeat = Text::get_post('repass'); if (empty($pass)) { $errors['all'] = $errors['pass'] = true; } elseif (strlen($pass) < 6) { $errors['all'] = $errors['pass3'] = true; } elseif (checkSimplePassword($pass) < 2) { $errors['all'] = $errors['pass4'] = true; } elseif ($pass != $pass_repeat) { $errors['all'] = $errors['pass2'] = true; } elseif ($pass != $pass_repeat) { $errors['all'] = $errors['pass2'] = true; } else { $_POST['pass'] = md5($pass); } // Необходимо указать либо срок беременности либо детей if (empty($_POST['pregnancy']) && $_POST['child'][0]['name'] == '') { $errors['all'] = $errors['pregnancy'] = true; $errors['all'] = $errors['child'] = true; } } else { // Проверяем наличие E-mail $email = Text::get_post('email'); if (Text::check_mail($email) == false) { $errors['all'] = $errors['email'] = true; } else { $result = $this->getRowByField('users', 'email', $email); if ($result['email'] != $_SESSION['siteuser']['email'] && isset($result['id'])) { $errors['all'] = $errors['email2'] = true; } } // Проверяем пароль $pass = Text::get_post('pass'); $pass_repeat = Text::get_post('repass'); if ($pass != '') { if (empty($pass)) { $errors['all'] = $errors['pass'] = true; } elseif (strlen($pass) < 6) { $errors['all'] = $errors['pass3'] = true; } elseif (checkSimplePassword($pass) < 2) { $errors['all'] = $errors['pass4'] = true; } elseif ($pass != $pass_repeat) { $errors['all'] = $errors['pass2'] = true; } else { $_POST['pass'] = md5($pass); } } else { $result = $this->getRow('users', $id); $_POST['pass'] = $result['pass']; } } // Обработка поля с детьми $_POST['child'] = serialize($_POST['child']); return $errors; }
/** * Обновление данных. */ if (Text::get_post('save') != '') { // Подсчет количества групп. $count = count($groups); // Удаление прав для модуля. $query = 'CALL delete_table_row_by_field(:table_name, :table_cell, :cell_value)'; $params = array(':table_name' => PREF . 'users_groups_rights', ':table_cell' => 'module_id', ':cell_value' => (int) $id); PdoWrap::execute($query, $params); // Массив прав для чтения. $reads = Text::get_post('read'); // Массив прав для изменения. $edits = Text::get_post('edit'); // Массив прав для удаления. $deletes = Text::get_post('delete'); // Обновление. for ($i = 0; $i < $count; $i++) { // Флаг чтения. $read = isset($reads[$groups[$i]['id']]) ? 1 : 0; // Флаг редактирования. $edit = isset($edits[$groups[$i]['id']]) ? 1 : 0; // Флаг удаления. $delete = isset($deletes[$groups[$i]['id']]) ? 1 : 0; // Запрос. $query = 'CALL users_insert_user_rights(:group_id, :module_id, :read, :edit, :delete)'; $params = array(':group_id' => (int) $groups[$i]['id'], ':module_id' => $id, ':read' => $read, ':edit' => $edit, ':delete' => $delete); PdoWrap::execute($query, $params); } // Возврат. location($__return);
$gallery->setParentTable(PREF . 'gallery_groups'); // Основная переменная $data = array(); // Массив ошибок $errors = array('all' => false); // Получение информации о записи $data = $gallery->getAdminEditedRow($id); // Получение списка групп $groups = $gallery->getList($gallery->getParentTable()); if (Text::get_post('send') != '') { $_POST['group_id'] = 1; $_POST['date_post'] = $data['date_post']['value']; $_POST['head_title'] = $_POST['name']; $_POST['active'] = 1; // Проверяем псевдоним записи $alias = $gallery->makeAlias(Text::get_post('name')); $_POST['alias'] = $gallery->checkAlias($alias); $gallery->setProcPrefix('gallery'); // Добавление записи в таблицу $errors = $gallery->editSimpleTable($id); // Редирект if (!is_array($errors) or $errors['all'] === false) { header('location: /gallery/'); exit; } } // Поля таблицы запрещенные для редактирования $exc = array('id', 'lang_id', 'date_add', 'date_edit', 'user_add', 'user_edit'); // Добавление визуального редактора $editor_cell = array('text'); // Поля разрешенные для заполнения только администратором
<?php /** * Редактирование характеристики. */ echo Text::strtolow(translitIt(Text::get_post('str')));
// Идетификатор записи. $id = (int) Text::get_get('id'); // Основная переменная $data = array(); // Массив ошибок $errors = array('all' => false); // Получение информации о записи $data = $forms->getAdminEditedRow($id); if ($id == 0) { // Получение позиции для новой записи $pos = $forms->getPosition($forms->getTable(), 'position'); $data['position']['value'] = $pos + 1; } if (Text::get_post('send') != '') { if (isset($_POST['date_post'])) { $date_post = Text::get_post('date_post'); $data['date_post']['value'] = getTimestampFromCalendar($date_post['date'], $date_post['hour'], $date_post['minute']); } if ($id == 0) { // Добавление записи в таблицу $errors = $forms->insertSimpleTable(); } else { // Редактирование записи $errors = $forms->editSimpleTable($id); } // Редирект if (!is_array($errors) or $errors['all'] === false) { location($__return); } } // Получение данных для опыта работы
/** * Групповые операции * @param string $table * @param string $return */ public function groupActions($table, $return = '/') { if (isset($_POST['action'])) { $action = Text::get_post('group_action'); $ids = Text::get_post('id'); switch ($action) { // Скрытие case 'hide': $this->changeActive($table, $ids, 0); location($return); exit; break; // Показ // Показ case 'show': $this->changeActive($table, $ids, 1); location($return); exit; break; // Удаление // Удаление case 'delete': if (is_array($ids) && !empty($ids)) { foreach ($ids as $id) { $this->deleteTableRow($table, $id); } } location($return); exit; break; default: location($return); exit; break; } } }
/** * Импорт XML файла в каталог * @return array|int|bool */ public function importXML() { $answer = false; if (Text::get_post('do') == 'load_xml') { if (isset($_FILES['xml']) && $_FILES['xml']['error'] == 0 && $_FILES['xml']['type'] == 'text/xml') { if ($_FILES['xml']['name'] == 'import.xml') { if (move_uploaded_file($_FILES['xml']['tmp_name'], DOC . 'userfiles/import.xml')) { chmod(DOC . 'userfiles/import.xml', 0644); $reader = new XMLReader(); $reader->open(DOC . 'userfiles/import.xml'); $answer = $this->importProduction($reader); $reader->close(); } } elseif ($_FILES['xml']['name'] == 'offers.xml') { if (move_uploaded_file($_FILES['xml']['tmp_name'], DOC . 'userfiles/offers.xml')) { chmod(DOC . 'userfiles/offers.xml', 0644); $reader = new XMLReader(); $reader->open(DOC . 'userfiles/offers.xml'); $answer = $this->updateImportProduction($reader); $reader->close(); } } } } return $answer; }
/** * Редактирование данных в таблице * При успешном добавлении возвращает TRUE * При провале возвращает массив ошибок * @param string $table * @param int $id * @param array $data * @return mixed */ public function editRow($table, $id, $data = array()) { $error = array('all' => false); if (empty($data)) { $data = $this->base->postInputDataHandler($table); $error = $this->base->getErrors(); } $parent = (int) Text::get_post('parent'); if (isset($data['alias'])) { $check_alias = $this->base->checkAlias($table, $id, $data['alias'], $parent, 1); if ($check_alias == 1) { $error['all'] = $error['alias'] = true; } elseif ($check_alias == 2) { $error['all'] = $error['alias2'] = true; } } if (isset($data['date_post']) && is_array($data['date_post'])) { $data['date_post'] = getTimestampFromCalendar($data['date_post']['date'], $data['date_post']['hour'], $data['date_post']['minute']); } $data['user_edit'] = isset($_SESSION['user']['id']) ? $_SESSION['user']['id'] : 0; if (!isset($error['all']) || $error['all'] === false) { $this->base->editTableRow($table, $data, $id, $parent); return true; } $this->setErrors($error); return false; }
if (isset($_FILES) && count($_FILES) > 0) { $file = files::loadFiles(); foreach ($file as $key => $value) { if (isset($value['name'])) { $_POST[$key] = $value['name']; } } } PdoWrap::execute('CALL clear_options_checkboxes()'); foreach ($_POST as $key => $value) { if ($key != 'do' && $key != 'save') { if (isset($_POST['delete'][$key])) { $_POST[$key] = ''; } $query = 'CALL options_update(:field_name, :field_value, :field_user_edit)'; $params = array(':field_name' => $key, ':field_value' => Text::get_post($key), ':field_user_edit' => $_SESSION['user']['id']); PdoWrap::execute($query, $params); } } location($__return); exit; } // Получение списка настроек $data = getSiteOptions2(); // Получение списка таблиц $tables_tmp = PdoWrap::select('SHOW TABLES'); $tables = array(); for ($i = 0; $i < count($tables_tmp); $i++) { foreach ($tables_tmp[$i] as $value) { $tables[] = preg_replace('/^(' . PREF . ')(.+)$/', '$2', $value); }
} else { if (Text::get_get('ac_field') == 1) { $word = Text::get_get('term'); $data = $object->findItem($word); echo json_encode($data); exit; } $table = 'catalog_complect'; $do = 'catalog_comlect_relation_list'; // Удаление $delete_handler = 'catalog_complect_set_delete'; $id = (int) Text::get_get('group_id'); $complect_info = $object->getRow('catalog_complect', $id); // Добавление связей if (Text::get_post('do') == 'add_relation') { $item_id2 = (int) Text::get_post('relation1'); $item_id1 = (int) $id; // Если добавленный элемент является "radio" удаляем элементы "radio" из той же группы // Получение информации о добавляемом элементе $item_info = $object->getRow('catalog_features', $item_id2); if ($item_info['type'] == 5) { // Получение связанных элементов $data = $object->getRelationList(PREF . 'catalog_complect_values', PREF . 'catalog_features', 'complect_id', 'feature_id', $id); for ($i = 0; $i < count($data); $i++) { if ($item_info['catalog_features_group'] == $data[$i]['catalog_features_group']) { // Удаление записи из таблицы $object->deleteRelations(PREF . 'catalog_complect_values', 'complect_id', 'feature_id', $item_id1, $data[$i]['id']); } } } $object->setRelations(PREF . 'catalog_complect_values', 'complect_id', 'feature_id', $item_id1, $item_id2);
<?php /** * Добавление/редактирование раздела. * @author Alexey O Klimov * @update 25.08.2010 */ // Запрет на обращение к файлу. if (realpath($_SERVER['SCRIPT_FILENAME']) == realpath(__FILE__)) { header('Location: /'); exit; } $table = Text::get_get('table'); if (Text::get_post('do') == 'save') { $options->setTableOptions($table); location($__return . '#options_table'); exit; } $data = $options->getTableOptions($table); // Выгрузка переменных в шаблон $smarty->assign(array('table' => $table, 'data' => $data['data'], 'table_options' => $data['table_options']));
<?php // Запрет на обращение к файлу. if (realpath($_SERVER['SCRIPT_FILENAME']) == realpath(__FILE__)) { header('Location: /'); exit; } // Добавление коммента if (Text::get_post('do') == 'add_commetns') { $id = $object->setRow('comments'); if (Text::get_post('use_ajax') == 1) { if ($id > 0) { // Получение коммента $comment = $object->getComment($id); $smarty->assign('comments', $comment); $smarty->assign('__lang', $object->getLocalization()); $data = array('error' => $object->getErrors(), 'data' => $smarty->fetch(DOC . 'templates/site/matches/comment_row.tpl')); } else { // вывод ошибки $data = array('error' => $object->getErrors(), 'data' => ''); } echo json_encode($data); exit; } // Редирект на страницу отправления header('location: ' . Text::get_post('from_page')); exit; }
/** * Обязательная функция для компонента. * */ public function start() { $this->setObject(); // Определение полей формы $this->form = isset($this->params['form']) && (int) $this->params['form'] > 0 ? $this->params['form'] : ""; $success = (int) Text::get_get('success'); // Получение иформации формы $form = $this->__getFormInfo($this->form); // Получение полей формы $form_rows = $this->__getFormFields($this->form); if (Text::get_get('do') == 'ajaxUploadFile') { $file = load_file('Filedata', 'userfiles/', 1); echo $file['name']; exit; } if (Text::get_get('do') == 'ajaxDeleteFile') { $file = Text::get_get('file'); if (file_exists(DOC . 'userfiles/' . $file)) { unlink(DOC . 'userfiles/' . $file); } exit; } $e = array('all' => false); if (Text::get_post('do') == 'send_order') { $ext = array('do', 'send'); $values = array(); foreach ($_POST as $key => $value) { if (!in_array($key, $ext)) { if (!is_array($value)) { $values[$key] = htmlspecialchars(stripcslashes(Text::get_post($key))); } else { $values[$key] = Text::get_post($key); } } } foreach ($values as $k => $v) { for ($i = 0; $i < count($form_rows); $i++) { if ($k == $form_rows[$i]['alias']) { $form_rows[$i]['default'] = $v; if ($form_rows[$i]['check'] == 1) { if ($k == 'email') { if (Text::check_mail($v) === false) { $e['all'] = $e[$k] = true; } } else { if (empty($v)) { $e['all'] = $e[$k] = true; } } } } } } // Обработка изображений $files = array(); if (isset($values['file'])) { foreach ($values['file'] as $v) { $files[] = array('name' => $v, 'orig' => $v); } } else { foreach ($_FILES as $key => $value) { if ($value['error'] == 0) { $files[$key] = load_file($key); } } } if ($e['all'] === false) { ob_start(); $this->smarty->assign('data', $values); $this->smarty->assign('form_rows', $form_rows); $this->smarty->assign('options', getSiteOptions()); $this->smarty->assign('site_url', 'http://' . $_SERVER['SERVER_NAME'] . '/'); $this->smarty->display($this->doc . 'mail.tpl'); $mail_body = ob_get_contents(); ob_clean(); $test = sendMail($form['email'], $form['subj'], $mail_body, '', $files); //sendMail($form['email'], $form['subj'], $mail_body, $files); if ($form['admin'] == 1) { $v = array($form_rows, $values, $files); $val = serialize($v); $query = 'CALL form_orders_insert(:field_name, :field_value)'; $params = array(':field_name' => $form['name'], ':field_value' => $mail_body); PdoWrap::execute($query, $params); } header("Location: " . $_SERVER['REQUEST_URI'] . (preg_match('/\\?/', $_SERVER['REQUEST_URI']) ? '&' : '?') . 'success=1'); exit; } } $this->smarty->assign('e', $e); $this->smarty->assign('form', $form); $this->smarty->assign('form_rows', $form_rows); $this->smarty->assign('success', $success); return; }
/** * Редактирование данных в таблице * При успешном добавлении возвращает TRUE * При провале возвращает массив ошибок * @param string $table * @param int $id * @param array $data * @return mixed */ public function editRow($table, $id, $data = array()) { $error = array('all' => false); if (empty($data)) { $data = $this->base->postInputDataHandler($table); $error = $this->base->getErrors(); } $parent = (int) Text::get_post('parent'); $parent = $parent > 0 ? $parent : 1; $check_alias = $this->base->checkAlias($table, $id, $data['alias'], $parent, $data['type']); if ($check_alias == 1) { $error['all'] = $error['alias'] = true; } elseif ($check_alias == 2) { $error['all'] = $error['alias2'] = true; } if ($data['type'] == 3 && $data['url'] == '') { $data['url'] = $data['alias']; } // Обновление идентификатора пользователя, добавившего запись $data['user_edit'] = $this->getUid(); if (!isset($error['all']) || $error['all'] === false) { $this->base->editTableRow($table, $data, $id, $parent); $query = 'CALL pages_update_links_after_update(:id)'; $params = array(':id' => $id); PdoWrap::execute($query, $params); return true; } $this->setErrors($error); return false; }
/** * Групповые операции * @param string $return */ public function groupActions($return = '/') { if (isset($_POST['action'])) { $action = Text::get_post('group_action'); $ids = Text::get_post('id'); switch ($action) { // Скрытие case 'hide': $this->changeActive($ids, 0); location($return); exit; break; // Показ // Показ case 'show': $this->changeActive($ids, 1); location($return); exit; break; // Удаление // Удаление case 'delete': // Получение изображений $data = $this->getSomeRows(implode(',', $ids)); for ($i = 0; $i < count($data); $i++) { if (isset($data[$i]['image']) && $data[$i]['image'] != '') { files::deleteFile($data[$i]['image']); } if (isset($data[$i]['icon']) && $data[$i]['icon'] != '') { files::deleteFile($data[$i]['icon']); } if (isset($data[$i]['file']) && $data[$i]['file'] != '') { files::deleteFile($data[$i]['file']); } } $this->deleteRowsByIds($ids); location($return); exit; break; default: location($return); exit; break; } } }
<?php // Запрет на обращение к файлу. if (realpath($_SERVER['SCRIPT_FILENAME']) == realpath(__FILE__)) { header('Location: /'); exit; } if (isset($_SESSION['user'])) { header('Location: /admin/'); exit; } $auth_loginname_str = Text::get_post('auth_loginname_str'); $auth_password_str = md5(Text::get_post('auth_password_str')); $msg = ''; if (!empty($auth_loginname_str)) { $query = 'CALL `get_user_info`(:user_login, :user_pass)'; $params = array(':user_login' => $auth_loginname_str, ':user_pass' => $auth_password_str); $result = PdoWrap::selectRow($query, $params); if (!empty($result)) { $return = '/admin/'; if (Text::get_get('return') != '') { $return = urldecode(Text::get_get('return')); } $_SESSION['user'] = $result; location($return); } else { $msg = 'В доступе отказано'; } } $smarty->assign('msg', $msg);
// Восстановление пароля пользователя case 'forgot': break; default: require_once DOC . '/error404.php'; exit; break; } } else { switch (end($module_aString)) { // редактирование пользователей case 'edit': $tpl = 'profile_edit'; $page['h1'] = $object->getLocalization('edit'); $bread_crumbs[] = array('link' => '', 'name' => $object->getLocalization('edit')); if (Text::get_post('do') == 'user_edit') { $error = $object->editUserSelf(); // вывод информации об ошибках $smarty->assign('error', $error); foreach ($_POST as $key => $value) { if ($key == 'child') { $value = unserialize($value); } $smarty->assign($key, $value); } } else { foreach ($_SESSION['siteuser'] as $key => $value) { if ($key == 'child') { $value = unserialize($value); } $smarty->assign($key, $value);