* @package tao */ class tao_install_utils_CustomProceduresParser extends tao_install_utils_SQLParser { /** * Parse a SQL file containing mySQL compliant Procedures or Functions. * @return void * @throws tao_install_utils_SQLParsingException */ public function parse() { $this->setStatements([]); $file = $this->getFile(); if (!file_exists($file)) { throw new tao_install_utils_SQLParsingException("SQL file '${file}' does not exist."); } elseif (!is_readable($file)) { throw new tao_install_utils_SQLParsingException("SQL file '${file}' is not readable."); } elseif (!preg_match("/\.sql$/", basename($file))) { throw new tao_install_utils_SQLParsingException("File '${file}' is not a valid SQL file. Extension '.sql' not found."); } $content = @file_get_contents($file); if ($content !== false) { $matches = []; $functions = explode(';;', $content); foreach ($functions as $f) { $this->addStatement($f); } } else { throw new tao_install_utils_SQLParsingException("SQL file '${file}' cannot be read. An unknown error occured while reading it."); } } }