Iterable_Plugin - Version 1.5.0

Version Notes

Support suppressing default Magento emails and instead triggering Iterable campaigns

Download this release

Release Info

Developer Ilya Brin
Extension Iterable_Plugin
Version 1.5.0
Comparing to
See all releases


Code changes from version 1.4.0 to 1.5.0

app/code/community/Iterable/TrackOrderPlaced/.idea/.name ADDED
@@ -0,0 +1 @@
 
1
+ TrackOrderPlaced
app/code/community/Iterable/TrackOrderPlaced/.idea/TrackOrderPlaced.iml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="JAVA_MODULE" version="4">
3
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
4
+ <exclude-output />
5
+ <content url="file://$MODULE_DIR$" />
6
+ <orderEntry type="inheritedJdk" />
7
+ <orderEntry type="sourceFolder" forTests="false" />
8
+ </component>
9
+ </module>
10
+
app/code/community/Iterable/TrackOrderPlaced/.idea/compiler.xml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="CompilerConfiguration">
4
+ <option name="DEFAULT_COMPILER" value="Javac" />
5
+ <resourceExtensions />
6
+ <wildcardResourcePatterns>
7
+ <entry name="!?*.java" />
8
+ <entry name="!?*.form" />
9
+ <entry name="!?*.class" />
10
+ <entry name="!?*.groovy" />
11
+ <entry name="!?*.scala" />
12
+ <entry name="!?*.flex" />
13
+ <entry name="!?*.kt" />
14
+ <entry name="!?*.clj" />
15
+ </wildcardResourcePatterns>
16
+ <annotationProcessing>
17
+ <profile default="true" name="Default" enabled="false">
18
+ <processorPath useClasspath="true" />
19
+ </profile>
20
+ </annotationProcessing>
21
+ </component>
22
+ </project>
23
+
app/code/community/Iterable/TrackOrderPlaced/.idea/copyright/profiles_settings.xml ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <component name="CopyrightManager">
2
+ <settings default="" />
3
+ </component>
app/code/community/Iterable/TrackOrderPlaced/.idea/encodings.xml ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
4
+ </project>
5
+
app/code/community/Iterable/TrackOrderPlaced/.idea/misc.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="EntryPointsManager">
4
+ <entry_points version="2.0" />
5
+ </component>
6
+ <component name="IdProvider" IDEtalkID="2225450A8AB692B5D42C9AD2C0B1DCF1" />
7
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" />
8
+ </project>
9
+
app/code/community/Iterable/TrackOrderPlaced/.idea/modules.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/TrackOrderPlaced.iml" filepath="$PROJECT_DIR$/.idea/TrackOrderPlaced.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
9
+
app/code/community/Iterable/TrackOrderPlaced/.idea/scopes/scope_settings.xml ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <component name="DependencyValidationManager">
2
+ <state>
3
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
4
+ </state>
5
+ </component>
app/code/community/Iterable/TrackOrderPlaced/.idea/vcs.xml ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="" />
5
+ </component>
6
+ </project>
7
+
app/code/community/Iterable/TrackOrderPlaced/.idea/workspace.xml ADDED
@@ -0,0 +1,487 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ChangeListManager">
4
+ <list default="true" id="ff6c11e8-c5e8-4b87-becd-37566b6047b1" name="Default" comment="" />
5
+ <ignored path="TrackOrderPlaced.iws" />
6
+ <ignored path=".idea/workspace.xml" />
7
+ <option name="TRACKING_ENABLED" value="true" />
8
+ <option name="SHOW_DIALOG" value="false" />
9
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
10
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
11
+ <option name="LAST_RESOLUTION" value="IGNORE" />
12
+ </component>
13
+ <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
14
+ <component name="CreatePatchCommitExecutor">
15
+ <option name="PATCH_PATH" value="" />
16
+ </component>
17
+ <component name="DaemonCodeAnalyzer">
18
+ <disable_hints />
19
+ </component>
20
+ <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
21
+ <component name="FavoritesManager">
22
+ <favorites_list name="TrackOrderPlaced" />
23
+ </component>
24
+ <component name="FileEditorManager">
25
+ <leaf>
26
+ <file leaf-file-name="config.xml" pinned="false" current="false" current-in-tab="false">
27
+ <entry file="file://$PROJECT_DIR$/etc/config.xml">
28
+ <provider selected="true" editor-type-id="text-editor">
29
+ <state vertical-scroll-proportion="-16.153847" vertical-offset="2250" max-vertical-offset="3375">
30
+ <caret line="178" column="109" selection-start-line="178" selection-start-column="109" selection-end-line="178" selection-end-column="109" />
31
+ <folding />
32
+ </state>
33
+ </provider>
34
+ </entry>
35
+ </file>
36
+ <file leaf-file-name="system.xml" pinned="false" current="false" current-in-tab="false">
37
+ <entry file="file://$PROJECT_DIR$/etc/system.xml">
38
+ <provider selected="true" editor-type-id="text-editor">
39
+ <state vertical-scroll-proportion="0.0" vertical-offset="2265" max-vertical-offset="3450">
40
+ <caret line="194" column="41" selection-start-line="194" selection-start-column="41" selection-end-line="194" selection-end-column="41" />
41
+ <folding />
42
+ </state>
43
+ </provider>
44
+ </entry>
45
+ </file>
46
+ <file leaf-file-name="Data.php" pinned="false" current="true" current-in-tab="true">
47
+ <entry file="file://$PROJECT_DIR$/Helper/Data.php">
48
+ <provider selected="true" editor-type-id="text-editor">
49
+ <state vertical-scroll-proportion="0.12475248" vertical-offset="1134" max-vertical-offset="3720">
50
+ <caret line="83" column="18" selection-start-line="83" selection-start-column="5" selection-end-line="83" selection-end-column="5" />
51
+ <folding />
52
+ </state>
53
+ </provider>
54
+ </entry>
55
+ </file>
56
+ <file leaf-file-name="TrackingEventTypes.php" pinned="false" current="false" current-in-tab="false">
57
+ <entry file="file://$PROJECT_DIR$/Model/TrackingEventTypes.php">
58
+ <provider selected="true" editor-type-id="text-editor">
59
+ <state vertical-scroll-proportion="-10.625" vertical-offset="30" max-vertical-offset="555">
60
+ <caret line="19" column="57" selection-start-line="19" selection-start-column="57" selection-end-line="19" selection-end-column="57" />
61
+ <folding />
62
+ </state>
63
+ </provider>
64
+ </entry>
65
+ </file>
66
+ <file leaf-file-name="Observer.php" pinned="false" current="false" current-in-tab="false">
67
+ <entry file="file://$PROJECT_DIR$/Model/Observer.php">
68
+ <provider selected="true" editor-type-id="text-editor">
69
+ <state vertical-scroll-proportion="-5.5735292" vertical-offset="2921" max-vertical-offset="5415">
70
+ <caret line="220" column="30" selection-start-line="220" selection-start-column="10" selection-end-line="220" selection-end-column="10" />
71
+ <folding />
72
+ </state>
73
+ </provider>
74
+ </entry>
75
+ </file>
76
+ </leaf>
77
+ </component>
78
+ <component name="FindManager">
79
+ <FindUsagesManager>
80
+ <setting name="OPEN_NEW_TAB" value="true" />
81
+ </FindUsagesManager>
82
+ </component>
83
+ <component name="IdeDocumentHistory">
84
+ <option name="changedFiles">
85
+ <list>
86
+ <option value="$USER_HOME$/Sites/magento/app/code/core/Mage/Core/Model/Email/Template/Mailer.php" />
87
+ <option value="$USER_HOME$/Desktop/processNewsletter.php" />
88
+ <option value="$PROJECT_DIR$/Model/TrackingEventTypes.php" />
89
+ <option value="$PROJECT_DIR$/etc/config.xml" />
90
+ <option value="$PROJECT_DIR$/etc/system.xml" />
91
+ <option value="$PROJECT_DIR$/Model/Email/Template.php" />
92
+ <option value="$PROJECT_DIR$/Helper/Data.php" />
93
+ </list>
94
+ </option>
95
+ </component>
96
+ <component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" />
97
+ <component name="ProjectFrameBounds">
98
+ <option name="y" value="22" />
99
+ <option name="width" value="1536" />
100
+ <option name="height" value="1178" />
101
+ </component>
102
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
103
+ <OptionsSetting value="true" id="Add" />
104
+ <OptionsSetting value="true" id="Remove" />
105
+ <OptionsSetting value="true" id="Checkout" />
106
+ <OptionsSetting value="true" id="Update" />
107
+ <OptionsSetting value="true" id="Status" />
108
+ <OptionsSetting value="true" id="Edit" />
109
+ <ConfirmationsSetting value="0" id="Add" />
110
+ <ConfirmationsSetting value="0" id="Remove" />
111
+ </component>
112
+ <component name="ProjectReloadState">
113
+ <option name="STATE" value="0" />
114
+ </component>
115
+ <component name="ProjectView">
116
+ <navigator currentView="ProjectPane" proportions="" version="1">
117
+ <flattenPackages />
118
+ <showMembers />
119
+ <showModules />
120
+ <showLibraryContents />
121
+ <hideEmptyPackages />
122
+ <abbreviatePackageNames />
123
+ <autoscrollToSource />
124
+ <autoscrollFromSource />
125
+ <sortByType />
126
+ </navigator>
127
+ <panes>
128
+ <pane id="Scope" />
129
+ <pane id="ProjectPane">
130
+ <subPane>
131
+ <PATH>
132
+ <PATH_ELEMENT>
133
+ <option name="myItemId" value="TrackOrderPlaced" />
134
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
135
+ </PATH_ELEMENT>
136
+ </PATH>
137
+ <PATH>
138
+ <PATH_ELEMENT>
139
+ <option name="myItemId" value="TrackOrderPlaced" />
140
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
141
+ </PATH_ELEMENT>
142
+ <PATH_ELEMENT>
143
+ <option name="myItemId" value="TrackOrderPlaced" />
144
+ <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
145
+ </PATH_ELEMENT>
146
+ <PATH_ELEMENT>
147
+ <option name="myItemId" value="Model" />
148
+ <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
149
+ </PATH_ELEMENT>
150
+ </PATH>
151
+ <PATH>
152
+ <PATH_ELEMENT>
153
+ <option name="myItemId" value="TrackOrderPlaced" />
154
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
155
+ </PATH_ELEMENT>
156
+ <PATH_ELEMENT>
157
+ <option name="myItemId" value="TrackOrderPlaced" />
158
+ <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
159
+ </PATH_ELEMENT>
160
+ <PATH_ELEMENT>
161
+ <option name="myItemId" value="Helper" />
162
+ <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
163
+ </PATH_ELEMENT>
164
+ </PATH>
165
+ <PATH>
166
+ <PATH_ELEMENT>
167
+ <option name="myItemId" value="TrackOrderPlaced" />
168
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
169
+ </PATH_ELEMENT>
170
+ <PATH_ELEMENT>
171
+ <option name="myItemId" value="TrackOrderPlaced" />
172
+ <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
173
+ </PATH_ELEMENT>
174
+ <PATH_ELEMENT>
175
+ <option name="myItemId" value="etc" />
176
+ <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
177
+ </PATH_ELEMENT>
178
+ </PATH>
179
+ <PATH>
180
+ <PATH_ELEMENT>
181
+ <option name="myItemId" value="TrackOrderPlaced" />
182
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
183
+ </PATH_ELEMENT>
184
+ <PATH_ELEMENT>
185
+ <option name="myItemId" value="TrackOrderPlaced" />
186
+ <option name="myItemType" value="com.android.tools.idea.gradle.projectView.AndroidPsiDirectoryNode" />
187
+ </PATH_ELEMENT>
188
+ </PATH>
189
+ </subPane>
190
+ </pane>
191
+ <pane id="PackagesPane" />
192
+ </panes>
193
+ </component>
194
+ <component name="PropertiesComponent">
195
+ <property name="GoToClass.includeLibraries" value="false" />
196
+ <property name="GoToClass.toSaveIncludeLibraries" value="false" />
197
+ <property name="GoToFile.includeJavaFiles" value="false" />
198
+ <property name="MemberChooser.sorted" value="false" />
199
+ <property name="MemberChooser.showClasses" value="true" />
200
+ <property name="MemberChooser.copyJavadoc" value="false" />
201
+ <property name="WebServerToolWindowFactoryState" value="false" />
202
+ <property name="LayoutCode.rearrangeEntriesXML" value="false" />
203
+ </component>
204
+ <component name="RunManager">
205
+ <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
206
+ <module name="" />
207
+ <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
208
+ <option name="PROGRAM_PARAMETERS" />
209
+ <method />
210
+ </configuration>
211
+ <configuration default="true" type="Remote" factoryName="Remote">
212
+ <option name="USE_SOCKET_TRANSPORT" value="true" />
213
+ <option name="SERVER_MODE" value="false" />
214
+ <option name="SHMEM_ADDRESS" value="javadebug" />
215
+ <option name="HOST" value="localhost" />
216
+ <option name="PORT" value="5005" />
217
+ <method />
218
+ </configuration>
219
+ <configuration default="true" type="TestNG" factoryName="TestNG">
220
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
221
+ <module name="" />
222
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
223
+ <option name="ALTERNATIVE_JRE_PATH" />
224
+ <option name="SUITE_NAME" />
225
+ <option name="PACKAGE_NAME" />
226
+ <option name="MAIN_CLASS_NAME" />
227
+ <option name="METHOD_NAME" />
228
+ <option name="GROUP_NAME" />
229
+ <option name="TEST_OBJECT" value="CLASS" />
230
+ <option name="VM_PARAMETERS" value="-ea" />
231
+ <option name="PARAMETERS" />
232
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
233
+ <option name="OUTPUT_DIRECTORY" />
234
+ <option name="ANNOTATION_TYPE" />
235
+ <option name="ENV_VARIABLES" />
236
+ <option name="PASS_PARENT_ENVS" value="true" />
237
+ <option name="TEST_SEARCH_SCOPE">
238
+ <value defaultName="moduleWithDependencies" />
239
+ </option>
240
+ <option name="USE_DEFAULT_REPORTERS" value="false" />
241
+ <option name="PROPERTIES_FILE" />
242
+ <envs />
243
+ <properties />
244
+ <listeners />
245
+ <method />
246
+ </configuration>
247
+ <configuration default="true" type="Applet" factoryName="Applet">
248
+ <module name="" />
249
+ <option name="MAIN_CLASS_NAME" />
250
+ <option name="HTML_FILE_NAME" />
251
+ <option name="HTML_USED" value="false" />
252
+ <option name="WIDTH" value="400" />
253
+ <option name="HEIGHT" value="300" />
254
+ <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
255
+ <option name="VM_PARAMETERS" />
256
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
257
+ <option name="ALTERNATIVE_JRE_PATH" />
258
+ <method />
259
+ </configuration>
260
+ <configuration default="true" type="Application" factoryName="Application">
261
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
262
+ <option name="MAIN_CLASS_NAME" />
263
+ <option name="VM_PARAMETERS" />
264
+ <option name="PROGRAM_PARAMETERS" />
265
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
266
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
267
+ <option name="ALTERNATIVE_JRE_PATH" />
268
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
269
+ <option name="ENV_VARIABLES" />
270
+ <option name="PASS_PARENT_ENVS" value="true" />
271
+ <module name="" />
272
+ <envs />
273
+ <method />
274
+ </configuration>
275
+ <configuration default="true" type="JUnit" factoryName="JUnit">
276
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
277
+ <module name="" />
278
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
279
+ <option name="ALTERNATIVE_JRE_PATH" />
280
+ <option name="PACKAGE_NAME" />
281
+ <option name="MAIN_CLASS_NAME" />
282
+ <option name="METHOD_NAME" />
283
+ <option name="TEST_OBJECT" value="class" />
284
+ <option name="VM_PARAMETERS" value="-ea" />
285
+ <option name="PARAMETERS" />
286
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
287
+ <option name="ENV_VARIABLES" />
288
+ <option name="PASS_PARENT_ENVS" value="true" />
289
+ <option name="TEST_SEARCH_SCOPE">
290
+ <value defaultName="moduleWithDependencies" />
291
+ </option>
292
+ <envs />
293
+ <patterns />
294
+ <method />
295
+ </configuration>
296
+ <list size="0" />
297
+ <configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
298
+ <Host>localhost</Host>
299
+ <Port>5050</Port>
300
+ </configuration>
301
+ </component>
302
+ <component name="ShelveChangesManager" show_recycled="false" />
303
+ <component name="TaskManager">
304
+ <task active="true" id="Default" summary="Default task">
305
+ <changelist id="ff6c11e8-c5e8-4b87-becd-37566b6047b1" name="Default" comment="" />
306
+ <created>1407792782534</created>
307
+ <updated>1407792782534</updated>
308
+ <workItem from="1407792782541" duration="65000" />
309
+ <workItem from="1408493733812" duration="30642000" />
310
+ </task>
311
+ <servers />
312
+ </component>
313
+ <component name="TimeTrackingManager">
314
+ <option name="totallyTimeSpent" value="30707000" />
315
+ </component>
316
+ <component name="ToolWindowManager">
317
+ <frame x="0" y="22" width="1536" height="1178" extended-state="0" />
318
+ <editor active="true" />
319
+ <layout>
320
+ <window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
321
+ <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
322
+ <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
323
+ <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
324
+ <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
325
+ <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
326
+ <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
327
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
328
+ <window_info id="IDEtalk Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
329
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
330
+ <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
331
+ <window_info id="IDEtalk" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
332
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
333
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
334
+ <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
335
+ <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
336
+ <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
337
+ <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
338
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32931727" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
339
+ <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32930514" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
340
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
341
+ </layout>
342
+ </component>
343
+ <component name="Vcs.Log.UiProperties">
344
+ <option name="RECENTLY_FILTERED_USER_GROUPS">
345
+ <collection />
346
+ </option>
347
+ <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
348
+ <collection />
349
+ </option>
350
+ </component>
351
+ <component name="VcsContentAnnotationSettings">
352
+ <option name="myLimit" value="2678400000" />
353
+ </component>
354
+ <component name="VcsManagerConfiguration">
355
+ <option name="myTodoPanelSettings">
356
+ <TodoPanelSettings />
357
+ </option>
358
+ </component>
359
+ <component name="XDebuggerManager">
360
+ <breakpoint-manager />
361
+ </component>
362
+ <component name="editorHistoryManager">
363
+ <entry file="file://$PROJECT_DIR$/etc/config.xml">
364
+ <provider selected="true" editor-type-id="text-editor">
365
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="3240">
366
+ <caret line="94" column="25" selection-start-line="94" selection-start-column="23" selection-end-line="94" selection-end-column="25" />
367
+ <folding />
368
+ </state>
369
+ </provider>
370
+ </entry>
371
+ <entry file="file://$PROJECT_DIR$/etc/system.xml">
372
+ <provider selected="true" editor-type-id="text-editor">
373
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1185">
374
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
375
+ <folding />
376
+ </state>
377
+ </provider>
378
+ </entry>
379
+ <entry file="file://$PROJECT_DIR$/Helper/Data.php">
380
+ <provider selected="true" editor-type-id="text-editor">
381
+ <state vertical-scroll-proportion="0.0" vertical-offset="285" max-vertical-offset="2685">
382
+ <caret line="19" column="48" selection-start-line="19" selection-start-column="3" selection-end-line="19" selection-end-column="3" />
383
+ <folding />
384
+ </state>
385
+ </provider>
386
+ </entry>
387
+ <entry file="file://$PROJECT_DIR$/Model/Observer.php">
388
+ <provider selected="true" editor-type-id="text-editor">
389
+ <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="5355">
390
+ <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
391
+ <folding />
392
+ </state>
393
+ </provider>
394
+ </entry>
395
+ <entry file="file://$PROJECT_DIR$/../../../../../../tunnels.sh">
396
+ <provider selected="true" editor-type-id="text-editor">
397
+ <state vertical-scroll-proportion="0.1534225" vertical-offset="0" max-vertical-offset="1271">
398
+ <caret line="13" column="84" selection-start-line="13" selection-start-column="75" selection-end-line="13" selection-end-column="75" />
399
+ <folding />
400
+ </state>
401
+ </provider>
402
+ </entry>
403
+ <entry file="file://$USER_HOME$/Desktop/processNewsletter.php">
404
+ <provider selected="true" editor-type-id="text-editor">
405
+ <state vertical-scroll-proportion="0.21814671" vertical-offset="2279" max-vertical-offset="3390">
406
+ <caret line="94" column="58" selection-start-line="94" selection-start-column="1" selection-end-line="94" selection-end-column="1" />
407
+ <folding>
408
+ <marker date="1408747780000" expanded="true" signature="-1:-1" placeholder="INSERT INTO ..." />
409
+ </folding>
410
+ </state>
411
+ </provider>
412
+ </entry>
413
+ <entry file="jar://$APPLICATION_PLUGINS_DIR$/php/lib/php.jar!/com/jetbrains/php/lang/psi/stubs/data/standard_8.php">
414
+ <provider selected="true" editor-type-id="text-editor">
415
+ <state vertical-scroll-proportion="0.33962265" vertical-offset="10293" max-vertical-offset="16530">
416
+ <caret line="715" column="9" selection-start-line="715" selection-start-column="9" selection-end-line="715" selection-end-column="9" />
417
+ <folding />
418
+ </state>
419
+ </provider>
420
+ </entry>
421
+ <entry file="file://$PROJECT_DIR$/etc/config.xml">
422
+ <provider selected="true" editor-type-id="text-editor">
423
+ <state vertical-scroll-proportion="-16.153847" vertical-offset="2250" max-vertical-offset="3375">
424
+ <caret line="178" column="109" selection-start-line="178" selection-start-column="109" selection-end-line="178" selection-end-column="109" />
425
+ <folding />
426
+ </state>
427
+ </provider>
428
+ </entry>
429
+ <entry file="file://$PROJECT_DIR$/Model/TrackingEventTypes.php">
430
+ <provider selected="true" editor-type-id="text-editor">
431
+ <state vertical-scroll-proportion="-10.625" vertical-offset="30" max-vertical-offset="555">
432
+ <caret line="19" column="57" selection-start-line="19" selection-start-column="57" selection-end-line="19" selection-end-column="57" />
433
+ <folding />
434
+ </state>
435
+ </provider>
436
+ </entry>
437
+ <entry file="file://$PROJECT_DIR$/Model/Observer.php">
438
+ <provider selected="true" editor-type-id="text-editor">
439
+ <state vertical-scroll-proportion="-5.5735292" vertical-offset="2921" max-vertical-offset="5415">
440
+ <caret line="220" column="30" selection-start-line="220" selection-start-column="10" selection-end-line="220" selection-end-column="10" />
441
+ <folding />
442
+ </state>
443
+ </provider>
444
+ </entry>
445
+ <entry file="file://$USER_HOME$/Sites/magento/app/code/core/Mage/Core/Model/Store.php">
446
+ <provider selected="true" editor-type-id="text-editor">
447
+ <state vertical-scroll-proportion="-4.0250964" vertical-offset="4665" max-vertical-offset="18630">
448
+ <caret line="56" column="91" selection-start-line="56" selection-start-column="7" selection-end-line="56" selection-end-column="7" />
449
+ <folding />
450
+ </state>
451
+ </provider>
452
+ </entry>
453
+ <entry file="file://$PROJECT_DIR$/etc/system.xml">
454
+ <provider selected="true" editor-type-id="text-editor">
455
+ <state vertical-scroll-proportion="0.0" vertical-offset="2265" max-vertical-offset="3450">
456
+ <caret line="194" column="41" selection-start-line="194" selection-start-column="41" selection-end-line="194" selection-end-column="41" />
457
+ <folding />
458
+ </state>
459
+ </provider>
460
+ </entry>
461
+ <entry file="file://$USER_HOME$/Sites/magento/app/code/core/Mage/Core/Model/Email/Template.php">
462
+ <provider selected="true" editor-type-id="text-editor">
463
+ <state vertical-scroll-proportion="0.33333334" vertical-offset="3751" max-vertical-offset="9255">
464
+ <caret line="295" column="32" selection-start-line="295" selection-start-column="20" selection-end-line="295" selection-end-column="32" />
465
+ <folding />
466
+ </state>
467
+ </provider>
468
+ </entry>
469
+ <entry file="file://$USER_HOME$/Sites/magento/app/code/core/Mage/Core/Model/Email/Template/Mailer.php">
470
+ <provider selected="true" editor-type-id="text-editor">
471
+ <state vertical-scroll-proportion="0.34942085" vertical-offset="253" max-vertical-offset="2250">
472
+ <caret line="64" column="47" selection-start-line="64" selection-start-column="47" selection-end-line="64" selection-end-column="47" />
473
+ <folding />
474
+ </state>
475
+ </provider>
476
+ </entry>
477
+ <entry file="file://$PROJECT_DIR$/Helper/Data.php">
478
+ <provider selected="true" editor-type-id="text-editor">
479
+ <state vertical-scroll-proportion="0.12475248" vertical-offset="1134" max-vertical-offset="3720">
480
+ <caret line="83" column="18" selection-start-line="83" selection-start-column="5" selection-end-line="83" selection-end-column="5" />
481
+ <folding />
482
+ </state>
483
+ </provider>
484
+ </entry>
485
+ </component>
486
+ </project>
487
+
app/code/community/Iterable/TrackOrderPlaced/Helper/Data.php CHANGED
@@ -5,6 +5,55 @@ class Iterable_TrackOrderPlaced_Helper_Data extends Mage_Core_Helper_Abstract {
5
  const XML_PATH_ITERABLE_API_KEY = 'api_options/api_key_options/api_key';
6
  const XML_PATH_ENABLED_EVENTS = 'advanced_options/tracking_options/enabled_events';
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  private function getDecodedMagentoApiToken() {
9
  $magentoApiKey = Mage::getStoreConfig(self::XML_PATH_ITERABLE_API_KEY);
10
  return json_decode(base64_decode($magentoApiKey));
@@ -38,6 +87,7 @@ class Iterable_TrackOrderPlaced_Helper_Data extends Mage_Core_Helper_Abstract {
38
  $eventsToTrack = Mage::getStoreConfig(self::XML_PATH_ENABLED_EVENTS);
39
  $eventsToTrack = explode(",", $eventsToTrack);
40
  if (!in_array($event, $eventsToTrack)) {
 
41
  // TODO - maybe run this before gathering data about the cart
42
  return;
43
  }
@@ -46,6 +96,7 @@ class Iterable_TrackOrderPlaced_Helper_Data extends Mage_Core_Helper_Abstract {
46
  return;
47
  }
48
  $url = "https://api.iterable.com/{$endpoint}?api_key={$apiKey}";
 
49
  try {
50
  $client = new Zend_Http_Client($url);
51
  } catch(Exception $e) {
@@ -62,8 +113,10 @@ class Iterable_TrackOrderPlaced_Helper_Data extends Mage_Core_Helper_Abstract {
62
  if ($status != 200) {
63
  Mage::log("Iterable Tracker: Unable to track event at {$endpoint} with params {$json}; got status {$status} with body {$response->getBody()}");
64
  }
 
65
  } catch(Exception $e) {
66
  Mage::log("Warning: unable to send event at {$endpoint} with params {$json} to Iterable ({$e->getMessage()})");
 
67
  }
68
  }
69
 
@@ -84,7 +137,7 @@ class Iterable_TrackOrderPlaced_Helper_Data extends Mage_Core_Helper_Abstract {
84
  );
85
  $this->setCurrentIp($dataFields);
86
  $params['dataFields'] = $dataFields;
87
- $this->callIterableApi(Iterable_TrackOrderPlaced_Model_TrackingEventTypes::EVENT_TYPE_USER, $endpoint, $params);
88
  }
89
 
90
  public function subscribeEmailToList($email, $listId, $dataFields=array(), $resubscribe=False) {
@@ -101,7 +154,7 @@ class Iterable_TrackOrderPlaced_Helper_Data extends Mage_Core_Helper_Abstract {
101
  if (!empty($dataFields)) {
102
  $params['subscribers'][0]['dataFields'] = $dataFields;
103
  }
104
- $this->callIterableApi(Iterable_TrackOrderPlaced_Model_TrackingEventTypes::EVENT_TYPE_NEWSLETTER_SUBSCRIBE, $endpoint, $params);
105
  }
106
 
107
  public function unsubscribeEmailFromList($email, $listId) {
@@ -115,10 +168,9 @@ class Iterable_TrackOrderPlaced_Helper_Data extends Mage_Core_Helper_Abstract {
115
  )
116
  // 'campaignId' => iterableCid cookie?
117
  );
118
- $this->callIterableApi(Iterable_TrackOrderPlaced_Model_TrackingEventTypes::EVENT_TYPE_NEWSLETTER_UNSUBSCRIBE, $endpoint, $params);
119
  }
120
 
121
- /*
122
  public function track($event, $email, $dataFields=array()) {
123
  $endpoint = '/api/events/track';
124
  $params = array(
@@ -128,9 +180,8 @@ class Iterable_TrackOrderPlaced_Helper_Data extends Mage_Core_Helper_Abstract {
128
  if (!empty($dataFields)) {
129
  $params['dataFields'] = $dataFields;
130
  }
131
- $this->callIterableApi($event, $endpoint, $params);
132
  }
133
- */
134
 
135
  public function updateCart($email, $items, $dataFields=array()) {
136
  $endpoint = '/api/commerce/updateCart';
@@ -143,7 +194,7 @@ class Iterable_TrackOrderPlaced_Helper_Data extends Mage_Core_Helper_Abstract {
143
  if (!empty($dataFields)) {
144
  $params['user']['dataFields'] = $dataFields;
145
  }
146
- $this->callIterableApi(Iterable_TrackOrderPlaced_Model_TrackingEventTypes::EVENT_TYPE_CART_UPDATED, $endpoint, $params);
147
  }
148
 
149
  public function trackPurchase($email, $items, $total, $campaignId=NULL, $templateId=NULL, $dataFields=array(), $customerDataFields=array()) {
@@ -167,7 +218,18 @@ class Iterable_TrackOrderPlaced_Helper_Data extends Mage_Core_Helper_Abstract {
167
  if ($templateId != NULL) {
168
  $params['templateId'] = $templateId;
169
  }
170
- $this->callIterableApi(Iterable_TrackOrderPlaced_Model_TrackingEventTypes::EVENT_TYPE_ORDER, $endpoint, $params);
171
  }
172
 
 
 
 
 
 
 
 
 
 
 
 
173
  }
5
  const XML_PATH_ITERABLE_API_KEY = 'api_options/api_key_options/api_key';
6
  const XML_PATH_ENABLED_EVENTS = 'advanced_options/tracking_options/enabled_events';
7
 
8
+ /** transactional email xml config */
9
+
10
+ // account created
11
+ const XML_PATH_TRANSACTIONAL_ACCOUNT_CREATED_ENABLED = 'transactional_email_options/account_created/is_enabled';
12
+ const XML_PATH_TRANSACTIONAL_ACCOUNT_CREATED_CAMPAIGN_ID = 'transactional_email_options/account_created/campaign_id';
13
+ const XML_PATH_TRANSACTIONAL_FORGOT_PASSWORD_ENABLED = 'transactional_email_options/forgot_password/is_enabled';
14
+ const XML_PATH_TRANSACTIONAL_FORGOT_PASSWORD_CAMPAIGN_ID = 'transactional_email_options/forgot_password/campaign_id';
15
+ const XML_PATH_TRANSACTIONAL_NEWSLETTER_SUBSCRIBE_ENABLED = 'transactional_email_options/newsletter_subscribe/is_enabled';
16
+ const XML_PATH_TRANSACTIONAL_NEWSLETTER_SUBSCRIBE_CAMPAIGN_ID = 'transactional_email_options/newsletter_subscribe/campaign_id';
17
+ const XML_PATH_TRANSACTIONAL_NEWSLETTER_UNSUBSCRIBE_ENABLED = 'transactional_email_options/newsletter_unsubscribe/is_enabled';
18
+ const XML_PATH_TRANSACTIONAL_NEWSLETTER_UNSUBSCRIBE_CAMPAIGN_ID = 'transactional_email_options/newsletter_unsubscribe/campaign_id';
19
+
20
+ // disabled section
21
+ const XML_PATH_TRANSACTIONAL_ORDER_CONFIRM_DISABLED = 'transactional_email_options/order_confirm/is_disabled';
22
+
23
+ /** end transactional email xml config */
24
+
25
+ /** @var array Map of templateName -> (enabled, campaignId) */
26
+ private static $EMAIL_TEMPLATE_NAMES_TO_TRANSACTIONAL_EMAIL_OPTIONS = array(
27
+ 'customer_create_account_email_template' => array(
28
+ self::XML_PATH_TRANSACTIONAL_ACCOUNT_CREATED_ENABLED,
29
+ self::XML_PATH_TRANSACTIONAL_ACCOUNT_CREATED_CAMPAIGN_ID
30
+ ),
31
+ 'customer_password_forgot_email_template' => array(
32
+ self::XML_PATH_TRANSACTIONAL_FORGOT_PASSWORD_ENABLED,
33
+ self::XML_PATH_TRANSACTIONAL_FORGOT_PASSWORD_CAMPAIGN_ID
34
+ ),
35
+ 'newsletter_subscription_success_email_template' => array(
36
+ self::XML_PATH_TRANSACTIONAL_NEWSLETTER_SUBSCRIBE_ENABLED,
37
+ self::XML_PATH_TRANSACTIONAL_NEWSLETTER_SUBSCRIBE_CAMPAIGN_ID
38
+ ),
39
+ 'newsletter_subscription_un_email_template' => array(
40
+ self::XML_PATH_TRANSACTIONAL_NEWSLETTER_UNSUBSCRIBE_ENABLED,
41
+ self::XML_PATH_TRANSACTIONAL_NEWSLETTER_UNSUBSCRIBE_CAMPAIGN_ID
42
+ )
43
+ );
44
+
45
+ public static function getTransactionalEmailConfig() {
46
+ return self::$EMAIL_TEMPLATE_NAMES_TO_TRANSACTIONAL_EMAIL_OPTIONS;
47
+ }
48
+
49
+ private static $EMAIL_TEMPLATE_NAMES_TO_DISABLED_OPTIONS = array(
50
+ 'sales_email_order_template' => self::XML_PATH_TRANSACTIONAL_ORDER_CONFIRM_DISABLED
51
+ );
52
+
53
+ public static function getDefaultEmailDisabledConfig() {
54
+ return self::$EMAIL_TEMPLATE_NAMES_TO_DISABLED_OPTIONS;
55
+ }
56
+
57
  private function getDecodedMagentoApiToken() {
58
  $magentoApiKey = Mage::getStoreConfig(self::XML_PATH_ITERABLE_API_KEY);
59
  return json_decode(base64_decode($magentoApiKey));
87
  $eventsToTrack = Mage::getStoreConfig(self::XML_PATH_ENABLED_EVENTS);
88
  $eventsToTrack = explode(",", $eventsToTrack);
89
  if (!in_array($event, $eventsToTrack)) {
90
+ Mage::log("Iterable: tracking disabled for event " . $event);
91
  // TODO - maybe run this before gathering data about the cart
92
  return;
93
  }
96
  return;
97
  }
98
  $url = "https://api.iterable.com/{$endpoint}?api_key={$apiKey}";
99
+ // $url = "http://localhost:9000{$endpoint}?api_key={$apiKey}";
100
  try {
101
  $client = new Zend_Http_Client($url);
102
  } catch(Exception $e) {
113
  if ($status != 200) {
114
  Mage::log("Iterable Tracker: Unable to track event at {$endpoint} with params {$json}; got status {$status} with body {$response->getBody()}");
115
  }
116
+ return $response;
117
  } catch(Exception $e) {
118
  Mage::log("Warning: unable to send event at {$endpoint} with params {$json} to Iterable ({$e->getMessage()})");
119
+ return null;
120
  }
121
  }
122
 
137
  );
138
  $this->setCurrentIp($dataFields);
139
  $params['dataFields'] = $dataFields;
140
+ return $this->callIterableApi(Iterable_TrackOrderPlaced_Model_TrackingEventTypes::EVENT_TYPE_USER, $endpoint, $params);
141
  }
