/**
  * @see sfTask
  */
 protected function executeTask($env, $arguments = array(), $options = array())
 {
     $tasks = PcTaskPeer::doSelect(new Criteria());
     foreach ($tasks as $task) {
         $contextsBlob = $task->getContexts();
         if (strlen($contextsBlob) > 0) {
             $contextIds = explode(',', $contextsBlob);
             foreach ($contextIds as $contextId) {
                 // checking the context exists
                 $context = PcUsersContextsPeer::retrieveByPK($contextId);
                 if (is_object($context)) {
                     $tasksContextsEntry = new PcTasksContexts();
                     $tasksContextsEntry->setTaskId($task->getId())->setUsersContextsId($contextId)->save();
                 }
             }
         }
     }
     echo "\nDone migration to 1.6.7 \n\n";
 }
Example #2
0
 /**
  * Returns an asspciative array with these keys:
  * overdue   - boolean - indicating whether the user has got some overdue task
  * today   - boolean - indicating whether the user has got some task for today
  * tomorrow   - boolean - indicating whether the user has got some task for tomorrow
  * 
  * @return array of booleans
  */
 public function getStatsForTasksWithDueDate()
 {
     $ret = array('overdue' => false, 'today' => false, 'tomorrow' => false);
     $c = new Criteria();
     $c->addJoin(PcTaskPeer::LIST_ID, PcListPeer::ID, Criteria::INNER_JOIN);
     $c->add(PcTaskPeer::IS_COMPLETED, 0, Criteria::EQUAL);
     $c->add(PcTaskPeer::DUE_DATE, NULL, Criteria::ISNOTNULL);
     $c->add(PcListPeer::CREATOR_ID, $this->getId(), Criteria::EQUAL);
     $c->addAscendingOrderByColumn(PcTaskPeer::DUE_DATE);
     $tasks = PcTaskPeer::doSelect($c);
     foreach ($tasks as $task) {
         if ($ret['overdue'] == false && $task->isOverdue()) {
             $ret['overdue'] = true;
         } else {
             if ($ret['today'] == false && $task->isToday()) {
                 $ret['today'] = true;
             } else {
                 if ($task->isTomorrow()) {
                     $ret['tomorrow'] = true;
                     break;
                 }
             }
         }
         if (!$ret['overdue'] && !$ret['today'] && !$ret['tomorrow']) {
             // this means there are not tasks overdue/for today/for tomorrow, that is
             // all of them have got a due date further than tomorrow.
             break;
         }
     }
     return $ret;
 }
