| Server IP : 213.136.93.164 / Your IP : 216.73.216.20 Web Server : Apache System : Linux m14200.contabo.net 5.14.0-611.54.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed May 6 18:03:03 EDT 2026 x86_64 User : ki692510 ( 1047) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/ki692510/www/wp-content/plugins/worker/src/MWP/Action/ |
Upload File : |
<?php
/*
* This file is part of the ManageWP Worker plugin.
*
* (c) ManageWP LLC <contact@managewp.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class MWP_Action_ClearTransient extends MWP_Action_Abstract
{
public function execute(array $params = array())
{
$total = array(
'deletedTransients' => 0,
'deletedTransientTimeouts' => 0,
);
if (is_array($params['transient'])) {
foreach ($params['transient'] as $transient) {
$cleared = $this->clearTransients($params['prefix'], $transient['name'], $transient['suffix'], $transient['timeout'], $transient['mask'], $transient['limit']);
$total['deletedTransients'] += $cleared['deletedTransients'];
$total['deletedTransientTimeouts'] += $cleared['deletedTransientTimeouts'];
}
}
return $total;
}
private function clearTransients($prefix, $transientType, $suffix, $timeout, $mask, $limit)
{
$wpdb = $this->container->getWordPressContext()->getDb();
$timeoutName = $transientType.$suffix;
$subStrLength = strlen($timeoutName) + 1;
$escapedTimeoutName = str_replace('_', '\_', $timeoutName);
$selectTimeOutedTransients = <<<SQL
SELECT SUBSTR(option_name, {$subStrLength}) AS transient_name FROM {$prefix}options WHERE option_name LIKE '{$escapedTimeoutName}{$mask}' AND option_value < {$timeout} LIMIT {$limit}
SQL;
$transientsToDelete = $wpdb->get_col($selectTimeOutedTransients);
$timeoutsToDelete = array();
if (count($transientsToDelete) === 0) {
return array(
'deletedTransients' => 0,
'deletedTransientTimeouts' => 0,
);
}
foreach ($transientsToDelete as &$transient) {
$timeoutsToDelete[] = "'".$timeoutName.$transient."'";
$transient = "'".$transientType.$transient."'";
}
$deleteQuery = implode(',', $transientsToDelete);
$deleteTransients = <<<SQL
DELETE FROM {$prefix}options WHERE option_name IN ({$deleteQuery})
SQL;
$deletedTransients = $wpdb->query($deleteTransients);
$deleteQuery = implode(',', $timeoutsToDelete);
$deleteTransients = <<<SQL
DELETE FROM {$prefix}options WHERE option_name IN ({$deleteQuery})
SQL;
$deletedTransientTimeouts = $wpdb->query($deleteTransients);
return array(
'deletedTransients' => $deletedTransients,
'deletedTransientTimeouts' => $deletedTransientTimeouts,
);
}
}