wp_wrapper 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 858f744a53e8e3ebd14527c1a7124e016ba6fc17
4
- data.tar.gz: fa66f22243190ae96dbb0c2e55b5dbae21928741
2
+ SHA256:
3
+ metadata.gz: 3e362d33e278825bbab4a85b2161ba17b53591b42b8b2a2424e99e0a9a0ff78c
4
+ data.tar.gz: 1ca4a325336463bdc0246072ab56b7a8d0ff2a7b573b26a7ed195a3f8b86c9d1
5
5
  SHA512:
6
- metadata.gz: 267c0915a66ce598ebe617a4a942210f30af6a9588041be2a8feaa9be2780831586ef7d5fa1b050d768d2e0ab94445fad2a7604fa0edc6820821861d4f5393fb
7
- data.tar.gz: 622ce493debf0a3cdf956ef65f8e3ee8510134f70dca56665719d6b0aba4f2dd1eb15c3791bef971a7c7e082a9d5d702582a765fcd9423aa61761e49e6e110fc
6
+ metadata.gz: 980890aeb6515d2835261e7ae34757abfcb1f48ec614b157752f3871f00e7ff9cec4ac421513724c11578e321459c5977da0974b180ad5082cb77cbfe2eca795
7
+ data.tar.gz: 15cac8b3a3464d788664c09518b815793888df55c8a50d71a182e5e162a1107c19c58284fa54fa3bcb4c1755e86fd22abf00a64df68015e9709e59a411e3d4c5
@@ -57,8 +57,7 @@ module WpWrapper
57
57
 
58
58
  def set_options_and_submit(url, form_identifier = {}, fields = {}, submit_identifier = :first, options = {})
59
59
  login unless logged_in?
60
-
61
- form_page_url = "#{get_url(:admin)}/#{url}"
60
+ form_page_url = "#{get_url(:admin)}#{url}"
62
61
  response = self.mechanize_client.set_form_and_submit(form_page_url, form_identifier, submit_identifier, fields, options)
63
62
  end
64
63
 
@@ -1,47 +1,63 @@
1
1
  module WpWrapper
2
2
  module Modules
3
-
4
3
  module Authorization
5
4
 
6
- def login(retries = 3)
7
- success = logged_in?
8
-
9
- if (!success && retries > 0)
5
+ def login(force: false, retries: 3)
6
+ success = force ? false : logged_in?
7
+
8
+ if !success
10
9
  login_page = self.mechanize_client.open_url(get_url(:admin))
11
10
  agent = self.mechanize_client.agent
12
11
 
13
- if (login_page)
14
- login_form = login_page.form_with(:name => 'loginform')
12
+ if login_page
13
+ upgraded = upgrade_if_necessary(login_page)
14
+ login(retries) if upgraded
15
+
16
+ login_form = login_page.form_with(name: 'loginform')
15
17
 
16
- if (login_form)
17
- login_form.field_with(:name => 'log').value = self.username
18
- login_form.field_with(:name => 'pwd').value = self.password
18
+ if login_form
19
+ login_form.field_with(name: 'log').value = self.username
20
+ login_form.field_with(name: 'pwd').value = self.password
19
21
 
20
22
  begin
21
23
  logged_in_page = login_form.submit
22
- log_out_link = logged_in_page.link_with(:href => /wp-login\.php\?action=logout/i)
24
+ log_out_link = logged_in_page.link_with(href: /wp-login\.php\?action=logout/i)
23
25
  self.logged_in = !log_out_link.nil?
24
26
  success = self.logged_in
25
27
 
26
- puts "#{Time.now}: Url: #{self.url}. Successfully logged in? #{self.logged_in}"
28
+ puts "[WpWrapper::Modules::Authorization] - #{Time.now}: Url: #{self.url}. Successfully logged in? #{self.logged_in}"
27
29
 
28
30
  rescue Exception => e
