1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257:
<?php
if (!class_exists('WP_List_Table')) {
require_once(ABSPATH . 'wp-admin/includes/class-wp-list-table.php');
}
class Landing_Pages_Templates_List_Table extends WP_List_Table {
private $template_data;
private $found_data;
private $singular;
private $plural;
private $api_key;
function __construct() {
$lp_data = Landing_Pages_Load_Extensions::get_extended_data();;
$final_data = array();
foreach ($lp_data as $key => $data) {
$array_core_templates = array('countdown-lander', 'default', 'demo', 'dropcap', 'half-and-half', 'simple-two-column', 'super-slick', 'svtle', 'tubelar', 'rsvp-envelope', 'simple-solid-lite', 'three-column-lander');
if ($key == 'lp' || substr($key, 0, 4) == 'ext-') {
continue;
}
if (isset($data['info']['data_type']) && $data['info']['data_type'] == 'metabox') {
continue;
}
if (in_array($key, $array_core_templates)) {
continue;
}
if (isset($_POST['s']) && !empty($_POST['s'])) {
if (!stristr($data['info']['label'], $_POST['s'])) {
continue;
}
}
if (isset($data['thumbnail'])) {
$thumbnail = $data['thumbnail'];
} else if ($key == 'default') {
$thumbnail = get_bloginfo('template_directory') . "/screenshot.png";
} else {
$thumbnail = LANDINGPAGES_UPLOADS_URLPATH . $key . "/thumbnail.png";
}
$this_data['ID'] = $key;
$this_data['template'] = $key;
(array_key_exists('info', $data)) ? $this_data['name'] = $data['info']['label'] : $this_data['name'] = $data['label'];
(array_key_exists('info', $data)) ? $this_data['category'] = $data['info']['category'] : $this_data['category'] = $data['category'];
(array_key_exists('info', $data)) ? $this_data['description'] = $data['info']['description'] : $this_data['description'] = $data['description'];
$this_data['thumbnail'] = $thumbnail;
if (isset($data['info']['version']) && !empty($data['info']['version'])) {
$this_data['version'] = $data['info']['version'];
} else {
$this_data['version'] = "1.0.1";
}
$final_data[] = $this_data;
}
$this->template_data = $final_data;
$this->singular = 'ID';
$this->plural = 'ID';
$this->screen = get_current_screen();
$args = $this->_args;
$args['plural'] = sanitize_key('');
$args['singular'] = sanitize_key('');
$this->_args = $args;
$this->api_key = get_option('inboundnow_master_license_key', '');
}
function get_columns() {
$columns = array('cb' => '<input type="checkbox" />', 'template' => __('Template', 'landing-pages'), 'description' => __('Description', 'landing-pages'), 'category' => __('Category', 'landing-pages'), 'version' => __('Current Version', 'landing-pages')
);
return $columns;
}
function column_cb($item) {
return sprintf('<input type="checkbox" name="template[]" value="%s" />', $item['ID']);
}
function get_sortable_columns() {
$sortable_columns = array('template' => array('template', false), 'category' => array('category', false), 'version' => array('version', false));
return $sortable_columns;
}
function usort_reorder($a, $b) {
$orderby = (!empty($_GET['orderby'])) ? $_GET['orderby'] : 'template';
$order = (!empty($_GET['order'])) ? $_GET['order'] : 'asc';
$result = strcmp($a[$orderby], $b[$orderby]);
return ($order === 'asc') ? $result : -$result;
}
function prepare_items() {
$columns = $this->get_columns();
$hidden = array('ID');
$sortable = $this->get_sortable_columns();
$this->_column_headers = array($columns, $hidden, $sortable);
if (is_array($this->template_data)) {
usort($this->template_data, array(&$this, 'usort_reorder'));
}
$per_page = 10;
$current_page = $this->get_pagenum();
$total_items = count($this->template_data);
if (is_array($this->template_data)) {
$this->found_data = $this->template_data;
}
$this->set_pagination_args(array('total_items' => $total_items,
'per_page' => $per_page
));
$this->items = $this->found_data;
$this->_screen = get_current_screen();
$this->screen = get_current_screen();
}
function column_default($item, $column_name) {
switch ($column_name) {
case 'template':
return '<div class="capty-wrapper" style="overflow: hidden; position: relative; "><div class="capty-image"><img src="' . $item['thumbnail'] . '" class="template-thumbnail" alt="' . $item['name'] . '" id="id_' . $item['ID'] . '" title="' . $item['name'] . '">
</div><div class="capty-caption" style="text-align:center;width:158px;margin-left:0px;color:#ffffff;background:#000;height: 20px; opacity: 0.7; top:-82px;position: relative;">' . $item['name'] . '</div></div>';
case 'category':
return '<span class="post-state">
<span class="pending states">' . $item[$column_name] . '</span>
</span>';
case 'description':
return $item[$column_name];
case 'version':
echo self::check_template_for_update($item);
return;
case 'actions':
echo lp_templates_print_delete_button($item);
return;
default:
return print_r($item, true);
}
}
function admin_header() {
$page = (isset($_GET['page'])) ? esc_attr($_GET['page']) : false;
if ('lp_manage_templates' != $page) {
return;
}
}
function no_items() {
_e('No premium templates installed. Templates included in the Landing Pages core plugin will not be listed here.', 'landing-pages');
}
function get_bulk_actions() {
if (defined('INBOUND_PRO_PATH') && Inbound_Pro_Plugin::get_customer_status() > 0 ) {
return array(
'0' => __('See Inbound Pro -> Templates for template options. ', 'landing-pages'),
);
}
$actions = array(
'upgrade' => __('Upgrade', 'landing-pages'), 'delete' => __('Delete', 'landing-pages'),
);
return $actions;
}
function check_template_for_update($item) {
$version = $item['version'];
if (defined('INBOUND_PRO_PATH') && Inbound_Pro_Plugin::get_customer_status() > 0 ) {
return $version;
}
$api_response = self::poll_api($item);
if ($api_response) {
if (version_compare($version, $api_response['new_version'], '<')) {
$template_page = LANDINGPAGES_STORE_URL . "/downloads/" . $item['ID'] . "/";
$html = '<div class="update-message">' . $item['version'] . ' <font class="update-available">Version ' . $api_response['new_version'] . __( 'available' , 'inbound-pro' ). '</font><br> <a title="' . $item['name'] . '" class="thickbox" href="' . $template_page . '" target="_blank">'. __( 'View template details' , 'inbound-pro' ) .'</a> ';
$html .= 'or <a href="?post_type=landing-page&page=lp_manage_templates&action=upgrade&template%5B%5D=' . $item['ID'] . '">'. __( 'update now' , 'inbound-pro' ) .'</a>.</div>';
return $html;
} else {
return $item['version'];
}
} else {
return $item['version'];
}
}
function poll_api( $item ) {
$api_params = array('edd_action' => 'inbound_get_version', 'license' => $this->api_key, 'name' => $item['name'], 'slug' => $item['ID'], 'nature' => 'template',);
$request = wp_remote_post('https://www.inboundnow.com', array('timeout' => 15, 'sslverify' => false, 'body' => $api_params));
if (!is_wp_error($request)) {
$request = json_decode(wp_remote_retrieve_body($request), true);
if ($request) $request['sections'] = maybe_unserialize($request['sections']);
return $request;
} else {
return false;
}
}
}