Example #3
0
 /**
  * @return string (XML format)
  */
 public function getXmlString()
 {
     $dump = '<?xml version="1.0" encoding="UTF-8" ?>' . "\n";
     $dump .= '<backup version="1" title="Plancake backup" link="http://www.plancake.com">' . "\n";
     $dump .= "\t<plancake_tasks>\n";
     // This Ids are to make the dump more portable:
     // tasks will be related to tags and lists via these "virtual" ids
     $tagLocalIds = array();
     $listLocalIds = array();
     $c = new Criteria();
     $c->add(PcUsersContextsPeer::USER_ID, $this->user->getId(), Criteria::EQUAL);
     $c->addDescendingOrderByColumn(PcUsersContextsPeer::SORT_ORDER);
     $c->addDescendingOrderByColumn(PcUsersContextsPeer::ID);
     $tags = PcUsersContextsPeer::doSelect($c);
     $dump .= "\t\t<tags>\n";
     $localId = 1;
     foreach ($tags as $tag) {
         $dump .= "\t\t\t<tag>\n";
         $dump .= "\t\t\t\t<localId>{$localId}</localId>\n";
         $dump .= "\t\t\t\t<id>{$tag->getId()}</id>\n";
         $dump .= "\t\t\t\t<name><![CDATA[{$tag->getContext()}]]></name>\n";
         $dump .= "\t\t\t\t<sortOrder>{$tag->getSortOrder()}</sortOrder>\n";
         $dump .= "\t\t\t\t<updatedAt>{$tag->getUpdatedAt()}</updatedAt>\n";
         $dump .= "\t\t\t\t<createdAt>{$tag->getCreatedAt()}</createdAt>\n";
         $dump .= "\t\t\t</tag>\n";
         $tagLocalIds[$tag->getId()] = $localId;
         $localId++;
     }
     $dump .= "\t\t</tags>\n\n";
     $c = new Criteria();
     $c->add(PcListPeer::CREATOR_ID, $this->user->getId(), Criteria::EQUAL);
     $c->addDescendingOrderByColumn(PcListPeer::SORT_ORDER);
     $c->addDescendingOrderByColumn(PcListPeer::ID);
     $lists = PcListPeer::doSelect($c);
     $dump .= "\t\t<lists>\n";
     $localId = 1;
     foreach ($lists as $list) {
         $listIsInbox = $list->getIsInbox() ? 1 : 0;
         $listIsTodo = $list->getIsTodo() ? 1 : 0;
         $listIsHeader = $list->getIsHeader() ? 1 : 0;
         $dump .= "\t\t\t<list>\n";
         $dump .= "\t\t\t\t<localId>{$localId}</localId>\n";
         $dump .= "\t\t\t\t<id>{$list->getId()}</id>\n";
         $dump .= "\t\t\t\t<name><![CDATA[{$list->getTitle()}]]></name>\n";
         $dump .= "\t\t\t\t<sortOrder>{$list->getSortOrder()}</sortOrder>\n";
         $dump .= "\t\t\t\t<isInbox>{$listIsInbox}</isInbox>\n";
         $dump .= "\t\t\t\t<isTodo>{$listIsTodo}</isTodo>\n";
         $dump .= "\t\t\t\t<isHeader>{$listIsHeader}</isHeader>\n";
         $dump .= "\t\t\t\t<updatedAt>{$list->getUpdatedAt()}</updatedAt>\n";
         $dump .= "\t\t\t\t<createdAt>{$list->getCreatedAt()}</createdAt>\n";
         $dump .= "\t\t\t</list>\n";
         $listLocalIds[$list->getId()] = $localId;
         $localId++;
     }
     $dump .= "\t\t</lists>\n";
     $tasks = $this->user->getTasksByMultipleCriteria();
     $c = new Criteria();
     $c->addJoin(PcTaskPeer::LIST_ID, PcListPeer::ID, Criteria::INNER_JOIN);
     $c->add(PcListPeer::CREATOR_ID, $this->user->getId());
     $c->addDescendingOrderByColumn(PcTaskPeer::LIST_ID);
     $c->addAscendingOrderByColumn(PcTaskPeer::SORT_ORDER);
     $c->addAscendingOrderByColumn(PcTaskPeer::ID);
     $tasks = PcTaskPeer::doSelect($c);
     $dump .= "\t\t<tasks>\n";
     $localId = 1;
     foreach ($tasks as $task) {
         $taskIsStarred = $task->getIsStarred() ? 1 : 0;
         $taskIsCompleted = $task->getIsCompleted() ? 1 : 0;
         $taskIsHeader = $task->getIsHeader() ? 1 : 0;
         $taskIsFromSystem = $task->getIsFromSystem() ? 1 : 0;
         $taskListId = $task->getListId();
         $taskListLocalId = $listLocalIds[$task->getListId()];
         $taskTagIds = $task->getContexts();
         // comma separated list of tagIds
         $taskTagIdsArray = PcUtils::explodeWithEmptyInputDetection(',', $taskTagIds);
         $taskTagLocalIdsArray = array();
         foreach ($taskTagIdsArray as $id) {
             $taskTagLocalIdsArray[] = $tagLocalIds[$id];
         }
         $taskTagLocalIds = implode(',', $taskTagLocalIdsArray);
         $dump .= "\t\t\t<task>\n";
         $dump .= "\t\t\t\t<id>{$task->getId()}</id>\n";
         $dump .= "\t\t\t\t<localId>{$localId}</localId>\n";
         $dump .= "\t\t\t\t<listName><![CDATA[{$task->getList()->getTitle()}]]></listName>\n";
         $dump .= "\t\t\t\t<listLocalId>{$taskListLocalId}</listLocalId>\n";
         $dump .= "\t\t\t\t<description><![CDATA[{$task->getDescription()}]]></description>\n";
         $dump .= "\t\t\t\t<sortOrder>{$list->getSortOrder()}</sortOrder>\n";
         $dump .= "\t\t\t\t<dueDate>{$task->getDueDate()}</dueDate>\n";
         $dump .= "\t\t\t\t<dueTime>{$task->getDueTime()}</dueTime>\n";
         $dump .= "\t\t\t\t<repetitionId>{$task->getRepetitionId()}</repetitionId>\n";
         $dump .= "\t\t\t\t<repetitionParam>{$task->getRepetitionParam()}</repetitionParam>\n";
         $dump .= "\t\t\t\t<isStarred>{$taskIsStarred}</isStarred>\n";
         $dump .= "\t\t\t\t<isCompleted>{$taskIsCompleted}</isCompleted>\n";
         $dump .= "\t\t\t\t<isHeader>{$taskIsHeader}</isHeader>\n";
         $dump .= "\t\t\t\t<isFromSystem>{$taskIsFromSystem}</isFromSystem>\n";
         $dump .= "\t\t\t\t<tagLocalIds>{$taskTagLocalIds}</tagLocalIds>\n";
         $dump .= "\t\t\t\t<note><![CDATA[{$task->getNote()}]]></note>\n";
         $dump .= "\t\t\t\t<completedAt>{$task->getCompletedAt()}</completedAt>\n";
         $dump .= "\t\t\t\t<updatedAt>{$task->getUpdatedAt()}</updatedAt>\n";
         $dump .= "\t\t\t\t<createdAt>{$task->getCreatedAt()}</createdAt>\n";
         $dump .= "\t\t\t</task>\n";
         $localId++;
     }
     $dump .= "\t\t</tasks>\n";
     $dump .= "\t</plancake_tasks>\n";
     $dump .= "\t<plancake_notes>\n";
     $c = new Criteria();
     $c->add(PcNotePeer::CREATOR_ID, $this->user->getId(), Criteria::EQUAL);
     $c->addDescendingOrderByColumn(PcNotePeer::ID);
     $notes = PcNotePeer::doSelect($c);
     $dump .= "\t\t<notes>\n";
     $localId = 1;
     foreach ($notes as $note) {
         $dump .= "\t\t\t<note>\n";
         $dump .= "\t\t\t\t<localId>{$localId}</localId>\n";
         $dump .= "\t\t\t\t<id>{$note->getId()}</id>\n";
         $dump .= "\t\t\t\t<title><![CDATA[{$note->getTitle()}]]></title>\n";
         $dump .= "\t\t\t\t<content><![CDATA[{$note->getContent()}]]></content>\n";
         $dump .= "\t\t\t\t<updatedAt>{$note->getUpdatedAt()}</updatedAt>\n";
         $dump .= "\t\t\t\t<createdAt>{$note->getCreatedAt()}</createdAt>\n";
         $dump .= "\t\t\t</note>\n";
         $localId++;
     }
     $dump .= "\t\t</notes>\n";
     $dump .= "\t</plancake_notes>";
     $dump .= "\n" . '</backup>';
     return $dump;
 }
 /**
  * Gets an array of PcTask objects which contain a foreign key that references this object.
  *
  * If this collection has already been initialized with an identical Criteria, it returns the collection.
  * Otherwise if this PcRepetition has previously been saved, it will retrieve
  * related PcTasks from storage. If this PcRepetition is new, it will return
  * an empty collection or the current collection, the criteria is ignored on a new object.
  *
  * @param      PropelPDO $con
  * @param      Criteria $criteria
  * @return     array PcTask[]
  * @throws     PropelException
  */
 public function getPcTasks($criteria = null, PropelPDO $con = null)
 {
     if ($criteria === null) {
         $criteria = new Criteria(PcRepetitionPeer::DATABASE_NAME);
     } elseif ($criteria instanceof Criteria) {
         $criteria = clone $criteria;
     }
     if ($this->collPcTasks === null) {
         if ($this->isNew()) {
             $this->collPcTasks = array();
         } else {
             $criteria->add(PcTaskPeer::REPETITION_ID, $this->id);
             PcTaskPeer::addSelectColumns($criteria);
             $this->collPcTasks = PcTaskPeer::doSelect($criteria, $con);
         }
     } else {
         // criteria has no effect for a new object
         if (!$this->isNew()) {
             // the following code is to determine if a new query is
             // called for.  If the criteria is the same as the last
             // one, just return the collection.
             $criteria->add(PcTaskPeer::REPETITION_ID, $this->id);
             PcTaskPeer::addSelectColumns($criteria);
             if (!isset($this->lastPcTaskCriteria) || !$this->lastPcTaskCriteria->equals($criteria)) {
                 $this->collPcTasks = PcTaskPeer::doSelect($criteria, $con);
             }
         }
     }
     $this->lastPcTaskCriteria = $criteria;
     return $this->collPcTasks;
 }
 /**
  * Retrieve multiple objects by pkey.
  *
  * @param      array $pks List of primary keys
  * @param      PropelPDO $con the connection to use
  * @throws     PropelException Any exceptions caught during processing will be
  *		 rethrown wrapped into a PropelException.
  */
 public static function retrieveByPKs($pks, PropelPDO $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(PcTaskPeer::DATABASE_NAME, Propel::CONNECTION_READ);
     }
     $objs = null;
     if (empty($pks)) {
         $objs = array();
     } else {
         $criteria = new Criteria(PcTaskPeer::DATABASE_NAME);
         $criteria->add(PcTaskPeer::ID, $pks, Criteria::IN);
         $objs = PcTaskPeer::doSelect($criteria, $con);
     }
     return $objs;
 }