29
- puts "#{Time.now}: Url: #{self.url}. Failed to login. Error Class: #{e.class.name}. Error Message: #{e.message}"
30
- login(retries - 1) if retries > 0
31
+ puts "[WpWrapper::Modules::Authorization] - #{Time.now}: Url: #{self.url}. Failed to login. Error Class: #{e.class.name}. Error Message: #{e.message}"
32
+ login(force: force, retries: retries - 1) if retries > 0
31
33
  raise WpWrapper::FailedLoginException, "Failed to login" if retries <= 0 && self.reraise_exceptions
32
34
  end
33
35
 
34
36
  else
35
- puts "\n\n#{Time.now}: Url: #{self.url}. Something's broken! Can't find wp-admin login form! Retrying...\n\n"
36
- login(retries - 1) if retries > 0
37
+ puts "[WpWrapper::Modules::Authorization] - #{Time.now}: Url: #{self.url}. Something's broken! Can't find wp-admin login form! Retrying...\n\n"
38
+ login(force: force, retries: retries - 1) if retries > 0
39
+ raise WpWrapper::FailedLoginException, "Failed to login" if retries <= 0 && self.reraise_exceptions
37
40
  end
38
41
  end
39
42
  end
43
+
44
+ success = !(retries <= 0)
40
45
 
41
46
  return success
42
47
  end
48
+
49
+ def upgrade_if_necessary(page)
50
+ upgraded = false
51
+ upgrade_link = page.link_with(href: /upgrade\.php/i)
52
+
53
+ if upgrade_link
54
+ upgrade_link.click
55
+ upgraded = true
56
+ end
57
+
58
+ return upgraded
59
+ end
43
60
 
44
61
  end
45
-
46
62
  end
47
- end
63
+ end
@@ -12,6 +12,8 @@ module WpWrapper
12
12
  end
13
13
 
14
14
  def configure_general_settings(caching_mechanism, options = {})
15
+ login unless logged_in?
16
+
15
17
  caching_options = {}
16
18
  cache_sections = [:pg, :db, :object]
17
19
 
@@ -49,11 +51,19 @@ module WpWrapper
49
51
  }
50
52
 
51
53
  caching_options.merge!(varnish_options)
54
+
55
+ fragment_options = {
56
+ "fragmentcache___engine" => {:value => caching_mechanism, :type => :select},
57
+ }
58
+
59
+ caching_options.merge!(fragment_options)
52
60
 
53
61
  return set_options_and_submit(url, form_identifier, caching_options, button_identifier)
54
62
  end
55
63
 
56
64
  def configure_page_cache
65
+ login unless logged_in?
66
+
57
67
  url = "admin.php?page=w3tc_pgcache"
58
68
  form_identifier = {:action => /admin\.php\?page=w3tc_pgcache/i, :index => 1}
59
69
  button_identifier = {:name => 'w3tc_default_save_and_flush'}
@@ -66,6 +76,8 @@ module WpWrapper
66
76
  end
67
77
 
68
78
  def configure_minification(options = {})
79
+ login unless logged_in?
80
+
69
81
  url = "admin.php?page=w3tc_minify"
70
82
  form_identifier = {:action => /admin\.php\?page=w3tc_minify/i, :index => 1}
71
83
  button_identifier = {:name => 'w3tc_default_save_and_flush'}
@@ -90,6 +102,8 @@ module WpWrapper
90
102
  end
91
103
 
92
104
  def configure_browser_cache
105
+ login unless logged_in?
106
+
93
107
  options = {}
94
108
 
95
109
  url = "admin.php?page=w3tc_browsercache"
@@ -114,6 +128,8 @@ module WpWrapper
114
128
  end
115
129
 
116
130
  def activate_configuration
131
+ login unless logged_in?
132
+
117
133
  url = "#{get_url(:admin)}admin.php?page=w3tc_general"
118
134
  page = self.mechanize_client.get_page(url)
119
135
 
@@ -8,87 +8,69 @@ module WpWrapper
8
8
  def configure_wordpress_seo(language = :sv)
9
9
  login unless logged_in?
10
10
 
