diff --git a/retailcrm/app.php b/retailcrm/app.php index 7583def..5bcc4c9 100644 --- a/retailcrm/app.php +++ b/retailcrm/app.php @@ -10,11 +10,20 @@ if ( require_once 'bootstrap.php'; -$options = getopt('dluce:m:p:r:h:'); +$shortopts = 'dluce:m:p:r:h:'; + +$options = getopt($shortopts); + +if (!$options || $options == -1) { + $opt = new OptHelper($shortopts); + $options = $opt->get(); +} if (isset($options['e'])) { $command = new Command($options); $command->run(); +} elseif (!$options) { + CommandHelper::notWorkGetOptNotice(); } else { CommandHelper::runHelp(); } diff --git a/retailcrm/src/Bulders/OrdersBuilder.php b/retailcrm/src/Bulders/OrdersBuilder.php index 88f6e1e..f7aaeec 100644 --- a/retailcrm/src/Bulders/OrdersBuilder.php +++ b/retailcrm/src/Bulders/OrdersBuilder.php @@ -43,8 +43,8 @@ class OrdersBuilder extends Builder $query = $this->rule->getSQL('orders_uid'); $handler = $this->rule->getHandler('OrdersHandler'); $this->sql = $this->container->db->prepare($query); - $this->sql->bindParam(':orderIds', $uids); $uids = DataHelper::explodeUids($uidString); + $this->sql->bindParam(':orderIds', $uids); return $this->build($handler); } diff --git a/retailcrm/src/Components/Command.php b/retailcrm/src/Components/Command.php index 6f77e03..95498bd 100644 --- a/retailcrm/src/Components/Command.php +++ b/retailcrm/src/Components/Command.php @@ -62,13 +62,30 @@ class Command $dbName = $this->container->settings['db']['dbname']; $dbHost = $this->container->settings['db']['host']; - $dumpfile = sprintf('%sdbdump.sql.gz', $this->container->saveDir); + switch ($this->container->settings['db']['driver']) { + case 'mysql': + $cmd = sprintf( + 'mysqldump -u %s --password=%s --host=%s %s', + $dbUser, $dbPass, $dbHost, $dbName + ); + break; + case 'pgsql': + $cmd = sprintf( + 'PGPASSWORD=\'%s\' pg_dump -U %s -h %s %s', + $dbPass, $dbUser, $dbHost, $dbName + ); + break; + default: + CommandHelper::dumpNotice(); + return; + } - $cmd = sprintf( - 'mysqldump -u %s --password=%s --host=%s %s | gzip --best > %s', - $dbUser, $dbPass, $dbHost, $dbName, $dumpfile + passthru( + sprintf( + '%s | gzip --best > %sdbdump.sql.gz', + $cmd, $this->container->saveDir + ) ); - passthru($cmd); } public function runIcml() diff --git a/retailcrm/src/Helpers/ApiHelper.php b/retailcrm/src/Helpers/ApiHelper.php index cf6c024..c03705e 100644 --- a/retailcrm/src/Helpers/ApiHelper.php +++ b/retailcrm/src/Helpers/ApiHelper.php @@ -83,7 +83,7 @@ class ApiHelper if ($searchEdit) { $this->checkCustomers($customer, true); } else { - $this->api->ordersEdit($customer); + $this->api->customersEdit($customer); } time_nanosleep(0, 250000000); } diff --git a/retailcrm/src/Helpers/CommandHelper.php b/retailcrm/src/Helpers/CommandHelper.php index de52940..69b5e50 100644 --- a/retailcrm/src/Helpers/CommandHelper.php +++ b/retailcrm/src/Helpers/CommandHelper.php @@ -25,6 +25,16 @@ class CommandHelper echo " -h\t\tHistory type, if type is set only this history will be recieved\n"; } + public static function dumpNotice() + { + echo "\033[0;31mUnfortunately for the database can not be used to make the dump\033[0m\n"; + } + + public static function notWorkGetOptNotice() + { + echo "\033[0;31mDoes not function getopt. It is used to obtain the parameters from the command line. Please refer to the server administrator.\033[0m\n"; + } + public static function updateNotice() { echo "\033[0;31mFull update is not allowed, please select one of the following flags: limit, set of identifiers or a specific id\033[0m\n"; diff --git a/retailcrm/src/Helpers/DebugHelper.php b/retailcrm/src/Helpers/DebugHelper.php index 8c91eef..e654de2 100644 --- a/retailcrm/src/Helpers/DebugHelper.php +++ b/retailcrm/src/Helpers/DebugHelper.php @@ -45,4 +45,4 @@ class DebugHelper { echo sprintf("%s\t%s\t%s%s", $string, $this->getCpuUsage(), $this->getMemoryUsage(), PHP_EOL); } -} \ No newline at end of file +} diff --git a/retailcrm/src/Helpers/OptHelper.php b/retailcrm/src/Helpers/OptHelper.php new file mode 100644 index 0000000..74a7ead --- /dev/null +++ b/retailcrm/src/Helpers/OptHelper.php @@ -0,0 +1,96 @@ +shortopts = preg_split( + '@([a-z0-9][:]{0,2})@i', + $shortopts, 0, + PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY + ); + } + + if (!empty($longopts)) { + $this->longopts = $longopts; + } + } + + public function get() + { + if (!array_key_exists('argv', $_SERVER)) { + return false; + } + + $result = array(); + + $params = $_SERVER['argv']; + + foreach ($params as $key => $param) { + if ($param{0} == '-') { + $name = substr($param, 1); + $value = true; + + if ($name{0} == '-') { + $name = substr($name, 1); + if (strpos($param, '=') !== false) { + $long = explode('=', substr($param, 2), 2); + $name = $long[0]; + $value = $long[1]; + unset($value); + } + } + + if ( + isset($params[$key + 1]) && + $value === true && + $params[$key + 1] !== false && + $params[$key + 1]{0} != '-' + ) { + $value = $params[$key + 1]; + } + + $result[$name] = $value; + } else { + $result[] = $param; + } + } + + unset($params); + + return empty($result) ? false : $this->filter($result); + } + + private function filter($params) + { + $result = array(); + + $opts = array_merge($this->shortopts, $this->longopts); + + foreach ($opts as $opt) { + if (substr($opt, -2) === '::') { + $key = substr($opt, 0, -2); + + if (isset($params[$key]) && !empty($params[$key])) { + $result[$key] = $params[$key]; + } elseif (isset($params[$key])) { + $result[$key] = true; + } + } elseif (substr($opt, -1) === ':') { + $key = substr($opt, 0, -1); + + if (isset($params[$key]) && !empty($params[$key])) { + $result[$key] = $params[$key]; + } + } elseif (ctype_alnum($opt) && isset($params[$opt])) { + $result[$opt] = true; + } + } + + return $result; + } +}