function wppa_session_start() { global $wpdb; global $wppa_session; if (is_array($wppa_session)) { return true; } // To prevent dup opens // If the session table does not yet exist on activation if (!wppa_table_exists(WPPA_SESSION)) { $wppa_session['id'] = '0'; return false; } // Cleanup first $lifetime = 3600; // Sessions expire after one hour $savetime = 3600; // Save session data for 1 hour // 30 days $expire = time() - $lifetime; $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_SESSION . "` SET `status` = 'expired' WHERE `timestamp` < %s", $expire)); $purge = time() - $savetime; $wpdb->query($wpdb->prepare("DELETE FROM `" . WPPA_SESSION . "` WHERE `timestamp` < %s", $purge)); // Is session already started? $session = $wpdb->get_row($wpdb->prepare("SELECT * FROM `" . WPPA_SESSION . "` WHERE `session` = %s AND `status` = 'valid' LIMIT 1", wppa_get_session_id()), ARRAY_A); $data = isset($session['data']) ? $session['data'] : false; if ($data === false) { $iret = false; $tries = '0'; while (!$iret && $tries < '10') { $iret = wppa_create_session_entry(array()); if (!$iret) { sleep(1); $tries++; } } if ($tries > '3' && $iret) { wppa_log('Debug', 'It took ' . $tries . ' retries to start session ' . $iret); } if (!$iret) { wppa_log('Error', 'Unable to create session.'); return false; } $wppa_session['page'] = '1'; $wppa_session['ajax'] = '0'; $wppa_session['id'] = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `" . WPPA_SESSION . "` WHERE `session` = %s LIMIT 1", wppa_get_session_id())); } else { // Update counter $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_SESSION . "` SET `count` = %s WHERE `id` = %s", $session['count'] + '1', $session['id'])); $wppa_session = unserialize($data); $wppa_session['page'] = isset($wppa_session['page']) ? $wppa_session['page'] + '1' : '1'; $wppa_session['id'] = $session['id']; } return true; }
function wppa_session_start() { global $wpdb; global $wppa_session; // If the session table does not yet exist on activation if (!wppa_table_exists(WPPA_SESSION)) { $wppa_session['id'] = '0'; return false; } $lifetime = 3600; // Sessions expire after one hour $expire = time() - $lifetime; // Is session already started? $session = $wpdb->get_row($wpdb->prepare("SELECT * FROM `" . WPPA_SESSION . "` WHERE `session` = %s AND `status` = 'valid' LIMIT 1", wppa_get_session_id()), ARRAY_A); // Started but expired? if ($session) { if ($session['timestamp'] < $expire) { $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_SESSION . "` SET `status` = 'expired' WHERE `id` = %s", $session['id'])); $session = false; } } // Get data if valid session exists $data = $session ? $session['data'] : false; // No valid session exists, start new if ($data === false) { $iret = wppa_create_session_entry(array()); if (!$iret) { // Failed, retry after 1 sec. sleep(1); $iret = wppa_create_session_entry(array()); if (!$iret) { wppa_log('Err', 'Unable to create session for user ' . wppa_get_user()); // Give up return false; } else { wppa_log('Obs', 'Session ' . $iret . ' created after 1 retry for user ' . wppa_get_user()); } } $wppa_session = array(); $wppa_session['page'] = '0'; $wppa_session['ajax'] = '0'; $wppa_session['id'] = $iret; $wppa_session['user'] = wppa_get_user(); } else { $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_SESSION . "` SET `count` = %s WHERE `id` = %s", $session['count'] + '1', $session['id'])); $data_arr = unserialize($data); if (is_array($data_arr)) { $wppa_session = $data_arr; } else { $wppa_session = array(); } } // Get info for root and sub search if (isset($_REQUEST['wppa-search-submit'])) { $wppa_session['rootbox'] = wppa_get_get('rootsearch') || wppa_get_post('rootsearch'); $wppa_session['subbox'] = wppa_get_get('subsearch') || wppa_get_post('subsearch'); if ($wppa_session['subbox']) { if (isset($wppa_session['use_searchstring'])) { $t = explode(',', $wppa_session['use_searchstring']); foreach (array_keys($t) as $idx) { $t[$idx] .= ' ' . wppa_test_for_search('at_session_start'); $t[$idx] = trim($t[$idx]); $v = explode(' ', $t[$idx]); $t[$idx] = implode(' ', array_unique($v)); } $wppa_session['use_searchstring'] = ' ' . implode(',', array_unique($t)); } else { $wppa_session['use_searchstring'] = wppa_test_for_search('at_session_start'); } } else { $wppa_session['use_searchstring'] = wppa_test_for_search('at_session_start'); } if (isset($wppa_session['use_searchstring'])) { $wppa_session['use_searchstring'] = trim($wppa_session['use_searchstring'], ' ,'); $wppa_session['display_searchstring'] = str_replace(',', ' ∪ ', str_replace(' ', ' ∩ ', $wppa_session['use_searchstring'])); } } // Add missing defaults $defaults = array('has_searchbox' => false, 'rootbox' => false, 'search_root' => '', 'subbox' => false, 'use_searchstring' => '', 'display_searchstring' => '', 'supersearch' => '', 'superview' => 'thumbs', 'superalbum' => '0', 'page' => '0', 'ajax' => '0', 'user' => '', 'id' => '0', 'uris' => array(), 'isrobot' => false); $wppa_session = wp_parse_args($wppa_session, $defaults); ksort($wppa_session); $wppa_session['page']++; if (isset($_SERVER['REQUEST_URI'])) { $wppa_session['uris'][] = date_i18n("g:i") . ' ' . $_SERVER['REQUEST_URI']; if (stripos($_SERVER['REQUEST_URI'], '/robots.txt') !== false) { $wppa_session['isrobot'] = true; } } wppa_save_session(); return true; }
function wppa_session_start() { global $wpdb; global $wppa_session; // If the session table does not yet exist on activation if (!wppa_table_exists(WPPA_SESSION)) { $wppa_session['id'] = '0'; return false; } // Cleanup first $lifetime = 3600; // Sessions expire after one hour $savetime = 3600; // Save session data for 1 hour $expire = time() - $lifetime; $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_SESSION . "` SET `status` = 'expired' WHERE `timestamp` < %s", $expire)); $purge = time() - $savetime; $wpdb->query($wpdb->prepare("DELETE FROM `" . WPPA_SESSION . "` WHERE `timestamp` < %s", $purge)); // Is session already started? $session = $wpdb->get_row($wpdb->prepare("SELECT * FROM `" . WPPA_SESSION . "` WHERE `session` = %s AND `status` = 'valid' LIMIT 1", wppa_get_session_id()), ARRAY_A); $data = $session ? $session['data'] : false; // Not started yet, setup session if ($data === false) { $iret = false; $tries = '0'; while (!$iret && $tries < '10') { $iret = wppa_create_session_entry(array()); if (!$iret) { sleep(1); $tries++; } } if ($tries > '3' && $iret) { wppa_log('Debug', 'It took ' . $tries . ' retries to start session ' . $iret); } if (!$iret) { wppa_log('Error', 'Unable to create session.'); return false; } $wppa_session = array(); $wppa_session['page'] = '0'; $wppa_session['ajax'] = '0'; $wppa_session['id'] = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `" . WPPA_SESSION . "` WHERE `session` = %s LIMIT 1", wppa_get_session_id())); $wppa_session['user'] = wppa_get_user(); } else { $wpdb->query($wpdb->prepare("UPDATE `" . WPPA_SESSION . "` SET `count` = %s WHERE `id` = %s", $session['count'] + '1', $session['id'])); $data_arr = unserialize($data); if (is_array($data_arr)) { $wppa_session = $data_arr; } else { $wppa_session = array(); } } // Get info for root and sub search if (isset($_REQUEST['wppa-search-submit'])) { $wppa_session['rootbox'] = wppa_get_get('rootsearch') || wppa_get_post('rootsearch'); $wppa_session['subbox'] = wppa_get_get('subsearch') || wppa_get_post('subsearch'); if ($wppa_session['subbox']) { if (isset($wppa_session['use_searchstring'])) { $t = explode(',', $wppa_session['use_searchstring']); foreach (array_keys($t) as $idx) { $t[$idx] .= ' ' . wppa_test_for_search('at_session_start'); $t[$idx] = trim($t[$idx]); $v = explode(' ', $t[$idx]); $t[$idx] = implode(' ', array_unique($v)); } $wppa_session['use_searchstring'] = ' ' . implode(',', array_unique($t)); } else { $wppa_session['use_searchstring'] = wppa_test_for_search('at_session_start'); } } else { $wppa_session['use_searchstring'] = wppa_test_for_search('at_session_start'); } if (isset($wppa_session['use_searchstring'])) { $wppa_session['use_searchstring'] = trim($wppa_session['use_searchstring'], ' ,'); $wppa_session['display_searchstring'] = str_replace(',', ' ∪ ', str_replace(' ', ' ∩ ', $wppa_session['use_searchstring'])); } } // Add missing defaults $defaults = array('has_searchbox' => false, 'rootbox' => false, 'search_root' => '', 'subbox' => false, 'use_searchstring' => '', 'display_searchstring' => '', 'supersearch' => '', 'superview' => 'thumbs', 'superalbum' => '0', 'page' => '0', 'ajax' => '0', 'user' => '', 'id' => $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `" . WPPA_SESSION . "` WHERE `session` = %s LIMIT 1", wppa_get_session_id()))); $wppa_session = wp_parse_args($wppa_session, $defaults); ksort($wppa_session); $wppa_session['page']++; wppa_save_session(); return true; }