11
- options = get_author_options
11
+ puts "[WpWrapper::Modules::Plugins::WordpressSeo] - #{Time.now}: Starting configuration of Wordpress SEO / Yoast SEO."
12
12
 
13
- options.merge!(get_taxonomy_options)
14
- options.merge!(get_title_options(language))
15
-
16
- url = "#{get_url(:admin)}/admin.php?page=wpseo_titles"
13
+ enable_wordpress_seo_settings_page
14
+ configure_wordpress_seo_titles(language)
15
+ #configure_wordpress_seo_advanced_options
16
+ end
17
17
 
18
- page = self.mechanize_client.get_page(url)
19
- form = self.mechanize_client.get_form(page, {:action => /wp-admin\/options\.php/i})
18
+ def enable_wordpress_seo_settings_page
19
+ login unless logged_in?
20
20
 
21
- if (form)
22
- options.each do |key, values|
23
- case values[:type]
24
- when :input
25
- form[key] = values[:value]
26
- when :checkbox
27
- form[key] = "on" if values[:checked]
28
- end
29
- end
21
+ page = self.mechanize_client.get_page("#{get_url(:admin)}admin.php?page=wpseo_dashboard")
22
+ form = self.mechanize_client.get_form(page, {action: /wp-admin\/options\.php/i})
30
23
 
31
- form.submit
32
- end
24
+ options = {
25
+ "wpseo[enable_setting_pages]" => {:type => :checkbox, :checked => true},
26
+ "wpseo[show_onboarding_notice]" => {:type => :checkbox, :checked => false}
27
+ }
33
28
 
29
+ response = submit_wordpress_seo_form(form, options)
34
30
  end
35
31
 
36
- def get_author_options
37
- options = {
38
- "wpseo_titles[noindex-author-wpseo]" => {:type => :checkbox, :checked => true},
39
- "wpseo_titles[disable-author]" => {:type => :checkbox, :checked => true},
40
- }
41
- end
32
+ def configure_wordpress_seo_titles(language = :sv)
33
+ login unless logged_in?
42
34
 
43
- def get_taxonomy_options
44
- options = {
45
- "wpseo_titles[noindex-tax-category]" => {:type => :checkbox, :checked => true},
46
- "wpseo_titles[noindex-tax-post_tag]" => {:type => :checkbox, :checked => true},
47
- "wpseo_titles[noindex-tax-post_format]" => {:type => :checkbox, :checked => true},
48
- }
35
+ options = get_title_options(language)
36
+ options.merge!(get_media_options)
37
+ options.merge!(get_taxonomy_options)
38
+ options.merge!(get_archive_options)
39
+ options.merge!(get_other_options)
40
+
41
+ url = "#{get_url(:admin)}admin.php?page=wpseo_titles"
42
+ page = self.mechanize_client.get_page(url)
43
+ form = self.mechanize_client.get_form(page, {action: /wp-admin\/options\.php/i})
49
44
 
50
- return options
45
+ response = submit_wordpress_seo_form(form, options)
51
46
  end
52
47
 
53
- def get_title_options(language = :sv)
54
- options = {
55
- "wpseo_titles[forcerewritetitle]" => {:type => :checkbox, :checked => true},
56
- "wpseo_titles[title-home]" => {:type => :input, :value => '%%sitename%% %%page%%'},
57
- "wpseo_titles[title-search]" => {:type => :input, :value => translate_pattern(:search, language)},
58
- "wpseo_titles[title-404]" => {:type => :input, :value => translate_pattern(:not_found, language)}
59
- }
60
-
61
- standard_pattern = '%%title%% %%page%% %%sep%% %%sitename%%'
62
- standard_term_pattern = translate_pattern(:term, language)
63
-
64
- types = {
65
- :post => {:pattern => standard_pattern, :noindex => false},
66
- :page => {:pattern => standard_pattern, :noindex => false},
67
- :attachment => {:pattern => standard_pattern, :noindex => true},
68
- :wooframework => {:pattern => standard_pattern, :noindex => false},
69
- :category => {:pattern => standard_term_pattern, :noindex => false},
70
- :post_tag => {:pattern => standard_term_pattern, :noindex => true},
71
- :post_format => {:pattern => standard_term_pattern, :noindex => true},
72
- :author => {:pattern => translate_pattern(:author, language), :noindex => true},
73
- :archive => {:pattern => '%%date%% %%page%% %%sep%% %%sitename%%', :noindex => true},
74
- }
48
+ # Deprecated?
49
+ def configure_wordpress_seo_advanced_options
50
+ login unless logged_in?
75
51
 
