public function executeAdd(sfWebRequest $request) { $isHeader = $request->getParameter('isHeader') == 1 ? 1 : 0; $list = new PcList(); $list->setTitle($request->getParameter('listTitle')); $list->setCreatorId($this->getUser()->getAttribute('userid')); $list->setIsHeader($isHeader); $user = $list->getCreator(); if (!$request->getParameter('beforeListId')) { // getting max sortOrder $c = new Criteria(); $c->addDescendingOrderByColumn(PcListPeer::SORT_ORDER); $maxSortOrder = PcListPeer::doSelectOne($c)->getSortOrder(); $list->setSortOrder($maxSortOrder + 1); } else { $beforeListId = $request->getParameter('beforeListId'); // I need to insert the new list after the list whose id is beforeListId $allLists = $list->getCreator()->getLists(); // the lists are returned with sortOrder ascending order // and the lists are displayed with the smaller sortOrder on top $incrementSortOrder = false; if (is_array($allLists)) { foreach ($allLists as $oneOfTheOtherLists) { $delta = 1; if ($oneOfTheOtherLists->getId() == $beforeListId) { $list->setSortOrder($oneOfTheOtherLists->getSortOrder() + 1); $incrementSortOrder = true; } if ($incrementSortOrder) { $oneOfTheOtherLists->setSortOrder($oneOfTheOtherLists->getSortOrder() + 1)->save(); } } } } $list->save(); $user->save(); // {{{ // this lines to make sure the list details we sent back via AJAX // are the ones stored in the database $list = PcListPeer::retrieveByPK($list->getId()); // }}} if ($request->isXmlHttpRequest()) { $ret = array('id' => $list->getId(), 'name' => $list->getTitle(), 'isHeader' => (int) $list->isHeader()); return $this->renderJson($ret); } return $this->renderDefault(); }
/** * Performs the work of inserting or updating the row in the database. * * If the object is new, it inserts it; otherwise an update is performed. * All related objects are also updated in this method. * * @param PropelPDO $con * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. * @throws PropelException * @see save() */ protected function doSave(PropelPDO $con) { $affectedRows = 0; // initialize var to track total num of affected rows if (!$this->alreadyInSave) { $this->alreadyInSave = true; // We call the save method on the following object(s) if they // were passed to this object by their coresponding set // method. This object relates to these object(s) by a // foreign key reference. if ($this->aPcUser !== null) { if ($this->aPcUser->isModified() || $this->aPcUser->isNew()) { $affectedRows += $this->aPcUser->save($con); } $this->setPcUser($this->aPcUser); } if ($this->aPcList !== null) { if ($this->aPcList->isModified() || $this->aPcList->isNew()) { $affectedRows += $this->aPcList->save($con); } $this->setPcList($this->aPcList); } // If this object has been modified, then save it to the database. if ($this->isModified()) { if ($this->isNew()) { $pk = PcUsersListsPeer::doInsert($this, $con); $affectedRows += 1; // we are assuming that there is only 1 row per doInsert() which // should always be true here (even though technically // BasePeer::doInsert() can insert multiple rows). $this->setNew(false); } else { $affectedRows += PcUsersListsPeer::doUpdate($this, $con); } $this->resetModified(); // [HL] After being saved an object is no longer 'modified' } $this->alreadyInSave = false; } return $affectedRows; }
/** * Performs the work of inserting or updating the row in the database. * * If the object is new, it inserts it; otherwise an update is performed. * All related objects are also updated in this method. * * @param PropelPDO $con * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. * @throws PropelException * @see save() */ protected function doSave(PropelPDO $con) { $affectedRows = 0; // initialize var to track total num of affected rows if (!$this->alreadyInSave) { $this->alreadyInSave = true; // We call the save method on the following object(s) if they // were passed to this object by their coresponding set // method. This object relates to these object(s) by a // foreign key reference. if ($this->aPcList !== null) { if ($this->aPcList->isModified() || $this->aPcList->isNew()) { $affectedRows += $this->aPcList->save($con); } $this->setPcList($this->aPcList); } if ($this->aPcRepetition !== null) { if ($this->aPcRepetition->isModified() || $this->aPcRepetition->isNew()) { $affectedRows += $this->aPcRepetition->save($con); } $this->setPcRepetition($this->aPcRepetition); } if ($this->isNew()) { $this->modifiedColumns[] = PcTaskPeer::ID; } // If this object has been modified, then save it to the database. if ($this->isModified()) { if ($this->isNew()) { $pk = PcTaskPeer::doInsert($this, $con); $affectedRows += 1; // we are assuming that there is only 1 row per doInsert() which // should always be true here (even though technically // BasePeer::doInsert() can insert multiple rows). $this->setId($pk); //[IMV] update autoincrement primary key $this->setNew(false); } else { $affectedRows += PcTaskPeer::doUpdate($this, $con); } $this->resetModified(); // [HL] After being saved an object is no longer 'modified' } if ($this->collPcDirtyTasks !== null) { foreach ($this->collPcDirtyTasks as $referrerFK) { if (!$referrerFK->isDeleted()) { $affectedRows += $referrerFK->save($con); } } } if ($this->collPcTasksContextss !== null) { foreach ($this->collPcTasksContextss as $referrerFK) { if (!$referrerFK->isDeleted()) { $affectedRows += $referrerFK->save($con); } } } if ($this->singlePcGoogleCalendarEvent !== null) { if (!$this->singlePcGoogleCalendarEvent->isDeleted()) { $affectedRows += $this->singlePcGoogleCalendarEvent->save($con); } } $this->alreadyInSave = false; } return $affectedRows; }