diff --git a/alpha/scripts/utils/updateHtmlPurifierOnPartners.php b/alpha/scripts/utils/updateHtmlPurifierOnPartners.php new file mode 100644 index 0000000000..8f9451ce85 --- /dev/null +++ b/alpha/scripts/utils/updateHtmlPurifierOnPartners.php @@ -0,0 +1,123 @@ + [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 [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");