From 1d2ca952161dea2f53a29ac8b5724fe7debd79a9 Mon Sep 17 00:00:00 2001 From: Dmitry Mamontov Date: Tue, 17 Nov 2015 15:51:37 -0500 Subject: [PATCH 1/6] add support dump pgsql --- retailcrm/src/Components/Command.php | 27 ++++++++++++++++++++----- retailcrm/src/Helpers/CommandHelper.php | 5 +++++ retailcrm/src/Helpers/DebugHelper.php | 2 +- 3 files changed, 28 insertions(+), 6 deletions(-) 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/CommandHelper.php b/retailcrm/src/Helpers/CommandHelper.php index 10ae6a6..5d9604c 100644 --- a/retailcrm/src/Helpers/CommandHelper.php +++ b/retailcrm/src/Helpers/CommandHelper.php @@ -25,6 +25,11 @@ 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 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 +} From b079105b4f9f95df04fd55e226913abd435271f4 Mon Sep 17 00:00:00 2001 From: Dmitry Mamontov Date: Mon, 23 Nov 2015 09:31:55 -0500 Subject: [PATCH 2/6] add custom getopt --- retailcrm/app.php | 6 +++++ retailcrm/src/Helpers/CommandHelper.php | 5 ++++ retailcrm/src/Helpers/DataHelper.php | 33 +++++++++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/retailcrm/app.php b/retailcrm/app.php index 7583def..63ac7aa 100644 --- a/retailcrm/app.php +++ b/retailcrm/app.php @@ -12,9 +12,15 @@ require_once 'bootstrap.php'; $options = getopt('dluce:m:p:r:h:'); +if (!$options || $options == -1) { + $options = DataHelper::getOpt(); +} + if (isset($options['e'])) { $command = new Command($options); $command->run(); +} elseif (!$options) { + CommandHelper::notWorkGetOptNotice(); } else { CommandHelper::runHelp(); } diff --git a/retailcrm/src/Helpers/CommandHelper.php b/retailcrm/src/Helpers/CommandHelper.php index 5d9604c..cf98de8 100644 --- a/retailcrm/src/Helpers/CommandHelper.php +++ b/retailcrm/src/Helpers/CommandHelper.php @@ -30,6 +30,11 @@ class CommandHelper 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/DataHelper.php b/retailcrm/src/Helpers/DataHelper.php index 352a5df..bdcfe24 100644 --- a/retailcrm/src/Helpers/DataHelper.php +++ b/retailcrm/src/Helpers/DataHelper.php @@ -78,4 +78,37 @@ class DataHelper return $uids; } + + public static function getOpt() + { + if (!array_key_exists('argv', $_SERVER)) { + return false; + } + + $result = array(); + $params = $_SERVER['argv']; + + while (list(, $p) = each($params)) { + if ($p{0} == '-') { + $pname = substr($p, 1); + $value = true; + if ($pname{0} == '-') { + $pname = substr($pname, 1); + if (strpos($p, '=') !== false) { + list($pname, $value) = explode('=', substr($p, 2), 2); + } + } + + $nextparm = current($params); + if ($value === true && $nextparm !== false && $nextparm{0} != '-') { + list(, $value) = each($params); + } + $result[$pname] = $value; + } else { + $result[] = $p; + } + } + + return empty($result) ? false : $result; + } } From 2d1aceb100b66715de1079dada1b43eeb034422f Mon Sep 17 00:00:00 2001 From: Dmitry Mamontov Date: Mon, 23 Nov 2015 10:01:46 -0500 Subject: [PATCH 3/6] refactoring custom getopt --- retailcrm/src/Helpers/DataHelper.php | 36 ++++++++++++++++++---------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/retailcrm/src/Helpers/DataHelper.php b/retailcrm/src/Helpers/DataHelper.php index bdcfe24..9932aea 100644 --- a/retailcrm/src/Helpers/DataHelper.php +++ b/retailcrm/src/Helpers/DataHelper.php @@ -86,29 +86,41 @@ class DataHelper } $result = array(); + $params = $_SERVER['argv']; - while (list(, $p) = each($params)) { - if ($p{0} == '-') { - $pname = substr($p, 1); + foreach ($params as $key => $param) { + if ($param{0} == '-') { + $name = substr($param, 1); $value = true; - if ($pname{0} == '-') { - $pname = substr($pname, 1); - if (strpos($p, '=') !== false) { - list($pname, $value) = explode('=', substr($p, 2), 2); + + if ($name{0} == '-') { + $name = substr($name, 1); + if (strpos($param, '=') !== false) { + $long = explode('=', substr($param, 2), 2); + $name = $long[0]; + $value = $long[1]; + unset($long); } } - $nextparm = current($params); - if ($value === true && $nextparm !== false && $nextparm{0} != '-') { - list(, $value) = each($params); + if ( + isset($params[$key + 1]) && + $value === true && + $params[$key + 1] !== false && + $params[$key + 1]{0} != '-' + ) { + $value = $params[$key + 1]; } - $result[$pname] = $value; + + $result[$name] = $value; } else { - $result[] = $p; + $result[] = $param; } } + unset($params); + return empty($result) ? false : $result; } } From 87d972b1422dac3c4e7925c4795ed73a2230927e Mon Sep 17 00:00:00 2001 From: Dmitry Mamontov Date: Tue, 24 Nov 2015 04:37:32 -0500 Subject: [PATCH 4/6] refactoring custom getopt && add lonoptions --- retailcrm/app.php | 7 +- retailcrm/src/Helpers/DataHelper.php | 45 ------------- retailcrm/src/Helpers/OptHelper.php | 96 ++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 47 deletions(-) create mode 100644 retailcrm/src/Helpers/OptHelper.php diff --git a/retailcrm/app.php b/retailcrm/app.php index 63ac7aa..5bcc4c9 100644 --- a/retailcrm/app.php +++ b/retailcrm/app.php @@ -10,10 +10,13 @@ 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) { - $options = DataHelper::getOpt(); + $opt = new OptHelper($shortopts); + $options = $opt->get(); } if (isset($options['e'])) { diff --git a/retailcrm/src/Helpers/DataHelper.php b/retailcrm/src/Helpers/DataHelper.php index 9932aea..352a5df 100644 --- a/retailcrm/src/Helpers/DataHelper.php +++ b/retailcrm/src/Helpers/DataHelper.php @@ -78,49 +78,4 @@ class DataHelper return $uids; } - - public static function getOpt() - { - 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($long); - } - } - - 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 : $result; - } } 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; + } +} From 6d27598157b28966157ce8f912047bea11ac3cb8 Mon Sep 17 00:00:00 2001 From: Dmitry Mamontov Date: Thu, 26 Nov 2015 04:37:39 -0500 Subject: [PATCH 5/6] fix buildOrdersById --- retailcrm/src/Bulders/OrdersBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); } From d579aafdc5106d71d1d1e63ee92131f1b4bb4857 Mon Sep 17 00:00:00 2001 From: Vasily Date: Mon, 21 Dec 2015 16:09:53 +0300 Subject: [PATCH 6/6] Update ApiHelper.php --- retailcrm/src/Helpers/ApiHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); }