slug;
$version = $response->new_version;
foreach($addons as $key=>$addon){
if($addon['path'] === $slug){
$index = $key;
}
}
if(isset($index)){
$style = 'display: block; padding: 10px 5px 2px;';
$addon = $addons[$index];
if(isset($addon)){
$name = ''. $addon['name'] .'';
$status = get_option($addon['status']);
// Expired
if($status === 'expired'){
printf('%s %s',
__( 'Looks like your subscription has expired.', 'ajax-load-more' ),
__( 'Please login to your Account to renew the license.', 'ajax-load-more' )
);
}
// Invalid/Inactive
if($status === 'invalid' || $status === 'disabled'){
printf('%s %s',
__( 'Looks like your license is inactive and/or invalid.', 'ajax-load-more' ),
__( 'Please activate the license or login to your Account to renew the license.', 'ajax-load-more' )
);
}
// Deactivated
if($status === 'deactivated'){
printf('%s %s',
__( 'Looks like your license has been deactivated.', 'ajax-load-more' ),
__( 'Please activate the license to update.', 'ajax-load-more' )
);
}
}
}
}
/*
* alm_plugin_row
* Create a notification in the plugin row
*
* @since 5.2
*/
function alm_plugin_row( $plugin_name ) {
$addons = alm_get_addons();
$pro_addons = alm_get_pro_addon();
$addons = array_merge(alm_get_addons(), alm_get_pro_addon());
foreach($addons as $addon){
if ( $plugin_name == $addon['path'].'/'.$addon['path'].'.php' ) {
$status = get_option($addon['status']);
$style = 'margin: 5px 20px 6px 40px;';
// !valid
if($status !== 'valid'){
$name = ($addon['name'] === 'Ajax Load More Pro') ? ''. $addon['name'] .'' : ''. 'Ajax Load More: '. $addon['name'] .'';
$row = '
';
$row .= sprintf(__('%sRegister%s your copy of %s to receive access to automatic upgrades and support. Need a license key? %sPurchase one now%s.'), '', '', $name, '', '');
$row .= '
';
echo $row;
}
}
}
}
/*
* alm_render_transient_notification
* Render a notification in the dashboard
*
* @since 4.0
*/
function alm_render_transient_notification(){
if(!has_action('alm_pro_installed')){
$msg = '🔥 Introducing Ajax Load More Pro - get instant access to all 13 add-ons in a single installation! Upgrade Now';
alm_transient_notification($msg, 'alm_pro_upgrade', 'YEAR_IN_SECONDS', true);
}
}
/*
* alm_transient_notification
* Display a notification on pages with transient
*
* @since 4.0
*/
function alm_transient_notification($message = '', $transient = '', $duration = 'YEAR_IN_SECONDS', $dismissible = true, $type = 'info'){
if(!empty($transient)){
$transient_value = get_transient( $transient );
$dismissible = ($dismissible) ? ' is-dismissible' : '';
if(!isset($transient_value) || empty($transient_value) && !empty($message)){
?>
$action,
'license' => $license,
'item_id' => $item_id, // the ID of our product in EDD
'url' => home_url()
);
// Call API
$response = wp_remote_post( ALM_STORE_URL, array( 'body' => $api_params, 'timeout' => 15, 'sslverify' => false ) );
// make sure the response came back okay
if ( is_wp_error($response) ){
return false;
}
$license_data = $response['body'];
$license_data = json_decode($license_data); // decode the license data
$return["success"] = $license_data->success;
$msg = '';
if($type === 'activate'){
$return["license_limit"] = $license_data->license_limit;
$return["expires"] = $license_data->expires;
$return["site_count"] = $license_data->site_count;
$return["activations_left"] = $license_data->activations_left;
$return["item_name"] = $license_data->item_name;
if($license_data->activations_left === 0 && $license_data->success === false){
$msg = 'You\'re out of available licenses ('. $license_data->license_limit .' / '. $license_data->site_count .'). Please visit the '.$license_data->item_name.' website to add additional licenses.';
}
}
$return["msg"] = $msg;
// If error, make error the status of the license
$license_status = (isset($license_data->error)) ? $license_data->error : $license_data->license;
$return["license"] = $license_status;
// Update the options table
update_option( $option_status, $license_status);
update_option( $option_key, $license );
// Set transient value to store license status
set_transient( "alm_{$item_id}_{$license}", $license_status, 96 * HOUR_IN_SECONDS ); // 4 days
// Send the response
wp_send_json($return);
} else {
echo __('You don\'t belong here.', 'ajax-load-more');
}
}
/*
* alm_admin_notice_errors
* Invalid license notifications
*
* @since 3.3.0
*/
function alm_admin_notice_errors() {
$screen = get_current_screen();
$alm_is_admin_screen = alm_is_admin_screen();
// Exit if screen is not dashboard, plugins, settings or ALM admin.
if(!$alm_is_admin_screen && $screen->id !== 'dashboard' && $screen->id !== 'plugins' && $screen->id !== 'options-general' && $screen->id !== 'options'){
return;
}
$class = 'notice error alm-err-notice';
$message = '';
$count = 0;
if(has_action('alm_pro_installed')){ // Pro
$addons = alm_get_pro_addon();
$message = __( 'You have an invalid or expired Ajax Load More Pro license key - please visit the License section to input your key or purchase one now.', 'ajax-load-more' );
} else { // Other Addons
$addons = alm_get_addons();
$message = __( 'You have invalid or expired Ajax Load More license keys - please visit the Licenses section and input your keys.', 'ajax-load-more' );
}
// Loop each addon
foreach($addons as $addon){
if (has_action($addon['action'])){
$key = $addon['key']; // Option key
$status = get_option($addon['status']); // license status
// Check license
$license_status = alm_license_check($addon['item_id'], get_option($key), $status);
if( !isset($status) || empty($status) || $license_status !== 'valid' ) {
$count++;
}
}
}
// Print result
if( $count > 0 ) {
printf( '
%2$s
', $class, $message );
}
}
add_action( 'admin_notices', 'alm_admin_notice_errors' );
/*
* alm_license_check
* Check the status of a license
*
* @param {String} $item_id The ID of the product
* @param {String} $license The actual license key
* @param {String} $option_status The status of the license
* @updated 5.1.7
* @since 2.8.3
*/
function alm_license_check($item_id = null, $license = null, $option_status = null){
if(!$item_id || !$license || !$option_status){
return false;
}
// Get plugin transient for license status
if(get_transient( "alm_{$item_id}_{$license}")){
// Transient exists
return get_transient( "alm_{$item_id}_{$license}");
} else {
$api_params = array(
'edd_action' => 'check_license',
'license' => $license,
'item_id' => $item_id,
'url' => home_url()
);
$response = wp_remote_post( ALM_STORE_URL, array( 'body' => $api_params, 'timeout' => 15, 'sslverify' => false ) );
if ( is_wp_error( $response ) ) {
return false;
}
// Get Data
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
// Update the options table
update_option( $option_status, $license_data->license);
// Set transient value to store license status
set_transient( "alm_{$item_id}_{$license}", $license_data->license, 168 * HOUR_IN_SECONDS ); // 7 days
// Return the status
return $license_data->license;
}
}
/*
* alm_get_layout
* Get layout and return value to repeater template
*
* @since 2.8.3
* @updated 2.14.0
*/
function alm_get_layout(){
if (current_user_can( 'edit_theme_options' )){
$nonce = sanitize_text_field($_GET["nonce"]);
$type = sanitize_text_field($_GET["type"]);
$custom = sanitize_text_field($_GET["custom"]);
// Check our nonce, if they don't match then bounce!
if (! wp_verify_nonce( $nonce, 'alm_repeater_nonce' ))
die('Error - unable to verify nonce, please try again.');
if($type === 'default'){ // Default Layout
$content = file_get_contents(ALM_PATH.'admin/includes/layout/'.$type.'.php');
}else{ // Custom Layout
if($custom == 'true'){
$dir = 'alm_layouts';
if(is_child_theme()){
$path = get_stylesheet_directory().'/'. $dir .'/' .$type;
// if child theme does not have the layout, check the parent theme
if(!file_exists($path)){
$path = get_template_directory().'/'. $dir .'/' .$type;
}
}
else{
$path = get_template_directory().'/'. $dir .'/' .$type;
}
$content = file_get_contents($path);
}
// Layouts Add-on
else {
$content = file_get_contents(ALM_LAYOUTS_PATH.'layouts/'.$type.'.php');
}
}
$return["value"] = $content;
echo json_encode($return);
}else {
echo __('You don\'t belong here.', 'ajax-load-more');
}
die();
}
/*
* alm_get_layouts
* Get the list of layout templates
*
* @since 2.8.7
*/
function alm_get_layouts(){ // do_action
include( ALM_PATH . 'admin/includes/components/layout-list.php');
}
/*
* alm_admin_vars
* Create admin variables and ajax nonce
*
* @since 2.0.0
*/
function alm_admin_vars() { ?>
get_col( "SELECT blog_id FROM $wpdb->blogs" );
// Loop all blogs and run update routine
foreach ( $blog_ids as $blog_id ) {
switch_to_blog( $blog_id );
alm_update_template_files();
restore_current_blog();
}
} else {
alm_update_template_files();
}
update_option( "alm_version", ALM_VERSION ); // Update the WP Option tbl with the new version num
}
/**
* alm_update_template_files
* Update routine for template files
*
* @since 2.7.2
*/
function alm_update_template_files(){
global $wpdb;
$table_name = $wpdb->prefix . "alm";
// Get all rows where name is 'default'
$rows = $wpdb->get_results("SELECT * FROM $table_name WHERE name = 'default'");
if($rows){
foreach( $rows as $row ) { // Loop $rows
$data = $wpdb->get_var("SELECT repeaterDefault FROM $table_name WHERE name = 'default'");
// Create Base Repeater Dir (alm_templates)
$base_dir = AjaxLoadMore::alm_get_repeater_path();
AjaxLoadMore::alm_mkdir($base_dir);
$file = $base_dir .'/default.php';
// Wrap is file_exists to avoid updating without cause
if( !file_exists($file) ){
try {
$o = fopen($file, 'w+'); //Open file
if ( !$o ) {
throw new Exception(__('[Ajax Load More] Error opening default repeater template - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files within the /ajax-load-more/core/repeater directory', 'ajax-load-more'));
}
$w = fwrite($o, $data); //Save the file
if ( !$w ) {
throw new Exception(__('[Ajax Load More] Error updating default repeater template - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files within the /ajax-load-more/core/repeater directory.', 'ajax-load-more'));
}
fclose($o); // Close file
} catch ( Exception $e ) { // Display error message in console.
if(!isset($options['_alm_error_notices']) || $options['_alm_error_notices'] == '1'){
echo '';
}
}
}
}
}
}
/**
* alm_admin_menu
* Create Admin Menu
*
* @since 2.0.0
*/
add_action( 'admin_menu', 'alm_admin_menu' );
function alm_admin_menu() {
$icon = 'dashicons-plus-alt';
$icon = ALM_ADMIN_URL . "/img/alm-logo-16x16.svg";
$alm_page = add_menu_page(
'Ajax Load More',
'Ajax Load More',
'edit_theme_options',
'ajax-load-more',
'alm_settings_page',
$icon
);
$alm_settings_page = add_submenu_page(
'ajax-load-more',
__('Settings', 'ajax-load-more'),
__('Settings', 'ajax-load-more'),
'edit_theme_options',
'ajax-load-more',
'alm_settings_page'
);
$alm_template_page = add_submenu_page(
'ajax-load-more',
__('Repeater Templates', 'ajax-load-more'),
__('Repeater Templates', 'ajax-load-more'),
'edit_theme_options',
'ajax-load-more-repeaters',
'alm_repeater_page'
);
$alm_shortcode_page = add_submenu_page(
'ajax-load-more',
__('Shortcode Builder', 'ajax-load-more'),
__('Shortcode Builder', 'ajax-load-more'),
'edit_theme_options',
'ajax-load-more-shortcode-builder',
'alm_shortcode_builder_page'
);
if(!has_action('alm_pro_installed')){ // Not Pro
$alm_addons_page = add_submenu_page(
'ajax-load-more',
__('Add-ons', 'ajax-load-more'),
__('Add-ons', 'ajax-load-more'),
'edit_theme_options',
'ajax-load-more-add-ons',
'alm_add_ons_page'
);
}
$alm_extensions_page = add_submenu_page(
'ajax-load-more',
__('Extensions', 'ajax-load-more'),
__('Extensions', 'ajax-load-more'),
'edit_theme_options',
'ajax-load-more-extensions',
'alm_extensions_page'
);
$alm_help_page = add_submenu_page(
'ajax-load-more',
__('Help', 'ajax-load-more'),
__('Help', 'ajax-load-more'),
'edit_theme_options',
'ajax-load-more-help',
'alm_help_page'
);
$license_title = (has_action('alm_pro_installed')) ? __('License', 'ajax-load-more') : __('Licenses', 'ajax-load-more');
$alm_licenses_page = add_submenu_page(
'ajax-load-more',
$license_title,
$license_title,
'edit_theme_options',
'ajax-load-more-licenses',
'alm_licenses_page'
);
$before_link = '';
$after_link = '';
$style_link_icon = 'style="opacity: 0.6; font-size: 18px; height: 18px; width: 18px; position: relative; left: -2px;"';
// Pro
if(has_action('alm_pro_installed')){
$alm_pro_page = add_submenu_page(
'ajax-load-more',
__('Pro', 'ajax-load-more'),
$before_link . ' '. __('Pro', 'ajax-load-more') . $after_link,
'edit_theme_options',
'ajax-load-more-pro',
'alm_pro_page'
);
} else {
$alm_go_pro_page = add_submenu_page(
'ajax-load-more',
__('Pro', 'ajax-load-more'),
$before_link . ' '. __('Go Pro', 'ajax-load-more') . $after_link,
'edit_theme_options',
'ajax-load-more-go-pro',
'alm_go_pro_page'
);
}
// Cache
if(has_action('alm_cache_installed')){
$alm_cache_page = add_submenu_page(
'ajax-load-more',
__('Cache', 'ajax-load-more'),
$before_link . ' ' .__('Cache', 'ajax-load-more') . $after_link,
'edit_theme_options',
'ajax-load-more-cache',
'alm_cache_page'
);
add_action( 'load-' . $alm_cache_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_cache_page, 'alm_load_cache_admin_js' );
add_action( 'load-' . $alm_cache_page, 'alm_set_admin_nonce' );
}
// Filters
if(has_action('alm_filters_installed')){
if(has_action('alm_cache_installed')){
$before_link = '';
}
$alm_filters_page = add_submenu_page(
'ajax-load-more',
__('Filters', 'ajax-load-more'),
$before_link . ' '. __('Filters', 'ajax-load-more') . $after_link,
'edit_theme_options',
'ajax-load-more-filters',
'alm_filters_page'
);
add_action( 'load-' . $alm_filters_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_filters_page, 'alm_load_filters_admin_scripts' );
add_action( 'load-' . $alm_filters_page, 'alm_set_admin_nonce' );
}
// WooCommerce
if(has_action('alm_woocommerce_installed') && in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option('active_plugins')))){
if(has_action('alm_cache_installed') || has_action('alm_filters_installed')){
$before_link = '';
}
$wooIcon = '';
$alm_woocommerce_page = add_submenu_page(
'ajax-load-more',
__('WooCommerce', 'ajax-load-more'),
$before_link . $wooIcon . ' '. __('WooCommerce', 'ajax-load-more') . $after_link,
'edit_theme_options',
'ajax-load-more-woocommerce',
'alm_woocommerce_page'
);
add_action( 'load-' . $alm_woocommerce_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_woocommerce_page, 'alm_set_admin_nonce' );
}
//Add our admin scripts
add_action( 'load-' . $alm_settings_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_settings_page, 'alm_set_admin_nonce' );
add_action( 'load-' . $alm_template_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_template_page, 'alm_set_admin_nonce' );
add_action( 'load-' . $alm_shortcode_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_shortcode_page, 'alm_set_admin_nonce' );
add_action( 'load-' . $alm_help_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_help_page, 'alm_set_admin_nonce' );
// Pro
if(has_action('alm_pro_installed')){
add_action( 'load-' . $alm_pro_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_pro_page, 'alm_load_pro_admin_js' );
add_action( 'load-' . $alm_pro_page, 'alm_set_admin_nonce' );
} else {
add_action( 'load-' . $alm_addons_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_addons_page, 'alm_set_admin_nonce' );
add_action( 'load-' . $alm_go_pro_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_go_pro_page, 'alm_set_admin_nonce' );
}
add_action( 'load-' . $alm_extensions_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_extensions_page, 'alm_set_admin_nonce' );
add_action( 'load-' . $alm_licenses_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_licenses_page, 'alm_set_admin_nonce' );
}
/*
* alm_settings_page
* Settings page
*
* @since 2.0.0
*/
function alm_settings_page(){
include_once( ALM_PATH . 'admin/views/settings.php');
}
/*
* alm_repeater_page
* Custom Repeaters
*
* @since 2.0.0
*/
function alm_repeater_page(){
include_once( ALM_PATH . 'admin/views/repeater-templates.php');
}
/*
* alm_shortcode_builder_page
* Shortcode Builder
*
* @since 2.0.0
*/
function alm_shortcode_builder_page(){
include_once( ALM_PATH . 'admin/views/shortcode-builder.php');
}
/*
* alm_add_ons_page
* Ajax Load More Add-ons
*
* @since 2.0.0
*/
function alm_add_ons_page(){
include_once( ALM_PATH . 'admin/views/add-ons.php');
}
/*
* alm_extensions_ons_page
* Ajax Load More Add-ons
*
* @since 3.0.0
*/
function alm_extensions_page(){
include_once( ALM_PATH . 'admin/views/extensions.php');
}
/*
* alm_extensions_ons_page
* Ajax Load More Add-ons
*
* @since 4.0.0
*/
function alm_go_pro_page(){
include_once( ALM_PATH . 'admin/views/go-pro.php');
}
/*
* alm_example_page
* Examples Page
*
* @since 2.0.0
*/
function alm_examples_page(){
include_once( ALM_PATH . 'admin/views/examples.php');
}
/*
* alm_help_page
* Help Page (Implementation Inforgraphic)
*
* @since 2.8.7
*/
function alm_help_page(){
include_once( ALM_PATH . 'admin/views/help.php');
}
/*
* alm_licenses_page
* Ajax Load More Licenses
*
* @since 2.7.0
*/
function alm_licenses_page(){
include_once( ALM_PATH . 'admin/views/licenses.php');
}
/*
* alm_cache_page
* Cache Add-on page
*
* @since 3.6.0
*/
function alm_pro_page(){
include_once( ALM_PRO_ADMIN_PATH . 'admin/views/pro.php');
}
/*
* alm_cache_page
* Cache Add-on page
*
* @since 2.6.0
*/
function alm_cache_page(){
include_once( ALM_CACHE_ADMIN_PATH . 'admin/views/cache.php');
}
/*
* alm_filters_page
* Filters Add-on page
*
* @since 3.4.0
*/
function alm_filters_page(){
include_once( ALM_FILTERS_PATH . 'admin/functions.php');
include_once( ALM_FILTERS_PATH . 'admin/views/filters.php');
}
/*
* alm_woocommerce_page
* WooCommerce Add-on page
*
* @since 5.3.0
*/
function alm_woocommerce_page(){
include_once( ALM_WOO_PATH. 'admin/views/woocommerce.php');
}
/**
* alm_load_admin_js
* Load Admin JS
*
* @since 2.0.15
*/
function alm_load_admin_js(){
add_action( 'admin_enqueue_scripts', 'alm_enqueue_admin_scripts' );
}
// Pro Scripts
function alm_load_pro_admin_js(){
if(class_exists('ALMPro')){
ALMPro::alm_enqueue_pro_admin_scripts();
}
}
// Cache Scripts
function alm_load_cache_admin_js(){
if(class_exists('ALMCache')){
ALMCache::alm_enqueue_cache_admin_scripts();
}
}
// Filters Scripts
function alm_load_filters_admin_scripts(){
if(class_exists('ALMFilters')){
ALMFilters::alm_enqueue_filters_admin_scripts();
}
}
/**
* alm_enqueue_admin_scripts
* Enqueue Admin JS
*
* @since 2.0.15
*/
function alm_enqueue_admin_scripts(){
// Admin CSS
wp_enqueue_style( 'alm-admin', ALM_ADMIN_URL. 'dist/css/admin.css', '', ALM_VERSION);
wp_enqueue_style( 'alm-core', ALM_URL. '/core/dist/css/ajax-load-more.css', '', ALM_VERSION);
// disable ACF select2 on ALM pages
wp_dequeue_style( 'acf-input' );
// CodeMirror Syntax Highlighting if on Repater Template page
$screen = get_current_screen();
if ( in_array( $screen->id, array( 'ajax-load-more_page_ajax-load-more-repeaters') ) ){
//CodeMirror CSS
wp_enqueue_style( 'alm-codemirror-css', ALM_ADMIN_URL. 'codemirror/lib/codemirror.css' );
//CodeMirror JS
wp_enqueue_script( 'alm-codemirror', ALM_ADMIN_URL. 'codemirror/lib/codemirror.js');
wp_enqueue_script( 'alm-codemirror-matchbrackets', ALM_ADMIN_URL. 'codemirror/addon/edit/matchbrackets.js' );
wp_enqueue_script( 'alm-codemirror-htmlmixed', ALM_ADMIN_URL. 'codemirror/mode/htmlmixed/htmlmixed.js' );
wp_enqueue_script( 'alm-codemirror-xml', ALM_ADMIN_URL. 'codemirror/mode/xml/xml.js' );
wp_enqueue_script( 'alm-codemirror-javascript', ALM_ADMIN_URL. 'codemirror/mode/javascript/javascript.js' );
wp_enqueue_script( 'alm-codemirror-mode-css', ALM_ADMIN_URL. 'codemirror/mode/css/css.js' );
wp_enqueue_script( 'alm-codemirror-clike', ALM_ADMIN_URL. 'codemirror/mode/clike/clike.js' );
wp_enqueue_script( 'alm-codemirror-php', ALM_ADMIN_URL. 'codemirror/mode/php/php.js' );
}
// Admin JS
wp_enqueue_script( 'jquery-form' );
wp_enqueue_script( 'alm-admin', ALM_ADMIN_URL. 'dist/js/admin.js', array( 'jquery' ), ALM_VERSION);
wp_enqueue_script( 'alm-shortcode-builder', ALM_ADMIN_URL. 'shortcode-builder/js/shortcode-builder.js', array( 'jquery' ), ALM_VERSION);
}
/*
* alm_save_repeater
* Repeater Save function
*
* @return response
* @since 2.0.0
* @updated 3.5
*/
function alm_save_repeater(){
if (current_user_can( 'edit_theme_options' )){
global $wpdb;
$table_name = $wpdb->prefix . "alm";
$blog_id = $wpdb->blogid;
$options = get_option( 'alm_settings' ); //Get plugin options
$nonce = $_POST["nonce"];
if (! wp_verify_nonce( $nonce, 'alm_repeater_nonce' )){ // Check our nonce
die('Error - unable to verify nonce, please try again.');
}
// Get _POST Vars
$c = Trim(stripslashes($_POST["value"])); // Repeater Value
$n = Trim(stripslashes($_POST["repeater"])); // Repeater name
$t = Trim(stripslashes($_POST["type"])); // Repeater name
$a = Trim(stripslashes($_POST["alias"])); // Repeater alias
// Default
if($t === 'default'){
// Create Base Repeater Dir (alm-templates)
$base_dir = AjaxLoadMore::alm_get_repeater_path();
AjaxLoadMore::alm_mkdir($base_dir);
$f = $base_dir .'/default.php';
}
// Custom Repeaters v2
elseif($t === 'unlimited'){
// Custom Repeaters 2.5+
if(ALM_UNLIMITED_VERSION >= '2.5'){
// Get path to repeater dir (alm_templates)
$base_dir = AjaxLoadMore::alm_get_repeater_path();
AjaxLoadMore::alm_mkdir($base_dir);
$f = $base_dir .'/'. $n .'.php';
} else {
$f = ($blog_id > 1) ? ALM_UNLIMITED_PATH. 'repeaters/'. $blog_id .'/'. $n .'.php' : ALM_UNLIMITED_PATH. 'repeaters/'. $n .'.php';
}
}
// Custom Repeaters v1
else{
$f = ALM_REPEATER_PATH. 'repeaters/'.$n .'.php';
}
// Write Repeater Template
try {
$o = fopen($f, 'w+'); //Open file
if ( !$o ) {
throw new Exception(__('[Ajax Load More] Unable to open repeater template - '.$f.' - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files.', 'ajax-load-more'));
}
$w = fwrite($o, $c); //Save the file
if ( !$w ) {
throw new Exception(__('[Ajax Load More] Error saving repeater template - '.$f.' - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files.', 'ajax-load-more'));
}
fclose($o); //now close it
} catch ( Exception $e ) {
// Display error message in console.
if(!isset($options['_alm_error_notices']) || $options['_alm_error_notices'] == '1'){
echo '';
}
}
// Save to database
if($t === 'default') {
$data_update = array('repeaterDefault' => "$c", 'pluginVersion' => ALM_VERSION);
$data_where = array('name' => "default");
}
elseif($t === 'unlimited'){ // Custom Repeaters v2
$table_name = $wpdb->prefix . "alm_unlimited";
$data_update = array('repeaterDefault' => "$c", 'alias' => "$a", 'pluginVersion' => ALM_UNLIMITED_VERSION);
$data_where = array('name' => $n);
}
else{ // Custom Repeaters
$data_update = array('repeaterDefault' => "$c", 'alias' => "$a", 'pluginVersion' => ALM_REPEATER_VERSION);
$data_where = array('name' => $n);
}
$wpdb->update($table_name , $data_update, $data_where);
//Our results
if($w){
echo ''. __('Template Saved Successfully', 'ajax-load-more') .'';
} else {
echo ''. __('Error Writing File', 'ajax-load-more') .' '. __('Something went wrong and the data could not be saved.', 'ajax-load-more');
}
wp_die();
}else {
echo __('You don\'t belong here.', 'ajax-load-more');
}
}
/*
* alm_update_repeater
* Update repeater template from database
* User case: User deletes plugin, then installs again and the version has not change. Click 'Update from DB' option to load template.
*
* @return Database value
* @since 2.5.0
*/
function alm_update_repeater(){
if (current_user_can( 'edit_theme_options' )){
$nonce = $_POST["nonce"];
// Check our nonce
if (! wp_verify_nonce( $nonce, 'alm_repeater_nonce' )){ // Check our nonce
die('Error - unable to verify nonce, please try again.');
}
// Get _POST Vars
$n = Trim(stripslashes($_POST["repeater"])); // Repeater name
$t = Trim(stripslashes($_POST["type"])); // Repeater type (default | unlimited)
// Get value from database
global $wpdb;
$table_name = $wpdb->prefix . "alm";
if($t === 'default') $n = 'default';
if($t === 'unlimited') $table_name = $wpdb->prefix . "alm_unlimited";
//$the_repeater = $wpdb->get_var("SELECT repeaterDefault FROM " . $table_name . " WHERE name = '$n'");
$the_repeater = $wpdb->get_var("SELECT repeaterDefault FROM " . $table_name . " WHERE name = '".esc_sql($n)."'");
echo $the_repeater; // Return repeater value
die();
} else {
echo __('You don\'t belong here.', 'ajax-load-more');
}
}
/*
* alm_get_tax_terms
* Get taxonomy terms for shortcode builder
*
* @return Taxonomy Terms
* @since 2.1.0
*/
function alm_get_tax_terms(){
if (current_user_can( 'edit_theme_options' )){
$nonce = $_GET["nonce"];
// Check our nonce, if they don't match then bounce!
if (! wp_verify_nonce( $nonce, 'alm_repeater_nonce' ))
die('Get Bounced!');
$taxonomy = (isset($_GET['taxonomy'])) ? $_GET['taxonomy'] : '';
$index = (isset($_GET['index'])) ? $_GET['index'] : '1';
$tax_args = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => false
);
$terms = get_terms($taxonomy, $tax_args);
$returnVal = '';
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
$returnVal .= '