0,
'entries_per_page' => 50,
'current_page' => 1,
'entry_limit' => 0,
'page_link' => '',
'link_attributes' => '',
'container_suffix' => '',
'mode' => 'top',
'class' => 'tablenav-pages',
'before' => '',
'after' => ''
), $atts);
$number_entries = intval($atts['number_entries']);
$entries_per_page = intval($atts['entries_per_page']);
$current_page = intval($atts['current_page']);
$entry_limit = intval($atts['entry_limit']);
$limit_name = 'limit' . $atts['container_suffix'];
// If we can show all entries on a page, do nothing
if ( $number_entries <= $entries_per_page ) {
return;
}
$page_link = $atts['page_link'] . $limit_name;
$num_pages = floor (($number_entries / $entries_per_page));
$mod = $number_entries % $entries_per_page;
if ($mod != 0) {
$num_pages = $num_pages + 1;
}
// Defaults
$page_input = ' ' . __('of','teachpress') . ' ' . $num_pages . ' ';
$entries = '' . $number_entries . ' ' . __('entries','teachpress') . ' ';
$back_links = '« ‹ ';
$next_links = '› » ';
// first page / previous page
if ( $entry_limit != 0 ) {
$first_page = '«';
$prev_page = ' ‹ ';
$back_links = $first_page . $prev_page;
}
// next page/ last page
if ( ( $entry_limit + $entries_per_page ) <= ($number_entries)) {
$next_page = '›';
$last_page = ' » ';
$next_links = $next_page . $last_page;
}
// return
if ($atts['mode'] === 'top') {
return $atts['before'] . '
' . $entries . $back_links . $page_input . $next_links . '
' . $atts['after'];
}
return $atts['before'] . '' . $entries . $back_links . $current_page . ' ' . __('of','teachpress') . ' ' . $num_pages . ' ' . $next_links . '
' . $atts['after'];
}
/**
* Print message
* @param string $message The html content of the message
* @param string $color green (default), orange, red
* @version 2
* @since 5.0.0
*/
function get_tp_message($message, $color = 'green') {
TP_HTML::line('');
TP_HTML::line('' . $message . '');
TP_HTML::line('
');
}
/**
* Split a timestamp
* @param datetime $date_string
* @return array
* @since 0.20.0
*
* $split[0][0] => Year
* $split[0][1] => Month
* $split[0][2] => Day
* $split[0][3] => Hour
* $split[0][4] => Minute
* $split[0][5] => Second
*/
function tp_datesplit($date_string) {
$preg = '/[\d]{2,4}/';
$split = array();
preg_match_all($preg, $date_string, $split);
return $split;
}
/**
* Translate a publication type
* @param string $pub_slug The publication type
* @param string $num sin (singular) or pl (plural)
* @return string
* @since 2.0.0
*/
function tp_translate_pub_type($pub_slug, $num = 'sin') {
global $tp_publication_types;
$types = $tp_publication_types->get();
if ( isset( $types[$pub_slug] ) ) {
if ( $num == 'sin' ) {
return $types[$pub_slug]['i18n_singular'];
}
else {
return $types[$pub_slug]['i18n_plural'];
}
}
else {
return $pub_slug;
}
}
/**
* Get publication types
* @param string $selected -->
* @param string $mode --> sng (singular titles) or pl (plural titles)
*
* @version 3
* @since 4.1.0
*
* @return string
*/
function get_tp_publication_type_options ($selected, $mode = 'sng') {
global $tp_publication_types;
$types = '';
$pub_types = $tp_publication_types->get();
usort($pub_types, 'sort_tp_publication_type_options');
foreach ( $pub_types as $row ) {
$title = ($mode === 'sng') ? $row['i18n_singular'] : $row['i18n_plural'];
$current = ( $row['type_slug'] == $selected && $selected != '' ) ? 'selected="selected"' : '';
$types = $types . '';
}
return $types;
}
/**
* Sort function helper for get_tp_publication_type_options()
* Sorts the publication types after the i18n_singular string
* @param string $a
* @param string $b
* @return int
* @since 8.0.0
*/
function sort_tp_publication_type_options ($a, $b) {
return strcmp($a['i18n_singular'], $b['i18n_singular']);
}
/**
* Get award types
* @param string $selected -->
* @return string
* @since 9.0.0
*/
function get_tp_award_options ($selected) {
global $tp_awards;
$award = '';
$pub_awards = $tp_awards->get();
// usort($pub_awards, 'sort_tp_publication_award_options');
foreach ( $pub_awards as $row ) {
$title = $row['i18n_singular'];
$current = ( $row['award_slug'] == $selected && $selected != '' ) ? 'selected="selected"' : '';
$award = $award . '';
}
return $award;
}
/**
* Returns the default structure for a publication array
* @return array
* @since 9.0.0
*/
function tp_get_default_structure() {
$ret = array(
'pub_id' => '',
'bibtex' => '',
'type' => '',
'award' => '',
'title' => '',
'author' => '',
'editor' => '',
'isbn' => '',
'url' => '',
'date' => '',
'urldate' => '',
'booktitle' => '',
'issuetitle' => '',
'journal' => '',
'issue' => '',
'volume' => '',
'number' => '',
'pages' => '',
'publisher' => '',
'address' => '',
'edition' => '',
'chapter' => '',
'institution' => '',
'organization' => '',
'school' => '',
'series' => '',
'crossref' => '',
'abstract' => '',
'howpublished' => '',
'key' => '',
'techtype' => '',
'comment' => '',
'note' => '',
'image_url' => '',
'image_target' => '',
'image_ext' => '',
'doi' => '',
'is_isbn' => '',
'rel_page' => '',
'status' => '',
'added' => '',
'modified' => '',
'use_capabilities' => '',
'import_id' => 0);
return $ret;
}
/**
* Define who can use teachPress
* @param array $roles
* @param string $capability
* @since 1.0
* @version 2
*/
function tp_update_userrole($roles, $capability) {
global $wp_roles;
if ( empty($roles) || ! is_array($roles) ) {
$roles = array();
}
$who_can = $roles;
$who_cannot = array_diff( array_keys($wp_roles->role_names), $roles);
foreach ($who_can as $role) {
$wp_roles->add_cap($role, $capability);
}
foreach ($who_cannot as $role) {
$wp_roles->remove_cap($role, $capability);
}
}
/**
* Returns a message with the current real amount of memory allocated to PHP
* @uses memory_get_usage() This function is used with the flag $real_usage = true
* @return string
* @since 5.0.0
*/
function tp_get_memory_usage () {
return 'Current real amount of memory: ' . tp_convert_file_size( memory_get_usage(true) ) . '
';
}
/**
* Converts a file size in bytes into kB, MB or GB
* @param int $bytes
* @return string
* @since 5.0.0
*/
function tp_convert_file_size ($bytes) {
$bytes = floatval($bytes);
if ( $bytes >= 1099511627776 ) {
return number_format($bytes / 1099511627776, 2) . ' TB';
}
if ( $bytes >= 1073741824 ) {
return number_format($bytes / 1073741824, 2) . ' GB';
}
if ( $bytes >= 1048576 ) {
return number_format($bytes / 1048576, 2) . ' MB';
}
if ( $bytes >= 1024 ) {
return number_format($bytes / 1024, 2) . ' kB';
}
if ( $bytes > 1 ){
return $bytes . ' bytes';
}
if ( $bytes === 1 ){
return $bytes . ' byte';
}
return '0 bytes';
}
/**
* Converts an input(array or comma separated string) in a secured comma separated string
*
* The method uses intval, floatval or htmlspecialchars for each element depending on the given
* $type (string, int, float)
* @param array|string $input
* @param string $type The type of the elements: string, int, float
* @return string
* @since 8.0.0
*/
function tp_convert_input_to_string($input, $type = 'string') {
// if we have an array already
if ( is_array($input) ) {
$array = $input;
}
else {
// If we have a comma separated string
if ( strpos ($input, ',') !== false ) {
$array = explode(',',$input);
}
// If we don't know what we have, so we create an array
else {
$array[] = $input;
}
}
$max = count( $array );
$string = '';
for( $i = 0; $i < $max; $i++ ) {
// Prepare element
switch ( $type ) :
case 'int':
$element = intval($array[$i]);
break;
case 'float':
$element = floatval($array[$i]);
break;
default:
$element = htmlspecialchars($array[$i]);
endswitch;
$string = ( $string === '' ) ? $element : $string . ',' . $element;
}
return $string;
}
/**
* Writes data for the teachPress tinyMCE plugin in Javascript objects
* @since 5.0.0
*/
function tp_write_data_for_tinymce () {
// Only write the data if the page is a page/post editor
if ( $GLOBALS['current_screen']->base !== 'post' ) {
return;
}
// List of publication users
$pub_user_list = array();
$pub_user_list[] = array( 'text' => __('All','teachpress') , 'value' => '' );
$pub_users = TP_Publications::get_pub_users();
foreach ($pub_users as $row) {
$user_data = get_userdata($row->user);
if ( $user_data !== false ) {
$pub_user_list[] = array( 'text' => $user_data->display_name , 'value' => intval($row->user) );
}
}
// List of publication tags
$pub_tag_list = array();
$pub_tag_list[] = array( 'text' => __('All','teachpress'), 'value' => null );
$pub_tags = TP_Tags::get_tags(array( 'group_by' => true ));
foreach($pub_tags as $pub_tag){
$pub_tag_list[] = array( 'text' => $pub_tag->name, 'value' => intval($pub_tag->tag_id) );
}
// List of publication types
global $tp_publication_types;
$pub_type_list = array();
$pub_types = $tp_publication_types->get();
foreach ( $pub_types as $pub_type ) {
$pub_type_list[] = array ( 'text' => $pub_type['i18n_singular'], 'value' => stripslashes($pub_type['type_slug']) );
}
// List of publication templates
$pub_templates_list = array();
$pub_templates = tp_list_templates();
foreach ( $pub_templates as $row ) {
$pub_templates_list[] = array ( 'text' => $row, 'value' => $row);
}
// Current post id
$post_id = ( isset ($_GET['post']) ) ? intval($_GET['post']) : 0;
// Write javascript
?>