76
- types.each do |key, values|
77
- type_options = {
78
- "wpseo_titles[title-#{key}]" => {:type => :input, :value => values[:pattern]},
79
- "wpseo_titles[noindex-#{key}]" => {:type => :checkbox, :checked => values[:noindex]}
80
- }
81
-
82
- options.merge!(type_options)
83
- end
52
+ configure_wordpress_seo_permalinks
53
+ end
54
+
55
+ # Deprecated?
56
+ def configure_wordpress_seo_permalinks
57
+ url = "#{get_url(:admin)}admin.php?page=wpseo_advanced&tab=permalinks"
58
+ page = self.mechanize_client.get_page(url)
59
+ form = self.mechanize_client.get_form(page, {:action => /wp-admin\/options\.php/i})
60
+
61
+ options = {
62
+ "wpseo_permalinks[redirectattachment]" => {:type => :checkbox, :checked => true},
63
+ "wpseo_permalinks[cleanreplytocom]" => {:type => :checkbox, :checked => true}
64
+ }
84
65
 
85
- return options
66
+ response = submit_wordpress_seo_form(form, options)
86
67
  end
87
68
 
88
- def configure_wordpress_seo_sitemaps(not_included_post_types: [], not_included_taxonomies: [], disable_author_sitemap: true)
69
+ # Deprecated?
70
+ def configure_wordpress_seo_sitemaps(not_included_post_types: [:attachment], not_included_taxonomies: [:category, :post_tag, :post_format], disable_author_sitemap: true)
89
71
  login unless logged_in?
90
-
91
- url = "#{get_url(:admin)}/admin.php?page=wpseo_xml"
72
+
73
+ url = "#{get_url(:admin)}admin.php?page=wpseo_xml"
92
74
  page = self.mechanize_client.get_page(url)
93
75
  form = self.mechanize_client.get_form(page, {:action => /wp-admin\/options\.php/i})
94
76
 
@@ -96,7 +78,7 @@ module WpWrapper
96
78
  "wpseo_xml[enablexmlsitemap]" => {:type => :checkbox, :checked => true}
97
79
  }
98
80
 
99
- if (disable_author_sitemap)
81
+ if disable_author_sitemap
100
82
  options["wpseo_xml[disable_author_sitemap]"] = {:type => :checkbox, :checked => true}
101
83
  end
102
84
 
@@ -116,33 +98,114 @@ module WpWrapper
116
98
  options.merge!(taxonomy_options)
117
99
  end
118
100
 
119
- if (form)
120
- options.each do |key, values|
121
- case values[:type]
122
- when :input
123
- form[key] = values[:value] if (form.has_field?(key))
124
- when :checkbox
125
- form.checkbox_with(name: key).check rescue nil if values[:checked]
101
+ response = submit_wordpress_seo_form(form, options)
102
+ end
103
+
104
+ private
105
+ def submit_wordpress_seo_form(form, options)
106
+ page = nil
107
+
108
+ if form
109
+ options.each do |key, values|
110
+ case values[:type]
111
+ when :input
112
+ form[key] = values[:value]
113
+ when :checkbox, :radiobutton
114
+ value = values[:checked] ? "on" : "off"
115
+ form[key] = value
116
+ end
126
117
  end
118
+
119
+ page = form.submit
127
120
  end
128
121
 
