Example #1
0
 /**
  * @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;
         }
     }
 }
Example #2
0
 * 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;
Example #3
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'] . ';">&nbsp;</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;
    }
Example #4
0
 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;
 }