get_col( "SELECT blog_id FROM $wpdb->blogs" );
foreach ( $blog_ids as $blog_id ) {
switch_to_blog( $blog_id );
alm_create_table();
restore_current_blog();
}
} else {
alm_create_table();
}
}
register_activation_hook( __FILE__, 'alm_install' );
add_action( 'wpmu_new_blog', 'alm_install' );
/* Create table function */
function alm_create_table(){
global $wpdb;
$table_name = $wpdb->prefix . "alm";
$blog_id = $wpdb->blogid;
$defaultRepeater = '
';
// Previous Post
// - Set other add-on params to false
if($previous_post){
$preloaded = false;
$seo = false;
$paging = false;
$cache = false;
}
// Preloaded Add-on
// Get preloaded posts and append to ajax load more object
if(has_action('alm_preload_installed') && $preloaded === 'true'){
// If SEO then set $preloaded_amount to $posts_per_page
if(has_action('alm_seo_installed') && $seo === 'true'){
$preloaded_amount = $posts_per_page;
}
$preloaded_arr = array( // Create preload data array
'post_type' => $post_type,
'post_format' => $post_format,
'category' => $category,
'category__not_in' => $category__not_in,
'tag' => $tag,
'tag__not_in' => $tag__not_in,
'taxonomy' => $taxonomy,
'taxonomy_terms' => $taxonomy_terms,
'taxonomy_operator' => $taxonomy_operator,
'meta_key' => $meta_key,
'meta_value' => $meta_value,
'meta_compare' => $meta_compare,
'meta_relation' => $meta_relation,
'meta_type' => $meta_type,
'year' => $year,
'month' => $month,
'day' => $day,
'author' => $author,
'post__in' => $post__in,
'search' => $search,
'custom_args' => $custom_args,
'post_status' => $post_status,
'order' => $order,
'orderby' => $orderby,
'exclude' => $exclude,
'offset' => $offset,
'posts_per_page' => $preloaded_amount,
'lang' => $lang,
'css_classes' => $css_classes,
);
$preloaded_type = preg_split('/(?=\d)/', $repeater, 2); // split $repeater at number to retrieve type
$preloaded_type = $preloaded_type[0]; // (default | repeater | template_)
// Create $args array and store it in $preloaded_arg_array
$args = apply_filters('alm_preload_args', $preloaded_arr);
$alm_preload_query = new WP_Query($args);
$alm_total_posts = $alm_preload_query->found_posts - $offset;
$output = '';
if ($alm_preload_query->have_posts()) :
$alm_loop_count = 0; // Count var
$alm_page = 0; // Set page to 0
$alm_found_posts = $alm_total_posts;
while ($alm_preload_query->have_posts()) : $alm_preload_query->the_post();
$alm_loop_count++;
$alm_item = $alm_loop_count; // Get current item in loop
if($theme_repeater != 'null' && has_filter('alm_get_theme_repeater')){
$preloaded_type = null;
}
$output .= apply_filters('alm_preload_inc', $repeater, $preloaded_type, $theme_repeater, $alm_found_posts, $alm_page, $alm_item);
endwhile; wp_reset_query();
endif;
$preloaded_output = '<'.$container_element.' class="alm-listing alm-preloaded'. $classname .' '. $css_classes .'" data-total-posts="'. $alm_total_posts .'">';
$preloaded_output .= $output;
$preloaded_output .= ''.$container_element.'>';
$ajaxloadmore .= $preloaded_output; // Add $preloaded_output data to $ajaxloadmore
}
// End Preload Posts
$ajaxloadmore .= '<'.$container_element.' class="alm-listing alm-ajax'. $paging_container_class .' '. $classname . ' '. $css_classes .'"'; // Build ALM container
// Cache Add-on
if(has_action('alm_cache_installed') && $cache === 'true'){
$cache_return = apply_filters('alm_cache_shortcode', $cache, $cache_id, $options);
$ajaxloadmore .= $cache_return;
}
// Paging Add-on
if(has_action('alm_paging_installed') && $paging === 'true'){
$paging_return = apply_filters('alm_paging_shortcode', $paging, $paging_controls, $paging_show_at_most, $paging_classes, $options);
$ajaxloadmore .= $paging_return;
}
// Preloaded Add-on
if(has_action('alm_preload_installed') && $preloaded === 'true'){
$ajaxloadmore .= ' data-preloaded="'.$preloaded.'"';
$ajaxloadmore .= ' data-preloaded-amount="'.$preloaded_amount.'"';
}
// SEO Add-on
if(has_action('alm_seo_installed') && $seo === 'true'){
$seo_return = apply_filters('alm_seo_shortcode', $seo, $preloaded, $options);
$ajaxloadmore .= $seo_return;
}
// Previous Post Post Add-on
if(has_action('alm_prev_post_installed') && $previous_post){
$prev_post_return = apply_filters('alm_prev_post_shortcode', $previous_post_id, $options);
$ajaxloadmore .= $prev_post_return;
}
$ajaxloadmore .= ' data-repeater="'.$repeater.'"';
if($theme_repeater != 'null') $ajaxloadmore .= ' data-theme-repeater="'.$theme_repeater.'"';
$ajaxloadmore .= ' data-post-type="'.$post_type.'"';
$ajaxloadmore .= ' data-post-format="'.$post_format.'"';
$ajaxloadmore .= ' data-category="'.$category.'"';
$ajaxloadmore .= ' data-category-not-in="'.$category__not_in.'"';
$ajaxloadmore .= ' data-tag="'.$tag.'"';
$ajaxloadmore .= ' data-tag-not-in="'.$tag__not_in.'"';
$ajaxloadmore .= ' data-taxonomy="'.$taxonomy.'"';
$ajaxloadmore .= ' data-taxonomy-terms="'.$taxonomy_terms.'"';
$ajaxloadmore .= ' data-taxonomy-operator="'.$taxonomy_operator.'"';
$ajaxloadmore .= ' data-meta-key="'.$meta_key.'"';
$ajaxloadmore .= ' data-meta-value="'.$meta_value.'"';
$ajaxloadmore .= ' data-meta-compare="'.$meta_compare.'"';
$ajaxloadmore .= ' data-meta-relation="'.$meta_relation.'"';
$ajaxloadmore .= ' data-meta-type="'.$meta_type.'"';
$ajaxloadmore .= ' data-year="'.$year.'"';
$ajaxloadmore .= ' data-month="'.$month.'"';
$ajaxloadmore .= ' data-day="'.$day.'"';
$ajaxloadmore .= ' data-author="'.$author.'"';
$ajaxloadmore .= ' data-post-in="'.$post__in.'"';
$ajaxloadmore .= ' data-exclude="'.$exclude.'"';
$ajaxloadmore .= ' data-search="'.$search.'"';
$ajaxloadmore .= ' data-custom-args="'.$custom_args.'"';
$ajaxloadmore .= ' data-post-status="'.$post_status.'"';
$ajaxloadmore .= ' data-order="'.$order.'"';
$ajaxloadmore .= ' data-orderby="'.$orderby.'"';
$ajaxloadmore .= ' data-offset="'.$offset.'"';
$ajaxloadmore .= ' data-posts-per-page="'.$posts_per_page.'"';
$ajaxloadmore .= ' data-lang="'.$lang.'"';
$ajaxloadmore .= ' data-scroll="'.$scroll.'"';
$ajaxloadmore .= ' data-scroll-distance="'.$scroll_distance.'"';
$ajaxloadmore .= ' data-max-pages="'.$max_pages.'"';
$ajaxloadmore .= ' data-pause-override="'.$pause_override.'"';
$ajaxloadmore .= ' data-pause="'.$pause.'"';
$ajaxloadmore .= ' data-button-label="'.$button_label.'"';
$ajaxloadmore .= ' data-button-class="'.$button_classname.'"';
$ajaxloadmore .= ' data-destroy-after="'.$destroy_after.'"';
$ajaxloadmore .= ' data-transition="'.$transition.'"';
$ajaxloadmore .= ' data-images-loaded="'.$images_loaded.'"';
$ajaxloadmore .= '>';
// Previous Post Add-on
// - Get first post and append to ajax load more object
if(has_action('alm_prev_post_installed') && $previous_post){
$repeater_type = preg_split('/(?=\d)/', $repeater, 2); // split $repeater at number to retrieve type
$repeater_type = $repeater_type[0]; // (default | repeater | template_)
if($theme_repeater != 'null' && has_filter('alm_get_theme_repeater')){
$repeater_type = null;
}
// Get next post include and build the output from the next post filter
$previous_post_output = '
'; // Set teh post id .alm-reveal div
$previous_post_output .= apply_filters('alm_prev_post_inc', $repeater, $repeater_type, $theme_repeater, $previous_post_id, $post_type);
$previous_post_output .= '
';
$ajaxloadmore .= $previous_post_output; // Add $next_post_output data to $ajaxloadmore
}
// End Previous Post
$ajaxloadmore .= ''.$container_element.'>';
// ALM Filter (alm_before_button)
$ajaxloadmore .= apply_filters('alm_before_button', '');
$ajaxloadmore .= '
';
// ALM Filter (alm_after_container)
$ajaxloadmore .= apply_filters('alm_after_container', '');
// End ALM object
return $ajaxloadmore;
}
/*
* alm_query_posts
* Ajax Load More Query
*
* @since 2.0.0
*/
function alm_query_posts() {
$nonce = $_GET['nonce'];
$options = get_option( 'alm_settings' );
if(!is_user_logged_in()){ // Skip nonce verification if user is logged in
$options = get_option( 'alm_settings' );
// check alm_settings for _alm_nonce_security
if(isset($options['_alm_nonce_security']) & $options['_alm_nonce_security'] == '1'){
if (! wp_verify_nonce( $nonce, 'ajax_load_more_nonce' )) // Check our nonce, if they don't match then bounce!
die('Error, could not verify WP nonce.');
}
}
$queryType = (isset($_GET['query_type'])) ? $_GET['query_type'] : 'standard'; // 'standard' or 'totalposts'; totalposts returns $alm_found_posts
$cache_id = (isset($_GET['cache_id'])) ? $_GET['cache_id'] : '';
$repeater = (isset($_GET['repeater'])) ? $_GET['repeater'] : 'default';
$type = preg_split('/(?=\d)/', $repeater, 2); // split $repeater value at number to determine type
$type = $type[0]; // default | repeater | template_
$theme_repeater = (isset($_GET['theme_repeater'])) ? $_GET['theme_repeater'] : 'null';
$postType = (isset($_GET['post_type'])) ? $_GET['post_type'] : 'post';
$post_format = (isset($_GET['post_format'])) ? $_GET['post_format'] : '';
$category = (isset($_GET['category'])) ? $_GET['category'] : '';
$category__not_in = (isset($_GET['category__not_in'])) ? $_GET['category__not_in'] : '';
$tag = (isset($_GET['tag'])) ? $_GET['tag'] : '';
$tag__not_in = (isset($_GET['tag__not_in'])) ? $_GET['tag__not_in'] : '';
// Taxonomy
$taxonomy = (isset($_GET['taxonomy'])) ? $_GET['taxonomy'] : '';
$taxonomy_terms = (isset($_GET['taxonomy_terms'])) ? $_GET['taxonomy_terms'] : '';
$taxonomy_operator = $_GET['taxonomy_operator'];
if(empty($taxonomy_operator)) $taxonomy_operator = 'IN';
// Date
$year = (isset($_GET['year'])) ? $_GET['year'] : '';
$month = (isset($_GET['month'])) ? $_GET['month'] : '';
$day = (isset($_GET['day'])) ? $_GET['day'] : '';
// Custom Fields
$meta_key = (isset($_GET['meta_key'])) ? $_GET['meta_key'] : '';
$meta_value = (isset($_GET['meta_value'])) ? $_GET['meta_value'] : '';
$meta_compare = $_GET['meta_compare'];
if($meta_compare == '') $meta_compare = 'IN';
$meta_relation = $_GET['meta_relation'];
if($meta_relation == '') $meta_relation = 'AND';
$meta_type = $_GET['meta_type'];
if($meta_type == '') $meta_type = 'CHAR';
$s = (isset($_GET['search'])) ? $_GET['search'] : '';
$custom_args = (isset($_GET['custom_args'])) ? $_GET['custom_args'] : '';
$author_id = (isset($_GET['author'])) ? $_GET['author'] : '';
// Ordering
$order = (isset($_GET['order'])) ? $_GET['order'] : 'DESC';
$orderby = (isset($_GET['orderby'])) ? $_GET['orderby'] : 'date';
// Include, Exclude, Offset, Status
$post__in = (isset($_GET['post__in'])) ? $_GET['post__in'] : '';
$exclude = (isset($_GET['exclude'])) ? $_GET['exclude'] : '';
$offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0;
$post_status = $_GET['post_status'];
if($post_status == '') $post_status = 'publish';
// Page
$numPosts = (isset($_GET['posts_per_page'])) ? $_GET['posts_per_page'] : 5;
$page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0;
// Preload Add-on
$preloaded = (isset($_GET['preloaded'])) ? $_GET['preloaded'] : 'false';
$preloaded_amount = (isset($_GET['preloaded_amount'])) ? $_GET['preloaded_amount'] : '5';
if(has_action('alm_preload_installed') && $preloaded === 'true'){
// If preload - offset the ajax posts by posts_per_page + preload_amount val
$old_offset = $preloaded_amount;
$offset = $offset + $preloaded_amount;
}
//Previous Post Add-on
$is_previous_post = (isset($_GET['previous_post'])) ? $_GET['previous_post'] : false;
$previous_post_id = (isset($_GET['previous_post_id'])) ? $_GET['previous_post_id'] : '';
//SEO Add-on
$seo_start_page = (isset($_GET['seo_start_page'])) ? $_GET['seo_start_page'] : 1;
// Language (Is this needed?)
$lang = (isset($_GET['lang'])) ? $_GET['lang'] : '';
// Set up initial args
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => $postType,
'posts_per_page' => $numPosts,
'offset' => $offset + ($numPosts*$page),
'order' => $order,
'orderby' => $orderby,
'post_status' => $post_status,
'ignore_sticky_posts' => false,
'paged' => $paged,
);
// Post Format & taxonomy
if(!empty($post_format) || !empty($taxonomy)){
$args['tax_query'] = array(
'relation' => 'AND',
alm_get_tax_query($post_format, $taxonomy, $taxonomy_terms, $taxonomy_operator)
);
}
// Category
if(!empty($category)){
$args['category_name'] = $category;
}
// Category Not In
if(!empty($category__not_in)){
$exclude_cats = explode(",",$category__not_in);
$args['category__not_in'] = $exclude_cats;
}
// Tag
if(!empty($tag)){
$args['tag'] = $tag;
}
// Tag Not In
if(!empty($tag__not_in)){
$exclude_tags = explode(",",$tag__not_in);
$args['tag__not_in'] = $exclude_tags;
}
// Date (not using date_query as there was issue with year/month archives)
if(!empty($year)){
$args['year'] = $year;
}
if(!empty($month)){
$args['monthnum'] = $month;
}
if(!empty($day)){
$args['day'] = $day;
}
// Meta Query
if(!empty($meta_key) && !empty($meta_value)){
// Parse multiple meta query
$total = count(explode(":", $meta_key)); // Total meta_query objects
$meta_keys = explode(":", $meta_key); // convert to array
$meta_value = explode(":", $meta_value); // convert to array
$meta_compare = explode(":", $meta_compare); // convert to array
$meta_type = explode(":", $meta_type); // convert to array
if($total == 1){
$args['meta_query'] = array(
alm_get_meta_query($meta_keys[0], $meta_value[0], $meta_compare[0], $meta_type[0]),
);
}
if($total == 2){
$args['meta_query'] = array(
'relation' => $meta_relation,
alm_get_meta_query($meta_keys[0], $meta_value[0], $meta_compare[0], $meta_type[0]),
alm_get_meta_query($meta_keys[1], $meta_value[1], $meta_compare[1], $meta_type[1]),
);
}
if($total == 3){
$args['meta_query'] = array(
'relation' => $meta_relation,
alm_get_meta_query($meta_keys[0], $meta_value[0], $meta_compare[0], $meta_type[0]),
alm_get_meta_query($meta_keys[1], $meta_value[1], $meta_compare[1], $meta_type[1]),
alm_get_meta_query($meta_keys[2], $meta_value[2], $meta_compare[2], $meta_type[2]),
);
}
if($total == 4){
$args['meta_query'] = array(
'relation' => $meta_relation,
alm_get_meta_query($meta_keys[0], $meta_value[0], $meta_compare[0], $meta_type[0]),
alm_get_meta_query($meta_keys[1], $meta_value[1], $meta_compare[1], $meta_type[1]),
alm_get_meta_query($meta_keys[2], $meta_value[2], $meta_compare[2], $meta_type[2]),
alm_get_meta_query($meta_keys[3], $meta_value[3], $meta_compare[3], $meta_type[3]),
);
}
}
// Meta_key, used for ordering by meta value
if(!empty($meta_key)){
$meta_key_single = explode(":", $meta_key);
$args['meta_key'] = $meta_key_single[0];
}
// Author
if(!empty($author_id)){
$args['author'] = $author_id;
}
// Include posts
if(!empty($post__in)){
$post__in = explode(",",$post__in);
$args['post__in'] = $post__in;
}
// Exclude posts
if(!empty($exclude)){
$exclude = explode(",",$exclude);
$args['post__not_in'] = $exclude;
}
// Search Term
if(!empty($s)){
$args['s'] = $s;
}
// Custom Args
if(!empty($custom_args)){
$custom_args_array = explode(";",$custom_args); // Split the $custom_args at ','
foreach($custom_args_array as $argument){ // Loop each $argument
$argument = preg_replace('/\s+/', '', $argument); // Remove all whitespace
$argument = explode(":",$argument); // Split the $argument at ':'
$argument_arr = explode(",", $argument[1]); // explode $argument[1] at ','
if(sizeof($argument_arr) > 1){
$args[$argument[0]] = $argument_arr;
}else{
$args[$argument[0]] = $argument[1];
}
}
}
// Language
if(!empty($lang)){
$args['lang'] = $lang;
}
// Set current page number for determining item number
if($page == 0){
$alm_page_count = 1;
}else{
$alm_page_count = $page + 1;
}
// Next Post Add-on
// Hijack $args and and return previous post only
if($is_previous_post == 'true' && has_action('alm_prev_post_installed')){
$args = apply_filters('alm_prev_post_args', $previous_post_id, $postType);
}
// WP_Query()
$alm_query = new WP_Query( $args );
// If preload, set our loop count and total posts to
if(has_action('alm_preload_installed') && $preloaded === 'true'){
$alm_total_posts = $alm_query->found_posts - $offset + $preloaded_amount;
if($old_offset > 0)
$alm_loop_count = $old_offset;
else
$alm_loop_count = $offset;
}else {
$alm_total_posts = $alm_query->found_posts - $offset;
$alm_loop_count = 0;
}
// Create cache directory
if(!empty($cache_id) && has_action('alm_cache_create_dir')){
$url = $_SERVER['HTTP_REFERER'];
apply_filters('alm_cache_create_dir', $cache_id, $url);
$page_cache = ''; // set our page cache variable
}
if($queryType === 'standard'){
// Run the loop
if ($alm_query->have_posts()) :
$alm_found_posts = $alm_total_posts;
while ($alm_query->have_posts()): $alm_query->the_post();
$alm_loop_count++;
$alm_page = $alm_page_count; // Get page number
$alm_item = ($alm_page_count * $numPosts) - $numPosts + $alm_loop_count; // Get current item
if($theme_repeater != 'null' && has_filter('alm_get_theme_repeater')){
do_action('alm_get_theme_repeater', $theme_repeater, $alm_found_posts, $alm_page, $alm_item);
}else{
include( alm_get_current_repeater($repeater, $type) );//Include repeater template
}
// If cache is enabled
// Build cache include and store in $page_cache variable
if(!empty($cache_id) && has_action('alm_cache_inc')){
$page_cache .= apply_filters('alm_cache_inc', $repeater, $type, $alm_page, $alm_found_posts, $alm_item);
}
endwhile; wp_reset_query();
// If cache is enabled and seo_start_page is 1 (meaning, a user has not requested /page/12/)
// - Only create cached files if the user visits pages in order 1, 2, 3 etc.
if(!empty($cache_id) && has_action('alm_cache_installed') && $seo_start_page == 1){
apply_filters('alm_cache_file', $cache_id, $page, $page_cache);
}
endif;
}elseif($queryType === 'totalposts'){
echo $alm_total_posts;
}
exit;
}
}
/*
* AjaxLoadMore
* The main function responsible for returning the one true AjaxLoadMore Instance to functions everywhere.
*
* @since 2.0.0
*/
function AjaxLoadMore(){
global $ajax_load_more;
if( !isset($ajax_load_more) )
{
$ajax_load_more = new AjaxLoadMore();
}
return $ajax_load_more;
}
// initialize
AjaxLoadMore();
endif; // class_exists check