129
- form.submit
122
+ return page
123
+ end
124
+
125
+ def get_title_options(language = :sv)
126
+ options = {
127
+ "wpseo_titles[title-home-wpseo]" => {:type => :input, :value => '%%sitename%% %%page%%'},
128
+ "wpseo_titles[title-search-wpseo]" => {:type => :input, :value => translate_pattern(:search, language)},
129
+ "wpseo_titles[title-404-wpseo]" => {:type => :input, :value => translate_pattern(:not_found, language)}
130
+ }
131
+
132
+ standard_pattern = '%%title%% %%page%% %%sep%% %%sitename%%'
133
+ standard_term_pattern = translate_pattern(:term, language)
134
+
135
+ types = {
136
+ :post => {:pattern => standard_pattern, :noindex => false},
137
+ :page => {:pattern => standard_pattern, :noindex => false},
138
+ :attachment => {:pattern => standard_pattern, :noindex => true},
139
+ :category => {:pattern => standard_term_pattern, :noindex => true},
140
+ :post_tag => {:pattern => standard_term_pattern, :noindex => true},
141
+ :post_format => {:pattern => standard_term_pattern, :noindex => true},
142
+ :author => {:pattern => translate_pattern(:author, language), :noindex => true},
143
+ :archive => {:pattern => '%%date%% %%page%% %%sep%% %%sitename%%', :noindex => true},
144
+ }
145
+
146
+ extra_types = {
147
+ :wooframework => {:pattern => standard_pattern, :noindex => true},
148
+ }
149
+
150
+ types.merge!(extra_types)
151
+
152
+ types.each do |key, values|
153
+ form_key = [:category, :post_tag, :post_format].include?(key) ? "tax-#{key}" : key
154
+ form_key = [:author, :archive].include?(key) ? "#{form_key}-wpseo" : form_key
155
+
156
+ type_options = {
157
+ "wpseo_titles[title-#{form_key}]" => {:type => :input, :value => values[:pattern]},
158
+ "wpseo_titles[noindex-#{form_key}]" => {:type => :checkbox, :checked => values[:noindex]}
159
+ }
160
+
161
+ options.merge!(type_options)
162
+ end
163
+
164
+ return options
165
+ end
166
+
167
+ def get_media_options
168
+ options = {
169
+ "wpseo_titles[disable-attachment]" => {:type => :checkbox, :checked => true},
170
+ }
171
+
172
+ return options
173
+ end
174
+
175
+ def get_taxonomy_options
176
+ options = {
177
+ "wpseo_titles[disable-post_format]" => {:type => :checkbox, :checked => true},
178
+ }
179
+
180
+ return options
181
+ end
182
+
183
+ def get_archive_options
184
+ options = {
185
+ "wpseo_titles[disable-author]" => {:type => :checkbox, :checked => true},
186
+ "wpseo_titles[disable-date]" => {:type => :checkbox, :checked => true},
187
+ }
188
+ end
189
+
190
+ def get_other_options
191
+ options = {
192
+ "wpseo_titles[noindex-subpages-wpseo]" => {:type => :checkbox, :checked => true},
193
+ }
130
194
  end
131
- end
132
195
 
