$(document).ready(function(e) {
// показываем картинку. Отменяем события для формы
var port = $('.port').css('display','none');
$("#text").change(function () {
$('#sendFormNews').submit(function(){return false;});
port.css('display','block');
$('.uploadIcon').css('display','none');
});
});
// вешаем слушателя
window.addEventListener('load', function(e) {
// откуда пришла картинка
let input = document.querySelector("#text");
// где показать
let windowPrevImg = document.querySelector('#image_upload_preview');
// наша форма для отправки
let sendFormNews = document.getElementById('sendFormNews');
// функция для страховки
function uploadPasteImage()
{
// еще один слушатель - вешаем на submit - валидим форму один словом. (у меня аякс валидация выше)
sendFormNews.addEventListener('submit',(e) => {
// конвертим нашу строку base64 - говорим что это файл
function dataURLtoFile(dataurl, filename) {
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
//отдаем результат
return new File([u8arr], filename, {type:mime});
}
// вытягиваем base64 с картинки/прелоада
var pasteImage = windowPrevImg.getAttribute('src');
// скармливаем функции да бы получить нужный нам файл да бы обьяснить серверу что это файл
var file = dataURLtoFile(pasteImage, input.value);
// юзаем FormData https://developer.mozilla.org/ru/docs/Web/API/FormData
// в качестве аргумента передаем нашу форму
var fd = new FormData(sendFormNews);
// ищем нужное нам поле в форму и передаем туда наш полученный файл, который мы получили ранее
fd.append('News[image]',file);
// дальше дело техники
// вызываем
var request = new XMLHttpRequest();
// говорим куда и как
request.open("POST", window.location.href);
// загружаем "если" делай то то
request.onload = function(oEvent) {
window.location.replace("/cabinet/my-news");
} else {
console.log("Error " + request.status + " occurred when trying to upload your file.<br \/>");
}
};
// отправляем
request.send(fd);
});
// события для копирования
input.addEventListener("paste",function(event){
let items = (event.clipboardData || event.originalEvent.clipboardData).items;
for (index in items) {
let item = items[index];
if (item.kind === 'file') {
let blob = item.getAsFile();
let reader = new FileReader();
reader.onload = function(event){
windowPrevImg.setAttribute('src', event.target.result);
};
reader.readAsDataURL(blob);
}
}
});
}
// инициализируем нашу функцию
uploadPasteImage();
});
$timeStart = $formatter -> asTime( $this->model->working_time_start, 'php:G');
$timeEnd = $formatter -> asTime( $this->model->working_time_end, 'php:G');
$checkTimeStart = $this -> getAllTimeMyOrderInConferenceRoom();
$options = '';
for( $i = $timeStart; $i <= $timeEnd; $i++ )
{
$disabled = ( in_array( $i,$checkTimeStart)) ? 'disabled' : '';
$options .= "<option ". $disabled ." value='".$i."'>".$i.":00</option>";
}
public function getAllTimeMyOrderInConferenceRoom( $id_conf_rom )
{
$rows = BookingConferenceRoom ::find()
-> select( 'time_start' )
-> where( [ 'conf_room_id' => $id_conf_rom ] )
-> orderBy( [ 'time_start' => SORT_ASC ] )
-> column();
if( $rows )
{
$dates = [];
foreach( $rows as $row )
{
$dates[] = Yii ::$app -> formatter -> asTime( $row, 'php:G' );
}
return $dates;
}
return [];
}
public static function updateMyBonus( $user_id, $count_events_week = NULL, $count_time_for_massage = NULL, $count_time_for_conf_room = NULL )
{
$model = self ::updateBonus( $user_id );
// Если данные которые пришли в $count_events_week меньше чем в базе.
// То передаем ее дальше и отнимаем от уже существующего значения в базе
if( $count_events_week < $model -> count_events_week )
{
// Пример 3 - 2 = 1
// Отнимаем от значений в базе значене $count_events_week
$old_data_value = $model -> count_events_week - $count_events_week;
// записываем
$model -> count_events_week = $old_data_value;
// сохраняем
$model -> save();
}
// если данные в $count_events_week равны значению которые в базе. Пишем чистый ноль без лишних движений
elseif($count_events_week == $model -> count_events_week)
{
// Пример 3 = 3 пишем ноль
$model -> count_events_week = 0;
$model -> save();
}
// Если же данные в $count_events_week больше занчения в базе у первого поля
// То записываем ноль и снова вызываем функцию для вызов новой записи.
else
{
// Для получения разницы отнимаем данные которые пришли в $count_events_week, от того что есть в базе
//Пример: Пришло 7 В базе 4
// 7 - 4 = 3 это наша разница
$remainder = $count_events_week - $model -> count_events_week;
//записываем ноль в первое поле
$model -> count_events_week = 0;
// сохраняем
if( $model -> save() )
{
// Дальше вызываем снова туже самую функцию, но так как мы уже записал ноль в первое поле
// Оно отдаст второе поле у которо поле не больше нуля
$next_model = self ::updateBonus( $user_id );
// Ранее полученую разницу отнимаем от основного значения которое хранит в себе второе поле
// Пример: 4 - 3 = 1
$old_data_value = $next_model -> count_events_week - $remainder;
// Сохраняем данные
$next_model -> count_events_week = $old_data_value;
$next_model -> save();
}
}
}
// С помощью этой функции мы и обращаемся к полям где значения больше нуля
protected static function updateBonus( $user_id )
{
$row = self ::find() -> where( [ 'user_id' => $user_id ] )
-> andWhere(['>','count_events_week',0])
-> orderBy( [ 'date_end' => SORT_ASC] )
-> one();
return $row;
}
public function actionFaq()
{
$searchQuestion = Yii::$app->request->get('searchQuestion');
$faq = (new Query())
->from(Questions::tableName()." quest");
if(!empty($searchQuestion)) {
$faq->leftJoin(AnswerForQuestion::tableName()." ans_for_que",'ans_for_que.id_question = quest.id')
->select('ans_for_que.id_question as id_question, quest.title, quest.decsription')
->groupBy(['id_question','quest.id'])
->andWhere([
'or',
['like','ans_for_que.question',$searchQuestion],
]);
}
return $this->render('faq',[
'faq' => $faq->all()
]);
}
$queryPostUser->from(UserPosts::tableName()." us_post")
->select('us_prof.user_id, us_prof.avatar, user.username, us_post.text, us_post.id, com_us.text as comment')
->leftJoin(UserProfile::tableName()." us_prof",'us_prof.user_id = us_post.id_user')
->leftJoin(User::tableName()." user",'user.id = us_post.id_user')
->leftJoin(Comments::tableName()." com_us",'com_us.id_post = us_post.id')
->where(['us_post.id_user' => Yii::$app->user->identity->getId()]);