/** * Method that retrieves list field options. * * @param string $listName list name * @param string $prefix nested option prefix * @return array */ private function __getListFieldOptions($listName, $prefix = null) { $result = []; $listData = []; try { $pathFinder = new ListPathFinder(); $path = $pathFinder->find(null, $listName); $parser = new ListParser(); $listData = $parser->parseFromPath($path); } catch (\Exception $e) { /* Do nothing. * * ListPathFinder and ListParser check for the * file to exist and to be readable and so on, * but here we do load lists recursively (for * sub-lists, etc), which might result in files * not always being there. * * In this particular case, it's not the end of the * world. */ } if (!empty($listData)) { $result = $this->__prepareListOptions($listData, $listName, $prefix); } return $result; }
public function testParseFromPath() { $file = dirname(dirname(dirname(__DIR__))) . DS . 'data' . DS . 'CsvMigrations' . DS . 'lists' . DS . 'genders.csv'; $parser = new ListParser(); $result = $parser->parseFromPath($file); $this->assertTrue(is_array($result), "Parser returned a non-array"); $this->assertFalse(empty($result), "Parser returned empty result"); }
/** * Check if the given list is valid * * Lists with no items are assumed to be * invalid. * * @param string $list List name to check * @return bool True if valid, false is otherwise */ protected function _isValidList($list) { $result = false; $listItems = []; try { $pathFinder = new ListPathFinder(); $path = $pathFinder->find(null, $list); $parser = new ListParser(); $listItems = $parser->parseFromPath($path); } catch (\Exception $e) { // We don't care about the specifics of the failure } if ($listItems) { $result = true; } return $result; }