136 lines
3.8 KiB
PHP
136 lines
3.8 KiB
PHP
<?php
|
|
|
|
class stSecurityMigrationProgressBarTask extends stProgressBarTask
|
|
{
|
|
const LIMIT = 20;
|
|
|
|
const TASKS = array(
|
|
'security_migration_order_user_data' => array('label' => 'Uaktualnienie szyfrowania danych użytkowników', 'class' => 'UserDataPeer'),
|
|
'security_migration_order_user_data_billing' => array('label' => 'Uaktualnienie szyfrowania danych billingowych w zamówieniach', 'class' => 'OrderUserDataBillingPeer'),
|
|
'security_migration_order_user_data_delivery' => array('label' => 'Uaktualnienie szyfrowania danych dostawy w zamówieniach', 'class' => 'OrderUserDataDeliveryPeer'),
|
|
'security_migration_invoice_customer_data' => array('label' => 'Uaktualnienie szyfrowania danych klientów w fakturach', 'class' => 'InvoiceUserCustomerPeer'),
|
|
'security_migration_invoice_seller_data' => array('label' => 'Uaktualnienie szyfrowania danych sprzedawców w fakturach', 'class' => 'InvoiceUserSellerPeer'),
|
|
'security_migration_mail_account' => array('label' => 'Uaktualnienie szyfrowania kont pocztowych', 'class' => 'MailAccountPeer'),
|
|
);
|
|
|
|
protected $currentTask = null;
|
|
|
|
public function count()
|
|
{
|
|
$count = 0;
|
|
|
|
$tasks = array();
|
|
|
|
foreach (self::TASKS as $name => $task)
|
|
{
|
|
$c = new Criteria();
|
|
$c->add(self::getPeerClassConstant('CRYPT', $task['class']), 2, Criteria::LESS_THAN);
|
|
$count += call_user_func(array($task['class'], 'doCount'), $c);
|
|
|
|
$task['count'] = $count;
|
|
|
|
$tasks[] = $task;
|
|
}
|
|
|
|
$this->setParameter('tasks', array_reverse($tasks));
|
|
|
|
if (!$count)
|
|
{
|
|
stLock::isPHP72Ready(true);
|
|
}
|
|
|
|
return $count;
|
|
}
|
|
|
|
public function execute($offset)
|
|
{
|
|
$task = $this->getCurrentTask($offset);
|
|
|
|
if ($task)
|
|
{
|
|
$this->setMessage($task['label']);
|
|
|
|
$c = new Criteria();
|
|
$c->add(self::getPeerClassConstant('CRYPT', $task['class']), 2, Criteria::LESS_THAN);
|
|
$c->setLimit(self::LIMIT);
|
|
|
|
$results = call_user_func(array($task['class'], 'doSelect'), $c);
|
|
|
|
if ($results)
|
|
{
|
|
foreach ($results as $result)
|
|
{
|
|
$result->save();
|
|
usleep(250000);
|
|
$offset++;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$offset = $task['count'];
|
|
}
|
|
}
|
|
|
|
return $offset;
|
|
}
|
|
|
|
public function getTitle()
|
|
{
|
|
return null;
|
|
}
|
|
|
|
public function finished()
|
|
{
|
|
sfLoader::loadHelpers(array('Helper', 'stPartial'));
|
|
$this->setMessage($this->getI18N()->__('Uaktualnienie szyfrowania zakończone pomyślnie'));
|
|
if ($this->checkStatus())
|
|
{
|
|
stLock::isPHP72Ready(true);
|
|
}
|
|
}
|
|
|
|
public function started()
|
|
{
|
|
$this->setParameter('current.task', null);
|
|
}
|
|
|
|
public static function getPeerClassConstant($constant, $peerClass)
|
|
{
|
|
return constant($peerClass.'::'.$constant);
|
|
}
|
|
|
|
protected function getCurrentTask($offset)
|
|
{
|
|
if (null === $this->currentTask)
|
|
{
|
|
$this->currentTask = $this->getParameter("current.task");
|
|
|
|
if (null === $this->currentTask || $offset >= $this->currentTask['count'])
|
|
{
|
|
$tasks = $this->getParameter('tasks');
|
|
|
|
$this->currentTask = array_pop($tasks);
|
|
|
|
$this->setParameter('current.task', $this->currentTask);
|
|
$this->setParameter('tasks', $tasks);
|
|
}
|
|
}
|
|
|
|
return $this->currentTask;
|
|
}
|
|
|
|
protected function checkStatus()
|
|
{
|
|
foreach (self::TASKS as $task)
|
|
{
|
|
$c = new Criteria();
|
|
$c->add($this->getPeerClassConstant('CRYPT', $task['class']), 2, Criteria::LESS_THAN);
|
|
if (call_user_func(array($task['class'], 'doCount'), $c) > 0)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
} |