Changeset 551 for trunk/lib/App.inc.php
- Timestamp:
- Nov 25, 2015 7:10:03 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/App.inc.php
r550 r551 1346 1346 // Get URL from stored boomerang. Allow non specific URL if ID not valid. 1347 1347 if ($this->validBoomerangURL($id, true)) { 1348 if (isset($id) && isset($_SESSION['_app'][$this->_ns]['boomerang'][ 'url'][$id])) {1349 $url = $_SESSION['_app'][$this->_ns]['boomerang'][ 'url'][$id];1348 if (isset($id) && isset($_SESSION['_app'][$this->_ns]['boomerang'][$id])) { 1349 $url = $_SESSION['_app'][$this->_ns]['boomerang'][$id]['url']; 1350 1350 $this->logMsg(sprintf('dieBoomerangURL(%s) found: %s', $id, $url), LOG_DEBUG, __FILE__, __LINE__); 1351 1351 } else { 1352 $url = end($_SESSION['_app'][$this->_ns]['boomerang'] ['url']);1352 $url = end($_SESSION['_app'][$this->_ns]['boomerang'])['url']; 1353 1353 $this->logMsg(sprintf('dieBoomerangURL(%s) using: %s', $id, $url), LOG_DEBUG, __FILE__, __LINE__); 1354 1354 } … … 1366 1366 } 1367 1367 1368 // A redirection will never happen immediately twice. 1369 // Set the time so ensure this doesn't happen. 1370 $_SESSION['_app'][$this->_ns]['boomerang']['time'] = time(); 1368 // A redirection will never happen immediately twice. Set the time so we can ensure this doesn't happen. 1369 $_SESSION['_app'][$this->_ns]['boomerang_last_redirect_time'] = time(); 1370 1371 // Do it. 1371 1372 $this->dieURL($url, $carry_args); 1372 1373 } … … 1392 1393 $url = preg_replace(array('/([&?])boomerang=[^&?]+[&?]?/', '/[&?]$/'), array('$1', ''), $url); 1393 1394 1394 if (isset($_SESSION['_app'][$this->_ns]['boomerang'] ['url']) && is_array($_SESSION['_app'][$this->_ns]['boomerang']['url']) && !empty($_SESSION['_app'][$this->_ns]['boomerang']['url'])) {1395 if (isset($_SESSION['_app'][$this->_ns]['boomerang']) && is_array($_SESSION['_app'][$this->_ns]['boomerang']) && !empty($_SESSION['_app'][$this->_ns]['boomerang'])) { 1395 1396 // If the ID=>URL pair currently exists in the boomerang array, delete. 1396 foreach (array_keys($_SESSION['_app'][$this->_ns]['boomerang'] ['url'], $url) as $existing_key) {1397 if ($existing_ key== $id) {1397 foreach (array_keys($_SESSION['_app'][$this->_ns]['boomerang']) as $existing_id) { 1398 if ($existing_id === $id) { 1398 1399 $this->logMsg(sprintf('Found and deleting existing ID=>URL pair: %s=>%s', $id, $url), LOG_DEBUG, __FILE__, __LINE__); 1399 unset($_SESSION['_app'][$this->_ns]['boomerang'][ 'url'][$existing_key]);1400 unset($_SESSION['_app'][$this->_ns]['boomerang'][$existing_id]); 1400 1401 } 1401 1402 } … … 1403 1404 1404 1405 if (isset($id)) { 1405 $_SESSION['_app'][$this->_ns]['boomerang']['url'][$id] = $url; 1406 $_SESSION['_app'][$this->_ns]['boomerang'][$id] = array( 1407 'url' => $url, 1408 'added_time' => time(), 1409 ); 1406 1410 } else { 1407 $_SESSION['_app'][$this->_ns]['boomerang']['url'][] = $url; 1408 } 1411 $_SESSION['_app'][$this->_ns]['boomerang'][] = array( 1412 'url' => $url, 1413 'added_time' => time(), 1414 ); 1415 } 1416 1409 1417 $this->logMsg(sprintf('setBoomerangURL(%s): %s', $id, $url), LOG_DEBUG, __FILE__, __LINE__); 1410 1418 return true; … … 1428 1436 1429 1437 if (isset($id)) { 1430 if (isset($_SESSION['_app'][$this->_ns]['boomerang'][ 'url'][$id])) {1431 return $_SESSION['_app'][$this->_ns]['boomerang'][ 'url'][$id];1438 if (isset($_SESSION['_app'][$this->_ns]['boomerang'][$id])) { 1439 return $_SESSION['_app'][$this->_ns]['boomerang'][$id]['url']; 1432 1440 } else { 1433 1441 return ''; 1434 1442 } 1435 } else if (is_array($_SESSION['_app'][$this->_ns]['boomerang'] ['url'])) {1436 return end($_SESSION['_app'][$this->_ns]['boomerang'] ['url']);1443 } else if (is_array($_SESSION['_app'][$this->_ns]['boomerang']) && !empty($_SESSION['_app'][$this->_ns]['boomerang'])) { 1444 return end($_SESSION['_app'][$this->_ns]['boomerang'])['url']; 1437 1445 } else { 1438 1446 return false; … … 1452 1460 } 1453 1461 1454 if (isset($id) && isset($_SESSION['_app'][$this->_ns]['boomerang'][ 'url'][$id])) {1462 if (isset($id) && isset($_SESSION['_app'][$this->_ns]['boomerang'][$id])) { 1455 1463 $url = $this->getBoomerangURL($id); 1456 unset($_SESSION['_app'][$this->_ns]['boomerang'][ 'url'][$id]);1457 } else if (is_array($_SESSION['_app'][$this->_ns]['boomerang'] ['url'])) {1458 $url = array_pop($_SESSION['_app'][$this->_ns]['boomerang'] ['url']);1464 unset($_SESSION['_app'][$this->_ns]['boomerang'][$id]); 1465 } else if (is_array($_SESSION['_app'][$this->_ns]['boomerang'])) { 1466 $url = array_pop($_SESSION['_app'][$this->_ns]['boomerang'])['url']; 1459 1467 } 1460 1468 $this->logMsg(sprintf('deleteBoomerangURL(%s): %s', $id, $url), LOG_DEBUG, __FILE__, __LINE__); … … 1474 1482 } 1475 1483 1476 if (!isset($_SESSION['_app'][$this->_ns]['boomerang'] ['url'])) {1484 if (!isset($_SESSION['_app'][$this->_ns]['boomerang'])) { 1477 1485 $this->logMsg(sprintf('validBoomerangURL(%s) no boomerang URL set.', $id), LOG_DEBUG, __FILE__, __LINE__); 1478 1486 return false; 1479 1487 } 1480 1488 1481 // Time is the time stamp of a boomerangURL redirection, or setting of a boomerangURL.1482 // a boomerang redirection will always occur at least several seconds after the last boomerang redirect1483 // or a boomerang being set.1484 $boomerang_time = isset($_SESSION['_app'][$this->_ns]['boomerang']['time']) ? $_SESSION['_app'][$this->_ns]['boomerang']['time'] : 0;1485 1486 1489 $url = ''; 1487 if (isset($id) && isset($_SESSION['_app'][$this->_ns]['boomerang']['url'][$id])) { 1488 $url = $_SESSION['_app'][$this->_ns]['boomerang']['url'][$id]; 1490 if (isset($id) && isset($_SESSION['_app'][$this->_ns]['boomerang'][$id])) { 1491 $url = $_SESSION['_app'][$this->_ns]['boomerang'][$id]['url']; 1492 $added_time = $_SESSION['_app'][$this->_ns]['boomerang'][$id]['added_time']; 1489 1493 } else if (!isset($id) || $use_nonspecificboomerang) { 1490 1494 // Use non specific boomerang if available. 1491 $url = end($_SESSION['_app'][$this->_ns]['boomerang']['url']); 1492 } 1493 1494 $this->logMsg(sprintf('validBoomerangURL(%s) testing: %s', $id, $url), LOG_DEBUG, __FILE__, __LINE__); 1495 1496 if ('' == $url) { 1495 $url = end($_SESSION['_app'][$this->_ns]['boomerang'])['url']; 1496 $added_time = end($_SESSION['_app'][$this->_ns]['boomerang'])['added_time']; 1497 } 1498 1499 if ('' == trim($url)) { 1497 1500 $this->logMsg(sprintf('validBoomerangURL(%s) not valid, empty!', $id), LOG_DEBUG, __FILE__, __LINE__); 1498 1501 return false; 1499 1502 } 1503 1500 1504 if ($url == absoluteMe()) { 1501 1505 // The URL we are directing to is the current page. … … 1503 1507 return false; 1504 1508 } 1505 if ($boomerang_time >= (time() - 2)) { 1509 1510 // Last redirect time is the time stamp of the last boomerangURL redirection, if any. A boomerang redirection should always occur at least several seconds after the last boomerang redirect (time it takes to load a page and receive user interaction). 1511 $boomerang_last_redirect_time = isset($_SESSION['_app'][$this->_ns]['boomerang_last_redirect_time']) ? $_SESSION['_app'][$this->_ns]['boomerang_last_redirect_time'] : null; 1512 if (isset($boomerang_last_redirect_time) && $boomerang_last_redirect_time >= (time() - 2)) { 1506 1513 // Last boomerang direction was less than 2 seconds ago. 1507 $this->logMsg(sprintf('validBoomerangURL(%s) not valid, boomerang_time too short: %s seconds', $id, time() - $boomerang_time), LOG_DEBUG, __FILE__, __LINE__); 1508 return false; 1509 } 1510 if ($boomerang_time < (time() - 72000)) { 1511 // Last boomerang direction was more than 20 minutes ago. 1512 $this->logMsg(sprintf('validBoomerangURL(%s) not valid, boomerang_time too long: %s seconds', $id, time() - $boomerang_time), LOG_DEBUG, __FILE__, __LINE__); 1514 $this->logMsg(sprintf('validBoomerangURL(%s) not valid, boomerang_last_redirect_time too short: %s seconds', $id, time() - $boomerang_last_redirect_time), LOG_DEBUG, __FILE__, __LINE__); 1515 return false; 1516 } 1517 1518 if (isset($added_time) && $added_time < (time() - 72000)) { 1519 // Last boomerang direction was more than 20 hours ago. 1520 $this->logMsg(sprintf('validBoomerangURL(%s) not valid, added_time too old: %s seconds', $id, time() - $added_time), LOG_DEBUG, __FILE__, __LINE__); 1521 // Delete this defunct boomerang. 1522 $this->deleteBoomerangURL($id); 1513 1523 return false; 1514 1524 }
Note: See TracChangeset
for help on using the changeset viewer.