Eggplant 301 Redirects - Version 2.2.3

Version Description

Fixed an issue where the redirect database tables were not being created, causing 'Invalid Destination URL' errors.

Download this release

Release Info

Developer shawn@eggplantstudios.ca
Plugin Icon 128x128 Eggplant 301 Redirects
Version 2.2.3
Comparing to
See all releases

Code changes from version 2.2.2 to 2.2.3

.idea/.name DELETED
@@ -1 +0,0 @@
1
- eps-301-redirects (trunk)
 
.idea/encodings.xml DELETED
@@ -1,5 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
4
- </project>
5
-
 
 
 
 
 
.idea/eps-301-redirects (trunk).iml DELETED
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$" />
5
- <orderEntry type="inheritedJdk" />
6
- <orderEntry type="sourceFolder" forTests="false" />
7
- </component>
8
- </module>
9
-
 
 
 
 
 
 
 
 
 
.idea/misc.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectRootManager" version="2" />
4
- <component name="SvnBranchConfigurationManager">
5
- <option name="mySupportsUserInfoFilter" value="true" />
6
- </component>
7
- </project>
8
-
 
 
 
 
 
 
 
 
.idea/modules.xml DELETED
@@ -1,9 +0,0 @@
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/eps-301-redirects (trunk).iml" filepath="$PROJECT_DIR$/.idea/eps-301-redirects (trunk).iml" />
6
- </modules>
7
- </component>
8
- </project>
9
-
 
 
 
 
 
 
 
 
 
.idea/scopes/scope_settings.xml DELETED
@@ -1,5 +0,0 @@
1
- <component name="DependencyValidationManager">
2
- <state>
3
- <option name="SKIP_IMPORT_STATEMENTS" value="false" />
4
- </state>
5
- </component>
 
 
 
 
 
.idea/vcs.xml DELETED
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$" vcs="svn" />
5
- </component>
6
- </project>
7
-
 
 
 
 
 
 
 
