/** * load data needed for board's javascript * @param string $template the passed in template path * @return string the same template path */ static function send_page_data_to_template($template) { if (!isset(Kanban_Template::get_instance()->slug) || Kanban_Template::get_instance()->slug != self::$slug) { return $template; } global $wp_query; $wp_query->query_vars['kanban'] = (object) array(); $wp_query->query_vars['kanban']->board = (object) array(); // // get all data for the javascript $wp_query->query_vars['kanban']->board->allowed_users = Kanban_User::get_allowed_users(); $wp_query->query_vars['kanban']->board->estimates = Kanban_Terms::terms_in_order('task', 'estimate'); $wp_query->query_vars['kanban']->board->status_tax_key = Kanban_Utils::format_key('task', 'status'); $wp_query->query_vars['kanban']->board->status_color_field_name = sprintf('%s_colors', $wp_query->query_vars['kanban']->board->status_tax_key); $wp_query->query_vars['kanban']->board->status_colors = Kanban_Settings::get_option($wp_query->query_vars['kanban']->board->status_color_field_name, null, array()); $wp_query->query_vars['kanban']->board->statuses = Kanban_Terms::terms_in_order('task', 'status'); foreach ($wp_query->query_vars['kanban']->board->statuses as $status) { if (!isset($wp_query->query_vars['kanban']->board->status_colors[$status->term_id])) { continue; } $status->color = $wp_query->query_vars['kanban']->board->status_colors[$status->term_id]; } $wp_query->query_vars['kanban']->board->projects = Kanban_Project::get_all(); $wp_query->query_vars['kanban']->board->tasks = Kanban_Task::get_all(); $current_user_id = get_current_user_id(); $wp_query->query_vars['kanban']->board->current_user = get_user_by('id', $current_user_id); unset($wp_query->query_vars['kanban']->board->current_user->data->user_pass); $wp_query->query_vars['kanban']->board->current_user->data->long_name_email = Kanban_User::format_user_name($wp_query->query_vars['kanban']->board->current_user); $wp_query->query_vars['kanban']->board->current_user->data->short_name = Kanban_User::format_user_name($wp_query->query_vars['kanban']->board->current_user, TRUE); $wp_query->query_vars['kanban']->board->current_user->data->initials = Kanban_User::get_initials($wp_query->query_vars['kanban']->board->current_user); $wp_query->query_vars['kanban']->board->col_percent_w = count($wp_query->query_vars['kanban']->board->statuses) > 0 ? 100 / count($wp_query->query_vars['kanban']->board->statuses) : 100; $wp_query->query_vars['kanban']->board->sidebar_w = count($wp_query->query_vars['kanban']->board->statuses) > 0 ? 100 / (count($wp_query->query_vars['kanban']->board->statuses) - 2) : 0; return $template; }
/** * make sure only authenticated users can see our pages */ static function protect_slug() { // only protect pages with our slug if (strpos($_SERVER['REQUEST_URI'], sprintf('/%s/', Kanban::$slug)) === FALSE) { return; } // admins can see anything // if ( current_user_can('manage_options') ) return; // get my id, and allowed id's $current_user_id = get_current_user_id(); $users_field_name = sprintf('%s_user', Kanban::get_instance()->settings->basename); $allowed_user_ids = Kanban_User::get_allowed_users(); // return if I'm allowed if (in_array($current_user_id, array_keys($allowed_user_ids))) { // redirect away from login if (strpos($_SERVER['REQUEST_URI'], sprintf('/%s/login', Kanban::$slug)) !== FALSE) { wp_redirect(sprintf('%s/%s/board', site_url(), Kanban::$slug)); exit; } else { return; } } // allow for addition checks do_action(sprintf('%s_protect_slug', Kanban::get_instance()->settings->basename)); // anyone can see login screen if (strpos($_SERVER['REQUEST_URI'], sprintf('/%s/login', Kanban::$slug)) !== FALSE) { return; } // otherwise redirect to login wp_redirect(sprintf('%s/%s/login', site_url(), Kanban::$slug)); exit; }
/** * load data needed for board's javascript * @param string $template the passed in template path * @return string the same template path */ static function send_page_data_to_template($template) { // make sure we're looking at the board if (!isset(Kanban_Template::get_instance()->slug) || Kanban_Template::get_instance()->slug != self::$slug) { return $template; } // make sure they don't need to upgrade if (Kanban::get_instance()->settings->records_to_move > 0) { ?> <p> <?php echo sprintf(__('We\'ve found %s kanban records that need to be migrated for the latest version of Kanban for WordPress!', 'kanban'), Kanban::get_instance()->settings->records_to_move); ?> </p> <p> <?php echo sprintf(__('Please visit the <a href="%s">Kanban welcome page</a> to migrate your data.', 'kanban'), add_query_arg('page', 'kanban_welcome', admin_url('admin.php'))); ?> <?php exit; } // get the template data global $wp_query; // attach our object to the template data $wp_query->query_vars['kanban'] = (object) array(); $wp_query->query_vars['kanban']->board = (object) array(); // add default filters $wp_query->query_vars['kanban']->board->filters = array('user' => (object) array(), 'project' => (object) array()); // add passed alert $wp_query->query_vars['kanban']->board->alert = !empty($_GET['alert']) ? stripcslashes($_GET['alert']) : ''; // get all data for the javascript $wp_query->query_vars['kanban']->board->settings = Kanban_Option::get_all(); $wp_query->query_vars['kanban']->board->allowed_users = Kanban_User::get_allowed_users(); $wp_query->query_vars['kanban']->board->estimates = Kanban_Estimate::get_all(); $wp_query->query_vars['kanban']->board->statuses = Kanban_Status::get_all(); $wp_query->query_vars['kanban']->board->projects = Kanban_Project::get_all(); $wp_query->query_vars['kanban']->board->tasks = Kanban_Task::get_all(); // get the current user from the allowed users $current_user_id = get_current_user_id(); $wp_query->query_vars['kanban']->board->current_user = $wp_query->query_vars['kanban']->board->allowed_users[$current_user_id]; // figure out percentages here (easier, quicker than in js) $wp_query->query_vars['kanban']->board->col_percent_w = count($wp_query->query_vars['kanban']->board->statuses) > 0 ? 100 / count($wp_query->query_vars['kanban']->board->statuses) : 100; $wp_query->query_vars['kanban']->board->sidebar_w = count($wp_query->query_vars['kanban']->board->statuses) > 0 ? 100 / (count($wp_query->query_vars['kanban']->board->statuses) - 2) : 0; apply_filters('kanban_board_query_vars', $wp_query->query_vars['kanban']->board); return $template; }
static function settings_page() { $settings = Kanban_Option::get_all(); if (is_serialized($settings['allowed_users'])) { $settings['allowed_users'] = unserialize($settings['allowed_users']); } $all_users = get_users(); $all_users_arr = array(); foreach ($all_users as $user) { $all_users_arr[$user->ID] = Kanban_User::get_username_long($user); } $statuses = Kanban_Status::get_all(); $statuses = Kanban_Utils::order_array_of_objects_by_property($statuses, 'position', 'int'); $estimates = Kanban_Estimate::get_all(); $estimates = Kanban_Utils::order_array_of_objects_by_property($estimates, 'position', 'int'); $template = Kanban_Template::find_template('admin/settings'); include_once $template; }
static function get_instance() { if (!self::$instance) { self::$instance = new self(); } return self::$instance; }
static function admin_init() { $users_field_name = sprintf('%s_user', Kanban::get_instance()->settings->basename); $status_tax_key = Kanban_Utils::format_key('task', 'status'); $status_color_field_name = sprintf('%s_colors', $status_tax_key); $status_order_field_name = sprintf('%s_order', $status_tax_key); $estimate_tax_key = Kanban_Utils::format_key('task', 'estimate'); $estimate_order_field_name = sprintf('%s_order', $estimate_tax_key); $sections = array(array('id' => $users_field_name, 'title' => 'Users'), array('id' => $status_order_field_name, 'title' => 'Status Order'), array('id' => $status_color_field_name, 'title' => 'Status Colors'), array('id' => $estimate_order_field_name, 'title' => 'Estimate Order')); $fields = array(); $fields[$users_field_name] = array(); $all_users = get_users(); $all_users_arr = array(); foreach ($all_users as $user) { $all_users_arr[$user->ID] = Kanban_User::format_user_name($user); } $fields[$users_field_name][] = array('name' => 'allowed_users', 'label' => 'Allowed Users', 'desc' => 'Users who have access to the board', 'type' => 'multicheck', 'options' => $all_users_arr); $statuses_in_order = Kanban_Terms::terms_in_order('task', 'status'); $fields[$status_color_field_name] = array(); foreach ($statuses_in_order as $status) { $fields[$status_color_field_name][] = array('name' => $status->term_id, 'label' => $status->name, 'type' => 'color'); } $fields[$status_order_field_name] = array(); foreach ($statuses_in_order as $status) { $fields[$status_order_field_name][$status->term_id] = array('name' => $status->term_id, 'label' => $status->name, 'type' => 'number'); } $estimates_in_order = Kanban_Terms::terms_in_order('task', 'estimate'); $fields[$estimate_order_field_name] = array(); foreach ($estimates_in_order as $status) { $fields[$estimate_order_field_name][$status->term_id] = array('name' => $status->term_id, 'label' => $status->name, 'type' => 'number'); } self::get_instance()->settings_api = new WeDevs_Settings_API(); //set sections and fields self::get_instance()->settings_api->set_sections($sections); self::get_instance()->settings_api->set_fields($fields); //initialize them self::get_instance()->settings_api->admin_init(); }