protected function callback($args) {
		$checkReg = '/[^a-zA-Z0-9;._-]/';
		$node = (isset($args['node']) && !preg_match($checkReg, $args['node']))? $args['node'] : '';
		$json = (isset($args['json']) && @json_decode($args['json']))? $args['json'] : '{}';
		$bind  = (isset($args['bind']) && !preg_match($checkReg, $args['bind']))? $args['bind'] : '';
		$done = (!empty($args['done']));
		
		while( ob_get_level() ) {
			if (! ob_end_clean()) {
				break;
			}
		}
		
		if ($done || ! $this->callbackWindowURL) {
			$script = '';
			if ($node) {
				$script .= '
					var w = window.opener || weindow.parent || window
					var elf = w.document.getElementById(\''.$node.'\').elfinder;
					if (elf) {
						var data = '.$json.';
						data.warning && elf.error(data.warning);
						data.removed && data.removed.length && elf.remove(data);
						data.added   && data.added.length   && elf.add(data);
						data.changed && data.changed.length && elf.change(data);';
				if ($bind) {
					$script .= '
						elf.trigger(\''.$bind.'\', data);';
				}
				$script .= '
						data.sync && elf.sync();
					}';
			}
			$script .= 'window.close();';
			
			$out = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script>'.$script.'</script></head><body><a href="#" onlick="window.close();return false;">Close this window</a></body></html>';
			
			header('Content-Type: text/html; charset=utf-8');
			header('Content-Length: '.strlen($out));
			header('Cache-Control: private');
			header('Pragma: no-cache');
			
			echo $out;
			
		} else {
			$url = $this->callbackWindowURL;
			$url .= ((strpos($url, '?') === false)? '?' : '&')
				 . '&node=' . rawurlencode($node)
				 . (($json !== '{}')? ('&json=' . rawurlencode($json)) : '')
				 . ($bind? ('&bind=' .  rawurlencode($bind)) : '')
				 . '&done=1';
			
			header('Location: ' . $url);
			
		}
		exit();
	}
protected function callback($args) {
		$checkReg = '/[^a-zA-Z0-9;._-]/';
		$node = (isset($args['node']) && !preg_match($checkReg, $args['node']))? $args['node'] : '';
		$json = (isset($args['json']) && @json_decode($args['json']))? $args['json'] : '{}';
		$bind  = (isset($args['bind']) && !preg_match($checkReg, $args['bind']))? $args['bind'] : '';
		$done = (!empty($args['done']));
		
		while( ob_get_level() ) {
			if (! ob_end_clean()) {
				break;
			}
		}
		
		if ($done || ! $this->callbackWindowURL) {
			$script = '';
			if ($node) {
				$script .= '
					var w = window.opener || weindow.parent || window
					var elf = w.document.getElementById(\''.$node.'\').elfinder;
					if (elf) {
						var data = '.$json.';
						data.warning && elf.error(data.warning);
						data.removed && data.removed.length && elf.remove(data);
						data.added   && data.added.length   && elf.add(data);
						data.changed && data.changed.length && elf.change(data);';
				if ($bind) {
					$script .= '
						elf.trigger(\''.$bind.'\', data);';
				}
				$script .= '
						data.sync && elf.sync();
					}';
			}
			$script .= 'window.close();';
			
			$out = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script>'.$script.'</script></head><body><a href="#" onlick="window.close();return false;">Close this window</a></body></html>';
			
			header('Content-Type: text/html; charset=utf-8');
			header('Content-Length: '.strlen($out));
			header('Cache-Control: private');
			header('Pragma: no-cache');
			
			echo $out;
			
		} else {
			$url = $this->callbackWindowURL;
			$url .= ((strpos($url, '?') === false)? '?' : '&')
				 . '&node=' . rawurlencode($node)
				 . (($json !== '{}')? ('&json=' . rawurlencode($json)) : '')
				 . ($bind? ('&bind=' .  rawurlencode($bind)) : '')
				 . '&done=1';
			
			header('Location: ' . $url);
			
		}
		exit();
	}
protected function callback ( $ args ) { $ checkReg = '/[^a-zA-Z0-9;._-]/' ; $ node = ( isset ( $ args [ 'node' ] ) && ! preg_match ( $ checkReg , $ args [ 'node' ] ) ) ? $ args [ 'node' ] : '' ; $ json = ( isset ( $ args [ 'json' ] ) && @ json_decode ( $ args [ 'json' ] ) ) ? $ args [ 'json' ] : '{}' ; $ bind = ( isset ( $ args [ 'bind' ] ) && ! preg_match ( $ checkReg , $ args [ 'bind' ] ) ) ? $ args [ 'bind' ] : '' ; $ done = ( ! empty ( $ args [ 'done' ] ) ) ; while ( ob_get_level ( ) ) { if ( ! ob_end_clean ( ) ) { break ; } } if ( $ done || ! $ this -> callbackWindowURL ) { $ script = '' ; if ( $ node ) { $ script .= '
					var w = window.opener || weindow.parent || window
					var elf = w.document.getElementById(\'' . $ node . '\').elfinder;
					if (elf) {
						var data = ' . $ json . ';
						data.warning && elf.error(data.warning);
						data.removed && data.removed.length && elf.remove(data);
						data.added   && data.added.length   && elf.add(data);
						data.changed && data.changed.length && elf.change(data);' ; if ( $ bind ) { $ script .= '
						elf.trigger(\'' . $ bind . '\', data);' ; } $ script .= '
						data.sync && elf.sync();
					}' ; } $ script .= 'window.close();' ; $ out = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script>' . $ script . '</script></head><body><a href="#" onlick="window.close();return false;">Close this window</a></body></html>' ; header ( 'Content-Type: text/html; charset=utf-8' ) ; header ( 'Content-Length: ' . strlen ( $ out ) ) ; header ( 'Cache-Control: private' ) ; header ( 'Pragma: no-cache' ) ; echo $ out ; } else { $ url = $ this -> callbackWindowURL ; $ url .= ( ( strpos ( $ url , '?' ) === false ) ? '?' : '&' ) . '&node=' . rawurlencode ( $ node ) . ( ( $ json !== '{}' ) ? ( '&json=' . rawurlencode ( $ json ) ) : '' ) . ( $ bind ? ( '&bind=' . rawurlencode ( $ bind ) ) : '' ) . '&done=1' ; header ( 'Location: ' . $ url ) ; } exit ( ) ; }
Output callback result with JavaScript that control elFinder
or HTTP redirect to callbackWindowURL

@param  array  command arguments
@author Naoki Sawada
Output callback result with JavaScript that control elFinder or HTTP redirect to callbackWindowURL