142
 
143
  public function subscribeEmailToList($email, $listId, $dataFields=array(), $resubscribe=False) {
154
  if (!empty($dataFields)) {
155
  $params['subscribers'][0]['dataFields'] = $dataFields;
156
  }
157
+ return $this->callIterableApi(Iterable_TrackOrderPlaced_Model_TrackingEventTypes::EVENT_TYPE_NEWSLETTER_SUBSCRIBE, $endpoint, $params);
158
  }
159
 
160
  public function unsubscribeEmailFromList($email, $listId) {
168
  )
169
  // 'campaignId' => iterableCid cookie?
170
  );
171
+ return $this->callIterableApi(Iterable_TrackOrderPlaced_Model_TrackingEventTypes::EVENT_TYPE_NEWSLETTER_UNSUBSCRIBE, $endpoint, $params);
172
  }
173
 
 
174
  public function track($event, $email, $dataFields=array()) {
175
  $endpoint = '/api/events/track';
176
  $params = array(
180
  if (!empty($dataFields)) {
181
  $params['dataFields'] = $dataFields;
182
  }
183
+ return $this->callIterableApi($event, $endpoint, $params);
184
  }
 
185
 
186
  public function updateCart($email, $items, $dataFields=array()) {
187
  $endpoint = '/api/commerce/updateCart';
194
  if (!empty($dataFields)) {
195
  $params['user']['dataFields'] = $dataFields;
196
  }
197
+ return $this->callIterableApi(Iterable_TrackOrderPlaced_Model_TrackingEventTypes::EVENT_TYPE_CART_UPDATED, $endpoint, $params);
198
  }
199
 
200
  public function trackPurchase($email, $items, $total, $campaignId=NULL, $templateId=NULL, $dataFields=array(), $customerDataFields=array()) {
218
  if ($templateId != NULL) {
219
  $params['templateId'] = $templateId;
220
  }
221
+ return $this->callIterableApi(Iterable_TrackOrderPlaced_Model_TrackingEventTypes::EVENT_TYPE_ORDER, $endpoint, $params);
222
  }
223
 
224
+ public function triggerCampaign($email, $campaignId, $dataFields=NULL) {
225
+ $endpoint = '/api/email/target';
226
+ $params = array(
227
+ 'recipientEmail' => $email,
228
+ 'campaignId' => $campaignId
229
+ );
230
+ if (! is_null($dataFields)) {
231
+ $params['dataFields'] = $dataFields;
232
+ }
233
+ return $this->callIterableApi(Iterable_TrackOrderPlaced_Model_TrackingEventTypes::EVENT_TYPE_TRIGGER_EMAIL, $endpoint, $params);
234
+ }
235
  }
