Пример #1
0
 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);
         }
     }
 }
Пример #2
0
 /* 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) {
Пример #3
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);
     }
 }
Пример #4
0
         */
        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();
}
Пример #5
0
 /**
  * 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;