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; } }