133
- #Retarded method for now, look into I18n later
134
- def translate_pattern(key, language = :en)
135
- case key
136
- when :search
137
- language.eql?(:sv) ? 'Du sökte efter %%searchphrase%% %%page%% %%sep%% %%sitename%%' : 'You searched for %%searchphrase%% %%page%% %%sep%% %%sitename%%'
138
- when :not_found
139
- language.eql?(:sv) ? 'Sidan kunde inte hittas %%sep%% %%sitename%%' : 'Page Not Found %%sep%% %%sitename%%'
140
- when :author
141
- language.eql?(:sv) ? '%%name%%, Författare %%sitename%% %%page%%' : '%%name%%, Author at %%sitename%% %%page%%'
142
- when :term
143
- language.eql?(:sv) ? '%%term_title%% Arkiv %%page%% %%sep%% %%sitename%%' : '%%term_title%% Archives %%page%% %%sep%% %%sitename%%'
196
+ #Retarded method for now, look into I18n later
197
+ def translate_pattern(key, language = :en)
198
+ case key
199
+ when :search
200
+ language.eql?(:sv) ? 'Du sökte efter %%searchphrase%% %%page%% %%sep%% %%sitename%%' : 'You searched for %%searchphrase%% %%page%% %%sep%% %%sitename%%'
201
+ when :not_found
202
+ language.eql?(:sv) ? 'Sidan kunde inte hittas %%sep%% %%sitename%%' : 'Page Not Found %%sep%% %%sitename%%'
203
+ when :author
204
+ language.eql?(:sv) ? '%%name%%, Författare %%sitename%% %%page%%' : '%%name%%, Author at %%sitename%% %%page%%'
205
+ when :term
206
+ language.eql?(:sv) ? '%%term_title%% Arkiv %%page%% %%sep%% %%sitename%%' : '%%term_title%% Archives %%page%% %%sep%% %%sitename%%'
207
+ end
144
208
  end
145
- end
146
209
 
147
210
  end
148
211
  end
@@ -8,45 +8,42 @@ module WpWrapper
8
8
  include ::WpWrapper::Modules::Plugins::TrackingCode
9
9
 
10
10
  def manage_plugins(plugin_identifiers, action = :activate)
11
- plugin_identifiers = (plugin_identifiers.is_a?(Array)) ? plugin_identifiers : [plugin_identifiers.to_s]
11
+ login unless logged_in?
12
+
13
+ plugin_identifiers = (plugin_identifiers.is_a?(Array)) ? plugin_identifiers : [plugin_identifiers.to_s]
12
14
 
13
15
  plugin_identifiers.each do |plugin_identifier|
14
16
  manage_plugin(plugin_identifier, action)
15
- end
17
+ end if plugin_identifiers && plugin_identifiers.any?
16
18
  end
17
19
 
18
20
  def manage_plugin(plugin_identifier, action = :activate)
19
- success = false
20
-
21
- if (login)
22
- activation_link = nil
23
- plugins_page = self.mechanize_client.open_url(get_url(:plugins))
21
+ success = false
24
22
 
25
- if (plugins_page)
26
- plugin_links = plugins_page.parser.css("table.plugins tbody tr td span.#{action} a")
27
- regex = Regexp.new("plugin=#{plugin_identifier}", Regexp::IGNORECASE)
28
-
29
- plugin_links.each do |link|
30
- href = link["href"]
23
+ activation_link = nil
24
+ plugins_page = self.mechanize_client.open_url(get_url(:plugins))
25
+
26
+ if plugins_page
27
+ plugin_links = plugins_page.parser.css("table.plugins tbody tr td span.#{action} a")
28
+ regex = Regexp.new("plugin=#{plugin_identifier}", Regexp::IGNORECASE)
31
29
 
32
- if (regex.match(href))
33
- activation_link = href
34
- break
35
- end
36
- end if (plugin_links && plugin_links.any?)
37
-
38
- if (activation_link && activation_link.present?)
39
- url = "#{get_url(:admin)}/#{activation_link}"
40
- self.mechanize_client.open_url(url)
41
- puts "#{Time.now}: Url: #{self.url}. Plugin '#{plugin_identifier}' has been #{action}d!"
42
- success = true
43
- else
44
- puts "#{Time.now}: Url: #{self.url}. Couldn't find the plugin #{plugin_identifier}'s #{action}-link."
30
+ plugin_links.each do |link|
31
+ href = link["href"]
32
+
33
+ if regex.match(href)
34
+ activation_link = href
35
+ break
45
36
  end