app/code/community/Iterable/TrackOrderPlaced/Model/Email/Template.php ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This class overwrites Magento's default send functionality by routing all
4
+ * emails through Iterable using the Send API call.
5
+ *
6
+ * @author Iterable
7
+ */
8
+ class Iterable_TrackOrderPlaced_Model_Email_Template extends Mage_Core_Model_Email_Template {
9
+
10
+ private function getIterableCampaignIdForTemplateName($templateName) {
11
+ $transactionalEmailConfig = Mage::helper('trackorderplaced')->getTransactionalEmailConfig();
12
+ if (array_key_exists($templateName, $transactionalEmailConfig)) {
13
+ // if there's something for this template, check whether it's enabled and return the id if so
14
+ list($enabled_cfg, $iterable_campaign_id_cfg) = $transactionalEmailConfig[$templateName];
15
+ return Mage::getStoreConfig($enabled_cfg) ? intval(Mage::getStoreConfig($iterable_campaign_id_cfg)): null;
16
+ } else {
17
+ // if there's nothing for this template don't send through Iterable
18
+ return null;
19
+ }
20
+ }
21
+
22
+ private function isDefaultSendingDisabledForTemplateName($templateName) {
23
+ $disabledTemplateConfig = Mage::helper('trackorderplaced')->getDefaultEmailDisabledConfig();
24
+ return
25
+ array_key_exists($templateName, $disabledTemplateConfig) &&
26
+ intval(Mage::getStoreConfig($disabledTemplateConfig[$templateName]));
27
+ }
28
+
29
+ /**
30
+ * Send mail to recipient
31
+ *
32
+ * @param array|string $email E-mail(s)
33
+ * @param array|string|null $name receiver name(s)
34
+ * @param array $variables template variables
35
+ * @return boolean
36
+ **/
37
+ public function send($email, $name = null, array $variables = array())
38
+ {
39
+ $helper = Mage::helper('trackorderplaced');
40
+
41
+ $template_name = $this->getId();
42
+ if ($this->isDefaultSendingDisabledForTemplateName($template_name)) {
43
+ // Mage::log("Suppressing default email for " . $template_name . " due to Iterable config");
44
+ return true;
45
+ }
46
+ $iterable_campaign_id = $this->getIterableCampaignIdForTemplateName($template_name);
47
+
48
+ if (empty($iterable_campaign_id)) {
49
+ // Mage::log("Not sending " . $template_name . " through Iterable");
50
+ return parent::send($email, $name, $variables);
51
+ }
52
+
53
+ // email and name can be either arrays or strings; we don't care about the name though
54
+ $emails = array_values((array)$email);
55
+
56
+ $anyFailures = false;
57
+ foreach ($emails as $email) {
58
+ try {
59
+ $response = $helper->triggerCampaign($email, $iterable_campaign_id);
60
+ if (is_null($response) || ($response->getStatus() != 200)) {
61
+ Mage::log("Unable to trigger Iterable email for user " . $email . " and campaign " . $iterable_campaign_id . "; sending default Magento email");
62
+ parent::send($email, null, $variables);
63
+ }
64
+ } catch (Exception $e) {
65
+ Mage::logException($e);
66
+ $anyFailures = true;
67
+ }
68
+ }
69
+
70
+ return ! $anyFailures;
71
+ }
72
+
73
+ }
74
+ ?>
app/code/community/Iterable/TrackOrderPlaced/Model/TrackingEventTypes.php CHANGED
@@ -8,6 +8,7 @@ class Iterable_TrackOrderPlaced_Model_TrackingEventTypes
8
  const EVENT_TYPE_CART_UPDATED = 'cartUpdated';
