path = $path; $this->fileTypeValidateFunc = ($fileTypeValidateFunc)? $fileTypeValidateFunc:'noVidation'; $this->checkType = ($checkType) ? $checkType : self::CHECK_SINGLE; } /** * @inheritdoc * * @return array */ public function check() { $origStage = Versioned::get_reading_mode(); Versioned::set_reading_mode('Live'); $files = $this->getFiles(); if ($files) { $fileTypeValidateFunc = $this->fileTypeValidateFunc; if (method_exists($this, $fileTypeValidateFunc)) { $invalidFiles = array(); $validFiles = array(); foreach ($files as $file) { if ($this->$fileTypeValidateFunc($file)) { $validFiles[] = $file; } else { $invalidFiles[] = $file; } } // If at least one file was valid, count as passed if ($this->checkType == self::CHECK_SINGLE && count($invalidFiles) < count($files)) { $validFileList = "\n"; foreach ($validFiles as $vf) { $validFileList .= $vf."\n"; } if ($fileTypeValidateFunc == 'noVidation') { $checkReturn = array( EnvironmentCheck::OK, sprintf('At least these file(s) accessible: %s', $validFileList) ); } else { $checkReturn = array( EnvironmentCheck::OK, sprintf('At least these file(s) passed file type validate function "%s": %s', $fileTypeValidateFunc, $validFileList) ); } } else { if (count($invalidFiles) == 0) { $checkReturn = array(EnvironmentCheck::OK, 'All files valideted'); } else { $invalidFileList = "\n"; foreach ($invalidFiles as $vf) { $invalidFileList .= $vf."\n"; } if ($fileTypeValidateFunc == 'noVidation') { $checkReturn = array( EnvironmentCheck::ERROR, sprintf('File(s) not accessible: %s', $invalidFileList) ); } else { $checkReturn = array( EnvironmentCheck::ERROR, sprintf('File(s) not passing the file type validate function "%s": %s', $fileTypeValidateFunc, $invalidFileList) ); } } } } else { $checkReturn = array( EnvironmentCheck::ERROR, sprintf("Invalid file type validation method name passed: %s ", $fileTypeValidateFunc) ); } } else { $checkReturn = array( EnvironmentCheck::ERROR, sprintf("No files accessible at path %s", $this->path) ); } Versioned::set_reading_mode($origStage); return $checkReturn; } /** * @param string $file * * @return bool */ private function jsonValidate($file) { $json = json_decode(file_get_contents($file)); if (!$json) { return false; } else { return true; } } /** * @param string $file * * @return bool */ protected function noVidation($file) { return true; } /** * Gets a list of absolute file paths. * * @return array */ protected function getFiles() { return glob($this->path); } }