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::$instance->settings->basename);
     $allowed_user_ids = Kanban_Settings::get_option($users_field_name, 'allowed_users', array());
     // 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/board', Kanban::$slug));
             exit;
         } else {
             return;
         }
     }
     // allow for addition checks
     do_action(sprintf('%s_protect_slug', Kanban::$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/login', Kanban::$slug));
     exit;
 }
Example #2
0
 /**
  * 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;
 }
 static function terms_in_order($post_type, $key)
 {
     $tax_key = Kanban_Utils::format_key($post_type, $key);
     $field_name = sprintf('%s_order', $tax_key);
     $order = Kanban_Settings::get_option($field_name, $field_name, array());
     asort($order);
     // get all terms for displaying
     $args = array('hide_empty' => 0);
     $terms = get_terms($tax_key, $args);
     $terms = Kanban_Utils::build_array_with_id_keys($terms, 'term_id');
     $terms_in_order = array();
     if (!empty($order)) {
         foreach ($order as $status_id => $order) {
             $terms_in_order[] = $terms[$status_id];
             unset($terms[$status_id]);
         }
     }
     return array_filter(array_merge($terms_in_order, $terms));
 }
 static function get_allowed_users()
 {
     if (!isset(Kanban_User::$instance->allowed_users)) {
         $users_field_name = sprintf('%s_user', Kanban::$instance->settings->basename);
         $allowed_user_ids = Kanban_Settings::get_option($users_field_name, 'allowed_users', array());
         if (empty($allowed_user_ids)) {
             $allowed_user_ids = array(0);
         }
         $pm_users = get_users(array('include' => $allowed_user_ids));
         Kanban_User::$instance->allowed_users = Kanban_Utils::build_array_with_id_keys($pm_users);
         foreach (Kanban_User::$instance->allowed_users as $user_id => $user) {
             if (self::validate_gravatar($user->data->user_email)) {
                 Kanban_User::$instance->allowed_users[$user_id]->data->avatar = get_avatar($user->data->user_email);
             }
             Kanban_User::$instance->allowed_users[$user_id]->data->long_name_email = Kanban_User::format_user_name($user);
             Kanban_User::$instance->allowed_users[$user_id]->data->short_name = Kanban_User::format_user_name($user, TRUE);
             Kanban_User::$instance->allowed_users[$user_id]->data->initials = Kanban_User::get_initials($user);
         }
     }
     return apply_filters(sprintf('%s_after_get_allowed_users', Kanban::$instance->settings->basename), Kanban_User::$instance->allowed_users);
 }
Example #5
0
 public static function get_instance()
 {
     if (!self::$instance) {
         self::$instance = new self();
     }
     return self::$instance;
 }
Example #6
0
 static function on_activation()
 {
     // http://wordpress.stackexchange.com/questions/20043/inserting-taxonomy-terms-during-a-plugin-activation
     Kanban_Post_Types::custom_post_types();
     foreach (Kanban_Post_Types::$post_types as $post_type_slug => $post_type_data) {
         foreach ($post_type_data['taxonomies'] as $taxonomy_slug => $values) {
             $taxonomy_key = Kanban_Utils::format_key($post_type_slug, $taxonomy_slug);
             foreach ($values as $slug => $value) {
                 $term_id_arr = wp_insert_term($value, $taxonomy_key, array('slug' => $slug));
             }
         }
     }
     // add current user to board
     $current_user_id = get_current_user_id();
     $users_field_name = sprintf('%s_user', Kanban::$instance->settings->basename);
     $user_settings = Kanban_Settings::get_option($users_field_name, null, array());
     if (!isset($user_settings['allowed_users'])) {
         $user_settings['allowed_users'] = array();
     }
     if (!in_array($current_user_id, $user_settings['allowed_users'])) {
         $user_settings['allowed_users'][$current_user_id] = $current_user_id;
     }
     update_option($users_field_name, $user_settings);
     // add status order
     $tax_key = Kanban_Utils::format_key('task', 'status');
     $field_name = sprintf('%s_order', $tax_key);
     $settings = Kanban_Settings::get_option($field_name, null, array());
     $slugs_in_order = array_keys(Kanban_Post_Types::$post_types['task']['taxonomies']['status']);
     $term_ids_in_order = array();
     foreach ($slugs_in_order as $order => $slug) {
         $term = get_term_by('slug', $slug, $tax_key);
         $term_ids_in_order[$term->term_id] = $order;
     }
     update_option($field_name, $term_ids_in_order);
     // add estimate order
     $tax_key = Kanban_Utils::format_key('task', 'estimate');
     $field_name = sprintf('%s_order', $tax_key);
     $settings = Kanban_Settings::get_option($field_name, null, array());
     $slugs_in_order = array_keys(Kanban_Post_Types::$post_types['task']['taxonomies']['estimate']);
     $term_ids_in_order = array();
     foreach ($slugs_in_order as $order => $slug) {
         $term = get_term_by('slug', $slug, $tax_key);
         $term_ids_in_order[$term->term_id] = $order;
     }
     update_option($field_name, $term_ids_in_order);
     // add an example task
     $post = array('post_status' => 'publish', 'post_type' => Kanban_Post_Types::format_post_type('task'), 'post_author' => $current_user_id);
     $post_id = wp_insert_post($post);
     flush_rewrite_rules();
     // redirect to welcome page
     // @link http://premium.wpmudev.org/blog/tabbed-interface/
     set_transient(sprintf('_%s_welcome_screen_activation_redirect', Kanban::$instance->settings->basename), true, 30);
 }
Example #7
0
 static function on_activation()
 {
     // http://wordpress.stackexchange.com/questions/20043/inserting-taxonomy-terms-during-a-plugin-activation
     Kanban_Post_Types::custom_post_types();
     $is_installed_before = get_option(sprintf('_%s_is_installed_before', Kanban::$instance->settings->basename));
     if (!$is_installed_before) {
         foreach (Kanban_Post_Types::$post_types as $post_type_slug => $post_type_data) {
             foreach ($post_type_data['taxonomies'] as $taxonomy_slug => $values) {
                 $taxonomy_key = Kanban_Utils::format_key($post_type_slug, $taxonomy_slug);
                 foreach ($values as $slug => $value) {
                     $term_id_arr = wp_insert_term($value, $taxonomy_key, array('slug' => $slug));
                 }
             }
         }
         // add current user to board
         $users_field_name = sprintf('%s_user', Kanban::$instance->settings->basename);
         $user_settings = Kanban_Settings::get_option($users_field_name, null, array());
         if (empty($user_settings)) {
             $current_user_id = get_current_user_id();
             if (!isset($user_settings['allowed_users'])) {
                 $user_settings['allowed_users'] = array();
             }
             if (!in_array($current_user_id, $user_settings['allowed_users'])) {
                 $user_settings['allowed_users'][$current_user_id] = $current_user_id;
             }
             update_option($users_field_name, $user_settings);
         }
         // add status order
         $tax_key = Kanban_Utils::format_key('task', 'status');
         $field_name = sprintf('%s_order', $tax_key);
         $settings = Kanban_Settings::get_option($field_name, null, array());
         if (empty($settings)) {
             $slugs_in_order = array_keys(Kanban_Post_Types::$post_types['task']['taxonomies']['status']);
             $term_ids_in_order = array();
             foreach ($slugs_in_order as $order => $slug) {
                 $term = get_term_by('slug', $slug, $tax_key);
                 $term_ids_in_order[$term->term_id] = $order;
             }
             update_option($field_name, $term_ids_in_order);
         }
         // add estimate order
         $tax_key = Kanban_Utils::format_key('task', 'estimate');
         $field_name = sprintf('%s_order', $tax_key);
         $settings = Kanban_Settings::get_option($field_name, null, array());
         if (empty($settings)) {
             $slugs_in_order = array_keys(Kanban_Post_Types::$post_types['task']['taxonomies']['estimate']);
             $term_ids_in_order = array();
             foreach ($slugs_in_order as $order => $slug) {
                 $term = get_term_by('slug', $slug, $tax_key);
                 $term_ids_in_order[$term->term_id] = $order;
             }
             update_option($field_name, $term_ids_in_order);
         }
         $field_name = sprintf('%s_colors', Kanban_Utils::format_key('task', 'status'));
         $settings = get_option('kanban_task_status_colors');
         if (empty($settings)) {
             // add status colors
             $colors = array('backlog' => '#8224e3', 'ready' => '#eeee22', 'in-progress' => '#81d742', 'qa' => '#dd9933', 'done' => '#1e73be', 'archive' => '#545454');
             // get status tax
             $taxonomies = array(Kanban_Utils::format_key('task', 'status'));
             $args = array('orderby' => 'term_id', 'order' => 'ASC', 'hide_empty' => false, 'childless' => false);
             $terms = get_terms($taxonomies, $args);
             // build array of status id => color
             $option = array();
             foreach ($terms as $term) {
                 if (!isset($colors[$term->slug])) {
                     continue;
                 }
                 $option[$term->term_id] = $colors[$term->slug];
             }
             // save it
             update_option($field_name, $option);
         }
         // save colors
         // check for existing tasks
         $args = array('post_type' => Kanban_Post_Types::format_post_type('task'));
         $posts_array = get_posts($args);
         // if no tasks, add a sample
         if (empty($posts_array)) {
             // add an example task
             $post = array('post_status' => 'publish', 'post_type' => Kanban_Post_Types::format_post_type('task'), 'post_author' => $current_user_id);
             $post_id = wp_insert_post($post);
         }
         // save that the plugin has been installed
         update_option(sprintf('_%s_is_installed_before', Kanban::$instance->settings->basename), TRUE);
     }
     // $is_installed_before
     flush_rewrite_rules();
     // redirect to welcome page
     // @link http://premium.wpmudev.org/blog/tabbed-interface/
     set_transient(sprintf('_%s_welcome_screen_activation_redirect', Kanban::$instance->settings->basename), true, 30);
 }