9
  const EVENT_TYPE_NEWSLETTER_SUBSCRIBE = 'newsletterSubscribe';
10
  const EVENT_TYPE_NEWSLETTER_UNSUBSCRIBE = 'newsletterUnsubscribe';
 
11
 
12
  /** @const */
13
  private static $eventTypes = array(
@@ -15,7 +16,8 @@ class Iterable_TrackOrderPlaced_Model_TrackingEventTypes
15
  self::EVENT_TYPE_USER => 'User',
16
  self::EVENT_TYPE_CART_UPDATED => 'Cart Updated',
17
  self::EVENT_TYPE_NEWSLETTER_SUBSCRIBE => 'Newsletter Subscribe',
18
- self::EVENT_TYPE_NEWSLETTER_UNSUBSCRIBE => 'Newsletter Unsubscribe'
 
19
  );
20
 
21
  public function toOptionArray()
8
  const EVENT_TYPE_CART_UPDATED = 'cartUpdated';
9
  const EVENT_TYPE_NEWSLETTER_SUBSCRIBE = 'newsletterSubscribe';
10
  const EVENT_TYPE_NEWSLETTER_UNSUBSCRIBE = 'newsletterUnsubscribe';
11
+ const EVENT_TYPE_TRIGGER_EMAIL = 'triggerEmail';
12
 
