function prepare_items() { /* set up the columns */ $columns = $this->get_columns(); $hidden = array(); $sortable = $this->get_sortable_columns(); $this->_column_headers = array($columns, $hidden, $sortable); /* set paging parameters */ $per_page = ltp_options::get_admin_per_page('ltp_student_users_pp'); $current_page = $this->get_pagenum(); $offset = ($current_page - 1) * $per_page; /* set ordering parameters */ $poss_orderby = array('first_name', 'last_name', 'user_login', 'user_email'); $orderby = isset($_REQUEST["orderby"]) && in_array($_REQUEST["orderby"], $poss_orderby) ? $_REQUEST["orderby"] : 'last_name'; $order = isset($_REQUEST["order"]) && in_array(strtoupper($_REQUEST["order"]), array('ASC', 'DESC')) ? strtoupper($_REQUEST["order"]) : 'ASC'; $searchterm = isset($_REQUEST["s"]) && trim($_REQUEST["s"]) !== '' ? trim($_REQUEST["s"]) : ''; /* build arguments to user query */ $args = array('role' => 'student', 'number' => $per_page, 'offset' => $offset, 'fields' => 'all_with_meta', 'count_total' => true); if ($searchterm !== '') { $args['meta_query'] = array('relation' => 'OR', array('key' => 'first_name', 'value' => $searchterm, 'compare' => 'LIKE'), array('key' => 'last_name', 'value' => $searchterm, 'compare' => 'LIKE')); } if ($orderby) { switch ($orderby) { case 'first_name': case 'last_name': $args['orderby'] = 'meta_value'; $args['meta_key'] = $orderby; break; default: $args['orderby'] = $orderby; } $args['order'] = $order; } /* query users */ $user_query = new WP_User_Query($args); /* get total users */ $total_items = $user_query->get_total(); /* get results */ $wpp_users = $user_query->get_results(); /* get additional data */ /* get people pages */ $people_pages = get_posts(array('post_type' => 'people', 'numberposts' => -1, 'nopaging' => true, 'post_status' => 'any')); /* map people page IDs to usernames */ $pages_map = array(); foreach ($people_pages as $pp) { $wp_username = get_post_meta($pp->ID, 'wp_username', true); if ($wp_username) { $pages_map[$wp_username] = $pp; } } /* build items for table */ $this->items = array(); if (!empty($user_query->results)) { foreach ($user_query->results as $user) { $userdata = ltp_template::get_user_data($user); $student_user = array(); $student_user["ID"] = $user->ID; $student_user["first_name"] = $user->first_name; $student_user["last_name"] = $user->last_name; $student_user["user_login"] = $user->user_login; $student_user["user_email"] = $user->user_email; $student_user["showcase_count"] = 0; $student_user["downloads_count"] = 0; $student_user["cv_uploaded"] = false; $student_user["profile_url"] = ''; $student_user["profile_views"] = 0; /* get data related to profile publishing status */ if (!isset($pages_map[$user->user_login])) { $student_user["profile_status"] = "Not started"; } else { /* find out how much has been done on the profile */ for ($i = 1; $i < 4; $i++) { if (trim($userdata["showcase" . $i . "_title"]) !== '' || trim($userdata["showcase" . $i . "_text"]) !== '' || trim($userdata["showcase" . $i . "_image"]) !== '' || trim($userdata["showcase" . $i . "_file"]) !== '' || trim($userdata["showcase" . $i . "_video"]) !== '') { $student_user["showcase_count"]++; } } if (!empty($userdata["cv"])) { $student_user["cv_uploaded"] = true; $student_user["downloads_count"] = ltp_data::get_downloads($pages_map[$user->user_login]->ID); } /* set status, view count and URL */ if ($pages_map[$user->user_login]->post_status == "publish") { $student_user["profile_status"] = "Published"; $student_user["profile_url"] = get_permalink($pages_map[$user->user_login]->ID); } else { $student_user["profile_status"] = "Draft"; } $student_user["profile_views"] = ltp_data::get_views($pages_map[$user->user_login]->ID); } //print('<pre>' . print_r($student_user, true) . '</pre>'); array_push($this->items, $student_user); } } }
/* start profile output */ print '<div class="ltp-profile-viewer">'; // se if a CV has been uploaded $cv_URL = ''; $cv_ID = get_user_meta($user->ID, 'cv', true); if ($cv_ID !== '') { $cv_URL = wp_get_attachment_url($cv_ID); } // start toolbar output print '<div class="section sticky toolbar">'; if (ltp_is_wpp()) { // WPP users toolbar print ltp_template::wpp_profile_toolbar($current_user->ID, $post->ID, $cv_URL); } elseif ($current_user->ID == $user->ID) { // student toolbar printf('<div class="status">Profile views: %d | Profile saves: %d | CV downloads: %d</div>', ltp_data::get_views($post->ID), ltp_data::get_saves($post->ID), ltp_data::get_downloads($post->ID)); printf('<form action="%s" method="post">', get_permalink($options["builder_page_id"])); print '<button name="return" class="ppt-button ppt-return-button">Return to profile builder</button>'; if ($post->post_status !== 'publish') { print '<button name="publish" class="ppt-button ppt-publish-button">Publish</button>'; } else { print '<button name="unpublish" class="ppt-button ppt-unpublish-button">Un-publish</button>'; } print '<p><em>This is how recruiters will see your profile</em></p>'; print '</form>'; } print '</div>'; print '<div class="ltp-profile-wrap"><div class="vcard">'; /* photo */ $photo_ID = get_user_meta($user->ID, 'photo', true); if (intval($photo_ID) > 0) {
/** * installation / upgrade routine */ public static function upgrade() { $current_version = get_option('ltp_theme_version'); if ($current_version != self::$version) { switch ($current_version) { case false: /* first installation */ ltp_data::drop_data_table(); ltp_data::create_data_table(); case '0.0.1': /* upgrade from 0.0.1 */ } /* update the version option */ update_option('ltp_theme_version', self::$version); } }
*/ private static function get_people_pages_for_results($results = array()) { $people_pages = array(); if ($results && count($results)) { $posts_in = array(); foreach ($results as $row) { if ($row->profile_page_id > 0) { array_push($posts_in, $row->profile_page_id); } } if (count($posts_in)) { $people_pages = get_posts(array('post_type' => 'people', 'numberposts' => -1, 'nopaging' => true, 'post_status' => 'any', 'post__in' => $posts_in)); /* now merge back the info from the original query */ for ($i = 0; $i < count($people_pages); $i++) { foreach ($results as $row) { if ($people_pages[$i]->ID == $row->profile_page_id) { $people_pages[$i]->access_time = $row->access_time; $people_pages[$i]->entry_type = $row->entry_type; $people_pages[$i]->profile_username = $row->profile_username; break; } } } } } return $people_pages; } } ltp_data::register(); }
/** * returns a set of buttons used on individual profiles in list view to enable saving * and removing profiles via ajax */ public static function wpp_profile_buttons($user_id, $profile_page_id, $cv_url = false) { $data_attr = sprintf(' data-user_id="%s" data-profile_page_id="%s"', $user_id, $profile_page_id); $buttons = sprintf('<a class="profile-button ajax-button" data-ajax_action="view" href="#" data-linkurl="%s"%s>View Profile</a>', get_permalink($profile_page_id), $data_attr); if (ltp_data::is_saved($user_id, $profile_page_id)) { $buttons .= sprintf('<a href="#" id="save_%s" data-ajax_action="remove" class="profile-button ajax-button"%s>Remove</a>', $profile_page_id, $data_attr); } else { $buttons .= sprintf('<a href="#" id="save_%s" data-ajax_action="save" class="profile-button ajax-button"%s>Save</a>', $profile_page_id, $data_attr); } if ($cv_url) { $buttons .= sprintf('<a href="#" id="download_%s" data-ajax_action="cv_download" class="profile-button ajax-button" data-linkurl="%s"%s>CV</a>', $profile_page_id, $cv_url, $data_attr); } return $buttons; }
} elseif (ltp_is_student()) { ltp_redirect_to("builder"); } } } else { ltp_redirect_to('login'); } // get the people pages - admins see drafts as well $post_status = ltp_is_admin() ? array('publish', 'draft') : 'publish'; $people_pages = get_posts(array('post_type' => 'people', 'nopaging' => true, 'post_status' => $post_status, 'orderby' => 'modified')); ltp_data::save_actions(); get_header(); print '<div class="section sticky toolbar">'; global $current_user; $previous_login_date = ltp_data::get_previous_login($current_user->ID); $profiles_added = ltp_data::get_profiles_added_since($previous_login_date); print ltp_template::wpp_toolbar($current_user->ID, $previous_login_date, $profiles_added); print '</div>'; print '<div class="ltp-profiles">'; if (count($people_pages)) { // get all students $students = array(); $users = get_users(array('role' => 'student', 'fields' => 'all')); if (count($users)) { foreach ($users as $user) { $students[$user->user_login] = ltp_template::get_user_data($user); } } // apply filters on $students to see which pages are to be displayed //$to_display = apply_filters( 'ltp_results', $students ); $count = 0;