Example #6
0
 /**
  * Overrides the delete method to delete the associated tasks and the sharings
  * 
  * @see        parent::delete()
  * @param      PropelPDO Optional Connection object.
  * @return     PcList
  */
 public function delete(PropelPDO $con = null)
 {
     // deleting all the tasks related to the list
     $tasksCriteria = new Criteria();
     $tasksCriteria->add(PcTaskPeer::LIST_ID, $this->getId(), Criteria::EQUAL);
     $tasks = PcTaskPeer::doSelect($tasksCriteria);
     foreach ($tasks as $task) {
         $task->delete();
     }
     // deleting all the sharing related to the list
     $sharingsCriteria = new Criteria();
     $sharingsCriteria->add(PcTaskPeer::LIST_ID, $this->getId(), Criteria::EQUAL);
     $sharings = PcTaskPeer::doSelect($sharingsCriteria);
     foreach ($sharings as $sharing) {
         $sharing->delete();
     }
     $this->clearRelevantCache();
     $con = Propel::getConnection();
     $ret = null;
     try {
         $con->beginTransaction();
         $this->copyObjectToTrashBin();
         $ret = parent::delete($con);
         $con->commit();
     } catch (Exception $e) {
         $con->rollback();
         throw $e;
     }
     return $ret;
 }