13
  /** @const */
14
  private static $eventTypes = array(
16
  self::EVENT_TYPE_USER => 'User',
17
  self::EVENT_TYPE_CART_UPDATED => 'Cart Updated',
18
  self::EVENT_TYPE_NEWSLETTER_SUBSCRIBE => 'Newsletter Subscribe',
19
+ self::EVENT_TYPE_NEWSLETTER_UNSUBSCRIBE => 'Newsletter Unsubscribe',
20
+ self::EVENT_TYPE_TRIGGER_EMAIL => 'Trigger Email'
21
  );
22
 
23
  public function toOptionArray()
app/code/community/Iterable/TrackOrderPlaced/etc/config.xml CHANGED
@@ -7,7 +7,7 @@
7
  */
8
  -->
9
  <!-- The root node for Magento module configuration -->
10
- <config>
11
 
12
  <!--
13
  The module's node contains basic
@@ -28,21 +28,27 @@
28
  <global>
29
 
30
  <helpers>
31
- <trackorderplaced>
32
- <class>Iterable_TrackOrderPlaced_Helper</class>
33
- </trackorderplaced>
34
- </helpers>
35
-
36
  <models>
37
- <iterable_trackorderplaced>
38
- <class>Iterable_TrackOrderPlaced_Model</class>
39
- </iterable_trackorderplaced>
40
- </models>
41
-
 
 
 
 
 
 
42
  <!-- Defining an event observer -->
43
  <events>
44
  <!-- The code of the event we want to observe -->
45
- <sales_order_place_after>
46
  <!-- Defining an observer for this event -->
47
  <observers>
48
  <!--
@@ -60,41 +66,41 @@
60
  <type>singleton</type>
61
  </iterable_trackorderplaced>
62
  </observers>
63
- </sales_order_place_after>
64
- <customer_save_after>
65
- <observers>
66
  <iterable_trackaccountcreated>
67
  <class>iterable_trackorderplaced/observer</class>
68
  <method>customerSaveAfter</method>
69
  <type>singleton</type>