.idea/workspace.xml DELETED
@@ -1,245 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ChangeListManager">
4
- <list default="true" readonly="true" id="8269d8a3-d716-4d22-abc3-a8011cfbd296" name="Default" comment="" />
5
- <ignored path="eps-301-redirects (trunk).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="eps-301-redirects (trunk)" />
23
- </component>
24
- <component name="FileEditorManager">
25
- <leaf />
26
- </component>
27
- <component name="FindManager">
28
- <FindUsagesManager>
29
- <setting name="OPEN_NEW_TAB" value="false" />
30
- </FindUsagesManager>
31
- </component>
32
- <component name="IdeDocumentHistory">
33
- <option name="changedFiles">
34
- <list>
35
- <option value="$PROJECT_DIR$/libs/eps-plugin-options.php" />
36
- <option value="$PROJECT_DIR$/plugin.php" />
37
- <option value="$PROJECT_DIR$/readme.txt" />
38
- <option value="$PROJECT_DIR$/eps-301-redirects.php" />
39
- </list>
40
- </option>
41
- </component>
42
- <component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" />
43
- <component name="ProjectFrameBounds">
44
- <option name="x" value="111" />
45
- <option name="y" value="43" />
46
- <option name="width" value="1970" />
47
- <option name="height" value="1265" />
48
- </component>
49
- <component name="ProjectLevelVcsManager" settingsEditedManually="false">
50
- <OptionsSetting value="true" id="Add" />
51
- <OptionsSetting value="true" id="Remove" />
52
- <OptionsSetting value="true" id="Checkout" />
53
- <OptionsSetting value="true" id="Update" />
54
- <OptionsSetting value="true" id="Status" />
55
- <OptionsSetting value="true" id="Edit" />
56
- <ConfirmationsSetting value="0" id="Add" />
57
- <ConfirmationsSetting value="0" id="Remove" />
58
- </component>
59
- <component name="ProjectReloadState">
60
- <option name="STATE" value="0" />
61
- </component>
62
- <component name="ProjectView">
63
- <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
64
- <flattenPackages />
65
- <showMembers />
66
- <showModules />
67
- <showLibraryContents />
68
- <hideEmptyPackages />
69
- <abbreviatePackageNames />
70
- <autoscrollToSource />
71
- <autoscrollFromSource />
72
- <sortByType />
73
- </navigator>
74
- <panes>
75
- <pane id="Scope" />
76
- <pane id="ProjectPane">
77
- <subPane>
78
- <PATH>
79
- <PATH_ELEMENT>
80
- <option name="myItemId" value="eps-301-redirects (trunk)" />
81
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
82
- </PATH_ELEMENT>
83
- </PATH>
84
- <PATH>
85
- <PATH_ELEMENT>
86
- <option name="myItemId" value="eps-301-redirects (trunk)" />
87
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
88
- </PATH_ELEMENT>
89
- <PATH_ELEMENT>
90
- <option name="myItemId" value="eps-301-redirects" />
91
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
92
- </PATH_ELEMENT>
93
- </PATH>
94
- </subPane>
95
- </pane>
96
- </panes>
97
- </component>
98
- <component name="PropertiesComponent">
99
- <property name="options.lastSelected" value="preferences.sourceCode" />
100
- <property name="options.splitter.main.proportions" value="0.3" />
101
- <property name="options.splitter.details.proportions" value="0.2" />
102
- <property name="options.searchVisible" value="true" />
103
- <property name="WebServerToolWindowFactoryState" value="false" />
104
- </component>
105
- <component name="RunManager">
106
- <list size="0" />
107
- </component>
108
- <component name="ShelveChangesManager" show_recycled="false" />
109
- <component name="SvnConfiguration" maxAnnotateRevisions="500" myUseAcceleration="nothing" myAutoUpdateAfterCommit="false" cleanupOnStartRun="true" SSL_PROTOCOLS="sslv3">
110
- <option name="USER" value="" />
111
- <option name="PASSWORD" value="" />
112
- <option name="mySSHConnectionTimeout" value="30000" />
113
- <option name="mySSHReadTimeout" value="30000" />
114
- <option name="LAST_MERGED_REVISION" />
115
- <option name="MERGE_DRY_RUN" value="false" />
116
- <option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
117
- <option name="UPDATE_LOCK_ON_DEMAND" value="false" />
118
- <option name="IGNORE_SPACES_IN_MERGE" value="false" />
119
- <option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
120
- <option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
121
- <option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
122
- <option name="FORCE_UPDATE" value="false" />
123
- <option name="IGNORE_EXTERNALS" value="false" />
124
- <configuration useDefault="false">$USER_HOME$/.subversion</configuration>
125
- <myIsUseDefaultProxy>false</myIsUseDefaultProxy>
126
- <supportedVersion>125</supportedVersion>
127
- </component>
128
- <component name="TaskManager">
129
- <task active="true" id="Default" summary="Default task">
130
- <changelist id="8269d8a3-d716-4d22-abc3-a8011cfbd296" name="Default" comment="" />
131
- <created>1430661932982</created>
132
- <updated>1430661932982</updated>
133
- </task>
134
- <servers />
135
- </component>
136
- <component name="ToolWindowManager">
137
- <frame x="111" y="43" width="1970" height="1265" extended-state="0" />
138
- <editor active="false" />
139
- <layout>
140
- <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="7" side_tool="false" content_ui="tabs" />
141
- <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="7" side_tool="false" content_ui="tabs" />
142
- <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="6" side_tool="false" content_ui="tabs" />
143
- <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="3" side_tool="false" content_ui="tabs" />
144
- <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
145
- <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.26037344" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
146
- <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
147
- <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="2" side_tool="true" content_ui="tabs" />
148
- <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="7" side_tool="true" content_ui="tabs" />
149
- <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="2" side_tool="false" content_ui="tabs" />
150
- <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="7" side_tool="false" content_ui="tabs" />
151
- <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
152
- <window_info id="Message" 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" />
153
- <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
154
- <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
155
- <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
156
- <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
157
- <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
158
- </layout>
159
- </component>
160
- <component name="Vcs.Log.UiProperties">
161
- <option name="RECENTLY_FILTERED_USER_GROUPS">
162
- <collection />
163
- </option>
164
- </component>
165
- <component name="VcsContentAnnotationSettings">
166
- <option name="myLimit" value="2678400000" />
167
- </component>
168
- <component name="VcsManagerConfiguration">
169
- <option name="myTodoPanelSettings">
170
- <TodoPanelSettings />
171
- </option>
172
- </component>
173
- <component name="XDebuggerManager">
174
- <breakpoint-manager />
175
- </component>
176
- <component name="editorHistoryManager">
177
- <entry file="file://$PROJECT_DIR$/eps-301-redirects.php">
178
- <provider selected="true" editor-type-id="text-editor">
179
- <state line="552" column="21" selection-start="0" selection-end="16892" vertical-scroll-proportion="0.0" vertical-offset="11705" max-vertical-offset="12826">
180
- <folding>
181
- <element signature="e#6#533#0" expanded="true" />
182
- <marker date="1430664107000" expanded="true" signature="-1:-1" placeholder="SELECT * FRO..$table_name ORDER..." />
183
- <marker date="1430664107000" expanded="true" signature="-1:-1" placeholder="UPDATE $tabl..." />
184
- </folding>
185
- </state>
186
- </provider>
187
- </entry>
188
- <entry file="file://$PROJECT_DIR$/libs/eps-plugin-options.php">
189
- <provider selected="true" editor-type-id="text-editor">
190
- <state line="194" column="7" selection-start="4530" selection-end="4530" vertical-scroll-proportion="0.0" vertical-offset="4268" max-vertical-offset="6974" />
191
- </provider>
192
- </entry>
193
- <entry file="file://$PROJECT_DIR$/libs/eps-plugin-options.php">
194
- <provider selected="true" editor-type-id="text-editor">
195
- <state line="170" column="5" selection-start="3901" selection-end="3901" vertical-scroll-proportion="0.0" vertical-offset="3740" max-vertical-offset="6974" />
196
- </provider>
197
- </entry>
198
- <entry file="file://$PROJECT_DIR$/libs/eps-plugin-options.php">
199
- <provider selected="true" editor-type-id="text-editor">
200
- <state line="219" column="48" selection-start="5361" selection-end="5361" vertical-scroll-proportion="0.29385576" vertical-offset="4268" max-vertical-offset="6974" />
201
- </provider>
202
- </entry>
203
- <entry file="file://$PROJECT_DIR$/eps-form-elements.php">
204
- <provider selected="true" editor-type-id="text-editor">
205
- <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="3916" />
206
- </provider>
207
- </entry>
208
- <entry file="file://$PROJECT_DIR$/class.drop-down-pages.php">
209
- <provider selected="true" editor-type-id="text-editor">
210
- <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1606">
211
- <folding />
212
- </state>
213
- </provider>
214
- </entry>
215
- <entry file="file://$PROJECT_DIR$/plugin.php">
216
- <provider selected="true" editor-type-id="text-editor">
217
- <state line="13" column="51" selection-start="263" selection-end="263" vertical-scroll-proportion="0.13898917" vertical-offset="0" max-vertical-offset="9438">
218
- <folding />
219
- </state>
220
- </provider>
221
- </entry>
222
- <entry file="file://$PROJECT_DIR$/readme.txt">
223
- <provider selected="true" editor-type-id="text-editor">
224
- <state line="12" column="17" selection-start="174" selection-end="174" vertical-scroll-proportion="0.23891403" vertical-offset="0" max-vertical-offset="4686">
225
- <folding />
226
- </state>
227
- </provider>
228
- <provider editor-type-id="com.intellij.persistence.database.editor.CsvTableFileEditorProvider">
229
- <state />
230
- </provider>
231
- </entry>
232
- <entry file="file://$PROJECT_DIR$/eps-301-redirects.php">
233
- <provider selected="true" editor-type-id="text-editor">
234
- <state line="116" column="9" selection-start="3428" selection-end="3428" vertical-scroll-proportion="0.43175736" vertical-offset="2068" max-vertical-offset="12826">
235
- <folding>
236
- <element signature="e#6#533#0" expanded="true" />
237
- <marker date="1430664107000" expanded="true" signature="-1:-1" placeholder="SELECT * FRO..$table_name ORDER..." />
238
- <marker date="1430664107000" expanded="true" signature="-1:-1" placeholder="UPDATE $tabl..." />
239
- </folding>
240
- </state>
241
- </provider>
242
- </entry>
243
- </component>
244
- </project>
245
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/eps_redirect.css CHANGED
@@ -261,6 +261,21 @@ select.eps-small-select { display: inline-block; }
261
 
