PluginProbe
oik / 1.7
oik v1.7
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.7, at oik.php

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