70
  </iterable_trackaccountcreated>
71
  </observers>
72
- </customer_save_after>
73
- <!--
74
- <customer_address_save_after>
75
- <observers>
76
- <iterable_trackaccountcreated>
77
- <class>iterable_trackorderplaced/observer</class>
78
- <method>customerSaveAfter</method>
79
- <type>singleton</type>
80
- </iterable_trackaccountcreated>
81
- </observers>
82
- </customer_address_save_after>
83
- -->
84
- <!-- tracks additions to the cart, but doesn't track changed quantities -->
85
- <!--
86
- <checkout_cart_add_product_complete>
87
- <observers>
88
- <iterable_trackaddtocart>
89
- <class>iterable_trackorderplaced/observer</class>
90
- <method>addToCart</method>
91
- <type>singleton</type>
92
- </iterable_trackaddtocart>
93
- </observers>
94
- </checkout_cart_add_product_complete>
95
- checkout_cart_update_item_complete
96
- -->
97
- <checkout_cart_product_add_after>
98
  <observers>
99
  <iterable_trackaddtocart>
100
  <class>iterable_trackorderplaced/observer</class>
@@ -103,76 +109,76 @@ checkout_cart_update_item_complete
103
  </iterable_trackaddtocart>
104
  </observers>
105
  </checkout_cart_product_add_after>
106
- <checkout_cart_product_update_after>
107
- <observers>
108
- <iterable_trackupdatecart>
109
- <class>iterable_trackorderplaced/observer</class>
110
- <method>checkoutCartProductUpdateAfter</method>
111
- <type>singleton</type>
112
- </iterable_trackupdatecart>
113
- </observers>
114
- </checkout_cart_product_update_after>
115
- <checkout_cart_update_items_after>
116
- <observers>
117
- <iterable_trackupdatecart>
118
- <class>iterable_trackorderplaced/observer</class>
119
- <method>checkoutCartUpdateItemsAfter</method>
120
- <type>singleton</type>
121
- </iterable_trackupdatecart>
122
- </observers>
123
- </checkout_cart_update_items_after>
124
- <!-- should use cart events instead of quote events, quote events don't get fired when quantity changes... however we still need the remove
125
- <sales_quote_add_item>
126
- <observers>
127
- <iterable_trackupdatecart>
128
- <class>iterable_trackorderplaced/observer</class>
129
- <method>salesQuoteAddItem</method>
130
- <type>singleton</type>
131
- </iterable_trackupdatecart>
132
- </observers>
133
- </sales_quote_add_item>
134
- -->
135
- <sales_quote_save_before>
136
- <observers>
137
- <iterable_trackclearcart>
138
- <class>iterable_trackorderplaced/observer</class>
139
- <method>salesQuoteSaveBefore</method>
140
- <type>singleton</type>
141
- </iterable_trackclearcart>
142
- </observers>
143
- </sales_quote_save_before>
144
- <sales_quote_remove_item>
145
- <observers>
146
- <iterable_trackupdatecart>
147
- <class>iterable_trackorderplaced/observer</class>
148
- <method>salesQuoteRemoveItem</method>
149
- <type>singleton</type>
150
- </iterable_trackupdatecart>
151
- </observers>
152
- </sales_quote_remove_item>
153
- <newsletter_subscriber_save_after>
154
  <observers>
155
  <iterable_tracknewslettersubscribe>
156
  <class>iterable_trackorderplaced/observer</class>
157
  <method>newsletterSubscriberSaveAfter</method>
158
- <type>singleton</type>
159
- </iterable_tracknewslettersubscribe>
160
  </observers>
161
  </newsletter_subscriber_save_after>
162
  </events>
163
  </global>
164
-
165
  <default>
166
  <api_options>
167
  <api_key_options>
168
- <api_key>MAGENTO_API_KEY</api_key>
169
- </api_key_options>
170
  </api_options>
171
- <advanced_options>
172
- <tracking_options>
173
- <enabled_events>order,user,cartUpdated,newsletterSubscribe,newsletterUnsubscribe</enabled_events>
174
- </tracking_options>
175
- </advanced_options>
176
  </default>
177
 
178
  <adminhtml>
@@ -194,9 +200,12 @@ checkout_cart_update_item_complete
194
  <api_options>
195
  <title>Iterable API Module</title>
196
  </api_options>
197
- <advanced_options>
198
- <title>Iterable Advanced Module</title>
199
- </advanced_options>
 
 
 
200
  </children>
201
  </config>
202
  </children>
7
  */
8
  -->
9
  <!-- The root node for Magento module configuration -->
10
+ <config>
11
 
12
  <!--
13
  The module's node contains basic
28
  <global>
29
 
30
  <helpers>
31
+ <trackorderplaced>
32
+ <class>Iterable_TrackOrderPlaced_Helper</class>
33
+ </trackorderplaced>
34
+ </helpers>
35
+
36
  <models>
37
+ <iterable_trackorderplaced>
38
+ <class>Iterable_TrackOrderPlaced_Model</class>
39
+ </iterable_trackorderplaced>
40
+
41
+ <core>
42
+ <rewrite>
43
+ <email_template>Iterable_TrackOrderPlaced_Model_Email_Template</email_template>
44
+ </rewrite>
45
+ </core>
46
+ </models>
47
+
48
  <!-- Defining an event observer -->
49
  <events>
50
  <!-- The code of the event we want to observe -->
51
+ <sales_order_place_after>
52
  <!-- Defining an observer for this event -->
53
  <observers>
54
  <!--
66
  <type>singleton</type>
67
  </iterable_trackorderplaced>
68
  </observers>
69
+ </sales_order_place_after>
70
+ <customer_save_after>
71
+ <observers>
72
  <iterable_trackaccountcreated>
73
  <class>iterable_trackorderplaced/observer</class>
74
  <method>customerSaveAfter</method>
75
  <type>singleton</type>
76
  </iterable_trackaccountcreated>
77
  </observers>
78
+ </customer_save_after>
79
+ <!--
80
+ <customer_address_save_after>
81
+ <observers>
82
+ <iterable_trackaccountcreated>
83
+ <class>iterable_trackorderplaced/observer</class>
84
+ <method>customerSaveAfter</method>
85
+ <type>singleton</type>
86
+ </iterable_trackaccountcreated>
87
+ </observers>
88
+ </customer_address_save_after>
89
+ -->
90
+ <!-- tracks additions to the cart, but doesn't track changed quantities -->
91
+ <!--
92
+ <checkout_cart_add_product_complete>
93
+ <observers>
94
+ <iterable_trackaddtocart>
95
+ <class>iterable_trackorderplaced/observer</class>
96
+ <method>addToCart</method>
97
+ <type>singleton</type>
98
+ </iterable_trackaddtocart>
99
+ </observers>
100
+ </checkout_cart_add_product_complete>
101
+ checkout_cart_update_item_complete
102
+ -->
103
+ <checkout_cart_product_add_after>
104
  <observers>
105
  <iterable_trackaddtocart>
106
  <class>iterable_trackorderplaced/observer</class>
109
  </iterable_trackaddtocart>
110
  </observers>
111
  </checkout_cart_product_add_after>
112
+ <checkout_cart_product_update_after>
113
+ <observers>
114
+ <iterable_trackupdatecart>
115
+ <class>iterable_trackorderplaced/observer</class>
116
+ <method>checkoutCartProductUpdateAfter</method>
117
+ <type>singleton</type>
118
+ </iterable_trackupdatecart>
119
+ </observers>
120
+ </checkout_cart_product_update_after>
121
+ <checkout_cart_update_items_after>
122
+ <observers>
123
+ <iterable_trackupdatecart>
124
+ <class>iterable_trackorderplaced/observer</class>
125
+ <method>checkoutCartUpdateItemsAfter</method>
126
+ <type>singleton</type>
127
+ </iterable_trackupdatecart>
128
+ </observers>
129
+ </checkout_cart_update_items_after>
130
+ <!-- should use cart events instead of quote events, quote events don't get fired when quantity changes... however we still need the remove
131
+ <sales_quote_add_item>
132
+ <observers>
133
+ <iterable_trackupdatecart>
134
+ <class>iterable_trackorderplaced/observer</class>
135
+ <method>salesQuoteAddItem</method>
136
+ <type>singleton</type>
137
+ </iterable_trackupdatecart>
138
+ </observers>
139
+ </sales_quote_add_item>
140
+ -->
141
+ <sales_quote_save_before>
142
+ <observers>
143
+ <iterable_trackclearcart>
144
+ <class>iterable_trackorderplaced/observer</class>
145
+ <method>salesQuoteSaveBefore</method>
146
+ <type>singleton</type>
147
+ </iterable_trackclearcart>
148
+ </observers>
149
+ </sales_quote_save_before>
150
+ <sales_quote_remove_item>
151
+ <observers>
152
+ <iterable_trackupdatecart>
153
+ <class>iterable_trackorderplaced/observer</class>
154
+ <method>salesQuoteRemoveItem</method>
155
+ <type>singleton</type>
156
+ </iterable_trackupdatecart>
157
+ </observers>
158
+ </sales_quote_remove_item>
159
+ <newsletter_subscriber_save_after>
160
  <observers>
161
  <iterable_tracknewslettersubscribe>
162
  <class>iterable_trackorderplaced/observer</class>
