diff --git a/patch.sh b/patch.sh new file mode 100644 index 0000000..25a7f39 --- /dev/null +++ b/patch.sh @@ -0,0 +1,190 @@ +#!/bin/bash +# Patch apllying tool template +# v0.1.2 +# (c) Copyright 2013. Magento Inc. +# +# DO NOT CHANGE ANY LINE IN THIS FILE. + +# 1. Check required system tools +_check_installed_tools() { + local missed="" + + until [ -z "$1" ]; do + type -t $1 >/dev/null 2>/dev/null + if (( $? != 0 )); then + missed="$missed $1" + fi + shift + done + + echo $missed +} + +REQUIRED_UTILS='sed patch' +MISSED_REQUIRED_TOOLS=`_check_installed_tools $REQUIRED_UTILS` +if (( `echo $MISSED_REQUIRED_TOOLS | wc -w` > 0 )); +then + echo -e "Error! Some required system tools, that are utilized in this sh script, are not installed:\nTool(s) \"$MISSED_REQUIRED_TOOLS\" is(are) missed, please install it(them)." + exit 1 +fi + +# 2. Determine bin path for system tools +CAT_BIN=`which cat` +PATCH_BIN=`which patch` +SED_BIN=`which sed` +PWD_BIN=`which pwd` +BASENAME_BIN=`which basename` + +BASE_NAME=`$BASENAME_BIN "$0"` + +# 3. Help menu +if [ "$1" = "-?" -o "$1" = "-h" -o "$1" = "--help" ] +then + $CAT_BIN << EOFH +Usage: sh $BASE_NAME [--help] [-R|--revert] [--list] +Apply embedded patch. + +-R, --revert Revert previously applied embedded patch +--list Show list of applied patches +--help Show this help message +EOFH + exit 0 +fi + +# 4. Get "revert" flag and "list applied patches" flag +REVERT_FLAG= +SHOW_APPLIED_LIST=0 +if [ "$1" = "-R" -o "$1" = "--revert" ] +then + REVERT_FLAG=-R +fi +if [ "$1" = "--list" ] +then + SHOW_APPLIED_LIST=1 +fi + +# 5. File pathes +CURRENT_DIR=`$PWD_BIN`/ +APP_ETC_DIR=`echo "$CURRENT_DIR""app/etc/"` +APPLIED_PATCHES_LIST_FILE=`echo "$APP_ETC_DIR""applied.patches.list"` + +# 6. Show applied patches list if requested +if [ "$SHOW_APPLIED_LIST" -eq 1 ] ; then + echo -e "Applied/reverted patches list:" + if [ -e "$APPLIED_PATCHES_LIST_FILE" ] + then + if [ ! -r "$APPLIED_PATCHES_LIST_FILE" ] + then + echo "ERROR: \"$APPLIED_PATCHES_LIST_FILE\" must be readable so applied patches list can be shown." + exit 1 + else + $SED_BIN -n "/SUP-\|SUPEE-/p" $APPLIED_PATCHES_LIST_FILE + fi + else + echo "" + fi + exit 0 +fi + +# 7. Check applied patches track file and its directory +_check_files() { + if [ ! -e "$APP_ETC_DIR" ] + then + echo "ERROR: \"$APP_ETC_DIR\" must exist for proper tool work." + exit 1 + fi + + if [ ! -w "$APP_ETC_DIR" ] + then + echo "ERROR: \"$APP_ETC_DIR\" must be writeable for proper tool work." + exit 1 + fi + + if [ -e "$APPLIED_PATCHES_LIST_FILE" ] + then + if [ ! -w "$APPLIED_PATCHES_LIST_FILE" ] + then + echo "ERROR: \"$APPLIED_PATCHES_LIST_FILE\" must be writeable for proper tool work." + exit 1 + fi + fi +} + +_check_files + +# 8. Apply/revert patch +# Note: there is no need to check files permissions for files to be patched. +# "patch" tool will not modify any file if there is not enough permissions for all files to be modified. +# Get start points for additional information and patch data +SKIP_LINES=$((`$SED_BIN -n "/^__PATCHFILE_FOLLOWS__$/=" "$CURRENT_DIR""$BASE_NAME"` + 1)) +ADDITIONAL_INFO_LINE=$(($SKIP_LINES - 3))p + +_apply_revert_patch() { + DRY_RUN_FLAG= + if [ "$1" = "dry-run" ] + then + DRY_RUN_FLAG=" --dry-run" + echo "Checking if patch can be applied/reverted successfully..." + fi + PATCH_APPLY_REVERT_RESULT=`$SED_BIN -e '1,/^__PATCHFILE_FOLLOWS__$/d' "$CURRENT_DIR""$BASE_NAME" | $PATCH_BIN $DRY_RUN_FLAG $REVERT_FLAG -p0` + PATCH_APPLY_REVERT_STATUS=$? + if [ $PATCH_APPLY_REVERT_STATUS -eq 1 ] ; then + echo -e "ERROR: Patch can't be applied/reverted successfully.\n\n$PATCH_APPLY_REVERT_RESULT" + exit 1 + fi + if [ $PATCH_APPLY_REVERT_STATUS -eq 2 ] ; then + echo -e "ERROR: Patch can't be applied/reverted successfully." + exit 2 + fi +} + +REVERTED_PATCH_MARK= +if [ -n "$REVERT_FLAG" ] +then + REVERTED_PATCH_MARK=" | REVERTED" +fi + +_apply_revert_patch dry-run +_apply_revert_patch + +# 9. Track patch applying result +echo "Patch was applied/reverted successfully." +ADDITIONAL_INFO=`$SED_BIN -n ""$ADDITIONAL_INFO_LINE"" "$CURRENT_DIR""$BASE_NAME"` +APPLIED_REVERTED_ON_DATE=`date -u +"%F %T UTC"` +APPLIED_REVERTED_PATCH_INFO=`echo -n "$APPLIED_REVERTED_ON_DATE"" | ""$ADDITIONAL_INFO""$REVERTED_PATCH_MARK"` +echo -e "$APPLIED_REVERTED_PATCH_INFO\n$PATCH_APPLY_REVERT_RESULT\n\n" >> "$APPLIED_PATCHES_LIST_FILE" + +exit 0 + + +SUPEE-1533 | EE_1.10.0.0 | v1 | _ | n/a | SUPEE-1533_EE_1.10.0.0_v1.patch + +__PATCHFILE_FOLLOWS__ +diff --git app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php +index 86a0645..25847dd 100644 +--- app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php ++++ app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php +@@ -339,7 +339,7 @@ class Mage_Adminhtml_Block_Dashboard_Graph extends Mage_Adminhtml_Block_Dashboar + } + return self::API_URL . '?' . implode('&', $p); + } else { +- $gaData = urlencode(base64_encode(serialize($params))); ++ $gaData = urlencode(base64_encode(json_encode($params))); + $gaHash = Mage::helper('adminhtml/dashboard_data')->getChartDataHash($gaData); + $params = array('ga' => $gaData, 'h' => $gaHash); + return $this->getUrl('*/*/tunnel', array('_query' => $params)); +diff --git app/code/core/Mage/Adminhtml/controllers/DashboardController.php app/code/core/Mage/Adminhtml/controllers/DashboardController.php +index ca0f179..34eed31 100644 +--- app/code/core/Mage/Adminhtml/controllers/DashboardController.php ++++ app/code/core/Mage/Adminhtml/controllers/DashboardController.php +@@ -77,7 +77,8 @@ class Mage_Adminhtml_DashboardController extends Mage_Adminhtml_Controller_Actio + if ($gaData && $gaHash) { + $newHash = Mage::helper('adminhtml/dashboard_data')->getChartDataHash($gaData); + if ($newHash == $gaHash) { +- if ($params = unserialize(base64_decode(urldecode($gaData)))) { ++ $params = json_decode(base64_decode(urldecode($gaData)), true); ++ if ($params) { + $response = $httpClient->setUri(Mage_Adminhtml_Block_Dashboard_Graph::API_URL) + ->setParameterGet($params) + ->setConfig(array('timeout' => 5)) + diff --git a/src/MageDownload/Command/DownloadCommand.php b/src/MageDownload/Command/DownloadCommand.php index 1b73f4d..094d231 100644 --- a/src/MageDownload/Command/DownloadCommand.php +++ b/src/MageDownload/Command/DownloadCommand.php @@ -45,6 +45,11 @@ protected function configure() 'file', InputArgument::REQUIRED, 'The file to download' + ) + ->addArgument( + 'destination', + InputArgument::OPTIONAL, + 'The destination where the file should be downloaded' ); parent::configure(); } @@ -60,17 +65,40 @@ protected function configure() protected function execute(InputInterface $input, OutputInterface $output) { $download = new Download; - $file = $input->getArgument('file'); $result = $download->get( - $file, + $input->getArgument('file'), $this->getAccountId($input), $this->getAccessToken($input) ); - $success = file_put_contents(getcwd() . DIRECTORY_SEPARATOR . $file, $result); + $destination = $this->getDestination($input); + $output->writeln(sprintf('Downloading to %s...', $destination)); + $success = file_put_contents($destination, $result); if ($success) { - $output->writeln(sprintf('File saved to %s', $file)); + $output->writeln('Complete'); } else { $output->writeln('Failed to download file'); } } + + /** + * Determine where the file should download to + * + * @param InputInterface $input + * + * @return string + */ + private function getDestination(InputInterface $input) + { + $dest = $input->getArgument('destination'); + if (!$dest) { + return getcwd() . DIRECTORY_SEPARATOR . $input->getArgument('file'); + } + if (is_dir($dest)) { + if (substr($dest, -1) !== '/') { + $dest .= DIRECTORY_SEPARATOR; + } + return $dest . $input->getArgument('file'); + } + return $dest; + } } diff --git a/src/bootstrap.php b/src/bootstrap.php index 7a72428..0aaa7f9 100644 --- a/src/bootstrap.php +++ b/src/bootstrap.php @@ -18,7 +18,7 @@ use MageDownload\Command\InfoCommand; use Symfony\Component\Console\Application; -$app = new Application('Magedownload CLI', '1.0.0'); +$app = new Application('Magedownload CLI', '1.0.1'); $app->add(new DownloadCommand); $app->add(new InfoCommand);