DaPortal
<?php //$Id$
							//Copyright (c) 2011-2016 Pierre Pronchery <khorben@defora.org>
							//This file is part of DeforaOS Web DaPortal
							//
							//This program is free software: you can redistribute it and/or modify
							//it under the terms of the GNU General Public License as published by
							//the Free Software Foundation, version 3 of the License.
							//
							//This program is distributed in the hope that it will be useful,
							//but WITHOUT ANY WARRANTY; without even the implied warranty of
							//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
							//GNU General Public License for more details.
							//
							//You should have received a copy of the GNU General Public License
							//along with this program.  If not, see <http://www.gnu.org/licenses/>.
							//CLIEngine
							class CLIEngine extends Engine
							{
								//public
								//methods
								//accessors
								//CLIEngine::getDefaultType
								public function getDefaultType()
								{
									return 'text/plain';
								}
								//CLIEngine::getRequest
								public function getRequest()
								{
									if(($options = getopt('DM:fm:a:i:O:o:qt:v')) === FALSE)
										return parent::getRequest();
									$idempotent = TRUE;
									$module = FALSE;
									$action = FALSE;
									$id = FALSE;
									$title = FALSE;
									$parameters = array();
									$type = $this->getDefaultType();
									foreach($options as $key => $value)
										switch($key)
										{
											case 'D':
												$this->setDebug(TRUE);
												break;
											case 'M':
												$type = $options['M'];
												break;
											case 'f':
												$idempotent = FALSE;
												break;
											case 'm':
												$module = $options['m'];
												break;
											case 'a':
												$action = $options['a'];
												break;
											case 'i':
												$id = $options['i'];
												break;
											case 'O':
											case 'o':
												if(!is_array($options[$key]))
													$options[$key] = array($options[$key]);
												foreach($options[$key] as $o)
												{
													$o = explode('=', $o);
													if(count($o) < 2)
													{
														$this->usage();
														return FALSE;
													}
													$key = array_shift($o);
													$value = implode('=', $o);
													if(substr($key, -2) == '[]')
													{
														$key = substr($key, 0, -2);
														if(!isset($parameters[$key]))
															$parameters[$key] = array();
														$parameters[$key][] = $value;
													}
													else
														$parameters[$key] = $value;
												}
												break;
											case 'q':
												$this->verbose = 0;
												break;
											case 't':
												$title = $options['t'];
												break;
											case 'v':
												$this->verbose++;
												break;
										}
									$ret = new Request($module, $action, $id, $title, $parameters);
									$ret->setIdempotent($idempotent);
									$ret->setType($type);
									return $ret;
								}
								//essential
								//CLIEngine::match
								public function match()
								{
									if(isset($_SERVER['argc']) && $_SERVER['argv'])
										return 100;
									return 1;
								}
								//CLIEngine::attach
								public function attach()
								{
									DaPortal\Locale::init($this);
								}
								//useful
								//CLIEngine::usage
								protected function usage()
								{
									fputs(STDERR, static::$usage);
								}
								//protected
								//properties
								static protected $usage = "Usage: daportal [-Dfqv][-M mime-type][-m module [-a action][-i ID][-t title]]
							                [-o parameter=value...]\n";
							}
							?>
							