'Export do pliku csv (UTF-8)', 'stExporterCsv1250Attributes' => 'Export do pliku csv (Windows-1250)', ); } public function executeAjaxVariantToken() { $query = $this->getRequestParameter('q'); $duplicates = explode(',', $this->getRequestParameter('d')); $attribute_id = $this->getRequestParameter('id'); $type = $this->getRequestParameter('type'); $c = new Criteria(); $c->addJoin(appProductAttributeVariantPeer::ID, appProductAttributeHasVariantPeer::VARIANT_ID); $c->add(appProductAttributeHasVariantPeer::ATTRIBUTE_ID, $attribute_id); if ($duplicates) { $c->add(appProductAttributeVariantPeer::ID, $duplicates, Criteria::NOT_IN); } if ($type == 'C') { $c->add(appProductAttributeVariantPeer::OPT_NAME, '%'.$query.'%', Criteria::LIKE); } else { $c->add(appProductAttributeVariantPeer::OPT_VALUE, '%'.$query.'%', Criteria::LIKE); } $c->setLimit(100); $tokens = appProductAttributeVariantPeer::doSelectTokens($c, $type); return $this->renderJson($tokens); } public function executeAjaxCategoryToken() { $query = $this->getRequestParameter('q'); $c = new Criteria(); $duplicates = explode(',', $this->getRequestParameter('d')); $c->add(CategoryPeer::ID, $duplicates, Criteria::NOT_IN); $c->add(CategoryPeer::PARENT_ID, null, Criteria::ISNOTNULL); $c->add(CategoryPeer::OPT_NAME, $query.'%', Criteria::LIKE); $c->setLimit(100); $tokens = ProductPeer::doSelectCategoriesTokens($c); return $this->renderJson($tokens); } public function executeProductAttribute() { stAdminGeneratorHelper::generate('stProduct'); $this->forward_parameters = $this->processForwardParameters(array('product_id', 'category_id'), $this->getModuleName(), $this->getActionName()); $request = $this->getRequest(); $i18n = $this->getContext()->getI18n(); $this->product = ProductPeer::retrieveByPK($this->forward_parameters['product_id']); $breadcrumbsBuilder = new stProductBreadcrumbsBuilder($this->getContext(), $this->getBreadcrumbs(), $this->product, array('product_id' => $this->product->getId())); $this->product->setCulture($request->getParameter('culture', stLanguage::getOptLanguage())); if ($request->getMethod() == sfRequest::POST) { $app_product_attribute_variant = $request->getParameter('app_product_attribute_variant'); $app_product_attribute = $request->getParameter('app_product_attribute'); if (isset($app_product_attribute['label'])) { $this->product->setAttributesLabel($app_product_attribute['label']); $this->product->save(); } $c = new Criteria(); $c->add(appProductAttributeVariantHasProductPeer::PRODUCT_ID, $this->product->getId()); appProductAttributeVariantHasProductPeer::doDelete($c); foreach ($app_product_attribute_variant as $attribute_id => $variant) { $attribute = appProductAttributePeer::retrieveByPK($attribute_id); if ($attribute->getType() == 'B') { $vhp = new appProductAttributeVariantHasProduct(); $vhp->setProductId($this->product->getId()); $vhp->setVariantId($variant); $vhp->save(); } else { $tokens = stJQueryToolsHelper::parseTokensFromRequest($variant); foreach ($tokens as $token) { if ($token['new']) { $v = new appProductAttributeVariant(); $v->setCulture(stLanguage::getOptLanguage()); $v->setValue($token['id']); $v->save(); $variant_id = $v->getId(); $ahv = new appProductAttributeHasVariant(); $ahv->setAttributeId($attribute_id); $ahv->setVariantId($variant_id); $ahv->save(); } else { $variant_id = $token['id']; } $vhp = new appProductAttributeVariantHasProduct(); $vhp->setProductId($this->product->getId()); $vhp->setVariantId($variant_id); $vhp->save(); } } } $this->setFlash('notice', $i18n->__('Twoje zmiany zostały zapisane', null, 'stAdminGeneratorPlugin')); return $this->redirect($this->getRequest()->getReferer()); } else { $this->attributes = appProductAttributePeer::doSelectByProduct($this->product); } if (!$this->attributes) { $this->setFlash('info', $i18n->__('Produkt nie zawiera atrybutów dla przypisanych kategorii'), false); } $breadcrumbsBuilder->getEditBreadcrumbs($this->product)->add($i18n->__('Atrybuty')); } public function executeVariantEdit() { parent::executeVariantEdit(); if ($this->app_product_attribute_variant->getType() === null && $this->related_object->getType() == 'C') { $this->app_product_attribute_variant->setType('C'); } } public function validateEdit() { $request = $this->getRequest(); if ($request->getMethod() == sfRequest::POST) { $data = $request->getParameter('app_product_attribute'); if (!isset($data['name']) || empty($data['name'])) { $request->setError('app_product_attribute{name}', 'Musisz podać wartość'); } } return !$request->hasErrors(); } public function validateVariantEdit() { $request = $this->getRequest(); if ($request->getMethod() == sfRequest::POST) { $data = $request->getParameter('app_product_attribute_variant'); $attribute = appProductAttributePeer::retrieveByPK($this->getRequestParameter('attr_id')); if ($attribute->getType() != appProductAttributePeer::COLOR_TYPE && isset($data['value']) && empty($data['value'])) { $request->setError('app_product_attribute_variant{value}', 'Proszę uzupełnić pole.'); } elseif ($attribute->getType() == appProductAttributePeer::COLOR_TYPE && isset($data['name']) && empty($data['name'])) { $request->setError('app_product_attribute_variant{name}', 'Proszę uzupełnić pole.'); } elseif (isset($data['value']) || isset($data['name'])) { $c = new Criteria(); $c->addJoin(appProductAttributeVariantPeer::ID, appProductAttributeHasVariantPeer::VARIANT_ID); $c->add(appProductAttributeHasVariantPeer::ATTRIBUTE_ID, $request->getParameter('attr_id')); if ($request->hasParameter('id')) { $c->add(appProductAttributeVariantPeer::ID, $request->getParameter('id'), Criteria::NOT_EQUAL); } if ($attribute->getType() != appProductAttributePeer::COLOR_TYPE) { $c->add(appProductAttributeVariantPeer::OPT_VALUE, $data['value']); if (appProductAttributeVariantPeer::doCount($c) > 0) { $request->setError('app_product_attribute_variant{value}', 'Wariant o podanej wartości już istnieje.'); } } else { $c->add(appProductAttributeVariantPeer::OPT_NAME, $data['name']); if (appProductAttributeVariantPeer::doCount($c) > 0) { $request->setError('app_product_attribute_variant{name}', 'Wariant o podanej nazwie już istnieje.'); } } } } return !$request->hasErrors(); } protected function saveVariantappProductAttributeVariant($app_product_attribute_variant) { $request = $this->getRequest(); if ($app_product_attribute_variant->isNew()) { $pahv = new appProductAttributeHasVariant(); $pahv->setAttributeId($this->forward_parameters['attr_id']); $app_product_attribute_variant->addappProductAttributeHasVariant($pahv); } $this->moveProductAttributeVariantPicture($app_product_attribute_variant); parent::saveVariantappProductAttributeVariant($app_product_attribute_variant); } protected function saveappProductAttribute($app_product_attribute) { $is_new = $app_product_attribute->isNew(); parent::saveappProductAttribute($app_product_attribute); $this->saveProductAttributeInCategory($app_product_attribute); if ($is_new && $app_product_attribute->getType() == 'B') { $variant = new appProductAttributeVariant(); $variant->setPosition(0); $variant->setOptValue(''); $variant->save(); $ahv = new appProductAttributeHasVariant(); $ahv->setAttributeId($app_product_attribute->getId()); $ahv->setVariantId($variant->getId()); $ahv->save(); } } protected function getVariantappProductAttributeVariantOrCreate($id = 'id') { $app_product_attribute_variant = parent::getVariantappProductAttributeVariantOrCreate($id); if ($app_product_attribute_variant->isPictureType()) { $this->previous_app_product_attribute_variant = clone $app_product_attribute_variant; } if ($this->related_object->getType() != 'C') { $this->hideField('color_type'); $this->hideField('name'); $this->hideField('picture'); $this->hideField('color'); } else { $this->hideField('value'); } return $app_product_attribute_variant; } protected function addSortCriteria($c) { $c->addAscendingOrderByColumn(appProductAttributePeer::POSITION); $c->addAscendingOrderByColumn(appProductAttributePeer::ID); parent::addSortCriteria($c); } protected function processListForwardParameters() { parent::processListForwardParameters(); if (null === $this->getRequestParameter('category_id') || $this->getRequestParameter('filters_clear')) { $this->forward_parameters['category_id'] = 0; } } protected function addFiltersCriteria($c) { parent::addFiltersCriteria($c); if ($this->forward_parameters['category_id']) { $path = CategoryPeer::doSelectExpanded($this->forward_parameters['category_id']); if ($path) { $c->addJoin(appProductAttributePeer::ID, appProductAttributeHasCategoryPeer::ATTRIBUTE_ID); $c->add(appProductAttributeHasCategoryPeer::CATEGORY_ID, array_keys($path), Criteria::IN); $c->addGroupByColumn(appProductAttributePeer::ID); stAdminGeneratorHelper::ignoreEmptyList(); } } } protected function addVariantSortCriteria($c) { $c->addAscendingOrderByColumn(appProductAttributeVariantPeer::POSITION); $c->addAscendingOrderByColumn(appProductAttributeVariantPeer::ID); parent::addVariantSortCriteria($c); } protected function addVariantFiltersCriteria($c) { $c->addJoin(appProductAttributeVariantPeer::ID, appProductAttributeHasVariantPeer::VARIANT_ID); $c->add(appProductAttributeHasVariantPeer::ATTRIBUTE_ID, $this->forward_parameters['attr_id']); } protected function saveProductAttributeInCategory(appProductAttribute $app_product_attribute) { $app_product_attribute_category = $this->getRequestParameter('app_product_attribute_category'); $tokens = stJQueryToolsHelper::parseTokensFromRequest($app_product_attribute_category); $attribute_id = $app_product_attribute->getId(); $c = new Criteria(); $c->add(appProductAttributeHasCategoryPeer::ATTRIBUTE_ID, $attribute_id); appProductAttributeHasCategoryPeer::doDelete($c); if ($tokens) { foreach ($tokens as $token) { $pc = new appProductAttributeHasCategory(); $pc->setAttributeId($attribute_id); $pc->setCategoryId($token['id']); $pc->save(); } } } protected function moveProductAttributeVariantPicture(appProductAttributeVariant $app_product_attribute_variant) { $request = $this->getRequest(); if ($request->getFileError('app_product_attribute_variant[picture]') == UPLOAD_ERR_OK) { $i18n = $this->getContext()->getI18N(); $ext = pathinfo($request->getFileName('app_product_attribute_variant[picture]'), PATHINFO_EXTENSION); $name = uniqid().sha1(microtime().serialize($app_product_attribute_variant).serialize($this->related_object).serialize($request->getFile('app_product_attribute_variant[picture]'))); $image = $app_product_attribute_variant->getUploadDir().'/'.$name.'.'.$ext; if (!$request->moveFile('app_product_attribute_variant[picture]', sfConfig::get('sf_web_dir').'/'.$image)) { $this->getRequest()->setError('app_product_attribute_variant{picture}', $i18n->__('Wystąpił błąd podczas zapisu pliku.')); } $app_product_attribute_variant->removePicture(); $app_product_attribute_variant->setPicture($image); } elseif (isset($this->previous_app_product_attribute_variant) && $app_product_attribute_variant->isColorType()) { $this->previous_app_product_attribute_variant->removePicture(); } } protected function getVariantLabels() { $labels = parent::getVariantLabels(); $labels['app_product_attribute_variant{_value}'] = 'Wartość'; return $labels; } }