[Модуль] Simple Calendar (app_calendar)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 317 раз
Поблагодарили: 466 раз

Re: Календарь/менеджер задач

Сообщение Logrus » Чт мар 22, 2018 9:08 pm

Logrus писал(а):на сегодня задачи показываются, а события нет (ранее не проверял в событиях праздники их пока не было)
СпойлерПоказать

Код: Выделить всё

$uname = $this->getProperty('fullName');
$user_id = SQLSelectOne("SELECT * FROM users WHERE NAME='".$uname."'");
$tlg_id = SQLSelectOne("SELECT * FROM tlg_user WHERE MEMBER_ID='".$user_id['ID']."'");

include_once('./modules/app_calendar/app_calendar.class.php');
$calendar=new app_calendar();
$calendar->usual($out);
$events=$out['EVENTS_TODAY'];
$say_phrase='';
$v=1;
$w=1;
if (is_array($out['EVENTS_TODAY'])) {
foreach($events as $event) {
    if ( $event['CALENDAR_CATEGORY_ID'] == '0' && $event['USER_ID'] == $user_id['ID'] && $event['IS_TASK'] != '1' ) {
        //события пользователю любой категории
        $say_phrase.=$uname.", ваши события на сегодня: ".$event['TITLE'].". ";
        $v='';
    } 
}
    if($v) $say_phrase.=$uname.", для вас на сегодня событий нет. ";

foreach($events as $event) {
    if ( $event['USER_ID'] == $user_id['ID'] && $event['IS_TASK'] == '1' ) {
        //задачи пользователю
        $say_phrase.="Ваши задачи на сегодня: ".$event['TITLE'].". ";
        $w='';
    }
}
    if($w) $say_phrase.="Задач для вас на сегодня нет. ";
/*По категориям пользователю*/


foreach($events as $event) {
if ( $event['USER_ID'] == $user_id['ID'] && $event['IS_TASK'] != '1' ) {
    //Именины
    if ( $event['CALENDAR_CATEGORY_ID'] == '9' ) {
        $say_phrase.="Ура. У вас сегодня Именины! А еще именины у: ".$event['TITLE'].". ";
        }
    //ДР
    if ( $event['CALENDAR_CATEGORY_ID'] == '1' ) {
        $say_phrase.="Поздравляем! ".$event['TITLE'].". ";
        }
    //Напоминания
    if ( $event['CALENDAR_CATEGORY_ID'] == '3' ) {
        $say_phrase.="Для Вас напоминание на сегодня: ".$event['TITLE'].". ";
        }
    //Семейные праздники
    if ( $event['CALENDAR_CATEGORY_ID'] == '8' ) {
        $say_phrase.="Не забудьте про семейный праздник, сегодня ".$event['TITLE'].". ";
        }
    //Православные праздники
    if ( $event['CALENDAR_CATEGORY_ID'] == '7' ) {
        $say_phrase.="Православные сегодня отмечают ".$event['TITLE'].". ";
        }
    //Праздники РФ
    if ( $event['CALENDAR_CATEGORY_ID'] == '5' ) {
        $say_phrase.="Вся Россия сегодня отмечает ".$event['TITLE'].", с чем и поздравляю!";
        }
    }
}
    
} else {
    $say_phrase.="Ну надо же, ни событий, ни задач. Халява.";
}
$this->setProperty('UserEvents', $say_phrase);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendMessageToUser($tlg_id['USER_ID'], $say_phrase);
название проверка, категория праздники, пользователь алекс, то в задаче, то в событии
Logrus, [22.03.18 23:00]
Александр, для вас на сегодня событий нет. Ваши задачи на сегодня: проверка.

Logrus, [22.03.18 23:01]
Ну надо же, ни событий, ни задач. Халява.
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Календарь/менеджер задач

Сообщение webms » Чт мар 22, 2018 9:09 pm

fandaymon писал(а):Для выполненных стоит условие TO_DAYS(NOW())-TO_DAYS(DONE_WHEN)<=1. Т.е. должны показываться только сделанные вчера и сегодня. Можно посмотреть что в этих задачах за Done_When стоит...
Извини, я когда делал шаблон обновлял его галочками (то ставил, то убирал)
Все ок
fandaymon
Сообщения: 1570
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 40 раз
Поблагодарили: 578 раз

Re: Календарь/менеджер задач

Сообщение fandaymon » Чт мар 22, 2018 9:24 pm

IS_TASK int - его надо просто с 1 сравниватью Нет - дело не в этом.

Там же получается так

