/** * Prepare index links so we can get started. * */ protected function prepareLinks_index() { // Call API with our default request template to get default links. $res = Dispatcher::getQuick($this->settings->resolvedIndexLink); // We have to check if we are dealing with multi institution API. // If we have more than one institution in the array, it is multi institution API. if (count($res->body->_embedded->visokaUcilista) > 1) { $this->isMultiInstitutionApi = true; } // If it is multi institution API, we will take the whole array of institutions. if ($this->isMultiInstitutionApi) { $this->index = $res->body->_embedded->visokaUcilista; } else { // Not multi institution API, we can simply use the first institution. $this->index = clone $res->body->_embedded->visokaUcilista[0]->_links; } }
/** * Populate links for nastavniplan. */ protected function prepareLinks_nastavniplan() { // Get the nastavniplanzaakademskegodine and put it in new property. $res = Dispatcher::getQuick($this->index->nastavniplan->href); // This part is the same as nastavniplan in index links, so clone it. $this->nastavniplan = clone $this->index->nastavniplan; $this->nastavniplan->{'nastavniplanzaakademskegodine'} = clone $res->body->_links->{'nastavniplan_nastavniplanzaakademskegodine'}; // Prepare links for nastavniplanzaakademskugodinu for specified academic year. $res = Dispatcher::getQuick($this->nastavniplan->nastavniplanzaakademskegodine->href); // Iterate over all years and break on first occurance. // Reverse the array so we start with the newest year (which is typically used). foreach (array_reverse($res->body->_embedded->akademskeGodine) as $year) { if ($year->akademskaGodina == $this->settings->academicYear) { // Save links for requested year. $this->nastavniplan->{'nastavniplanzaakademskugodinu'} = clone $year->_links->{'nastavniplan_nastavniplanzaakademskugodinu'}; break; } } // Prepare links for nastavniplanzaakademskugodinu for each semestar. $res = Dispatcher::getQuick($this->nastavniplan->nastavniplanzaakademskugodinu->href); // Iterate over semestars. foreach ($res->body->_embedded->semestri as $semestar) { // First populate semestars $semestarNum = $semestar->semestar; $this->nastavniplan->nastavniplanzaakademskugodinu->{$semestarNum} = clone $semestar->_links->{'nastavniplan_nastavniplanzaakademskugodinu_predmeti'}; // In each semestar there are subjects. $subjectsInSemestar = Dispatcher::getQuick($this->nastavniplan->nastavniplanzaakademskugodinu->{$semestarNum}->href); $this->nastavniplan->nastavniplanzaakademskugodinu->{$semestarNum}->{'predmeti'} = $subjectsInSemestar->body->_embedded->predmeti; // Prepare empty predmet object for this semester. $this->nastavniplan->nastavniplanzaakademskugodinu->{$semestarNum}->{'predmet'} = new \stdClass(); foreach ($subjectsInSemestar->body->_embedded->predmeti as $subject) { $subjectCode = $subject->sifra; // Prepare subject object and populate links. $this->nastavniplan->nastavniplanzaakademskugodinu->{$semestarNum}->{'predmet'}->{$subjectCode} = new \stdClass(); $this->nastavniplan->nastavniplanzaakademskugodinu->{$semestarNum}->{'predmet'}->{$subjectCode}->{'grupezanastavu'} = clone $subject->_links->{'nastavniplan_nastavniplanzaakademskugodinu_predmeti_grupezanastavu'}; $this->nastavniplan->nastavniplanzaakademskugodinu->{$semestarNum}->{'predmet'}->{$subjectCode}->{'tjedniplannastave'} = clone $subject->_links->{'nastavniplan_nastavniplanzaakademskugodinu_predmeti_tjedniplannastave'}; $this->nastavniplan->nastavniplanzaakademskugodinu->{$semestarNum}->{'predmet'}->{$subjectCode}->{'upisanistudenti'} = clone $subject->_links->{'nastavniplan_nastavniplanzaakademskugodinu_predmeti_upisanistudenti'}; $this->nastavniplan->nastavniplanzaakademskugodinu->{$semestarNum}->{'predmet'}->{$subjectCode}->{'ispitnirokovi'} = clone $subject->_links->{'nastavniplan_nastavniplanzaakademskugodinu_predmeti_ispitnirokovi'}; // Add self link. $this->nastavniplan->nastavniplanzaakademskugodinu->{$semestarNum}->{'predmet'}->{$subjectCode}->{'href'} = $subject->_links->self->href; } } unset($res); dd($this->nastavniplan); }
/** * Get the resource from the provided url. * * @param string $url URL for the resource to get. * @return \stdClass|array Returned resource object/array of objects from the API */ public function getResourceByUrl($url) { $response = Dispatcher::getQuick($url); // Check for _embedded property in response body or return whole body. //$resource = $this->checkEmbeddedProperty($response); return $response->body; }