Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions alpha/scripts/utils/updateHtmlPurifierOnPartners.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
<?php
/**
* Update HTML Purifier behaviour on partners matching a given current status.
* Also enables purify_image_content and html_purifier_base_list_usage if not already set.
*
* Usage:
* php updateHtmlPurifierOnPartners.php <from_status> <to_status> [realrun]
*
* Available statuses: ignore, notify, sanitize, block
*
* @package Deployment
* @subpackage updates
*/

$fromStatusArg = isset($argv[1]) ? strtolower($argv[1]) : null;
$toStatusArg = isset($argv[2]) ? strtolower($argv[2]) : null;
$dryRun = !in_array('realrun', $argv);

//------------------------------------------------------

require_once(__DIR__ . '/../../../deployment/bootstrap.php');

$validStatuses = array(
'ignore' => HTMLPurifierBehaviourType::IGNORE,
'notify' => HTMLPurifierBehaviourType::NOTIFY,
'sanitize' => HTMLPurifierBehaviourType::SANITIZE,
'block' => HTMLPurifierBehaviourType::BLOCK,
);

if (!$fromStatusArg || !$toStatusArg)
{
print("Usage: php updateHtmlPurifierOnPartners.php <from_status> <to_status> [realrun]\n");
print("Available statuses: " . implode(', ', array_keys($validStatuses)) . "\n");
exit(1);
}

if (!array_key_exists($fromStatusArg, $validStatuses))
{
print("Invalid from_status: '{$fromStatusArg}'. Available statuses: " . implode(', ', array_keys($validStatuses)) . "\n");
exit(1);
}

if (!array_key_exists($toStatusArg, $validStatuses))
{
print("Invalid to_status: '{$toStatusArg}'. Available statuses: " . implode(', ', array_keys($validStatuses)) . "\n");
exit(1);
}

if ($fromStatusArg === $toStatusArg)
{
print("from_status and to_status are the same ('{$fromStatusArg}'). Nothing to do.\n");
exit(1);
}

$fromStatus = $validStatuses[$fromStatusArg];
$toStatus = $validStatuses[$toStatusArg];

$con = myDbHelper::getConnection(myDbHelper::DB_HELPER_CONN_PROPEL2);
KalturaStatement::setDryRun($dryRun);

$countLimitEachLoop = 500;
$offset = 0;

print("HTML Purifier behaviour migration: " . strtoupper($fromStatusArg) . " -> " . strtoupper($toStatusArg) . "\n");
print($dryRun ? "[DRY RUN] No changes will be saved.\n" : "[REAL RUN] Changes will be saved.\n");

$c = new Criteria();
$c->addAscendingOrderByColumn(PartnerPeer::ID);
$c->addAnd(PartnerPeer::ID, 99, Criteria::GREATER_EQUAL);
$c->addAnd(PartnerPeer::STATUS, Partner::PARTNER_STATUS_ACTIVE, Criteria::EQUAL);
$c->setLimit($countLimitEachLoop);

$partners = PartnerPeer::doSelect($c, $con);

while (count($partners))
{
foreach ($partners as $partner)
{
/* @var $partner Partner */
$partnerId = $partner->getId();
$changed = false;

if ($partner->getCustomDataObj()->get(Partner::PURIFY_IMAGE_CONTENT) !== true)
{
print("Enable purify_image_content for partner id [{$partnerId}]\n");
$partner->setPurifyImageContent(true);
$changed = true;
}

if (!$partner->getHtmlPurifierBaseListUsage())
{
print("Enable html_purifier_base_list_usage for partner id [{$partnerId}]\n");
$partner->setHtmlPurifierBaseListUsage(true);
$changed = true;
}

if ($partner->getHtmlPurifierBehaviour() == $fromStatus)
{
print("Set HTML purifier behaviour from " . strtoupper($fromStatusArg) . " to " . strtoupper($toStatusArg) . " for partner id [{$partnerId}]\n");
$partner->setHtmlPurifierBehaviour($toStatus);
$changed = true;
}

if ($changed)
{
$partner->save();
}
}

kMemoryManager::clearMemory();
$offset += $countLimitEachLoop;

$c = new Criteria();
$c->addAscendingOrderByColumn(PartnerPeer::ID);
$c->addAnd(PartnerPeer::ID, 99, Criteria::GREATER_EQUAL);
$c->addAnd(PartnerPeer::STATUS, Partner::PARTNER_STATUS_ACTIVE, Criteria::EQUAL);
$c->setLimit($countLimitEachLoop);
$c->setOffset($offset);

$partners = PartnerPeer::doSelect($c, $con);
}

print("Done\n");
Loading