From f5fc8a35715e3bd7c6892c6a95ff4147d639c0bd Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Wed, 24 Jun 2015 17:01:40 -0500
Subject: [PATCH] cli: Move as a major feature

(rather than deleted after install)
---
 README.md                                     |  4 +-
 bootstrap.php                                 |  1 +
 .../class.module.php => include/class.cli.php |  0
 {setup => include}/cli/cli.inc.php            |  4 +-
 {setup => include}/cli/modules/cron.php       |  2 -
 {setup => include}/cli/modules/deploy.php     |  1 -
 {setup => include}/cli/modules/export.php     |  2 -
 {setup => include}/cli/modules/file.php       |  2 -
 {setup => include}/cli/modules/i18n.php       |  2 -
 {setup => include}/cli/modules/import.php     |  2 -
 {setup => include}/cli/modules/list.php       |  2 -
 {setup => include}/cli/modules/org.php        |  2 -
 {setup => include}/cli/modules/package.php    |  0
 {setup => include}/cli/modules/unpack.php     |  2 -
 {setup => include}/cli/modules/user.php       |  2 -
 manage.php                                    | 65 +++++++++++++++++++
 setup/cli/manage.php                          | 65 +------------------
 setup/doc/i18n.md                             |  2 +-
 setup/doc/package.md                          |  4 +-
 19 files changed, 73 insertions(+), 91 deletions(-)
 rename setup/cli/modules/class.module.php => include/class.cli.php (100%)
 rename {setup => include}/cli/cli.inc.php (93%)
 rename {setup => include}/cli/modules/cron.php (87%)
 rename {setup => include}/cli/modules/deploy.php (99%)
 rename {setup => include}/cli/modules/export.php (96%)
 rename {setup => include}/cli/modules/file.php (99%)
 rename {setup => include}/cli/modules/i18n.php (99%)
 rename {setup => include}/cli/modules/import.php (98%)
 rename {setup => include}/cli/modules/list.php (96%)
 rename {setup => include}/cli/modules/org.php (95%)
 rename {setup => include}/cli/modules/package.php (100%)
 rename {setup => include}/cli/modules/unpack.php (99%)
 rename {setup => include}/cli/modules/user.php (98%)
 create mode 100755 manage.php
 mode change 100755 => 100644 setup/cli/manage.php

diff --git a/README.md b/README.md
index 8a81fba2e..72c42c75f 100644
--- a/README.md
+++ b/README.md
@@ -43,7 +43,7 @@ And deploy the code into somewhere in your server's www root folder, for
 instance
 
     cd osTicket-1.8
-    php setup/cli/manage.php deploy --setup /var/www/htdocs/osticket/
+    php manage.php deploy --setup /var/www/htdocs/osticket/
 
 Then you can configure your server if necessary to serve that folder, and
 visit the page and install osTicket as usual. Go ahead and even delete
@@ -52,7 +52,7 @@ later, you can fetch updates and deploy them (from the folder where you
 cloned the git repo into)
 
     git pull
-    php setup/cli/manage.php deploy -v /var/www/htdocs/osticket/
+    php manage.php deploy -v /var/www/htdocs/osticket/
 
 Upgrading
 ---------
diff --git a/bootstrap.php b/bootstrap.php
index 6d80b6330..c7ba0a415 100644
--- a/bootstrap.php
+++ b/bootstrap.php
@@ -309,6 +309,7 @@ define('SETUP_DIR',ROOT_DIR.'setup/');
 
 define('UPGRADE_DIR', INCLUDE_DIR.'upgrader/');
 define('I18N_DIR', INCLUDE_DIR.'i18n/');
+define('CLI_DIR', INCLUDE_DIR.'cli/');
 
 /*############## Do NOT monkey with anything else beyond this point UNLESS you really know what you are doing ##############*/
 
