CommerceGuys\Addressing\Subdivision\SubdivisionRepository::hasData PHP Method

hasData() protected method

Checks whether predefined subdivisions exist for the provided parents.
protected hasData ( array $parents ) : boolean
$parents array The parents (country code, subdivision codes).
return boolean TRUE if predefined subdivisions exist for the provided parents, FALSE otherwise.
    protected function hasData(array $parents)
    {
        $countryCode = $parents[0];
        $addressFormat = $this->addressFormatRepository->get($countryCode);
        $depth = $addressFormat->getSubdivisionDepth();
        if ($depth == 0) {
            return false;
        }
        // At least the first level has data.
        $hasData = true;
        if (count($parents) > 1) {
            // After the first level it is possible for predefined subdivisions
            // to exist at a given level, but not for that specific parent.
            // That's why the parent definition has the most precise answer.
            $grandparents = $parents;
            $parentId = array_pop($grandparents);
            $parentGroup = $this->buildGroup($grandparents);
            if (isset($this->definitions[$parentGroup]['subdivisions'][$parentId])) {
                $definition = $this->definitions[$parentGroup]['subdivisions'][$parentId];
                $hasData = !empty($definition['has_children']);
            } else {
                // The parent definition wasn't loaded previously, fallback
                // to guessing based on depth.
                $neededDepth = count($parents);
                $hasData = $neededDepth <= $depth;
            }
        }
        return $hasData;
    }