예제 #1
0
	public static function obtainPermissionsXML($node, $pkg = null) {
		// this function reads a file in, and grabs all the various filesystem permissions xml that applies to that file
		// and returns it in a DOM object
		
		$node = SinglePage::sanitizePath($node);
		
		
		// first, we operate on this if it's not in a package
		
		if (!is_object($pkg)) {
			
			if (is_dir(DIR_FILES_CONTROLLERS . '/' . $node) || is_dir(DIR_FILES_CONTROLLERS_REQUIRED . '/' . $node)) {
				if (is_dir(DIR_FILES_CONTROLLERS . '/' . $node)) {
					$pathToPerms = DIR_FILES_CONTROLLERS . '/' . $node;
					if (file_exists($pathToPerms . '/' . FILENAME_COLLECTION_ACCESS)) {
						$xmlweb = $pathToPerms . '/' . FILENAME_COLLECTION_ACCESS;
					}
				}
				
				if (is_dir(DIR_FILES_CONTROLLERS_REQUIRED . '/' . $node)) {
					$pathToPerms = DIR_FILES_CONTROLLERS_REQUIRED . '/' . $node;
					if (file_exists($pathToPerms . '/' . FILENAME_COLLECTION_ACCESS)) {
						$xmlcore = $pathToPerms . '/' . FILENAME_COLLECTION_ACCESS;
					}
				}
			} else {
				if (strpos($node, '/') === false) {
					if (file_exists(DIR_FILES_CONTROLLERS . '/' . FILENAME_COLLECTION_ACCESS)) {
						$xmlweb = DIR_FILES_CONTROLLERS . '/' . FILENAME_COLLECTION_ACCESS;
					} else if (file_exists(DIR_FILES_CONTROLLERS_REQUIRED . '/' . FILENAME_COLLECTION_ACCESS)) {
						$xmlcore = DIR_FILES_CONTROLLERS_REQUIRED . '/' . FILENAME_COLLECTION_ACCESS;
					}
				}			
			}
				
			
			if (isset($xmlweb)) {
				$perms = SinglePage::checkPermissionsXML($xmlweb, $node);
				if ($perms != null) {
					return $perms;
				}
			} 

			
			if (isset($xmlcore)) {
				$perms = SinglePage::checkPermissionsXML($xmlcore, $node);
				if ($perms != null) {
					return $perms;
				}
			}

		} else {
		
			if (is_dir(DIR_PACKAGES . '/' . $pkg->getPackageHandle())) {
				$dirp = DIR_PACKAGES;			
			} else {
				$dirp = DIR_PACKAGES_CORE;
			}

			$file1 = $dirp . '/' . $pkg->getPackageHandle() . '/' . DIRNAME_PAGES . '/' . $node . '/' . FILENAME_COLLECTION_VIEW;
			$file2 = $dirp . '/' . $pkg->getPackageHandle() . '/' . DIRNAME_PAGES . '/' . $node . '.php';
			if (file_exists($file1)) {
				$pathToPerms = $dirp . '/' . $pkg->getPackageHandle() . '/' . DIRNAME_CONTROLLERS . '/' . $node;
			} else if (file_exists($file2)) {
				$pathNode = '/' . substr($node, 0, strrpos($node, '/'));
				$pathToPerms = $dirp . '/' . $pkg->getPackageHandle() . '/' . DIRNAME_CONTROLLERS . $pathNode;
			}
			
			if (file_exists($pathToPerms . '/' . FILENAME_COLLECTION_ACCESS)) {
				$xml = $pathToPerms . '/' . FILENAME_COLLECTION_ACCESS;
			}
			
			if (isset($xml)) {
				$perms = SinglePage::checkPermissionsXML($xml, $node);
				if ($perms != null) {
					return $perms;
				}
			}
		}

		return false;
	}