Exemple #1
0
function _manually_load_plugin()
{
    require dirname(dirname(__FILE__)) . '/wp-filebase.php';
    add_action('init', function () {
        require_once dirname(dirname(__FILE__)) . '/classes/Core.php';
        wpfb_loadclass('Setup');
        WPFB_Setup::OnActivateOrVerChange(null);
        WPFB_Core::$settings = (object) get_option(WPFB_OPT_NAME);
        WPFB_Core::InitClass();
    }, 1);
}
Exemple #2
0
 private static function CheckChangedVer()
 {
     $ver = wpfb_call('Core', 'GetOpt', 'version');
     if ($ver != WPFB_VERSION) {
         wpfb_loadclass('Setup');
         WPFB_Setup::OnActivateOrVerChange($ver);
     }
 }
Exemple #3
0
 static function SetupDBTables($old_ver = null)
 {
     global $wpdb;
     $queries = array();
     $tbl_cats = $wpdb->prefix . 'wpfb_cats';
     $tbl_files = $wpdb->prefix . 'wpfb_files';
     $tbl_files_id3 = $wpdb->prefix . 'wpfb_files_id3';
     $queries[] = "CREATE TABLE IF NOT EXISTS `{$tbl_cats}` (\n  `cat_id` int(8) unsigned NOT NULL auto_increment,\n  `cat_name` varchar(255) NOT NULL default '',\n  `cat_description` text,\n  `cat_folder` varchar(300) NOT NULL,\n  `cat_path` varchar(2000) NOT NULL,\n  `cat_parent` int(8) unsigned NOT NULL default '0',\n  `cat_num_files` int(8) unsigned NOT NULL default '0',\n  `cat_num_files_total` int(8) unsigned NOT NULL default '0',\n  `cat_user_roles` text NOT NULL default '',\n  `cat_owner` bigint(20) unsigned default NULL,\n  `cat_icon` varchar(255) default NULL,\n  `cat_exclude_browser` enum('0','1') NOT NULL default '0',\n  `cat_order` int(8) NOT NULL default '0',\n  `cat_wp_term_id` bigint(20) NOT NULL default '0',\n  `cat_scan_lock` bigint(20) unsigned NOT NULL default '0',\n  PRIMARY KEY  (`cat_id`),\n  FULLTEXT KEY `USER_ROLES` (`cat_user_roles`)\n) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
     $queries[] = "CREATE TABLE IF NOT EXISTS `{$tbl_files}` (\n  `file_id` bigint(20) unsigned NOT NULL auto_increment,\n  `file_name` varchar(300) NOT NULL default '',\n  `file_name_original` varchar(300) NOT NULL default '',\n  `file_path` varchar(2000) NOT NULL default '',\n  `file_size` bigint(20) unsigned NOT NULL default '0',\n  `file_date` datetime NOT NULL default '0000-00-00 00:00:00',\n  `file_mtime` bigint(20) unsigned NOT NULL default '0',\n  `file_hash` char(32) NOT NULL,\n  `file_remote_uri` varchar(2000) NOT NULL default '',\n  `file_thumbnail` varchar(255) default NULL,\n  `file_display_name` varchar(255) NOT NULL default '',\n  `file_description` text,\n  `file_tags` varchar(255) NOT NULL default '',\n  `file_requirement` varchar(255) default NULL,\n  `file_version` varchar(64) default NULL,\n  `file_author` varchar(255) default NULL,\n  `file_language` varchar(255) default NULL,\n  `file_platform` varchar(255) default NULL,\n  `file_license` varchar(255) NOT NULL default '',\n  `file_user_roles` text NOT NULL default '',\n  `file_offline` enum('0','1') NOT NULL default '0',\n  `file_direct_linking` enum('0','1','2') NOT NULL default '0',\n  `file_force_download` enum('0','1') NOT NULL default '0',\n  `file_category` int(8) unsigned NOT NULL default '0',\n  `file_category_name` varchar(127) NOT NULL default '',\n  `file_update_of` bigint(20) unsigned default NULL,\n  `file_post_id` bigint(20) unsigned default NULL,\n  `file_attach_order` int(8) NOT NULL default '0',\n  `file_wpattach_id` bigint(20) NOT NULL default '0',\n  `file_added_by` bigint(20) unsigned default NULL,\n  `file_hits` bigint(20) unsigned NOT NULL default '0',\n  `file_ratings` bigint(20) unsigned NOT NULL default '0',\n  `file_rating_sum` bigint(20) unsigned NOT NULL default '0',\n  `file_last_dl_ip` varchar(100) NOT NULL default '',\n  `file_last_dl_time` datetime NOT NULL default '0000-00-00 00:00:00',\n  `file_rescan_pending` tinyint(4) NOT NULL default '0',\n  `file_scan_lock` bigint(20) unsigned NOT NULL default '0',\n  " . "\n  PRIMARY KEY  (`file_id`),\n  FULLTEXT KEY `DESCRIPTION` (`file_description`),\n  FULLTEXT KEY `USER_ROLES` (`file_user_roles`)\n) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
     $queries[] = "CREATE TABLE IF NOT EXISTS `{$tbl_files_id3}` (\n  `file_id` bigint(20) unsigned NOT NULL auto_increment,\n  `analyzetime` INT(11) NOT NULL DEFAULT '0',\n  `value` LONGTEXT NOT NULL,\n  `keywords` TEXT NOT NULL,\n  PRIMARY KEY  (`file_id`),\n  FULLTEXT KEY `KEYWORDS` (`keywords`)\n) ENGINE=MyISAM  DEFAULT CHARSET=utf8";
     // errors of queries starting with @ are supressed
     $queries[] = "@ALTER TABLE `{$tbl_cats}` DROP INDEX `FULLTEXT`";
     $queries[] = "@ALTER TABLE `{$tbl_cats}` DROP INDEX `CAT_NAME`";
     $queries[] = "@ALTER TABLE `{$tbl_cats}` DROP INDEX `CAT_FOLDER`";
     $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD UNIQUE `UNIQUE_FOLDER` ( `cat_folder` , `cat_parent` ) ";
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD UNIQUE `UNIQUE_FILE` ( `file_name` , `file_category` )";
     // <= v0.1.2.2
     $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD `cat_icon` VARCHAR(255) NULL DEFAULT NULL";
     // since v0.2.0.0
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD `file_remote_uri` VARCHAR( 2000 ) NULL DEFAULT NULL AFTER `file_hash`";
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD `file_force_download` enum('0','1') NOT NULL default '0'";
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD `file_path` varchar(255) NOT NULL default '' AFTER `file_name`";
     $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD `cat_exclude_browser` enum('0','1') NOT NULL default '0'";
     $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD `cat_path` varchar(255) NOT NULL default '' AFTER `cat_folder`";
     // removed since 0.2.9.25
     //$queries[] = "@ALTER TABLE `$tbl_cats` ADD UNIQUE `UNIQUE_PATH` ( `cat_path` ) ";
     //$queries[] = "@ALTER TABLE `$tbl_files` ADD UNIQUE `UNIQUE_PATH` ( `file_path` )";
     // the new cat file counters
     $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD `cat_num_files` int(8) unsigned NOT NULL default '0' AFTER `cat_parent`";
     $queries[] = "@ALTER TABLE `{$tbl_cats}` CHANGE `cat_files` `cat_num_files_total` INT( 8 ) UNSIGNED NOT NULL DEFAULT '0'";
     $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD `cat_num_files_total` int(8) unsigned NOT NULL default '0' AFTER `cat_num_files`";
     // since 0.2.8
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD `file_category_name` varchar(127) NOT NULL default '' AFTER `file_category`";
     // since 0.2.9.1
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD `file_user_roles` varchar(2000) NOT NULL default '' AFTER `file_license`";
     $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD `cat_user_roles` varchar(2000) NOT NULL default '' AFTER `cat_num_files_total`";
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD `file_attach_order` int(8) NOT NULL default '0'  AFTER `file_post_id`";
     // since 0.2.9.3
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD `file_wpattach_id` bigint(20) NOT NULL default '0'  AFTER `file_attach_order`";
     // since 0.2.9.9
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD `file_tags` varchar(255) NOT NULL default ''  AFTER `file_description`";
     // 0.2.9.10
     $queries[] = "@ALTER TABLE `{$tbl_files_id3}` CHANGE `value` `value` LONGTEXT";
     // 0.2.9.12
     $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD `cat_order` int(8) NOT NULL default '0'  AFTER `cat_exclude_browser`";
     // since 0.2.9.25
     $queries[] = "@ALTER TABLE  `{$tbl_cats}` DROP INDEX  `UNIQUE_PATH`";
     $queries[] = "@ALTER TABLE  `{$tbl_files}` DROP INDEX  `UNIQUE_PATH`";
     $queries[] = "ALTER TABLE  `{$tbl_cats}` CHANGE  `cat_path`  `cat_path` VARCHAR( 2000 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  ''";
     $queries[] = "ALTER TABLE  `{$tbl_files}` CHANGE  `file_path`  `file_path` VARCHAR( 2000 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  ''";
     $queries[] = "ALTER TABLE  `{$tbl_cats}` CHANGE  `cat_folder`  `cat_folder` VARCHAR( 300 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  ''";
     $queries[] = "ALTER TABLE  `{$tbl_files}` CHANGE  `file_name`  `file_name` VARCHAR( 300 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  ''";
     $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD `cat_owner` bigint(20) unsigned NOT NULL default 0 AFTER `cat_user_roles`";
     // add fulltext indices
     if (!empty($old_ver) && version_compare($old_ver, '0.2.9.24') < 0) {
         // TODO: search fields fulltext index!
         $queries[] = "@ALTER TABLE `{$tbl_files}` ADD FULLTEXT `USER_ROLES` (`file_user_roles`)";
         $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD FULLTEXT `USER_ROLES` (`cat_user_roles`)";
         $queries[] = "@ALTER TABLE `{$tbl_files_id3}` ADD FULLTEXT `KEYWORDS` (`keywords`)";
     }
     // 2 is for file pages
     if (!empty($old_ver) && version_compare($old_ver, '0.2.9.24') < 0) {
         $queries[] = "ALTER TABLE  `{$tbl_files}` CHANGE  `file_direct_linking`  `file_direct_linking` ENUM(  '0',  '1',  '2' ) NOT NULL DEFAULT '0'";
     }
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD `file_rescan_pending` tinyint(4) NOT NULL default '0'";
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD `file_scan_lock` bigint(20) unsigned NOT NULL default '0'";
     $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD `cat_scan_lock` bigint(20) unsigned NOT NULL default '0'";
     // since 0.2.9.25
     // fix (0,1,3) => (0,1,2)
     $queries[] = "@ALTER TABLE `{$tbl_files}` CHANGE  `file_direct_linking`  `file_direct_linking` ENUM(  '0',  '1',  '2' )  NOT NULL DEFAULT  '0'";
     // roles text
     $queries[] = "ALTER TABLE  `{$tbl_files}` CHANGE  `file_user_roles`  `file_user_roles` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  ''";
     $queries[] = "ALTER TABLE  `{$tbl_cats}` CHANGE  `cat_user_roles`  `cat_user_roles` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  ''";
     $queries[] = "@ALTER TABLE `{$tbl_files}` ADD  `file_name_original` varchar(300) NOT NULL default '' AFTER `file_name`";
     $queries[] = "@ALTER TABLE `{$tbl_cats}` ADD `cat_wp_term_id` bigint(20) NOT NULL default '0'";
     $queries[] = "ALTER TABLE  `{$tbl_files}` CHANGE  `file_remote_uri`  `file_remote_uri` VARCHAR( 2000 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  ''";
     $queries[] = "OPTIMIZE TABLE `{$tbl_cats}`";
     $queries[] = "OPTIMIZE TABLE `{$tbl_files}`";
     // dont use wpdb->query, because it prints errors
     foreach ($queries as $sql) {
         if ($sql[0] == '@') {
             $sql = substr($sql, 1);
             $wpdb->suppress_errors();
             $wpdb->query($sql);
             $wpdb->suppress_errors(false);
         } else {
             $wpdb->query($sql);
         }
     }
     // since 0.2.9.13 : file_mtime, use file_date as default
     if (!$wpdb->get_var("SHOW COLUMNS FROM `{$tbl_files}` LIKE 'file_mtime'")) {
         $wpdb->query("ALTER TABLE `{$tbl_files}` ADD `file_mtime` bigint(20) unsigned NOT NULL default '0' AFTER `file_date`");
         $files = $wpdb->get_results("SELECT file_id,file_date FROM {$tbl_files}");
         foreach ((array) $files as $file) {
             $wpdb->query("UPDATE `{$tbl_files}` SET `file_mtime` = '" . mysql2date('U', $file->file_date) . "' WHERE `file_id` = {$file->file_id}");
         }
         // this is faster, but UNIX_TIMESTAMP adds leap seconds, so all files will be synced again!
         //$wpdb->query("UPDATE `$tbl_files` SET `file_mtime` = UNIX_TIMESTAMP(`file_date`) WHERE file_mtime = 0;");
     }
     // convert all required_level -> user_roles
     if (!!$wpdb->get_var("SHOW COLUMNS FROM `{$tbl_files}` LIKE 'file_required_level'")) {
         $files = $wpdb->get_results("SELECT file_id,file_required_level FROM {$tbl_files} WHERE file_required_level <> 0");
         foreach ((array) $files as $file) {
             $wpdb->query("UPDATE `{$tbl_files}` SET `file_user_roles` = '|" . WPFB_Setup::UserLevel2Role($file->file_required_level - 1) . "' WHERE `file_id` = {$file->file_id}");
         }
         $wpdb->query("ALTER TABLE `{$tbl_files}` DROP `file_required_level`");
     }
     if (!!$wpdb->get_var("SHOW COLUMNS FROM `{$tbl_cats}` LIKE 'cat_required_level'")) {
         $cats = $wpdb->get_results("SELECT cat_id,cat_required_level FROM {$tbl_cats} WHERE cat_required_level <> 0");
         foreach ((array) $cats as $cat) {
             $wpdb->query("UPDATE `{$tbl_cats}` SET `cat_user_roles` = '|" . WPFB_Setup::UserLevel2Role($cat->cat_required_level - 1) . "' WHERE `cat_id` = {$cat->cat_id}");
         }
         $wpdb->query("ALTER TABLE `{$tbl_cats}` DROP `cat_required_level`");
     }
     /* NOT neeeded since using fulltext index!
     	// add leading | to user_roles
     	if(!empty($old_ver) && version_compare($old_ver, '0.2.9.24') < 0) {
     		$wpdb->query("UPDATE `$tbl_files` SET `file_user_roles` = CONCAT('|', `file_user_roles`) WHERE LEFT(`file_user_roles`, 1) <> '|'");
     		$wpdb->query("UPDATE `$tbl_cats` SET `cat_user_roles` = CONCAT('|', `cat_user_roles`) WHERE LEFT(`cat_user_roles`, 1) <> '|'");
     	}
     	*/
 }
    static function Display()
    {
        global $wpdb;
        wpfb_loadclass('Admin', 'Output');
        WPFB_Core::PrintJS();
        // prints wpfbConf.ajurl
        wp_register_script('jquery-imagepicker', WPFB_PLUGIN_URI . 'extras/jquery/image-picker/image-picker.min.js', array('jquery'), WPFB_VERSION);
        wp_register_style('jquery-imagepicker', WPFB_PLUGIN_URI . 'extras/jquery/image-picker/image-picker.css', array(), WPFB_VERSION);
        if (!current_user_can('manage_options')) {
            wp_die(__('Cheatin&#8217; uh?') . '<!-- manage_options -->');
        }
        // nonce and referer check (security)
        if ((!empty($_POST['reset']) || !empty($_POST['submit'])) && !check_admin_referer('wpfb-update-settings', 'wpfb-nonce')) {
            wp_die(__('Cheatin&#8217; uh?'));
        }
        $post = stripslashes_deep($_POST);
        $action = !empty($post['action']) ? $post['action'] : (!empty($_GET['action']) ? $_GET['action'] : '');
        $messages = array();
        $errors = array();
        $options = get_option(WPFB_OPT_NAME);
        $option_fields = WPFB_Admin::SettingsSchema();
        if (isset($post['reset'])) {
            // keep templates
            $file_tpl = WPFB_Core::$settings->template_file;
            $cat_tpl = WPFB_Core::$settings->template_cat;
            wpfb_loadclass('Setup');
            WPFB_Setup::ResetOptions();
            WPFB_Core::UpdateOption('template_file', $file_tpl);
            WPFB_Core::UpdateOption('template_cat', $cat_tpl);
            $new_options = get_option(WPFB_OPT_NAME);
            $messages = array_merge($messages, WPFB_Admin::SettingsUpdated($options, $new_options));
            unset($new_options);
            $messages[] = __('Settings reseted.', WPFB);
            $options = get_option(WPFB_OPT_NAME);
        } elseif (isset($post['submit'])) {
            // cleanup
            foreach ($option_fields as $opt_tag => $opt_data) {
                if (isset($post[$opt_tag])) {
                    if (!is_array($post[$opt_tag])) {
                        $post[$opt_tag] = trim($post[$opt_tag]);
                    }
                    switch ($opt_data['type']) {
                        case 'number':
                            $post[$opt_tag] = intval($post[$opt_tag]);
                            break;
                        case 'select':
                            // check if value is in options array, if not set to default
                            if (!in_array($post[$opt_tag], array_keys($opt_data['options']))) {
                                $post[$opt_tag] = $opt_data['default'];
                            }
                            break;
                        case 'roles':
                            $post[$opt_tag] = array_values(array_filter($post[$opt_tag]));
                            // the following must not be removed! if the roles array is empty, permissions are assumed to be set for everyone!
                            // so make sure that the admin is explicitly set!
                            if (!empty($opt_data['not_everyone']) && !in_array('administrator', $post[$opt_tag])) {
                                if (!is_array($post[$opt_tag])) {
                                    $post[$opt_tag] = array();
                                }
                                array_unshift($post[$opt_tag], 'administrator');
                            }
                            break;
                        case 'cat':
                            $post[$opt_tag] = empty($post[$opt_tag]) || is_null($cat = WPFB_Category::GetCat($post[$opt_tag])) ? 0 : intval($post[$opt_tag]);
                            break;
                    }
                }
            }
            $post['upload_path'] = str_replace(ABSPATH, '', $post['upload_path']);
            $options['upload_path'] = str_replace(ABSPATH, '', $options['upload_path']);
            $post['download_base'] = trim($post['download_base'], '/');
            if (WPFB_Admin::WPCacheRejectUri($post['download_base'] . '/', $options['download_base'] . '/')) {
                $messages[] = sprintf(__('/%s/ added to rejected URIs list of WP Super Cache.', WPFB), $post['download_base']);
            }
            $tpl_file = $post['template_file'];
            $tpl_cat = $post['template_cat'];
            if (!empty($tpl_file) && (empty($options['template_file_parsed']) || $tpl_file != $options['template_file'])) {
                wpfb_loadclass('TplLib');
                $tpl_file = WPFB_TplLib::Parse($tpl_file);
                $result = WPFB_TplLib::Check($tpl_file);
                if (!$result['error']) {
                    $options['template_file_parsed'] = $tpl_file;
                    $messages[] = __('File template successfully parsed.', WPFB);
                } else {
                    $errors[] = sprintf(__('Could not parse template: error (%s) in line %s.', WPFB), $result['msg'], $result['line']);
                }
            }
            if (!empty($tpl_cat) && (empty($options['template_cat_parsed']) || $tpl_cat != $options['template_cat'])) {
                wpfb_loadclass('TplLib');
                $tpl_cat = WPFB_TplLib::Parse($tpl_cat);
                $result = WPFB_TplLib::Check($tpl_cat);
                if (!$result['error']) {
                    $options['template_cat_parsed'] = $tpl_cat;
                    $messages[] = __('Category template successfully parsed.', WPFB);
                } else {
                    $errors[] = sprintf(__('Could not parse template: error (%s) in line %s.', WPFB), $result['msg'], $result['line']);
                }
            }
            $fb_sub_pages = get_pages(array('child_of' => $options['file_browser_post_id']));
            if ($options['file_browser_post_id'] > 0 && count($fb_sub_pages)) {
                $messages[] = sprintf(__('Warning: The Filebrowser page <b>%s</b> has at least one subpage <b>%s</b>. This will cause unexpected behavior, since all requests to the subpages are redirected to the File Browser Page. Please choose a Page that does not have any subpages for File Browser.', WPFB), get_the_title($post['file_browser_post_id']), get_the_title($fb_sub_pages[0]->ID));
            }
            // save options
            foreach ($option_fields as $opt_tag => $opt_data) {
                $val = isset($post[$opt_tag]) ? $post[$opt_tag] : '';
                $options[$opt_tag] = $val;
            }
            // make sure a short tag exists, if not append one
            $select_opts = array('languages', 'platforms', 'licenses', 'requirements', 'custom_fields');
            foreach ($select_opts as $opt_tag) {
                if (empty($options[$opt_tag])) {
                    $options[$opt_tag] = '';
                    continue;
                }
                $lines = explode("\n", $options[$opt_tag]);
                $lines2 = array();
                for ($i = 0; $i < count($lines); $i++) {
                    $lines[$i] = str_replace('||', '|', trim($lines[$i], "|\r"));
                    if (empty($lines[$i]) || $lines[$i] == '|') {
                        continue;
                    }
                    $pos = strpos($lines[$i], '|');
                    if ($pos <= 0) {
                        $lines[$i] .= '|' . sanitize_key(substr($lines[$i], 0, min(8, strlen($lines[$i]))));
                    }
                    $lines2[] = $lines[$i];
                }
                $options[$opt_tag] = implode("\n", $lines2);
            }
            $old_options = get_option(WPFB_OPT_NAME);
            update_option(WPFB_OPT_NAME, $options);
            WPFB_Core::$settings = (object) $options;
            $messages = array_merge($messages, WPFB_Admin::SettingsUpdated($old_options, $options));
            if (count($errors) == 0) {
                $messages[] = __('Settings updated.', WPFB);
            }
            //refresh any description which can contain opt values
            $option_fields = WPFB_Admin::SettingsSchema();
        }
        if (WPFB_Core::$settings->allow_srv_script_upload) {
            $messages[] = __('WARNING: Script upload enabled!', WPFB);
        }
        $upload_path = WPFB_Core::$settings->upload_path;
        if (!empty($old_options) && path_is_absolute($upload_path) && !path_is_absolute($old_options['upload_path'])) {
            $rel_path = str_replace('\\', '/', $upload_path);
            $rel_path = substr($rel_path, strpos($rel_path, '/') + 1);
            $messages[] = __(sprintf('NOTICE: The upload path <code>%s</code> is rooted to the filesystem. You should remove the leading slash if you want to use a folder inside your Wordpress directory (i.e: <code>%s</code>)', $upload_path, $rel_path), WPFB);
        }
        $action_uri = admin_url('admin.php') . '?page=' . $_GET['page'] . '&amp;updated=true';
        if (!empty($messages)) {
            $message = '';
            foreach ($messages as $msg) {
                $message .= '<p>' . $msg . '</p>';
            }
            ?>
<div id="message" class="updated fade"><?php 
            echo $message;
            ?>
</div>
<?php 
        }
        if (!empty($errors)) {
            $error = '';
            foreach ($errors as $err) {
                $error .= '<p>' . $err . '</p>';
            }
            ?>
<div id="message" class="error fade"><?php 
            echo $error;
            ?>
</div>
<?php 
        }
        ?>
<script type="text/javascript">
/* Option tabs */
jQuery(document).ready( function() {
	try { jQuery('#wpfb-tabs').tabs(); }
	catch(ex) {}
	/*if(typeof(CKEDITOR) != 'undefined') {
		CKEDITOR.plugins.addExternal('wpfilebase', ajaxurl+'/../../wp-content/plugins/wp-filebase/extras/ckeditor/');
		alert( ajaxurl+'/../../wp-content/plugins/wp-filebase/extras/ckeditor/');
	}*/
});
</script>

<div class="wrap">
<div id="icon-options-general" class="icon32"><br /></div>
<h2><?php 
        echo WPFB_PLUGIN_NAME;
        echo ' ';
        _e("Settings");
        ?>
</h2>

<form method="post" action="<?php 
        echo $action_uri;
        ?>
" name="wpfilebase-options">
	<?php 
        wp_nonce_field('wpfb-update-settings', 'wpfb-nonce');
        ?>
	<p class="submit">
	<input type="submit" name="submit" value="<?php 
        _e('Save Changes');
        ?>
" class="button-primary" />
	</p>
	<?php 
        $misc_tags = array('disable_id3', 'search_id3', 'thumbnail_path', 'use_path_tags', 'no_name_formatting');
        if (function_exists('wp_admin_bar_render')) {
            $misc_tags[] = 'admin_bar';
        }
        $limits = array('bitrate_unregistered', 'bitrate_registered', 'traffic_day', 'traffic_month', 'traffic_exceeded_msg', 'file_offline_msg', 'daily_user_limits', 'daily_limit_subscriber', 'daily_limit_contributor', 'daily_limit_author', 'daily_limit_editor', 'daily_limit_exceeded_msg');
        $option_categories = array(__('Common', WPFB) => array('upload_path', 'search_integration'), __('Display', WPFB) => array('file_date_format', 'thumbnail_size', 'auto_attach_files', 'attach_loop', 'attach_pos', 'filelist_sorting', 'filelist_sorting_dir', 'filelist_num', 'decimal_size_format', 'search_result_tpl', 'disable_css'), __('File Browser', WPFB) => array('file_browser_post_id', 'file_browser_cat_sort_by', 'file_browser_cat_sort_dir', 'file_browser_file_sort_by', 'file_browser_file_sort_dir', 'file_browser_fbc', 'late_script_loading', 'folder_icon', 'small_icon_size', 'disable_footer_credits', 'footer_credits_style'), __('Download', WPFB) => array('hide_links', 'disable_permalinks', 'download_base', 'force_download', 'range_download', 'http_nocache', 'ignore_admin_dls', 'accept_empty_referers', 'allowed_referers', 'use_fpassthru'), __('Form Presets', WPFB) => array('default_author', 'default_roles', 'default_cat', 'default_direct_linking', 'languages', 'platforms', 'licenses', 'requirements', 'custom_fields'), __('Limits', WPFB) => $limits, __('Security', WPFB) => array('allow_srv_script_upload', 'fext_blacklist', 'frontend_upload', 'hide_inaccessible', 'inaccessible_msg', 'inaccessible_redirect', 'cat_inaccessible_msg', 'login_redirect_src', 'protect_upload_path', 'private_files'), __('Templates and Scripts', WPFB) => array('template_file', 'template_cat', 'dlclick_js'), __('Sync', WPFB) => array('cron_sync', 'base_auto_thumb', 'remove_missing_files', 'fake_md5'), __('Misc') => $misc_tags);
        ?>
	<div id="wpfb-tabs">
		<ul class="wpfb-tab-menu">
			<?php 
        foreach ($option_categories as $key => $val) {
            echo '<li><a href="#' . sanitize_title($key) . '">' . esc_html($key) . '</a></li>';
        }
        ?>
		</ul>
	<?php 
        $page_option_list = '';
        $n = 0;
        foreach ($option_categories as $opt_cat => $opt_cat_fields) {
            //echo "\n".'<h3>'.$opt_cat.'</h3>';
            echo "\n\n" . '<div id="' . sanitize_title($opt_cat) . '" class="wpfilebase-opttab"><h3>' . $opt_cat . '</h3><table class="form-table">';
            foreach ($opt_cat_fields as $opt_tag) {
                $field_data = $option_fields[$opt_tag];
                $opt_val = $options[$opt_tag];
                echo "\n" . '<tr valign="top">' . "\n" . '<th scope="row">' . $field_data['title'] . '</th>' . "\n" . '<td>';
                $style_class = '';
                if (!empty($field_data['class'])) {
                    $style_class .= ' class="' . $field_data['class'] . '"';
                }
                if (!empty($field_data['style'])) {
                    $style_class .= ' style="' . $field_data['style'] . '"';
                }
                switch ($field_data['type']) {
                    case 'text':
                    case 'number':
                    case 'checkbox':
                        echo '<input name="' . $opt_tag . '" type="' . $field_data['type'] . '" id="' . $opt_tag . '"';
                        echo !empty($field_data['class']) ? ' class="' . $field_data['class'] . '"' : '';
                        if ($field_data['type'] == 'checkbox') {
                            echo ' value="1" ';
                            checked('1', $opt_val);
                        } elseif ($field_data['type'] == 'number') {
                            echo ' value="' . intval($opt_val) . '" size="5" style="text-align: right"';
                        } else {
                            echo ' value="' . esc_attr($opt_val) . '"';
                            if (isset($field_data['size'])) {
                                echo ' size="' . (int) $field_data['size'] . '"';
                            }
                        }
                        echo $style_class . ' />';
                        break;
                    case 'textarea':
                        $code_edit = strpos($opt_tag, 'template_') !== false || isset($field_data['class']) && strpos($field_data['class'], 'code') !== false;
                        $nowrap = !empty($field_data['nowrap']);
                        echo '<textarea name="' . $opt_tag . '" id="' . $opt_tag . '"';
                        if ($nowrap || $code_edit) {
                            echo ' cols="100" wrap="off" style="width: 100%;' . ($code_edit ? 'font-size: 9px;' : '') . '"';
                        } else {
                            echo ' cols="50"';
                        }
                        echo ' rows="' . ($code_edit ? 20 : 5) . '"';
                        echo $style_class;
                        echo '>';
                        echo esc_html($opt_val);
                        echo '</textarea>';
                        break;
                    case 'select':
                        echo '<select name="' . $opt_tag . '" id="' . $opt_tag . '">';
                        foreach ($field_data['options'] as $opt_v => $opt_n) {
                            echo '<option value="' . esc_attr($opt_v) . '"' . ($opt_v == $opt_val ? ' selected="selected" ' : '') . $style_class . '>' . (!is_numeric($opt_v) && $opt_v !== $opt_n ? esc_html($opt_v) . ': ' : '') . esc_html($opt_n) . '</option>';
                        }
                        echo '</select>';
                        break;
                    case 'roles':
                        WPFB_Admin::RolesCheckList($opt_tag, $opt_val, empty($field_data['not_everyone']));
                        break;
                    case 'icon':
                        wp_print_scripts('jquery-imagepicker');
                        wp_print_styles('jquery-imagepicker');
                        echo '<select class="image-picker show-html" name="' . $opt_tag . '" id="' . $opt_tag . '">';
                        ?>
						<?php 
                        foreach ($field_data['icons'] as $icon) {
                            echo '<option data-img-src="' . $icon['url'] . '" value="' . $icon['path'] . '" ' . ($icon['path'] === $opt_val ? ' selected="selected" ' : '') . '>' . basename($icon['path']) . '</option>';
                        }
                        ?>
					</select>
					<script type="text/javascript">
					jQuery(document).ready( function() { jQuery("#<?php 
                        echo $opt_tag;
                        ?>
").imagepicker(); });
					</script>
					<?php 
                        break;
                    case 'cat':
                        echo "<select name='{$opt_tag}' id='{$opt_tag}'>";
                        echo WPFB_Output::CatSelTree(array('selected' => $opt_val));
                        echo "</select>";
                        break;
                }
                if (!empty($field_data['unit'])) {
                    echo ' ' . $field_data['unit'];
                }
                if (!empty($field_data['desc'])) {
                    echo "\n" . '<br />' . str_replace('%value%', is_array($opt_val) ? join(', ', $opt_val) : $opt_val, $field_data['desc']);
                }
                echo "\n</td>\n</tr>";
                $page_option_list .= $opt_tag . ',';
            }
            echo '</table></div>' . "\n";
        }
        ?>
</div> <!--wpfilebase-opttabs-->
	<input type="hidden" name="action" value="update" />
	<input type="hidden" name="page_options" value="<?php 
        echo $page_option_list;
        ?>
" />
	<p class="submit">
	<input type="submit" name="submit" value="<?php 
        _e('Save Changes');
        ?>
" class="button-primary" />
	<input type="submit" name="reset" value="<?php 
        _e('Restore Default Settings', WPFB);
        ?>
" onclick="return confirm('<?php 
        _e('All settings (except default file and category template) will be set to default values. Continue?', WPFB);
        ?>
')" class="button delete" style="float: right;" />
	</p>
</form>
</div>	<!-- wrap -->	
<?php 
    }
 function wpfilebase_deactivate()
 {
     wpfb_loadclass('Core', 'Admin', 'Setup');
     wpfb_call('ExtensionLib', 'PluginDeactivated');
     WPFB_Setup::OnDeactivate();
 }
Exemple #6
0
 static function UninstallPlugin()
 {
     wpfb_loadclass('Setup');
     WPFB_Setup::RemoveOptions();
     WPFB_Setup::DropDBTables();
     // TODO: remove user opt
 }
Exemple #7
0
 function wpfilebase_deactivate()
 {
     wpfb_loadclass('Core', 'Admin', 'Setup');
     WPFB_Setup::OnDeactivate();
 }