163
  <method>newsletterSubscriberSaveAfter</method>
164
+ <type>singleton</type>
165
+ </iterable_tracknewslettersubscribe>
166
  </observers>
167
  </newsletter_subscriber_save_after>
168
  </events>
169
  </global>
170
+
171
  <default>
172
  <api_options>
173
  <api_key_options>
174
+ <api_key>MAGENTO_API_KEY</api_key>
175
+ </api_key_options>
176
  </api_options>
177
+ <advanced_options>
178
+ <tracking_options>
179
+ <enabled_events>order,user,cartUpdated,newsletterSubscribe,newsletterUnsubscribe,triggerEmail</enabled_events>
180
+ </tracking_options>
181
+ </advanced_options>
182
  </default>
183
 
184
  <adminhtml>
200
  <api_options>
201
  <title>Iterable API Module</title>
202
  </api_options>
203
+ <transactional_email_options>
204
+ <title>Iterable Transactional Email Module</title>
205
+ </transactional_email_options>
206
+ <advanced_options>
207
+ <title>Iterable Advanced Module</title>
208
+ </advanced_options>
209
  </children>
210
  </config>
211
  </children>
app/code/community/Iterable/TrackOrderPlaced/etc/system.xml CHANGED
@@ -5,7 +5,7 @@
5
  <class>iterable-section</class>
6
  <sort_order>101</sort_order> <!-- General is 100, from app/code/core/Mage/Core/etc/system.xml -->
7
  </iterableconfig>
8
- </tabs>
9
  <sections> <!-- each section defined here is a subcategory of a heading from tabs. EACH SECTION NEEDS AN ACL DEFINED IN CONFIG.XML -->
10
  <api_options translate="label" module="trackorderplaced">
11
  <label>API</label>
@@ -14,40 +14,191 @@
14
  <sort_order>1000</sort_order>
15
  <show_in_default>1</show_in_default>
16
  <show_in_website>1</show_in_website>
17
- <show_in_store>1</show_in_store>
18
  <groups>
19
  <api_key_options translate="label">
20
  <label>API Key</label>
21
  <frontend_type>text</frontend_type>
22
- <expanded>1</expanded>
23
  <sort_order>1</sort_order>
24
  <show_in_default>1</show_in_default>
25
  <show_in_website>1</show_in_website>
26
- <show_in_store>1</show_in_store>
27
- <fields>
28
- <api_key>
29
- <label>API Key</label>
30
- <comment>Your unique API key. Can be found in your Iterable account <![CDATA[<a href="https://iterable.com/api/settings">here</a>]]>.</comment>
31
- <frontend_type>text</frontend_type>
32
- <sort_order>1</sort_order>
33
- <show_in_default>1</show_in_default>
34
- <show_in_website>1</show_in_website>
35
- <show_in_store>1</show_in_store>
36
- </api_key>
37
- </fields>
38
  </api_key_options>
39
  </groups>
40
  </api_options>
41
- <advanced_options>
42
- <label>Advanced</label>
43
- <tab>iterableconfig</tab>
44
- <frontend_type>text</frontend_type>
45
  <sort_order>1001</sort_order>
46
  <show_in_default>1</show_in_default>
47
  <show_in_website>1</show_in_website>
48
  <show_in_store>1</show_in_store>
49
- <groups>
50
- <tracking_options translate="label">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  <label>Event Tracking</label>
52
  <frontend_type>text</frontend_type>
53
  <sort_order>2</sort_order>
@@ -67,7 +218,7 @@
67
  </enabled_events>
68
  </fields>
69
  </tracking_options>
70
- </groups>
71
- </advanced_options>
72
- </sections>
73
  </config>
5
  <class>iterable-section</class>
6
  <sort_order>101</sort_order> <!-- General is 100, from app/code/core/Mage/Core/etc/system.xml -->
7
  </iterableconfig>
8
+ </tabs>
9
  <sections> <!-- each section defined here is a subcategory of a heading from tabs. EACH SECTION NEEDS AN ACL DEFINED IN CONFIG.XML -->
10
  <api_options translate="label" module="trackorderplaced">
11
  <label>API</label>
14
  <sort_order>1000</sort_order>
15
  <show_in_default>1</show_in_default>
16
  <show_in_website>1</show_in_website>
17
+ <show_in_store>1</show_in_store>
18
  <groups>
19
  <api_key_options translate="label">
20
  <label>API Key</label>
21
  <frontend_type>text</frontend_type>
22
+ <expanded>1</expanded>
23
  <sort_order>1</sort_order>
24
  <show_in_default>1</show_in_default>
25
  <show_in_website>1</show_in_website>
26
+ <show_in_store>1</show_in_store>
27
+ <fields>
28
+ <api_key>
29
+ <label>API Key</label>
30
+ <comment>Your unique API key. Can be found in your Iterable account <![CDATA[<a href="https://app.iterable.com/api/settings">here</a>]]>.</comment>
31
+ <frontend_type>text</frontend_type>
32
+ <sort_order>1</sort_order>
33
+ <show_in_default>1</show_in_default>
34
+ <show_in_website>1</show_in_website>
35
+ <show_in_store>1</show_in_store>
36
+ </api_key>
37
+ </fields>
38
  </api_key_options>
39
  </groups>
40
  </api_options>
41
+ <transactional_email_options>
42
+ <label>Transactional Emails</label>
43
+ <tab>iterableconfig</tab>
44
+ <frontend_type>text</frontend_type>
45
  <sort_order>1001</sort_order>
46
  <show_in_default>1</show_in_default>
47
  <show_in_website>1</show_in_website>
48
  <show_in_store>1</show_in_store>
49
+ <groups>
50
+ <account_created translate="label">
51
+ <label>Account Created</label>
52
+ <frontend_type>text</frontend_type>
53
+ <sort_order>1</sort_order>
54
+ <show_in_default>1</show_in_default>
55
+ <show_in_website>1</show_in_website>
56
+ <show_in_store>1</show_in_store>
57
+ <fields>
58
+ <is_enabled>
59
+ <label>Enabled</label>
60
+ <comment>Send account creation emails through Iterable</comment>
61
+ <frontend_type>select</frontend_type>
62
+ <source_model>adminhtml/system_config_source_yesno</source_model>
63
+ <sort_order>1</sort_order>
64
+ <show_in_default>1</show_in_default>
65
+ <show_in_website>1</show_in_website>
66
+ <show_in_store>1</show_in_store>
67
+ </is_enabled>
68
+ <campaign_id>
69
+ <label>Triggered Campaign Id</label>
70
+ <comment>Id of the Triggered Email Campaign to send when a user creates an account</comment>
71
+ <frontend_type>text</frontend_type>
72
+ <validate>validate-number</validate>
73
+ <sort_order>2</sort_order>
74
+ <show_in_default>1</show_in_default>
75
+ <show_in_website>1</show_in_website>
76
+ <show_in_store>1</show_in_store>
77
+ </campaign_id>
78
+ </fields>
79
+ </account_created>
80
+ <forgot_password translate="label">
81
+ <label>Forgot Password</label>
82
+ <frontend_type>text</frontend_type>
83
+ <sort_order>2</sort_order>
84
+ <show_in_default>1</show_in_default>
85
+ <show_in_website>1</show_in_website>
86
+ <show_in_store>1</show_in_store>
87
+ <fields>
88
+ <is_enabled>
89
+ <label>Enabled</label>
90
+ <comment>Send password reset emails through Iterable</comment>
91
+ <frontend_type>select</frontend_type>
92
+ <source_model>adminhtml/system_config_source_yesno</source_model>
93
+ <sort_order>1</sort_order>
94
+ <show_in_default>1</show_in_default>
95
+ <show_in_website>1</show_in_website>
96
+ <show_in_store>1</show_in_store>
97
+ </is_enabled>
98
+ <campaign_id>
99
+ <label>Triggered Campaign Id</label>
100
+ <comment>Id of the Triggered Email Campaign to send when a user resets their password</comment>
101
+ <frontend_type>text</frontend_type>
102
+ <validate>validate-number</validate>
103
+ <sort_order>2</sort_order>
104
+ <show_in_default>1</show_in_default>
105
+ <show_in_website>1</show_in_website>
106
+ <show_in_store>1</show_in_store>
107
+ </campaign_id>
108
+ </fields>
109
+ </forgot_password>
110
+ <newsletter_subscribe translate="label">
111
+ <label>Newsletter Subscribes</label>
112
+ <frontend_type>text</frontend_type>
113
+ <sort_order>3</sort_order>
114
+ <show_in_default>1</show_in_default>
115
+ <show_in_website>1</show_in_website>
116
+ <show_in_store>1</show_in_store>
117
+ <fields>
118
+ <is_enabled>
119
+ <label>Enabled</label>
120
+ <comment>Send newsletter subscription emails through Iterable</comment>
121
+ <frontend_type>select</frontend_type>
122
+ <source_model>adminhtml/system_config_source_yesno</source_model>
123
+ <sort_order>1</sort_order>
124
+ <show_in_default>1</show_in_default>
125
+ <show_in_website>1</show_in_website>
126
+ <show_in_store>1</show_in_store>
127
+ </is_enabled>
128
+ <campaign_id>
129
+ <label>Triggered Campaign Id</label>
130
+ <comment>Id of the Triggered Email Campaign to send when a user subscribes to a newsletter</comment>
131
+ <frontend_type>text</frontend_type>
132
+ <validate>validate-number</validate>
133
+ <sort_order>2</sort_order>
134
+ <show_in_default>1</show_in_default>
135
+ <show_in_website>1</show_in_website>
136
+ <show_in_store>1</show_in_store>
137
+ </campaign_id>
138
+ </fields>
139
+ </newsletter_subscribe>
140
+ <newsletter_unsubscribe translate="label">
141
+ <label>Newsletter Unsubscribes</label>
142
+ <frontend_type>text</frontend_type>
143
+ <sort_order>4</sort_order>
144
+ <show_in_default>1</show_in_default>
145
+ <show_in_website>1</show_in_website>
146
+ <show_in_store>1</show_in_store>
147
+ <fields>
148
+ <is_enabled>
149
+ <label>Enabled</label>
150
+ <comment>Send newsletter unsubscription emails through Iterable</comment>
151
+ <frontend_type>select</frontend_type>
152
+ <source_model>adminhtml/system_config_source_yesno</source_model>
153
+ <sort_order>1</sort_order>
154
+ <show_in_default>1</show_in_default>
155
+ <show_in_website>1</show_in_website>
156
+ <show_in_store>1</show_in_store>
157
+ </is_enabled>
158
+ <campaign_id>
159
+ <label>Triggered Campaign Id</label>
160
+ <comment>Id of the Triggered Email Campaign to send when a user unsubscribes from a newsletter</comment>
161
+ <frontend_type>text</frontend_type>
162
+ <validate>validate-number</validate>
163
+ <sort_order>2</sort_order>
164
+ <show_in_default>1</show_in_default>
165
+ <show_in_website>1</show_in_website>
166
+ <show_in_store>1</show_in_store>
167
+ </campaign_id>
168
+ </fields>
169
+ </newsletter_unsubscribe>
170
+ <order_confirm translate="label">
171
+ <label>Order Confirmations</label>
172
+ <frontend_type>text</frontend_type>
173
+ <sort_order>5</sort_order>
174
+ <show_in_default>1</show_in_default>
175
+ <show_in_website>1</show_in_website>
176
+ <show_in_store>1</show_in_store>
177
+ <fields>
178
+ <is_disabled>
179
+ <label>Disabled</label>
180
+ <comment>Suppress default order confirmation emails from Magento. Make sure you set up an appropriate workflow in Iterable first!</comment>
181
+ <frontend_type>select</frontend_type>
182
+ <source_model>adminhtml/system_config_source_yesno</source_model>
183
+ <sort_order>1</sort_order>
184
+ <show_in_default>1</show_in_default>
185
+ <show_in_website>1</show_in_website>
186
+ <show_in_store>1</show_in_store>
187
+ </is_disabled>
188
+ </fields>
189
+ </order_confirm>
190
+ </groups>
191
+ </transactional_email_options>
192
+ <advanced_options>
193
+ <label>Advanced</label>
194
+ <tab>iterableconfig</tab>
195
+ <frontend_type>text</frontend_type>
196
+ <sort_order>1002</sort_order>
197
+ <show_in_default>1</show_in_default>
198
+ <show_in_website>1</show_in_website>
199
+ <show_in_store>1</show_in_store>
200
+ <groups>
201
+ <tracking_options translate="label">
202
  <label>Event Tracking</label>
