/** * Filters a row's subtable, if one exists and is loaded in memory. * * @param Row $row The row whose subtable should be filter. */ public function filterSubTable(Row $row) { if (!$this->enableRecursive) { return; } if ($row->isSubtableLoaded()) { $subTable = Manager::getInstance()->getTable($row->getIdSubDataTable()); $this->filter($subTable); } }
private function loadSubtable(DataTable $table, Row $row) { $idSubtable = $row->getIdSubDataTable(); if ($idSubtable === null) { return null; } if ($row->isSubtableLoaded()) { $subtable = $row->getSubtable(); } else { $subtable = $this->thisReport->fetchSubtable($idSubtable, $this->getRequestParamOverride($table)); } if ($subtable === null) { // sanity check throw new Exception("Unexpected error: could not load subtable '{$idSubtable}'."); } return $subtable; }
public function test_isSubtableLoaded_ShouldReturnFalse_WhenRestoringAnExportedRow() { $testRow = $this->getTestRowWithSubDataTableLoaded(); // serialize and unserialize is not needed for this test case, the export is the important part. // we still do it, to have it more "realistic" $serializedTestRow = serialize($testRow->export()); $unserializedTestRow = unserialize($serializedTestRow); /** @var Row $unserializedTestRow */ $row = new Row($unserializedTestRow); $this->assertTrue($row->getIdSubDataTable() > 0); $this->assertFalse($row->isSubtableLoaded()); }