Files
grzanieplus.pl/plugins/stPositioningPlugin/lib/stFixPositioning.class.php
2025-03-12 17:06:23 +01:00

363 lines
13 KiB
PHP

<?php
class stFixPositioning
{
protected $msg = '';
protected $title = '';
protected $langs = array();
public function __construct()
{
$active = sfContext::getInstance()->getUser()->getAttribute('languages', array(), 'soteshop/stFixPositioning');
$langs = LanguagePeer::doSelectActive();
foreach ($langs as $lang)
{
if (isset($active[$lang->getId()]))
{
$this->langs[] = $lang;
}
}
}
public function productUpdate($step)
{
if (!$step)
{
foreach ($this->langs as $lang)
{
if (stLanguage::getOptLanguage() == $lang->getOriginalLanguage())
{
self::setNull(ProductPeer::TABLE_NAME, ProductPeer::OPT_URL);
}
self::setNull(ProductI18nPeer::TABLE_NAME, ProductI18nPeer::URL, ProductI18nPeer::CULTURE, $lang->getOriginalLanguage());
}
}
$i18n = sfContext::getInstance()->getI18N();
stPropelSeoUrlBehavior::configuration(array('auto_generate_url'=>true));
$c = new Criteria();
$c->setOffset($step);
$c->setLimit(20);
foreach ($this->langs as $lang)
{
$culture = $lang->getOriginalLanguage();
$objects = ProductPeer::doSelectWithI18n($c, $culture);
foreach ($objects as $object)
{
$object->setCulture($culture);
$object->save();
}
}
$this->title = $i18n->__('Aktualizacja produktów', array(), 'stPositioningBackend');
return $step+count($objects);
}
public function categoryUpdate($step)
{
if (!$step)
{
foreach ($this->langs as $lang)
{
if (stLanguage::getOptLanguage() == $lang->getOriginalLanguage())
{
self::setNull(CategoryPeer::TABLE_NAME, CategoryPeer::OPT_URL);
}
self::setNull(CategoryI18nPeer::TABLE_NAME, CategoryI18nPeer::URL, CategoryI18nPeer::CULTURE, $lang->getOriginalLanguage());
}
}
$i18n = sfContext::getInstance()->getI18N();
stPropelSeoUrlBehavior::configuration(array('auto_generate_url'=>true));
$c = new Criteria();
$c->setOffset($step);
$c->setLimit(20);
foreach ($this->langs as $lang)
{
$culture = $lang->getOriginalLanguage();
$objects = CategoryPeer::doSelectWithI18n($c, $culture);
foreach ($objects as $object)
{
$object->setCulture($culture);
$object->save();
}
}
$this->title = $i18n->__('Aktualizacja kategorii', array(), 'stPositioningBackend');
return $step+count($objects);
}
public function productGroupUpdate($step)
{
if (!$step)
{
foreach ($this->langs as $lang)
{
if (stLanguage::getOptLanguage() == $lang->getOriginalLanguage())
{
self::setNull(ProductGroupPeer::TABLE_NAME, ProductGroupPeer::OPT_URL);
}
self::setNull(ProductGroupI18nPeer::TABLE_NAME, ProductGroupI18nPeer::URL, ProductGroupI18nPeer::CULTURE, $lang->getOriginalLanguage());
}
}
$i18n = sfContext::getInstance()->getI18N();
stPropelSeoUrlBehavior::configuration(array('auto_generate_url'=>true));
$c = new Criteria();
$c->setOffset($step);
$c->setLimit(20);
foreach ($this->langs as $lang)
{
$culture = $lang->getOriginalLanguage();
$objects = ProductGroupPeer::doSelectWithI18n($c, $culture);
foreach ($objects as $object)
{
$object->setCulture($culture);
$object->save();
}
}
$this->title = $i18n->__('Aktualizacja grup produktów', array(), 'stPositioningBackend');
return $step+count($objects);
}
public function webpageUpdate($step)
{
if (!$step)
{
foreach ($this->langs as $lang)
{
if (stLanguage::getOptLanguage() == $lang->getOriginalLanguage())
{
self::setNull(WebpagePeer::TABLE_NAME, WebpagePeer::OPT_URL);
}
self::setNull(WebpageI18nPeer::TABLE_NAME, WebpageI18nPeer::URL, WebpageI18nPeer::CULTURE, $lang->getOriginalLanguage());
}
}
$i18n = sfContext::getInstance()->getI18N();
stPropelSeoUrlBehavior::configuration(array('auto_generate_url'=>true));
$c = new Criteria();
$c->setOffset($step);
$c->setLimit(20);
foreach ($this->langs as $lang)
{
$culture = $lang->getOriginalLanguage();
$objects = WebpagePeer::doSelectWithI18n($c, $culture);
foreach ($objects as $object)
{
$object->setCulture($culture);
$object->save();
}
}
$this->title = $i18n->__('Aktualizacja stron www', array(), 'stPositioningBackend');
return $step+count($objects);
}
public function producerUpdate($step)
{
if (!$step)
{
foreach ($this->langs as $lang)
{
if (stLanguage::getOptLanguage() == $lang->getOriginalLanguage())
{
self::setNull(ProducerPeer::TABLE_NAME, ProducerPeer::OPT_URL);
}
self::setNull(ProducerI18nPeer::TABLE_NAME, ProducerI18nPeer::URL, ProducerI18nPeer::CULTURE, $lang->getOriginalLanguage());
}
}
$i18n = sfContext::getInstance()->getI18N();
stPropelSeoUrlBehavior::configuration(array('auto_generate_url'=>true));
$c = new Criteria();
$c->setOffset($step);
$c->setLimit(20);
foreach ($this->langs as $lang)
{
$culture = $lang->getOriginalLanguage();
$objects = ProducerPeer::doSelectWithI18n($c, $culture);
foreach ($objects as $object)
{
$object->setCulture($culture);
$object->save();
}
}
$this->title = $i18n->__('Aktualizacja producentów', array(), 'stPositioningBackend');
return $step+count($objects);
}
public function blogUpdate($step)
{
if (!$step)
{
foreach ($this->langs as $lang)
{
if (stLanguage::getOptLanguage() == $lang->getOriginalLanguage())
{
self::setNull(BlogPeer::TABLE_NAME, BlogPeer::OPT_URL);
}
self::setNull(BlogI18nPeer::TABLE_NAME, BlogI18nPeer::URL, BlogI18nPeer::CULTURE, $lang->getOriginalLanguage());
}
}
$i18n = sfContext::getInstance()->getI18N();
stPropelSeoUrlBehavior::configuration(array('auto_generate_url'=>true));
$c = new Criteria();
$c->setOffset($step);
$c->setLimit(20);
foreach ($this->langs as $lang)
{
$culture = $lang->getOriginalLanguage();
$objects = BlogPeer::doSelectWithI18n($c, $culture);
foreach ($objects as $object)
{
$object->setCulture($culture);
$object->save();
}
}
$this->title = $i18n->__('Aktualizacja bloga', array(), 'stPositioningBackend');
return $step+count($objects);
}
public function getMessage()
{
return $this->msg;
}
public function getTitle()
{
return $this->title;
}
public function init()
{
$i18n = sfContext::getInstance()->getI18N();
switch (sfContext::getInstance()->getRequest()->getParameterHolder()->get('name')) {
case "stPositioning_ProductUpdate" :
$this->title = $i18n->__('Aktualizacja produktów', array(), 'stPositioningBackend');
break;
case "stPositioning_CategoryUpdate" :
$this->title = $i18n->__('Aktualizacja kategorii', array(), 'stPositioningBackend');
break;
case "stPositioning_ProductGroupUpdate" :
$this->title = $i18n->__('Aktualizacja grup produktów', array(), 'stPositioningBackend');
break;
case "stPositioning_WebpageUpdate" :
$this->title = $i18n->__('Aktualizacja stron www', array(), 'stPositioningBackend');
break;
case "stPositioning_ProducerUpdate" :
$this->title = $i18n->__('Aktualizacja producentów', array(), 'stPositioningBackend');
break;
case "stPositioning_BlogUpdate" :
$this->title = $i18n->__('Aktualizacja bloga', array(), 'stPositioningBackend');
break;
}
}
public function close()
{
$user = sfContext::getInstance()->getUser();
$reference_cnt = $user->getAttribute('reference_cnt', 0, 'soteshop/stPositioningPlugin');
$reference_cnt--;
$user->setAttribute('reference_cnt', $reference_cnt, 'soteshop/stPositioningPlugin');
if ($reference_cnt <= 0)
{
stLock::unlock('frontend');
}
$i18n = sfContext::getInstance()->getI18N();
switch (sfContext::getInstance()->getRequest()->getParameterHolder()->get('name')) {
case "stPositioning_ProductUpdate" :
$this->title = $i18n->__('Aktualizacja produktów', array(), 'stPositioningBackend');
touch(sfConfig::get('sf_log_dir').DIRECTORY_SEPARATOR.'stPositioning_ProductUpdate.log');
break;
case "stPositioning_CategoryUpdate" :
$this->title = $i18n->__('Aktualizacja kategorii', array(), 'stPositioningBackend');
touch(sfConfig::get('sf_log_dir').DIRECTORY_SEPARATOR.'stPositioning_CategoryUpdate.log');
ProductHasCategoryPeer::cleanCache();
break;
case "stPositioning_ProductGroupUpdate" :
$this->title = $i18n->__('Aktualizacja grup produktów', array(), 'stPositioningBackend');
touch(sfConfig::get('sf_log_dir').DIRECTORY_SEPARATOR.'stPositioning_ProductGroupUpdate.log');
break;
case "stPositioning_WebpageUpdate" :
$this->title = $i18n->__('Aktualizacja stron www', array(), 'stPositioningBackend');
touch(sfConfig::get('sf_log_dir').DIRECTORY_SEPARATOR.'stPositioning_WebpageUpdate.log');
break;
case "stPositioning_ProducerUpdate" :
$this->title = $i18n->__('Aktualizacja producentów', array(), 'stPositioningBackend');
touch(sfConfig::get('sf_log_dir').DIRECTORY_SEPARATOR.'stPositioning_ProducerUpdate.log');
break;
case "stPositioning_BlogUpdate" :
$this->title = $i18n->__('Aktualizacja bloga', array(), 'stPositioningBackend');
touch(sfConfig::get('sf_log_dir').DIRECTORY_SEPARATOR.'stPositioning_BlogUpdate.log');
break;
}
}
public static function setNull($table, $column, $cultureColumn = null, $culture = null)
{
if (null !== $culture)
{
$ps = Propel::getConnection()->prepareStatement(sprintf('UPDATE %s SET %s = null WHERE %s = ?', $table, $column, $cultureColumn));
$ps->setString(1, $culture);
$ps->executeQuery();
}
else
{
Propel::getConnection()->executeQuery(sprintf('UPDATE %s SET %s = null', $table, $column));
}
}
public static function postInstall(sfEvent $event) {
sfLoader::loadHelpers('stProgressBar');
sfLoader::loadHelpers('Partial');
$event->getSubject()->msg .= progress_bar('stPositioning_ProductUpdate', 'stUpdatePositioningPlugin', 'productUpdate', ProductPeer::doCount(new Criteria()));
$event->getSubject()->msg .= progress_bar('stPositioning_CategoryUpdate', 'stUpdatePositioningPlugin', 'categoryUpdate', CategoryPeer::doCount(new Criteria()));
$event->getSubject()->msg .= progress_bar('stPositioning_ProductGroupUpdate', 'stUpdatePositioningPlugin', 'productGroupUpdate', ProductGroupPeer::doCount(new Criteria()));
$event->getSubject()->msg .= progress_bar('stPositioning_WebpageUpdate', 'stUpdatePositioningPlugin', 'webpageUpdate', WebpagePeer::doCount(new Criteria()));
$event->getSubject()->msg .= progress_bar('stPositioning_ProducerUpdate', 'stUpdatePositioningPlugin', 'producerUpdate', ProducerPeer::doCount(new Criteria()));
$event->getSubject()->msg .= progress_bar('stPositioning_BlogUpdate', 'stUpdatePositioningPlugin', 'blogUpdate', BlogPeer::doCount(new Criteria()));
}
}