<?php
namespace app\components;
use yii\web\HttpException;
class MyHttpException extends HttpException
{
public function renderJson()
{
$response = \Yii::$app->getResponse();
$response->data = [
'message' => $this->getMessage(),
];
$response->send();
}
}
<?php
use app\components\MyHttpException;
try {
// Код, который может вызвать исключение
throw new MyHttpException('Ваше сообщение об ошибке', 500);
} catch (MyHttpException $e) {
$e->renderJson(); // Отправляем ответ в формате {"message": "..."}
}
<?php
// Установка начального значения $PAGE_ID
$PAGE_ID = 0;
// Включение файла header и передача значения $PAGE_ID
include 'header.php';
?>
<?php
// Получение идентификатора статьи
$art_id = 123; //
$opt['page_id'] = $art_id;
?>
<?php
// Получение значения $PAGE_ID из корневого файла
echo 'Страница ' . $PAGE_ID . '; ';
// Использование значения $PAGE_ID в условии
if ($PAGE_ID == 19) {
echo 'Ид страницы == 19';
} else {
echo 'Ид страницы != 19';
}
?>
// Получаем объект текущего ответа
$response = JFactory::getApplication()->getDocument()->getRenderer('component')->getResponse();
// Проверяем наличие заголовка If-Modified-Since
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$lastModified = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
// Получаем время последнего изменения страницы/контента
$modifiedTime = strtotime($yourContentModifiedTime);
// Если контент был изменен после указанной даты If-Modified-Since, отправляем полный ответ
if ($modifiedTime > $lastModified) {
// Ваш код для генерации и отправки полного ответа
} else {
// Отправляем код 304 Not Modified
$response->setHeader('HTTP/1.1', '304 Not Modified', true);
JFactory::getApplication()->close();
}
} else {
// Ваш код для генерации и отправки полного ответа, так как If-Modified-Since заголовок отсутствует
}
<?php
// Подключение к базе данных
$mysqli = new mysqli("хост", "пользователь", "пароль", "имя_базы_данных");
// Проверка соединения на ошибки
if ($mysqli->connect_errno) {
echo "Не удалось подключиться к MySQL: " . $mysqli->connect_error;
exit;
}
// Получение всех записей из таблицы a1
$query = "SELECT id, relid FROM a1";
$result = $mysqli->query($query);
if ($result) {
// Проходимся по каждой записи в a1
while ($row = $result->fetch_assoc()) {
$id = $row['id'];
$relid = $row['relid'];
// Разбиваем строку relid на массив значений
$relidArray = explode(",", $relid);
// Создаем пустой массив для новых значений relid
$newRelidArray = array();
// Проходимся по каждому значению relid
foreach ($relidArray as $value) {
// Ищем соответствующую запись в таблице a2 по relidnumber
$query = "SELECT relidnumber FROM a2 WHERE relidnumber = '$value'";
$a2Result = $mysqli->query($query);
// Если найдена соответствующая запись, добавляем значение в новый массив
if ($a2Result && $a2Result->num_rows > 0) {
$newRelidArray[] = $value;
}
}
// Собираем новое значение relid, объединяя элементы массива через запятую
$newRelid = implode(",", $newRelidArray);
// Обновляем запись в таблице a1 с новым значением relid
$query = "UPDATE a1 SET relid = '$newRelid' WHERE id = $id";
$mysqli->query($query);
}
// Освобождаем результирующий набор
$result->free();
} else {
echo "Ошибка выполнения запроса: " . $mysqli->error;
}
// Закрываем соединение с базой данных
$mysqli->close();
?>
<form action="your_script.php" method="post" enctype="multipart/form-data">
<input type="text" name="name" placeholder="Ваше Фамилия Имя Отчество" required>
<input type="email" name="email" placeholder="Ваш e-mail" required>
<input type="tel" name="phone" placeholder="Ваш телефон" required>
<input type="number" name="age" placeholder="Ваш возраст" required>
<select name="procedure" required>
<option value="">Выберите процедуру</option>
<option value="Procedure 1">Procedure 1</option>
<option value="Procedure 2">Procedure 2</option>
<option value="Procedure 3">Procedure 3</option>
</select>
<input type="file" name="file" id="file" required>
<button type="submit">Отправить</button>
</form>
<?php
if (isset($_POST['name']) && $_POST['name'] != "") {
$name = $_POST['name'];
} else {
die("Не заполнено поле \"Ваше Фамилия Имя Отчество\"");
}
if (isset($_POST['email']) && $_POST['email'] != "") {
$email = $_POST['email'];
} else {
die("Не заполнено поле \"Ваш e-mail\"");
}
// Проверяем, был ли файл загружен
if (isset($_FILES['file']['tmp_name']) && $_FILES['file']['tmp_name'] != "") {
// Получаем информацию о загруженном файле
$file_name = $_FILES['file']['name'];
$file_tmp = $_FILES['file']['tmp_name'];
$file_type = $_FILES['file']['type'];
$file_size = $_FILES['file']['size'];
// Открываем файл и считываем его содержимое
$file_content = file_get_contents($file_tmp);
// Создаем границу для разделения различных частей письма
$boundary = "--" . md5(uniqid(time()));
// Создаем заголовок письма с указанием типа контента и границы
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$headers .= "From: $email\r\n";
// Формируем тело письма
$message = "--$boundary\r\n";
$message .= "Content-Type: text/plain; charset=UTF-8\r\n";
$message .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$message .= "Фамилия Имя Отчество: $name\r\n";
$message .= "E-mail: $email\r\n";
// Остальные поля формы
$message .= "--$boundary\r\n";
$message .= "Content-Type: $file_type\r\n";
$message .= "Content-Transfer-Encoding: base64\r\n";
$message .= "Content-Disposition: attachment; filename=\"$file_name\"\r\n\r\n";
$message .= chunk_split(base64_encode($file_content));
$message .= "--$boundary--";
$subject = 'Анкета модели';
$address = "ivashnev.nikita@mail.ru";
$send = mail($address, $subject, $message, $headers);
if ($send) {
echo "Сообщение отправлено успешно!";
} else {
echo "Ошибка, сообщение не отправлено! Возможно, проблемы на сервере";
}
} else {
die("Не заполнено поле \"Ваша фотография проблемной зоны\"");
}
?>
add_shortcode( 'customer_products', 'truemisha_products_current_user' );
function truemisha_products_current_user() {
// ничего не делаем, если не авторизован
if ( ! is_user_logged_in() ) {
return;
}
// получаем все оплаченные заказы пользователя
$customer_orders = get_posts( array(
'posts_per_page' => -1,
'meta_key' => '_customer_user',
'meta_value' => get_current_user_id(),
'post_type' => wc_get_order_types(),
'post_status' => array_keys( wc_get_is_paid_statuses() ),
) );
// если заказов не найдено
if ( ! $customer_orders ) {
return;
}
// создаём отдельную переменную для ID товаров и записываем в неё
$ids = array();
foreach ( $customer_orders as $customer_order ) {
$order = wc_get_order( $customer_order->ID );
$items = $order->get_items();
foreach ( $items as $item ) {
$product_id = $item->get_product_id();
if ( ! has_reviewed_product( $product_id, get_current_user_id() ) ) {
$ids[] = $product_id;
}
}
}
// если нет товаров без отзывов
if ( empty( $ids ) ) {
return;
}
// возвращаем шорткод
return do_shortcode( '[products ids="' . join( ",", array_unique( $ids ) ) . '"]' );
}
function include_tags_in_search( WP_Query $query ): void{
$search_terms = $query->get( 's' );
if ( $query->is_search() ) {
global $the_original_paged;
$the_original_paged = $query->get( 'paged' ) ? $query->get( 'paged' ) : 1;
if ( ! $search_terms ) {
add_action( 'wp', function () use ( $query ) {
$query->set_404();
status_header( 404 );
nocache_headers();
} );
}
$query->set( 'paged', null );
$query->set( 'post_type', array( 'post', 'product' ) );
$query->set( 'posts_per_page', SEARCH_GRID_COUNT_ITEMS );
}
}
add_action( 'pre_get_posts', 'include_tags_in_search' );
function add_posts_by_tags( $posts, WP_Query $query ): array {
if ( $query->is_search() ) {
global $the_original_paged;
remove_filter( 'the_posts', 'add_posts_by_tags' );
$posts_product_cat = new WP_Query( array(
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => 'product_tag',
'field' => 'name',
'terms' => explode( ' ', esc_attr( $query->get( 's' ) ) )
)
)
) );
$merged = array_unique( array_merge( $posts, $posts_product_cat->get_posts() ), SORT_REGULAR );
$posts = array_slice( $merged, ( SEARCH_GRID_COUNT_ITEMS * ( $the_original_paged - 1 ) ), SEARCH_GRID_COUNT_ITEMS );
$query->found_posts = $posts;
$query->set( 'paged', $the_original_paged );
$query->post_count = count( $posts );
$query->max_num_pages = ceil( count( $merged ) / SEARCH_GRID_COUNT_ITEMS );
unset( $the_original_paged );
return $posts;
}
return $posts;
}
add_filter( 'the_posts', 'add_posts_by_tags', 10, 2 );
document.addEventListener( 'wpcf7submit', function( event ) {
var status = event.detail.status;
console.log(status);
//if( status === 'validation_failed'){
jQuery('.wpcf7-submit').val("Send");
//}
}, false );
jQuery('.wpcf7-submit').on('click',function(){
jQuery(this).val("Submitting....");
});