203
  <frontend_type>text</frontend_type>
204
  <sort_order>2</sort_order>
218
  </enabled_events>
219
  </fields>
220
  </tracking_options>
221
+ </groups>
222
+ </advanced_options>
223
+ </sections>
224
  </config>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Iterable_Plugin</name>
4
- <version>1.4.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/OSL-3.0">Open Software License (OSL) </license>
7
  <channel>community</channel>
@@ -15,11 +15,11 @@ drip marketing campaigns.&#xD;
15
  To install, click the 'Install Now' button above and paste the link into your Magento Connect Manager. You will then see an Iterable section in your Magento Admin view. In the 'Advanced' section, select the events you would like to be sent to Iterable. Then, in the API section, enter your Magento API key from Iterable (located in the API Config section on the left side menu).&#xD;
16
  &#xD;
17
  Questions? Comments? Feel free to contact us at support@iterable.com. Also, for more info or a free demo, please visit us at Iterable.com.</description>
18
- <notes>Add support for PHP 5.3</notes>
19
  <authors><author><name>Ilya Brin</name><user>Iterable</user><email>ilya@iterable.com</email></author></authors>
20
- <date>2014-08-11</date>
21
- <time>21:32:24</time>
22
- <contents><target name="magecommunity"><dir name="Iterable"><dir name="TrackOrderPlaced"><dir name="Helper"><file name="Data.php" hash="f890759b1875bfde311cf40ed01aae67"/></dir><dir name="Model"><file name="Observer.php" hash="07fc03a2086562b26c751bd1146f07ba"/><file name="TrackingEventTypes.php" hash="f0592c7a7506a0e606275dd422a57bb8"/></dir><dir name="etc"><file name="config.xml" hash="d9e0eae78379f3c6238d70023b110276"/><file name="system.xml" hash="e4ad1b58022f8969e64dff80971c4cfb"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="iterable"><file name="common.xml" hash="d90fbb22fb34fa29deb6b0e131f9e767"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Iterable_TrackOrderPlaced.xml" hash="0d4506dadf95eecb54e215ed03b2c6a7"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="iterable"><dir name="images"><file name="section_logo.png" hash="fe5090ba955a890c1efe2c09cb260342"/></dir><file name="iterable.css" hash="4d928c5a4ed76d62e246a57ee868ec23"/><file name="iterable.css~" hash="2c3ee0498f159bc59bee37cd3c508f27"/></dir></dir></dir></dir></target></contents>
23
  <compatible/>
24
  <dependencies><required><php><min>5.3.1</min><max>6.0.0</max></php></required></dependencies>
25
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Iterable_Plugin</name>
4
+ <version>1.5.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/OSL-3.0">Open Software License (OSL) </license>
7
  <channel>community</channel>
15
  To install, click the 'Install Now' button above and paste the link into your Magento Connect Manager. You will then see an Iterable section in your Magento Admin view. In the 'Advanced' section, select the events you would like to be sent to Iterable. Then, in the API section, enter your Magento API key from Iterable (located in the API Config section on the left side menu).&#xD;
16
  &#xD;
17
  Questions? Comments? Feel free to contact us at support@iterable.com. Also, for more info or a free demo, please visit us at Iterable.com.</description>
18
+ <notes>Support suppressing default Magento emails and instead triggering Iterable campaigns</notes>
19
  <authors><author><name>Ilya Brin</name><user>Iterable</user><email>ilya@iterable.com</email></author></authors>
20
+ <date>2014-08-27</date>
21
+ <time>22:50:07</time>
22
+ <contents><target name="magecommunity"><dir name="Iterable"><dir name="TrackOrderPlaced"><dir name="Helper"><file name="Data.php" hash="a6029c49149215655477fac0442b365f"/></dir><dir name="Model"><dir name="Email"><file name="Template.php" hash="225b9fb6b5eac3b506813bae86e1f005"/></dir><file name="Observer.php" hash="07fc03a2086562b26c751bd1146f07ba"/><file name="TrackingEventTypes.php" hash="b81614a3a0fcd67aee43a29093044261"/></dir><dir name="etc"><file name="config.xml" hash="76c01eefd541d334f5bcf839a31e49de"/><file name="system.xml" hash="32d1f49eb03cd585b7c33a894fe4de15"/></dir><dir name=".idea"><file name="TrackOrderPlaced.iml" hash="64a676a732fd4b7f408cdd46b49aaa24"/><file name="compiler.xml" hash="7e7efa3e3d6514a0ff290e4dfce3cbe9"/><dir name="copyright"><file name="profiles_settings.xml" hash="b1e0b181e080c28b1d116582290e6e97"/></dir><file name="encodings.xml" hash="f1c5edfa5b1a67aabcb9e41674afa252"/><file name="misc.xml" hash="a09f56c13a544171f953e7723e0d4439"/><file name="modules.xml" hash="c93cdff764916047e398fcf5b105a3ed"/><dir name="scopes"><file name="scope_settings.xml" hash="3d0b1957d39aa5636904788c54e654cf"/></dir><file name="vcs.xml" hash="1b4ab30910ae53c73594cd0e3db9840b"/><file name="workspace.xml" hash="b02b6a3c3faf804a4810d8cdc8c10c8f"/><file name=".name" hash="8b29e935aaea69d5d9c071be993c4610"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="iterable"><file name="common.xml" hash="d90fbb22fb34fa29deb6b0e131f9e767"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Iterable_TrackOrderPlaced.xml" hash="0d4506dadf95eecb54e215ed03b2c6a7"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="iterable"><dir name="images"><file name="section_logo.png" hash="fe5090ba955a890c1efe2c09cb260342"/></dir><file name="iterable.css" hash="4d928c5a4ed76d62e246a57ee868ec23"/><file name="iterable.css~" hash="2c3ee0498f159bc59bee37cd3c508f27"/></dir></dir></dir></dir></target></contents>
23
  <compatible/>
24
  <dependencies><required><php><min>5.3.1</min><max>6.0.0</max></php></required></dependencies>
25
  </package>