1 цикл - ищем события с нулевой категорией - не находим
2 цикл - ищем задачи - находим
3 цикл ищем события - не находим

Вроде всё правильно отрабатывает - 2 цикл пишет что есть задача, 3 - что нету событий. Логика скрипта изначально не очень правильная.
Последний раз редактировалось fandaymon Чт мар 22, 2018 9:45 pm, всего редактировалось 1 раз.
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 317 раз
Поблагодарили: 466 раз

Re: Календарь/менеджер задач

Сообщение Logrus » Чт мар 22, 2018 9:41 pm

СпойлерПоказать
ноль.PNG
ноль.PNG (47.15 КБ) 3628 просмотров
событие.PNG
событие.PNG (7.93 КБ) 3628 просмотров
задача.PNG
задача.PNG (9.86 КБ) 3628 просмотров
проверка
п.с. и сорри но я уже не понимаю и несколько потерял нить разговора (((
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
fandaymon
Сообщения: 1570
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 40 раз
Поблагодарили: 578 раз

Re: Календарь/менеджер задач

Сообщение fandaymon » Чт мар 22, 2018 9:59 pm

А! Это я просто не понял где именно то есть, то нет...
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 317 раз
Поблагодарили: 466 раз

Re: Календарь/менеджер задач

Сообщение Logrus » Чт мар 22, 2018 10:02 pm

выше с метода в телеграмм тоже не отправляет, а про это на предыдущей писал
и извиняюсь, я то для себя понятно сказал )))
вот остальным (((

п.с.
1.
на сегодня задачи показываются, а события нет (ранее не проверял в событиях праздники их пока не было)
и отправка в телеграмм
2. решить с путями
cms vs img
первая папка по умолчанию бэкапится, во второй и иконки ко всем модулям хранятся
3.
в админке с графой сделано не понятно, вроде б не отображается
хз, что-то запутался вчера там вроде б были отметки
4.
"fandaymon, я заметил что выполненные задачи не убираются с страницы уже третий день"
у меня вроде б нет такой проблемы или не заметил пока
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
fandaymon
Сообщения: 1570
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 40 раз
Поблагодарили: 578 раз

Re: Календарь/менеджер задач

Сообщение fandaymon » Чт мар 22, 2018 10:12 pm

Logrus писал(а):выше с метода в телеграмм тоже не отправляет, а про это на предыдущей писал
и извиняюсь, я то для себя понятно сказал )))
вот остальным (((
Про телеграмм - если в событии указывается что оно для всех пользователей, то в этом событии event['USER_ID'] будет равен 0 и проверку не пройдёт. Т.е. вместо

Код: Выделить всё

   if ( $event['CALENDAR_CATEGORY_ID'] == '0' && $event['USER_ID'] == $user_id['ID'] && $event['IS_TASK'] != '1' ) { 
//события пользователю любой категории
надо проверять

Код: Выделить всё

  if (  ($event['USER_ID'] == $user_id['ID']  or  $event['USER_ID'] ==0) and ($event['IS_TASK'] ==0)) { 
За это сообщение автора fandaymon поблагодарил:
Logrus (Чт мар 22, 2018 11:06 pm)
Рейтинг: 1.16%
fandaymon
Сообщения: 1570
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 40 раз
Поблагодарили: 578 раз

Re: Календарь/менеджер задач

Сообщение fandaymon » Чт мар 22, 2018 10:23 pm

Про cms и img - у меня сложилось впечатление, что img для иконок связанных с модулём, т.е. то что идёт вместе с инсталяшкой модуля, а cms - это то что у каждого пользователся своё. Т.е. так как оно сейчас сделано, так вроде бы и правильно.
Но я могу ошибаться - с Сергеем не знаком и как он задумывал точно -я не знаю 8-)
fandaymon
Сообщения: 1570
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 40 раз
Поблагодарили: 578 раз

Re: Календарь/менеджер задач

Сообщение fandaymon » Чт мар 22, 2018 10:28 pm

Для отладки всего что связано с выводом текстом куда-нибудь, в телеграмм или просто в say, очень помогает сделать сценарий

include_once('./modules/app_calendar/app_calendar.class.php');
$calendar=new app_calendar();
$calendar->usual($out);
$events=$out['EVENTS_TODAY'];

и добавить строчку print_r($events); Сразу видно будет что и в каком виде попало в этим самые EVENTS_TODAY...
За это сообщение автора fandaymon поблагодарил:
Logrus (Чт мар 22, 2018 10:58 pm)
Рейтинг: 1.16%
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 317 раз
Поблагодарили: 466 раз

Re: Календарь/менеджер задач

Сообщение Logrus » Чт мар 22, 2018 10:57 pm

задача
СпойлерПоказать
Array ( [0] => Array ( [ID] => 27 [TITLE] => проверка [SYSTEM] => [NOTES] => [DUE] => 2018-03-23 [ADDED] => 2018-03-22 20:44:59 [DONE_WHEN] => [IS_TASK] => 1 [IS_DONE] => 0 [IS_NODATE] => 0 [IS_REPEATING] => 0 [REPEAT_TYPE] => 1 [WEEK_DAYS] => [IS_REPEATING_AFTER] => 0 [REPEAT_IN] => 3 [USER_ID] => 5 [LOCATION_ID] => 0 [CALENDAR_CATEGORY_ID] => 2 [DONE_SCRIPT_ID] => 0 [DONE_CODE] => [LOG] => [ICON] => ) )
переделал ее на событие
СпойлерПоказать
т.е. полностью пусто
СпойлерПоказать

Код: Выделить всё

  $events_early_today=SQLSelect("SELECT calendar_events.*,calendar_categories.ICON FROM calendar_events left join calendar_categories on calendar_events.calendar_category_id=calendar_categories.id  WHERE TO_DAYS(DATE(CONCAT_WS('-', DATE_FORMAT(NOW(), '%Y'), DATE_FORMAT(DUE, '%m'), DATE_FORMAT(DUE, '%d'))))=TO_DAYS(NOW()) AND IS_REPEATING=1 AND REPEAT_TYPE=1 AND IS_TASK=0  ORDER BY IS_TASK DESC");
  if ($events_early_today) {
   foreach($events_early_today as $k=>$v) {
    $events_today[]=$v;
    //$calendar_categories[$k1]['EVENTS_TODAY'][]=$v;
   }
  }
  $events_monthly_today=SQLSelect("SELECT calendar_events.*,calendar_categories.ICON FROM calendar_events left join calendar_categories on calendar_events.calendar_category_id=calendar_categories.id  WHERE TO_DAYS(DATE(CONCAT_WS('-', DATE_FORMAT(NOW(), '%Y'), DATE_FORMAT(NOW(), '%m'), DATE_FORMAT(DUE, '%d'))))=TO_DAYS(NOW()) AND IS_REPEATING=1 AND REPEAT_TYPE=2 AND IS_TASK=0  ORDER BY IS_TASK DESC");
  if ($events_monthly_today) {
   foreach($events_monthly_today as $k=>$v) {
    $events_today[]=$v;
    //$calendar_categories[$k1]['EVENTS_TODAY'][]=$v;
   }
  }
  $events_weekly_today=SQLSelect("SELECT calendar_events.*,calendar_categories.ICON FROM calendar_events left join calendar_categories on calendar_events.calendar_category_id=calendar_categories.id  WHERE DATE_FORMAT(DUE, '%w')=DATE_FORMAT(NOW(), '%w') AND IS_REPEATING=1 AND REPEAT_TYPE=3 AND IS_TASK=0  ORDER BY IS_TASK DESC");
  if ($events_weekly_today) {
   foreach($events_weekly_today as $k=>$v) {
    $events_today[]=$v;
    //$calendar_categories[$k1]['EVENTS_TODAY'][]=$v;
   }
  }

  if ($events_today) {
   $out['EVENTS_TODAY']=$events_today;
  } 
IS_REPEATING=1 я хз, не оно
СпойлерПоказать
хз.PNG
хз.PNG (27.77 КБ) 3589 просмотров
в событие (но я хз что сделал, в смысле на что это влияет)
СпойлерПоказать
Array ( [0] => Array ( [ID] => 27 [TITLE] => проверка [SYSTEM] => [NOTES] => [DUE] => 2018-03-23 [ADDED] => 2018-03-22 20:44:59 [DONE_WHEN] => [IS_TASK] => 0 [IS_DONE] => 0 [IS_NODATE] => 0 [IS_REPEATING] => 0 [REPEAT_TYPE] => 1 [WEEK_DAYS] => [IS_REPEATING_AFTER] => 0 [REPEAT_IN] => 3 [USER_ID] => 5 [LOCATION_ID] => 0 [CALENDAR_CATEGORY_ID] => 2 [DONE_SCRIPT_ID] => 0 [DONE_CODE] => [LOG] => [ICON] => ) )
это я ей повтор не поставил?
Последний раз редактировалось Logrus Чт мар 22, 2018 11:29 pm, всего редактировалось 3 раза.
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Ответить