262
  .padding { padding: 16px; }
263
  .padding-lots { padding: 32px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  /*----------------------------------------------------------*/
265
  /*-------------------- media queries ---------------------*/
266
  /*----------------------------------------------------------*/
261
 
262
  .padding { padding: 16px; }
263
  .padding-lots { padding: 32px; }
264
+
265
+
266
+ .eps-notice {
267
+ padding: 16px;
268
+ margin: 6px auto;
269
+ background: white;
270
+ box-shadow: 1px 1px 4px #dddddd;
271
+ border-left: 3px solid #888888;
272
+ font-weight: bold;
273
+ font-size: 14px;
274
+ }
275
+ .eps-notice.eps-warning {
276
+ border-left: 3px solid #940000;
277
+ color: #940000;
278
+ }
279
  /*----------------------------------------------------------*/
280
  /*-------------------- media queries ---------------------*/
281
  /*----------------------------------------------------------*/
eps-301-redirects.php CHANGED
@@ -15,7 +15,7 @@
15
  *
16
  * @package EPS 301 Redirects
17
  * @author Shawn Wernig ( shawn@eggplantstudios.ca )
18
- * @version 2.2.2
19
  */
20
 
21
 
@@ -25,7 +25,7 @@
25
  Plugin Name: Eggplant 301 Redirects
26
  Plugin URI: http://www.eggplantstudios.ca
27
  Description: Create your own 301 redirects using this powerful plugin.
28
- Version: 2.2.2
29
  Author: Shawn Wernig http://www.eggplantstudios.ca
30
  License: GPLv2 or later
31
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -37,7 +37,7 @@ if( ! defined( 'EPS_REDIRECT_PRO' ) )
37
 
38
  define ( 'EPS_REDIRECT_PATH', plugin_dir_path(__FILE__) );
39
  define ( 'EPS_REDIRECT_URL', plugin_dir_url( __FILE__ ) );
40
- define ( 'EPS_REDIRECT_VERSION', '2.2.2');
41
  define ( 'EPS_REDIRECT_PRO', false);
42
 
43
  include(EPS_REDIRECT_PATH.'eps-form-elements.php');
@@ -46,7 +46,8 @@ include(EPS_REDIRECT_PATH.'libs/eps-plugin.php');
46
  include(EPS_REDIRECT_PATH.'libs/eps-plugin-options.php');
47
  include(EPS_REDIRECT_PATH.'plugin.php');
48
 
49
-
 
50
 
51
  class EPS_Redirects {
52
 
@@ -151,6 +152,10 @@ class EPS_Redirects {
151
  *
152
  */
153
  private function format_from_url( $string ) {
 
 
 
 
154
  $complete = home_url() . '/' . $string;
155
  list($uprotocol,$uempty,$uhost,$from) = explode( '/', $complete, 4);
156
  $from = '/' . $from;
15
  *
16
  * @package EPS 301 Redirects
17
  * @author Shawn Wernig ( shawn@eggplantstudios.ca )
18
+ * @version 2.2.3
19
  */
20
 
21
 
25
  Plugin Name: Eggplant 301 Redirects
26
  Plugin URI: http://www.eggplantstudios.ca
27
  Description: Create your own 301 redirects using this powerful plugin.
28
+ Version: 2.2.3
29
  Author: Shawn Wernig http://www.eggplantstudios.ca
30
  License: GPLv2 or later
31
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
37
 
38
  define ( 'EPS_REDIRECT_PATH', plugin_dir_path(__FILE__) );
39
  define ( 'EPS_REDIRECT_URL', plugin_dir_url( __FILE__ ) );
40
+ define ( 'EPS_REDIRECT_VERSION', '2.2.3');
41
  define ( 'EPS_REDIRECT_PRO', false);
42
 
43
  include(EPS_REDIRECT_PATH.'eps-form-elements.php');
46
  include(EPS_REDIRECT_PATH.'libs/eps-plugin-options.php');
47
  include(EPS_REDIRECT_PATH.'plugin.php');
48
 
49
+ register_activation_hook( __FILE__, array('EPS_Redirects_Plugin', '_activation'));
50
+ register_deactivation_hook( __FILE__, array('EPS_Redirects_Plugin', '_deactivation'));
51
 
52
  class EPS_Redirects {
53
 
152
  *
153
  */
154
  private function format_from_url( $string ) {
155
+ //$from = home_url() . '/' . $string;
156
+ //return strtolower( rtrim( $from,'/') );
157
+
158
+
159
  $complete = home_url() . '/' . $string;
160
  list($uprotocol,$uempty,$uhost,$from) = explode( '/', $complete, 4);
161
  $from = '/' . $from;
libs/eps-plugin-options.php CHANGED
@@ -51,16 +51,63 @@ class EPS_Plugin_Options {
51
  *
52
  */
53
  private function build_settings() {
54
- $this->settings = $this->parse_json_from_url( $this->plugin->config('path') . 'options.json' );
55
  }
56
 
57
- private function parse_json_from_url( $uri )
58
  {
59
- $json = file_get_contents( $uri );
60
- $data = json_decode($json,true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  return $data;
62
  }
63
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  /**
65
  *
66
  * Build the setting slug based on section.
@@ -272,7 +319,7 @@ class EPS_Plugin_Options {
272
  if ( $this->tab_exists( $tab ) ) {
273
 
274
 
275
- if(has_action( $tab.'_admin_tab'))
276
  {
277
  do_action( $tab.'_admin_tab', $this->settings[$tab] );
278
  }
51
  *
52
  */
53
  private function build_settings() {
54
+ $this->settings = $this->read_settings( $this->plugin->config('path') . 'options.json' );
55
  }
56
 
57
+ private function read_settings( $uri )
58
  {
59
+ if( file_exists( $uri ) )
60
+ {
61
+ if ( is_readable( $uri ) )
62
+ {
63
+ $data = $this->read_json_from_file($uri);
64
+ }
65
+ else
66
+ {
67
+ chmod($uri, 0644);
68
+ $data = $this->read_json_from_file($uri);
69
+ if( $data )
70
+ {
71
+ $data = array(
72
+ 'error' => array(
73
+ "title" => "Oops!",
74
+ "description" => "An essential file (options.json) could not be read. Please check your folder permissions.",
75
+ "callback" => "error",
76
+ "fields" => []
77
+ )
78
+ );
79
+ }
80
+ }
81
+ }
82
+ else
83
+ {
84
+ $data = array(
85
+ 'error' => array(
86
+ "title" => "Oops!",
87
+ "description" => "An essential file (options.json) could not be found. Please re-install the plugin.",
88
+ "callback" => "error",
89
+ "fields" => []
90
+ )
91
+ );
92
+ }
93
+
94
+
95
  return $data;
96
  }
97
 
98
+ private function read_json_from_file($uri)
99
+ {
100
+ try
101
+ {
102
+ $json = file_get_contents( $uri );
103
+ return json_decode($json,true);
104
+ }
105
+ catch( Exception $e )
106
+ {
107
+ return false;
108
+ }
109
+ }
110
+
111
  /**
112
  *
113
  * Build the setting slug based on section.
319
  if ( $this->tab_exists( $tab ) ) {
320
 
321
 
322
+ if( has_action( $tab.'_admin_tab'))
323
  {
324
  do_action( $tab.'_admin_tab', $this->settings[$tab] );
325
  }
libs/eps-plugin.php CHANGED
@@ -8,8 +8,6 @@
8
  * @package EPS Boilerplate
9
  */
10
 
11
- require_once('eps-plugin-options.php');
12
-
13
  if( ! class_exists('EPS_Plugin') )
14
  {
15
  class EPS_Plugin {
@@ -52,10 +50,12 @@ if( ! class_exists('EPS_Plugin') )
52
  public function __construct(){
53
  $this->config['url'] = plugins_url() . $this->config['directory'] . '/';
54
  $this->config['path'] = ABSPATH . 'wp-content/plugins/' . $this->config['directory'] . '/';
55
- $this->settings = new EPS_Plugin_Options( $this );
56
 
57
- register_activation_hook( __FILE__, array($this->name, '_activation'));
58
- register_deactivation_hook( __FILE__, array($this->name, '_deactivation'));
 
 
 
59
  if ( !self::is_current_version() ) self::update_self();
60
  add_action('init', array($this, 'plugin_resources'));
61
  }
@@ -103,23 +103,23 @@ if( ! class_exists('EPS_Plugin') )
103
  file_put_contents($this->config('path'). '/error_activation.html', ob_get_contents());
104
  }
105
 
106
- public function _activation() {
107
  if ( !self::is_current_version() ) self::update_self();
108
  }
109
 
110
  public function _deactivation() {}
111
 
112
- public function is_current_version()
113
  {
114
- return version_compare( $this->current_version(), $this->config['version'], '=') ? true : false;
115
  }
116
- public function current_version()
117
  {
118
- return get_option( $this->config['option_slug'] . '_version' );
119
  }
120
- public function set_current_version( $version )
121
  {
122
- update_option( $this->config['option_slug'] . '_version', $version );
123
  }
124
  /**
125
  *
8
  * @package EPS Boilerplate
9
  */
10
 
 
 
11
  if( ! class_exists('EPS_Plugin') )
12
  {
13
  class EPS_Plugin {
50
  public function __construct(){
51
  $this->config['url'] = plugins_url() . $this->config['directory'] . '/';
52
  $this->config['path'] = ABSPATH . 'wp-content/plugins/' . $this->config['directory'] . '/';
 
53
 
54
+ if( class_exists('EPS_Plugin_Options') )
55
+ $this->settings = new EPS_Plugin_Options( $this );
56
+
57
+ register_activation_hook( __FILE__, array($this, '_activation'));
58
+ register_deactivation_hook( __FILE__, array($this, '_deactivation'));
59
  if ( !self::is_current_version() ) self::update_self();
60
  add_action('init', array($this, 'plugin_resources'));
61
  }
103
  file_put_contents($this->config('path'). '/error_activation.html', ob_get_contents());
104
  }
105
 
106
+ public static function _activation() {
107
  if ( !self::is_current_version() ) self::update_self();
108
  }
109
 
110
  public function _deactivation() {}
111
 
112
+ public static function is_current_version()
113
  {
114
+ return version_compare( self::current_version(), EPS_REDIRECT_VERSION, '=') ? true : false; // TODO decouple
115
  }
116
+ public static function current_version()
117
  {
118
+ return get_option( 'eps_redirects_version' ); // TODO decouple
119
  }
120
+ public static function set_current_version( $version )
121
  {
122
+ update_option( 'eps_redirects_version', $version );
123
  }
124
  /**
125
  *
plugin.php CHANGED
@@ -33,16 +33,24 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
33
  // Template Hooks
34
  add_action( 'redirects_admin_tab', array($this, 'admin_tab_redirects'), 10, 1 );
35
  add_action( '404s_admin_tab', array($this, 'admin_tab_404s'), 10, 1 );
 
36
  add_action( 'import-export_admin_tab', array($this, 'admin_tab_import_export'), 10, 1 );
37
  add_action( 'eps_redirects_panels_left', array($this, 'admin_panel_cache'));
38
  add_action( 'eps_redirects_panels_right', array($this, 'admin_panel_donate'));
39
- add_action('eps_redirects_admin_head', array($this, 'admin_header_notices'));
40
 
41
  // Actions
42
- add_action('admin_init', array($this, 'check_plugin_actions'));
 
 
43
 
44
  }
45
 
 
 
 
 
 
46
  /**
47
  *
48
  * update_self
@@ -55,9 +63,7 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
55
  */
56
  public function update_self()
57
  {
58
-
59
  $version = get_option( 'eps_redirects_version' );
60
- $this->_create_tables(); // Maybe create the tables
61
 
62
  if( version_compare($version, '2.0.0', '<')) {
63
  // migrate old format to new format.
@@ -107,7 +113,7 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
107
  * @author epstudios
108
  *
109
  */
110
- public function _create_tables()
111
  {
112
  global $wpdb;
113
 
@@ -322,7 +328,7 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
322
  }
323
  $save_redirects[] = $redirect;
324
  break;
325
- case 'ignore':
326
  $save_redirects[] = $redirect;
327
  break;
328
  }
@@ -376,6 +382,10 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
376
  {
377
  include ( EPS_REDIRECT_PATH . 'templates/admin-tab-import-export.php' );
378
  }
 
 
 
 
379
 
380
  public static function admin_header_notices()
381
  {
33
  // Template Hooks
34
  add_action( 'redirects_admin_tab', array($this, 'admin_tab_redirects'), 10, 1 );
35
  add_action( '404s_admin_tab', array($this, 'admin_tab_404s'), 10, 1 );
36
+ add_action( 'error_admin_tab', array($this, 'admin_tab_error'), 10, 1 );
37
  add_action( 'import-export_admin_tab', array($this, 'admin_tab_import_export'), 10, 1 );
38
  add_action( 'eps_redirects_panels_left', array($this, 'admin_panel_cache'));
39
  add_action( 'eps_redirects_panels_right', array($this, 'admin_panel_donate'));
40
+ add_action( 'eps_redirects_admin_head', array($this, 'admin_header_notices'));
41
 
42
  // Actions
43
+ add_action( 'admin_init', array($this, 'check_plugin_actions'));
44
+
45
+
46
 
47
  }
48
 
49
+ public static function _activation()
50
+ {
51
+ self::_create_redirect_table(); // Maybe create the tables
52
+ if ( !self::is_current_version() ) self::update_self();
53
+ }
54
  /**
55
  *
56
  * update_self
63
  */
64
  public function update_self()
65
  {
 
66
  $version = get_option( 'eps_redirects_version' );
 
67
 
68
  if( version_compare($version, '2.0.0', '<')) {
69
  // migrate old format to new format.
113
  * @author epstudios
114
  *
115
  */
116
+ public static function _create_redirect_table()
117
  {
118
  global $wpdb;
119
 
328
  }
329
  $save_redirects[] = $redirect;
330
  break;
331
+ default:
332
  $save_redirects[] = $redirect;
333
  break;
334
  }
382
  {
383
  include ( EPS_REDIRECT_PATH . 'templates/admin-tab-import-export.php' );
384
  }
385
+ public static function admin_tab_error( $options )
386
+ {
387
+ include ( EPS_REDIRECT_PATH . 'templates/admin-tab-error.php' );
388
+ }
389
 
390
  public static function admin_header_notices()
391
  {
readme.txt CHANGED
@@ -10,7 +10,7 @@ Requires at least: 3.0.1
10
 
11
  Tested up to: 4.2.1
12
 
13
- Stable tag: 2.2.2
14
 
15
  License: GPLv2 or later
16
 
@@ -116,6 +116,10 @@ By default, any URL with a query string is considered unique, and will redirect
116
 
117
  == Changelog ==
118
 
 
 
 
 
119
  = 2.2.0 =
120
  Minor bug fixes. Greatly improved import feature. Redirects include query strings. Export feature added. Http/Https agnostic. Pro version added with 404 management.
121
 
@@ -164,6 +168,9 @@ Overhauled the entire plugin. Redirects are stored in their own table. Gracefull
164
 
165
  == Upgrade Notice ==
166
 
 
 
 
167
  = 2.2.0 =
168
  Minor bug fixes. Greatly improved import feature, added Export feature plus many other updates. A Pro Version is now available with 404 Management!
169
 
10
 
11
  Tested up to: 4.2.1
12
 
13
+ Stable tag: 2.2.3
14
 
15
  License: GPLv2 or later
16
 
116
 
117
  == Changelog ==
118
 
119
+ = 2.2.3 =
120
+ Fixed an issue where the redirect database tables were not being created, causing 'Invalid Destination URL' errors.
121
+
122
+
123
  = 2.2.0 =
124
  Minor bug fixes. Greatly improved import feature. Redirects include query strings. Export feature added. Http/Https agnostic. Pro version added with 404 management.
125
 
168
 
169
  == Upgrade Notice ==
170
 
171
+ = 2.2.3 =
172
+ Fixed an issue where the redirect database tables were not being created, causing 'Invalid Destination URL' errors.
173
+
174
  = 2.2.0 =
175
  Minor bug fixes. Greatly improved import feature, added Export feature plus many other updates. A Pro Version is now available with 404 Management!
176
 
templates/admin-tab-error.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ *
4
+ * The Redirects Tab.
5
+ *
6
+ * The main admin area for the redirects tab.
7
+ *
8
+ * @package EPS 301 Redirects
9
+ * @author Shawn Wernig ( shawn@eggplantstudios.ca )
10
+ */
11
+ ?>
12
+
13
+
14
+ <div class="wrap">
15
+ <?php do_action('eps_redirects_admin_head'); ?>
16
+
17
+ <div class="eps-notice eps-warning">
18
+ <?php echo $options['description']; ?>
19
+ </div>
20
+
21
+
22
+ <div class="right">
23
+ <?php do_action('eps_redirects_panels_right'); ?>
24
+ </div>
25
+ <div class="left">
26
+ <?php do_action('eps_redirects_panels_left'); ?>
27
+ </div>
28
+ </div>
29
+
30
+
31
+
32
+
templates/admin-tab-import-export.php CHANGED
@@ -23,7 +23,6 @@
23
  <p>
24
  <input type="radio" name="eps_redirect_upload_method" value="skip" checked="checked"> Skip Duplicates
25
  &nbsp;&nbsp;&nbsp;<input type="radio" name="eps_redirect_upload_method" value="update"> Update Duplicates
26
- &nbsp;&nbsp;&nbsp;<input type="radio" name="eps_redirect_upload_method" value="ignore"> Ignore Duplicates
27
  </p>
28
 
29
  <br><small class="eps-grey-text">Supply Columns: <strong>Status</strong> (301,302,inactive), <strong>Request URL</strong>, <strong>Redirect To</strong> (ID or URL). <a href="<?php echo EPS_REDIRECT_URL . 'example.csv'?>" target="_blank">Download Example CSV</a></small>
23
  <p>
24
  <input type="radio" name="eps_redirect_upload_method" value="skip" checked="checked"> Skip Duplicates
25
  &nbsp;&nbsp;&nbsp;<input type="radio" name="eps_redirect_upload_method" value="update"> Update Duplicates
 
26
  </p>
27
 
28
  <br><small class="eps-grey-text">Supply Columns: <strong>Status</strong> (301,302,inactive), <strong>Request URL</strong>, <strong>Redirect To</strong> (ID or URL). <a href="<?php echo EPS_REDIRECT_URL . 'example.csv'?>" target="_blank">Download Example CSV</a></small>