diff --git a/setup/cli/modules/class.module.php b/include/class.cli.php
similarity index 100%
rename from setup/cli/modules/class.module.php
rename to include/class.cli.php
diff --git a/setup/cli/cli.inc.php b/include/cli/cli.inc.php
similarity index 93%
rename from setup/cli/cli.inc.php
rename to include/cli/cli.inc.php
index 31bdbfe89..401ddba40 100644
--- a/setup/cli/cli.inc.php
+++ b/include/cli/cli.inc.php
@@ -21,11 +21,9 @@ if(!strcasecmp(basename($_SERVER['SCRIPT_NAME']),basename(__FILE__))) die('kwahe
 define('ROOT_PATH', '/');
 define('INC_DIR',dirname(__file__).'/../inc/'); //local include dir!
 
-require_once(dirname(__file__).'/../../bootstrap.php');
+require_once INCLUDE_DIR . "class.cli.php";
 
 Bootstrap::loadConfig();
 Bootstrap::defineTables(TABLE_PREFIX);
 Bootstrap::loadCode();
 Bootstrap::i18n_prep();
-
-?>
diff --git a/setup/cli/modules/cron.php b/include/cli/modules/cron.php
similarity index 87%
rename from setup/cli/modules/cron.php
rename to include/cli/modules/cron.php
index 724c06cac..c2df9458b 100644
--- a/setup/cli/modules/cron.php
+++ b/include/cli/modules/cron.php
@@ -1,6 +1,4 @@
 <?php
-require_once dirname(__file__) . "/class.module.php";
-require_once dirname(__file__) . "/../cli.inc.php";
 
 class CronManager extends Module {
     var $prologue = 'CLI cron manager for osTicket';
diff --git a/setup/cli/modules/deploy.php b/include/cli/modules/deploy.php
similarity index 99%
rename from setup/cli/modules/deploy.php
rename to include/cli/modules/deploy.php
index c616e321f..7a795e663 100644
--- a/setup/cli/modules/deploy.php
+++ b/include/cli/modules/deploy.php
@@ -1,5 +1,4 @@
 <?php
-require_once dirname(__file__) . "/class.module.php";
 require_once dirname(__file__) . "/unpack.php";
 
 class Deployment extends Unpacker {
diff --git a/setup/cli/modules/export.php b/include/cli/modules/export.php
similarity index 96%
rename from setup/cli/modules/export.php
rename to include/cli/modules/export.php
index a6c45fcee..dc7d7ae3a 100644
--- a/setup/cli/modules/export.php
+++ b/include/cli/modules/export.php
@@ -13,8 +13,6 @@
 
     vim: expandtab sw=4 ts=4 sts=4:
 **********************************************************************/
-require_once dirname(__file__) . "/class.module.php";
-require_once dirname(__file__) . "../../cli.inc.php";
 
 class Exporter extends Module {
     var $prologue =
diff --git a/setup/cli/modules/file.php b/include/cli/modules/file.php
similarity index 99%
rename from setup/cli/modules/file.php
rename to include/cli/modules/file.php
index b1a2f9be6..f3f7991d3 100644
--- a/setup/cli/modules/file.php
+++ b/include/cli/modules/file.php
@@ -1,6 +1,4 @@
 <?php
-require_once dirname(__file__) . "/class.module.php";
-require_once dirname(__file__) . "/../cli.inc.php";
 
 class FileManager extends Module {
     var $prologue = 'CLI file manager for osTicket';
diff --git a/setup/cli/modules/i18n.php b/include/cli/modules/i18n.php
similarity index 99%
rename from setup/cli/modules/i18n.php
rename to include/cli/modules/i18n.php
index 9d5e6ca4c..617960cfd 100644
--- a/setup/cli/modules/i18n.php
+++ b/include/cli/modules/i18n.php
@@ -1,7 +1,5 @@
 <?php
 
-require_once dirname(__file__) . "/class.module.php";
-require_once dirname(__file__) . "/../cli.inc.php";
 require_once INCLUDE_DIR . 'class.format.php';
 
 class i18n_Compiler extends Module {
diff --git a/setup/cli/modules/import.php b/include/cli/modules/import.php
similarity index 98%
rename from setup/cli/modules/import.php
rename to include/cli/modules/import.php
index 27bf8962e..78946919c 100644
--- a/setup/cli/modules/import.php
+++ b/include/cli/modules/import.php
@@ -13,8 +13,6 @@
 
     vim: expandtab sw=4 ts=4 sts=4:
 **********************************************************************/
-require_once dirname(__file__) . "/class.module.php";
-require_once dirname(__file__) . "../../cli.inc.php";
 require_once INCLUDE_DIR . "class.export.php";
 require_once INCLUDE_DIR . 'class.json.php';
 
diff --git a/setup/cli/modules/list.php b/include/cli/modules/list.php
similarity index 96%
rename from setup/cli/modules/list.php
rename to include/cli/modules/list.php
index 33867acba..c1c5512d2 100644
--- a/setup/cli/modules/list.php
+++ b/include/cli/modules/list.php
@@ -1,6 +1,4 @@
 <?php
-require_once dirname(__file__) . "/class.module.php";
-require_once dirname(__file__) . "/../cli.inc.php";
 include_once INCLUDE_DIR .'class.translation.php';
 
 
diff --git a/setup/cli/modules/org.php b/include/cli/modules/org.php
similarity index 95%
rename from setup/cli/modules/org.php
rename to include/cli/modules/org.php
index c47e5cd7d..ae2fd7932 100644
--- a/setup/cli/modules/org.php
+++ b/include/cli/modules/org.php
@@ -1,6 +1,4 @@
 <?php
-require_once dirname(__file__) . "/class.module.php";
-require_once dirname(__file__) . "/../cli.inc.php";
 
 class OrganizationManager extends Module {
     var $prologue = 'CLI organization manager';
diff --git a/setup/cli/modules/package.php b/include/cli/modules/package.php
similarity index 100%
rename from setup/cli/modules/package.php
rename to include/cli/modules/package.php
diff --git a/setup/cli/modules/unpack.php b/include/cli/modules/unpack.php
similarity index 99%
rename from setup/cli/modules/unpack.php
rename to include/cli/modules/unpack.php
index cc4b9d9d9..add4abf5c 100644
--- a/setup/cli/modules/unpack.php
+++ b/include/cli/modules/unpack.php
@@ -1,7 +1,5 @@
 <?php
 
-require_once dirname(__file__) . "/class.module.php";
-
 class Unpacker extends Module {
 
     var $prologue = "Unpacks osTicket into target install path";
diff --git a/setup/cli/modules/user.php b/include/cli/modules/user.php
similarity index 98%
rename from setup/cli/modules/user.php
rename to include/cli/modules/user.php
index 6fd05f778..1504aacd2 100644
--- a/setup/cli/modules/user.php
+++ b/include/cli/modules/user.php
@@ -1,6 +1,4 @@
 <?php
-require_once dirname(__file__) . "/class.module.php";
-require_once dirname(__file__) . "/../cli.inc.php";
 
 class UserManager extends Module {
     var $prologue = 'CLI user manager';
diff --git a/manage.php b/manage.php
new file mode 100755
index 000000000..6e41cf6d5
--- /dev/null
+++ b/manage.php
@@ -0,0 +1,65 @@
+#!/usr/bin/env php
+<?php
+
+if (PHP_SAPI != "cli")
+    die("Management only supported from command-line\n");
+
+require_once 'bootstrap.php';
+require_once CLI_DIR . 'cli.inc.php';
+
+if (!function_exists('noop')) { function noop() {} }
+session_set_save_handler('noop','noop','noop','noop','noop','noop');
+
+class Manager extends Module {
+    var $prologue =
+        "Manage one or more osTicket installations";
+
+    var $arguments = array(
+        'action' => "Action to be managed"
+    );
+
+    var $usage = '$script action [options] [arguments]';
+
+    var $autohelp = false;
+
+    function showHelp() {
+        foreach (glob(CLI_DIR.'modules/*.php') as $script)
+            include_once $script;
+
+        global $registered_modules;
+        $this->epilog =
+            "Currently available modules follow. Use 'manage.php <module>
+            --help' for usage regarding each respective module:";
+
+        parent::showHelp();
+
+        echo "\n";
+        foreach ($registered_modules as $name=>$mod)
+            echo str_pad($name, 20) . $mod->prologue . "\n";
+    }
+
+    function run($args, $options) {
+        if ($options['help'] && !$args['action'])
+            $this->showHelp();
+
+        else {
+            $action = $args['action'];
+
+            global $argv;
+            foreach ($argv as $idx=>$val)
+                if ($val == $action)
+                    unset($argv[$idx]);
+
+            require_once CLI_DIR . "modules/{$args['action']}.php";
+            if (($module = Module::getInstance($action)))
+                return $module->_run($args['action']);
+
+            $this->stderr->write("Unknown action given\n");
+            $this->showHelp();
+        }
+    }
+}
+
+$manager = new Manager();
+$manager->parseOptions();
+$manager->_run(basename(__file__));
diff --git a/setup/cli/manage.php b/setup/cli/manage.php
old mode 100755
new mode 100644
index 83d715ac1..d2ae92b5a
--- a/setup/cli/manage.php
+++ b/setup/cli/manage.php
@@ -1,66 +1,3 @@
-#!/usr/bin/env php
 <?php
 
-require_once "modules/class.module.php";
-
-if (!function_exists('noop')) { function noop() {} }
-session_set_save_handler('noop','noop','noop','noop','noop','noop');
-
-class Manager extends Module {
-    var $prologue =
-        "Manage one or more osTicket installations";
-
-    var $arguments = array(
-        'action' => "Action to be managed"
-    );
-
-    var $usage = '$script action [options] [arguments]';
-
-    var $autohelp = false;
-
-    function showHelp() {
-        foreach (glob(dirname(__file__).'/modules/*.php') as $script)
-            include_once $script;
-
-        global $registered_modules;
-        $this->epilog =
-            "Currently available modules follow. Use 'manage.php <module>
-            --help' for usage regarding each respective module:";
-
-        parent::showHelp();
-
-        echo "\n";
-        foreach ($registered_modules as $name=>$mod)
-            echo str_pad($name, 20) . $mod->prologue . "\n";
-    }
-
-    function run($args, $options) {
-        if ($options['help'] && !$args['action'])
-            $this->showHelp();
-
-        else {
-            $action = $args['action'];
-
-            global $argv;
-            foreach ($argv as $idx=>$val)
-                if ($val == $action)
-                    unset($argv[$idx]);
-
-            require_once dirname(__file__)."/modules/{$args['action']}.php";
-            if (($module = Module::getInstance($action)))
-                return $module->_run($args['action']);
-
-            $this->stderr->write("Unknown action given\n");
-            $this->showHelp();
-        }
-    }
-}
-
-if (php_sapi_name() != "cli")
-    die("Management only supported from command-line\n");
-
-$manager = new Manager();
-$manager->parseOptions();
-$manager->_run(basename(__file__));
-
-?>
+include dirname(__file__) . '/../../manage.php';
diff --git a/setup/doc/i18n.md b/setup/doc/i18n.md
index 92409a0de..bc995667d 100644
--- a/setup/doc/i18n.md
+++ b/setup/doc/i18n.md
@@ -110,7 +110,7 @@ comments can be used. For instance:
 
 Use the command line to compile the POT file to standard out
 
-    php setup/cli/manage.php i18n make-pot > message.pot
+    php manage.php i18n make-pot > message.pot
 
 ### Building language packs
 
diff --git a/setup/doc/package.md b/setup/doc/package.md
index 5570bb609..c9c3f0eca 100644
--- a/setup/doc/package.md
+++ b/setup/doc/package.md
@@ -11,11 +11,11 @@ being added to the distribution.
 
 More information is available via the automated help output.
 
-    php setup/cli/manage.php package --help
+    php manage.php package --help
 
 Creating the ZIP file
 ---------------------
 To package the system using the defaults (as a ZIP file), just invoke the
 packager with no other options.
 
-    php setup/cli/manage.php package
+    php manage.php package
-- 
GitLab