46
-
37
+ end if plugin_links && plugin_links.any?
38
+
39
+ if activation_link && activation_link.present?
40
+ url = "#{get_url(:admin)}#{activation_link}"
41
+ self.mechanize_client.open_url(url)
42
+ puts "[WpWrapper::Modules::Plugins] - #{Time.now}: Url: #{self.url}. Plugin '#{plugin_identifier}' has been #{action}d!"
43
+ success = true
44
+ else
45
+ puts "[WpWrapper::Modules::Plugins] - #{Time.now}: Url: #{self.url}. Couldn't find the plugin #{plugin_identifier}'s #{action}-link."
47
46
  end
48
- else
49
- puts "#{Time.now}: Failed to login for url #{self.url}, will not proceed to #{action} plugins"
50
47
  end
51
48
 
52
49
  return success
@@ -35,11 +35,11 @@ module WpWrapper
35
35
 
36
36
  confirmation_page = setup_form.submit
37
37
 
38
- puts "#{Time.now}: Url: #{self.url}. The WordPress-blog has now been installed!"
38
+ puts "[WpWrapper::Modules::Setup] - #{Time.now}: Url: #{self.url}. The WordPress-blog has now been installed!"
39
39
  success = true
40
40
  else
41
- puts "#{Time.now}: Url: #{self.url}. The blog has already been setup or the registration form couldn't be found or some data is missing."
42
- puts "#{Time.now}: Url: #{self.url}. Information supplied:\nTitle: #{title}.\nUsername: #{self.username}.\nPassword: #{self.password}.\nEmail: #{email}."
41
+ puts "[WpWrapper::Modules::Setup] - #{Time.now}: Url: #{self.url}. The blog has already been setup or the registration form couldn't be found or some data is missing."
42
+ puts "[WpWrapper::Modules::Setup] - #{Time.now}: Url: #{self.url}. Information supplied:\nTitle: #{title}.\nUsername: #{self.username}.\nPassword: #{self.password}.\nEmail: #{email}."
43
43
  end
44
44
 
45
45
  return success
@@ -2,25 +2,25 @@ module WpWrapper
2
2
  module Modules
3
3
  module Themes
4
4
 
5
- def activate_random_theme
6
- theme_links = get_theme_links
7
- random_link = (theme_links && theme_links.any?) ? theme_links.to_a.sample : nil
5
+ def activate_random_theme(ignore_themes: [])
6
+ theme_links = get_theme_links(ignore_themes: ignore_themes)
7
+ random_url = (theme_links && theme_links.any?) ? theme_links.sample : nil
8
8
 
9
- perform_activation(random_link["href"]) if (random_link)
9
+ perform_activation(random_url) if random_url
10
10
  end
11
11
 
12
12
  def activate_theme(theme_identifier = 'twentytwelve')
13
13
  success = false
14
14
  theme_links = get_theme_links
15
15
 
16
- if (theme_links && theme_links.any?)
16
+ if theme_links && theme_links.any?
17
17
  activation_link = nil
18
18
  regex = Regexp.new("stylesheet=#{theme_identifier}", Regexp::IGNORECASE)
19
19
 
20
20
  theme_links.each do |link|
21
21
  href = link["href"]
22
22
 
23
- if (regex.match(href))
23
+ if regex.match(href)
24
24
  activation_link = href
25
25
  break
26
26
  end
@@ -39,33 +39,47 @@ module WpWrapper
39
39
  end
40
40
 
41
41
  def perform_activation(url)
42
- success = false
42
+ success = false
43
43
 
44
- if (url && url.present?)
44
+ if url && url.present?
45
45
  puts "[WpWrapper::Modules::Themes] - #{Time.now}: Will activate theme with url #{url}."
46
46
  self.mechanize_client.open_url(url)
47
- success = true
47
+ success = true
48
48
  end
49
49
 
50
50
  return success
51
51
  end
52
52
 
53
- def get_theme_links
54
- theme_links = []
53
+ def get_theme_links(ignore_themes: [])
54
+ theme_links = []
55
55
 
56
- if (login)
57
- themes_page = self.mechanize_client.open_url(get_url(:themes))
56
+ if login
57
+ themes_page = self.mechanize_client.open_url(get_url(:themes))
58
+ links = themes_page ? themes_page.parser.css("div.themes div.theme div.theme-actions a.activate") : []
58
59
 
