/** * * @return array data to be serialized */ public function getData() { $data = array(); if ($this->isChild()) { $data['parent'] = $this->_parent->getExperimentID(); } if ($this->isMultiVar()) { $data['children'] = array_keys($this->_children); } $data['weightings'] = $this->getWeightings(); return $data; }
/** * Get an existing treatment. * * Retrieve the current treatment in use by a Experiment/id combo. Returns null if not yet in use. * * @param Scenario_Experiment $experiment * @param Scenario_Identity $id * @return Scenario_Treatment|null */ public function GetTreatmentForIdentity(Scenario_Experiment $experiment, Scenario_Identity $id) { if ($experiment->getRowID() === null) { $parent = $experiment->getParent(); $experiment_id = $this->GetExperimentID($experiment->getExperimentID(), $parent === null ? null : $parent->getRowID()); } else { $experiment_id = $experiment->getRowID(); } if ($experiment_id == null) { return null; } $query = $this->getDbAdapter()->select()->from($this->usersTreatmentsTable)->joinLeft($this->treatmentsTable, $this->treatmentsTable . '.id = ' . $this->usersTreatmentsTable . '.treatment_id')->where('identity = ?', $id->getDbIdent())->where($this->treatmentsTable . '.experiment_id = ?', $experiment_id); $result = $this->getDbAdapter()->fetchRow($query); if ($result === false) { return null; } /** * @see Scenario_Treatment */ require_once 'Scenario/Treatment.php'; return new Scenario_Treatment($result['name'], $experiment, $result['id']); }
/** * Get an existing treatment. * * Retrieve the current treatment in use by a Experiment/id combo. Returns null if not yet in use. * * @param Scenario_Experiment $experiment * @param Scenario_Identity $id * @return Scenario_Treatment|null */ public function GetTreatmentForIdentity(Scenario_Experiment $experiment, Scenario_Identity $id) { $experiment_id = $this->GetExperimentID($experiment->getExperimentID()); if ($experiment_id == null) { return null; } $sql = 'SELECT * FROM `' . $this->usersTreatmentsTable . '` LEFT JOIN `' . $this->treatmentsTable . '` ON ' . $this->treatmentsTable . '.id = ' . $this->usersTreatmentsTable . '.treatment_id ' . 'WHERE identity = ? AND ' . $this->treatmentsTable . '.experiment_id = ?'; $result = $this->prepare($sql, array($id->getDbIdent(), $experiment_id))->fetch(PDO::FETCH_ASSOC); if ($result === false) { return null; } /** * @see Scenario_Treatment */ require_once 'Scenario/Treatment.php'; return new Scenario_Treatment($result['name'], $experiment, $result['id']); }