Example #7
0
 /**
  * Returns tasks scheduled for that day and the next 6 (including multiple occurrences of recurrent tasks)
  *
  * @param string $date - in the format yyyy-mm-dd (e.g.: 2011-12-25)
  * @return array|null - array of PcTask
  */
 public static function getTasksByDate($date)
 {
     if ($date == null || strlen($date) <= 0) {
         return null;
     }
     $date = trim($date);
     $tasksToReturn = array();
     $c = new Criteria();
     $c->add(PcTaskPeer::DUE_DATE, null, Criteria::ISNOTNULL);
     // N.B.: the following criteria would be a mistake because it would take out recurrent tasks
     // $c->addAnd(PcTaskPeer::DUE_DATE, date('Y-m-d', strtotime($date)), Criteria::GREATER_EQUAL);
     $c->add(PcTaskPeer::IS_COMPLETED, 0);
     $c->addJoin(PcTaskPeer::LIST_ID, PcListPeer::ID);
     $c->add(PcListPeer::CREATOR_ID, PcUserPeer::getLoggedInUser()->getId());
     $c->addAscendingOrderByColumn(PcTaskPeer::DUE_TIME);
     $tasksWithDueDate = PcTaskPeer::doSelect($c);
     $tmpDate = $date;
     for ($i = 0; $i < 7; $i++) {
         foreach ($tasksWithDueDate as $taskWithDueDate) {
             if ($taskWithDueDate->isOnThisDay($tmpDate)) {
                 $taskWithDueDate->extra = date('D', strtotime($tmpDate));
                 $tasksToReturn[] = clone $taskWithDueDate;
             }
         }
         $tmpDate = date('Y-m-d', strtotime("+1 day", strtotime($tmpDate)));
     }
     return $tasksToReturn;
 }