PluginProbe
oik / 1.6
oik v1.6
1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.2 1.3 1.3.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.0.1 2.1 2.2 2.3 2.4 2.5 2.5.1 All 71 releases
oik / oik.php

oik.php in oik 1.6, at oik.php

311 lines 12.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 Plugin Name: oik base plugin
5 Plugin URI: http://www.oik-plugins.com/oik
6 Description: Easy to use shortcode macros for often included key-information
7 Version: 1.6
8 Author: bobbingwide
9 Author URI: http://www.bobbingwide.com
10 License: GPL2
11
12 Copyright 2010, 2011 Bobbing Wide (email : herb@bobbingwide.com )
13
14 This program is free software; you can redistribute it and/or modify
15 it under the terms of the GNU General Public License version 2,
16 as published by the Free Software Foundation.
17
18 You may NOT assume that you can use any other version of the GPL.
19
20 This program is distributed in the hope that it will be useful,
21 but WITHOUT ANY WARRANTY; without even the implied warranty of
22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 GNU General Public License for more details.
24
25 The license for this software can likely be found here:
26 http://www.gnu.org/licenses/gpl-2.0.html
27
28 */
29 global $bw_options;
30
31
32 //echo '<p>BATa='.$bwapi_trace_test.'=aBAT</p>';
33 /* All of the oik plugins and many of the common functions include calls to bw_trace so we
34 need to include it
35 */
36
37 require_once( 'bwtrace.inc' );
38 require_once( "bobbfunc.inc" );
39 require_once( "bobblink.inc" );
40 require_once( "bobbcomp.inc" );
41 require_once( "bwlink.inc" );
42 require_once( "bobbgoog.inc" );
43
44 function oik_version() {
45 return bw_oik_version();
46 }
47
48 $bobb_prefix = NULL;
49 $bw_echo = NULL;
50
51 $theme = "bobbingwide";
52 $art_theme = NULL;
53 $bobb_theme = NULL;
54
55 require_once( "oik-shortc-shortcodes.php" );
56 require_once( "oik-add-shortcodes.php" );
57
58 add_filter('widget_text', 'do_shortcode');
59 add_filter('the_title', 'do_shortcode' );
60 //add_filter('wpbody-content', 'do_shortcode' );
61 add_filter('wp_footer', 'do_shortcode' );
62
63 add_filter('get_the_excerpt', 'do_shortcode' );
64 add_filter('the_excerpt', 'do_shortcode' );
65 add_filter('the_content', 'do_shortcode' );
66 //add_filter('get_pages', 'do_shortcode' );
67
68
69 // In which sequence should these go?
70 // trying api, bobbingwide then bwlink
71
72 $bw_options = get_option( 'bw_options' );
73
74 add_action('wp_print_styles', 'oik_enqueue_stylesheets');
75
76
77 /**
78 * enqueue the oik.css, bwlink.css and $customCSS stylesheets
79 *
80 * oik.css contains styles for oik shortcodes
81 * bwlink.css contains styles for the bobbingwide and oik branding colours
82 * $customCSS is embedded only if selected on oik options
83 *
84 * Note: in an earlier version of this code I attempted to ensure
85 * that these stylesheets were embedded after the theme's stylesheet
86 * BUT this only works if the theme's stylesheet is enqueued using wp_enqueue_style
87 * So it worked for child theme's (of buddypress) BUT it didn't work for themes
88 * generated by Artisteer where the stylesheets are defined directly in header.php
89 * The solution is this callback function invoked for the 'wp_print_styles' action
90 */
91 function oik_enqueue_stylesheets() {
92 global $wp_styles;
93 wp_enqueue_style( 'oikCSS', WP_PLUGIN_URL . '/oik/oik.css' );
94 wp_enqueue_style( 'bwlinkCSS', WP_PLUGIN_URL . '/oik/bwlink.css' );
95
96 $customCSS = bw_get_company( 'customCSS' );
97 if ( !empty( $customCSS) ) {
98
99 //bw_trace( $wp_styles, __FUNCTION__, __LINE__, __FILE__, "wp_styles");
100
101 //$deps = array( get_current_theme() );
102
103 //bw_trace( $deps, __FUNCTION__, __LINE__, __FILE__, "deps");
104 //bw_trace( $customCSS, __FUNCTION__, __LINE__, __FILE__, "customCSS");
105 $customCSSurl = get_stylesheet_directory_uri() . '/' . $customCSS;
106
107 bw_trace( $customCSSurl, __FUNCTION__, __LINE__, __FILE__, "customCSSurl");
108
109 //wp_register_style( 'customCSS', $customCSSurl, $deps);
110 wp_register_style( 'customCSS', $customCSSurl );
111
112 wp_enqueue_style( 'customCSS' );
113 }
114 // bw_trace( $wp_styles, __FUNCTION__, __LINE__, __FILE__, "wp_styles");
115
116 }
117
118 add_action('admin_init', 'oik_options_init' );
119 add_action('admin_menu', 'oik_options_add_page');
120
121 // Init plugin options
122 function oik_options_init() {
123 register_setting( 'oik_options_options', 'bw_options', 'oik_options_validate' );
124 }
125
126 // Add the options page
127 function oik_options_add_page() {
128 add_options_page('[oik] Options', 'oik options', 'manage_options', 'bw_options', 'oik_options_do_page');
129 oik_enqueue_stylesheets();
130 }
131
132 // Draw the oik options page
133 function oik_options_do_page() {
134 require_once( "bobbforms.inc" );
135 sdiv( "column span-15 wrap" );
136 h2( bw_oik(). " shortcode options" );
137 e( '<form method="post" action="options.php">' );
138 $options = get_option('bw_options');
139
140 stag( 'table class="form-table"' );
141 bw_flush();
142 settings_fields('oik_options_options');
143
144 textfield( "bw_options[telephone]", 50, "Telephone [bw_telephone] / [bw_tel]", $options['telephone'] );
145 textfield( "bw_options[fax]", 50, "Fax [bw_fax]", $options['fax'] );
146 textfield( "bw_options[mobile]", 50, "Mobile [bw_mobile] / [bw_mob]", $options['mobile'] );
147 textfield( "bw_options[emergency]", 50, "Emergency [bw_emergency]", $options['emergency'] );
148
149 textfield( "bw_options[company]", 50, "Company [bw_company]", $options['company'] );
150 textfield( "bw_options[business]", 50, "Business [bw_business]", $options['business'] );
151 textfield( "bw_options[formal]", 50, "Formal [bw_formal]", $options['formal'] );
152 textfield( "bw_options[abbr]", 50, "Abbreviation [bw_abbr]", $options['abbr'] );
153
154
155 textfield( "bw_options[main-slogan]", 50, "Main slogan [bw_slogan]", $options['main-slogan'] );
156 textfield( "bw_options[alt-slogan]", 50, "Alt. slogan [bw_alt_slogan]", $options['alt-slogan'] );
157
158 textfield( "bw_options[contact]", 50, "Contact [bw_contact]", $options['contact'] );
159 textfield( "bw_options[email]", 50, "Email [bw_mailto]/[bw_email]", $options['email'] );
160 textfield( "bw_options[admin]", 50, "Admin [bw_admin]", $options['admin'] );
161 textfield( "bw_options[contact-link]", 50, "Contact button page permalink [bw_contact_button]", $options['contact-link'] );
162 textfield( "bw_options[contact-text]", 50, "Contact button text ", $options['contact-text'] );
163 textfield( "bw_options[contact-title]", 50, "Contact button tooltip", $options['contact-title'] );
164
165
166 // extended-address e.g. Bobbing Wide
167 // street-address e.g. 41 Redhill Road
168 // locality e.g Rowlands Castle
169 // region e.g. HANTS
170 // postal-code e.g. PO9 6DE
171 // country-name e.g. UK
172
173
174 textfield( "bw_options[extended-address]", 50, "Extended-address [bw_address]", $options['extended-address'] );
175 textfield( "bw_options[street-address]", 50, "Street-address", $options['street-address'] );
176 textfield( "bw_options[locality]", 50, "Locality", $options['locality'] );
177 textfield( "bw_options[region]", 50, "Region", $options['region'] );
178 textfield( "bw_options[postal-code]", 50, "Post code", $options['postal-code'] );
179 textfield( "bw_options[country-name]", 50, "Country name", $options['country-name'] );
180
181 textfield( "bw_options[lat]", 50, "Latitude [bw_geo] [bw_directions]", $options['lat'] );
182 textfield( "bw_options[long]", 50, "Longitude", $options['long'] );
183
184 // ABQIAAAAEraXBMl-kX5b-Swk0AR98BQiFdr9vy7axdrApFjkJGV6ZRaqtxRqjZfTaNvU9q3jxZ50yMHK-mrzag
185 // Note: this is now optional since [bw_show_googlemap] uses the newer API that no longer requires this
186 textfield( "bw_options[google_maps_api_key]", 87, "Google Maps API key [bw_show_googlemap]", $options['google_maps_api_key'] );
187 textfield( "bw_options[width]", 10, "Google Map width", $options['width'] );
188 textfield( "bw_options[height]", 10, "Google Map height", $options['height'] );
189
190
191 textfield( "bw_options[domain]", 50, "Domain [bw_domain] [bw_wpadmin]", $options['domain'] );
192 textfield( "bw_options[customCSS]", 50, "Custom CSS in theme directory " . get_stylesheet_directory_uri(), $options['customCSS'] );
193
194 textfield( "bw_options[twitter]", 50, "Twitter URL [bw_twitter]", $options['twitter'] );
195 textfield( "bw_options[facebook]", 50, "Facebook URL [bw_facebook]", $options['facebook'] );
196 textfield( "bw_options[linkedin]", 50, "LinkedIn URL [bw_linkedin]", $options['linkedin'] );
197 textfield( "bw_options[googleplus]", 50, "Google Plus URL [bw_googleplus]", $options['googleplus'] );
198 textfield( "bw_options[youtube]", 50, "YouTube URL [bw_youtube]", $options['youtube'] );
199 textfield( "bw_options[flickr]", 50, "Flickr URL [bw_flickr]", $options['flickr'] );
200 textfield( "bw_options[picasa]", 50, "Picasa URL [bw_picasa]", $options['picasa'] );
201 textfield( "bw_options[skype]", 50, "Skype Name [bw_skype]", $options['skype'] );
202
203
204 textfield( "bw_options[paypal-email]", 50, "PayPal email [bw_paypal]", $options['paypal-email'] );
205
206 $upload_dir = wp_upload_dir();
207 $baseurl = $upload_dir['baseurl'];
208
209 textfield( "bw_options[logo-image]", 50, "Logo image [bw_logo] in uploads: " . $baseurl, $options['logo-image'] );
210 textfield( "bw_options[qrcode-image]", 50, "QR code image [bw_qrcode] in uploads", $options['qrcode-image'] );
211 textfield( "bw_options[art-version]", 50, "Artisteer version 31/30/25/na [bw_art_version]", $options['art-version'] );
212
213 tablerow( "", "<input type=\"submit\" name=\"ok\" value=\"Save changes\" />" );
214
215 etag( "table" );
216 etag( "form" );
217
218 ediv();
219 sdiv("column span-9 wrap last");
220
221 h2( "Usage notes" );
222 p("Use the shortcode options in your pages, widgets and titles. e.g." );
223 p("[bw_telephone] for your telephone number" );
224 p( bw_telephone() );
225 p("[bw_address] to print your address" );
226 p( bw_address());
227 p( "[bw_follow_me] for ALL your Follow me buttons" );
228 p( bw_follow_me() );
229
230
231 bw_edit_custom_css_link( $options['customCSS'] );
232
233
234 p("For more information:" );
235 art_button( "http://www.oik-plugins.com/oik", "oik documentation", "Read the documentation for the oik plugin" );
236
237 ediv();
238 bw_flush();
239 }
240
241
242 // Sanitize and validate input. Accepts an array, return a sanitized array.
243
244
245 function oik_options_validate( $input ) {
246 $customCSS = bw_array_get( $input, 'customCSS', NULL );
247 if ( $customCSS ) {
248 $sanfile = sanitize_file_name( $customCSS );
249 // Should we check the sanitized file name with the original ?
250 bw_create_file( get_stylesheet_directory(), $sanfile, plugin_dir_path( __FILE__ ) . 'custom.css' );
251 }
252
253 return $input;
254 }
255
256 /**
257 * Create a file with the specified name in the specified directory
258 * @param string base - the base path for the file name - may be absolute
259 * @param string path - the rest of the file name - as specified by the user
260 * @param string default - the fully qualified filename of the base source file to copy
261 */
262 function bw_create_file( $base, $path, $default ) {
263 $target = path_join( $base, $path );
264
265 if ( !file_exists( $target ) ) {
266 // create an empty file - or copy the original
267 // $info = pathinfo( $target );
268 // $name = basename( $target );
269 if ( $default ) {
270 $success = copy( $default, $target );
271 } else {
272 // write an empty file
273 $resource = fopen( $target, 'xb' );
274 fclose( $resource );
275 }
276 }
277 }
278
279
280 /**
281 * Link to allow the custom CSS file to be edited
282 * @param string $customCSS Name of the custom.css file. Probably 'custom.css'
283 *
284 * Note: you can't specify a relative path to this file. If you do you may see this message
285 *
286 * Sorry, can't edit files with ".." in the name.
287 * If you are trying to edit a file in your WordPress home directory, you can just type the name of the file in.
288 *
289 * With WPMS, the link takes you to style.css rather than custom.css. Don't know why!
290 */
291 function bw_edit_custom_css_link( $customCSS ) {
292 p( "If you have defined a custom CSS file use this link to edit it." );
293 p( "Note: This only works when the file is in the current theme directory." );
294 p( "If you change themes then you will start with a new custom CSS file" );
295 p( get_current_theme() . " in " . get_stylesheet_directory() );
296
297
298 $link = admin_url( "theme-editor.php" );
299 $link .= '?file=';
300 //$link .= 'oik/custom.css';
301 $link .= path_join( get_stylesheet_directory(), $customCSS );
302
303
304 alink( NULL, $link, "edit custom CSS" );
305 }
306
307
308
309
310
311