59
- if (themes_page)
60
- theme_links = themes_page.parser.css("div.themes div.theme div.theme-actions a.activate")
61
- end
60
+ links.each do |link|
61
+ href = link["href"]
62
+
63
+ if ignore_themes && ignore_themes.any?
64
+ ignore_themes.each do |ignore_theme|
65
+ regex = ignore_theme.is_a?(Regexp) ? ignore_theme : Regexp.new("stylesheet=#{ignore_theme}", Regexp::IGNORECASE)
66
+
67
+ if !regex.match(href)
68
+ theme_links << href
69
+ break
70
+ end
71
+ end
72
+ else
73
+ theme_links << href
74
+ end
75
+ end if links && links.any?
62
76
  end
63
77
 
64
- puts "[WpWrapper::Modules::Themes] - #{Time.now}: Found a total of #{theme_links.try(:size)} installed themes."
78
+ puts "[WpWrapper::Modules::Themes] - #{Time.now}: Found a total of #{theme_links.size} theme activation links."
65
79
 
66
80
  return theme_links
67
81
  end
68
82
 
69
83
  end
70
84
  end
71
- end
85
+ end
@@ -79,7 +79,7 @@ module WpWrapper
79
79
  puts "Upgrade #{type} url: #{upgrade_url.inspect}"
80
80
 
81
81
  if (upgrade_url)
82
- self.mechanize_client.agent.get("#{get_url(:admin)}/#{upgrade_url}")
82
+ self.mechanize_client.agent.get("#{get_url(:admin)}#{upgrade_url}")
83
83
  puts "#{Time.now}: Url: #{self.url}. #{type.to_s.capitalize} were upgraded!"
84
84
  success = true
85
85
  end
data/lib/wp_wrapper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module WpWrapper
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
 
4
4
  require File.join(File.dirname(__FILE__), 'wp_wrapper/railtie') if defined?(Rails)
5
5
 
@@ -23,4 +23,4 @@ module WpWrapper
23
23
  require File.join(File.dirname(__FILE__), 'wp_wrapper/modules/api')
24
24
 
25
25
  require File.join(File.dirname(__FILE__), 'wp_wrapper/client')
26
- end
26
+ end
data/wp_wrapper.gemspec CHANGED
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
3
3
  s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5") if s.respond_to? :required_rubygems_version=
4
4
 
5
5
  s.name = 'wp_wrapper'
6
- s.version = '0.0.5'
6
+ s.version = '0.0.6'
7
7
 
8
8
  s.homepage = "http://github.com/Agiley/wp_wrapper"
9
9
  s.email = "sebastian@agiley.se"
@@ -11,8 +11,8 @@ Gem::Specification.new do |s|
11
11
  s.description = "Wrapper to interact with WordPress using Mechanize"
12
12
  s.summary = "Wrapper to interact with WordPress using Mechanize"
13
13
 
14
- s.add_dependency "nokogiri", ">= 1.5.9"
15
- s.add_dependency "http_utilities", ">= 1.0.1"
14
+ s.add_dependency "nokogiri", ">= 1.10.2"
15
+ s.add_dependency "http_utilities", ">= 1.4.2"
16
16
 
17
17
  s.add_development_dependency 'rake'
18
18
  s.add_development_dependency 'rspec'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wp_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Johnsson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-29 00:00:00.000000000 Z
11
+ date: 2019-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.5.9
19
+ version: 1.10.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.5.9
26
+ version: 1.10.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: http_utilities
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.1
33
+ version: 1.4.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.1
40
+ version: 1.4.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -129,8 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  - !ruby/object:Gem::Version
130
130
  version: 1.3.5
131
131
  requirements: []
132
- rubyforge_project:
133
- rubygems_version: 2.4.8
132
+ rubygems_version: 3.0.3
134
133
  signing_key:
135
134
  specification_version: 2
136
135
  summary: Wrapper to interact with WordPress using Mechanize