|
|
Название проекта: |
Сделать капчу
|
Кто разместил: |
Внешний проект с weblancer.net
|
Открыт: |
08-Nov-2021 10:23 GMT |
Описание: |
Сделать капчу 20ч 200$
<?php
/**
* Rendering HTML code (UI)
*
*
*/
function psp_show_page_header( $remain = false ) {
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Проверка Страховой Принадлежности</title>
<?php
psp_get_styles();
?>
<script type="text/javascript" src="assets/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="assets/daterangepicker/moment.min.js"></script>
<script type="text/javascript" src="assets/daterangepicker/daterangepicker.js"></script>
<link rel="stylesheet" type="text/css" href="assets/daterangepicker/daterangepicker.css"/>
<?php
psp_show_ajax_code( $remain );
?>
</head>
<!-- <body>
<div id="wrap-<?php echo psp_get_page(); ?>">
-->
<?php
//echo '<div><h2>' . psp_get_pages( psp_get_page() ) . '</h2></div>';
}
function psp_get_styles() {
?>
<link rel='stylesheet' href='styles.css' type='text/css' media='all'/>
<style>
body {
font-family: Arial, Helvetica, sans-serif;
text-align: center;
padding-left: 1em;
padding-right: 1em;
}
h2 {
/*margin: 0 1em 1em 1em;*/
margin: 0;
color: #444;
}
#wrap-home #psp-content,
#wrap-single_form #psp-content,
#wrap-group_form #psp-content,
#wrap-view_single #psp-content {
margin: 0 auto;
width: 40%;
min-width: 400px;
/*padding: 0.5em 3em 3em 3em;*/
}
@media screen and (max-width: 900px) {
#wrap-home #psp-content,
#wrap-single_form #psp-content,
#wrap-group_form #psp-content,
#wrap-view_single #psp-content {
width: 80%;
}
}
/* Tables */
.psp-table {
width: 100%;
text-align: left;
font-size: 0.8em;
border-collapse: collapse;
/*border: solid 3px #fff;
border-top: #eee solid 2px;*/
border: #bbb solid 1px;
margin-top: 1em;
margin-bottom: 1em;
padding-top: 1em;
}
.psp-table th,
.psp-table td {
padding: 0.6em;
border: #bbb solid 1px;
}
.psp-table th {
background-color: #eee;
}
/* Log */
#psp-view-full {
overflow: auto;
}
span.req-status-1 {
color: green;
}
.req-status-2,
.req-status-3 {
color: red;
}
/* CSV */
.psp-csv-errors {
margin-bottom: 2em;
}
.psp-csv-errors tr td:first-of-type {
text-align: center;
}
/* Zapros */
table.psp-viewer {
text-align: left;
/*margin-bottom: 1em;*/
width: 100%;
}
table.psp-viewer td {
padding: 0.6em;
}
table.psp-viewer td:first-of-type {
min-width: 11em;
width: 35%;
font-weight: bold;
background-color: #e0e0e0;
}
table.psp-viewer td:last-of-type {
background-color: #f5f5f5;
}
/* Forms */
.psp-form {
width: 100%;
background-color: #eee;
border: solid 3px #ddd;
}
.psp-form table {
width: 100%;
}
.psp-form .psp-label {
margin-top: 0.7em;
margin-bottom: 0.4em;
}
.psp-form input,
.psp-form input,
.psp-form select,
.psp-form .psp-upload-file {
padding: 0.4em;
width: 70%;
font-size: 1em;
letter-spacing: 0.04em;
}
.psp-form select {
width: 72%;
}
.psp-form .psp-upload-file {
background-color: #fff;
display: inline-block;
}
.psp-form button {
width: 72%;
margin: 0.5em;
background-color: #0088cc;
border-radius: 2px;
border: none;
display: inline-block;
cursor: pointer;
color: #ffffff;
font-size: 1em;
padding: 0.8em;
text-decoration: none;
/*text-shadow: 0px 1px 0px #3d768a;*/
}
.psp-form button:hover {
background-color:#026799;
}
form#psp-search input,
form#psp-search select {
padding: 0.3em;
}
/* Buttons */
a.psp-small-button,
button.psp-small-button {
display: inline-block;
background-color: #0088cc;
color: #fff;
padding: 0.5em;
text-decoration: none;
border: none;
border-radius: 4px;
font-size: 90%;
}
button.psp-small-button {
padding: 0.3em 0.6em 0.3em 0.6em;
}
a.psp-small-button:hover,
button.psp-small-button:hover {
background-color: #026799;
cursor: pointer;
}
#psp-history-search {
float: right;
padding: 0 0 1em 1em;
}
/* Navigation */
.psp-navigation table {
border-collapse: collapse;
border: none;
background-color: #fff;
}
.psp-navigation td {
background-color: #008080;
transition-property: background-color;
transition-duration: 0.3s;
}
.psp-navigation td:hover {
background-color: #c2f4f4;
}
.psp-navigation td:hover a {
color: #000;
}
.psp-navigation a {
display: inline-block;
padding: 0.5em;
text-decoration: none;
color: #fff;
}
#psp-nav-bar {
width: 100%;
background-color: #eeeeee;
/*overflow: auto;*/
padding: 0;
margin-top: 2em;
}
#psp-nav-bar table {
/*float: right;*/
margin: 0 0 0 auto;
}
#psp-nav-bar table:last-child td {
border-left: #fff solid 4px;
}
#psp-nav-menu table{
margin: 0 auto;
}
#psp-nav-menu td {
border-top: solid 0.5em #fff;
padding: 0.5em;
}
/* Pagination links */
.pagination {
display: inline-block;
}
.pagination a {
color: black;
background-color: #fff;
float: left;
padding: 5px 12px;
text-decoration: none;
border: 1px solid #ddd;
}
.pagination a.active {
background-color: #444;
color: white;
border: 1px solid #444;
}
.pagination a:hover:not(.active) {background-color: #ddd;}
.pagination a:first-child {
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
.pagination a:last-child {
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
}
.pagination a.arrows {
/*font-size: 140%;
font-weight: 600;*/
}
</style>
<?php
}
function psp_show_footer() {
global $psp_start;
if ( $psp_start ) {
echo "\n".'<!-- Page generation time: ' . ceil( ( microtime( true ) - $psp_start ) * 1000 ) . ' ms -->';
}
echo "\n" . '<!-- User ID: ' . psp_get_user_id() . ' -->';
echo "\n" . '<!-- Version: ' . PSP_VERSION . ' -->';
if ( $range = psp_get_request_field( 'date_range_search', false ) ) {
$range = explode( '-', $range );
$range = array_map( 'strip_tags', $range );
$range = array_map( 'trim', $range );
$range = array_filter( $range );
}
else {
$range = array( 0, 0 );
}
//echo date('d.m.Y',strtotime('01.04.2016'));
?>
<!-- </div> -->
<script>
window.picker_date_begin = "<?php echo $range ?>";
window.picker_date_end = "<?php echo $range ?>";
// See config examples here: http://www.daterangepicker.com/
$('input').daterangepicker({
"maxDate": moment(),
//maxYear: parseInt(moment().format('YYYY'),10),
ranges: {
'Сегодня': ,
'Вчера': ,
'Последние 7 дней': ,
'Последние 30 дней': ,
'Этот месяц': ,
'Предыдущей месяц':
},
alwaysShowCalendars: true, // always show calendar if ranges are enabled
showCustomRangeLabel: false,
// Set selected range
startDate: (picker_date_begin !== "0" ? picker_date_begin : moment().subtract(6, 'days')),
endDate: (picker_date_end !== "0" ? picker_date_end : moment()),
locale: {
format: 'DD.MM.YYYY',
cancelLabel: 'Отмена',
applyLabel: 'Установить',
monthNames: ,
}
});
</script>
</body>
</html>
<?php
}
function psp_render_page() {
global $request;
//psp_show_messages();
?>
<body>
<div id="wrap-<?php echo psp_get_page(); ?>">
<div id="psp-content">
<?php
echo '<div style="background-color: #eee; padding: 0.5em; margin-bottom: 1em;"><h2>' . psp_get_pages( psp_get_page() ) . '</h2></div>';
psp_show_messages();
if ( CSV_Processor::has_errors() ) {
echo CSV_Processor::get_csv_errors();
echo '<p><a class="psp-small-button" href="?render_page=group_form">Загрузить другой файл</a></p>';
}
else {
switch ( psp_get_page() ) {
case 'home':
psp_show_home();
break;
case 'single_form':
psp_single_form( $request );
psp_show_history();
break;
case 'single_log':
psp_show_history( 'full' );
break;
case 'view_single':
psp_show_single( $request );
break;
case 'group_form':
psp_group_form();
break;
case 'group_log':
psp_show_group_history();
break;
case 'group_view':
psp_show_history( 'full' );
break;
}
psp_show_nav_bar();
}
?>
</div>
</div>
<?php
psp_show_footer();
}
function psp_get_pages( $page = null ) {
$ret = array(
'home' => array( 'Проверка Страховой Принадлежности', 0 ),
'single_form' => array( 'Индивидуальный Запрос', 1 ),
'single_log' => array( 'Журнал Индивидуальных Запросов', 1 ),
'view_single' => array( 'Карточка Запроса', 0 ),
'group_form' => array( 'Групповой Запрос', 1 ),
'group_log' => array( 'Журнал Групповых Запросов', 1 ),
'group_view' => array( 'Журнал Группового Запроса', 0 ),
);
if ( $page ) {
if ( isset( $ret ) ) {
return $ret;
}
return false;
}
return $ret;
}
function psp_show_nav_bar() {
global $request;
$pages = psp_get_pages();
$config = array( 'single_log', 'group_form' );
$config = array( 'single_form', 'group_form' );
$config = array( 'single_form', 'single_log', 'group_form' );
$config = array( 'group_log', 'single_form' );
$config = array( 'group_form', 'single_form', 'single_log' );
$config = array( 'group_form', 'group_log' );
$buttons = array();
if ( empty( $config ) ) {
return;
}
foreach ( $config as $key ) {
$buttons = '<a href="?render_page=' . $key . '">' . $pages . '</a>';
}
if ( psp_get_page() != 'view_single' ) {
$home = '<table style="float: left;"><tr><td><a href="' . psp_get_home() . '">Главная</a></td></tr></table>';
}
else {
$home = '';
}
echo '<div id="psp-nav-bar" class="psp-navigation">' . $home . '<table><tr><td>' . implode( '</td><td>', $buttons ) . '</td></tr></table></div>';
}
function psp_show_home(){
$pages = psp_get_pages();
$buttons = array();
foreach ( $pages as $key => $config ) {
if ( $config != 1 ) {
continue;
}
$buttons = '<a href="?render_page=' . $key . '">' . $config . '</a>';
}
echo '<div id="psp-nav-menu" class="psp-navigation"><table><tr><td>' . implode( '</td></tr><tr><td>', $buttons ) . '</td></tr></table></div>';
}
function psp_show_single( $id ) {
if ( ! $req = psp_db_get_request( $id ) ) {
// TODO не отображается на данном этапе
psp_user_error( 'Запрос не найден' );
echo 'Запрос не найден';
return;
}
$req = (object) $req;
$req_data = array();
$req_data = array( 'Отправлен', psp_date( $req->req_created ) );
$req_data = array( 'Статус', psp_get_status( $req->req_status ) );
foreach ( psp_get_request_fields() as $field => $config ) {
if ( $field == 'dul_type' ) {
$val = psp_dul_type( $req->$field );
}
else {
$val = $req->$field;
}
$req_data = array( $config, $val );
}
$req_data = array( 'GUID', $id );
$table = '<table class="psp-viewer">';
foreach ( $req_data as $tr ) {
$table .= '<tr><td>' . $tr . '</td><td>' . $tr . '</td></tr>';
}
$table .= '</table>';
echo $table;
$resp = array();
if ( $req->req_status ) {
$response = unserialize( $req->response );
foreach ( psp_get_response_fields( $response ) as $key => $config ) {
if ( $config ) {
$resp = array( $config, htmlspecialchars( $response ) );
}
}
}
$table = '<table class="psp-viewer">';
foreach ( $resp as $tr ) {
$table .= '<tr class="req-status-' . $req->req_status . '"><td>' . $tr . '</td><td>' . $tr . '</td></tr>';
}
$table .= '</table>';
echo $table;
if ( ! psp_is_group() ) {
echo '<p style="text-align: right"><a class="psp-small-button" href="?render_page=single_form&id=' . $id . '">Редактировать</a></p>';
}
}
function psp_show_history( $view = 'short' ) {
global $request;
if ( $view == 'short' ) {
if ( ! PSP_SHOW_LAST ) {
return;
}
$limit = PSP_SHOW_LAST;
$offset = 0;
$total = false;
$show_footer = false;
}
else {
$limit = PSP_PER_PAGE;
$offset = ( psp_get_pn() - 1 ) * PSP_PER_PAGE;
$total = true;
$show_footer = true;
}
$requests = psp_db_get_history( $limit, $offset, $total );
if ( ! $requests ) {
return;
}
$header = '';
$search_form = '';
$results = '';
$footer = '';
if ( $view == 'short' ) {
while ( $req = $requests->fetchArray() ) {
$req = (object) $req;
$results .= '<tr><td>' . implode( '</td><td>',
array(
psp_date( $req->req_created ),
'<a href="?render_page=view_single&id=' . $req->id . '">' . ' ' . $req->user_fam . ' ' . $req->user_name . ' ' . $req->user_middle . '</a>',
$req->born,
psp_get_status( $req->req_status )
) ) . '</td></tr>';
}
}
else {
$header = array(
'Дата запроса',
'ФИО',
'Дата рождения',
'Документ',
'Статус',
'ЕНП',
'Регион',
'Страховая компания'
);
if ( ! psp_is_group() ) {
unset( $header );
}
$header = '<tr><th>' . implode( '</th><th>', $header ) . '</th>';
//$header = '<tr><th>Дата запроса</th><th>ФИО</th><th>Дата рождения</th><th>Документ</th><th>Статус</th><th>Регион</th><th>Страховая компания</th></tr>';
while ( $req = $requests->fetchArray() ) {
$req = (object) $req;
$data = array();
if ( ! empty( $req->response ) ) {
$data = unserialize( $req->response );
}
$reg = htmlspecialchars( psp_array_get( $data, 'Region', '' ) );
$sk = htmlspecialchars( psp_array_get( $data, 'InsuranceOrganization', '' ) );
$row = array(
psp_date( $req->req_created ),
'<a href="?render_page=view_single&id=' . $req->id . '&group_id=' . psp_get_group_id() . '">' . ' ' . $req->user_fam . ' ' . $req->user_name . ' ' . $req->user_middle . '</a>',
$req->born,
$req->dul_ser . ' ' . $req->dul_num . ' ' . psp_dul_type( $req->dul_type ),
psp_get_status( $req->req_status ),
$reg,
$sk
);
if ( psp_is_group() ) {
$enp = htmlspecialchars( psp_array_get( $data, 'UnitedPolicyNumber', '' ) );
$row = array_merge( array_slice( $row, 0, 5 ), array( 5 => $enp ), array_slice( $row, 5 ) );
}
$results .= '<tr><td>' . implode( '</td><td>', $row ) . '</td></tr>';
}
}
$text = '';
if ( $group_id = psp_get_group_id() ) {
$gr = psp_db_get_group_request( $group_id );
$text = '<p style="font-weight: bold;">' . $gr . '</p>';
}
if ( psp_is_search() ) {
$text .= '<p style="font-weight: bold;">Результаты поиска <i>' . htmlspecialchars( $request ) . '</i></p>';
}
if ( $results ) {
if ( $show_footer ) {
$search_form = psp_search_form();
$footer = psp_page_navi( $total );
}
$results = '<table class="psp-table psp-history">' . $header . $results . '</table><div style="text-align: right;" class="psp-table-footer">' . $footer . '</div>';
}
else {
if ( psp_is_search() ) {
$text .= '<p style="text-align: center;">По вашему запросу ничего не найдено</p>';
$search_form = psp_search_form();
//$text .= '<p><a href="' . psp_remove_args( array_keys( psp_get_search_fields() ) ) . '">Назад к журналу</a></p>';
}
elseif ( $view != 'short' ) {
$text .= '<p style="text-align: center;">Журнал пуст</p>';
}
else {
return;
}
}
if ( psp_is_search() ) {
$text .= '<p><a href="' . psp_remove_args( array_keys( psp_get_search_fields() ) ) . '">Назад к журналу</a></p>';
}
echo '<div id="psp-view-' . $view . '">' . $text . $search_form . $results . '</div>';
}
function psp_search_form() {
global $request;
$preserve_fields = array( 'render_page', 'group_id' );
$fields = '';
foreach ( $preserve_fields as $name ) {
if ( isset( $_GET ) ) {
$fields .= '<input type="hidden" name="' . $name . '" value="' . $_GET . '">';
}
}
$search_form = '<div id="psp-history-search">
<form action="" id="psp-search">
<input type="text" name="date_range_search" size="23">
<input type="text" name="fio_search" placeholder="Начальные буквы ФИО" value="' . htmlspecialchars( psp_get_request_field( 'fio_search', '' ) ) . '"> ' .
psp_dropdown_select( 'status_search', array(
0 => 'Отправлен',
1 => 'Получен ответ'
), psp_get_request_field( 'status_search', 1 ) ) .
' <button type="submit" class="psp-small-button">Поиск</button>' .
$fields .
'</form></div>';
return $search_form;
}
function psp_single_form( $id = null ) {
$fields = psp_get_request_fields();
$data = array();
if ( $id && ( $req = psp_db_get_request( $id ) ) ) {
$data = $req;
}
$rows = '';
foreach ( $fields as $field => $config ) {
$val = isset( $data ) ? $data : null;
if ( $field == 'dul_type' ) {
$f = psp_dropdown( $val );
}
else {
$atts = '';
$atts .= ! empty( $config ) ? 'placeholder = "' . $config . '"' : '';
$atts .= ! empty( $config ) ? 'pattern = "' . $config . '"' : '';
$atts .= ! empty( $config ) ? 'title = "' . $config . '"' : '';
$f = '<input type="text" name="' . $field . '" value="' . $val . '"' . $atts . ' required>';
}
$rows .= '<tr><td><p class="psp-label">' . $config . '</p>' . $f . '</td></tr>';
}
?>
<div class="psp-form">
<form method="post" action="">
<table>
<?php
echo $rows;
?>
</table>
<input type="hidden" name="request_type" value="single">
<p>
<button type="submit">Направить Запрос</button>
</p>
</form>
</div>
<?php
}
function psp_show_group_history() {
$offset = ( psp_get_pn() - 1 ) * PSP_PER_PAGE;
$limit = PSP_PER_PAGE;
$where = null;
$total = psp_dbs()->querySingle( 'SELECT COUNT(ROWID) FROM ' . USER_CSV_TBL );
if ( ! $total ) {
$total = 0;
}
$requests = psp_dbs()->query( 'SELECT * FROM ' . USER_CSV_TBL . ' ORDER BY group_created DESC LIMIT ' . $limit . ' OFFSET ' . $offset );
if ( ! $requests ) {
return;
}
$results = '';
$header = '<tr><th>Дата запроса</th><th>Наименования запроса</th><th>Число вложенных запросов</th><th>Получено ответов</th><th>Статус</th><th>Выгрузка</th></tr>';
while ( $group = $requests->fetchArray() ) {
$group = (object) $group;
//$status = ( $group->is_complete ) ? 'Получен ответ' : 'Отправлен';
/*if ( $group->is_complete ) {
$status = '<span class="req-status-' . $group->is_complete . '">Получен ответ</span>';
$export = '<a href="?export=csv&group_id=' . $group->id . '">Выгрузить</a>';
}
else {
$status = 'Отправлен';
$export = '';
}*/
list( $status, $export ) = psp_get_group_attributes( $group );
$results .= '<tr id="psp-group-id-' . $group->id . '" class="psp-group-row"><td>' . implode( '</td><td>',
array(
psp_date( $group->group_created ),
'<a href="?render_page=group_view&group_id=' . $group->id . '">' . ' ' . $group->group_name . '</a>',
$group->req_num,
$group->received_num,
$status,
$export,
) ) . '</td></tr>';
}
if ( $results ) {
$footer = psp_page_navi( $total );
$results = '<table class="psp-table psp-history">' . $header . $results . '</table><div style="text-align: right;" class="psp-table-footer">' . $footer . '</div>';
}
else {
$results = '<p style="text-align: center;">Журнал пуст</p>';
}
echo '<div id="psp-view-full">' . $results . '</div>';
}
/**
* @param $group array|object
*
* @return string
*/
function psp_get_group_attributes( $group ) {
if ( is_array( $group ) ) {
$group = (object) $group;
}
if ( $group->is_complete ) {
$status = '<span class="req-status-' . $group->is_complete . '">Получен ответ</span>';
$export = '<a href="?export=csv&group_id=' . $group->id . '">Выгрузить</a>';
}
else {
$status = 'Отправлен';
$export = '';
}
return array( $status, $export );
}
function psp_group_form() {
?>
<div class="psp-form">
<form method="post" action="" enctype="multipart/form-data">
<table>
<tr>
<td><p class="psp-label">Наименование запроса</p><input type="text" value="" name="group_name" required></td>
</tr>
<tr>
<td><p class="psp-label">Выберите файл</p><span class="psp-upload-file"><input type="file" value="" name="group_file" required></span></td>
</tr>
</table>
<input type="hidden" name="request_type" value="group">
<p>
<button type="submit">Направить Запрос</button>
</p>
</form>
</div>
<?php
}
function psp_dropdown( $selected = null ) {
$options = array();
$sel = ( $selected !== null ) ? $selected : PSP_DEFAULT_DUL;
foreach ( psp_dul_type() as $key => $value ) {
$s = ( $key == $sel ) ? 'selected' : '';
$options = '<option value="' . $key . '" ' . $s . '>' . htmlspecialchars( $value ) . '</option>';
}
return '<select name="dul_type">' . implode( "\n", $options ) . '</select>';
}
/**
* @param string $name
* @param array $list
* @param null $selected
*
* @return string
*/
function psp_dropdown_select( $name, $list, $selected = null ) {
$options = array();
foreach ( $list as $key => $value ) {
$s = '';
if ( $selected !== null && (string) $key === (string) $selected ) {
//$s = ( $key === $selected ) ? 'selected' : '';
$s = 'selected';
}
$options = '<option value="' . $key . '" ' . $s . '>' . htmlspecialchars( $value ) . '</option>';
}
return '<select name="' . $name . '">' . implode( "\n", $options ) . '</select>';
}
function psp_get_status( $s = 0 ) {
$r = array( 'Отправлен', 'Получен', 'Ошибка', 'Ошибка СМЭВ' );
return '<span class="req-status-' . $s . '">' . $r . '</span>';
} |
Project ID:
|
4154035 |
Категория проекта: |
|
Бюджет проекта: |
|
|
|
|
|
|
|
|