/** * Associate the student with the provided terms. * * @since 0.1 * * @param array $terms * * @return bool */ public function associateWithTerms(array $terms) { $dbw = wfGetDB(DB_MASTER); $success = true; $dbw->begin(); foreach ($terms as $term) { $success = $dbw->insert('ep_students_per_term', array('spt_student_id' => $this->getId(), 'spt_term_id' => $term->getId())) && $success; } $dbw->commit(); foreach ($terms as $term) { EPCourse::updateSummaryFields('students', array('id' => $term->getField('course_id'))); EPOrg::updateSummaryFields('students', array('id' => $term->getField('org_id'))); EPTerm::updateSummaryFields('students', array('id' => $this->getId())); } return $success; }
/** * (non-PHPdoc) * @see EPDBObject::updateInDB() */ protected function updateInDB() { $oldOrgId = $this->hasField('org_id') ? self::selectFieldsRow('org_id', array('id' => $this->getId())) : false; $success = parent::updateInDB(); if ($this->updateSummaries && $success && $oldOrgId !== false && $oldOrgId !== $this->getField('org_id')) { $conds = array('id' => array($oldOrgId, $this->getField('org_id'))); EPTerm::updateSummaryFields('org_id', array('course_id' => $this->getId())); EPOrg::updateSummaryFields(array('terms', 'students', 'courses', 'active'), $conds); } return $success; }