/** * @NoAdminRequired */ public function rebuildTaskViewRight() { if (\OC::$server->getAppManager()->isEnabledForUser('tasksplus')) { $calendars = CalendarCalendar::allCalendars($this->userId, true); if (count($calendars) > 0) { $allowedCals = []; foreach ($calendars as $calInfo) { $isAktiv = (int) $calInfo['active']; if ($this->configInfo->getUserValue($this->userId, $this->appName, 'calendar_' . $calInfo['id']) !== '') { $isAktiv = (int) $this->configInfo->getUserValue($this->userId, $this->appName, 'calendar_' . $calInfo['id']); } if ($isAktiv === 1) { $allowedCals[] = $calInfo; } } $cDataTimeLine = new Timeline(); $cDataTimeLine->setCalendars($allowedCals); $taskOutPutbyTime = $cDataTimeLine->generateAddonCalendarTodo(); $params = ['taskOutPutbyTime' => $taskOutPutbyTime]; $response = new TemplateResponse('tasksplus', 'calendars.tasks.list', $params, ''); return $response; } } }
* but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see <http://www.gnu.org/licenses/>. * */ namespace OCA\TasksPlus; use OCA\CalendarPlus\App as CalendarApp; use OCA\CalendarPlus\VObject; use OCA\CalendarPlus\Object; use OCA\CalendarPlus\Calendar; use OCA\TasksPlus\Share\Backend\Vtodo; Timeline::$l10n = \OC::$server->getL10N(App::$appname); class Timeline { private $nowTime = 0; private $aCalendar = array(); public static $l10n; private $sMode = ''; private $iCalId = 0; private $sDaySelect = ''; private $aSharedTasks = array(); private $aTasks = array(); private $aTasksOutput = array(); private $dUserTimeZone = ''; private $iCalPermissions = 0; private $taskOutPutbyTime = array('today' => false, 'tomorrow' => false, 'week' => false, 'missed' => false, 'notermin' => false, 'commingsoon' => false); private $startDate = 0;
/** * @NoAdminRequired */ public function buildLeftNavigation() { $calendars = CalendarCalendar::allCalendars($this->userId, true); $bShareApi = \OC::$server->getAppConfig()->getValue('core', 'shareapi_enabled', 'yes'); $activeCalendars = ''; foreach ($calendars as $calendar) { $isAktiv = $calendar['active']; if ($this->configInfo->getUserValue($this->userId, CalendarApp::$appname, 'calendar_' . $calendar['id']) != '') { $isAktiv = $this->configInfo->getUserValue($this->userId, CalendarApp::$appname, 'calendar_' . $calendar['id']); } if (!array_key_exists('active', $calendar)) { $isAktiv = 1; } if ((int) $isAktiv === 1 && (int) $calendar['issubscribe'] === 0) { $activeCalendars[] = $calendar; } } $cDataTimeLine = new Timeline(); $cDataTimeLine->setCalendars($activeCalendars); $outputTodoNav = $cDataTimeLine->generateTodoOutput(); $mySharees = Object::getCalendarSharees(); $activeCal = $this->configInfo->getUserValue($this->userId, CalendarApp::$appname, 'choosencalendar'); $outputCalendar = ''; foreach ($activeCalendars as $calInfo) { $rightsOutput = ''; $share = ''; $isActiveUserCal = ''; $notice = ''; if ($activeCal === $calInfo['id']) { $isActiveUserCal = 'isActiveCal'; } $shareLink = ''; $calInfo['bShare'] = false; if ($calInfo['permissions'] & $this->shareConnector->getShareAccess() && $bShareApi === 'yes') { $calInfo['bShare'] = true; $shareLink = '<a href="#" class="share icon-share" data-item-type="' . $this->shareConnector->getConstShareCalendar() . '" data-item="' . $this->shareConnector->getConstSharePrefixCalendar() . $calInfo['id'] . '" data-link="true" data-title="' . $calInfo['displayname'] . '" data-possible-permissions="' . $calInfo['permissions'] . '" title="' . (string) $this->l10n->t('Share Calendar') . '" > </a>'; } $notice = ''; if ($calInfo['bShare'] === false) { if ($this->shareConnector->getItemSharedWithByLinkCalendar($calInfo['id'], $calInfo['userid'])) { $notice = '<b>Notice</b><br>This calendar is also shared by Link for public!<br>'; } $calInfo['shareInfo'] = CalendarCalendar::permissionReader($calInfo['permissions']); $shareLink = '<i class="toolTip ioc ioc-info" title="' . $notice . (string) $this->l10n->t('by') . ' ' . $calInfo['userid'] . '<br />(' . $calInfo['shareInfo'] . ')"></i>'; } $displayName = '<span class="toolTip descr" title="' . $notice . (string) $this->l10n->t('Calendar') . ' ' . $calInfo['displayname'] . '">' . $calInfo['displayname'] . '</span>'; if ($calInfo['userid'] !== $this->userId) { if (\OCP\Share::getItemSharedWithByLink(CalendarApp::SHARECALENDAR, CalendarApp::SHARECALENDARPREFIX . $calInfo['id'], $calInfo['userid'])) { $notice = '<b>Notice</b><br>' . (string) $this->l10n->t('This calendar is also shared by Link for public!') . '<br>'; } $rightsOutput = CalendarCalendar::permissionReader($calInfo['permissions']); $displayName = '<span class="toolTip descr" title="' . $notice . (string) $this->l10n->t('Calendar') . ' ' . $calInfo['displayname'] . '">' . $calInfo['displayname'] . '</span>'; } $countCalEvents = 0; if (array_key_exists($calInfo['id'], $outputTodoNav['aCountCalEvents'])) { $countCalEvents = $outputTodoNav['aCountCalEvents'][(string) $calInfo['id']]; } $actionCalender = ''; if ($calInfo['userid'] === $this->userId) { //$actionCalender = '<li><i class="ioc ioc-rename"></i></li><li><i class="ioc ioc-delete"></i></li>'; } $addMenu = '<div class="app-navigation-entry-utils-menu-button"><button></button> <div class="app-navigation-entry-menu" data-calendarid="' . $calInfo['id'] . '"> <ul> <li><i class="ioc ioc-globe"></i></li> ' . $actionCalender . ' </ul> </div> </div>'; $outputCalendar .= '<li class="calListen ' . $isActiveUserCal . '" data-permissions="' . $calInfo['permissions'] . '" data-id="' . $calInfo['id'] . '"><span class="colCal iCalendar toolTip" title="' . $this->l10n->t('choose calendar as default') . '" style="background-color:' . $calInfo['calendarcolor'] . ';"> </span> ' . $displayName . $shareLink . $addMenu . '<span class="iCount">' . $countCalEvents . '</span></li>'; } $params = ['calendarslist' => $outputCalendar, 'tasksCount' => $outputTodoNav['tasksCount'], 'aTaskTime' => $outputTodoNav['aTaskTime']]; $response = new TemplateResponse($this->appName, 'tasks.list', $params, ''); return $response; }
public static function allInPeriodCalendar($aCalendar, $MODE = 'today', $sDay = '') { //today,tomorrow,actweek,withoutdate,missedtasks $sharedwithByTodo = self::getTodoSharees(); $cDataTimeLine = new Timeline(); $cDataTimeLine->setTimeLineMode($MODE); if ($MODE === 'dayselect') { $cDataTimeLine->setTimeLineDay($sDay); } $cDataTimeLine->setCalendars($aCalendar); $aSQL = $cDataTimeLine->getTimeLineDB(); $startDate = $cDataTimeLine->getStartDate(); $endDate = $cDataTimeLine->getEndDate(); //\OCP\Util::writeLog(self::$appname,'sql->where: '.$aSQL['wheresql'], \OCP\Util::DEBUG); $stmt = \OCP\DB::prepare('SELECT * FROM `' . CalendarApp::CldObjectTable . '` WHERE `objecttype`= ? ' . $aSQL['wheresql'] . ' ORDER BY relatedto ASC, calendarid ASC, startdate DESC'); $result = $stmt->execute($aSQL['execsql']); $calendarobjects = array(); while ($row = $result->fetchRow()) { //$row['permissions'] = \OCP\PERMISSION_ALL; $row['shared'] = 0; if (is_array($sharedwithByTodo) && isset($sharedwithByTodo[$row['id']])) { $row['shared'] = 1; } if ($row['repeating'] === 1) { $start = new \DateTime($row['startdate']); $end = new \DateTime($row['enddate']); $startDB = new \DateTime($startDate); $endDB = new \DateTime($endDate); $object = VObject::parse($row['calendardata']); $vtodo = $object->VTODO; $rrule = explode(';', $vtodo->getAsString('RRULE')); foreach ($rrule as $rule) { list($attr, $val) = explode('=', $rule); if ($attr === 'FREQ') { if ($val === 'WEEKLY') { $endTS = $end->format('U'); //Get day of Week $dayOfWeekrRule = date('w', $start->format('U')); $dayOfWeek = date('w', $startDB->format('U')); $startDBU = $startDB->format('U'); if ($MODE != 'actweek') { if ($dayOfWeekrRule == $dayOfWeek && $startDBU < $endTS) { $calendarobjects[] = $row; } } else { $endDBU = $endDB->format('U'); if ($endTS > $endDBU) { $calendarobjects[] = $row; //\OCP\Util::writeLog('calendar','Events Shared Found: ->'.$MODE, \OCP\Util::DEBUG); } } } if ($val === 'DAILY') { $dayOfWeek = date('w', $startDB->format('U')); $endTS = $end->format('U'); $startDBU = $startDB->format('U'); if ($MODE !== 'actweek') { if ($dayOfWeek != 0 && $dayOfWeek != 6 && $startDBU < $endTS) { $calendarobjects[] = $row; } } else { for ($i = 1; $i < 6; $i++) { $row['day'] = $i; $calendarobjects[] = $row; } } } } } } else { $calendarobjects[] = $row; } } $tasksFiltered = array(); foreach ($calendarobjects as $taskHaupt) { $bsub = false; $uidName = ''; foreach ($calendarobjects as $taskSub) { if ($taskHaupt['eventuid'] !== '' && $taskHaupt['eventuid'] === $taskSub['relatedto']) { $bsub = true; $uidName = $taskHaupt['summary']; } } $taskHaupt['subtask'] = $bsub; if ($bsub === false) { $taskHaupt['uidname'] = $uidName; } $tasksFiltered[] = $taskHaupt; } return $tasksFiltered; }