nice, event-based command line support; try 'php index.php' for info
This commit is contained in:
parent
427175983b
commit
082e6fa31b
@ -110,6 +110,60 @@ class PageRequestEvent extends Event {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sent when index.php is called from the command line
|
||||||
|
*/
|
||||||
|
class CommandEvent extends Event {
|
||||||
|
public $cmd = "help";
|
||||||
|
public $args = array();
|
||||||
|
|
||||||
|
public function __construct(/*array(string)*/ $args) {
|
||||||
|
global $user;
|
||||||
|
|
||||||
|
$opts = array();
|
||||||
|
$log_level = SCORE_LOG_WARNING;
|
||||||
|
for($i=1; $i<count($args); $i++) {
|
||||||
|
switch($args[$i]) {
|
||||||
|
case '-u':
|
||||||
|
$user = User::by_name($args[++$i]);
|
||||||
|
if(is_null($user)) {
|
||||||
|
die("Unknown user");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '-q':
|
||||||
|
$log_level += 10;
|
||||||
|
break;
|
||||||
|
case '-v':
|
||||||
|
$log_level -= 10;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$opts[] = $args[$i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
define("CLI_LOG_LEVEL", $log_level);
|
||||||
|
|
||||||
|
if(count($opts) > 0) {
|
||||||
|
$this->cmd = $opts[0];
|
||||||
|
$this->args = array_slice($opts, 1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "\nUsage: php index.php [flags] [command]\n\n";
|
||||||
|
print "Flags:\n";
|
||||||
|
print " -u [username]\n";
|
||||||
|
print " Log in as the specified user\n";
|
||||||
|
print " -q / -v\n";
|
||||||
|
print " Be quieter / more verbose\n";
|
||||||
|
print " (scale is debug / info / warning / error / critical)\n";
|
||||||
|
print " default is to show warnings or above\n";
|
||||||
|
print " \n";
|
||||||
|
print "\nCurrently know commands:\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A signal that some text needs formatting, the event carries
|
* A signal that some text needs formatting, the event carries
|
||||||
* both the text and the result
|
* both the text and the result
|
||||||
|
@ -541,12 +541,8 @@ date and you should plan on moving elsewhere.
|
|||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
function check_cli() {
|
function is_cli() {
|
||||||
if(isset($_SERVER['REMOTE_ADDR'])) {
|
return (PHP_SAPI === 'cli');
|
||||||
print "This script is to be run from the command line only.";
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
$_SERVER['REMOTE_ADDR'] = "127.0.0.1";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -836,6 +832,9 @@ define("SCORE_LOG_NOTSET", 0);
|
|||||||
*/
|
*/
|
||||||
function log_msg(/*string*/ $section, /*int*/ $priority, /*string*/ $message, $flash=null) {
|
function log_msg(/*string*/ $section, /*int*/ $priority, /*string*/ $message, $flash=null) {
|
||||||
send_event(new LogEvent($section, $priority, $message));
|
send_event(new LogEvent($section, $priority, $message));
|
||||||
|
if(is_cli() && ($priority >= CLI_LOG_LEVEL)) {
|
||||||
|
print date("c")." $section: $message\n";
|
||||||
|
}
|
||||||
if($flash === True) {
|
if($flash === True) {
|
||||||
flash_message($message);
|
flash_message($message);
|
||||||
}
|
}
|
||||||
@ -1120,13 +1119,12 @@ function _sanitise_environment() {
|
|||||||
$_COOKIE = _stripslashes_r($_COOKIE);
|
$_COOKIE = _stripslashes_r($_COOKIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(php_sapi_name() === "cli") {
|
if(is_cli()) {
|
||||||
global $argc, $argv;
|
if(isset($_SERVER['REMOTE_ADDR'])) {
|
||||||
|
die("CLI with remote addr? Confused, not taking the risk.");
|
||||||
|
}
|
||||||
$_SERVER['REMOTE_ADDR'] = "0.0.0.0";
|
$_SERVER['REMOTE_ADDR'] = "0.0.0.0";
|
||||||
$_SERVER['HTTP_HOST'] = "<cli command>";
|
$_SERVER['HTTP_HOST'] = "<cli command>";
|
||||||
if($argc > 1) {
|
|
||||||
$_GET['q'] = $argv[1];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1280,6 +1278,7 @@ function _get_query_parts() {
|
|||||||
|
|
||||||
function _get_page_request() {
|
function _get_page_request() {
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
$args = _get_query_parts();
|
$args = _get_query_parts();
|
||||||
|
|
||||||
if(empty($args) || strlen($args[0]) === 0) {
|
if(empty($args) || strlen($args[0]) === 0) {
|
||||||
|
@ -69,6 +69,19 @@ class AdminPage extends Extension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onCommand(CommandEvent $event) {
|
||||||
|
if($event->cmd == "help") {
|
||||||
|
print " get-page [query string]\n";
|
||||||
|
print " eg 'get-page post/list'\n\n";
|
||||||
|
}
|
||||||
|
if($event->cmd == "get-page") {
|
||||||
|
global $page;
|
||||||
|
$_GET['q'] = $event->args[0];
|
||||||
|
send_event(_get_page_request());
|
||||||
|
$page->display();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function onAdminBuilding(AdminBuildingEvent $event) {
|
public function onAdminBuilding(AdminBuildingEvent $event) {
|
||||||
$this->theme->display_page();
|
$this->theme->display_page();
|
||||||
$this->theme->display_form();
|
$this->theme->display_form();
|
||||||
|
@ -27,6 +27,18 @@ class BulkAdd extends Extension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onCommand(CommandEvent $event) {
|
||||||
|
if($event->cmd == "help") {
|
||||||
|
print " bulk-add [directory]\n";
|
||||||
|
print " Import this directory\n\n";
|
||||||
|
}
|
||||||
|
if($event->cmd == "bulk-add") {
|
||||||
|
if(count($event->args) == 1) {
|
||||||
|
$this->add_dir($event->args[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function onAdminBuilding(AdminBuildingEvent $event) {
|
public function onAdminBuilding(AdminBuildingEvent $event) {
|
||||||
$this->theme->display_admin_block();
|
$this->theme->display_admin_block();
|
||||||
}
|
}
|
||||||
|
10
index.php
10
index.php
@ -95,8 +95,14 @@ try {
|
|||||||
$page = class_exists("CustomPage") ? new CustomPage() : new Page();
|
$page = class_exists("CustomPage") ? new CustomPage() : new Page();
|
||||||
$user = _get_user();
|
$user = _get_user();
|
||||||
send_event(new InitExtEvent());
|
send_event(new InitExtEvent());
|
||||||
send_event(_get_page_request());
|
if(!is_cli()) { // web request
|
||||||
$page->display();
|
send_event(_get_page_request());
|
||||||
|
$page->display();
|
||||||
|
}
|
||||||
|
else { // command line request
|
||||||
|
global $argv;
|
||||||
|
send_event(new CommandEvent($argv));
|
||||||
|
}
|
||||||
|
|
||||||
$database->db->commit();
|
$database->db->commit();
|
||||||
// saving cache data and profiling data to disk can happen later
|
// saving cache data and profiling data to disk can happen later
|
||||||
|
Loading…
x
Reference in New Issue
Block a user