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

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

Модератор: immortal

fandaymon
Сообщения: 1576
Зарегистрирован: Сб янв 13, 2018 5:00 pm

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

Сообщение fandaymon »

Перед этими 3 селектами должны быть ещё 2...

Эти 3 отвечают за повторяющиеся события - ежегодные, ежемесячные и еженедельные. А перед ними - сегодняшние не повторяющиеся события и задачи на сегодня
И дата там [DUE] => 2018-03-23, не знаю как у вас, у меня ещё 22...
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm

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

Сообщение Logrus »

с датой правильно, с двумя до видел, и это видимо я так "заменил"
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm

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

Сообщение Logrus »

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

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

Сообщение webms »

Кстати да, а почему не произносит больше будущие задачи и просроченные?

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

function dayss($day)
{
        $a = substr($day, strlen($day) - 1, 1);
        if ($a == 1) $str = "день";
        if ($a == 2 || $a == 3 || $a == 4) $str = "дня";
        if ($a == 5 || $a == 6 || $a == 7 || $a == 8 || $a == 9 || $a == 0) $str = "дней";
        return $str;
}
$stateOff = $params['PropushhennyeDela'];
if (file_exists('./modules/app_calendar/app_calendar.class.php'))
{
        include_once('./modules/app_calendar/app_calendar.class.php');
        $calendar = new app_calendar();
        $calendar -> usual($out);
        $events = $out['EVENTS_TODAY'];
        $say_phrase = '';
        if (is_array($events))
        {
                $total = count($events);
                $tasks = array();
                $cals = array();
                for ($i = 0; $i < $total; $i++)
                {
                        if ($events[$i]['IS_TASK'] == '1' && $events[$i]['IS_DONE'] != '1')
                        {
                                $tasks[] = $events[$i]['TITLE'];
                        }
                        elseif($events[$i]['IS_TASK'] != '1')
                        {
                                $cals[] = $events[$i]['TITLE'];
                        }
                }
                $total_tasks = count($tasks);
                if ($total_tasks)
                {
                        $say_phrase.= "У вас на сегодня запланированы задачи. ";
                        for ($i = 0; $i < $total_tasks; $i++)
                        {
                                $say_phrase.= ($i + 1).". ".$tasks[$i].". ";
                        }
                }
                else
                {
                        //say("Никаких задач не запланировано.",2);
                }
                $total_cals = count($cals);
                if ($total_cals)
                {
                        $say_phrase.= ("Сегодняшние события. ");
                        for ($i = 0; $i < $total_cals; $i++)
                        {
                                $say_phrase.= $cals[$i].'. ';
                        }
                }
                else
                {
                        //say("Уведомлений нет.",2);
                }
        }
        if ($stateOff != 'OFF') { //вызывается параметром, если ничего не пришло - будет говорить. 
        $events = $out['EVENTS_PAST'];
        if ($events[0]['TITLE'])
        {
                $say_phrase.= " Напоминаю пропущенные задачи. ";
                $total_tasks = count($events);
                for ($i = 0; $i < $total_tasks; $i++)
                {
                        $say_phrase.= ($i + 1).". ".$events[$i]['TITLE'].". ";
                }
        }
        }
        $events = $out['EVENTS_PASTPLAN'];
        if ($events[0]['TITLE'])
        {
                $say_phrase.= "Напоминаю что";
                $total_tasks = count($events);
                for ($i = 0; $i < $total_tasks; $i++)
                {
                        $datetime1 = date_create($events[$i]['DUE']);
                        $datetime2 = date_create(date('Y-m-d'));
                        $timeRASCHET = date_diff($datetime1, $datetime2);
                        $say_phrase.= " через ";
                        $say_phrase.= $timeRASCHET -> days." ".dayss($timeRASCHET -> days)." ".$events[$i]['TITLE'].". ";
                }
        }
}
if ($say_phrase)
{
         sleep(2);
        echo $say_phrase;
        //rs('DemoSay', $say_phrase); //Алиса говорит, но в чат не пишет.
        //say($say_phrase,3);
}
 
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am

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

Сообщение webms »

А вообще было бы здорово как то разделить еще по категориям, но я там понимаю решение уже есть выше, пока не ковырял код.
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm

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

Сообщение Logrus »

$out['EVENTS_PAST']=$events_past;
поправил, обнови с гита, сравни со своим
EVENTS_PASTPLAN работает
fandaymon писал(а):Для отладки всего что связано с выводом текстом куда-нибудь, в телеграмм или просто в 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...
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
fandaymon
Сообщения: 1576
Зарегистрирован: Сб янв 13, 2018 5:00 pm

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

Сообщение fandaymon »

EVENT_PAST и EVENT SOON теперь по категориям разделены, поэтому там надо не просто $out['EVENTS_PAST'] брать, а $out['CALENDAR_CATEGORIES']

и дальше делать цикл по категориям, и для каждой категории будут свои EVENTS_PAST и EVENT_SOON

что-то типа такого

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

$calendar_categories=$out['CALENDAR_CATEGORIES'];
foreach ($calendar_categories as $category) {
 $events_past=$category['EVENTS_PAST'];
 $events_soon=$category['EVENTS_SOON'];

 foreach ($events_past as $event) {
  // $category([TITLE]) - здесь будет название категории
  // Перебираем в цикле всё просроченное, связанное с этой категорией
 }

 foreach ($events_soon as $event) {
  // $category([TITLE]) - здесь будет название категории
  // Перебираем в цикле всё что скоро будет, связанное с этой категорией

 }


} 
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm

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

Сообщение Logrus »

;) "кирпич" ;) )))
https://github.com/sergejey/majordomo-a ... 3b649b8bfe
это отменить?

п.с. с EVENT SOON вопрос, но пока даже сформулировать не могу (
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
fandaymon
Сообщения: 1576
Зарегистрирован: Сб янв 13, 2018 5:00 pm

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

Сообщение fandaymon »

Logrus писал(а):;) "кирпич" ;) )))
https://github.com/sergejey/majordomo-a ... 3b649b8bfe
это отменить?

п.с. с EVENT SOON вопрос, но пока даже сформулировать не могу (
Сложно сказать как там всё в шаблонах берётся и не будут ли путаться разные event_past при выводе в usual и не будет ли в таком варианте в events_past данные только по последней категории - надо эксперементировать
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm

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

Сообщение Logrus »

я сейчас и SOON раскомментировал, сайагенда и мой вариант пропущенных нормально отработали, с выводом замечаний не увидел
п.с. думаю можно и принимать, а там уже и ошибки если есть всем отлавливать (оставлю так, на гите SOON закомментирован)
п.п.с на сцене календаря вторая полоса прокрутки при категориях вид портит
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Ответить