Version Notes
Fixed SQL query used for fetching unoptimized Media and Skin images
Download this release
Release Info
Developer | Nekkra UG |
Extension | Kraken_Image_Optimizer |
Version | 2.0.4 |
Comparing to | |
See all releases |
Code changes from version 2.0.3 to 2.0.4
- app/code/local/Welance/Kraken/Helper/Data.php +14 -9
- app/design/adminhtml/default/default/layout/kraken.xml +1 -1
- app/design/adminhtml/default/default/template/kraken/images/media.phtml +1 -1
- app/design/adminhtml/default/default/template/kraken/images/skin.phtml +1 -1
- js/kraken/optimize.js +134 -122
- js/kraken/optimize.v2.min.js +1 -0
- package.xml +5 -5
app/code/local/Welance/Kraken/Helper/Data.php
CHANGED
@@ -249,19 +249,24 @@ class Welance_Kraken_Helper_Data extends Mage_Core_Helper_Abstract
|
|
249 |
|
250 |
$readConnection = $resource->getConnection('core_read');
|
251 |
|
252 |
-
$select = $readConnection->select();
|
253 |
-
|
254 |
$table = $resource->getTableName('welance_kraken/images_'.$type);
|
255 |
|
256 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
|
258 |
-
$select = $readConnection->
|
259 |
-
->from($table, array('id'))
|
260 |
-
->where('path = ?', $path)
|
261 |
-
->where('image_name = ?', $imageNameEscaped)
|
262 |
-
->where('original_checksum = ? OR checksum_after_upload = ?', $checksum);
|
263 |
|
264 |
-
if ($
|
265 |
return true;
|
266 |
}
|
267 |
|
249 |
|
250 |
$readConnection = $resource->getConnection('core_read');
|
251 |
|
|
|
|
|
252 |
$table = $resource->getTableName('welance_kraken/images_'.$type);
|
253 |
|
254 |
+
$query = "SELECT `id` FROM `{$table}` WHERE `path` = :path AND `image_name` = :image_name AND
|
255 |
+
(`original_checksum` = :checksum OR `checksum_after_upload` = :checksum)";
|
256 |
+
|
257 |
+
$bind = array(
|
258 |
+
'path' => $path,
|
259 |
+
'image_name' => $imageName,
|
260 |
+
'checksum' => $checksum
|
261 |
+
);
|
262 |
+
|
263 |
+
/**
|
264 |
+
* Using $readConnection->query() with bind parameter automatically escapes the string
|
265 |
+
*/
|
266 |
|
267 |
+
$select = $readConnection->query($query,$bind);
|
|
|
|
|
|
|
|
|
268 |
|
269 |
+
if ($select->fetch() !== false) {
|
270 |
return true;
|
271 |
}
|
272 |
|
app/design/adminhtml/default/default/layout/kraken.xml
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
<action method="addCss"><name>kraken/images.css</name></action>
|
8 |
<action method="addJs"><script>kraken/async.js</script></action>
|
9 |
<action method="addJs"><script>kraken/jquery.js</script></action>
|
10 |
-
<action method="addJs"><script>kraken/optimize.js</script></action>
|
11 |
</reference>
|
12 |
<reference name="menu">
|
13 |
<action method="setActive"><menupath>welance/welance_kraken</menupath></action>
|
7 |
<action method="addCss"><name>kraken/images.css</name></action>
|
8 |
<action method="addJs"><script>kraken/async.js</script></action>
|
9 |
<action method="addJs"><script>kraken/jquery.js</script></action>
|
10 |
+
<action method="addJs"><script>kraken/optimize.v2.min.js</script></action>
|
11 |
</reference>
|
12 |
<reference name="menu">
|
13 |
<action method="setActive"><menupath>welance/welance_kraken</menupath></action>
|
app/design/adminhtml/default/default/template/kraken/images/media.phtml
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
<h3>Media Images</h3>
|
16 |
|
17 |
<div class="kraken-box-inner cf">
|
18 |
-
<?php if ($
|
19 |
<p class="success-msg"><?php echo $this->__('Great! All media images have been optimized.') ?></p>
|
20 |
<?php else: ?>
|
21 |
<p class="notice-msg"><?php echo $this->__('Heads up! There are <strong>%s</strong> media images that can be optimized.', $toBeOptimized) ?></p>
|
15 |
<h3>Media Images</h3>
|
16 |
|
17 |
<div class="kraken-box-inner cf">
|
18 |
+
<?php if ($toBeOptimized == 0): ?>
|
19 |
<p class="success-msg"><?php echo $this->__('Great! All media images have been optimized.') ?></p>
|
20 |
<?php else: ?>
|
21 |
<p class="notice-msg"><?php echo $this->__('Heads up! There are <strong>%s</strong> media images that can be optimized.', $toBeOptimized) ?></p>
|
app/design/adminhtml/default/default/template/kraken/images/skin.phtml
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
<h3>Skin Images</h3>
|
16 |
|
17 |
<div class="kraken-box-inner cf">
|
18 |
-
<?php if ($
|
19 |
<p class="success-msg"><?php echo $this->__('Great! All skin images optimized.') ?></p>
|
20 |
<?php else: ?>
|
21 |
<p class="notice-msg"><?php echo $this->__('Heads up! There are <strong>%s</strong> skin images that can be optimized.', $toBeOptimized) ?></p>
|
15 |
<h3>Skin Images</h3>
|
16 |
|
17 |
<div class="kraken-box-inner cf">
|
18 |
+
<?php if ($toBeOptimized == 0): ?>
|
19 |
<p class="success-msg"><?php echo $this->__('Great! All skin images optimized.') ?></p>
|
20 |
<?php else: ?>
|
21 |
<p class="notice-msg"><?php echo $this->__('Heads up! There are <strong>%s</strong> skin images that can be optimized.', $toBeOptimized) ?></p>
|
js/kraken/optimize.js
CHANGED
@@ -5,142 +5,154 @@
|
|
5 |
/* global concurrency:true */
|
6 |
/* global cacheConcurrency:true */
|
7 |
|
8 |
-
|
|
|
9 |
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
var overlayElem = document.createElement("div");
|
14 |
-
overlayElem.setAttribute("id", "kraken-overlay");
|
15 |
-
document.body.appendChild(overlayElem);
|
16 |
|
17 |
-
var
|
18 |
-
document.body.appendChild(modalElem.parentNode.removeChild(modalElem));
|
19 |
|
20 |
-
$j(
|
21 |
-
|
22 |
-
});
|
23 |
-
});
|
24 |
|
25 |
-
|
26 |
-
|
27 |
-
var originalHeader = $j("#kraken-modal-head").text();
|
28 |
-
|
29 |
-
if (type === "media") {
|
30 |
-
$j("#kraken-modal-head").text(originalHeader.replace("__type__", "media"));
|
31 |
-
} else {
|
32 |
-
$j("#kraken-modal-head").text(originalHeader.replace("__type__", "skin"));
|
33 |
}
|
34 |
|
35 |
-
|
36 |
-
$j("#kraken-overlay").addClass("show");
|
37 |
-
$j("#kraken-total").text(total);
|
38 |
-
|
39 |
-
var j = 0;
|
40 |
-
|
41 |
-
var queue = async.queue(function (task, callback) {
|
42 |
-
new Ajax.Request(requestUrl, {
|
43 |
-
method : "get",
|
44 |
-
parameters: {
|
45 |
-
type: type,
|
46 |
-
image: JSON.stringify(task.file)
|
47 |
-
},
|
48 |
-
onComplete: function (response) {
|
49 |
-
j++;
|
50 |
-
|
51 |
-
var json = response.responseJSON;
|
52 |
-
|
53 |
-
if (json.success) {
|
54 |
-
if (!queue.paused) {
|
55 |
-
$j("#kraken-current").text(j);
|
56 |
-
$j("#kraken-number-progress")
|
57 |
-
.addClass("show")
|
58 |
-
.text(Math.round(j / total * 100) + "%");
|
59 |
-
|
60 |
-
$j("#kraken-progress-bar").css({
|
61 |
-
width: Math.round(j / total * 100) + "%"
|
62 |
-
});
|
63 |
-
}
|
64 |
-
} else {
|
65 |
-
var errorText = "";
|
66 |
|
67 |
-
|
68 |
-
|
69 |
-
} else if (json.statusCode === 401) {
|
70 |
-
errorText = "Your free quota (50 MB) has reached its limit.<br>Request more testing quota (support@kraken.io) or please upgrade to a paid plan.";
|
71 |
-
} else {
|
72 |
-
errorText = json.message;
|
73 |
-
}
|
74 |
|
75 |
-
|
76 |
-
$j("#kraken-modal-error")
|
77 |
-
.html(json.message)
|
78 |
-
.show();
|
79 |
|
80 |
-
|
|
|
|
|
|
|
81 |
|
82 |
-
|
83 |
-
|
84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
}
|
|
|
|
|
86 |
}
|
|
|
|
|
87 |
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
|
|
92 |
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
});
|
97 |
-
}
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
successMessage = "Congratulations! Your skin images have been optimized.";
|
105 |
-
} else {
|
106 |
-
successMessage = "Congratulations! Your media images have been optimized.";
|
107 |
-
}
|
108 |
-
|
109 |
-
$j("#kraken-modal-head").text(successMessage);
|
110 |
-
$j("#kraken-success-close").show();
|
111 |
-
$j("#kraken-progress").hide();
|
112 |
-
$j("#kraken-modal-footer").hide();
|
113 |
-
$j("#kraken-count").hide();
|
114 |
-
$j("#kraken-modal-content")
|
115 |
-
.addClass("with-success")
|
116 |
-
.find("p")
|
117 |
-
.addClass("with-success");
|
118 |
-
}, 500);
|
119 |
-
};
|
120 |
-
},
|
121 |
-
|
122 |
-
optimizeCache: function (images) {
|
123 |
-
var queue = async.queue(function (task, callback) {
|
124 |
-
new Ajax.Request(requestUrl, {
|
125 |
-
method: "post",
|
126 |
-
parameters: {
|
127 |
-
id: task.file.id,
|
128 |
-
product_id: task.file.product_id
|
129 |
-
},
|
130 |
-
onComplete: function () {
|
131 |
-
callback();
|
132 |
-
}
|
133 |
-
});
|
134 |
-
}, cacheConcurrency);
|
135 |
-
|
136 |
-
if (!images.length) {
|
137 |
-
return;
|
138 |
-
}
|
139 |
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
}
|
145 |
-
}
|
146 |
-
};
|
5 |
/* global concurrency:true */
|
6 |
/* global cacheConcurrency:true */
|
7 |
|
8 |
+
(function() {
|
9 |
+
"use strict";
|
10 |
|
11 |
+
if (typeof jQuery === "undefined") {
|
12 |
+
return;
|
13 |
+
}
|
|
|
|
|
|
|
14 |
|
15 |
+
var $j = jQuery.noConflict();
|
|
|
16 |
|
17 |
+
$j(document).ready(function () {
|
18 |
+
var modalElem = document.getElementById("kraken-modal");
|
|
|
|
|
19 |
|
20 |
+
if (!modalElem) {
|
21 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
}
|
23 |
|
24 |
+
var overlayElem = document.createElement("div");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
+
overlayElem.setAttribute("id", "kraken-overlay");
|
27 |
+
document.body.appendChild(overlayElem);
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
+
document.body.appendChild(modalElem.parentNode.removeChild(modalElem));
|
|
|
|
|
|
|
30 |
|
31 |
+
$j("#kraken-modal-close, #kraken-success-close").on("click", function () {
|
32 |
+
window.location.reload();
|
33 |
+
});
|
34 |
+
});
|
35 |
|
36 |
+
window.optimizeImages = {
|
37 |
+
optimize: function (type, images, total) {
|
38 |
+
var originalHeader = $j("#kraken-modal-head").text();
|
39 |
+
|
40 |
+
if (type === "media") {
|
41 |
+
$j("#kraken-modal-head").text(originalHeader.replace("__type__", "media"));
|
42 |
+
} else {
|
43 |
+
$j("#kraken-modal-head").text(originalHeader.replace("__type__", "skin"));
|
44 |
+
}
|
45 |
+
|
46 |
+
$j("#kraken-modal").show();
|
47 |
+
$j("#kraken-overlay").addClass("show");
|
48 |
+
$j("#kraken-total").text(total);
|
49 |
+
|
50 |
+
var j = 0;
|
51 |
+
|
52 |
+
var queue = async.queue(function (task, callback) {
|
53 |
+
new Ajax.Request(requestUrl, {
|
54 |
+
method : "get",
|
55 |
+
parameters: {
|
56 |
+
type: type,
|
57 |
+
image: JSON.stringify(task.file)
|
58 |
+
},
|
59 |
+
onComplete: function (response) {
|
60 |
+
j++;
|
61 |
+
|
62 |
+
var json = response.responseJSON;
|
63 |
+
|
64 |
+
if (json.success) {
|
65 |
+
if (!queue.paused) {
|
66 |
+
$j("#kraken-current").text(j);
|
67 |
+
$j("#kraken-number-progress")
|
68 |
+
.addClass("show")
|
69 |
+
.text(Math.round(j / total * 100) + "%");
|
70 |
+
|
71 |
+
$j("#kraken-progress-bar").css({
|
72 |
+
width: Math.round(j / total * 100) + "%"
|
73 |
+
});
|
74 |
+
}
|
75 |
+
} else {
|
76 |
+
var errorText = "";
|
77 |
+
|
78 |
+
if (json.statusCode === 429) {
|
79 |
+
errorText = "Unnknown API Key. Please check your Kraken API key and try again.";
|
80 |
+
} else if (json.statusCode === 401) {
|
81 |
+
errorText = "Your free quota (50 MB) has reached its limit.<br>Request more testing quota (support@kraken.io) or please upgrade to a paid plan.";
|
82 |
+
} else {
|
83 |
+
errorText = json.message;
|
84 |
+
}
|
85 |
+
|
86 |
+
if (json.statusCode === 401 || json.statusCode === 429) {
|
87 |
+
$j("#kraken-modal-error")
|
88 |
+
.html(json.message)
|
89 |
+
.show();
|
90 |
+
|
91 |
+
queue.pause();
|
92 |
+
|
93 |
+
$j("#kraken-modal").css({
|
94 |
+
marginTop: -(Math.round($j("#kraken-modal").height()/2)) + "px"
|
95 |
+
});
|
96 |
+
}
|
97 |
}
|
98 |
+
|
99 |
+
callback();
|
100 |
}
|
101 |
+
});
|
102 |
+
}, concurrency);
|
103 |
|
104 |
+
for (var i = 0, ii = images.length; i < ii; i++) {
|
105 |
+
queue.push({
|
106 |
+
file: images[i]
|
107 |
+
});
|
108 |
+
}
|
109 |
|
110 |
+
queue.drain = function () {
|
111 |
+
setTimeout(function () {
|
112 |
+
var successMessage = "";
|
|
|
|
|
113 |
|
114 |
+
if (type === "media") {
|
115 |
+
successMessage = "Congratulations! Your skin images have been optimized.";
|
116 |
+
} else {
|
117 |
+
successMessage = "Congratulations! Your media images have been optimized.";
|
118 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
|
120 |
+
$j("#kraken-modal-head").text(successMessage);
|
121 |
+
$j("#kraken-success-close").show();
|
122 |
+
$j("#kraken-progress").hide();
|
123 |
+
$j("#kraken-modal-footer").hide();
|
124 |
+
$j("#kraken-count").hide();
|
125 |
+
$j("#kraken-modal-content")
|
126 |
+
.addClass("with-success")
|
127 |
+
.find("p")
|
128 |
+
.addClass("with-success");
|
129 |
+
}, 500);
|
130 |
+
};
|
131 |
+
},
|
132 |
+
|
133 |
+
optimizeCache: function (images) {
|
134 |
+
var queue = async.queue(function (task, callback) {
|
135 |
+
new Ajax.Request(requestUrl, {
|
136 |
+
method: "post",
|
137 |
+
parameters: {
|
138 |
+
id: task.file.id,
|
139 |
+
product_id: task.file.product_id
|
140 |
+
},
|
141 |
+
onComplete: function () {
|
142 |
+
callback();
|
143 |
+
}
|
144 |
+
});
|
145 |
+
}, cacheConcurrency);
|
146 |
+
|
147 |
+
if (!images.length) {
|
148 |
+
return;
|
149 |
+
}
|
150 |
+
|
151 |
+
for (var i = 0, ii = images.length; i < ii; i++) {
|
152 |
+
queue.push({
|
153 |
+
file: images[i]
|
154 |
+
});
|
155 |
+
}
|
156 |
}
|
157 |
+
};
|
158 |
+
})();
|
js/kraken/optimize.v2.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(){"use strict";if("undefined"!=typeof jQuery){var e=jQuery.noConflict();e(document).ready(function(){var a=document.getElementById("kraken-modal");if(a){var t=document.createElement("div");t.setAttribute("id","kraken-overlay"),document.body.appendChild(t),document.body.appendChild(a.parentNode.removeChild(a)),e("#kraken-modal-close, #kraken-success-close").on("click",function(){window.location.reload()})}}),window.optimizeImages={optimize:function(a,t,n){var o=e("#kraken-modal-head").text();"media"===a?e("#kraken-modal-head").text(o.replace("__type__","media")):e("#kraken-modal-head").text(o.replace("__type__","skin")),e("#kraken-modal").show(),e("#kraken-overlay").addClass("show"),e("#kraken-total").text(n);for(var r=0,s=async.queue(function(t,o){new Ajax.Request(requestUrl,{method:"get",parameters:{type:a,image:JSON.stringify(t.file)},onComplete:function(a){r++;var t=a.responseJSON;if(t.success)s.paused||(e("#kraken-current").text(r),e("#kraken-number-progress").addClass("show").text(Math.round(r/n*100)+"%"),e("#kraken-progress-bar").css({width:Math.round(r/n*100)+"%"}));else{var d="";d=429===t.statusCode?"Unnknown API Key. Please check your Kraken API key and try again.":401===t.statusCode?"Your free quota (50 MB) has reached its limit.<br>Request more testing quota (support@kraken.io) or please upgrade to a paid plan.":t.message,(401===t.statusCode||429===t.statusCode)&&(e("#kraken-modal-error").html(t.message).show(),s.pause(),e("#kraken-modal").css({marginTop:-Math.round(e("#kraken-modal").height()/2)+"px"}))}o()}})},concurrency),d=0,i=t.length;i>d;d++)s.push({file:t[d]});s.drain=function(){setTimeout(function(){var t="";t="media"===a?"Congratulations! Your skin images have been optimized.":"Congratulations! Your media images have been optimized.",e("#kraken-modal-head").text(t),e("#kraken-success-close").show(),e("#kraken-progress").hide(),e("#kraken-modal-footer").hide(),e("#kraken-count").hide(),e("#kraken-modal-content").addClass("with-success").find("p").addClass("with-success")},500)}},optimizeCache:function(e){var a=async.queue(function(e,a){new Ajax.Request(requestUrl,{method:"post",parameters:{id:e.file.id,product_id:e.file.product_id},onComplete:function(){a()}})},cacheConcurrency);if(e.length)for(var t=0,n=e.length;n>t;t++)a.push({file:e[t]})}}}}();
|
package.xml
CHANGED
@@ -1,18 +1,18 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Kraken_Image_Optimizer</name>
|
4 |
-
<version>2.0.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/GPL-3.0">GNU General Public License (GPL)</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>This extension enables Magento users to optimize their product, skin and media images by consuming the Kraken.io image optimization API. (https://kraken.io)</summary>
|
10 |
<description>This extension exists for the sole purpose of allowing Magento users to optimize their product, skin and media images by consuming the Kraken.io image optimization API. (https://kraken.io)</description>
|
11 |
-
<notes>
|
12 |
<authors><author><name>Nekkra UG</name><user>KrakenIO</user><email>support@kraken.io</email></author></authors>
|
13 |
-
<date>2015-10-
|
14 |
-
<time>
|
15 |
-
<contents><target name="magelocal"><dir name="Welance"><dir name="Kraken"><dir name="Block"><dir name="Adminhtml"><dir name="Api"><file name="Signup.php" hash="56a9ee65c5d9fd769b7a5a0854b71a16"/><file name="Status.php" hash="99dd2cb6da9d62e4d8cab36ea29d13e5"/><dir name="User"><file name="Status.php" hash="f33827a151d7ccd76684dde79599c3a2"/></dir></dir><dir name="Images"><file name="Media.php" hash="9dd94a375ceaa004df26d314a935fa63"/><file name="Skin.php" hash="f0dc5623a3974e50ce94b71cae4cd7cd"/></dir><file name="Images.php" hash="77fe1a1c7a0fb28209a741266467db69"/><file name="Statistics.php" hash="6cdae1bc41185b93c49d97465ee75704"/></dir><dir name="Product"><file name="Image.php" hash="2243dae68917d4e49b7c8786d3dc173b"/></dir></dir><dir name="Helper"><file name="Api.php" hash="bdad47443f357c6241005b76304d985e"/><file name="Data.php" hash="
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Kraken_Image_Optimizer</name>
|
4 |
+
<version>2.0.4</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/GPL-3.0">GNU General Public License (GPL)</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>This extension enables Magento users to optimize their product, skin and media images by consuming the Kraken.io image optimization API. (https://kraken.io)</summary>
|
10 |
<description>This extension exists for the sole purpose of allowing Magento users to optimize their product, skin and media images by consuming the Kraken.io image optimization API. (https://kraken.io)</description>
|
11 |
+
<notes>Fixed SQL query used for fetching unoptimized Media and Skin images</notes>
|
12 |
<authors><author><name>Nekkra UG</name><user>KrakenIO</user><email>support@kraken.io</email></author></authors>
|
13 |
+
<date>2015-10-27</date>
|
14 |
+
<time>10:45:52</time>
|
15 |
+
<contents><target name="magelocal"><dir name="Welance"><dir name="Kraken"><dir name="Block"><dir name="Adminhtml"><dir name="Api"><file name="Signup.php" hash="56a9ee65c5d9fd769b7a5a0854b71a16"/><file name="Status.php" hash="99dd2cb6da9d62e4d8cab36ea29d13e5"/><dir name="User"><file name="Status.php" hash="f33827a151d7ccd76684dde79599c3a2"/></dir></dir><dir name="Images"><file name="Media.php" hash="9dd94a375ceaa004df26d314a935fa63"/><file name="Skin.php" hash="f0dc5623a3974e50ce94b71cae4cd7cd"/></dir><file name="Images.php" hash="77fe1a1c7a0fb28209a741266467db69"/><file name="Statistics.php" hash="6cdae1bc41185b93c49d97465ee75704"/></dir><dir name="Product"><file name="Image.php" hash="2243dae68917d4e49b7c8786d3dc173b"/></dir></dir><dir name="Helper"><file name="Api.php" hash="bdad47443f357c6241005b76304d985e"/><file name="Data.php" hash="855163b8739ae02bc0e68ad071d880e6"/></dir><dir name="Model"><file name="Abstract.php" hash="46ad69f601aa392e44fadf43dc8ff558"/><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Validation"><file name="File.php" hash="03b116c93529a00f064c428519415b90"/><file name="Quality.php" hash="63919067f4576cc1a0c6ef663b1d1779"/></dir></dir><dir name="Source"><file name="Compression.php" hash="516d83f51e2216b45e51d20d6d1f8575"/><file name="Concurrency.php" hash="436d106916fae3d01bd7272e34d9771c"/></dir></dir></dir></dir><dir name="Image"><file name="Cache.php" hash="b1405ed2975e5b2fa0136f7722f03828"/></dir><dir name="Images"><file name="Media.php" hash="3d73a5ba9276744d92de042f4ca5d228"/><file name="Skin.php" hash="d6181c6772baa9a84d26e6adda5c87be"/></dir><file name="Observer.php" hash="8e27670e4c5ce3d62d0fcc5b27b6972a"/><dir name="Product"><file name="Image.php" hash="11c24a47125de4787bf082a2227c1e77"/></dir><dir name="Resource"><dir name="Image"><dir name="Cache"><file name="Collection.php" hash="4f29016539f9586ba707c1815f1e12b6"/></dir><file name="Cache.php" hash="7058d029a436aa3d0be1dc6f3c7fae57"/></dir><dir name="Images"><dir name="Media"><file name="Collection.php" hash="e77abb3c2122a0f5582bf14739935d85"/></dir><file name="Media.php" hash="c6aa05e4362b645b001854e9578ee5d1"/><dir name="Skin"><file name="Collection.php" hash="2e81919a1fa3014a9083b12382fc46e0"/></dir><file name="Skin.php" hash="420d0b85798bbd5eb52d40d96eff2868"/></dir></dir></dir><dir name="controllers"><file name="KrakenController.php" hash="d00de7431a787527e6b84b79dc5df547"/><file name="OptimizeController.php" hash="d4a7b8d09b951960c6afd93ea4a3bda9"/></dir><dir name="etc"><file name="adminhtml.xml" hash="71d3f77d2a29e267a1b3b172ac457ccc"/><file name="config.xml" hash="ef19419d77c4b3608ab798116e6620b9"/><file name="system.xml" hash="083bab919a0a16a8ab546815d7526850"/></dir><dir name="sql"><dir name="welance_kraken_setup"><file name="mysql4-install-0.0.1.php" hash="c672010d8288677aea0d008a4ec49d0f"/><file name="mysql4-upgrade-0.0.1-0.0.2.php" hash="f6ec9a39c730faa436d29338b35a21b2"/><file name="mysql4-upgrade-0.0.2-0.0.3.php" hash="884f018b06073d09cd38094251316a12"/><file name="mysql4-upgrade-0.0.3-0.0.4.php" hash="21b4fed490c176909fc54d36f49b6caa"/><file name="mysql4-upgrade-0.0.4-0.0.5.php" hash="3399d922082321a9c9fdb3f4d8ddbbb0"/><file name="mysql4-upgrade-0.0.5-0.0.6.php" hash="8084b2f3b1fe2bad7bbbbd1136974289"/><file name="mysql4-upgrade-0.0.6-2.0.0.php" hash="a62483557a3d026e7c2b57999f8924a4"/><file name="mysql4-upgrade-1.0.0-2.0.0.php" hash="a62483557a3d026e7c2b57999f8924a4"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="kraken.xml" hash="a2533032af5ce2b9aa1e5506a213faf9"/></dir><dir name="template"><dir name="kraken"><dir name="images"><file name="media.phtml" hash="276ff814433f3b99f7bb418a9b791b62"/><file name="skin.phtml" hash="a6881c5fe4f9390c88fa0f9dc73a7be4"/></dir><file name="images.phtml" hash="f4a3760c6340e2a83569a715975c0a88"/><file name="statistics.phtml" hash="f2ac7696fcdc49f3ce74970059ee486e"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Welance_Kraken.xml" hash="5924028abd4db847049907d0685fe928"/></dir></target><target name="mageweb"><dir name="js"><dir name="kraken"><file name="async.js" hash="69a9fc4244b4ed9465d9dc17bfec7e8e"/><file name="jquery.js" hash="895323ed2f7258af4fae2c738c8aea49"/><file name="optimize.js" hash="b0a5b7e67564574a0d92b6f6c37d2501"/><file name="optimize.v2.min.js" hash="00fe66aea8cef84efcc1a587e6471329"/></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="kraken"><file name="images.css" hash="4efcb99215e85cea9ef8904594b35d06"/><file name="kraken-tile.png" hash="f893c560e69916c5df3b4542659c0615"/></dir></dir></dir></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
|
18 |
</package>
|