diff --git a/core/lib/Thelia/Model/Base/Category.php b/core/lib/Thelia/Model/Base/Category.php
index 6a4445db4..1bafdae8c 100755
--- a/core/lib/Thelia/Model/Base/Category.php
+++ b/core/lib/Thelia/Model/Base/Category.php
@@ -22,6 +22,8 @@ use Thelia\Model\AttributeCategory as ChildAttributeCategory;
use Thelia\Model\AttributeCategoryQuery as ChildAttributeCategoryQuery;
use Thelia\Model\AttributeQuery as ChildAttributeQuery;
use Thelia\Model\Category as ChildCategory;
+use Thelia\Model\CategoryAssociatedContent as ChildCategoryAssociatedContent;
+use Thelia\Model\CategoryAssociatedContentQuery as ChildCategoryAssociatedContentQuery;
use Thelia\Model\CategoryDocument as ChildCategoryDocument;
use Thelia\Model\CategoryDocumentQuery as ChildCategoryDocumentQuery;
use Thelia\Model\CategoryI18n as ChildCategoryI18n;
@@ -31,8 +33,6 @@ use Thelia\Model\CategoryImageQuery as ChildCategoryImageQuery;
use Thelia\Model\CategoryQuery as ChildCategoryQuery;
use Thelia\Model\CategoryVersion as ChildCategoryVersion;
use Thelia\Model\CategoryVersionQuery as ChildCategoryVersionQuery;
-use Thelia\Model\ContentAssoc as ChildContentAssoc;
-use Thelia\Model\ContentAssocQuery as ChildContentAssocQuery;
use Thelia\Model\Feature as ChildFeature;
use Thelia\Model\FeatureCategory as ChildFeatureCategory;
use Thelia\Model\FeatureCategoryQuery as ChildFeatureCategoryQuery;
@@ -153,12 +153,6 @@ abstract class Category implements ActiveRecordInterface
protected $collAttributeCategories;
protected $collAttributeCategoriesPartial;
- /**
- * @var ObjectCollection|ChildContentAssoc[] Collection to store aggregation of ChildContentAssoc objects.
- */
- protected $collContentAssocs;
- protected $collContentAssocsPartial;
-
/**
* @var ObjectCollection|ChildRewriting[] Collection to store aggregation of ChildRewriting objects.
*/
@@ -177,6 +171,12 @@ abstract class Category implements ActiveRecordInterface
protected $collCategoryDocuments;
protected $collCategoryDocumentsPartial;
+ /**
+ * @var ObjectCollection|ChildCategoryAssociatedContent[] Collection to store aggregation of ChildCategoryAssociatedContent objects.
+ */
+ protected $collCategoryAssociatedContents;
+ protected $collCategoryAssociatedContentsPartial;
+
/**
* @var ObjectCollection|ChildCategoryI18n[] Collection to store aggregation of ChildCategoryI18n objects.
*/
@@ -270,12 +270,6 @@ abstract class Category implements ActiveRecordInterface
*/
protected $attributeCategoriesScheduledForDeletion = null;
- /**
- * An array of objects scheduled for deletion.
- * @var ObjectCollection
- */
- protected $contentAssocsScheduledForDeletion = null;
-
/**
* An array of objects scheduled for deletion.
* @var ObjectCollection
@@ -294,6 +288,12 @@ abstract class Category implements ActiveRecordInterface
*/
protected $categoryDocumentsScheduledForDeletion = null;
+ /**
+ * An array of objects scheduled for deletion.
+ * @var ObjectCollection
+ */
+ protected $categoryAssociatedContentsScheduledForDeletion = null;
+
/**
* An array of objects scheduled for deletion.
* @var ObjectCollection
@@ -1039,14 +1039,14 @@ abstract class Category implements ActiveRecordInterface
$this->collAttributeCategories = null;
- $this->collContentAssocs = null;
-
$this->collRewritings = null;
$this->collCategoryImages = null;
$this->collCategoryDocuments = null;
+ $this->collCategoryAssociatedContents = null;
+
$this->collCategoryI18ns = null;
$this->collCategoryVersions = null;
@@ -1331,23 +1331,6 @@ abstract class Category implements ActiveRecordInterface
}
}
- if ($this->contentAssocsScheduledForDeletion !== null) {
- if (!$this->contentAssocsScheduledForDeletion->isEmpty()) {
- \Thelia\Model\ContentAssocQuery::create()
- ->filterByPrimaryKeys($this->contentAssocsScheduledForDeletion->getPrimaryKeys(false))
- ->delete($con);
- $this->contentAssocsScheduledForDeletion = null;
- }
- }
-
- if ($this->collContentAssocs !== null) {
- foreach ($this->collContentAssocs as $referrerFK) {
- if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
- $affectedRows += $referrerFK->save($con);
- }
- }
- }
-
if ($this->rewritingsScheduledForDeletion !== null) {
if (!$this->rewritingsScheduledForDeletion->isEmpty()) {
\Thelia\Model\RewritingQuery::create()
@@ -1399,6 +1382,23 @@ abstract class Category implements ActiveRecordInterface
}
}
+ if ($this->categoryAssociatedContentsScheduledForDeletion !== null) {
+ if (!$this->categoryAssociatedContentsScheduledForDeletion->isEmpty()) {
+ \Thelia\Model\CategoryAssociatedContentQuery::create()
+ ->filterByPrimaryKeys($this->categoryAssociatedContentsScheduledForDeletion->getPrimaryKeys(false))
+ ->delete($con);
+ $this->categoryAssociatedContentsScheduledForDeletion = null;
+ }
+ }
+
+ if ($this->collCategoryAssociatedContents !== null) {
+ foreach ($this->collCategoryAssociatedContents as $referrerFK) {
+ if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
+ $affectedRows += $referrerFK->save($con);
+ }
+ }
+ }
+
if ($this->categoryI18nsScheduledForDeletion !== null) {
if (!$this->categoryI18nsScheduledForDeletion->isEmpty()) {
\Thelia\Model\CategoryI18nQuery::create()
@@ -1668,9 +1668,6 @@ abstract class Category implements ActiveRecordInterface
if (null !== $this->collAttributeCategories) {
$result['AttributeCategories'] = $this->collAttributeCategories->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
- if (null !== $this->collContentAssocs) {
- $result['ContentAssocs'] = $this->collContentAssocs->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
- }
if (null !== $this->collRewritings) {
$result['Rewritings'] = $this->collRewritings->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
@@ -1680,6 +1677,9 @@ abstract class Category implements ActiveRecordInterface
if (null !== $this->collCategoryDocuments) {
$result['CategoryDocuments'] = $this->collCategoryDocuments->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
+ if (null !== $this->collCategoryAssociatedContents) {
+ $result['CategoryAssociatedContents'] = $this->collCategoryAssociatedContents->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
+ }
if (null !== $this->collCategoryI18ns) {
$result['CategoryI18ns'] = $this->collCategoryI18ns->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
@@ -1895,12 +1895,6 @@ abstract class Category implements ActiveRecordInterface
}
}
- foreach ($this->getContentAssocs() as $relObj) {
- if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
- $copyObj->addContentAssoc($relObj->copy($deepCopy));
- }
- }
-
foreach ($this->getRewritings() as $relObj) {
if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
$copyObj->addRewriting($relObj->copy($deepCopy));
@@ -1919,6 +1913,12 @@ abstract class Category implements ActiveRecordInterface
}
}
+ foreach ($this->getCategoryAssociatedContents() as $relObj) {
+ if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
+ $copyObj->addCategoryAssociatedContent($relObj->copy($deepCopy));
+ }
+ }
+
foreach ($this->getCategoryI18ns() as $relObj) {
if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
$copyObj->addCategoryI18n($relObj->copy($deepCopy));
@@ -1981,9 +1981,6 @@ abstract class Category implements ActiveRecordInterface
if ('AttributeCategory' == $relationName) {
return $this->initAttributeCategories();
}
- if ('ContentAssoc' == $relationName) {
- return $this->initContentAssocs();
- }
if ('Rewriting' == $relationName) {
return $this->initRewritings();
}
@@ -1993,6 +1990,9 @@ abstract class Category implements ActiveRecordInterface
if ('CategoryDocument' == $relationName) {
return $this->initCategoryDocuments();
}
+ if ('CategoryAssociatedContent' == $relationName) {
+ return $this->initCategoryAssociatedContents();
+ }
if ('CategoryI18n' == $relationName) {
return $this->initCategoryI18ns();
}
@@ -2733,274 +2733,6 @@ abstract class Category implements ActiveRecordInterface
return $this->getAttributeCategories($query, $con);
}
- /**
- * Clears out the collContentAssocs collection
- *
- * This does not modify the database; however, it will remove any associated objects, causing
- * them to be refetched by subsequent calls to accessor method.
- *
- * @return void
- * @see addContentAssocs()
- */
- public function clearContentAssocs()
- {
- $this->collContentAssocs = null; // important to set this to NULL since that means it is uninitialized
- }
-
- /**
- * Reset is the collContentAssocs collection loaded partially.
- */
- public function resetPartialContentAssocs($v = true)
- {
- $this->collContentAssocsPartial = $v;
- }
-
- /**
- * Initializes the collContentAssocs collection.
- *
- * By default this just sets the collContentAssocs collection to an empty array (like clearcollContentAssocs());
- * however, you may wish to override this method in your stub class to provide setting appropriate
- * to your application -- for example, setting the initial array to the values stored in database.
- *
- * @param boolean $overrideExisting If set to true, the method call initializes
- * the collection even if it is not empty
- *
- * @return void
- */
- public function initContentAssocs($overrideExisting = true)
- {
- if (null !== $this->collContentAssocs && !$overrideExisting) {
- return;
- }
- $this->collContentAssocs = new ObjectCollection();
- $this->collContentAssocs->setModel('\Thelia\Model\ContentAssoc');
- }
-
- /**
- * Gets an array of ChildContentAssoc objects which contain a foreign key that references this object.
- *
- * If the $criteria is not null, it is used to always fetch the results from the database.
- * Otherwise the results are fetched from the database the first time, then cached.
- * Next time the same method is called without $criteria, the cached collection is returned.
- * If this ChildCategory is new, it will return
- * an empty collection or the current collection; the criteria is ignored on a new object.
- *
- * @param Criteria $criteria optional Criteria object to narrow the query
- * @param ConnectionInterface $con optional connection object
- * @return Collection|ChildContentAssoc[] List of ChildContentAssoc objects
- * @throws PropelException
- */
- public function getContentAssocs($criteria = null, ConnectionInterface $con = null)
- {
- $partial = $this->collContentAssocsPartial && !$this->isNew();
- if (null === $this->collContentAssocs || null !== $criteria || $partial) {
- if ($this->isNew() && null === $this->collContentAssocs) {
- // return empty collection
- $this->initContentAssocs();
- } else {
- $collContentAssocs = ChildContentAssocQuery::create(null, $criteria)
- ->filterByCategory($this)
- ->find($con);
-
- if (null !== $criteria) {
- if (false !== $this->collContentAssocsPartial && count($collContentAssocs)) {
- $this->initContentAssocs(false);
-
- foreach ($collContentAssocs as $obj) {
- if (false == $this->collContentAssocs->contains($obj)) {
- $this->collContentAssocs->append($obj);
- }
- }
-
- $this->collContentAssocsPartial = true;
- }
-
- $collContentAssocs->getInternalIterator()->rewind();
-
- return $collContentAssocs;
- }
-
- if ($partial && $this->collContentAssocs) {
- foreach ($this->collContentAssocs as $obj) {
- if ($obj->isNew()) {
- $collContentAssocs[] = $obj;
- }
- }
- }
-
- $this->collContentAssocs = $collContentAssocs;
- $this->collContentAssocsPartial = false;
- }
- }
-
- return $this->collContentAssocs;
- }
-
- /**
- * Sets a collection of ContentAssoc objects related by a one-to-many relationship
- * to the current object.
- * It will also schedule objects for deletion based on a diff between old objects (aka persisted)
- * and new objects from the given Propel collection.
- *
- * @param Collection $contentAssocs A Propel collection.
- * @param ConnectionInterface $con Optional connection object
- * @return ChildCategory The current object (for fluent API support)
- */
- public function setContentAssocs(Collection $contentAssocs, ConnectionInterface $con = null)
- {
- $contentAssocsToDelete = $this->getContentAssocs(new Criteria(), $con)->diff($contentAssocs);
-
-
- $this->contentAssocsScheduledForDeletion = $contentAssocsToDelete;
-
- foreach ($contentAssocsToDelete as $contentAssocRemoved) {
- $contentAssocRemoved->setCategory(null);
- }
-
- $this->collContentAssocs = null;
- foreach ($contentAssocs as $contentAssoc) {
- $this->addContentAssoc($contentAssoc);
- }
-
- $this->collContentAssocs = $contentAssocs;
- $this->collContentAssocsPartial = false;
-
- return $this;
- }
-
- /**
- * Returns the number of related ContentAssoc objects.
- *
- * @param Criteria $criteria
- * @param boolean $distinct
- * @param ConnectionInterface $con
- * @return int Count of related ContentAssoc objects.
- * @throws PropelException
- */
- public function countContentAssocs(Criteria $criteria = null, $distinct = false, ConnectionInterface $con = null)
- {
- $partial = $this->collContentAssocsPartial && !$this->isNew();
- if (null === $this->collContentAssocs || null !== $criteria || $partial) {
- if ($this->isNew() && null === $this->collContentAssocs) {
- return 0;
- }
-
- if ($partial && !$criteria) {
- return count($this->getContentAssocs());
- }
-
- $query = ChildContentAssocQuery::create(null, $criteria);
- if ($distinct) {
- $query->distinct();
- }
-
- return $query
- ->filterByCategory($this)
- ->count($con);
- }
-
- return count($this->collContentAssocs);
- }
-
- /**
- * Method called to associate a ChildContentAssoc object to this object
- * through the ChildContentAssoc foreign key attribute.
- *
- * @param ChildContentAssoc $l ChildContentAssoc
- * @return \Thelia\Model\Category The current object (for fluent API support)
- */
- public function addContentAssoc(ChildContentAssoc $l)
- {
- if ($this->collContentAssocs === null) {
- $this->initContentAssocs();
- $this->collContentAssocsPartial = true;
- }
-
- if (!in_array($l, $this->collContentAssocs->getArrayCopy(), true)) { // only add it if the **same** object is not already associated
- $this->doAddContentAssoc($l);
- }
-
- return $this;
- }
-
- /**
- * @param ContentAssoc $contentAssoc The contentAssoc object to add.
- */
- protected function doAddContentAssoc($contentAssoc)
- {
- $this->collContentAssocs[]= $contentAssoc;
- $contentAssoc->setCategory($this);
- }
-
- /**
- * @param ContentAssoc $contentAssoc The contentAssoc object to remove.
- * @return ChildCategory The current object (for fluent API support)
- */
- public function removeContentAssoc($contentAssoc)
- {
- if ($this->getContentAssocs()->contains($contentAssoc)) {
- $this->collContentAssocs->remove($this->collContentAssocs->search($contentAssoc));
- if (null === $this->contentAssocsScheduledForDeletion) {
- $this->contentAssocsScheduledForDeletion = clone $this->collContentAssocs;
- $this->contentAssocsScheduledForDeletion->clear();
- }
- $this->contentAssocsScheduledForDeletion[]= $contentAssoc;
- $contentAssoc->setCategory(null);
- }
-
- return $this;
- }
-
-
- /**
- * If this collection has already been initialized with
- * an identical criteria, it returns the collection.
- * Otherwise if this Category is new, it will return
- * an empty collection; or if this Category has previously
- * been saved, it will retrieve related ContentAssocs from storage.
- *
- * This method is protected by default in order to keep the public
- * api reasonable. You can provide public methods for those you
- * actually need in Category.
- *
- * @param Criteria $criteria optional Criteria object to narrow the query
- * @param ConnectionInterface $con optional connection object
- * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
- * @return Collection|ChildContentAssoc[] List of ChildContentAssoc objects
- */
- public function getContentAssocsJoinProduct($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
- {
- $query = ChildContentAssocQuery::create(null, $criteria);
- $query->joinWith('Product', $joinBehavior);
-
- return $this->getContentAssocs($query, $con);
- }
-
-
- /**
- * If this collection has already been initialized with
- * an identical criteria, it returns the collection.
- * Otherwise if this Category is new, it will return
- * an empty collection; or if this Category has previously
- * been saved, it will retrieve related ContentAssocs from storage.
- *
- * This method is protected by default in order to keep the public
- * api reasonable. You can provide public methods for those you
- * actually need in Category.
- *
- * @param Criteria $criteria optional Criteria object to narrow the query
- * @param ConnectionInterface $con optional connection object
- * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
- * @return Collection|ChildContentAssoc[] List of ChildContentAssoc objects
- */
- public function getContentAssocsJoinContent($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
- {
- $query = ChildContentAssocQuery::create(null, $criteria);
- $query->joinWith('Content', $joinBehavior);
-
- return $this->getContentAssocs($query, $con);
- }
-
/**
* Clears out the collRewritings collection
*
@@ -3730,6 +3462,249 @@ abstract class Category implements ActiveRecordInterface
return $this;
}
+ /**
+ * Clears out the collCategoryAssociatedContents collection
+ *
+ * This does not modify the database; however, it will remove any associated objects, causing
+ * them to be refetched by subsequent calls to accessor method.
+ *
+ * @return void
+ * @see addCategoryAssociatedContents()
+ */
+ public function clearCategoryAssociatedContents()
+ {
+ $this->collCategoryAssociatedContents = null; // important to set this to NULL since that means it is uninitialized
+ }
+
+ /**
+ * Reset is the collCategoryAssociatedContents collection loaded partially.
+ */
+ public function resetPartialCategoryAssociatedContents($v = true)
+ {
+ $this->collCategoryAssociatedContentsPartial = $v;
+ }
+
+ /**
+ * Initializes the collCategoryAssociatedContents collection.
+ *
+ * By default this just sets the collCategoryAssociatedContents collection to an empty array (like clearcollCategoryAssociatedContents());
+ * however, you may wish to override this method in your stub class to provide setting appropriate
+ * to your application -- for example, setting the initial array to the values stored in database.
+ *
+ * @param boolean $overrideExisting If set to true, the method call initializes
+ * the collection even if it is not empty
+ *
+ * @return void
+ */
+ public function initCategoryAssociatedContents($overrideExisting = true)
+ {
+ if (null !== $this->collCategoryAssociatedContents && !$overrideExisting) {
+ return;
+ }
+ $this->collCategoryAssociatedContents = new ObjectCollection();
+ $this->collCategoryAssociatedContents->setModel('\Thelia\Model\CategoryAssociatedContent');
+ }
+
+ /**
+ * Gets an array of ChildCategoryAssociatedContent objects which contain a foreign key that references this object.
+ *
+ * If the $criteria is not null, it is used to always fetch the results from the database.
+ * Otherwise the results are fetched from the database the first time, then cached.
+ * Next time the same method is called without $criteria, the cached collection is returned.
+ * If this ChildCategory is new, it will return
+ * an empty collection or the current collection; the criteria is ignored on a new object.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @return Collection|ChildCategoryAssociatedContent[] List of ChildCategoryAssociatedContent objects
+ * @throws PropelException
+ */
+ public function getCategoryAssociatedContents($criteria = null, ConnectionInterface $con = null)
+ {
+ $partial = $this->collCategoryAssociatedContentsPartial && !$this->isNew();
+ if (null === $this->collCategoryAssociatedContents || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collCategoryAssociatedContents) {
+ // return empty collection
+ $this->initCategoryAssociatedContents();
+ } else {
+ $collCategoryAssociatedContents = ChildCategoryAssociatedContentQuery::create(null, $criteria)
+ ->filterByCategory($this)
+ ->find($con);
+
+ if (null !== $criteria) {
+ if (false !== $this->collCategoryAssociatedContentsPartial && count($collCategoryAssociatedContents)) {
+ $this->initCategoryAssociatedContents(false);
+
+ foreach ($collCategoryAssociatedContents as $obj) {
+ if (false == $this->collCategoryAssociatedContents->contains($obj)) {
+ $this->collCategoryAssociatedContents->append($obj);
+ }
+ }
+
+ $this->collCategoryAssociatedContentsPartial = true;
+ }
+
+ $collCategoryAssociatedContents->getInternalIterator()->rewind();
+
+ return $collCategoryAssociatedContents;
+ }
+
+ if ($partial && $this->collCategoryAssociatedContents) {
+ foreach ($this->collCategoryAssociatedContents as $obj) {
+ if ($obj->isNew()) {
+ $collCategoryAssociatedContents[] = $obj;
+ }
+ }
+ }
+
+ $this->collCategoryAssociatedContents = $collCategoryAssociatedContents;
+ $this->collCategoryAssociatedContentsPartial = false;
+ }
+ }
+
+ return $this->collCategoryAssociatedContents;
+ }
+
+ /**
+ * Sets a collection of CategoryAssociatedContent objects related by a one-to-many relationship
+ * to the current object.
+ * It will also schedule objects for deletion based on a diff between old objects (aka persisted)
+ * and new objects from the given Propel collection.
+ *
+ * @param Collection $categoryAssociatedContents A Propel collection.
+ * @param ConnectionInterface $con Optional connection object
+ * @return ChildCategory The current object (for fluent API support)
+ */
+ public function setCategoryAssociatedContents(Collection $categoryAssociatedContents, ConnectionInterface $con = null)
+ {
+ $categoryAssociatedContentsToDelete = $this->getCategoryAssociatedContents(new Criteria(), $con)->diff($categoryAssociatedContents);
+
+
+ $this->categoryAssociatedContentsScheduledForDeletion = $categoryAssociatedContentsToDelete;
+
+ foreach ($categoryAssociatedContentsToDelete as $categoryAssociatedContentRemoved) {
+ $categoryAssociatedContentRemoved->setCategory(null);
+ }
+
+ $this->collCategoryAssociatedContents = null;
+ foreach ($categoryAssociatedContents as $categoryAssociatedContent) {
+ $this->addCategoryAssociatedContent($categoryAssociatedContent);
+ }
+
+ $this->collCategoryAssociatedContents = $categoryAssociatedContents;
+ $this->collCategoryAssociatedContentsPartial = false;
+
+ return $this;
+ }
+
+ /**
+ * Returns the number of related CategoryAssociatedContent objects.
+ *
+ * @param Criteria $criteria
+ * @param boolean $distinct
+ * @param ConnectionInterface $con
+ * @return int Count of related CategoryAssociatedContent objects.
+ * @throws PropelException
+ */
+ public function countCategoryAssociatedContents(Criteria $criteria = null, $distinct = false, ConnectionInterface $con = null)
+ {
+ $partial = $this->collCategoryAssociatedContentsPartial && !$this->isNew();
+ if (null === $this->collCategoryAssociatedContents || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collCategoryAssociatedContents) {
+ return 0;
+ }
+
+ if ($partial && !$criteria) {
+ return count($this->getCategoryAssociatedContents());
+ }
+
+ $query = ChildCategoryAssociatedContentQuery::create(null, $criteria);
+ if ($distinct) {
+ $query->distinct();
+ }
+
+ return $query
+ ->filterByCategory($this)
+ ->count($con);
+ }
+
+ return count($this->collCategoryAssociatedContents);
+ }
+
+ /**
+ * Method called to associate a ChildCategoryAssociatedContent object to this object
+ * through the ChildCategoryAssociatedContent foreign key attribute.
+ *
+ * @param ChildCategoryAssociatedContent $l ChildCategoryAssociatedContent
+ * @return \Thelia\Model\Category The current object (for fluent API support)
+ */
+ public function addCategoryAssociatedContent(ChildCategoryAssociatedContent $l)
+ {
+ if ($this->collCategoryAssociatedContents === null) {
+ $this->initCategoryAssociatedContents();
+ $this->collCategoryAssociatedContentsPartial = true;
+ }
+
+ if (!in_array($l, $this->collCategoryAssociatedContents->getArrayCopy(), true)) { // only add it if the **same** object is not already associated
+ $this->doAddCategoryAssociatedContent($l);
+ }
+
+ return $this;
+ }
+
+ /**
+ * @param CategoryAssociatedContent $categoryAssociatedContent The categoryAssociatedContent object to add.
+ */
+ protected function doAddCategoryAssociatedContent($categoryAssociatedContent)
+ {
+ $this->collCategoryAssociatedContents[]= $categoryAssociatedContent;
+ $categoryAssociatedContent->setCategory($this);
+ }
+
+ /**
+ * @param CategoryAssociatedContent $categoryAssociatedContent The categoryAssociatedContent object to remove.
+ * @return ChildCategory The current object (for fluent API support)
+ */
+ public function removeCategoryAssociatedContent($categoryAssociatedContent)
+ {
+ if ($this->getCategoryAssociatedContents()->contains($categoryAssociatedContent)) {
+ $this->collCategoryAssociatedContents->remove($this->collCategoryAssociatedContents->search($categoryAssociatedContent));
+ if (null === $this->categoryAssociatedContentsScheduledForDeletion) {
+ $this->categoryAssociatedContentsScheduledForDeletion = clone $this->collCategoryAssociatedContents;
+ $this->categoryAssociatedContentsScheduledForDeletion->clear();
+ }
+ $this->categoryAssociatedContentsScheduledForDeletion[]= clone $categoryAssociatedContent;
+ $categoryAssociatedContent->setCategory(null);
+ }
+
+ return $this;
+ }
+
+
+ /**
+ * If this collection has already been initialized with
+ * an identical criteria, it returns the collection.
+ * Otherwise if this Category is new, it will return
+ * an empty collection; or if this Category has previously
+ * been saved, it will retrieve related CategoryAssociatedContents from storage.
+ *
+ * This method is protected by default in order to keep the public
+ * api reasonable. You can provide public methods for those you
+ * actually need in Category.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
+ * @return Collection|ChildCategoryAssociatedContent[] List of ChildCategoryAssociatedContent objects
+ */
+ public function getCategoryAssociatedContentsJoinContent($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
+ {
+ $query = ChildCategoryAssociatedContentQuery::create(null, $criteria);
+ $query->joinWith('Content', $joinBehavior);
+
+ return $this->getCategoryAssociatedContents($query, $con);
+ }
+
/**
* Clears out the collCategoryI18ns collection
*
@@ -4774,11 +4749,6 @@ abstract class Category implements ActiveRecordInterface
$o->clearAllReferences($deep);
}
}
- if ($this->collContentAssocs) {
- foreach ($this->collContentAssocs as $o) {
- $o->clearAllReferences($deep);
- }
- }
if ($this->collRewritings) {
foreach ($this->collRewritings as $o) {
$o->clearAllReferences($deep);
@@ -4794,6 +4764,11 @@ abstract class Category implements ActiveRecordInterface
$o->clearAllReferences($deep);
}
}
+ if ($this->collCategoryAssociatedContents) {
+ foreach ($this->collCategoryAssociatedContents as $o) {
+ $o->clearAllReferences($deep);
+ }
+ }
if ($this->collCategoryI18ns) {
foreach ($this->collCategoryI18ns as $o) {
$o->clearAllReferences($deep);
@@ -4837,10 +4812,6 @@ abstract class Category implements ActiveRecordInterface
$this->collAttributeCategories->clearIterator();
}
$this->collAttributeCategories = null;
- if ($this->collContentAssocs instanceof Collection) {
- $this->collContentAssocs->clearIterator();
- }
- $this->collContentAssocs = null;
if ($this->collRewritings instanceof Collection) {
$this->collRewritings->clearIterator();
}
@@ -4853,6 +4824,10 @@ abstract class Category implements ActiveRecordInterface
$this->collCategoryDocuments->clearIterator();
}
$this->collCategoryDocuments = null;
+ if ($this->collCategoryAssociatedContents instanceof Collection) {
+ $this->collCategoryAssociatedContents->clearIterator();
+ }
+ $this->collCategoryAssociatedContents = null;
if ($this->collCategoryI18ns instanceof Collection) {
$this->collCategoryI18ns->clearIterator();
}
diff --git a/core/lib/Thelia/Model/Base/CategoryQuery.php b/core/lib/Thelia/Model/Base/CategoryQuery.php
index 5a9c1165f..4c823a223 100755
--- a/core/lib/Thelia/Model/Base/CategoryQuery.php
+++ b/core/lib/Thelia/Model/Base/CategoryQuery.php
@@ -58,10 +58,6 @@ use Thelia\Model\Map\CategoryTableMap;
* @method ChildCategoryQuery rightJoinAttributeCategory($relationAlias = null) Adds a RIGHT JOIN clause to the query using the AttributeCategory relation
* @method ChildCategoryQuery innerJoinAttributeCategory($relationAlias = null) Adds a INNER JOIN clause to the query using the AttributeCategory relation
*
- * @method ChildCategoryQuery leftJoinContentAssoc($relationAlias = null) Adds a LEFT JOIN clause to the query using the ContentAssoc relation
- * @method ChildCategoryQuery rightJoinContentAssoc($relationAlias = null) Adds a RIGHT JOIN clause to the query using the ContentAssoc relation
- * @method ChildCategoryQuery innerJoinContentAssoc($relationAlias = null) Adds a INNER JOIN clause to the query using the ContentAssoc relation
- *
* @method ChildCategoryQuery leftJoinRewriting($relationAlias = null) Adds a LEFT JOIN clause to the query using the Rewriting relation
* @method ChildCategoryQuery rightJoinRewriting($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Rewriting relation
* @method ChildCategoryQuery innerJoinRewriting($relationAlias = null) Adds a INNER JOIN clause to the query using the Rewriting relation
@@ -74,6 +70,10 @@ use Thelia\Model\Map\CategoryTableMap;
* @method ChildCategoryQuery rightJoinCategoryDocument($relationAlias = null) Adds a RIGHT JOIN clause to the query using the CategoryDocument relation
* @method ChildCategoryQuery innerJoinCategoryDocument($relationAlias = null) Adds a INNER JOIN clause to the query using the CategoryDocument relation
*
+ * @method ChildCategoryQuery leftJoinCategoryAssociatedContent($relationAlias = null) Adds a LEFT JOIN clause to the query using the CategoryAssociatedContent relation
+ * @method ChildCategoryQuery rightJoinCategoryAssociatedContent($relationAlias = null) Adds a RIGHT JOIN clause to the query using the CategoryAssociatedContent relation
+ * @method ChildCategoryQuery innerJoinCategoryAssociatedContent($relationAlias = null) Adds a INNER JOIN clause to the query using the CategoryAssociatedContent relation
+ *
* @method ChildCategoryQuery leftJoinCategoryI18n($relationAlias = null) Adds a LEFT JOIN clause to the query using the CategoryI18n relation
* @method ChildCategoryQuery rightJoinCategoryI18n($relationAlias = null) Adds a RIGHT JOIN clause to the query using the CategoryI18n relation
* @method ChildCategoryQuery innerJoinCategoryI18n($relationAlias = null) Adds a INNER JOIN clause to the query using the CategoryI18n relation
@@ -870,79 +870,6 @@ abstract class CategoryQuery extends ModelCriteria
->useQuery($relationAlias ? $relationAlias : 'AttributeCategory', '\Thelia\Model\AttributeCategoryQuery');
}
- /**
- * Filter the query by a related \Thelia\Model\ContentAssoc object
- *
- * @param \Thelia\Model\ContentAssoc|ObjectCollection $contentAssoc the related object to use as filter
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildCategoryQuery The current query, for fluid interface
- */
- public function filterByContentAssoc($contentAssoc, $comparison = null)
- {
- if ($contentAssoc instanceof \Thelia\Model\ContentAssoc) {
- return $this
- ->addUsingAlias(CategoryTableMap::ID, $contentAssoc->getCategoryId(), $comparison);
- } elseif ($contentAssoc instanceof ObjectCollection) {
- return $this
- ->useContentAssocQuery()
- ->filterByPrimaryKeys($contentAssoc->getPrimaryKeys())
- ->endUse();
- } else {
- throw new PropelException('filterByContentAssoc() only accepts arguments of type \Thelia\Model\ContentAssoc or Collection');
- }
- }
-
- /**
- * Adds a JOIN clause to the query using the ContentAssoc relation
- *
- * @param string $relationAlias optional alias for the relation
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return ChildCategoryQuery The current query, for fluid interface
- */
- public function joinContentAssoc($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- $tableMap = $this->getTableMap();
- $relationMap = $tableMap->getRelation('ContentAssoc');
-
- // create a ModelJoin object for this join
- $join = new ModelJoin();
- $join->setJoinType($joinType);
- $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
- if ($previousJoin = $this->getPreviousJoin()) {
- $join->setPreviousJoin($previousJoin);
- }
-
- // add the ModelJoin to the current object
- if ($relationAlias) {
- $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
- $this->addJoinObject($join, $relationAlias);
- } else {
- $this->addJoinObject($join, 'ContentAssoc');
- }
-
- return $this;
- }
-
- /**
- * Use the ContentAssoc relation ContentAssoc object
- *
- * @see useQuery()
- *
- * @param string $relationAlias optional alias for the relation,
- * to be used as main alias in the secondary query
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return \Thelia\Model\ContentAssocQuery A secondary query class using the current class as primary query
- */
- public function useContentAssocQuery($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- return $this
- ->joinContentAssoc($relationAlias, $joinType)
- ->useQuery($relationAlias ? $relationAlias : 'ContentAssoc', '\Thelia\Model\ContentAssocQuery');
- }
-
/**
* Filter the query by a related \Thelia\Model\Rewriting object
*
@@ -1162,6 +1089,79 @@ abstract class CategoryQuery extends ModelCriteria
->useQuery($relationAlias ? $relationAlias : 'CategoryDocument', '\Thelia\Model\CategoryDocumentQuery');
}
+ /**
+ * Filter the query by a related \Thelia\Model\CategoryAssociatedContent object
+ *
+ * @param \Thelia\Model\CategoryAssociatedContent|ObjectCollection $categoryAssociatedContent the related object to use as filter
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildCategoryQuery The current query, for fluid interface
+ */
+ public function filterByCategoryAssociatedContent($categoryAssociatedContent, $comparison = null)
+ {
+ if ($categoryAssociatedContent instanceof \Thelia\Model\CategoryAssociatedContent) {
+ return $this
+ ->addUsingAlias(CategoryTableMap::ID, $categoryAssociatedContent->getCategoryId(), $comparison);
+ } elseif ($categoryAssociatedContent instanceof ObjectCollection) {
+ return $this
+ ->useCategoryAssociatedContentQuery()
+ ->filterByPrimaryKeys($categoryAssociatedContent->getPrimaryKeys())
+ ->endUse();
+ } else {
+ throw new PropelException('filterByCategoryAssociatedContent() only accepts arguments of type \Thelia\Model\CategoryAssociatedContent or Collection');
+ }
+ }
+
+ /**
+ * Adds a JOIN clause to the query using the CategoryAssociatedContent relation
+ *
+ * @param string $relationAlias optional alias for the relation
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return ChildCategoryQuery The current query, for fluid interface
+ */
+ public function joinCategoryAssociatedContent($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ $tableMap = $this->getTableMap();
+ $relationMap = $tableMap->getRelation('CategoryAssociatedContent');
+
+ // create a ModelJoin object for this join
+ $join = new ModelJoin();
+ $join->setJoinType($joinType);
+ $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
+ if ($previousJoin = $this->getPreviousJoin()) {
+ $join->setPreviousJoin($previousJoin);
+ }
+
+ // add the ModelJoin to the current object
+ if ($relationAlias) {
+ $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
+ $this->addJoinObject($join, $relationAlias);
+ } else {
+ $this->addJoinObject($join, 'CategoryAssociatedContent');
+ }
+
+ return $this;
+ }
+
+ /**
+ * Use the CategoryAssociatedContent relation CategoryAssociatedContent object
+ *
+ * @see useQuery()
+ *
+ * @param string $relationAlias optional alias for the relation,
+ * to be used as main alias in the secondary query
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return \Thelia\Model\CategoryAssociatedContentQuery A secondary query class using the current class as primary query
+ */
+ public function useCategoryAssociatedContentQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ return $this
+ ->joinCategoryAssociatedContent($relationAlias, $joinType)
+ ->useQuery($relationAlias ? $relationAlias : 'CategoryAssociatedContent', '\Thelia\Model\CategoryAssociatedContentQuery');
+ }
+
/**
* Filter the query by a related \Thelia\Model\CategoryI18n object
*
diff --git a/core/lib/Thelia/Model/Base/Content.php b/core/lib/Thelia/Model/Base/Content.php
index 59745e39c..bd4d29046 100755
--- a/core/lib/Thelia/Model/Base/Content.php
+++ b/core/lib/Thelia/Model/Base/Content.php
@@ -17,9 +17,9 @@ use Propel\Runtime\Exception\PropelException;
use Propel\Runtime\Map\TableMap;
use Propel\Runtime\Parser\AbstractParser;
use Propel\Runtime\Util\PropelDateTime;
+use Thelia\Model\CategoryAssociatedContent as ChildCategoryAssociatedContent;
+use Thelia\Model\CategoryAssociatedContentQuery as ChildCategoryAssociatedContentQuery;
use Thelia\Model\Content as ChildContent;
-use Thelia\Model\ContentAssoc as ChildContentAssoc;
-use Thelia\Model\ContentAssocQuery as ChildContentAssocQuery;
use Thelia\Model\ContentDocument as ChildContentDocument;
use Thelia\Model\ContentDocumentQuery as ChildContentDocumentQuery;
use Thelia\Model\ContentFolder as ChildContentFolder;
@@ -33,6 +33,8 @@ use Thelia\Model\ContentVersion as ChildContentVersion;
use Thelia\Model\ContentVersionQuery as ChildContentVersionQuery;
use Thelia\Model\Folder as ChildFolder;
use Thelia\Model\FolderQuery as ChildFolderQuery;
+use Thelia\Model\ProductAssociatedContent as ChildProductAssociatedContent;
+use Thelia\Model\ProductAssociatedContentQuery as ChildProductAssociatedContentQuery;
use Thelia\Model\Rewriting as ChildRewriting;
use Thelia\Model\RewritingQuery as ChildRewritingQuery;
use Thelia\Model\Map\ContentTableMap;
@@ -121,12 +123,6 @@ abstract class Content implements ActiveRecordInterface
*/
protected $version_created_by;
- /**
- * @var ObjectCollection|ChildContentAssoc[] Collection to store aggregation of ChildContentAssoc objects.
- */
- protected $collContentAssocs;
- protected $collContentAssocsPartial;
-
/**
* @var ObjectCollection|ChildRewriting[] Collection to store aggregation of ChildRewriting objects.
*/
@@ -151,6 +147,18 @@ abstract class Content implements ActiveRecordInterface
protected $collContentDocuments;
protected $collContentDocumentsPartial;
+ /**
+ * @var ObjectCollection|ChildProductAssociatedContent[] Collection to store aggregation of ChildProductAssociatedContent objects.
+ */
+ protected $collProductAssociatedContents;
+ protected $collProductAssociatedContentsPartial;
+
+ /**
+ * @var ObjectCollection|ChildCategoryAssociatedContent[] Collection to store aggregation of ChildCategoryAssociatedContent objects.
+ */
+ protected $collCategoryAssociatedContents;
+ protected $collCategoryAssociatedContentsPartial;
+
/**
* @var ObjectCollection|ChildContentI18n[] Collection to store aggregation of ChildContentI18n objects.
*/
@@ -204,12 +212,6 @@ abstract class Content implements ActiveRecordInterface
*/
protected $foldersScheduledForDeletion = null;
- /**
- * An array of objects scheduled for deletion.
- * @var ObjectCollection
- */
- protected $contentAssocsScheduledForDeletion = null;
-
/**
* An array of objects scheduled for deletion.
* @var ObjectCollection
@@ -234,6 +236,18 @@ abstract class Content implements ActiveRecordInterface
*/
protected $contentDocumentsScheduledForDeletion = null;
+ /**
+ * An array of objects scheduled for deletion.
+ * @var ObjectCollection
+ */
+ protected $productAssociatedContentsScheduledForDeletion = null;
+
+ /**
+ * An array of objects scheduled for deletion.
+ * @var ObjectCollection
+ */
+ protected $categoryAssociatedContentsScheduledForDeletion = null;
+
/**
* An array of objects scheduled for deletion.
* @var ObjectCollection
@@ -938,8 +952,6 @@ abstract class Content implements ActiveRecordInterface
if ($deep) { // also de-associate any related objects?
- $this->collContentAssocs = null;
-
$this->collRewritings = null;
$this->collContentFolders = null;
@@ -948,6 +960,10 @@ abstract class Content implements ActiveRecordInterface
$this->collContentDocuments = null;
+ $this->collProductAssociatedContents = null;
+
+ $this->collCategoryAssociatedContents = null;
+
$this->collContentI18ns = null;
$this->collContentVersions = null;
@@ -1125,23 +1141,6 @@ abstract class Content implements ActiveRecordInterface
}
}
- if ($this->contentAssocsScheduledForDeletion !== null) {
- if (!$this->contentAssocsScheduledForDeletion->isEmpty()) {
- \Thelia\Model\ContentAssocQuery::create()
- ->filterByPrimaryKeys($this->contentAssocsScheduledForDeletion->getPrimaryKeys(false))
- ->delete($con);
- $this->contentAssocsScheduledForDeletion = null;
- }
- }
-
- if ($this->collContentAssocs !== null) {
- foreach ($this->collContentAssocs as $referrerFK) {
- if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
- $affectedRows += $referrerFK->save($con);
- }
- }
- }
-
if ($this->rewritingsScheduledForDeletion !== null) {
if (!$this->rewritingsScheduledForDeletion->isEmpty()) {
\Thelia\Model\RewritingQuery::create()
@@ -1210,6 +1209,40 @@ abstract class Content implements ActiveRecordInterface
}
}
+ if ($this->productAssociatedContentsScheduledForDeletion !== null) {
+ if (!$this->productAssociatedContentsScheduledForDeletion->isEmpty()) {
+ \Thelia\Model\ProductAssociatedContentQuery::create()
+ ->filterByPrimaryKeys($this->productAssociatedContentsScheduledForDeletion->getPrimaryKeys(false))
+ ->delete($con);
+ $this->productAssociatedContentsScheduledForDeletion = null;
+ }
+ }
+
+ if ($this->collProductAssociatedContents !== null) {
+ foreach ($this->collProductAssociatedContents as $referrerFK) {
+ if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
+ $affectedRows += $referrerFK->save($con);
+ }
+ }
+ }
+
+ if ($this->categoryAssociatedContentsScheduledForDeletion !== null) {
+ if (!$this->categoryAssociatedContentsScheduledForDeletion->isEmpty()) {
+ \Thelia\Model\CategoryAssociatedContentQuery::create()
+ ->filterByPrimaryKeys($this->categoryAssociatedContentsScheduledForDeletion->getPrimaryKeys(false))
+ ->delete($con);
+ $this->categoryAssociatedContentsScheduledForDeletion = null;
+ }
+ }
+
+ if ($this->collCategoryAssociatedContents !== null) {
+ foreach ($this->collCategoryAssociatedContents as $referrerFK) {
+ if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
+ $affectedRows += $referrerFK->save($con);
+ }
+ }
+ }
+
if ($this->contentI18nsScheduledForDeletion !== null) {
if (!$this->contentI18nsScheduledForDeletion->isEmpty()) {
\Thelia\Model\ContentI18nQuery::create()
@@ -1460,9 +1493,6 @@ abstract class Content implements ActiveRecordInterface
}
if ($includeForeignObjects) {
- if (null !== $this->collContentAssocs) {
- $result['ContentAssocs'] = $this->collContentAssocs->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
- }
if (null !== $this->collRewritings) {
$result['Rewritings'] = $this->collRewritings->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
@@ -1475,6 +1505,12 @@ abstract class Content implements ActiveRecordInterface
if (null !== $this->collContentDocuments) {
$result['ContentDocuments'] = $this->collContentDocuments->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
+ if (null !== $this->collProductAssociatedContents) {
+ $result['ProductAssociatedContents'] = $this->collProductAssociatedContents->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
+ }
+ if (null !== $this->collCategoryAssociatedContents) {
+ $result['CategoryAssociatedContents'] = $this->collCategoryAssociatedContents->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
+ }
if (null !== $this->collContentI18ns) {
$result['ContentI18ns'] = $this->collContentI18ns->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
@@ -1666,12 +1702,6 @@ abstract class Content implements ActiveRecordInterface
// the getter/setter methods for fkey referrer objects.
$copyObj->setNew(false);
- foreach ($this->getContentAssocs() as $relObj) {
- if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
- $copyObj->addContentAssoc($relObj->copy($deepCopy));
- }
- }
-
foreach ($this->getRewritings() as $relObj) {
if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
$copyObj->addRewriting($relObj->copy($deepCopy));
@@ -1696,6 +1726,18 @@ abstract class Content implements ActiveRecordInterface
}
}
+ foreach ($this->getProductAssociatedContents() as $relObj) {
+ if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
+ $copyObj->addProductAssociatedContent($relObj->copy($deepCopy));
+ }
+ }
+
+ foreach ($this->getCategoryAssociatedContents() as $relObj) {
+ if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
+ $copyObj->addCategoryAssociatedContent($relObj->copy($deepCopy));
+ }
+ }
+
foreach ($this->getContentI18ns() as $relObj) {
if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
$copyObj->addContentI18n($relObj->copy($deepCopy));
@@ -1749,9 +1791,6 @@ abstract class Content implements ActiveRecordInterface
*/
public function initRelation($relationName)
{
- if ('ContentAssoc' == $relationName) {
- return $this->initContentAssocs();
- }
if ('Rewriting' == $relationName) {
return $this->initRewritings();
}
@@ -1764,6 +1803,12 @@ abstract class Content implements ActiveRecordInterface
if ('ContentDocument' == $relationName) {
return $this->initContentDocuments();
}
+ if ('ProductAssociatedContent' == $relationName) {
+ return $this->initProductAssociatedContents();
+ }
+ if ('CategoryAssociatedContent' == $relationName) {
+ return $this->initCategoryAssociatedContents();
+ }
if ('ContentI18n' == $relationName) {
return $this->initContentI18ns();
}
@@ -1772,274 +1817,6 @@ abstract class Content implements ActiveRecordInterface
}
}
- /**
- * Clears out the collContentAssocs collection
- *
- * This does not modify the database; however, it will remove any associated objects, causing
- * them to be refetched by subsequent calls to accessor method.
- *
- * @return void
- * @see addContentAssocs()
- */
- public function clearContentAssocs()
- {
- $this->collContentAssocs = null; // important to set this to NULL since that means it is uninitialized
- }
-
- /**
- * Reset is the collContentAssocs collection loaded partially.
- */
- public function resetPartialContentAssocs($v = true)
- {
- $this->collContentAssocsPartial = $v;
- }
-
- /**
- * Initializes the collContentAssocs collection.
- *
- * By default this just sets the collContentAssocs collection to an empty array (like clearcollContentAssocs());
- * however, you may wish to override this method in your stub class to provide setting appropriate
- * to your application -- for example, setting the initial array to the values stored in database.
- *
- * @param boolean $overrideExisting If set to true, the method call initializes
- * the collection even if it is not empty
- *
- * @return void
- */
- public function initContentAssocs($overrideExisting = true)
- {
- if (null !== $this->collContentAssocs && !$overrideExisting) {
- return;
- }
- $this->collContentAssocs = new ObjectCollection();
- $this->collContentAssocs->setModel('\Thelia\Model\ContentAssoc');
- }
-
- /**
- * Gets an array of ChildContentAssoc objects which contain a foreign key that references this object.
- *
- * If the $criteria is not null, it is used to always fetch the results from the database.
- * Otherwise the results are fetched from the database the first time, then cached.
- * Next time the same method is called without $criteria, the cached collection is returned.
- * If this ChildContent is new, it will return
- * an empty collection or the current collection; the criteria is ignored on a new object.
- *
- * @param Criteria $criteria optional Criteria object to narrow the query
- * @param ConnectionInterface $con optional connection object
- * @return Collection|ChildContentAssoc[] List of ChildContentAssoc objects
- * @throws PropelException
- */
- public function getContentAssocs($criteria = null, ConnectionInterface $con = null)
- {
- $partial = $this->collContentAssocsPartial && !$this->isNew();
- if (null === $this->collContentAssocs || null !== $criteria || $partial) {
- if ($this->isNew() && null === $this->collContentAssocs) {
- // return empty collection
- $this->initContentAssocs();
- } else {
- $collContentAssocs = ChildContentAssocQuery::create(null, $criteria)
- ->filterByContent($this)
- ->find($con);
-
- if (null !== $criteria) {
- if (false !== $this->collContentAssocsPartial && count($collContentAssocs)) {
- $this->initContentAssocs(false);
-
- foreach ($collContentAssocs as $obj) {
- if (false == $this->collContentAssocs->contains($obj)) {
- $this->collContentAssocs->append($obj);
- }
- }
-
- $this->collContentAssocsPartial = true;
- }
-
- $collContentAssocs->getInternalIterator()->rewind();
-
- return $collContentAssocs;
- }
-
- if ($partial && $this->collContentAssocs) {
- foreach ($this->collContentAssocs as $obj) {
- if ($obj->isNew()) {
- $collContentAssocs[] = $obj;
- }
- }
- }
-
- $this->collContentAssocs = $collContentAssocs;
- $this->collContentAssocsPartial = false;
- }
- }
-
- return $this->collContentAssocs;
- }
-
- /**
- * Sets a collection of ContentAssoc objects related by a one-to-many relationship
- * to the current object.
- * It will also schedule objects for deletion based on a diff between old objects (aka persisted)
- * and new objects from the given Propel collection.
- *
- * @param Collection $contentAssocs A Propel collection.
- * @param ConnectionInterface $con Optional connection object
- * @return ChildContent The current object (for fluent API support)
- */
- public function setContentAssocs(Collection $contentAssocs, ConnectionInterface $con = null)
- {
- $contentAssocsToDelete = $this->getContentAssocs(new Criteria(), $con)->diff($contentAssocs);
-
-
- $this->contentAssocsScheduledForDeletion = $contentAssocsToDelete;
-
- foreach ($contentAssocsToDelete as $contentAssocRemoved) {
- $contentAssocRemoved->setContent(null);
- }
-
- $this->collContentAssocs = null;
- foreach ($contentAssocs as $contentAssoc) {
- $this->addContentAssoc($contentAssoc);
- }
-
- $this->collContentAssocs = $contentAssocs;
- $this->collContentAssocsPartial = false;
-
- return $this;
- }
-
- /**
- * Returns the number of related ContentAssoc objects.
- *
- * @param Criteria $criteria
- * @param boolean $distinct
- * @param ConnectionInterface $con
- * @return int Count of related ContentAssoc objects.
- * @throws PropelException
- */
- public function countContentAssocs(Criteria $criteria = null, $distinct = false, ConnectionInterface $con = null)
- {
- $partial = $this->collContentAssocsPartial && !$this->isNew();
- if (null === $this->collContentAssocs || null !== $criteria || $partial) {
- if ($this->isNew() && null === $this->collContentAssocs) {
- return 0;
- }
-
- if ($partial && !$criteria) {
- return count($this->getContentAssocs());
- }
-
- $query = ChildContentAssocQuery::create(null, $criteria);
- if ($distinct) {
- $query->distinct();
- }
-
- return $query
- ->filterByContent($this)
- ->count($con);
- }
-
- return count($this->collContentAssocs);
- }
-
- /**
- * Method called to associate a ChildContentAssoc object to this object
- * through the ChildContentAssoc foreign key attribute.
- *
- * @param ChildContentAssoc $l ChildContentAssoc
- * @return \Thelia\Model\Content The current object (for fluent API support)
- */
- public function addContentAssoc(ChildContentAssoc $l)
- {
- if ($this->collContentAssocs === null) {
- $this->initContentAssocs();
- $this->collContentAssocsPartial = true;
- }
-
- if (!in_array($l, $this->collContentAssocs->getArrayCopy(), true)) { // only add it if the **same** object is not already associated
- $this->doAddContentAssoc($l);
- }
-
- return $this;
- }
-
- /**
- * @param ContentAssoc $contentAssoc The contentAssoc object to add.
- */
- protected function doAddContentAssoc($contentAssoc)
- {
- $this->collContentAssocs[]= $contentAssoc;
- $contentAssoc->setContent($this);
- }
-
- /**
- * @param ContentAssoc $contentAssoc The contentAssoc object to remove.
- * @return ChildContent The current object (for fluent API support)
- */
- public function removeContentAssoc($contentAssoc)
- {
- if ($this->getContentAssocs()->contains($contentAssoc)) {
- $this->collContentAssocs->remove($this->collContentAssocs->search($contentAssoc));
- if (null === $this->contentAssocsScheduledForDeletion) {
- $this->contentAssocsScheduledForDeletion = clone $this->collContentAssocs;
- $this->contentAssocsScheduledForDeletion->clear();
- }
- $this->contentAssocsScheduledForDeletion[]= $contentAssoc;
- $contentAssoc->setContent(null);
- }
-
- return $this;
- }
-
-
- /**
- * If this collection has already been initialized with
- * an identical criteria, it returns the collection.
- * Otherwise if this Content is new, it will return
- * an empty collection; or if this Content has previously
- * been saved, it will retrieve related ContentAssocs from storage.
- *
- * This method is protected by default in order to keep the public
- * api reasonable. You can provide public methods for those you
- * actually need in Content.
- *
- * @param Criteria $criteria optional Criteria object to narrow the query
- * @param ConnectionInterface $con optional connection object
- * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
- * @return Collection|ChildContentAssoc[] List of ChildContentAssoc objects
- */
- public function getContentAssocsJoinCategory($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
- {
- $query = ChildContentAssocQuery::create(null, $criteria);
- $query->joinWith('Category', $joinBehavior);
-
- return $this->getContentAssocs($query, $con);
- }
-
-
- /**
- * If this collection has already been initialized with
- * an identical criteria, it returns the collection.
- * Otherwise if this Content is new, it will return
- * an empty collection; or if this Content has previously
- * been saved, it will retrieve related ContentAssocs from storage.
- *
- * This method is protected by default in order to keep the public
- * api reasonable. You can provide public methods for those you
- * actually need in Content.
- *
- * @param Criteria $criteria optional Criteria object to narrow the query
- * @param ConnectionInterface $con optional connection object
- * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
- * @return Collection|ChildContentAssoc[] List of ChildContentAssoc objects
- */
- public function getContentAssocsJoinProduct($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
- {
- $query = ChildContentAssocQuery::create(null, $criteria);
- $query->joinWith('Product', $joinBehavior);
-
- return $this->getContentAssocs($query, $con);
- }
-
/**
* Clears out the collRewritings collection
*
@@ -3015,6 +2792,492 @@ abstract class Content implements ActiveRecordInterface
return $this;
}
+ /**
+ * Clears out the collProductAssociatedContents collection
+ *
+ * This does not modify the database; however, it will remove any associated objects, causing
+ * them to be refetched by subsequent calls to accessor method.
+ *
+ * @return void
+ * @see addProductAssociatedContents()
+ */
+ public function clearProductAssociatedContents()
+ {
+ $this->collProductAssociatedContents = null; // important to set this to NULL since that means it is uninitialized
+ }
+
+ /**
+ * Reset is the collProductAssociatedContents collection loaded partially.
+ */
+ public function resetPartialProductAssociatedContents($v = true)
+ {
+ $this->collProductAssociatedContentsPartial = $v;
+ }
+
+ /**
+ * Initializes the collProductAssociatedContents collection.
+ *
+ * By default this just sets the collProductAssociatedContents collection to an empty array (like clearcollProductAssociatedContents());
+ * however, you may wish to override this method in your stub class to provide setting appropriate
+ * to your application -- for example, setting the initial array to the values stored in database.
+ *
+ * @param boolean $overrideExisting If set to true, the method call initializes
+ * the collection even if it is not empty
+ *
+ * @return void
+ */
+ public function initProductAssociatedContents($overrideExisting = true)
+ {
+ if (null !== $this->collProductAssociatedContents && !$overrideExisting) {
+ return;
+ }
+ $this->collProductAssociatedContents = new ObjectCollection();
+ $this->collProductAssociatedContents->setModel('\Thelia\Model\ProductAssociatedContent');
+ }
+
+ /**
+ * Gets an array of ChildProductAssociatedContent objects which contain a foreign key that references this object.
+ *
+ * If the $criteria is not null, it is used to always fetch the results from the database.
+ * Otherwise the results are fetched from the database the first time, then cached.
+ * Next time the same method is called without $criteria, the cached collection is returned.
+ * If this ChildContent is new, it will return
+ * an empty collection or the current collection; the criteria is ignored on a new object.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @return Collection|ChildProductAssociatedContent[] List of ChildProductAssociatedContent objects
+ * @throws PropelException
+ */
+ public function getProductAssociatedContents($criteria = null, ConnectionInterface $con = null)
+ {
+ $partial = $this->collProductAssociatedContentsPartial && !$this->isNew();
+ if (null === $this->collProductAssociatedContents || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collProductAssociatedContents) {
+ // return empty collection
+ $this->initProductAssociatedContents();
+ } else {
+ $collProductAssociatedContents = ChildProductAssociatedContentQuery::create(null, $criteria)
+ ->filterByContent($this)
+ ->find($con);
+
+ if (null !== $criteria) {
+ if (false !== $this->collProductAssociatedContentsPartial && count($collProductAssociatedContents)) {
+ $this->initProductAssociatedContents(false);
+
+ foreach ($collProductAssociatedContents as $obj) {
+ if (false == $this->collProductAssociatedContents->contains($obj)) {
+ $this->collProductAssociatedContents->append($obj);
+ }
+ }
+
+ $this->collProductAssociatedContentsPartial = true;
+ }
+
+ $collProductAssociatedContents->getInternalIterator()->rewind();
+
+ return $collProductAssociatedContents;
+ }
+
+ if ($partial && $this->collProductAssociatedContents) {
+ foreach ($this->collProductAssociatedContents as $obj) {
+ if ($obj->isNew()) {
+ $collProductAssociatedContents[] = $obj;
+ }
+ }
+ }
+
+ $this->collProductAssociatedContents = $collProductAssociatedContents;
+ $this->collProductAssociatedContentsPartial = false;
+ }
+ }
+
+ return $this->collProductAssociatedContents;
+ }
+
+ /**
+ * Sets a collection of ProductAssociatedContent objects related by a one-to-many relationship
+ * to the current object.
+ * It will also schedule objects for deletion based on a diff between old objects (aka persisted)
+ * and new objects from the given Propel collection.
+ *
+ * @param Collection $productAssociatedContents A Propel collection.
+ * @param ConnectionInterface $con Optional connection object
+ * @return ChildContent The current object (for fluent API support)
+ */
+ public function setProductAssociatedContents(Collection $productAssociatedContents, ConnectionInterface $con = null)
+ {
+ $productAssociatedContentsToDelete = $this->getProductAssociatedContents(new Criteria(), $con)->diff($productAssociatedContents);
+
+
+ $this->productAssociatedContentsScheduledForDeletion = $productAssociatedContentsToDelete;
+
+ foreach ($productAssociatedContentsToDelete as $productAssociatedContentRemoved) {
+ $productAssociatedContentRemoved->setContent(null);
+ }
+
+ $this->collProductAssociatedContents = null;
+ foreach ($productAssociatedContents as $productAssociatedContent) {
+ $this->addProductAssociatedContent($productAssociatedContent);
+ }
+
+ $this->collProductAssociatedContents = $productAssociatedContents;
+ $this->collProductAssociatedContentsPartial = false;
+
+ return $this;
+ }
+
+ /**
+ * Returns the number of related ProductAssociatedContent objects.
+ *
+ * @param Criteria $criteria
+ * @param boolean $distinct
+ * @param ConnectionInterface $con
+ * @return int Count of related ProductAssociatedContent objects.
+ * @throws PropelException
+ */
+ public function countProductAssociatedContents(Criteria $criteria = null, $distinct = false, ConnectionInterface $con = null)
+ {
+ $partial = $this->collProductAssociatedContentsPartial && !$this->isNew();
+ if (null === $this->collProductAssociatedContents || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collProductAssociatedContents) {
+ return 0;
+ }
+
+ if ($partial && !$criteria) {
+ return count($this->getProductAssociatedContents());
+ }
+
+ $query = ChildProductAssociatedContentQuery::create(null, $criteria);
+ if ($distinct) {
+ $query->distinct();
+ }
+
+ return $query
+ ->filterByContent($this)
+ ->count($con);
+ }
+
+ return count($this->collProductAssociatedContents);
+ }
+
+ /**
+ * Method called to associate a ChildProductAssociatedContent object to this object
+ * through the ChildProductAssociatedContent foreign key attribute.
+ *
+ * @param ChildProductAssociatedContent $l ChildProductAssociatedContent
+ * @return \Thelia\Model\Content The current object (for fluent API support)
+ */
+ public function addProductAssociatedContent(ChildProductAssociatedContent $l)
+ {
+ if ($this->collProductAssociatedContents === null) {
+ $this->initProductAssociatedContents();
+ $this->collProductAssociatedContentsPartial = true;
+ }
+
+ if (!in_array($l, $this->collProductAssociatedContents->getArrayCopy(), true)) { // only add it if the **same** object is not already associated
+ $this->doAddProductAssociatedContent($l);
+ }
+
+ return $this;
+ }
+
+ /**
+ * @param ProductAssociatedContent $productAssociatedContent The productAssociatedContent object to add.
+ */
+ protected function doAddProductAssociatedContent($productAssociatedContent)
+ {
+ $this->collProductAssociatedContents[]= $productAssociatedContent;
+ $productAssociatedContent->setContent($this);
+ }
+
+ /**
+ * @param ProductAssociatedContent $productAssociatedContent The productAssociatedContent object to remove.
+ * @return ChildContent The current object (for fluent API support)
+ */
+ public function removeProductAssociatedContent($productAssociatedContent)
+ {
+ if ($this->getProductAssociatedContents()->contains($productAssociatedContent)) {
+ $this->collProductAssociatedContents->remove($this->collProductAssociatedContents->search($productAssociatedContent));
+ if (null === $this->productAssociatedContentsScheduledForDeletion) {
+ $this->productAssociatedContentsScheduledForDeletion = clone $this->collProductAssociatedContents;
+ $this->productAssociatedContentsScheduledForDeletion->clear();
+ }
+ $this->productAssociatedContentsScheduledForDeletion[]= clone $productAssociatedContent;
+ $productAssociatedContent->setContent(null);
+ }
+
+ return $this;
+ }
+
+
+ /**
+ * If this collection has already been initialized with
+ * an identical criteria, it returns the collection.
+ * Otherwise if this Content is new, it will return
+ * an empty collection; or if this Content has previously
+ * been saved, it will retrieve related ProductAssociatedContents from storage.
+ *
+ * This method is protected by default in order to keep the public
+ * api reasonable. You can provide public methods for those you
+ * actually need in Content.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
+ * @return Collection|ChildProductAssociatedContent[] List of ChildProductAssociatedContent objects
+ */
+ public function getProductAssociatedContentsJoinProduct($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
+ {
+ $query = ChildProductAssociatedContentQuery::create(null, $criteria);
+ $query->joinWith('Product', $joinBehavior);
+
+ return $this->getProductAssociatedContents($query, $con);
+ }
+
+ /**
+ * Clears out the collCategoryAssociatedContents collection
+ *
+ * This does not modify the database; however, it will remove any associated objects, causing
+ * them to be refetched by subsequent calls to accessor method.
+ *
+ * @return void
+ * @see addCategoryAssociatedContents()
+ */
+ public function clearCategoryAssociatedContents()
+ {
+ $this->collCategoryAssociatedContents = null; // important to set this to NULL since that means it is uninitialized
+ }
+
+ /**
+ * Reset is the collCategoryAssociatedContents collection loaded partially.
+ */
+ public function resetPartialCategoryAssociatedContents($v = true)
+ {
+ $this->collCategoryAssociatedContentsPartial = $v;
+ }
+
+ /**
+ * Initializes the collCategoryAssociatedContents collection.
+ *
+ * By default this just sets the collCategoryAssociatedContents collection to an empty array (like clearcollCategoryAssociatedContents());
+ * however, you may wish to override this method in your stub class to provide setting appropriate
+ * to your application -- for example, setting the initial array to the values stored in database.
+ *
+ * @param boolean $overrideExisting If set to true, the method call initializes
+ * the collection even if it is not empty
+ *
+ * @return void
+ */
+ public function initCategoryAssociatedContents($overrideExisting = true)
+ {
+ if (null !== $this->collCategoryAssociatedContents && !$overrideExisting) {
+ return;
+ }
+ $this->collCategoryAssociatedContents = new ObjectCollection();
+ $this->collCategoryAssociatedContents->setModel('\Thelia\Model\CategoryAssociatedContent');
+ }
+
+ /**
+ * Gets an array of ChildCategoryAssociatedContent objects which contain a foreign key that references this object.
+ *
+ * If the $criteria is not null, it is used to always fetch the results from the database.
+ * Otherwise the results are fetched from the database the first time, then cached.
+ * Next time the same method is called without $criteria, the cached collection is returned.
+ * If this ChildContent is new, it will return
+ * an empty collection or the current collection; the criteria is ignored on a new object.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @return Collection|ChildCategoryAssociatedContent[] List of ChildCategoryAssociatedContent objects
+ * @throws PropelException
+ */
+ public function getCategoryAssociatedContents($criteria = null, ConnectionInterface $con = null)
+ {
+ $partial = $this->collCategoryAssociatedContentsPartial && !$this->isNew();
+ if (null === $this->collCategoryAssociatedContents || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collCategoryAssociatedContents) {
+ // return empty collection
+ $this->initCategoryAssociatedContents();
+ } else {
+ $collCategoryAssociatedContents = ChildCategoryAssociatedContentQuery::create(null, $criteria)
+ ->filterByContent($this)
+ ->find($con);
+
+ if (null !== $criteria) {
+ if (false !== $this->collCategoryAssociatedContentsPartial && count($collCategoryAssociatedContents)) {
+ $this->initCategoryAssociatedContents(false);
+
+ foreach ($collCategoryAssociatedContents as $obj) {
+ if (false == $this->collCategoryAssociatedContents->contains($obj)) {
+ $this->collCategoryAssociatedContents->append($obj);
+ }
+ }
+
+ $this->collCategoryAssociatedContentsPartial = true;
+ }
+
+ $collCategoryAssociatedContents->getInternalIterator()->rewind();
+
+ return $collCategoryAssociatedContents;
+ }
+
+ if ($partial && $this->collCategoryAssociatedContents) {
+ foreach ($this->collCategoryAssociatedContents as $obj) {
+ if ($obj->isNew()) {
+ $collCategoryAssociatedContents[] = $obj;
+ }
+ }
+ }
+
+ $this->collCategoryAssociatedContents = $collCategoryAssociatedContents;
+ $this->collCategoryAssociatedContentsPartial = false;
+ }
+ }
+
+ return $this->collCategoryAssociatedContents;
+ }
+
+ /**
+ * Sets a collection of CategoryAssociatedContent objects related by a one-to-many relationship
+ * to the current object.
+ * It will also schedule objects for deletion based on a diff between old objects (aka persisted)
+ * and new objects from the given Propel collection.
+ *
+ * @param Collection $categoryAssociatedContents A Propel collection.
+ * @param ConnectionInterface $con Optional connection object
+ * @return ChildContent The current object (for fluent API support)
+ */
+ public function setCategoryAssociatedContents(Collection $categoryAssociatedContents, ConnectionInterface $con = null)
+ {
+ $categoryAssociatedContentsToDelete = $this->getCategoryAssociatedContents(new Criteria(), $con)->diff($categoryAssociatedContents);
+
+
+ $this->categoryAssociatedContentsScheduledForDeletion = $categoryAssociatedContentsToDelete;
+
+ foreach ($categoryAssociatedContentsToDelete as $categoryAssociatedContentRemoved) {
+ $categoryAssociatedContentRemoved->setContent(null);
+ }
+
+ $this->collCategoryAssociatedContents = null;
+ foreach ($categoryAssociatedContents as $categoryAssociatedContent) {
+ $this->addCategoryAssociatedContent($categoryAssociatedContent);
+ }
+
+ $this->collCategoryAssociatedContents = $categoryAssociatedContents;
+ $this->collCategoryAssociatedContentsPartial = false;
+
+ return $this;
+ }
+
+ /**
+ * Returns the number of related CategoryAssociatedContent objects.
+ *
+ * @param Criteria $criteria
+ * @param boolean $distinct
+ * @param ConnectionInterface $con
+ * @return int Count of related CategoryAssociatedContent objects.
+ * @throws PropelException
+ */
+ public function countCategoryAssociatedContents(Criteria $criteria = null, $distinct = false, ConnectionInterface $con = null)
+ {
+ $partial = $this->collCategoryAssociatedContentsPartial && !$this->isNew();
+ if (null === $this->collCategoryAssociatedContents || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collCategoryAssociatedContents) {
+ return 0;
+ }
+
+ if ($partial && !$criteria) {
+ return count($this->getCategoryAssociatedContents());
+ }
+
+ $query = ChildCategoryAssociatedContentQuery::create(null, $criteria);
+ if ($distinct) {
+ $query->distinct();
+ }
+
+ return $query
+ ->filterByContent($this)
+ ->count($con);
+ }
+
+ return count($this->collCategoryAssociatedContents);
+ }
+
+ /**
+ * Method called to associate a ChildCategoryAssociatedContent object to this object
+ * through the ChildCategoryAssociatedContent foreign key attribute.
+ *
+ * @param ChildCategoryAssociatedContent $l ChildCategoryAssociatedContent
+ * @return \Thelia\Model\Content The current object (for fluent API support)
+ */
+ public function addCategoryAssociatedContent(ChildCategoryAssociatedContent $l)
+ {
+ if ($this->collCategoryAssociatedContents === null) {
+ $this->initCategoryAssociatedContents();
+ $this->collCategoryAssociatedContentsPartial = true;
+ }
+
+ if (!in_array($l, $this->collCategoryAssociatedContents->getArrayCopy(), true)) { // only add it if the **same** object is not already associated
+ $this->doAddCategoryAssociatedContent($l);
+ }
+
+ return $this;
+ }
+
+ /**
+ * @param CategoryAssociatedContent $categoryAssociatedContent The categoryAssociatedContent object to add.
+ */
+ protected function doAddCategoryAssociatedContent($categoryAssociatedContent)
+ {
+ $this->collCategoryAssociatedContents[]= $categoryAssociatedContent;
+ $categoryAssociatedContent->setContent($this);
+ }
+
+ /**
+ * @param CategoryAssociatedContent $categoryAssociatedContent The categoryAssociatedContent object to remove.
+ * @return ChildContent The current object (for fluent API support)
+ */
+ public function removeCategoryAssociatedContent($categoryAssociatedContent)
+ {
+ if ($this->getCategoryAssociatedContents()->contains($categoryAssociatedContent)) {
+ $this->collCategoryAssociatedContents->remove($this->collCategoryAssociatedContents->search($categoryAssociatedContent));
+ if (null === $this->categoryAssociatedContentsScheduledForDeletion) {
+ $this->categoryAssociatedContentsScheduledForDeletion = clone $this->collCategoryAssociatedContents;
+ $this->categoryAssociatedContentsScheduledForDeletion->clear();
+ }
+ $this->categoryAssociatedContentsScheduledForDeletion[]= clone $categoryAssociatedContent;
+ $categoryAssociatedContent->setContent(null);
+ }
+
+ return $this;
+ }
+
+
+ /**
+ * If this collection has already been initialized with
+ * an identical criteria, it returns the collection.
+ * Otherwise if this Content is new, it will return
+ * an empty collection; or if this Content has previously
+ * been saved, it will retrieve related CategoryAssociatedContents from storage.
+ *
+ * This method is protected by default in order to keep the public
+ * api reasonable. You can provide public methods for those you
+ * actually need in Content.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
+ * @return Collection|ChildCategoryAssociatedContent[] List of ChildCategoryAssociatedContent objects
+ */
+ public function getCategoryAssociatedContentsJoinCategory($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
+ {
+ $query = ChildCategoryAssociatedContentQuery::create(null, $criteria);
+ $query->joinWith('Category', $joinBehavior);
+
+ return $this->getCategoryAssociatedContents($query, $con);
+ }
+
/**
* Clears out the collContentI18ns collection
*
@@ -3677,11 +3940,6 @@ abstract class Content implements ActiveRecordInterface
public function clearAllReferences($deep = false)
{
if ($deep) {
- if ($this->collContentAssocs) {
- foreach ($this->collContentAssocs as $o) {
- $o->clearAllReferences($deep);
- }
- }
if ($this->collRewritings) {
foreach ($this->collRewritings as $o) {
$o->clearAllReferences($deep);
@@ -3702,6 +3960,16 @@ abstract class Content implements ActiveRecordInterface
$o->clearAllReferences($deep);
}
}
+ if ($this->collProductAssociatedContents) {
+ foreach ($this->collProductAssociatedContents as $o) {
+ $o->clearAllReferences($deep);
+ }
+ }
+ if ($this->collCategoryAssociatedContents) {
+ foreach ($this->collCategoryAssociatedContents as $o) {
+ $o->clearAllReferences($deep);
+ }
+ }
if ($this->collContentI18ns) {
foreach ($this->collContentI18ns as $o) {
$o->clearAllReferences($deep);
@@ -3723,10 +3991,6 @@ abstract class Content implements ActiveRecordInterface
$this->currentLocale = 'en_EN';
$this->currentTranslations = null;
- if ($this->collContentAssocs instanceof Collection) {
- $this->collContentAssocs->clearIterator();
- }
- $this->collContentAssocs = null;
if ($this->collRewritings instanceof Collection) {
$this->collRewritings->clearIterator();
}
@@ -3743,6 +4007,14 @@ abstract class Content implements ActiveRecordInterface
$this->collContentDocuments->clearIterator();
}
$this->collContentDocuments = null;
+ if ($this->collProductAssociatedContents instanceof Collection) {
+ $this->collProductAssociatedContents->clearIterator();
+ }
+ $this->collProductAssociatedContents = null;
+ if ($this->collCategoryAssociatedContents instanceof Collection) {
+ $this->collCategoryAssociatedContents->clearIterator();
+ }
+ $this->collCategoryAssociatedContents = null;
if ($this->collContentI18ns instanceof Collection) {
$this->collContentI18ns->clearIterator();
}
diff --git a/core/lib/Thelia/Model/Base/ContentAssoc.php b/core/lib/Thelia/Model/Base/ContentAssoc.php
deleted file mode 100755
index eb3645c0b..000000000
--- a/core/lib/Thelia/Model/Base/ContentAssoc.php
+++ /dev/null
@@ -1,1688 +0,0 @@
-modifiedColumns);
- }
-
- /**
- * Has specified column been modified?
- *
- * @param string $col column fully qualified name (TableMap::TYPE_COLNAME), e.g. Book::AUTHOR_ID
- * @return boolean True if $col has been modified.
- */
- public function isColumnModified($col)
- {
- return in_array($col, $this->modifiedColumns);
- }
-
- /**
- * Get the columns that have been modified in this object.
- * @return array A unique list of the modified column names for this object.
- */
- public function getModifiedColumns()
- {
- return array_unique($this->modifiedColumns);
- }
-
- /**
- * Returns whether the object has ever been saved. This will
- * be false, if the object was retrieved from storage or was created
- * and then saved.
- *
- * @return true, if the object has never been persisted.
- */
- public function isNew()
- {
- return $this->new;
- }
-
- /**
- * Setter for the isNew attribute. This method will be called
- * by Propel-generated children and objects.
- *
- * @param boolean $b the state of the object.
- */
- public function setNew($b)
- {
- $this->new = (Boolean) $b;
- }
-
- /**
- * Whether this object has been deleted.
- * @return boolean The deleted state of this object.
- */
- public function isDeleted()
- {
- return $this->deleted;
- }
-
- /**
- * Specify whether this object has been deleted.
- * @param boolean $b The deleted state of this object.
- * @return void
- */
- public function setDeleted($b)
- {
- $this->deleted = (Boolean) $b;
- }
-
- /**
- * Sets the modified state for the object to be false.
- * @param string $col If supplied, only the specified column is reset.
- * @return void
- */
- public function resetModified($col = null)
- {
- if (null !== $col) {
- while (false !== ($offset = array_search($col, $this->modifiedColumns))) {
- array_splice($this->modifiedColumns, $offset, 1);
- }
- } else {
- $this->modifiedColumns = array();
- }
- }
-
- /**
- * Compares this with another ContentAssoc instance. If
- * obj is an instance of ContentAssoc, delegates to
- * equals(ContentAssoc). Otherwise, returns false.
- *
- * @param obj The object to compare to.
- * @return Whether equal to the object specified.
- */
- public function equals($obj)
- {
- $thisclazz = get_class($this);
- if (!is_object($obj) || !($obj instanceof $thisclazz)) {
- return false;
- }
-
- if ($this === $obj) {
- return true;
- }
-
- if (null === $this->getPrimaryKey()
- || null === $obj->getPrimaryKey()) {
- return false;
- }
-
- return $this->getPrimaryKey() === $obj->getPrimaryKey();
- }
-
- /**
- * If the primary key is not null, return the hashcode of the
- * primary key. Otherwise, return the hash code of the object.
- *
- * @return int Hashcode
- */
- public function hashCode()
- {
- if (null !== $this->getPrimaryKey()) {
- return crc32(serialize($this->getPrimaryKey()));
- }
-
- return crc32(serialize(clone $this));
- }
-
- /**
- * Get the associative array of the virtual columns in this object
- *
- * @param string $name The virtual column name
- *
- * @return array
- */
- public function getVirtualColumns()
- {
- return $this->virtualColumns;
- }
-
- /**
- * Checks the existence of a virtual column in this object
- *
- * @return boolean
- */
- public function hasVirtualColumn($name)
- {
- return array_key_exists($name, $this->virtualColumns);
- }
-
- /**
- * Get the value of a virtual column in this object
- *
- * @return mixed
- */
- public function getVirtualColumn($name)
- {
- if (!$this->hasVirtualColumn($name)) {
- throw new PropelException(sprintf('Cannot get value of inexistent virtual column %s.', $name));
- }
-
- return $this->virtualColumns[$name];
- }
-
- /**
- * Set the value of a virtual column in this object
- *
- * @param string $name The virtual column name
- * @param mixed $value The value to give to the virtual column
- *
- * @return ContentAssoc The current object, for fluid interface
- */
- public function setVirtualColumn($name, $value)
- {
- $this->virtualColumns[$name] = $value;
-
- return $this;
- }
-
- /**
- * Logs a message using Propel::log().
- *
- * @param string $msg
- * @param int $priority One of the Propel::LOG_* logging levels
- * @return boolean
- */
- protected function log($msg, $priority = Propel::LOG_INFO)
- {
- return Propel::log(get_class($this) . ': ' . $msg, $priority);
- }
-
- /**
- * Populate the current object from a string, using a given parser format
- *
- * $book = new Book();
- * $book->importFrom('JSON', '{"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}');
- *
- *
- * @param mixed $parser A AbstractParser instance,
- * or a format name ('XML', 'YAML', 'JSON', 'CSV')
- * @param string $data The source data to import from
- *
- * @return ContentAssoc The current object, for fluid interface
- */
- public function importFrom($parser, $data)
- {
- if (!$parser instanceof AbstractParser) {
- $parser = AbstractParser::getParser($parser);
- }
-
- return $this->fromArray($parser->toArray($data), TableMap::TYPE_PHPNAME);
- }
-
- /**
- * Export the current object properties to a string, using a given parser format
- *
- * $book = BookQuery::create()->findPk(9012);
- * echo $book->exportTo('JSON');
- * => {"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}');
- *
- *
- * @param mixed $parser A AbstractParser instance, or a format name ('XML', 'YAML', 'JSON', 'CSV')
- * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy load(ed) columns. Defaults to TRUE.
- * @return string The exported data
- */
- public function exportTo($parser, $includeLazyLoadColumns = true)
- {
- if (!$parser instanceof AbstractParser) {
- $parser = AbstractParser::getParser($parser);
- }
-
- return $parser->fromArray($this->toArray(TableMap::TYPE_PHPNAME, $includeLazyLoadColumns, array(), true));
- }
-
- /**
- * Clean up internal collections prior to serializing
- * Avoids recursive loops that turn into segmentation faults when serializing
- */
- public function __sleep()
- {
- $this->clearAllReferences();
-
- return array_keys(get_object_vars($this));
- }
-
- /**
- * Get the [id] column value.
- *
- * @return int
- */
- public function getId()
- {
-
- return $this->id;
- }
-
- /**
- * Get the [category_id] column value.
- *
- * @return int
- */
- public function getCategoryId()
- {
-
- return $this->category_id;
- }
-
- /**
- * Get the [product_id] column value.
- *
- * @return int
- */
- public function getProductId()
- {
-
- return $this->product_id;
- }
-
- /**
- * Get the [content_id] column value.
- *
- * @return int
- */
- public function getContentId()
- {
-
- return $this->content_id;
- }
-
- /**
- * Get the [position] column value.
- *
- * @return int
- */
- public function getPosition()
- {
-
- return $this->position;
- }
-
- /**
- * Get the [optionally formatted] temporal [created_at] column value.
- *
- *
- * @param string $format The date/time format string (either date()-style or strftime()-style).
- * If format is NULL, then the raw \DateTime object will be returned.
- *
- * @return mixed Formatted date/time value as string or \DateTime object (if format is NULL), NULL if column is NULL, and 0 if column value is 0000-00-00 00:00:00
- *
- * @throws PropelException - if unable to parse/validate the date/time value.
- */
- public function getCreatedAt($format = NULL)
- {
- if ($format === null) {
- return $this->created_at;
- } else {
- return $this->created_at !== null ? $this->created_at->format($format) : null;
- }
- }
-
- /**
- * Get the [optionally formatted] temporal [updated_at] column value.
- *
- *
- * @param string $format The date/time format string (either date()-style or strftime()-style).
- * If format is NULL, then the raw \DateTime object will be returned.
- *
- * @return mixed Formatted date/time value as string or \DateTime object (if format is NULL), NULL if column is NULL, and 0 if column value is 0000-00-00 00:00:00
- *
- * @throws PropelException - if unable to parse/validate the date/time value.
- */
- public function getUpdatedAt($format = NULL)
- {
- if ($format === null) {
- return $this->updated_at;
- } else {
- return $this->updated_at !== null ? $this->updated_at->format($format) : null;
- }
- }
-
- /**
- * Set the value of [id] column.
- *
- * @param int $v new value
- * @return \Thelia\Model\ContentAssoc The current object (for fluent API support)
- */
- public function setId($v)
- {
- if ($v !== null) {
- $v = (int) $v;
- }
-
- if ($this->id !== $v) {
- $this->id = $v;
- $this->modifiedColumns[] = ContentAssocTableMap::ID;
- }
-
-
- return $this;
- } // setId()
-
- /**
- * Set the value of [category_id] column.
- *
- * @param int $v new value
- * @return \Thelia\Model\ContentAssoc The current object (for fluent API support)
- */
- public function setCategoryId($v)
- {
- if ($v !== null) {
- $v = (int) $v;
- }
-
- if ($this->category_id !== $v) {
- $this->category_id = $v;
- $this->modifiedColumns[] = ContentAssocTableMap::CATEGORY_ID;
- }
-
- if ($this->aCategory !== null && $this->aCategory->getId() !== $v) {
- $this->aCategory = null;
- }
-
-
- return $this;
- } // setCategoryId()
-
- /**
- * Set the value of [product_id] column.
- *
- * @param int $v new value
- * @return \Thelia\Model\ContentAssoc The current object (for fluent API support)
- */
- public function setProductId($v)
- {
- if ($v !== null) {
- $v = (int) $v;
- }
-
- if ($this->product_id !== $v) {
- $this->product_id = $v;
- $this->modifiedColumns[] = ContentAssocTableMap::PRODUCT_ID;
- }
-
- if ($this->aProduct !== null && $this->aProduct->getId() !== $v) {
- $this->aProduct = null;
- }
-
-
- return $this;
- } // setProductId()
-
- /**
- * Set the value of [content_id] column.
- *
- * @param int $v new value
- * @return \Thelia\Model\ContentAssoc The current object (for fluent API support)
- */
- public function setContentId($v)
- {
- if ($v !== null) {
- $v = (int) $v;
- }
-
- if ($this->content_id !== $v) {
- $this->content_id = $v;
- $this->modifiedColumns[] = ContentAssocTableMap::CONTENT_ID;
- }
-
- if ($this->aContent !== null && $this->aContent->getId() !== $v) {
- $this->aContent = null;
- }
-
-
- return $this;
- } // setContentId()
-
- /**
- * Set the value of [position] column.
- *
- * @param int $v new value
- * @return \Thelia\Model\ContentAssoc The current object (for fluent API support)
- */
- public function setPosition($v)
- {
- if ($v !== null) {
- $v = (int) $v;
- }
-
- if ($this->position !== $v) {
- $this->position = $v;
- $this->modifiedColumns[] = ContentAssocTableMap::POSITION;
- }
-
-
- return $this;
- } // setPosition()
-
- /**
- * Sets the value of [created_at] column to a normalized version of the date/time value specified.
- *
- * @param mixed $v string, integer (timestamp), or \DateTime value.
- * Empty strings are treated as NULL.
- * @return \Thelia\Model\ContentAssoc The current object (for fluent API support)
- */
- public function setCreatedAt($v)
- {
- $dt = PropelDateTime::newInstance($v, null, '\DateTime');
- if ($this->created_at !== null || $dt !== null) {
- if ($dt !== $this->created_at) {
- $this->created_at = $dt;
- $this->modifiedColumns[] = ContentAssocTableMap::CREATED_AT;
- }
- } // if either are not null
-
-
- return $this;
- } // setCreatedAt()
-
- /**
- * Sets the value of [updated_at] column to a normalized version of the date/time value specified.
- *
- * @param mixed $v string, integer (timestamp), or \DateTime value.
- * Empty strings are treated as NULL.
- * @return \Thelia\Model\ContentAssoc The current object (for fluent API support)
- */
- public function setUpdatedAt($v)
- {
- $dt = PropelDateTime::newInstance($v, null, '\DateTime');
- if ($this->updated_at !== null || $dt !== null) {
- if ($dt !== $this->updated_at) {
- $this->updated_at = $dt;
- $this->modifiedColumns[] = ContentAssocTableMap::UPDATED_AT;
- }
- } // if either are not null
-
-
- return $this;
- } // setUpdatedAt()
-
- /**
- * Indicates whether the columns in this object are only set to default values.
- *
- * This method can be used in conjunction with isModified() to indicate whether an object is both
- * modified _and_ has some values set which are non-default.
- *
- * @return boolean Whether the columns in this object are only been set with default values.
- */
- public function hasOnlyDefaultValues()
- {
- // otherwise, everything was equal, so return TRUE
- return true;
- } // hasOnlyDefaultValues()
-
- /**
- * Hydrates (populates) the object variables with values from the database resultset.
- *
- * An offset (0-based "start column") is specified so that objects can be hydrated
- * with a subset of the columns in the resultset rows. This is needed, for example,
- * for results of JOIN queries where the resultset row includes columns from two or
- * more tables.
- *
- * @param array $row The row returned by DataFetcher->fetch().
- * @param int $startcol 0-based offset column which indicates which restultset column to start with.
- * @param boolean $rehydrate Whether this object is being re-hydrated from the database.
- * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType().
- One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
- * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
- *
- * @return int next starting column
- * @throws PropelException - Any caught Exception will be rewrapped as a PropelException.
- */
- public function hydrate($row, $startcol = 0, $rehydrate = false, $indexType = TableMap::TYPE_NUM)
- {
- try {
-
-
- $col = $row[TableMap::TYPE_NUM == $indexType ? 0 + $startcol : ContentAssocTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)];
- $this->id = (null !== $col) ? (int) $col : null;
-
- $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : ContentAssocTableMap::translateFieldName('CategoryId', TableMap::TYPE_PHPNAME, $indexType)];
- $this->category_id = (null !== $col) ? (int) $col : null;
-
- $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : ContentAssocTableMap::translateFieldName('ProductId', TableMap::TYPE_PHPNAME, $indexType)];
- $this->product_id = (null !== $col) ? (int) $col : null;
-
- $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : ContentAssocTableMap::translateFieldName('ContentId', TableMap::TYPE_PHPNAME, $indexType)];
- $this->content_id = (null !== $col) ? (int) $col : null;
-
- $col = $row[TableMap::TYPE_NUM == $indexType ? 4 + $startcol : ContentAssocTableMap::translateFieldName('Position', TableMap::TYPE_PHPNAME, $indexType)];
- $this->position = (null !== $col) ? (int) $col : null;
-
- $col = $row[TableMap::TYPE_NUM == $indexType ? 5 + $startcol : ContentAssocTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)];
- if ($col === '0000-00-00 00:00:00') {
- $col = null;
- }
- $this->created_at = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
-
- $col = $row[TableMap::TYPE_NUM == $indexType ? 6 + $startcol : ContentAssocTableMap::translateFieldName('UpdatedAt', TableMap::TYPE_PHPNAME, $indexType)];
- if ($col === '0000-00-00 00:00:00') {
- $col = null;
- }
- $this->updated_at = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
- $this->resetModified();
-
- $this->setNew(false);
-
- if ($rehydrate) {
- $this->ensureConsistency();
- }
-
- return $startcol + 7; // 7 = ContentAssocTableMap::NUM_HYDRATE_COLUMNS.
-
- } catch (Exception $e) {
- throw new PropelException("Error populating \Thelia\Model\ContentAssoc object", 0, $e);
- }
- }
-
- /**
- * Checks and repairs the internal consistency of the object.
- *
- * This method is executed after an already-instantiated object is re-hydrated
- * from the database. It exists to check any foreign keys to make sure that
- * the objects related to the current object are correct based on foreign key.
- *
- * You can override this method in the stub class, but you should always invoke
- * the base method from the overridden method (i.e. parent::ensureConsistency()),
- * in case your model changes.
- *
- * @throws PropelException
- */
- public function ensureConsistency()
- {
- if ($this->aCategory !== null && $this->category_id !== $this->aCategory->getId()) {
- $this->aCategory = null;
- }
- if ($this->aProduct !== null && $this->product_id !== $this->aProduct->getId()) {
- $this->aProduct = null;
- }
- if ($this->aContent !== null && $this->content_id !== $this->aContent->getId()) {
- $this->aContent = null;
- }
- } // ensureConsistency
-
- /**
- * Reloads this object from datastore based on primary key and (optionally) resets all associated objects.
- *
- * This will only work if the object has been saved and has a valid primary key set.
- *
- * @param boolean $deep (optional) Whether to also de-associated any related objects.
- * @param ConnectionInterface $con (optional) The ConnectionInterface connection to use.
- * @return void
- * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db
- */
- public function reload($deep = false, ConnectionInterface $con = null)
- {
- if ($this->isDeleted()) {
- throw new PropelException("Cannot reload a deleted object.");
- }
-
- if ($this->isNew()) {
- throw new PropelException("Cannot reload an unsaved object.");
- }
-
- if ($con === null) {
- $con = Propel::getServiceContainer()->getReadConnection(ContentAssocTableMap::DATABASE_NAME);
- }
-
- // We don't need to alter the object instance pool; we're just modifying this instance
- // already in the pool.
-
- $dataFetcher = ChildContentAssocQuery::create(null, $this->buildPkeyCriteria())->setFormatter(ModelCriteria::FORMAT_STATEMENT)->find($con);
- $row = $dataFetcher->fetch();
- $dataFetcher->close();
- if (!$row) {
- throw new PropelException('Cannot find matching row in the database to reload object values.');
- }
- $this->hydrate($row, 0, true, $dataFetcher->getIndexType()); // rehydrate
-
- if ($deep) { // also de-associate any related objects?
-
- $this->aCategory = null;
- $this->aProduct = null;
- $this->aContent = null;
- } // if (deep)
- }
-
- /**
- * Removes this object from datastore and sets delete attribute.
- *
- * @param ConnectionInterface $con
- * @return void
- * @throws PropelException
- * @see ContentAssoc::setDeleted()
- * @see ContentAssoc::isDeleted()
- */
- public function delete(ConnectionInterface $con = null)
- {
- if ($this->isDeleted()) {
- throw new PropelException("This object has already been deleted.");
- }
-
- if ($con === null) {
- $con = Propel::getServiceContainer()->getWriteConnection(ContentAssocTableMap::DATABASE_NAME);
- }
-
- $con->beginTransaction();
- try {
- $deleteQuery = ChildContentAssocQuery::create()
- ->filterByPrimaryKey($this->getPrimaryKey());
- $ret = $this->preDelete($con);
- if ($ret) {
- $deleteQuery->delete($con);
- $this->postDelete($con);
- $con->commit();
- $this->setDeleted(true);
- } else {
- $con->commit();
- }
- } catch (Exception $e) {
- $con->rollBack();
- throw $e;
- }
- }
-
- /**
- * Persists this object to the database.
- *
- * If the object is new, it inserts it; otherwise an update is performed.
- * All modified related objects will also be persisted in the doSave()
- * method. This method wraps all precipitate database operations in a
- * single transaction.
- *
- * @param ConnectionInterface $con
- * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations.
- * @throws PropelException
- * @see doSave()
- */
- public function save(ConnectionInterface $con = null)
- {
- if ($this->isDeleted()) {
- throw new PropelException("You cannot save an object that has been deleted.");
- }
-
- if ($con === null) {
- $con = Propel::getServiceContainer()->getWriteConnection(ContentAssocTableMap::DATABASE_NAME);
- }
-
- $con->beginTransaction();
- $isInsert = $this->isNew();
- try {
- $ret = $this->preSave($con);
- if ($isInsert) {
- $ret = $ret && $this->preInsert($con);
- // timestampable behavior
- if (!$this->isColumnModified(ContentAssocTableMap::CREATED_AT)) {
- $this->setCreatedAt(time());
- }
- if (!$this->isColumnModified(ContentAssocTableMap::UPDATED_AT)) {
- $this->setUpdatedAt(time());
- }
- } else {
- $ret = $ret && $this->preUpdate($con);
- // timestampable behavior
- if ($this->isModified() && !$this->isColumnModified(ContentAssocTableMap::UPDATED_AT)) {
- $this->setUpdatedAt(time());
- }
- }
- if ($ret) {
- $affectedRows = $this->doSave($con);
- if ($isInsert) {
- $this->postInsert($con);
- } else {
- $this->postUpdate($con);
- }
- $this->postSave($con);
- ContentAssocTableMap::addInstanceToPool($this);
- } else {
- $affectedRows = 0;
- }
- $con->commit();
-
- return $affectedRows;
- } catch (Exception $e) {
- $con->rollBack();
- throw $e;
- }
- }
-
- /**
- * Performs the work of inserting or updating the row in the database.
- *
- * If the object is new, it inserts it; otherwise an update is performed.
- * All related objects are also updated in this method.
- *
- * @param ConnectionInterface $con
- * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations.
- * @throws PropelException
- * @see save()
- */
- protected function doSave(ConnectionInterface $con)
- {
- $affectedRows = 0; // initialize var to track total num of affected rows
- if (!$this->alreadyInSave) {
- $this->alreadyInSave = true;
-
- // We call the save method on the following object(s) if they
- // were passed to this object by their corresponding set
- // method. This object relates to these object(s) by a
- // foreign key reference.
-
- if ($this->aCategory !== null) {
- if ($this->aCategory->isModified() || $this->aCategory->isNew()) {
- $affectedRows += $this->aCategory->save($con);
- }
- $this->setCategory($this->aCategory);
- }
-
- if ($this->aProduct !== null) {
- if ($this->aProduct->isModified() || $this->aProduct->isNew()) {
- $affectedRows += $this->aProduct->save($con);
- }
- $this->setProduct($this->aProduct);
- }
-
- if ($this->aContent !== null) {
- if ($this->aContent->isModified() || $this->aContent->isNew()) {
- $affectedRows += $this->aContent->save($con);
- }
- $this->setContent($this->aContent);
- }
-
- if ($this->isNew() || $this->isModified()) {
- // persist changes
- if ($this->isNew()) {
- $this->doInsert($con);
- } else {
- $this->doUpdate($con);
- }
- $affectedRows += 1;
- $this->resetModified();
- }
-
- $this->alreadyInSave = false;
-
- }
-
- return $affectedRows;
- } // doSave()
-
- /**
- * Insert the row in the database.
- *
- * @param ConnectionInterface $con
- *
- * @throws PropelException
- * @see doSave()
- */
- protected function doInsert(ConnectionInterface $con)
- {
- $modifiedColumns = array();
- $index = 0;
-
- $this->modifiedColumns[] = ContentAssocTableMap::ID;
- if (null !== $this->id) {
- throw new PropelException('Cannot insert a value for auto-increment primary key (' . ContentAssocTableMap::ID . ')');
- }
-
- // check the columns in natural order for more readable SQL queries
- if ($this->isColumnModified(ContentAssocTableMap::ID)) {
- $modifiedColumns[':p' . $index++] = 'ID';
- }
- if ($this->isColumnModified(ContentAssocTableMap::CATEGORY_ID)) {
- $modifiedColumns[':p' . $index++] = 'CATEGORY_ID';
- }
- if ($this->isColumnModified(ContentAssocTableMap::PRODUCT_ID)) {
- $modifiedColumns[':p' . $index++] = 'PRODUCT_ID';
- }
- if ($this->isColumnModified(ContentAssocTableMap::CONTENT_ID)) {
- $modifiedColumns[':p' . $index++] = 'CONTENT_ID';
- }
- if ($this->isColumnModified(ContentAssocTableMap::POSITION)) {
- $modifiedColumns[':p' . $index++] = 'POSITION';
- }
- if ($this->isColumnModified(ContentAssocTableMap::CREATED_AT)) {
- $modifiedColumns[':p' . $index++] = 'CREATED_AT';
- }
- if ($this->isColumnModified(ContentAssocTableMap::UPDATED_AT)) {
- $modifiedColumns[':p' . $index++] = 'UPDATED_AT';
- }
-
- $sql = sprintf(
- 'INSERT INTO content_assoc (%s) VALUES (%s)',
- implode(', ', $modifiedColumns),
- implode(', ', array_keys($modifiedColumns))
- );
-
- try {
- $stmt = $con->prepare($sql);
- foreach ($modifiedColumns as $identifier => $columnName) {
- switch ($columnName) {
- case 'ID':
- $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT);
- break;
- case 'CATEGORY_ID':
- $stmt->bindValue($identifier, $this->category_id, PDO::PARAM_INT);
- break;
- case 'PRODUCT_ID':
- $stmt->bindValue($identifier, $this->product_id, PDO::PARAM_INT);
- break;
- case 'CONTENT_ID':
- $stmt->bindValue($identifier, $this->content_id, PDO::PARAM_INT);
- break;
- case 'POSITION':
- $stmt->bindValue($identifier, $this->position, PDO::PARAM_INT);
- break;
- case 'CREATED_AT':
- $stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
- break;
- case 'UPDATED_AT':
- $stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
- break;
- }
- }
- $stmt->execute();
- } catch (Exception $e) {
- Propel::log($e->getMessage(), Propel::LOG_ERR);
- throw new PropelException(sprintf('Unable to execute INSERT statement [%s]', $sql), 0, $e);
- }
-
- try {
- $pk = $con->lastInsertId();
- } catch (Exception $e) {
- throw new PropelException('Unable to get autoincrement id.', 0, $e);
- }
- $this->setId($pk);
-
- $this->setNew(false);
- }
-
- /**
- * Update the row in the database.
- *
- * @param ConnectionInterface $con
- *
- * @return Integer Number of updated rows
- * @see doSave()
- */
- protected function doUpdate(ConnectionInterface $con)
- {
- $selectCriteria = $this->buildPkeyCriteria();
- $valuesCriteria = $this->buildCriteria();
-
- return $selectCriteria->doUpdate($valuesCriteria, $con);
- }
-
- /**
- * Retrieves a field from the object by name passed in as a string.
- *
- * @param string $name name
- * @param string $type The type of fieldname the $name is of:
- * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
- * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
- * Defaults to TableMap::TYPE_PHPNAME.
- * @return mixed Value of field.
- */
- public function getByName($name, $type = TableMap::TYPE_PHPNAME)
- {
- $pos = ContentAssocTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM);
- $field = $this->getByPosition($pos);
-
- return $field;
- }
-
- /**
- * Retrieves a field from the object by Position as specified in the xml schema.
- * Zero-based.
- *
- * @param int $pos position in xml schema
- * @return mixed Value of field at $pos
- */
- public function getByPosition($pos)
- {
- switch ($pos) {
- case 0:
- return $this->getId();
- break;
- case 1:
- return $this->getCategoryId();
- break;
- case 2:
- return $this->getProductId();
- break;
- case 3:
- return $this->getContentId();
- break;
- case 4:
- return $this->getPosition();
- break;
- case 5:
- return $this->getCreatedAt();
- break;
- case 6:
- return $this->getUpdatedAt();
- break;
- default:
- return null;
- break;
- } // switch()
- }
-
- /**
- * Exports the object as an array.
- *
- * You can specify the key type of the array by passing one of the class
- * type constants.
- *
- * @param string $keyType (optional) One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME,
- * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
- * Defaults to TableMap::TYPE_PHPNAME.
- * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to TRUE.
- * @param array $alreadyDumpedObjects List of objects to skip to avoid recursion
- * @param boolean $includeForeignObjects (optional) Whether to include hydrated related objects. Default to FALSE.
- *
- * @return array an associative array containing the field names (as keys) and field values
- */
- public function toArray($keyType = TableMap::TYPE_PHPNAME, $includeLazyLoadColumns = true, $alreadyDumpedObjects = array(), $includeForeignObjects = false)
- {
- if (isset($alreadyDumpedObjects['ContentAssoc'][$this->getPrimaryKey()])) {
- return '*RECURSION*';
- }
- $alreadyDumpedObjects['ContentAssoc'][$this->getPrimaryKey()] = true;
- $keys = ContentAssocTableMap::getFieldNames($keyType);
- $result = array(
- $keys[0] => $this->getId(),
- $keys[1] => $this->getCategoryId(),
- $keys[2] => $this->getProductId(),
- $keys[3] => $this->getContentId(),
- $keys[4] => $this->getPosition(),
- $keys[5] => $this->getCreatedAt(),
- $keys[6] => $this->getUpdatedAt(),
- );
- $virtualColumns = $this->virtualColumns;
- foreach($virtualColumns as $key => $virtualColumn)
- {
- $result[$key] = $virtualColumn;
- }
-
- if ($includeForeignObjects) {
- if (null !== $this->aCategory) {
- $result['Category'] = $this->aCategory->toArray($keyType, $includeLazyLoadColumns, $alreadyDumpedObjects, true);
- }
- if (null !== $this->aProduct) {
- $result['Product'] = $this->aProduct->toArray($keyType, $includeLazyLoadColumns, $alreadyDumpedObjects, true);
- }
- if (null !== $this->aContent) {
- $result['Content'] = $this->aContent->toArray($keyType, $includeLazyLoadColumns, $alreadyDumpedObjects, true);
- }
- }
-
- return $result;
- }
-
- /**
- * Sets a field from the object by name passed in as a string.
- *
- * @param string $name
- * @param mixed $value field value
- * @param string $type The type of fieldname the $name is of:
- * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
- * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
- * Defaults to TableMap::TYPE_PHPNAME.
- * @return void
- */
- public function setByName($name, $value, $type = TableMap::TYPE_PHPNAME)
- {
- $pos = ContentAssocTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM);
-
- return $this->setByPosition($pos, $value);
- }
-
- /**
- * Sets a field from the object by Position as specified in the xml schema.
- * Zero-based.
- *
- * @param int $pos position in xml schema
- * @param mixed $value field value
- * @return void
- */
- public function setByPosition($pos, $value)
- {
- switch ($pos) {
- case 0:
- $this->setId($value);
- break;
- case 1:
- $this->setCategoryId($value);
- break;
- case 2:
- $this->setProductId($value);
- break;
- case 3:
- $this->setContentId($value);
- break;
- case 4:
- $this->setPosition($value);
- break;
- case 5:
- $this->setCreatedAt($value);
- break;
- case 6:
- $this->setUpdatedAt($value);
- break;
- } // switch()
- }
-
- /**
- * Populates the object using an array.
- *
- * This is particularly useful when populating an object from one of the
- * request arrays (e.g. $_POST). This method goes through the column
- * names, checking to see whether a matching key exists in populated
- * array. If so the setByName() method is called for that column.
- *
- * You can specify the key type of the array by additionally passing one
- * of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME,
- * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
- * The default key type is the column's TableMap::TYPE_PHPNAME.
- *
- * @param array $arr An array to populate the object from.
- * @param string $keyType The type of keys the array uses.
- * @return void
- */
- public function fromArray($arr, $keyType = TableMap::TYPE_PHPNAME)
- {
- $keys = ContentAssocTableMap::getFieldNames($keyType);
-
- if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]);
- if (array_key_exists($keys[1], $arr)) $this->setCategoryId($arr[$keys[1]]);
- if (array_key_exists($keys[2], $arr)) $this->setProductId($arr[$keys[2]]);
- if (array_key_exists($keys[3], $arr)) $this->setContentId($arr[$keys[3]]);
- if (array_key_exists($keys[4], $arr)) $this->setPosition($arr[$keys[4]]);
- if (array_key_exists($keys[5], $arr)) $this->setCreatedAt($arr[$keys[5]]);
- if (array_key_exists($keys[6], $arr)) $this->setUpdatedAt($arr[$keys[6]]);
- }
-
- /**
- * Build a Criteria object containing the values of all modified columns in this object.
- *
- * @return Criteria The Criteria object containing all modified values.
- */
- public function buildCriteria()
- {
- $criteria = new Criteria(ContentAssocTableMap::DATABASE_NAME);
-
- if ($this->isColumnModified(ContentAssocTableMap::ID)) $criteria->add(ContentAssocTableMap::ID, $this->id);
- if ($this->isColumnModified(ContentAssocTableMap::CATEGORY_ID)) $criteria->add(ContentAssocTableMap::CATEGORY_ID, $this->category_id);
- if ($this->isColumnModified(ContentAssocTableMap::PRODUCT_ID)) $criteria->add(ContentAssocTableMap::PRODUCT_ID, $this->product_id);
- if ($this->isColumnModified(ContentAssocTableMap::CONTENT_ID)) $criteria->add(ContentAssocTableMap::CONTENT_ID, $this->content_id);
- if ($this->isColumnModified(ContentAssocTableMap::POSITION)) $criteria->add(ContentAssocTableMap::POSITION, $this->position);
- if ($this->isColumnModified(ContentAssocTableMap::CREATED_AT)) $criteria->add(ContentAssocTableMap::CREATED_AT, $this->created_at);
- if ($this->isColumnModified(ContentAssocTableMap::UPDATED_AT)) $criteria->add(ContentAssocTableMap::UPDATED_AT, $this->updated_at);
-
- return $criteria;
- }
-
- /**
- * Builds a Criteria object containing the primary key for this object.
- *
- * Unlike buildCriteria() this method includes the primary key values regardless
- * of whether or not they have been modified.
- *
- * @return Criteria The Criteria object containing value(s) for primary key(s).
- */
- public function buildPkeyCriteria()
- {
- $criteria = new Criteria(ContentAssocTableMap::DATABASE_NAME);
- $criteria->add(ContentAssocTableMap::ID, $this->id);
-
- return $criteria;
- }
-
- /**
- * Returns the primary key for this object (row).
- * @return int
- */
- public function getPrimaryKey()
- {
- return $this->getId();
- }
-
- /**
- * Generic method to set the primary key (id column).
- *
- * @param int $key Primary key.
- * @return void
- */
- public function setPrimaryKey($key)
- {
- $this->setId($key);
- }
-
- /**
- * Returns true if the primary key for this object is null.
- * @return boolean
- */
- public function isPrimaryKeyNull()
- {
-
- return null === $this->getId();
- }
-
- /**
- * Sets contents of passed object to values from current object.
- *
- * If desired, this method can also make copies of all associated (fkey referrers)
- * objects.
- *
- * @param object $copyObj An object of \Thelia\Model\ContentAssoc (or compatible) type.
- * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row.
- * @param boolean $makeNew Whether to reset autoincrement PKs and make the object new.
- * @throws PropelException
- */
- public function copyInto($copyObj, $deepCopy = false, $makeNew = true)
- {
- $copyObj->setCategoryId($this->getCategoryId());
- $copyObj->setProductId($this->getProductId());
- $copyObj->setContentId($this->getContentId());
- $copyObj->setPosition($this->getPosition());
- $copyObj->setCreatedAt($this->getCreatedAt());
- $copyObj->setUpdatedAt($this->getUpdatedAt());
- if ($makeNew) {
- $copyObj->setNew(true);
- $copyObj->setId(NULL); // this is a auto-increment column, so set to default value
- }
- }
-
- /**
- * Makes a copy of this object that will be inserted as a new row in table when saved.
- * It creates a new object filling in the simple attributes, but skipping any primary
- * keys that are defined for the table.
- *
- * If desired, this method can also make copies of all associated (fkey referrers)
- * objects.
- *
- * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row.
- * @return \Thelia\Model\ContentAssoc Clone of current object.
- * @throws PropelException
- */
- public function copy($deepCopy = false)
- {
- // we use get_class(), because this might be a subclass
- $clazz = get_class($this);
- $copyObj = new $clazz();
- $this->copyInto($copyObj, $deepCopy);
-
- return $copyObj;
- }
-
- /**
- * Declares an association between this object and a ChildCategory object.
- *
- * @param ChildCategory $v
- * @return \Thelia\Model\ContentAssoc The current object (for fluent API support)
- * @throws PropelException
- */
- public function setCategory(ChildCategory $v = null)
- {
- if ($v === null) {
- $this->setCategoryId(NULL);
- } else {
- $this->setCategoryId($v->getId());
- }
-
- $this->aCategory = $v;
-
- // Add binding for other direction of this n:n relationship.
- // If this object has already been added to the ChildCategory object, it will not be re-added.
- if ($v !== null) {
- $v->addContentAssoc($this);
- }
-
-
- return $this;
- }
-
-
- /**
- * Get the associated ChildCategory object
- *
- * @param ConnectionInterface $con Optional Connection object.
- * @return ChildCategory The associated ChildCategory object.
- * @throws PropelException
- */
- public function getCategory(ConnectionInterface $con = null)
- {
- if ($this->aCategory === null && ($this->category_id !== null)) {
- $this->aCategory = ChildCategoryQuery::create()->findPk($this->category_id, $con);
- /* The following can be used additionally to
- guarantee the related object contains a reference
- to this object. This level of coupling may, however, be
- undesirable since it could result in an only partially populated collection
- in the referenced object.
- $this->aCategory->addContentAssocs($this);
- */
- }
-
- return $this->aCategory;
- }
-
- /**
- * Declares an association between this object and a ChildProduct object.
- *
- * @param ChildProduct $v
- * @return \Thelia\Model\ContentAssoc The current object (for fluent API support)
- * @throws PropelException
- */
- public function setProduct(ChildProduct $v = null)
- {
- if ($v === null) {
- $this->setProductId(NULL);
- } else {
- $this->setProductId($v->getId());
- }
-
- $this->aProduct = $v;
-
- // Add binding for other direction of this n:n relationship.
- // If this object has already been added to the ChildProduct object, it will not be re-added.
- if ($v !== null) {
- $v->addContentAssoc($this);
- }
-
-
- return $this;
- }
-
-
- /**
- * Get the associated ChildProduct object
- *
- * @param ConnectionInterface $con Optional Connection object.
- * @return ChildProduct The associated ChildProduct object.
- * @throws PropelException
- */
- public function getProduct(ConnectionInterface $con = null)
- {
- if ($this->aProduct === null && ($this->product_id !== null)) {
- $this->aProduct = ChildProductQuery::create()->findPk($this->product_id, $con);
- /* The following can be used additionally to
- guarantee the related object contains a reference
- to this object. This level of coupling may, however, be
- undesirable since it could result in an only partially populated collection
- in the referenced object.
- $this->aProduct->addContentAssocs($this);
- */
- }
-
- return $this->aProduct;
- }
-
- /**
- * Declares an association between this object and a ChildContent object.
- *
- * @param ChildContent $v
- * @return \Thelia\Model\ContentAssoc The current object (for fluent API support)
- * @throws PropelException
- */
- public function setContent(ChildContent $v = null)
- {
- if ($v === null) {
- $this->setContentId(NULL);
- } else {
- $this->setContentId($v->getId());
- }
-
- $this->aContent = $v;
-
- // Add binding for other direction of this n:n relationship.
- // If this object has already been added to the ChildContent object, it will not be re-added.
- if ($v !== null) {
- $v->addContentAssoc($this);
- }
-
-
- return $this;
- }
-
-
- /**
- * Get the associated ChildContent object
- *
- * @param ConnectionInterface $con Optional Connection object.
- * @return ChildContent The associated ChildContent object.
- * @throws PropelException
- */
- public function getContent(ConnectionInterface $con = null)
- {
- if ($this->aContent === null && ($this->content_id !== null)) {
- $this->aContent = ChildContentQuery::create()->findPk($this->content_id, $con);
- /* The following can be used additionally to
- guarantee the related object contains a reference
- to this object. This level of coupling may, however, be
- undesirable since it could result in an only partially populated collection
- in the referenced object.
- $this->aContent->addContentAssocs($this);
- */
- }
-
- return $this->aContent;
- }
-
- /**
- * Clears the current object and sets all attributes to their default values
- */
- public function clear()
- {
- $this->id = null;
- $this->category_id = null;
- $this->product_id = null;
- $this->content_id = null;
- $this->position = null;
- $this->created_at = null;
- $this->updated_at = null;
- $this->alreadyInSave = false;
- $this->clearAllReferences();
- $this->resetModified();
- $this->setNew(true);
- $this->setDeleted(false);
- }
-
- /**
- * Resets all references to other model objects or collections of model objects.
- *
- * This method is a user-space workaround for PHP's inability to garbage collect
- * objects with circular references (even in PHP 5.3). This is currently necessary
- * when using Propel in certain daemon or large-volume/high-memory operations.
- *
- * @param boolean $deep Whether to also clear the references on all referrer objects.
- */
- public function clearAllReferences($deep = false)
- {
- if ($deep) {
- } // if ($deep)
-
- $this->aCategory = null;
- $this->aProduct = null;
- $this->aContent = null;
- }
-
- /**
- * Return the string representation of this object
- *
- * @return string
- */
- public function __toString()
- {
- return (string) $this->exportTo(ContentAssocTableMap::DEFAULT_STRING_FORMAT);
- }
-
- // timestampable behavior
-
- /**
- * Mark the current object so that the update date doesn't get updated during next save
- *
- * @return ChildContentAssoc The current object (for fluent API support)
- */
- public function keepUpdateDateUnchanged()
- {
- $this->modifiedColumns[] = ContentAssocTableMap::UPDATED_AT;
-
- return $this;
- }
-
- /**
- * Code to be run before persisting the object
- * @param ConnectionInterface $con
- * @return boolean
- */
- public function preSave(ConnectionInterface $con = null)
- {
- return true;
- }
-
- /**
- * Code to be run after persisting the object
- * @param ConnectionInterface $con
- */
- public function postSave(ConnectionInterface $con = null)
- {
-
- }
-
- /**
- * Code to be run before inserting to database
- * @param ConnectionInterface $con
- * @return boolean
- */
- public function preInsert(ConnectionInterface $con = null)
- {
- return true;
- }
-
- /**
- * Code to be run after inserting to database
- * @param ConnectionInterface $con
- */
- public function postInsert(ConnectionInterface $con = null)
- {
-
- }
-
- /**
- * Code to be run before updating the object in database
- * @param ConnectionInterface $con
- * @return boolean
- */
- public function preUpdate(ConnectionInterface $con = null)
- {
- return true;
- }
-
- /**
- * Code to be run after updating the object in database
- * @param ConnectionInterface $con
- */
- public function postUpdate(ConnectionInterface $con = null)
- {
-
- }
-
- /**
- * Code to be run before deleting the object in database
- * @param ConnectionInterface $con
- * @return boolean
- */
- public function preDelete(ConnectionInterface $con = null)
- {
- return true;
- }
-
- /**
- * Code to be run after deleting the object in database
- * @param ConnectionInterface $con
- */
- public function postDelete(ConnectionInterface $con = null)
- {
-
- }
-
-
- /**
- * Derived method to catches calls to undefined methods.
- *
- * Provides magic import/export method support (fromXML()/toXML(), fromYAML()/toYAML(), etc.).
- * Allows to define default __call() behavior if you overwrite __call()
- *
- * @param string $name
- * @param mixed $params
- *
- * @return array|string
- */
- public function __call($name, $params)
- {
- if (0 === strpos($name, 'get')) {
- $virtualColumn = substr($name, 3);
- if ($this->hasVirtualColumn($virtualColumn)) {
- return $this->getVirtualColumn($virtualColumn);
- }
-
- $virtualColumn = lcfirst($virtualColumn);
- if ($this->hasVirtualColumn($virtualColumn)) {
- return $this->getVirtualColumn($virtualColumn);
- }
- }
-
- if (0 === strpos($name, 'from')) {
- $format = substr($name, 4);
-
- return $this->importFrom($format, reset($params));
- }
-
- if (0 === strpos($name, 'to')) {
- $format = substr($name, 2);
- $includeLazyLoadColumns = isset($params[0]) ? $params[0] : true;
-
- return $this->exportTo($format, $includeLazyLoadColumns);
- }
-
- throw new BadMethodCallException(sprintf('Call to undefined method: %s.', $name));
- }
-
-}
diff --git a/core/lib/Thelia/Model/Base/ContentAssocQuery.php b/core/lib/Thelia/Model/Base/ContentAssocQuery.php
deleted file mode 100755
index 630af8065..000000000
--- a/core/lib/Thelia/Model/Base/ContentAssocQuery.php
+++ /dev/null
@@ -1,930 +0,0 @@
-setModelAlias($modelAlias);
- }
- if ($criteria instanceof Criteria) {
- $query->mergeWith($criteria);
- }
-
- return $query;
- }
-
- /**
- * Find object by primary key.
- * Propel uses the instance pool to skip the database if the object exists.
- * Go fast if the query is untouched.
- *
- *
- * $obj = $c->findPk(12, $con);
- *
- *
- * @param mixed $key Primary key to use for the query
- * @param ConnectionInterface $con an optional connection object
- *
- * @return ChildContentAssoc|array|mixed the result, formatted by the current formatter
- */
- public function findPk($key, $con = null)
- {
- if ($key === null) {
- return null;
- }
- if ((null !== ($obj = ContentAssocTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
- // the object is already in the instance pool
- return $obj;
- }
- if ($con === null) {
- $con = Propel::getServiceContainer()->getReadConnection(ContentAssocTableMap::DATABASE_NAME);
- }
- $this->basePreSelect($con);
- if ($this->formatter || $this->modelAlias || $this->with || $this->select
- || $this->selectColumns || $this->asColumns || $this->selectModifiers
- || $this->map || $this->having || $this->joins) {
- return $this->findPkComplex($key, $con);
- } else {
- return $this->findPkSimple($key, $con);
- }
- }
-
- /**
- * Find object by primary key using raw SQL to go fast.
- * Bypass doSelect() and the object formatter by using generated code.
- *
- * @param mixed $key Primary key to use for the query
- * @param ConnectionInterface $con A connection object
- *
- * @return ChildContentAssoc A model object, or null if the key is not found
- */
- protected function findPkSimple($key, $con)
- {
- $sql = 'SELECT ID, CATEGORY_ID, PRODUCT_ID, CONTENT_ID, POSITION, CREATED_AT, UPDATED_AT FROM content_assoc WHERE ID = :p0';
- try {
- $stmt = $con->prepare($sql);
- $stmt->bindValue(':p0', $key, PDO::PARAM_INT);
- $stmt->execute();
- } catch (Exception $e) {
- Propel::log($e->getMessage(), Propel::LOG_ERR);
- throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e);
- }
- $obj = null;
- if ($row = $stmt->fetch(\PDO::FETCH_NUM)) {
- $obj = new ChildContentAssoc();
- $obj->hydrate($row);
- ContentAssocTableMap::addInstanceToPool($obj, (string) $key);
- }
- $stmt->closeCursor();
-
- return $obj;
- }
-
- /**
- * Find object by primary key.
- *
- * @param mixed $key Primary key to use for the query
- * @param ConnectionInterface $con A connection object
- *
- * @return ChildContentAssoc|array|mixed the result, formatted by the current formatter
- */
- protected function findPkComplex($key, $con)
- {
- // As the query uses a PK condition, no limit(1) is necessary.
- $criteria = $this->isKeepQuery() ? clone $this : $this;
- $dataFetcher = $criteria
- ->filterByPrimaryKey($key)
- ->doSelect($con);
-
- return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher);
- }
-
- /**
- * Find objects by primary key
- *
- * $objs = $c->findPks(array(12, 56, 832), $con);
- *
- * @param array $keys Primary keys to use for the query
- * @param ConnectionInterface $con an optional connection object
- *
- * @return ObjectCollection|array|mixed the list of results, formatted by the current formatter
- */
- public function findPks($keys, $con = null)
- {
- if (null === $con) {
- $con = Propel::getServiceContainer()->getReadConnection($this->getDbName());
- }
- $this->basePreSelect($con);
- $criteria = $this->isKeepQuery() ? clone $this : $this;
- $dataFetcher = $criteria
- ->filterByPrimaryKeys($keys)
- ->doSelect($con);
-
- return $criteria->getFormatter()->init($criteria)->format($dataFetcher);
- }
-
- /**
- * Filter the query by primary key
- *
- * @param mixed $key Primary key to use for the query
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterByPrimaryKey($key)
- {
-
- return $this->addUsingAlias(ContentAssocTableMap::ID, $key, Criteria::EQUAL);
- }
-
- /**
- * Filter the query by a list of primary keys
- *
- * @param array $keys The list of primary key to use for the query
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterByPrimaryKeys($keys)
- {
-
- return $this->addUsingAlias(ContentAssocTableMap::ID, $keys, Criteria::IN);
- }
-
- /**
- * Filter the query on the id column
- *
- * Example usage:
- *
- * $query->filterById(1234); // WHERE id = 1234
- * $query->filterById(array(12, 34)); // WHERE id IN (12, 34)
- * $query->filterById(array('min' => 12)); // WHERE id > 12
- *
- *
- * @param mixed $id The value to use as filter.
- * Use scalar values for equality.
- * Use array values for in_array() equivalent.
- * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterById($id = null, $comparison = null)
- {
- if (is_array($id)) {
- $useMinMax = false;
- if (isset($id['min'])) {
- $this->addUsingAlias(ContentAssocTableMap::ID, $id['min'], Criteria::GREATER_EQUAL);
- $useMinMax = true;
- }
- if (isset($id['max'])) {
- $this->addUsingAlias(ContentAssocTableMap::ID, $id['max'], Criteria::LESS_EQUAL);
- $useMinMax = true;
- }
- if ($useMinMax) {
- return $this;
- }
- if (null === $comparison) {
- $comparison = Criteria::IN;
- }
- }
-
- return $this->addUsingAlias(ContentAssocTableMap::ID, $id, $comparison);
- }
-
- /**
- * Filter the query on the category_id column
- *
- * Example usage:
- *
- * $query->filterByCategoryId(1234); // WHERE category_id = 1234
- * $query->filterByCategoryId(array(12, 34)); // WHERE category_id IN (12, 34)
- * $query->filterByCategoryId(array('min' => 12)); // WHERE category_id > 12
- *
- *
- * @see filterByCategory()
- *
- * @param mixed $categoryId The value to use as filter.
- * Use scalar values for equality.
- * Use array values for in_array() equivalent.
- * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterByCategoryId($categoryId = null, $comparison = null)
- {
- if (is_array($categoryId)) {
- $useMinMax = false;
- if (isset($categoryId['min'])) {
- $this->addUsingAlias(ContentAssocTableMap::CATEGORY_ID, $categoryId['min'], Criteria::GREATER_EQUAL);
- $useMinMax = true;
- }
- if (isset($categoryId['max'])) {
- $this->addUsingAlias(ContentAssocTableMap::CATEGORY_ID, $categoryId['max'], Criteria::LESS_EQUAL);
- $useMinMax = true;
- }
- if ($useMinMax) {
- return $this;
- }
- if (null === $comparison) {
- $comparison = Criteria::IN;
- }
- }
-
- return $this->addUsingAlias(ContentAssocTableMap::CATEGORY_ID, $categoryId, $comparison);
- }
-
- /**
- * Filter the query on the product_id column
- *
- * Example usage:
- *
- * $query->filterByProductId(1234); // WHERE product_id = 1234
- * $query->filterByProductId(array(12, 34)); // WHERE product_id IN (12, 34)
- * $query->filterByProductId(array('min' => 12)); // WHERE product_id > 12
- *
- *
- * @see filterByProduct()
- *
- * @param mixed $productId The value to use as filter.
- * Use scalar values for equality.
- * Use array values for in_array() equivalent.
- * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterByProductId($productId = null, $comparison = null)
- {
- if (is_array($productId)) {
- $useMinMax = false;
- if (isset($productId['min'])) {
- $this->addUsingAlias(ContentAssocTableMap::PRODUCT_ID, $productId['min'], Criteria::GREATER_EQUAL);
- $useMinMax = true;
- }
- if (isset($productId['max'])) {
- $this->addUsingAlias(ContentAssocTableMap::PRODUCT_ID, $productId['max'], Criteria::LESS_EQUAL);
- $useMinMax = true;
- }
- if ($useMinMax) {
- return $this;
- }
- if (null === $comparison) {
- $comparison = Criteria::IN;
- }
- }
-
- return $this->addUsingAlias(ContentAssocTableMap::PRODUCT_ID, $productId, $comparison);
- }
-
- /**
- * Filter the query on the content_id column
- *
- * Example usage:
- *
- * $query->filterByContentId(1234); // WHERE content_id = 1234
- * $query->filterByContentId(array(12, 34)); // WHERE content_id IN (12, 34)
- * $query->filterByContentId(array('min' => 12)); // WHERE content_id > 12
- *
- *
- * @see filterByContent()
- *
- * @param mixed $contentId The value to use as filter.
- * Use scalar values for equality.
- * Use array values for in_array() equivalent.
- * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterByContentId($contentId = null, $comparison = null)
- {
- if (is_array($contentId)) {
- $useMinMax = false;
- if (isset($contentId['min'])) {
- $this->addUsingAlias(ContentAssocTableMap::CONTENT_ID, $contentId['min'], Criteria::GREATER_EQUAL);
- $useMinMax = true;
- }
- if (isset($contentId['max'])) {
- $this->addUsingAlias(ContentAssocTableMap::CONTENT_ID, $contentId['max'], Criteria::LESS_EQUAL);
- $useMinMax = true;
- }
- if ($useMinMax) {
- return $this;
- }
- if (null === $comparison) {
- $comparison = Criteria::IN;
- }
- }
-
- return $this->addUsingAlias(ContentAssocTableMap::CONTENT_ID, $contentId, $comparison);
- }
-
- /**
- * Filter the query on the position column
- *
- * Example usage:
- *
- * $query->filterByPosition(1234); // WHERE position = 1234
- * $query->filterByPosition(array(12, 34)); // WHERE position IN (12, 34)
- * $query->filterByPosition(array('min' => 12)); // WHERE position > 12
- *
- *
- * @param mixed $position The value to use as filter.
- * Use scalar values for equality.
- * Use array values for in_array() equivalent.
- * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterByPosition($position = null, $comparison = null)
- {
- if (is_array($position)) {
- $useMinMax = false;
- if (isset($position['min'])) {
- $this->addUsingAlias(ContentAssocTableMap::POSITION, $position['min'], Criteria::GREATER_EQUAL);
- $useMinMax = true;
- }
- if (isset($position['max'])) {
- $this->addUsingAlias(ContentAssocTableMap::POSITION, $position['max'], Criteria::LESS_EQUAL);
- $useMinMax = true;
- }
- if ($useMinMax) {
- return $this;
- }
- if (null === $comparison) {
- $comparison = Criteria::IN;
- }
- }
-
- return $this->addUsingAlias(ContentAssocTableMap::POSITION, $position, $comparison);
- }
-
- /**
- * Filter the query on the created_at column
- *
- * Example usage:
- *
- * $query->filterByCreatedAt('2011-03-14'); // WHERE created_at = '2011-03-14'
- * $query->filterByCreatedAt('now'); // WHERE created_at = '2011-03-14'
- * $query->filterByCreatedAt(array('max' => 'yesterday')); // WHERE created_at > '2011-03-13'
- *
- *
- * @param mixed $createdAt The value to use as filter.
- * Values can be integers (unix timestamps), DateTime objects, or strings.
- * Empty strings are treated as NULL.
- * Use scalar values for equality.
- * Use array values for in_array() equivalent.
- * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterByCreatedAt($createdAt = null, $comparison = null)
- {
- if (is_array($createdAt)) {
- $useMinMax = false;
- if (isset($createdAt['min'])) {
- $this->addUsingAlias(ContentAssocTableMap::CREATED_AT, $createdAt['min'], Criteria::GREATER_EQUAL);
- $useMinMax = true;
- }
- if (isset($createdAt['max'])) {
- $this->addUsingAlias(ContentAssocTableMap::CREATED_AT, $createdAt['max'], Criteria::LESS_EQUAL);
- $useMinMax = true;
- }
- if ($useMinMax) {
- return $this;
- }
- if (null === $comparison) {
- $comparison = Criteria::IN;
- }
- }
-
- return $this->addUsingAlias(ContentAssocTableMap::CREATED_AT, $createdAt, $comparison);
- }
-
- /**
- * Filter the query on the updated_at column
- *
- * Example usage:
- *
- * $query->filterByUpdatedAt('2011-03-14'); // WHERE updated_at = '2011-03-14'
- * $query->filterByUpdatedAt('now'); // WHERE updated_at = '2011-03-14'
- * $query->filterByUpdatedAt(array('max' => 'yesterday')); // WHERE updated_at > '2011-03-13'
- *
- *
- * @param mixed $updatedAt The value to use as filter.
- * Values can be integers (unix timestamps), DateTime objects, or strings.
- * Empty strings are treated as NULL.
- * Use scalar values for equality.
- * Use array values for in_array() equivalent.
- * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterByUpdatedAt($updatedAt = null, $comparison = null)
- {
- if (is_array($updatedAt)) {
- $useMinMax = false;
- if (isset($updatedAt['min'])) {
- $this->addUsingAlias(ContentAssocTableMap::UPDATED_AT, $updatedAt['min'], Criteria::GREATER_EQUAL);
- $useMinMax = true;
- }
- if (isset($updatedAt['max'])) {
- $this->addUsingAlias(ContentAssocTableMap::UPDATED_AT, $updatedAt['max'], Criteria::LESS_EQUAL);
- $useMinMax = true;
- }
- if ($useMinMax) {
- return $this;
- }
- if (null === $comparison) {
- $comparison = Criteria::IN;
- }
- }
-
- return $this->addUsingAlias(ContentAssocTableMap::UPDATED_AT, $updatedAt, $comparison);
- }
-
- /**
- * Filter the query by a related \Thelia\Model\Category object
- *
- * @param \Thelia\Model\Category|ObjectCollection $category The related object(s) to use as filter
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterByCategory($category, $comparison = null)
- {
- if ($category instanceof \Thelia\Model\Category) {
- return $this
- ->addUsingAlias(ContentAssocTableMap::CATEGORY_ID, $category->getId(), $comparison);
- } elseif ($category instanceof ObjectCollection) {
- if (null === $comparison) {
- $comparison = Criteria::IN;
- }
-
- return $this
- ->addUsingAlias(ContentAssocTableMap::CATEGORY_ID, $category->toKeyValue('PrimaryKey', 'Id'), $comparison);
- } else {
- throw new PropelException('filterByCategory() only accepts arguments of type \Thelia\Model\Category or Collection');
- }
- }
-
- /**
- * Adds a JOIN clause to the query using the Category relation
- *
- * @param string $relationAlias optional alias for the relation
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function joinCategory($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- $tableMap = $this->getTableMap();
- $relationMap = $tableMap->getRelation('Category');
-
- // create a ModelJoin object for this join
- $join = new ModelJoin();
- $join->setJoinType($joinType);
- $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
- if ($previousJoin = $this->getPreviousJoin()) {
- $join->setPreviousJoin($previousJoin);
- }
-
- // add the ModelJoin to the current object
- if ($relationAlias) {
- $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
- $this->addJoinObject($join, $relationAlias);
- } else {
- $this->addJoinObject($join, 'Category');
- }
-
- return $this;
- }
-
- /**
- * Use the Category relation Category object
- *
- * @see useQuery()
- *
- * @param string $relationAlias optional alias for the relation,
- * to be used as main alias in the secondary query
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return \Thelia\Model\CategoryQuery A secondary query class using the current class as primary query
- */
- public function useCategoryQuery($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- return $this
- ->joinCategory($relationAlias, $joinType)
- ->useQuery($relationAlias ? $relationAlias : 'Category', '\Thelia\Model\CategoryQuery');
- }
-
- /**
- * Filter the query by a related \Thelia\Model\Product object
- *
- * @param \Thelia\Model\Product|ObjectCollection $product The related object(s) to use as filter
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterByProduct($product, $comparison = null)
- {
- if ($product instanceof \Thelia\Model\Product) {
- return $this
- ->addUsingAlias(ContentAssocTableMap::PRODUCT_ID, $product->getId(), $comparison);
- } elseif ($product instanceof ObjectCollection) {
- if (null === $comparison) {
- $comparison = Criteria::IN;
- }
-
- return $this
- ->addUsingAlias(ContentAssocTableMap::PRODUCT_ID, $product->toKeyValue('PrimaryKey', 'Id'), $comparison);
- } else {
- throw new PropelException('filterByProduct() only accepts arguments of type \Thelia\Model\Product or Collection');
- }
- }
-
- /**
- * Adds a JOIN clause to the query using the Product relation
- *
- * @param string $relationAlias optional alias for the relation
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function joinProduct($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- $tableMap = $this->getTableMap();
- $relationMap = $tableMap->getRelation('Product');
-
- // create a ModelJoin object for this join
- $join = new ModelJoin();
- $join->setJoinType($joinType);
- $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
- if ($previousJoin = $this->getPreviousJoin()) {
- $join->setPreviousJoin($previousJoin);
- }
-
- // add the ModelJoin to the current object
- if ($relationAlias) {
- $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
- $this->addJoinObject($join, $relationAlias);
- } else {
- $this->addJoinObject($join, 'Product');
- }
-
- return $this;
- }
-
- /**
- * Use the Product relation Product object
- *
- * @see useQuery()
- *
- * @param string $relationAlias optional alias for the relation,
- * to be used as main alias in the secondary query
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return \Thelia\Model\ProductQuery A secondary query class using the current class as primary query
- */
- public function useProductQuery($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- return $this
- ->joinProduct($relationAlias, $joinType)
- ->useQuery($relationAlias ? $relationAlias : 'Product', '\Thelia\Model\ProductQuery');
- }
-
- /**
- * Filter the query by a related \Thelia\Model\Content object
- *
- * @param \Thelia\Model\Content|ObjectCollection $content The related object(s) to use as filter
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function filterByContent($content, $comparison = null)
- {
- if ($content instanceof \Thelia\Model\Content) {
- return $this
- ->addUsingAlias(ContentAssocTableMap::CONTENT_ID, $content->getId(), $comparison);
- } elseif ($content instanceof ObjectCollection) {
- if (null === $comparison) {
- $comparison = Criteria::IN;
- }
-
- return $this
- ->addUsingAlias(ContentAssocTableMap::CONTENT_ID, $content->toKeyValue('PrimaryKey', 'Id'), $comparison);
- } else {
- throw new PropelException('filterByContent() only accepts arguments of type \Thelia\Model\Content or Collection');
- }
- }
-
- /**
- * Adds a JOIN clause to the query using the Content relation
- *
- * @param string $relationAlias optional alias for the relation
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function joinContent($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- $tableMap = $this->getTableMap();
- $relationMap = $tableMap->getRelation('Content');
-
- // create a ModelJoin object for this join
- $join = new ModelJoin();
- $join->setJoinType($joinType);
- $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
- if ($previousJoin = $this->getPreviousJoin()) {
- $join->setPreviousJoin($previousJoin);
- }
-
- // add the ModelJoin to the current object
- if ($relationAlias) {
- $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
- $this->addJoinObject($join, $relationAlias);
- } else {
- $this->addJoinObject($join, 'Content');
- }
-
- return $this;
- }
-
- /**
- * Use the Content relation Content object
- *
- * @see useQuery()
- *
- * @param string $relationAlias optional alias for the relation,
- * to be used as main alias in the secondary query
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return \Thelia\Model\ContentQuery A secondary query class using the current class as primary query
- */
- public function useContentQuery($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- return $this
- ->joinContent($relationAlias, $joinType)
- ->useQuery($relationAlias ? $relationAlias : 'Content', '\Thelia\Model\ContentQuery');
- }
-
- /**
- * Exclude object from result
- *
- * @param ChildContentAssoc $contentAssoc Object to remove from the list of results
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function prune($contentAssoc = null)
- {
- if ($contentAssoc) {
- $this->addUsingAlias(ContentAssocTableMap::ID, $contentAssoc->getId(), Criteria::NOT_EQUAL);
- }
-
- return $this;
- }
-
- /**
- * Deletes all rows from the content_assoc table.
- *
- * @param ConnectionInterface $con the connection to use
- * @return int The number of affected rows (if supported by underlying database driver).
- */
- public function doDeleteAll(ConnectionInterface $con = null)
- {
- if (null === $con) {
- $con = Propel::getServiceContainer()->getWriteConnection(ContentAssocTableMap::DATABASE_NAME);
- }
- $affectedRows = 0; // initialize var to track total num of affected rows
- try {
- // use transaction because $criteria could contain info
- // for more than one table or we could emulating ON DELETE CASCADE, etc.
- $con->beginTransaction();
- $affectedRows += parent::doDeleteAll($con);
- // Because this db requires some delete cascade/set null emulation, we have to
- // clear the cached instance *after* the emulation has happened (since
- // instances get re-added by the select statement contained therein).
- ContentAssocTableMap::clearInstancePool();
- ContentAssocTableMap::clearRelatedInstancePool();
-
- $con->commit();
- } catch (PropelException $e) {
- $con->rollBack();
- throw $e;
- }
-
- return $affectedRows;
- }
-
- /**
- * Performs a DELETE on the database, given a ChildContentAssoc or Criteria object OR a primary key value.
- *
- * @param mixed $values Criteria or ChildContentAssoc object or primary key or array of primary keys
- * which is used to create the DELETE statement
- * @param ConnectionInterface $con the connection to use
- * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
- * if supported by native driver or if emulated using Propel.
- * @throws PropelException Any exceptions caught during processing will be
- * rethrown wrapped into a PropelException.
- */
- public function delete(ConnectionInterface $con = null)
- {
- if (null === $con) {
- $con = Propel::getServiceContainer()->getWriteConnection(ContentAssocTableMap::DATABASE_NAME);
- }
-
- $criteria = $this;
-
- // Set the correct dbName
- $criteria->setDbName(ContentAssocTableMap::DATABASE_NAME);
-
- $affectedRows = 0; // initialize var to track total num of affected rows
-
- try {
- // use transaction because $criteria could contain info
- // for more than one table or we could emulating ON DELETE CASCADE, etc.
- $con->beginTransaction();
-
-
- ContentAssocTableMap::removeInstanceFromPool($criteria);
-
- $affectedRows += ModelCriteria::delete($con);
- ContentAssocTableMap::clearRelatedInstancePool();
- $con->commit();
-
- return $affectedRows;
- } catch (PropelException $e) {
- $con->rollBack();
- throw $e;
- }
- }
-
- // timestampable behavior
-
- /**
- * Filter by the latest updated
- *
- * @param int $nbDays Maximum age of the latest update in days
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function recentlyUpdated($nbDays = 7)
- {
- return $this->addUsingAlias(ContentAssocTableMap::UPDATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
- }
-
- /**
- * Filter by the latest created
- *
- * @param int $nbDays Maximum age of in days
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function recentlyCreated($nbDays = 7)
- {
- return $this->addUsingAlias(ContentAssocTableMap::CREATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
- }
-
- /**
- * Order by update date desc
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function lastUpdatedFirst()
- {
- return $this->addDescendingOrderByColumn(ContentAssocTableMap::UPDATED_AT);
- }
-
- /**
- * Order by update date asc
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function firstUpdatedFirst()
- {
- return $this->addAscendingOrderByColumn(ContentAssocTableMap::UPDATED_AT);
- }
-
- /**
- * Order by create date desc
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function lastCreatedFirst()
- {
- return $this->addDescendingOrderByColumn(ContentAssocTableMap::CREATED_AT);
- }
-
- /**
- * Order by create date asc
- *
- * @return ChildContentAssocQuery The current query, for fluid interface
- */
- public function firstCreatedFirst()
- {
- return $this->addAscendingOrderByColumn(ContentAssocTableMap::CREATED_AT);
- }
-
-} // ContentAssocQuery
diff --git a/core/lib/Thelia/Model/Base/ContentQuery.php b/core/lib/Thelia/Model/Base/ContentQuery.php
index 28d32cbe6..d4749ce46 100755
--- a/core/lib/Thelia/Model/Base/ContentQuery.php
+++ b/core/lib/Thelia/Model/Base/ContentQuery.php
@@ -44,10 +44,6 @@ use Thelia\Model\Map\ContentTableMap;
* @method ChildContentQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
* @method ChildContentQuery innerJoin($relation) Adds a INNER JOIN clause to the query
*
- * @method ChildContentQuery leftJoinContentAssoc($relationAlias = null) Adds a LEFT JOIN clause to the query using the ContentAssoc relation
- * @method ChildContentQuery rightJoinContentAssoc($relationAlias = null) Adds a RIGHT JOIN clause to the query using the ContentAssoc relation
- * @method ChildContentQuery innerJoinContentAssoc($relationAlias = null) Adds a INNER JOIN clause to the query using the ContentAssoc relation
- *
* @method ChildContentQuery leftJoinRewriting($relationAlias = null) Adds a LEFT JOIN clause to the query using the Rewriting relation
* @method ChildContentQuery rightJoinRewriting($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Rewriting relation
* @method ChildContentQuery innerJoinRewriting($relationAlias = null) Adds a INNER JOIN clause to the query using the Rewriting relation
@@ -64,6 +60,14 @@ use Thelia\Model\Map\ContentTableMap;
* @method ChildContentQuery rightJoinContentDocument($relationAlias = null) Adds a RIGHT JOIN clause to the query using the ContentDocument relation
* @method ChildContentQuery innerJoinContentDocument($relationAlias = null) Adds a INNER JOIN clause to the query using the ContentDocument relation
*
+ * @method ChildContentQuery leftJoinProductAssociatedContent($relationAlias = null) Adds a LEFT JOIN clause to the query using the ProductAssociatedContent relation
+ * @method ChildContentQuery rightJoinProductAssociatedContent($relationAlias = null) Adds a RIGHT JOIN clause to the query using the ProductAssociatedContent relation
+ * @method ChildContentQuery innerJoinProductAssociatedContent($relationAlias = null) Adds a INNER JOIN clause to the query using the ProductAssociatedContent relation
+ *
+ * @method ChildContentQuery leftJoinCategoryAssociatedContent($relationAlias = null) Adds a LEFT JOIN clause to the query using the CategoryAssociatedContent relation
+ * @method ChildContentQuery rightJoinCategoryAssociatedContent($relationAlias = null) Adds a RIGHT JOIN clause to the query using the CategoryAssociatedContent relation
+ * @method ChildContentQuery innerJoinCategoryAssociatedContent($relationAlias = null) Adds a INNER JOIN clause to the query using the CategoryAssociatedContent relation
+ *
* @method ChildContentQuery leftJoinContentI18n($relationAlias = null) Adds a LEFT JOIN clause to the query using the ContentI18n relation
* @method ChildContentQuery rightJoinContentI18n($relationAlias = null) Adds a RIGHT JOIN clause to the query using the ContentI18n relation
* @method ChildContentQuery innerJoinContentI18n($relationAlias = null) Adds a INNER JOIN clause to the query using the ContentI18n relation
@@ -598,79 +602,6 @@ abstract class ContentQuery extends ModelCriteria
return $this->addUsingAlias(ContentTableMap::VERSION_CREATED_BY, $versionCreatedBy, $comparison);
}
- /**
- * Filter the query by a related \Thelia\Model\ContentAssoc object
- *
- * @param \Thelia\Model\ContentAssoc|ObjectCollection $contentAssoc the related object to use as filter
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildContentQuery The current query, for fluid interface
- */
- public function filterByContentAssoc($contentAssoc, $comparison = null)
- {
- if ($contentAssoc instanceof \Thelia\Model\ContentAssoc) {
- return $this
- ->addUsingAlias(ContentTableMap::ID, $contentAssoc->getContentId(), $comparison);
- } elseif ($contentAssoc instanceof ObjectCollection) {
- return $this
- ->useContentAssocQuery()
- ->filterByPrimaryKeys($contentAssoc->getPrimaryKeys())
- ->endUse();
- } else {
- throw new PropelException('filterByContentAssoc() only accepts arguments of type \Thelia\Model\ContentAssoc or Collection');
- }
- }
-
- /**
- * Adds a JOIN clause to the query using the ContentAssoc relation
- *
- * @param string $relationAlias optional alias for the relation
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return ChildContentQuery The current query, for fluid interface
- */
- public function joinContentAssoc($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- $tableMap = $this->getTableMap();
- $relationMap = $tableMap->getRelation('ContentAssoc');
-
- // create a ModelJoin object for this join
- $join = new ModelJoin();
- $join->setJoinType($joinType);
- $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
- if ($previousJoin = $this->getPreviousJoin()) {
- $join->setPreviousJoin($previousJoin);
- }
-
- // add the ModelJoin to the current object
- if ($relationAlias) {
- $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
- $this->addJoinObject($join, $relationAlias);
- } else {
- $this->addJoinObject($join, 'ContentAssoc');
- }
-
- return $this;
- }
-
- /**
- * Use the ContentAssoc relation ContentAssoc object
- *
- * @see useQuery()
- *
- * @param string $relationAlias optional alias for the relation,
- * to be used as main alias in the secondary query
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return \Thelia\Model\ContentAssocQuery A secondary query class using the current class as primary query
- */
- public function useContentAssocQuery($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- return $this
- ->joinContentAssoc($relationAlias, $joinType)
- ->useQuery($relationAlias ? $relationAlias : 'ContentAssoc', '\Thelia\Model\ContentAssocQuery');
- }
-
/**
* Filter the query by a related \Thelia\Model\Rewriting object
*
@@ -963,6 +894,152 @@ abstract class ContentQuery extends ModelCriteria
->useQuery($relationAlias ? $relationAlias : 'ContentDocument', '\Thelia\Model\ContentDocumentQuery');
}
+ /**
+ * Filter the query by a related \Thelia\Model\ProductAssociatedContent object
+ *
+ * @param \Thelia\Model\ProductAssociatedContent|ObjectCollection $productAssociatedContent the related object to use as filter
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildContentQuery The current query, for fluid interface
+ */
+ public function filterByProductAssociatedContent($productAssociatedContent, $comparison = null)
+ {
+ if ($productAssociatedContent instanceof \Thelia\Model\ProductAssociatedContent) {
+ return $this
+ ->addUsingAlias(ContentTableMap::ID, $productAssociatedContent->getContentId(), $comparison);
+ } elseif ($productAssociatedContent instanceof ObjectCollection) {
+ return $this
+ ->useProductAssociatedContentQuery()
+ ->filterByPrimaryKeys($productAssociatedContent->getPrimaryKeys())
+ ->endUse();
+ } else {
+ throw new PropelException('filterByProductAssociatedContent() only accepts arguments of type \Thelia\Model\ProductAssociatedContent or Collection');
+ }
+ }
+
+ /**
+ * Adds a JOIN clause to the query using the ProductAssociatedContent relation
+ *
+ * @param string $relationAlias optional alias for the relation
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return ChildContentQuery The current query, for fluid interface
+ */
+ public function joinProductAssociatedContent($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ $tableMap = $this->getTableMap();
+ $relationMap = $tableMap->getRelation('ProductAssociatedContent');
+
+ // create a ModelJoin object for this join
+ $join = new ModelJoin();
+ $join->setJoinType($joinType);
+ $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
+ if ($previousJoin = $this->getPreviousJoin()) {
+ $join->setPreviousJoin($previousJoin);
+ }
+
+ // add the ModelJoin to the current object
+ if ($relationAlias) {
+ $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
+ $this->addJoinObject($join, $relationAlias);
+ } else {
+ $this->addJoinObject($join, 'ProductAssociatedContent');
+ }
+
+ return $this;
+ }
+
+ /**
+ * Use the ProductAssociatedContent relation ProductAssociatedContent object
+ *
+ * @see useQuery()
+ *
+ * @param string $relationAlias optional alias for the relation,
+ * to be used as main alias in the secondary query
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return \Thelia\Model\ProductAssociatedContentQuery A secondary query class using the current class as primary query
+ */
+ public function useProductAssociatedContentQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ return $this
+ ->joinProductAssociatedContent($relationAlias, $joinType)
+ ->useQuery($relationAlias ? $relationAlias : 'ProductAssociatedContent', '\Thelia\Model\ProductAssociatedContentQuery');
+ }
+
+ /**
+ * Filter the query by a related \Thelia\Model\CategoryAssociatedContent object
+ *
+ * @param \Thelia\Model\CategoryAssociatedContent|ObjectCollection $categoryAssociatedContent the related object to use as filter
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildContentQuery The current query, for fluid interface
+ */
+ public function filterByCategoryAssociatedContent($categoryAssociatedContent, $comparison = null)
+ {
+ if ($categoryAssociatedContent instanceof \Thelia\Model\CategoryAssociatedContent) {
+ return $this
+ ->addUsingAlias(ContentTableMap::ID, $categoryAssociatedContent->getContentId(), $comparison);
+ } elseif ($categoryAssociatedContent instanceof ObjectCollection) {
+ return $this
+ ->useCategoryAssociatedContentQuery()
+ ->filterByPrimaryKeys($categoryAssociatedContent->getPrimaryKeys())
+ ->endUse();
+ } else {
+ throw new PropelException('filterByCategoryAssociatedContent() only accepts arguments of type \Thelia\Model\CategoryAssociatedContent or Collection');
+ }
+ }
+
+ /**
+ * Adds a JOIN clause to the query using the CategoryAssociatedContent relation
+ *
+ * @param string $relationAlias optional alias for the relation
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return ChildContentQuery The current query, for fluid interface
+ */
+ public function joinCategoryAssociatedContent($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ $tableMap = $this->getTableMap();
+ $relationMap = $tableMap->getRelation('CategoryAssociatedContent');
+
+ // create a ModelJoin object for this join
+ $join = new ModelJoin();
+ $join->setJoinType($joinType);
+ $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
+ if ($previousJoin = $this->getPreviousJoin()) {
+ $join->setPreviousJoin($previousJoin);
+ }
+
+ // add the ModelJoin to the current object
+ if ($relationAlias) {
+ $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
+ $this->addJoinObject($join, $relationAlias);
+ } else {
+ $this->addJoinObject($join, 'CategoryAssociatedContent');
+ }
+
+ return $this;
+ }
+
+ /**
+ * Use the CategoryAssociatedContent relation CategoryAssociatedContent object
+ *
+ * @see useQuery()
+ *
+ * @param string $relationAlias optional alias for the relation,
+ * to be used as main alias in the secondary query
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return \Thelia\Model\CategoryAssociatedContentQuery A secondary query class using the current class as primary query
+ */
+ public function useCategoryAssociatedContentQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ return $this
+ ->joinCategoryAssociatedContent($relationAlias, $joinType)
+ ->useQuery($relationAlias ? $relationAlias : 'CategoryAssociatedContent', '\Thelia\Model\CategoryAssociatedContentQuery');
+ }
+
/**
* Filter the query by a related \Thelia\Model\ContentI18n object
*
diff --git a/core/lib/Thelia/Model/Base/Coupon.php b/core/lib/Thelia/Model/Base/Coupon.php
index a339fa835..0a6ee2061 100755
--- a/core/lib/Thelia/Model/Base/Coupon.php
+++ b/core/lib/Thelia/Model/Base/Coupon.php
@@ -18,10 +18,15 @@ use Propel\Runtime\Map\TableMap;
use Propel\Runtime\Parser\AbstractParser;
use Propel\Runtime\Util\PropelDateTime;
use Thelia\Model\Coupon as ChildCoupon;
+use Thelia\Model\CouponI18n as ChildCouponI18n;
+use Thelia\Model\CouponI18nQuery as ChildCouponI18nQuery;
+use Thelia\Model\CouponOrder as ChildCouponOrder;
+use Thelia\Model\CouponOrderQuery as ChildCouponOrderQuery;
use Thelia\Model\CouponQuery as ChildCouponQuery;
-use Thelia\Model\CouponRule as ChildCouponRule;
-use Thelia\Model\CouponRuleQuery as ChildCouponRuleQuery;
+use Thelia\Model\CouponVersion as ChildCouponVersion;
+use Thelia\Model\CouponVersionQuery as ChildCouponVersionQuery;
use Thelia\Model\Map\CouponTableMap;
+use Thelia\Model\Map\CouponVersionTableMap;
abstract class Coupon implements ActiveRecordInterface
{
@@ -70,10 +75,28 @@ abstract class Coupon implements ActiveRecordInterface
protected $code;
/**
- * The value for the action field.
+ * The value for the type field.
* @var string
*/
- protected $action;
+ protected $type;
+
+ /**
+ * The value for the title field.
+ * @var string
+ */
+ protected $title;
+
+ /**
+ * The value for the short_description field.
+ * @var string
+ */
+ protected $short_description;
+
+ /**
+ * The value for the description field.
+ * @var string
+ */
+ protected $description;
/**
* The value for the value field.
@@ -82,28 +105,28 @@ abstract class Coupon implements ActiveRecordInterface
protected $value;
/**
- * The value for the used field.
+ * The value for the is_used field.
* @var int
*/
- protected $used;
+ protected $is_used;
/**
- * The value for the available_since field.
- * @var string
- */
- protected $available_since;
-
- /**
- * The value for the date_limit field.
- * @var string
- */
- protected $date_limit;
-
- /**
- * The value for the activate field.
+ * The value for the is_enabled field.
* @var int
*/
- protected $activate;
+ protected $is_enabled;
+
+ /**
+ * The value for the expiration_date field.
+ * @var string
+ */
+ protected $expiration_date;
+
+ /**
+ * The value for the serialized_rules field.
+ * @var string
+ */
+ protected $serialized_rules;
/**
* The value for the created_at field.
@@ -118,10 +141,29 @@ abstract class Coupon implements ActiveRecordInterface
protected $updated_at;
/**
- * @var ObjectCollection|ChildCouponRule[] Collection to store aggregation of ChildCouponRule objects.
+ * The value for the version field.
+ * Note: this column has a database default value of: 0
+ * @var int
*/
- protected $collCouponRules;
- protected $collCouponRulesPartial;
+ protected $version;
+
+ /**
+ * @var ObjectCollection|ChildCouponOrder[] Collection to store aggregation of ChildCouponOrder objects.
+ */
+ protected $collCouponOrders;
+ protected $collCouponOrdersPartial;
+
+ /**
+ * @var ObjectCollection|ChildCouponI18n[] Collection to store aggregation of ChildCouponI18n objects.
+ */
+ protected $collCouponI18ns;
+ protected $collCouponI18nsPartial;
+
+ /**
+ * @var ObjectCollection|ChildCouponVersion[] Collection to store aggregation of ChildCouponVersion objects.
+ */
+ protected $collCouponVersions;
+ protected $collCouponVersionsPartial;
/**
* Flag to prevent endless save loop, if this object is referenced
@@ -131,17 +173,64 @@ abstract class Coupon implements ActiveRecordInterface
*/
protected $alreadyInSave = false;
+ // i18n behavior
+
+ /**
+ * Current locale
+ * @var string
+ */
+ protected $currentLocale = 'en_EN';
+
+ /**
+ * Current translation objects
+ * @var array[ChildCouponI18n]
+ */
+ protected $currentTranslations;
+
+ // versionable behavior
+
+
+ /**
+ * @var bool
+ */
+ protected $enforceVersion = false;
+
/**
* An array of objects scheduled for deletion.
* @var ObjectCollection
*/
- protected $couponRulesScheduledForDeletion = null;
+ protected $couponOrdersScheduledForDeletion = null;
+
+ /**
+ * An array of objects scheduled for deletion.
+ * @var ObjectCollection
+ */
+ protected $couponI18nsScheduledForDeletion = null;
+
+ /**
+ * An array of objects scheduled for deletion.
+ * @var ObjectCollection
+ */
+ protected $couponVersionsScheduledForDeletion = null;
+
+ /**
+ * Applies default values to this object.
+ * This method should be called from the object's constructor (or
+ * equivalent initialization method).
+ * @see __construct()
+ */
+ public function applyDefaultValues()
+ {
+ $this->version = 0;
+ }
/**
* Initializes internal state of Thelia\Model\Base\Coupon object.
+ * @see applyDefaults()
*/
public function __construct()
{
+ $this->applyDefaultValues();
}
/**
@@ -414,14 +503,47 @@ abstract class Coupon implements ActiveRecordInterface
}
/**
- * Get the [action] column value.
+ * Get the [type] column value.
*
* @return string
*/
- public function getAction()
+ public function getType()
{
- return $this->action;
+ return $this->type;
+ }
+
+ /**
+ * Get the [title] column value.
+ *
+ * @return string
+ */
+ public function getTitle()
+ {
+
+ return $this->title;
+ }
+
+ /**
+ * Get the [short_description] column value.
+ *
+ * @return string
+ */
+ public function getShortDescription()
+ {
+
+ return $this->short_description;
+ }
+
+ /**
+ * Get the [description] column value.
+ *
+ * @return string
+ */
+ public function getDescription()
+ {
+
+ return $this->description;
}
/**
@@ -436,18 +558,29 @@ abstract class Coupon implements ActiveRecordInterface
}
/**
- * Get the [used] column value.
+ * Get the [is_used] column value.
*
* @return int
*/
- public function getUsed()
+ public function getIsUsed()
{
- return $this->used;
+ return $this->is_used;
}
/**
- * Get the [optionally formatted] temporal [available_since] column value.
+ * Get the [is_enabled] column value.
+ *
+ * @return int
+ */
+ public function getIsEnabled()
+ {
+
+ return $this->is_enabled;
+ }
+
+ /**
+ * Get the [optionally formatted] temporal [expiration_date] column value.
*
*
* @param string $format The date/time format string (either date()-style or strftime()-style).
@@ -457,44 +590,24 @@ abstract class Coupon implements ActiveRecordInterface
*
* @throws PropelException - if unable to parse/validate the date/time value.
*/
- public function getAvailableSince($format = NULL)
+ public function getExpirationDate($format = NULL)
{
if ($format === null) {
- return $this->available_since;
+ return $this->expiration_date;
} else {
- return $this->available_since !== null ? $this->available_since->format($format) : null;
+ return $this->expiration_date !== null ? $this->expiration_date->format($format) : null;
}
}
/**
- * Get the [optionally formatted] temporal [date_limit] column value.
+ * Get the [serialized_rules] column value.
*
- *
- * @param string $format The date/time format string (either date()-style or strftime()-style).
- * If format is NULL, then the raw \DateTime object will be returned.
- *
- * @return mixed Formatted date/time value as string or \DateTime object (if format is NULL), NULL if column is NULL, and 0 if column value is 0000-00-00 00:00:00
- *
- * @throws PropelException - if unable to parse/validate the date/time value.
+ * @return string
*/
- public function getDateLimit($format = NULL)
- {
- if ($format === null) {
- return $this->date_limit;
- } else {
- return $this->date_limit !== null ? $this->date_limit->format($format) : null;
- }
- }
-
- /**
- * Get the [activate] column value.
- *
- * @return int
- */
- public function getActivate()
+ public function getSerializedRules()
{
- return $this->activate;
+ return $this->serialized_rules;
}
/**
@@ -537,6 +650,17 @@ abstract class Coupon implements ActiveRecordInterface
}
}
+ /**
+ * Get the [version] column value.
+ *
+ * @return int
+ */
+ public function getVersion()
+ {
+
+ return $this->version;
+ }
+
/**
* Set the value of [id] column.
*
@@ -580,25 +704,88 @@ abstract class Coupon implements ActiveRecordInterface
} // setCode()
/**
- * Set the value of [action] column.
+ * Set the value of [type] column.
*
* @param string $v new value
* @return \Thelia\Model\Coupon The current object (for fluent API support)
*/
- public function setAction($v)
+ public function setType($v)
{
if ($v !== null) {
$v = (string) $v;
}
- if ($this->action !== $v) {
- $this->action = $v;
- $this->modifiedColumns[] = CouponTableMap::ACTION;
+ if ($this->type !== $v) {
+ $this->type = $v;
+ $this->modifiedColumns[] = CouponTableMap::TYPE;
}
return $this;
- } // setAction()
+ } // setType()
+
+ /**
+ * Set the value of [title] column.
+ *
+ * @param string $v new value
+ * @return \Thelia\Model\Coupon The current object (for fluent API support)
+ */
+ public function setTitle($v)
+ {
+ if ($v !== null) {
+ $v = (string) $v;
+ }
+
+ if ($this->title !== $v) {
+ $this->title = $v;
+ $this->modifiedColumns[] = CouponTableMap::TITLE;
+ }
+
+
+ return $this;
+ } // setTitle()
+
+ /**
+ * Set the value of [short_description] column.
+ *
+ * @param string $v new value
+ * @return \Thelia\Model\Coupon The current object (for fluent API support)
+ */
+ public function setShortDescription($v)
+ {
+ if ($v !== null) {
+ $v = (string) $v;
+ }
+
+ if ($this->short_description !== $v) {
+ $this->short_description = $v;
+ $this->modifiedColumns[] = CouponTableMap::SHORT_DESCRIPTION;
+ }
+
+
+ return $this;
+ } // setShortDescription()
+
+ /**
+ * Set the value of [description] column.
+ *
+ * @param string $v new value
+ * @return \Thelia\Model\Coupon The current object (for fluent API support)
+ */
+ public function setDescription($v)
+ {
+ if ($v !== null) {
+ $v = (string) $v;
+ }
+
+ if ($this->description !== $v) {
+ $this->description = $v;
+ $this->modifiedColumns[] = CouponTableMap::DESCRIPTION;
+ }
+
+
+ return $this;
+ } // setDescription()
/**
* Set the value of [value] column.
@@ -622,88 +809,88 @@ abstract class Coupon implements ActiveRecordInterface
} // setValue()
/**
- * Set the value of [used] column.
+ * Set the value of [is_used] column.
*
* @param int $v new value
* @return \Thelia\Model\Coupon The current object (for fluent API support)
*/
- public function setUsed($v)
+ public function setIsUsed($v)
{
if ($v !== null) {
$v = (int) $v;
}
- if ($this->used !== $v) {
- $this->used = $v;
- $this->modifiedColumns[] = CouponTableMap::USED;
+ if ($this->is_used !== $v) {
+ $this->is_used = $v;
+ $this->modifiedColumns[] = CouponTableMap::IS_USED;
}
return $this;
- } // setUsed()
+ } // setIsUsed()
/**
- * Sets the value of [available_since] column to a normalized version of the date/time value specified.
- *
- * @param mixed $v string, integer (timestamp), or \DateTime value.
- * Empty strings are treated as NULL.
- * @return \Thelia\Model\Coupon The current object (for fluent API support)
- */
- public function setAvailableSince($v)
- {
- $dt = PropelDateTime::newInstance($v, null, '\DateTime');
- if ($this->available_since !== null || $dt !== null) {
- if ($dt !== $this->available_since) {
- $this->available_since = $dt;
- $this->modifiedColumns[] = CouponTableMap::AVAILABLE_SINCE;
- }
- } // if either are not null
-
-
- return $this;
- } // setAvailableSince()
-
- /**
- * Sets the value of [date_limit] column to a normalized version of the date/time value specified.
- *
- * @param mixed $v string, integer (timestamp), or \DateTime value.
- * Empty strings are treated as NULL.
- * @return \Thelia\Model\Coupon The current object (for fluent API support)
- */
- public function setDateLimit($v)
- {
- $dt = PropelDateTime::newInstance($v, null, '\DateTime');
- if ($this->date_limit !== null || $dt !== null) {
- if ($dt !== $this->date_limit) {
- $this->date_limit = $dt;
- $this->modifiedColumns[] = CouponTableMap::DATE_LIMIT;
- }
- } // if either are not null
-
-
- return $this;
- } // setDateLimit()
-
- /**
- * Set the value of [activate] column.
+ * Set the value of [is_enabled] column.
*
* @param int $v new value
* @return \Thelia\Model\Coupon The current object (for fluent API support)
*/
- public function setActivate($v)
+ public function setIsEnabled($v)
{
if ($v !== null) {
$v = (int) $v;
}
- if ($this->activate !== $v) {
- $this->activate = $v;
- $this->modifiedColumns[] = CouponTableMap::ACTIVATE;
+ if ($this->is_enabled !== $v) {
+ $this->is_enabled = $v;
+ $this->modifiedColumns[] = CouponTableMap::IS_ENABLED;
}
return $this;
- } // setActivate()
+ } // setIsEnabled()
+
+ /**
+ * Sets the value of [expiration_date] column to a normalized version of the date/time value specified.
+ *
+ * @param mixed $v string, integer (timestamp), or \DateTime value.
+ * Empty strings are treated as NULL.
+ * @return \Thelia\Model\Coupon The current object (for fluent API support)
+ */
+ public function setExpirationDate($v)
+ {
+ $dt = PropelDateTime::newInstance($v, null, '\DateTime');
+ if ($this->expiration_date !== null || $dt !== null) {
+ if ($dt !== $this->expiration_date) {
+ $this->expiration_date = $dt;
+ $this->modifiedColumns[] = CouponTableMap::EXPIRATION_DATE;
+ }
+ } // if either are not null
+
+
+ return $this;
+ } // setExpirationDate()
+
+ /**
+ * Set the value of [serialized_rules] column.
+ *
+ * @param string $v new value
+ * @return \Thelia\Model\Coupon The current object (for fluent API support)
+ */
+ public function setSerializedRules($v)
+ {
+ if ($v !== null) {
+ $v = (string) $v;
+ }
+
+ if ($this->serialized_rules !== $v) {
+ $this->serialized_rules = $v;
+ $this->modifiedColumns[] = CouponTableMap::SERIALIZED_RULES;
+ }
+
+
+ return $this;
+ } // setSerializedRules()
/**
* Sets the value of [created_at] column to a normalized version of the date/time value specified.
@@ -747,6 +934,27 @@ abstract class Coupon implements ActiveRecordInterface
return $this;
} // setUpdatedAt()
+ /**
+ * Set the value of [version] column.
+ *
+ * @param int $v new value
+ * @return \Thelia\Model\Coupon The current object (for fluent API support)
+ */
+ public function setVersion($v)
+ {
+ if ($v !== null) {
+ $v = (int) $v;
+ }
+
+ if ($this->version !== $v) {
+ $this->version = $v;
+ $this->modifiedColumns[] = CouponTableMap::VERSION;
+ }
+
+
+ return $this;
+ } // setVersion()
+
/**
* Indicates whether the columns in this object are only set to default values.
*
@@ -757,6 +965,10 @@ abstract class Coupon implements ActiveRecordInterface
*/
public function hasOnlyDefaultValues()
{
+ if ($this->version !== 0) {
+ return false;
+ }
+
// otherwise, everything was equal, so return TRUE
return true;
} // hasOnlyDefaultValues()
@@ -790,41 +1002,50 @@ abstract class Coupon implements ActiveRecordInterface
$col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : CouponTableMap::translateFieldName('Code', TableMap::TYPE_PHPNAME, $indexType)];
$this->code = (null !== $col) ? (string) $col : null;
- $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : CouponTableMap::translateFieldName('Action', TableMap::TYPE_PHPNAME, $indexType)];
- $this->action = (null !== $col) ? (string) $col : null;
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : CouponTableMap::translateFieldName('Type', TableMap::TYPE_PHPNAME, $indexType)];
+ $this->type = (null !== $col) ? (string) $col : null;
- $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : CouponTableMap::translateFieldName('Value', TableMap::TYPE_PHPNAME, $indexType)];
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : CouponTableMap::translateFieldName('Title', TableMap::TYPE_PHPNAME, $indexType)];
+ $this->title = (null !== $col) ? (string) $col : null;
+
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 4 + $startcol : CouponTableMap::translateFieldName('ShortDescription', TableMap::TYPE_PHPNAME, $indexType)];
+ $this->short_description = (null !== $col) ? (string) $col : null;
+
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 5 + $startcol : CouponTableMap::translateFieldName('Description', TableMap::TYPE_PHPNAME, $indexType)];
+ $this->description = (null !== $col) ? (string) $col : null;
+
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 6 + $startcol : CouponTableMap::translateFieldName('Value', TableMap::TYPE_PHPNAME, $indexType)];
$this->value = (null !== $col) ? (double) $col : null;
- $col = $row[TableMap::TYPE_NUM == $indexType ? 4 + $startcol : CouponTableMap::translateFieldName('Used', TableMap::TYPE_PHPNAME, $indexType)];
- $this->used = (null !== $col) ? (int) $col : null;
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 7 + $startcol : CouponTableMap::translateFieldName('IsUsed', TableMap::TYPE_PHPNAME, $indexType)];
+ $this->is_used = (null !== $col) ? (int) $col : null;
- $col = $row[TableMap::TYPE_NUM == $indexType ? 5 + $startcol : CouponTableMap::translateFieldName('AvailableSince', TableMap::TYPE_PHPNAME, $indexType)];
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 8 + $startcol : CouponTableMap::translateFieldName('IsEnabled', TableMap::TYPE_PHPNAME, $indexType)];
+ $this->is_enabled = (null !== $col) ? (int) $col : null;
+
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 9 + $startcol : CouponTableMap::translateFieldName('ExpirationDate', TableMap::TYPE_PHPNAME, $indexType)];
if ($col === '0000-00-00 00:00:00') {
$col = null;
}
- $this->available_since = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
+ $this->expiration_date = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
- $col = $row[TableMap::TYPE_NUM == $indexType ? 6 + $startcol : CouponTableMap::translateFieldName('DateLimit', TableMap::TYPE_PHPNAME, $indexType)];
- if ($col === '0000-00-00 00:00:00') {
- $col = null;
- }
- $this->date_limit = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 10 + $startcol : CouponTableMap::translateFieldName('SerializedRules', TableMap::TYPE_PHPNAME, $indexType)];
+ $this->serialized_rules = (null !== $col) ? (string) $col : null;
- $col = $row[TableMap::TYPE_NUM == $indexType ? 7 + $startcol : CouponTableMap::translateFieldName('Activate', TableMap::TYPE_PHPNAME, $indexType)];
- $this->activate = (null !== $col) ? (int) $col : null;
-
- $col = $row[TableMap::TYPE_NUM == $indexType ? 8 + $startcol : CouponTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)];
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 11 + $startcol : CouponTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)];
if ($col === '0000-00-00 00:00:00') {
$col = null;
}
$this->created_at = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
- $col = $row[TableMap::TYPE_NUM == $indexType ? 9 + $startcol : CouponTableMap::translateFieldName('UpdatedAt', TableMap::TYPE_PHPNAME, $indexType)];
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 12 + $startcol : CouponTableMap::translateFieldName('UpdatedAt', TableMap::TYPE_PHPNAME, $indexType)];
if ($col === '0000-00-00 00:00:00') {
$col = null;
}
$this->updated_at = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null;
+
+ $col = $row[TableMap::TYPE_NUM == $indexType ? 13 + $startcol : CouponTableMap::translateFieldName('Version', TableMap::TYPE_PHPNAME, $indexType)];
+ $this->version = (null !== $col) ? (int) $col : null;
$this->resetModified();
$this->setNew(false);
@@ -833,7 +1054,7 @@ abstract class Coupon implements ActiveRecordInterface
$this->ensureConsistency();
}
- return $startcol + 10; // 10 = CouponTableMap::NUM_HYDRATE_COLUMNS.
+ return $startcol + 14; // 14 = CouponTableMap::NUM_HYDRATE_COLUMNS.
} catch (Exception $e) {
throw new PropelException("Error populating \Thelia\Model\Coupon object", 0, $e);
@@ -894,7 +1115,11 @@ abstract class Coupon implements ActiveRecordInterface
if ($deep) { // also de-associate any related objects?
- $this->collCouponRules = null;
+ $this->collCouponOrders = null;
+
+ $this->collCouponI18ns = null;
+
+ $this->collCouponVersions = null;
} // if (deep)
}
@@ -964,6 +1189,11 @@ abstract class Coupon implements ActiveRecordInterface
$isInsert = $this->isNew();
try {
$ret = $this->preSave($con);
+ // versionable behavior
+ if ($this->isVersioningNecessary()) {
+ $this->setVersion($this->isNew() ? 1 : $this->getLastVersionNumber($con) + 1);
+ $createVersion = true; // for postSave hook
+ }
if ($isInsert) {
$ret = $ret && $this->preInsert($con);
// timestampable behavior
@@ -988,6 +1218,10 @@ abstract class Coupon implements ActiveRecordInterface
$this->postUpdate($con);
}
$this->postSave($con);
+ // versionable behavior
+ if (isset($createVersion)) {
+ $this->addVersion($con);
+ }
CouponTableMap::addInstanceToPool($this);
} else {
$affectedRows = 0;
@@ -1029,17 +1263,51 @@ abstract class Coupon implements ActiveRecordInterface
$this->resetModified();
}
- if ($this->couponRulesScheduledForDeletion !== null) {
- if (!$this->couponRulesScheduledForDeletion->isEmpty()) {
- \Thelia\Model\CouponRuleQuery::create()
- ->filterByPrimaryKeys($this->couponRulesScheduledForDeletion->getPrimaryKeys(false))
+ if ($this->couponOrdersScheduledForDeletion !== null) {
+ if (!$this->couponOrdersScheduledForDeletion->isEmpty()) {
+ \Thelia\Model\CouponOrderQuery::create()
+ ->filterByPrimaryKeys($this->couponOrdersScheduledForDeletion->getPrimaryKeys(false))
->delete($con);
- $this->couponRulesScheduledForDeletion = null;
+ $this->couponOrdersScheduledForDeletion = null;
}
}
- if ($this->collCouponRules !== null) {
- foreach ($this->collCouponRules as $referrerFK) {
+ if ($this->collCouponOrders !== null) {
+ foreach ($this->collCouponOrders as $referrerFK) {
+ if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
+ $affectedRows += $referrerFK->save($con);
+ }
+ }
+ }
+
+ if ($this->couponI18nsScheduledForDeletion !== null) {
+ if (!$this->couponI18nsScheduledForDeletion->isEmpty()) {
+ \Thelia\Model\CouponI18nQuery::create()
+ ->filterByPrimaryKeys($this->couponI18nsScheduledForDeletion->getPrimaryKeys(false))
+ ->delete($con);
+ $this->couponI18nsScheduledForDeletion = null;
+ }
+ }
+
+ if ($this->collCouponI18ns !== null) {
+ foreach ($this->collCouponI18ns as $referrerFK) {
+ if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
+ $affectedRows += $referrerFK->save($con);
+ }
+ }
+ }
+
+ if ($this->couponVersionsScheduledForDeletion !== null) {
+ if (!$this->couponVersionsScheduledForDeletion->isEmpty()) {
+ \Thelia\Model\CouponVersionQuery::create()
+ ->filterByPrimaryKeys($this->couponVersionsScheduledForDeletion->getPrimaryKeys(false))
+ ->delete($con);
+ $this->couponVersionsScheduledForDeletion = null;
+ }
+ }
+
+ if ($this->collCouponVersions !== null) {
+ foreach ($this->collCouponVersions as $referrerFK) {
if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
$affectedRows += $referrerFK->save($con);
}
@@ -1078,23 +1346,32 @@ abstract class Coupon implements ActiveRecordInterface
if ($this->isColumnModified(CouponTableMap::CODE)) {
$modifiedColumns[':p' . $index++] = 'CODE';
}
- if ($this->isColumnModified(CouponTableMap::ACTION)) {
- $modifiedColumns[':p' . $index++] = 'ACTION';
+ if ($this->isColumnModified(CouponTableMap::TYPE)) {
+ $modifiedColumns[':p' . $index++] = 'TYPE';
+ }
+ if ($this->isColumnModified(CouponTableMap::TITLE)) {
+ $modifiedColumns[':p' . $index++] = 'TITLE';
+ }
+ if ($this->isColumnModified(CouponTableMap::SHORT_DESCRIPTION)) {
+ $modifiedColumns[':p' . $index++] = 'SHORT_DESCRIPTION';
+ }
+ if ($this->isColumnModified(CouponTableMap::DESCRIPTION)) {
+ $modifiedColumns[':p' . $index++] = 'DESCRIPTION';
}
if ($this->isColumnModified(CouponTableMap::VALUE)) {
$modifiedColumns[':p' . $index++] = 'VALUE';
}
- if ($this->isColumnModified(CouponTableMap::USED)) {
- $modifiedColumns[':p' . $index++] = 'USED';
+ if ($this->isColumnModified(CouponTableMap::IS_USED)) {
+ $modifiedColumns[':p' . $index++] = 'IS_USED';
}
- if ($this->isColumnModified(CouponTableMap::AVAILABLE_SINCE)) {
- $modifiedColumns[':p' . $index++] = 'AVAILABLE_SINCE';
+ if ($this->isColumnModified(CouponTableMap::IS_ENABLED)) {
+ $modifiedColumns[':p' . $index++] = 'IS_ENABLED';
}
- if ($this->isColumnModified(CouponTableMap::DATE_LIMIT)) {
- $modifiedColumns[':p' . $index++] = 'DATE_LIMIT';
+ if ($this->isColumnModified(CouponTableMap::EXPIRATION_DATE)) {
+ $modifiedColumns[':p' . $index++] = 'EXPIRATION_DATE';
}
- if ($this->isColumnModified(CouponTableMap::ACTIVATE)) {
- $modifiedColumns[':p' . $index++] = 'ACTIVATE';
+ if ($this->isColumnModified(CouponTableMap::SERIALIZED_RULES)) {
+ $modifiedColumns[':p' . $index++] = 'SERIALIZED_RULES';
}
if ($this->isColumnModified(CouponTableMap::CREATED_AT)) {
$modifiedColumns[':p' . $index++] = 'CREATED_AT';
@@ -1102,6 +1379,9 @@ abstract class Coupon implements ActiveRecordInterface
if ($this->isColumnModified(CouponTableMap::UPDATED_AT)) {
$modifiedColumns[':p' . $index++] = 'UPDATED_AT';
}
+ if ($this->isColumnModified(CouponTableMap::VERSION)) {
+ $modifiedColumns[':p' . $index++] = 'VERSION';
+ }
$sql = sprintf(
'INSERT INTO coupon (%s) VALUES (%s)',
@@ -1119,23 +1399,32 @@ abstract class Coupon implements ActiveRecordInterface
case 'CODE':
$stmt->bindValue($identifier, $this->code, PDO::PARAM_STR);
break;
- case 'ACTION':
- $stmt->bindValue($identifier, $this->action, PDO::PARAM_STR);
+ case 'TYPE':
+ $stmt->bindValue($identifier, $this->type, PDO::PARAM_STR);
+ break;
+ case 'TITLE':
+ $stmt->bindValue($identifier, $this->title, PDO::PARAM_STR);
+ break;
+ case 'SHORT_DESCRIPTION':
+ $stmt->bindValue($identifier, $this->short_description, PDO::PARAM_STR);
+ break;
+ case 'DESCRIPTION':
+ $stmt->bindValue($identifier, $this->description, PDO::PARAM_STR);
break;
case 'VALUE':
$stmt->bindValue($identifier, $this->value, PDO::PARAM_STR);
break;
- case 'USED':
- $stmt->bindValue($identifier, $this->used, PDO::PARAM_INT);
+ case 'IS_USED':
+ $stmt->bindValue($identifier, $this->is_used, PDO::PARAM_INT);
break;
- case 'AVAILABLE_SINCE':
- $stmt->bindValue($identifier, $this->available_since ? $this->available_since->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
+ case 'IS_ENABLED':
+ $stmt->bindValue($identifier, $this->is_enabled, PDO::PARAM_INT);
break;
- case 'DATE_LIMIT':
- $stmt->bindValue($identifier, $this->date_limit ? $this->date_limit->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
+ case 'EXPIRATION_DATE':
+ $stmt->bindValue($identifier, $this->expiration_date ? $this->expiration_date->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break;
- case 'ACTIVATE':
- $stmt->bindValue($identifier, $this->activate, PDO::PARAM_INT);
+ case 'SERIALIZED_RULES':
+ $stmt->bindValue($identifier, $this->serialized_rules, PDO::PARAM_STR);
break;
case 'CREATED_AT':
$stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
@@ -1143,6 +1432,9 @@ abstract class Coupon implements ActiveRecordInterface
case 'UPDATED_AT':
$stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break;
+ case 'VERSION':
+ $stmt->bindValue($identifier, $this->version, PDO::PARAM_INT);
+ break;
}
}
$stmt->execute();
@@ -1212,29 +1504,41 @@ abstract class Coupon implements ActiveRecordInterface
return $this->getCode();
break;
case 2:
- return $this->getAction();
+ return $this->getType();
break;
case 3:
- return $this->getValue();
+ return $this->getTitle();
break;
case 4:
- return $this->getUsed();
+ return $this->getShortDescription();
break;
case 5:
- return $this->getAvailableSince();
+ return $this->getDescription();
break;
case 6:
- return $this->getDateLimit();
+ return $this->getValue();
break;
case 7:
- return $this->getActivate();
+ return $this->getIsUsed();
break;
case 8:
- return $this->getCreatedAt();
+ return $this->getIsEnabled();
break;
case 9:
+ return $this->getExpirationDate();
+ break;
+ case 10:
+ return $this->getSerializedRules();
+ break;
+ case 11:
+ return $this->getCreatedAt();
+ break;
+ case 12:
return $this->getUpdatedAt();
break;
+ case 13:
+ return $this->getVersion();
+ break;
default:
return null;
break;
@@ -1266,14 +1570,18 @@ abstract class Coupon implements ActiveRecordInterface
$result = array(
$keys[0] => $this->getId(),
$keys[1] => $this->getCode(),
- $keys[2] => $this->getAction(),
- $keys[3] => $this->getValue(),
- $keys[4] => $this->getUsed(),
- $keys[5] => $this->getAvailableSince(),
- $keys[6] => $this->getDateLimit(),
- $keys[7] => $this->getActivate(),
- $keys[8] => $this->getCreatedAt(),
- $keys[9] => $this->getUpdatedAt(),
+ $keys[2] => $this->getType(),
+ $keys[3] => $this->getTitle(),
+ $keys[4] => $this->getShortDescription(),
+ $keys[5] => $this->getDescription(),
+ $keys[6] => $this->getValue(),
+ $keys[7] => $this->getIsUsed(),
+ $keys[8] => $this->getIsEnabled(),
+ $keys[9] => $this->getExpirationDate(),
+ $keys[10] => $this->getSerializedRules(),
+ $keys[11] => $this->getCreatedAt(),
+ $keys[12] => $this->getUpdatedAt(),
+ $keys[13] => $this->getVersion(),
);
$virtualColumns = $this->virtualColumns;
foreach($virtualColumns as $key => $virtualColumn)
@@ -1282,8 +1590,14 @@ abstract class Coupon implements ActiveRecordInterface
}
if ($includeForeignObjects) {
- if (null !== $this->collCouponRules) {
- $result['CouponRules'] = $this->collCouponRules->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
+ if (null !== $this->collCouponOrders) {
+ $result['CouponOrders'] = $this->collCouponOrders->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
+ }
+ if (null !== $this->collCouponI18ns) {
+ $result['CouponI18ns'] = $this->collCouponI18ns->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
+ }
+ if (null !== $this->collCouponVersions) {
+ $result['CouponVersions'] = $this->collCouponVersions->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
}
@@ -1326,29 +1640,41 @@ abstract class Coupon implements ActiveRecordInterface
$this->setCode($value);
break;
case 2:
- $this->setAction($value);
+ $this->setType($value);
break;
case 3:
- $this->setValue($value);
+ $this->setTitle($value);
break;
case 4:
- $this->setUsed($value);
+ $this->setShortDescription($value);
break;
case 5:
- $this->setAvailableSince($value);
+ $this->setDescription($value);
break;
case 6:
- $this->setDateLimit($value);
+ $this->setValue($value);
break;
case 7:
- $this->setActivate($value);
+ $this->setIsUsed($value);
break;
case 8:
- $this->setCreatedAt($value);
+ $this->setIsEnabled($value);
break;
case 9:
+ $this->setExpirationDate($value);
+ break;
+ case 10:
+ $this->setSerializedRules($value);
+ break;
+ case 11:
+ $this->setCreatedAt($value);
+ break;
+ case 12:
$this->setUpdatedAt($value);
break;
+ case 13:
+ $this->setVersion($value);
+ break;
} // switch()
}
@@ -1375,14 +1701,18 @@ abstract class Coupon implements ActiveRecordInterface
if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]);
if (array_key_exists($keys[1], $arr)) $this->setCode($arr[$keys[1]]);
- if (array_key_exists($keys[2], $arr)) $this->setAction($arr[$keys[2]]);
- if (array_key_exists($keys[3], $arr)) $this->setValue($arr[$keys[3]]);
- if (array_key_exists($keys[4], $arr)) $this->setUsed($arr[$keys[4]]);
- if (array_key_exists($keys[5], $arr)) $this->setAvailableSince($arr[$keys[5]]);
- if (array_key_exists($keys[6], $arr)) $this->setDateLimit($arr[$keys[6]]);
- if (array_key_exists($keys[7], $arr)) $this->setActivate($arr[$keys[7]]);
- if (array_key_exists($keys[8], $arr)) $this->setCreatedAt($arr[$keys[8]]);
- if (array_key_exists($keys[9], $arr)) $this->setUpdatedAt($arr[$keys[9]]);
+ if (array_key_exists($keys[2], $arr)) $this->setType($arr[$keys[2]]);
+ if (array_key_exists($keys[3], $arr)) $this->setTitle($arr[$keys[3]]);
+ if (array_key_exists($keys[4], $arr)) $this->setShortDescription($arr[$keys[4]]);
+ if (array_key_exists($keys[5], $arr)) $this->setDescription($arr[$keys[5]]);
+ if (array_key_exists($keys[6], $arr)) $this->setValue($arr[$keys[6]]);
+ if (array_key_exists($keys[7], $arr)) $this->setIsUsed($arr[$keys[7]]);
+ if (array_key_exists($keys[8], $arr)) $this->setIsEnabled($arr[$keys[8]]);
+ if (array_key_exists($keys[9], $arr)) $this->setExpirationDate($arr[$keys[9]]);
+ if (array_key_exists($keys[10], $arr)) $this->setSerializedRules($arr[$keys[10]]);
+ if (array_key_exists($keys[11], $arr)) $this->setCreatedAt($arr[$keys[11]]);
+ if (array_key_exists($keys[12], $arr)) $this->setUpdatedAt($arr[$keys[12]]);
+ if (array_key_exists($keys[13], $arr)) $this->setVersion($arr[$keys[13]]);
}
/**
@@ -1396,14 +1726,18 @@ abstract class Coupon implements ActiveRecordInterface
if ($this->isColumnModified(CouponTableMap::ID)) $criteria->add(CouponTableMap::ID, $this->id);
if ($this->isColumnModified(CouponTableMap::CODE)) $criteria->add(CouponTableMap::CODE, $this->code);
- if ($this->isColumnModified(CouponTableMap::ACTION)) $criteria->add(CouponTableMap::ACTION, $this->action);
+ if ($this->isColumnModified(CouponTableMap::TYPE)) $criteria->add(CouponTableMap::TYPE, $this->type);
+ if ($this->isColumnModified(CouponTableMap::TITLE)) $criteria->add(CouponTableMap::TITLE, $this->title);
+ if ($this->isColumnModified(CouponTableMap::SHORT_DESCRIPTION)) $criteria->add(CouponTableMap::SHORT_DESCRIPTION, $this->short_description);
+ if ($this->isColumnModified(CouponTableMap::DESCRIPTION)) $criteria->add(CouponTableMap::DESCRIPTION, $this->description);
if ($this->isColumnModified(CouponTableMap::VALUE)) $criteria->add(CouponTableMap::VALUE, $this->value);
- if ($this->isColumnModified(CouponTableMap::USED)) $criteria->add(CouponTableMap::USED, $this->used);
- if ($this->isColumnModified(CouponTableMap::AVAILABLE_SINCE)) $criteria->add(CouponTableMap::AVAILABLE_SINCE, $this->available_since);
- if ($this->isColumnModified(CouponTableMap::DATE_LIMIT)) $criteria->add(CouponTableMap::DATE_LIMIT, $this->date_limit);
- if ($this->isColumnModified(CouponTableMap::ACTIVATE)) $criteria->add(CouponTableMap::ACTIVATE, $this->activate);
+ if ($this->isColumnModified(CouponTableMap::IS_USED)) $criteria->add(CouponTableMap::IS_USED, $this->is_used);
+ if ($this->isColumnModified(CouponTableMap::IS_ENABLED)) $criteria->add(CouponTableMap::IS_ENABLED, $this->is_enabled);
+ if ($this->isColumnModified(CouponTableMap::EXPIRATION_DATE)) $criteria->add(CouponTableMap::EXPIRATION_DATE, $this->expiration_date);
+ if ($this->isColumnModified(CouponTableMap::SERIALIZED_RULES)) $criteria->add(CouponTableMap::SERIALIZED_RULES, $this->serialized_rules);
if ($this->isColumnModified(CouponTableMap::CREATED_AT)) $criteria->add(CouponTableMap::CREATED_AT, $this->created_at);
if ($this->isColumnModified(CouponTableMap::UPDATED_AT)) $criteria->add(CouponTableMap::UPDATED_AT, $this->updated_at);
+ if ($this->isColumnModified(CouponTableMap::VERSION)) $criteria->add(CouponTableMap::VERSION, $this->version);
return $criteria;
}
@@ -1468,23 +1802,39 @@ abstract class Coupon implements ActiveRecordInterface
public function copyInto($copyObj, $deepCopy = false, $makeNew = true)
{
$copyObj->setCode($this->getCode());
- $copyObj->setAction($this->getAction());
+ $copyObj->setType($this->getType());
+ $copyObj->setTitle($this->getTitle());
+ $copyObj->setShortDescription($this->getShortDescription());
+ $copyObj->setDescription($this->getDescription());
$copyObj->setValue($this->getValue());
- $copyObj->setUsed($this->getUsed());
- $copyObj->setAvailableSince($this->getAvailableSince());
- $copyObj->setDateLimit($this->getDateLimit());
- $copyObj->setActivate($this->getActivate());
+ $copyObj->setIsUsed($this->getIsUsed());
+ $copyObj->setIsEnabled($this->getIsEnabled());
+ $copyObj->setExpirationDate($this->getExpirationDate());
+ $copyObj->setSerializedRules($this->getSerializedRules());
$copyObj->setCreatedAt($this->getCreatedAt());
$copyObj->setUpdatedAt($this->getUpdatedAt());
+ $copyObj->setVersion($this->getVersion());
if ($deepCopy) {
// important: temporarily setNew(false) because this affects the behavior of
// the getter/setter methods for fkey referrer objects.
$copyObj->setNew(false);
- foreach ($this->getCouponRules() as $relObj) {
+ foreach ($this->getCouponOrders() as $relObj) {
if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
- $copyObj->addCouponRule($relObj->copy($deepCopy));
+ $copyObj->addCouponOrder($relObj->copy($deepCopy));
+ }
+ }
+
+ foreach ($this->getCouponI18ns() as $relObj) {
+ if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
+ $copyObj->addCouponI18n($relObj->copy($deepCopy));
+ }
+ }
+
+ foreach ($this->getCouponVersions() as $relObj) {
+ if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
+ $copyObj->addCouponVersion($relObj->copy($deepCopy));
}
}
@@ -1529,37 +1879,43 @@ abstract class Coupon implements ActiveRecordInterface
*/
public function initRelation($relationName)
{
- if ('CouponRule' == $relationName) {
- return $this->initCouponRules();
+ if ('CouponOrder' == $relationName) {
+ return $this->initCouponOrders();
+ }
+ if ('CouponI18n' == $relationName) {
+ return $this->initCouponI18ns();
+ }
+ if ('CouponVersion' == $relationName) {
+ return $this->initCouponVersions();
}
}
/**
- * Clears out the collCouponRules collection
+ * Clears out the collCouponOrders collection
*
* This does not modify the database; however, it will remove any associated objects, causing
* them to be refetched by subsequent calls to accessor method.
*
* @return void
- * @see addCouponRules()
+ * @see addCouponOrders()
*/
- public function clearCouponRules()
+ public function clearCouponOrders()
{
- $this->collCouponRules = null; // important to set this to NULL since that means it is uninitialized
+ $this->collCouponOrders = null; // important to set this to NULL since that means it is uninitialized
}
/**
- * Reset is the collCouponRules collection loaded partially.
+ * Reset is the collCouponOrders collection loaded partially.
*/
- public function resetPartialCouponRules($v = true)
+ public function resetPartialCouponOrders($v = true)
{
- $this->collCouponRulesPartial = $v;
+ $this->collCouponOrdersPartial = $v;
}
/**
- * Initializes the collCouponRules collection.
+ * Initializes the collCouponOrders collection.
*
- * By default this just sets the collCouponRules collection to an empty array (like clearcollCouponRules());
+ * By default this just sets the collCouponOrders collection to an empty array (like clearcollCouponOrders());
* however, you may wish to override this method in your stub class to provide setting appropriate
* to your application -- for example, setting the initial array to the values stored in database.
*
@@ -1568,17 +1924,17 @@ abstract class Coupon implements ActiveRecordInterface
*
* @return void
*/
- public function initCouponRules($overrideExisting = true)
+ public function initCouponOrders($overrideExisting = true)
{
- if (null !== $this->collCouponRules && !$overrideExisting) {
+ if (null !== $this->collCouponOrders && !$overrideExisting) {
return;
}
- $this->collCouponRules = new ObjectCollection();
- $this->collCouponRules->setModel('\Thelia\Model\CouponRule');
+ $this->collCouponOrders = new ObjectCollection();
+ $this->collCouponOrders->setModel('\Thelia\Model\CouponOrder');
}
/**
- * Gets an array of ChildCouponRule objects which contain a foreign key that references this object.
+ * Gets an array of ChildCouponOrder objects which contain a foreign key that references this object.
*
* If the $criteria is not null, it is used to always fetch the results from the database.
* Otherwise the results are fetched from the database the first time, then cached.
@@ -1588,109 +1944,109 @@ abstract class Coupon implements ActiveRecordInterface
*
* @param Criteria $criteria optional Criteria object to narrow the query
* @param ConnectionInterface $con optional connection object
- * @return Collection|ChildCouponRule[] List of ChildCouponRule objects
+ * @return Collection|ChildCouponOrder[] List of ChildCouponOrder objects
* @throws PropelException
*/
- public function getCouponRules($criteria = null, ConnectionInterface $con = null)
+ public function getCouponOrders($criteria = null, ConnectionInterface $con = null)
{
- $partial = $this->collCouponRulesPartial && !$this->isNew();
- if (null === $this->collCouponRules || null !== $criteria || $partial) {
- if ($this->isNew() && null === $this->collCouponRules) {
+ $partial = $this->collCouponOrdersPartial && !$this->isNew();
+ if (null === $this->collCouponOrders || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collCouponOrders) {
// return empty collection
- $this->initCouponRules();
+ $this->initCouponOrders();
} else {
- $collCouponRules = ChildCouponRuleQuery::create(null, $criteria)
+ $collCouponOrders = ChildCouponOrderQuery::create(null, $criteria)
->filterByCoupon($this)
->find($con);
if (null !== $criteria) {
- if (false !== $this->collCouponRulesPartial && count($collCouponRules)) {
- $this->initCouponRules(false);
+ if (false !== $this->collCouponOrdersPartial && count($collCouponOrders)) {
+ $this->initCouponOrders(false);
- foreach ($collCouponRules as $obj) {
- if (false == $this->collCouponRules->contains($obj)) {
- $this->collCouponRules->append($obj);
+ foreach ($collCouponOrders as $obj) {
+ if (false == $this->collCouponOrders->contains($obj)) {
+ $this->collCouponOrders->append($obj);
}
}
- $this->collCouponRulesPartial = true;
+ $this->collCouponOrdersPartial = true;
}
- $collCouponRules->getInternalIterator()->rewind();
+ $collCouponOrders->getInternalIterator()->rewind();
- return $collCouponRules;
+ return $collCouponOrders;
}
- if ($partial && $this->collCouponRules) {
- foreach ($this->collCouponRules as $obj) {
+ if ($partial && $this->collCouponOrders) {
+ foreach ($this->collCouponOrders as $obj) {
if ($obj->isNew()) {
- $collCouponRules[] = $obj;
+ $collCouponOrders[] = $obj;
}
}
}
- $this->collCouponRules = $collCouponRules;
- $this->collCouponRulesPartial = false;
+ $this->collCouponOrders = $collCouponOrders;
+ $this->collCouponOrdersPartial = false;
}
}
- return $this->collCouponRules;
+ return $this->collCouponOrders;
}
/**
- * Sets a collection of CouponRule objects related by a one-to-many relationship
+ * Sets a collection of CouponOrder objects related by a one-to-many relationship
* to the current object.
* It will also schedule objects for deletion based on a diff between old objects (aka persisted)
* and new objects from the given Propel collection.
*
- * @param Collection $couponRules A Propel collection.
+ * @param Collection $couponOrders A Propel collection.
* @param ConnectionInterface $con Optional connection object
* @return ChildCoupon The current object (for fluent API support)
*/
- public function setCouponRules(Collection $couponRules, ConnectionInterface $con = null)
+ public function setCouponOrders(Collection $couponOrders, ConnectionInterface $con = null)
{
- $couponRulesToDelete = $this->getCouponRules(new Criteria(), $con)->diff($couponRules);
+ $couponOrdersToDelete = $this->getCouponOrders(new Criteria(), $con)->diff($couponOrders);
- $this->couponRulesScheduledForDeletion = $couponRulesToDelete;
+ $this->couponOrdersScheduledForDeletion = $couponOrdersToDelete;
- foreach ($couponRulesToDelete as $couponRuleRemoved) {
- $couponRuleRemoved->setCoupon(null);
+ foreach ($couponOrdersToDelete as $couponOrderRemoved) {
+ $couponOrderRemoved->setCoupon(null);
}
- $this->collCouponRules = null;
- foreach ($couponRules as $couponRule) {
- $this->addCouponRule($couponRule);
+ $this->collCouponOrders = null;
+ foreach ($couponOrders as $couponOrder) {
+ $this->addCouponOrder($couponOrder);
}
- $this->collCouponRules = $couponRules;
- $this->collCouponRulesPartial = false;
+ $this->collCouponOrders = $couponOrders;
+ $this->collCouponOrdersPartial = false;
return $this;
}
/**
- * Returns the number of related CouponRule objects.
+ * Returns the number of related CouponOrder objects.
*
* @param Criteria $criteria
* @param boolean $distinct
* @param ConnectionInterface $con
- * @return int Count of related CouponRule objects.
+ * @return int Count of related CouponOrder objects.
* @throws PropelException
*/
- public function countCouponRules(Criteria $criteria = null, $distinct = false, ConnectionInterface $con = null)
+ public function countCouponOrders(Criteria $criteria = null, $distinct = false, ConnectionInterface $con = null)
{
- $partial = $this->collCouponRulesPartial && !$this->isNew();
- if (null === $this->collCouponRules || null !== $criteria || $partial) {
- if ($this->isNew() && null === $this->collCouponRules) {
+ $partial = $this->collCouponOrdersPartial && !$this->isNew();
+ if (null === $this->collCouponOrders || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collCouponOrders) {
return 0;
}
if ($partial && !$criteria) {
- return count($this->getCouponRules());
+ return count($this->getCouponOrders());
}
- $query = ChildCouponRuleQuery::create(null, $criteria);
+ $query = ChildCouponOrderQuery::create(null, $criteria);
if ($distinct) {
$query->distinct();
}
@@ -1700,53 +2056,524 @@ abstract class Coupon implements ActiveRecordInterface
->count($con);
}
- return count($this->collCouponRules);
+ return count($this->collCouponOrders);
}
/**
- * Method called to associate a ChildCouponRule object to this object
- * through the ChildCouponRule foreign key attribute.
+ * Method called to associate a ChildCouponOrder object to this object
+ * through the ChildCouponOrder foreign key attribute.
*
- * @param ChildCouponRule $l ChildCouponRule
+ * @param ChildCouponOrder $l ChildCouponOrder
* @return \Thelia\Model\Coupon The current object (for fluent API support)
*/
- public function addCouponRule(ChildCouponRule $l)
+ public function addCouponOrder(ChildCouponOrder $l)
{
- if ($this->collCouponRules === null) {
- $this->initCouponRules();
- $this->collCouponRulesPartial = true;
+ if ($this->collCouponOrders === null) {
+ $this->initCouponOrders();
+ $this->collCouponOrdersPartial = true;
}
- if (!in_array($l, $this->collCouponRules->getArrayCopy(), true)) { // only add it if the **same** object is not already associated
- $this->doAddCouponRule($l);
+ if (!in_array($l, $this->collCouponOrders->getArrayCopy(), true)) { // only add it if the **same** object is not already associated
+ $this->doAddCouponOrder($l);
}
return $this;
}
/**
- * @param CouponRule $couponRule The couponRule object to add.
+ * @param CouponOrder $couponOrder The couponOrder object to add.
*/
- protected function doAddCouponRule($couponRule)
+ protected function doAddCouponOrder($couponOrder)
{
- $this->collCouponRules[]= $couponRule;
- $couponRule->setCoupon($this);
+ $this->collCouponOrders[]= $couponOrder;
+ $couponOrder->setCoupon($this);
}
/**
- * @param CouponRule $couponRule The couponRule object to remove.
+ * @param CouponOrder $couponOrder The couponOrder object to remove.
* @return ChildCoupon The current object (for fluent API support)
*/
- public function removeCouponRule($couponRule)
+ public function removeCouponOrder($couponOrder)
{
- if ($this->getCouponRules()->contains($couponRule)) {
- $this->collCouponRules->remove($this->collCouponRules->search($couponRule));
- if (null === $this->couponRulesScheduledForDeletion) {
- $this->couponRulesScheduledForDeletion = clone $this->collCouponRules;
- $this->couponRulesScheduledForDeletion->clear();
+ if ($this->getCouponOrders()->contains($couponOrder)) {
+ $this->collCouponOrders->remove($this->collCouponOrders->search($couponOrder));
+ if (null === $this->couponOrdersScheduledForDeletion) {
+ $this->couponOrdersScheduledForDeletion = clone $this->collCouponOrders;
+ $this->couponOrdersScheduledForDeletion->clear();
}
- $this->couponRulesScheduledForDeletion[]= clone $couponRule;
- $couponRule->setCoupon(null);
+ $this->couponOrdersScheduledForDeletion[]= clone $couponOrder;
+ $couponOrder->setCoupon(null);
+ }
+
+ return $this;
+ }
+
+
+ /**
+ * If this collection has already been initialized with
+ * an identical criteria, it returns the collection.
+ * Otherwise if this Coupon is new, it will return
+ * an empty collection; or if this Coupon has previously
+ * been saved, it will retrieve related CouponOrders from storage.
+ *
+ * This method is protected by default in order to keep the public
+ * api reasonable. You can provide public methods for those you
+ * actually need in Coupon.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
+ * @return Collection|ChildCouponOrder[] List of ChildCouponOrder objects
+ */
+ public function getCouponOrdersJoinOrder($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
+ {
+ $query = ChildCouponOrderQuery::create(null, $criteria);
+ $query->joinWith('Order', $joinBehavior);
+
+ return $this->getCouponOrders($query, $con);
+ }
+
+ /**
+ * Clears out the collCouponI18ns collection
+ *
+ * This does not modify the database; however, it will remove any associated objects, causing
+ * them to be refetched by subsequent calls to accessor method.
+ *
+ * @return void
+ * @see addCouponI18ns()
+ */
+ public function clearCouponI18ns()
+ {
+ $this->collCouponI18ns = null; // important to set this to NULL since that means it is uninitialized
+ }
+
+ /**
+ * Reset is the collCouponI18ns collection loaded partially.
+ */
+ public function resetPartialCouponI18ns($v = true)
+ {
+ $this->collCouponI18nsPartial = $v;
+ }
+
+ /**
+ * Initializes the collCouponI18ns collection.
+ *
+ * By default this just sets the collCouponI18ns collection to an empty array (like clearcollCouponI18ns());
+ * however, you may wish to override this method in your stub class to provide setting appropriate
+ * to your application -- for example, setting the initial array to the values stored in database.
+ *
+ * @param boolean $overrideExisting If set to true, the method call initializes
+ * the collection even if it is not empty
+ *
+ * @return void
+ */
+ public function initCouponI18ns($overrideExisting = true)
+ {
+ if (null !== $this->collCouponI18ns && !$overrideExisting) {
+ return;
+ }
+ $this->collCouponI18ns = new ObjectCollection();
+ $this->collCouponI18ns->setModel('\Thelia\Model\CouponI18n');
+ }
+
+ /**
+ * Gets an array of ChildCouponI18n objects which contain a foreign key that references this object.
+ *
+ * If the $criteria is not null, it is used to always fetch the results from the database.
+ * Otherwise the results are fetched from the database the first time, then cached.
+ * Next time the same method is called without $criteria, the cached collection is returned.
+ * If this ChildCoupon is new, it will return
+ * an empty collection or the current collection; the criteria is ignored on a new object.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @return Collection|ChildCouponI18n[] List of ChildCouponI18n objects
+ * @throws PropelException
+ */
+ public function getCouponI18ns($criteria = null, ConnectionInterface $con = null)
+ {
+ $partial = $this->collCouponI18nsPartial && !$this->isNew();
+ if (null === $this->collCouponI18ns || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collCouponI18ns) {
+ // return empty collection
+ $this->initCouponI18ns();
+ } else {
+ $collCouponI18ns = ChildCouponI18nQuery::create(null, $criteria)
+ ->filterByCoupon($this)
+ ->find($con);
+
+ if (null !== $criteria) {
+ if (false !== $this->collCouponI18nsPartial && count($collCouponI18ns)) {
+ $this->initCouponI18ns(false);
+
+ foreach ($collCouponI18ns as $obj) {
+ if (false == $this->collCouponI18ns->contains($obj)) {
+ $this->collCouponI18ns->append($obj);
+ }
+ }
+
+ $this->collCouponI18nsPartial = true;
+ }
+
+ $collCouponI18ns->getInternalIterator()->rewind();
+
+ return $collCouponI18ns;
+ }
+
+ if ($partial && $this->collCouponI18ns) {
+ foreach ($this->collCouponI18ns as $obj) {
+ if ($obj->isNew()) {
+ $collCouponI18ns[] = $obj;
+ }
+ }
+ }
+
+ $this->collCouponI18ns = $collCouponI18ns;
+ $this->collCouponI18nsPartial = false;
+ }
+ }
+
+ return $this->collCouponI18ns;
+ }
+
+ /**
+ * Sets a collection of CouponI18n objects related by a one-to-many relationship
+ * to the current object.
+ * It will also schedule objects for deletion based on a diff between old objects (aka persisted)
+ * and new objects from the given Propel collection.
+ *
+ * @param Collection $couponI18ns A Propel collection.
+ * @param ConnectionInterface $con Optional connection object
+ * @return ChildCoupon The current object (for fluent API support)
+ */
+ public function setCouponI18ns(Collection $couponI18ns, ConnectionInterface $con = null)
+ {
+ $couponI18nsToDelete = $this->getCouponI18ns(new Criteria(), $con)->diff($couponI18ns);
+
+
+ //since at least one column in the foreign key is at the same time a PK
+ //we can not just set a PK to NULL in the lines below. We have to store
+ //a backup of all values, so we are able to manipulate these items based on the onDelete value later.
+ $this->couponI18nsScheduledForDeletion = clone $couponI18nsToDelete;
+
+ foreach ($couponI18nsToDelete as $couponI18nRemoved) {
+ $couponI18nRemoved->setCoupon(null);
+ }
+
+ $this->collCouponI18ns = null;
+ foreach ($couponI18ns as $couponI18n) {
+ $this->addCouponI18n($couponI18n);
+ }
+
+ $this->collCouponI18ns = $couponI18ns;
+ $this->collCouponI18nsPartial = false;
+
+ return $this;
+ }
+
+ /**
+ * Returns the number of related CouponI18n objects.
+ *
+ * @param Criteria $criteria
+ * @param boolean $distinct
+ * @param ConnectionInterface $con
+ * @return int Count of related CouponI18n objects.
+ * @throws PropelException
+ */
+ public function countCouponI18ns(Criteria $criteria = null, $distinct = false, ConnectionInterface $con = null)
+ {
+ $partial = $this->collCouponI18nsPartial && !$this->isNew();
+ if (null === $this->collCouponI18ns || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collCouponI18ns) {
+ return 0;
+ }
+
+ if ($partial && !$criteria) {
+ return count($this->getCouponI18ns());
+ }
+
+ $query = ChildCouponI18nQuery::create(null, $criteria);
+ if ($distinct) {
+ $query->distinct();
+ }
+
+ return $query
+ ->filterByCoupon($this)
+ ->count($con);
+ }
+
+ return count($this->collCouponI18ns);
+ }
+
+ /**
+ * Method called to associate a ChildCouponI18n object to this object
+ * through the ChildCouponI18n foreign key attribute.
+ *
+ * @param ChildCouponI18n $l ChildCouponI18n
+ * @return \Thelia\Model\Coupon The current object (for fluent API support)
+ */
+ public function addCouponI18n(ChildCouponI18n $l)
+ {
+ if ($l && $locale = $l->getLocale()) {
+ $this->setLocale($locale);
+ $this->currentTranslations[$locale] = $l;
+ }
+ if ($this->collCouponI18ns === null) {
+ $this->initCouponI18ns();
+ $this->collCouponI18nsPartial = true;
+ }
+
+ if (!in_array($l, $this->collCouponI18ns->getArrayCopy(), true)) { // only add it if the **same** object is not already associated
+ $this->doAddCouponI18n($l);
+ }
+
+ return $this;
+ }
+
+ /**
+ * @param CouponI18n $couponI18n The couponI18n object to add.
+ */
+ protected function doAddCouponI18n($couponI18n)
+ {
+ $this->collCouponI18ns[]= $couponI18n;
+ $couponI18n->setCoupon($this);
+ }
+
+ /**
+ * @param CouponI18n $couponI18n The couponI18n object to remove.
+ * @return ChildCoupon The current object (for fluent API support)
+ */
+ public function removeCouponI18n($couponI18n)
+ {
+ if ($this->getCouponI18ns()->contains($couponI18n)) {
+ $this->collCouponI18ns->remove($this->collCouponI18ns->search($couponI18n));
+ if (null === $this->couponI18nsScheduledForDeletion) {
+ $this->couponI18nsScheduledForDeletion = clone $this->collCouponI18ns;
+ $this->couponI18nsScheduledForDeletion->clear();
+ }
+ $this->couponI18nsScheduledForDeletion[]= clone $couponI18n;
+ $couponI18n->setCoupon(null);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Clears out the collCouponVersions collection
+ *
+ * This does not modify the database; however, it will remove any associated objects, causing
+ * them to be refetched by subsequent calls to accessor method.
+ *
+ * @return void
+ * @see addCouponVersions()
+ */
+ public function clearCouponVersions()
+ {
+ $this->collCouponVersions = null; // important to set this to NULL since that means it is uninitialized
+ }
+
+ /**
+ * Reset is the collCouponVersions collection loaded partially.
+ */
+ public function resetPartialCouponVersions($v = true)
+ {
+ $this->collCouponVersionsPartial = $v;
+ }
+
+ /**
+ * Initializes the collCouponVersions collection.
+ *
+ * By default this just sets the collCouponVersions collection to an empty array (like clearcollCouponVersions());
+ * however, you may wish to override this method in your stub class to provide setting appropriate
+ * to your application -- for example, setting the initial array to the values stored in database.
+ *
+ * @param boolean $overrideExisting If set to true, the method call initializes
+ * the collection even if it is not empty
+ *
+ * @return void
+ */
+ public function initCouponVersions($overrideExisting = true)
+ {
+ if (null !== $this->collCouponVersions && !$overrideExisting) {
+ return;
+ }
+ $this->collCouponVersions = new ObjectCollection();
+ $this->collCouponVersions->setModel('\Thelia\Model\CouponVersion');
+ }
+
+ /**
+ * Gets an array of ChildCouponVersion objects which contain a foreign key that references this object.
+ *
+ * If the $criteria is not null, it is used to always fetch the results from the database.
+ * Otherwise the results are fetched from the database the first time, then cached.
+ * Next time the same method is called without $criteria, the cached collection is returned.
+ * If this ChildCoupon is new, it will return
+ * an empty collection or the current collection; the criteria is ignored on a new object.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @return Collection|ChildCouponVersion[] List of ChildCouponVersion objects
+ * @throws PropelException
+ */
+ public function getCouponVersions($criteria = null, ConnectionInterface $con = null)
+ {
+ $partial = $this->collCouponVersionsPartial && !$this->isNew();
+ if (null === $this->collCouponVersions || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collCouponVersions) {
+ // return empty collection
+ $this->initCouponVersions();
+ } else {
+ $collCouponVersions = ChildCouponVersionQuery::create(null, $criteria)
+ ->filterByCoupon($this)
+ ->find($con);
+
+ if (null !== $criteria) {
+ if (false !== $this->collCouponVersionsPartial && count($collCouponVersions)) {
+ $this->initCouponVersions(false);
+
+ foreach ($collCouponVersions as $obj) {
+ if (false == $this->collCouponVersions->contains($obj)) {
+ $this->collCouponVersions->append($obj);
+ }
+ }
+
+ $this->collCouponVersionsPartial = true;
+ }
+
+ $collCouponVersions->getInternalIterator()->rewind();
+
+ return $collCouponVersions;
+ }
+
+ if ($partial && $this->collCouponVersions) {
+ foreach ($this->collCouponVersions as $obj) {
+ if ($obj->isNew()) {
+ $collCouponVersions[] = $obj;
+ }
+ }
+ }
+
+ $this->collCouponVersions = $collCouponVersions;
+ $this->collCouponVersionsPartial = false;
+ }
+ }
+
+ return $this->collCouponVersions;
+ }
+
+ /**
+ * Sets a collection of CouponVersion objects related by a one-to-many relationship
+ * to the current object.
+ * It will also schedule objects for deletion based on a diff between old objects (aka persisted)
+ * and new objects from the given Propel collection.
+ *
+ * @param Collection $couponVersions A Propel collection.
+ * @param ConnectionInterface $con Optional connection object
+ * @return ChildCoupon The current object (for fluent API support)
+ */
+ public function setCouponVersions(Collection $couponVersions, ConnectionInterface $con = null)
+ {
+ $couponVersionsToDelete = $this->getCouponVersions(new Criteria(), $con)->diff($couponVersions);
+
+
+ //since at least one column in the foreign key is at the same time a PK
+ //we can not just set a PK to NULL in the lines below. We have to store
+ //a backup of all values, so we are able to manipulate these items based on the onDelete value later.
+ $this->couponVersionsScheduledForDeletion = clone $couponVersionsToDelete;
+
+ foreach ($couponVersionsToDelete as $couponVersionRemoved) {
+ $couponVersionRemoved->setCoupon(null);
+ }
+
+ $this->collCouponVersions = null;
+ foreach ($couponVersions as $couponVersion) {
+ $this->addCouponVersion($couponVersion);
+ }
+
+ $this->collCouponVersions = $couponVersions;
+ $this->collCouponVersionsPartial = false;
+
+ return $this;
+ }
+
+ /**
+ * Returns the number of related CouponVersion objects.
+ *
+ * @param Criteria $criteria
+ * @param boolean $distinct
+ * @param ConnectionInterface $con
+ * @return int Count of related CouponVersion objects.
+ * @throws PropelException
+ */
+ public function countCouponVersions(Criteria $criteria = null, $distinct = false, ConnectionInterface $con = null)
+ {
+ $partial = $this->collCouponVersionsPartial && !$this->isNew();
+ if (null === $this->collCouponVersions || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collCouponVersions) {
+ return 0;
+ }
+
+ if ($partial && !$criteria) {
+ return count($this->getCouponVersions());
+ }
+
+ $query = ChildCouponVersionQuery::create(null, $criteria);
+ if ($distinct) {
+ $query->distinct();
+ }
+
+ return $query
+ ->filterByCoupon($this)
+ ->count($con);
+ }
+
+ return count($this->collCouponVersions);
+ }
+
+ /**
+ * Method called to associate a ChildCouponVersion object to this object
+ * through the ChildCouponVersion foreign key attribute.
+ *
+ * @param ChildCouponVersion $l ChildCouponVersion
+ * @return \Thelia\Model\Coupon The current object (for fluent API support)
+ */
+ public function addCouponVersion(ChildCouponVersion $l)
+ {
+ if ($this->collCouponVersions === null) {
+ $this->initCouponVersions();
+ $this->collCouponVersionsPartial = true;
+ }
+
+ if (!in_array($l, $this->collCouponVersions->getArrayCopy(), true)) { // only add it if the **same** object is not already associated
+ $this->doAddCouponVersion($l);
+ }
+
+ return $this;
+ }
+
+ /**
+ * @param CouponVersion $couponVersion The couponVersion object to add.
+ */
+ protected function doAddCouponVersion($couponVersion)
+ {
+ $this->collCouponVersions[]= $couponVersion;
+ $couponVersion->setCoupon($this);
+ }
+
+ /**
+ * @param CouponVersion $couponVersion The couponVersion object to remove.
+ * @return ChildCoupon The current object (for fluent API support)
+ */
+ public function removeCouponVersion($couponVersion)
+ {
+ if ($this->getCouponVersions()->contains($couponVersion)) {
+ $this->collCouponVersions->remove($this->collCouponVersions->search($couponVersion));
+ if (null === $this->couponVersionsScheduledForDeletion) {
+ $this->couponVersionsScheduledForDeletion = clone $this->collCouponVersions;
+ $this->couponVersionsScheduledForDeletion->clear();
+ }
+ $this->couponVersionsScheduledForDeletion[]= clone $couponVersion;
+ $couponVersion->setCoupon(null);
}
return $this;
@@ -1759,16 +2586,21 @@ abstract class Coupon implements ActiveRecordInterface
{
$this->id = null;
$this->code = null;
- $this->action = null;
+ $this->type = null;
+ $this->title = null;
+ $this->short_description = null;
+ $this->description = null;
$this->value = null;
- $this->used = null;
- $this->available_since = null;
- $this->date_limit = null;
- $this->activate = null;
+ $this->is_used = null;
+ $this->is_enabled = null;
+ $this->expiration_date = null;
+ $this->serialized_rules = null;
$this->created_at = null;
$this->updated_at = null;
+ $this->version = null;
$this->alreadyInSave = false;
$this->clearAllReferences();
+ $this->applyDefaultValues();
$this->resetModified();
$this->setNew(true);
$this->setDeleted(false);
@@ -1786,17 +2618,39 @@ abstract class Coupon implements ActiveRecordInterface
public function clearAllReferences($deep = false)
{
if ($deep) {
- if ($this->collCouponRules) {
- foreach ($this->collCouponRules as $o) {
+ if ($this->collCouponOrders) {
+ foreach ($this->collCouponOrders as $o) {
+ $o->clearAllReferences($deep);
+ }
+ }
+ if ($this->collCouponI18ns) {
+ foreach ($this->collCouponI18ns as $o) {
+ $o->clearAllReferences($deep);
+ }
+ }
+ if ($this->collCouponVersions) {
+ foreach ($this->collCouponVersions as $o) {
$o->clearAllReferences($deep);
}
}
} // if ($deep)
- if ($this->collCouponRules instanceof Collection) {
- $this->collCouponRules->clearIterator();
+ // i18n behavior
+ $this->currentLocale = 'en_EN';
+ $this->currentTranslations = null;
+
+ if ($this->collCouponOrders instanceof Collection) {
+ $this->collCouponOrders->clearIterator();
}
- $this->collCouponRules = null;
+ $this->collCouponOrders = null;
+ if ($this->collCouponI18ns instanceof Collection) {
+ $this->collCouponI18ns->clearIterator();
+ }
+ $this->collCouponI18ns = null;
+ if ($this->collCouponVersions instanceof Collection) {
+ $this->collCouponVersions->clearIterator();
+ }
+ $this->collCouponVersions = null;
}
/**
@@ -1823,6 +2677,397 @@ abstract class Coupon implements ActiveRecordInterface
return $this;
}
+ // i18n behavior
+
+ /**
+ * Sets the locale for translations
+ *
+ * @param string $locale Locale to use for the translation, e.g. 'fr_FR'
+ *
+ * @return ChildCoupon The current object (for fluent API support)
+ */
+ public function setLocale($locale = 'en_EN')
+ {
+ $this->currentLocale = $locale;
+
+ return $this;
+ }
+
+ /**
+ * Gets the locale for translations
+ *
+ * @return string $locale Locale to use for the translation, e.g. 'fr_FR'
+ */
+ public function getLocale()
+ {
+ return $this->currentLocale;
+ }
+
+ /**
+ * Returns the current translation for a given locale
+ *
+ * @param string $locale Locale to use for the translation, e.g. 'fr_FR'
+ * @param ConnectionInterface $con an optional connection object
+ *
+ * @return ChildCouponI18n */
+ public function getTranslation($locale = 'en_EN', ConnectionInterface $con = null)
+ {
+ if (!isset($this->currentTranslations[$locale])) {
+ if (null !== $this->collCouponI18ns) {
+ foreach ($this->collCouponI18ns as $translation) {
+ if ($translation->getLocale() == $locale) {
+ $this->currentTranslations[$locale] = $translation;
+
+ return $translation;
+ }
+ }
+ }
+ if ($this->isNew()) {
+ $translation = new ChildCouponI18n();
+ $translation->setLocale($locale);
+ } else {
+ $translation = ChildCouponI18nQuery::create()
+ ->filterByPrimaryKey(array($this->getPrimaryKey(), $locale))
+ ->findOneOrCreate($con);
+ $this->currentTranslations[$locale] = $translation;
+ }
+ $this->addCouponI18n($translation);
+ }
+
+ return $this->currentTranslations[$locale];
+ }
+
+ /**
+ * Remove the translation for a given locale
+ *
+ * @param string $locale Locale to use for the translation, e.g. 'fr_FR'
+ * @param ConnectionInterface $con an optional connection object
+ *
+ * @return ChildCoupon The current object (for fluent API support)
+ */
+ public function removeTranslation($locale = 'en_EN', ConnectionInterface $con = null)
+ {
+ if (!$this->isNew()) {
+ ChildCouponI18nQuery::create()
+ ->filterByPrimaryKey(array($this->getPrimaryKey(), $locale))
+ ->delete($con);
+ }
+ if (isset($this->currentTranslations[$locale])) {
+ unset($this->currentTranslations[$locale]);
+ }
+ foreach ($this->collCouponI18ns as $key => $translation) {
+ if ($translation->getLocale() == $locale) {
+ unset($this->collCouponI18ns[$key]);
+ break;
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * Returns the current translation
+ *
+ * @param ConnectionInterface $con an optional connection object
+ *
+ * @return ChildCouponI18n */
+ public function getCurrentTranslation(ConnectionInterface $con = null)
+ {
+ return $this->getTranslation($this->getLocale(), $con);
+ }
+
+ // versionable behavior
+
+ /**
+ * Enforce a new Version of this object upon next save.
+ *
+ * @return \Thelia\Model\Coupon
+ */
+ public function enforceVersioning()
+ {
+ $this->enforceVersion = true;
+
+ return $this;
+ }
+
+ /**
+ * Checks whether the current state must be recorded as a version
+ *
+ * @return boolean
+ */
+ public function isVersioningNecessary($con = null)
+ {
+ if ($this->alreadyInSave) {
+ return false;
+ }
+
+ if ($this->enforceVersion) {
+ return true;
+ }
+
+ if (ChildCouponQuery::isVersioningEnabled() && ($this->isNew() || $this->isModified()) || $this->isDeleted()) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Creates a version of the current object and saves it.
+ *
+ * @param ConnectionInterface $con the connection to use
+ *
+ * @return ChildCouponVersion A version object
+ */
+ public function addVersion($con = null)
+ {
+ $this->enforceVersion = false;
+
+ $version = new ChildCouponVersion();
+ $version->setId($this->getId());
+ $version->setCode($this->getCode());
+ $version->setType($this->getType());
+ $version->setTitle($this->getTitle());
+ $version->setShortDescription($this->getShortDescription());
+ $version->setDescription($this->getDescription());
+ $version->setValue($this->getValue());
+ $version->setIsUsed($this->getIsUsed());
+ $version->setIsEnabled($this->getIsEnabled());
+ $version->setExpirationDate($this->getExpirationDate());
+ $version->setSerializedRules($this->getSerializedRules());
+ $version->setCreatedAt($this->getCreatedAt());
+ $version->setUpdatedAt($this->getUpdatedAt());
+ $version->setVersion($this->getVersion());
+ $version->setCoupon($this);
+ $version->save($con);
+
+ return $version;
+ }
+
+ /**
+ * Sets the properties of the current object to the value they had at a specific version
+ *
+ * @param integer $versionNumber The version number to read
+ * @param ConnectionInterface $con The connection to use
+ *
+ * @return ChildCoupon The current object (for fluent API support)
+ */
+ public function toVersion($versionNumber, $con = null)
+ {
+ $version = $this->getOneVersion($versionNumber, $con);
+ if (!$version) {
+ throw new PropelException(sprintf('No ChildCoupon object found with version %d', $version));
+ }
+ $this->populateFromVersion($version, $con);
+
+ return $this;
+ }
+
+ /**
+ * Sets the properties of the current object to the value they had at a specific version
+ *
+ * @param ChildCouponVersion $version The version object to use
+ * @param ConnectionInterface $con the connection to use
+ * @param array $loadedObjects objects that been loaded in a chain of populateFromVersion calls on referrer or fk objects.
+ *
+ * @return ChildCoupon The current object (for fluent API support)
+ */
+ public function populateFromVersion($version, $con = null, &$loadedObjects = array())
+ {
+ $loadedObjects['ChildCoupon'][$version->getId()][$version->getVersion()] = $this;
+ $this->setId($version->getId());
+ $this->setCode($version->getCode());
+ $this->setType($version->getType());
+ $this->setTitle($version->getTitle());
+ $this->setShortDescription($version->getShortDescription());
+ $this->setDescription($version->getDescription());
+ $this->setValue($version->getValue());
+ $this->setIsUsed($version->getIsUsed());
+ $this->setIsEnabled($version->getIsEnabled());
+ $this->setExpirationDate($version->getExpirationDate());
+ $this->setSerializedRules($version->getSerializedRules());
+ $this->setCreatedAt($version->getCreatedAt());
+ $this->setUpdatedAt($version->getUpdatedAt());
+ $this->setVersion($version->getVersion());
+
+ return $this;
+ }
+
+ /**
+ * Gets the latest persisted version number for the current object
+ *
+ * @param ConnectionInterface $con the connection to use
+ *
+ * @return integer
+ */
+ public function getLastVersionNumber($con = null)
+ {
+ $v = ChildCouponVersionQuery::create()
+ ->filterByCoupon($this)
+ ->orderByVersion('desc')
+ ->findOne($con);
+ if (!$v) {
+ return 0;
+ }
+
+ return $v->getVersion();
+ }
+
+ /**
+ * Checks whether the current object is the latest one
+ *
+ * @param ConnectionInterface $con the connection to use
+ *
+ * @return Boolean
+ */
+ public function isLastVersion($con = null)
+ {
+ return $this->getLastVersionNumber($con) == $this->getVersion();
+ }
+
+ /**
+ * Retrieves a version object for this entity and a version number
+ *
+ * @param integer $versionNumber The version number to read
+ * @param ConnectionInterface $con the connection to use
+ *
+ * @return ChildCouponVersion A version object
+ */
+ public function getOneVersion($versionNumber, $con = null)
+ {
+ return ChildCouponVersionQuery::create()
+ ->filterByCoupon($this)
+ ->filterByVersion($versionNumber)
+ ->findOne($con);
+ }
+
+ /**
+ * Gets all the versions of this object, in incremental order
+ *
+ * @param ConnectionInterface $con the connection to use
+ *
+ * @return ObjectCollection A list of ChildCouponVersion objects
+ */
+ public function getAllVersions($con = null)
+ {
+ $criteria = new Criteria();
+ $criteria->addAscendingOrderByColumn(CouponVersionTableMap::VERSION);
+
+ return $this->getCouponVersions($criteria, $con);
+ }
+
+ /**
+ * Compares the current object with another of its version.
+ *
+ * print_r($book->compareVersion(1));
+ * => array(
+ * '1' => array('Title' => 'Book title at version 1'),
+ * '2' => array('Title' => 'Book title at version 2')
+ * );
+ *
+ *
+ * @param integer $versionNumber
+ * @param string $keys Main key used for the result diff (versions|columns)
+ * @param ConnectionInterface $con the connection to use
+ * @param array $ignoredColumns The columns to exclude from the diff.
+ *
+ * @return array A list of differences
+ */
+ public function compareVersion($versionNumber, $keys = 'columns', $con = null, $ignoredColumns = array())
+ {
+ $fromVersion = $this->toArray();
+ $toVersion = $this->getOneVersion($versionNumber, $con)->toArray();
+
+ return $this->computeDiff($fromVersion, $toVersion, $keys, $ignoredColumns);
+ }
+
+ /**
+ * Compares two versions of the current object.
+ *
+ * print_r($book->compareVersions(1, 2));
+ * => array(
+ * '1' => array('Title' => 'Book title at version 1'),
+ * '2' => array('Title' => 'Book title at version 2')
+ * );
+ *
+ *
+ * @param integer $fromVersionNumber
+ * @param integer $toVersionNumber
+ * @param string $keys Main key used for the result diff (versions|columns)
+ * @param ConnectionInterface $con the connection to use
+ * @param array $ignoredColumns The columns to exclude from the diff.
+ *
+ * @return array A list of differences
+ */
+ public function compareVersions($fromVersionNumber, $toVersionNumber, $keys = 'columns', $con = null, $ignoredColumns = array())
+ {
+ $fromVersion = $this->getOneVersion($fromVersionNumber, $con)->toArray();
+ $toVersion = $this->getOneVersion($toVersionNumber, $con)->toArray();
+
+ return $this->computeDiff($fromVersion, $toVersion, $keys, $ignoredColumns);
+ }
+
+ /**
+ * Computes the diff between two versions.
+ *
+ * print_r($book->computeDiff(1, 2));
+ * => array(
+ * '1' => array('Title' => 'Book title at version 1'),
+ * '2' => array('Title' => 'Book title at version 2')
+ * );
+ *
+ *
+ * @param array $fromVersion An array representing the original version.
+ * @param array $toVersion An array representing the destination version.
+ * @param string $keys Main key used for the result diff (versions|columns).
+ * @param array $ignoredColumns The columns to exclude from the diff.
+ *
+ * @return array A list of differences
+ */
+ protected function computeDiff($fromVersion, $toVersion, $keys = 'columns', $ignoredColumns = array())
+ {
+ $fromVersionNumber = $fromVersion['Version'];
+ $toVersionNumber = $toVersion['Version'];
+ $ignoredColumns = array_merge(array(
+ 'Version',
+ ), $ignoredColumns);
+ $diff = array();
+ foreach ($fromVersion as $key => $value) {
+ if (in_array($key, $ignoredColumns)) {
+ continue;
+ }
+ if ($toVersion[$key] != $value) {
+ switch ($keys) {
+ case 'versions':
+ $diff[$fromVersionNumber][$key] = $value;
+ $diff[$toVersionNumber][$key] = $toVersion[$key];
+ break;
+ default:
+ $diff[$key] = array(
+ $fromVersionNumber => $value,
+ $toVersionNumber => $toVersion[$key],
+ );
+ break;
+ }
+ }
+ }
+
+ return $diff;
+ }
+ /**
+ * retrieve the last $number versions.
+ *
+ * @param Integer $number the number of record to return.
+ * @return PropelCollection|array \Thelia\Model\CouponVersion[] List of \Thelia\Model\CouponVersion objects
+ */
+ public function getLastVersions($number = 10, $criteria = null, $con = null)
+ {
+ $criteria = ChildCouponVersionQuery::create(null, $criteria);
+ $criteria->addDescendingOrderByColumn(CouponVersionTableMap::VERSION);
+ $criteria->limit($number);
+
+ return $this->getCouponVersions($criteria, $con);
+ }
/**
* Code to be run before persisting the object
* @param ConnectionInterface $con
diff --git a/core/lib/Thelia/Model/Base/CouponOrder.php b/core/lib/Thelia/Model/Base/CouponOrder.php
index 71a71f673..a183f262e 100755
--- a/core/lib/Thelia/Model/Base/CouponOrder.php
+++ b/core/lib/Thelia/Model/Base/CouponOrder.php
@@ -16,8 +16,10 @@ use Propel\Runtime\Exception\PropelException;
use Propel\Runtime\Map\TableMap;
use Propel\Runtime\Parser\AbstractParser;
use Propel\Runtime\Util\PropelDateTime;
+use Thelia\Model\Coupon as ChildCoupon;
use Thelia\Model\CouponOrder as ChildCouponOrder;
use Thelia\Model\CouponOrderQuery as ChildCouponOrderQuery;
+use Thelia\Model\CouponQuery as ChildCouponQuery;
use Thelia\Model\Order as ChildOrder;
use Thelia\Model\OrderQuery as ChildOrderQuery;
use Thelia\Model\Map\CouponOrderTableMap;
@@ -97,6 +99,11 @@ abstract class CouponOrder implements ActiveRecordInterface
*/
protected $aOrder;
+ /**
+ * @var Coupon
+ */
+ protected $aCoupon;
+
/**
* Flag to prevent endless save loop, if this object is referenced
* by another object which falls in this transaction.
@@ -506,6 +513,10 @@ abstract class CouponOrder implements ActiveRecordInterface
$this->modifiedColumns[] = CouponOrderTableMap::CODE;
}
+ if ($this->aCoupon !== null && $this->aCoupon->getCode() !== $v) {
+ $this->aCoupon = null;
+ }
+
return $this;
} // setCode()
@@ -666,6 +677,9 @@ abstract class CouponOrder implements ActiveRecordInterface
if ($this->aOrder !== null && $this->order_id !== $this->aOrder->getId()) {
$this->aOrder = null;
}
+ if ($this->aCoupon !== null && $this->code !== $this->aCoupon->getCode()) {
+ $this->aCoupon = null;
+ }
} // ensureConsistency
/**
@@ -706,6 +720,7 @@ abstract class CouponOrder implements ActiveRecordInterface
if ($deep) { // also de-associate any related objects?
$this->aOrder = null;
+ $this->aCoupon = null;
} // if (deep)
}
@@ -840,6 +855,13 @@ abstract class CouponOrder implements ActiveRecordInterface
$this->setOrder($this->aOrder);
}
+ if ($this->aCoupon !== null) {
+ if ($this->aCoupon->isModified() || $this->aCoupon->isNew()) {
+ $affectedRows += $this->aCoupon->save($con);
+ }
+ $this->setCoupon($this->aCoupon);
+ }
+
if ($this->isNew() || $this->isModified()) {
// persist changes
if ($this->isNew()) {
@@ -1050,6 +1072,9 @@ abstract class CouponOrder implements ActiveRecordInterface
if (null !== $this->aOrder) {
$result['Order'] = $this->aOrder->toArray($keyType, $includeLazyLoadColumns, $alreadyDumpedObjects, true);
}
+ if (null !== $this->aCoupon) {
+ $result['Coupon'] = $this->aCoupon->toArray($keyType, $includeLazyLoadColumns, $alreadyDumpedObjects, true);
+ }
}
return $result;
@@ -1296,6 +1321,59 @@ abstract class CouponOrder implements ActiveRecordInterface
return $this->aOrder;
}
+ /**
+ * Declares an association between this object and a ChildCoupon object.
+ *
+ * @param ChildCoupon $v
+ * @return \Thelia\Model\CouponOrder The current object (for fluent API support)
+ * @throws PropelException
+ */
+ public function setCoupon(ChildCoupon $v = null)
+ {
+ if ($v === null) {
+ $this->setCode(NULL);
+ } else {
+ $this->setCode($v->getCode());
+ }
+
+ $this->aCoupon = $v;
+
+ // Add binding for other direction of this n:n relationship.
+ // If this object has already been added to the ChildCoupon object, it will not be re-added.
+ if ($v !== null) {
+ $v->addCouponOrder($this);
+ }
+
+
+ return $this;
+ }
+
+
+ /**
+ * Get the associated ChildCoupon object
+ *
+ * @param ConnectionInterface $con Optional Connection object.
+ * @return ChildCoupon The associated ChildCoupon object.
+ * @throws PropelException
+ */
+ public function getCoupon(ConnectionInterface $con = null)
+ {
+ if ($this->aCoupon === null && (($this->code !== "" && $this->code !== null))) {
+ $this->aCoupon = ChildCouponQuery::create()
+ ->filterByCouponOrder($this) // here
+ ->findOne($con);
+ /* The following can be used additionally to
+ guarantee the related object contains a reference
+ to this object. This level of coupling may, however, be
+ undesirable since it could result in an only partially populated collection
+ in the referenced object.
+ $this->aCoupon->addCouponOrders($this);
+ */
+ }
+
+ return $this->aCoupon;
+ }
+
/**
* Clears the current object and sets all attributes to their default values
*/
@@ -1329,6 +1407,7 @@ abstract class CouponOrder implements ActiveRecordInterface
} // if ($deep)
$this->aOrder = null;
+ $this->aCoupon = null;
}
/**
diff --git a/core/lib/Thelia/Model/Base/CouponOrderQuery.php b/core/lib/Thelia/Model/Base/CouponOrderQuery.php
index 6897f56dd..e3a95ea1a 100755
--- a/core/lib/Thelia/Model/Base/CouponOrderQuery.php
+++ b/core/lib/Thelia/Model/Base/CouponOrderQuery.php
@@ -43,6 +43,10 @@ use Thelia\Model\Map\CouponOrderTableMap;
* @method ChildCouponOrderQuery rightJoinOrder($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Order relation
* @method ChildCouponOrderQuery innerJoinOrder($relationAlias = null) Adds a INNER JOIN clause to the query using the Order relation
*
+ * @method ChildCouponOrderQuery leftJoinCoupon($relationAlias = null) Adds a LEFT JOIN clause to the query using the Coupon relation
+ * @method ChildCouponOrderQuery rightJoinCoupon($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Coupon relation
+ * @method ChildCouponOrderQuery innerJoinCoupon($relationAlias = null) Adds a INNER JOIN clause to the query using the Coupon relation
+ *
* @method ChildCouponOrder findOne(ConnectionInterface $con = null) Return the first ChildCouponOrder matching the query
* @method ChildCouponOrder findOneOrCreate(ConnectionInterface $con = null) Return the first ChildCouponOrder matching the query, or a new ChildCouponOrder object populated from the query conditions when no match is found
*
@@ -551,6 +555,81 @@ abstract class CouponOrderQuery extends ModelCriteria
->useQuery($relationAlias ? $relationAlias : 'Order', '\Thelia\Model\OrderQuery');
}
+ /**
+ * Filter the query by a related \Thelia\Model\Coupon object
+ *
+ * @param \Thelia\Model\Coupon|ObjectCollection $coupon The related object(s) to use as filter
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildCouponOrderQuery The current query, for fluid interface
+ */
+ public function filterByCoupon($coupon, $comparison = null)
+ {
+ if ($coupon instanceof \Thelia\Model\Coupon) {
+ return $this
+ ->addUsingAlias(CouponOrderTableMap::CODE, $coupon->getCode(), $comparison);
+ } elseif ($coupon instanceof ObjectCollection) {
+ if (null === $comparison) {
+ $comparison = Criteria::IN;
+ }
+
+ return $this
+ ->addUsingAlias(CouponOrderTableMap::CODE, $coupon->toKeyValue('PrimaryKey', 'Code'), $comparison);
+ } else {
+ throw new PropelException('filterByCoupon() only accepts arguments of type \Thelia\Model\Coupon or Collection');
+ }
+ }
+
+ /**
+ * Adds a JOIN clause to the query using the Coupon relation
+ *
+ * @param string $relationAlias optional alias for the relation
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return ChildCouponOrderQuery The current query, for fluid interface
+ */
+ public function joinCoupon($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ $tableMap = $this->getTableMap();
+ $relationMap = $tableMap->getRelation('Coupon');
+
+ // create a ModelJoin object for this join
+ $join = new ModelJoin();
+ $join->setJoinType($joinType);
+ $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
+ if ($previousJoin = $this->getPreviousJoin()) {
+ $join->setPreviousJoin($previousJoin);
+ }
+
+ // add the ModelJoin to the current object
+ if ($relationAlias) {
+ $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
+ $this->addJoinObject($join, $relationAlias);
+ } else {
+ $this->addJoinObject($join, 'Coupon');
+ }
+
+ return $this;
+ }
+
+ /**
+ * Use the Coupon relation Coupon object
+ *
+ * @see useQuery()
+ *
+ * @param string $relationAlias optional alias for the relation,
+ * to be used as main alias in the secondary query
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return \Thelia\Model\CouponQuery A secondary query class using the current class as primary query
+ */
+ public function useCouponQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ return $this
+ ->joinCoupon($relationAlias, $joinType)
+ ->useQuery($relationAlias ? $relationAlias : 'Coupon', '\Thelia\Model\CouponQuery');
+ }
+
/**
* Exclude object from result
*
diff --git a/core/lib/Thelia/Model/Base/CouponQuery.php b/core/lib/Thelia/Model/Base/CouponQuery.php
index 23fdd2e4c..fa5700786 100755
--- a/core/lib/Thelia/Model/Base/CouponQuery.php
+++ b/core/lib/Thelia/Model/Base/CouponQuery.php
@@ -13,6 +13,7 @@ use Propel\Runtime\Collection\ObjectCollection;
use Propel\Runtime\Connection\ConnectionInterface;
use Propel\Runtime\Exception\PropelException;
use Thelia\Model\Coupon as ChildCoupon;
+use Thelia\Model\CouponI18nQuery as ChildCouponI18nQuery;
use Thelia\Model\CouponQuery as ChildCouponQuery;
use Thelia\Model\Map\CouponTableMap;
@@ -23,63 +24,94 @@ use Thelia\Model\Map\CouponTableMap;
*
* @method ChildCouponQuery orderById($order = Criteria::ASC) Order by the id column
* @method ChildCouponQuery orderByCode($order = Criteria::ASC) Order by the code column
- * @method ChildCouponQuery orderByAction($order = Criteria::ASC) Order by the action column
+ * @method ChildCouponQuery orderByType($order = Criteria::ASC) Order by the type column
+ * @method ChildCouponQuery orderByTitle($order = Criteria::ASC) Order by the title column
+ * @method ChildCouponQuery orderByShortDescription($order = Criteria::ASC) Order by the short_description column
+ * @method ChildCouponQuery orderByDescription($order = Criteria::ASC) Order by the description column
* @method ChildCouponQuery orderByValue($order = Criteria::ASC) Order by the value column
- * @method ChildCouponQuery orderByUsed($order = Criteria::ASC) Order by the used column
- * @method ChildCouponQuery orderByAvailableSince($order = Criteria::ASC) Order by the available_since column
- * @method ChildCouponQuery orderByDateLimit($order = Criteria::ASC) Order by the date_limit column
- * @method ChildCouponQuery orderByActivate($order = Criteria::ASC) Order by the activate column
+ * @method ChildCouponQuery orderByIsUsed($order = Criteria::ASC) Order by the is_used column
+ * @method ChildCouponQuery orderByIsEnabled($order = Criteria::ASC) Order by the is_enabled column
+ * @method ChildCouponQuery orderByExpirationDate($order = Criteria::ASC) Order by the expiration_date column
+ * @method ChildCouponQuery orderBySerializedRules($order = Criteria::ASC) Order by the serialized_rules column
* @method ChildCouponQuery orderByCreatedAt($order = Criteria::ASC) Order by the created_at column
* @method ChildCouponQuery orderByUpdatedAt($order = Criteria::ASC) Order by the updated_at column
+ * @method ChildCouponQuery orderByVersion($order = Criteria::ASC) Order by the version column
*
* @method ChildCouponQuery groupById() Group by the id column
* @method ChildCouponQuery groupByCode() Group by the code column
- * @method ChildCouponQuery groupByAction() Group by the action column
+ * @method ChildCouponQuery groupByType() Group by the type column
+ * @method ChildCouponQuery groupByTitle() Group by the title column
+ * @method ChildCouponQuery groupByShortDescription() Group by the short_description column
+ * @method ChildCouponQuery groupByDescription() Group by the description column
* @method ChildCouponQuery groupByValue() Group by the value column
- * @method ChildCouponQuery groupByUsed() Group by the used column
- * @method ChildCouponQuery groupByAvailableSince() Group by the available_since column
- * @method ChildCouponQuery groupByDateLimit() Group by the date_limit column
- * @method ChildCouponQuery groupByActivate() Group by the activate column
+ * @method ChildCouponQuery groupByIsUsed() Group by the is_used column
+ * @method ChildCouponQuery groupByIsEnabled() Group by the is_enabled column
+ * @method ChildCouponQuery groupByExpirationDate() Group by the expiration_date column
+ * @method ChildCouponQuery groupBySerializedRules() Group by the serialized_rules column
* @method ChildCouponQuery groupByCreatedAt() Group by the created_at column
* @method ChildCouponQuery groupByUpdatedAt() Group by the updated_at column
+ * @method ChildCouponQuery groupByVersion() Group by the version column
*
* @method ChildCouponQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
* @method ChildCouponQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
* @method ChildCouponQuery innerJoin($relation) Adds a INNER JOIN clause to the query
*
- * @method ChildCouponQuery leftJoinCouponRule($relationAlias = null) Adds a LEFT JOIN clause to the query using the CouponRule relation
- * @method ChildCouponQuery rightJoinCouponRule($relationAlias = null) Adds a RIGHT JOIN clause to the query using the CouponRule relation
- * @method ChildCouponQuery innerJoinCouponRule($relationAlias = null) Adds a INNER JOIN clause to the query using the CouponRule relation
+ * @method ChildCouponQuery leftJoinCouponOrder($relationAlias = null) Adds a LEFT JOIN clause to the query using the CouponOrder relation
+ * @method ChildCouponQuery rightJoinCouponOrder($relationAlias = null) Adds a RIGHT JOIN clause to the query using the CouponOrder relation
+ * @method ChildCouponQuery innerJoinCouponOrder($relationAlias = null) Adds a INNER JOIN clause to the query using the CouponOrder relation
+ *
+ * @method ChildCouponQuery leftJoinCouponI18n($relationAlias = null) Adds a LEFT JOIN clause to the query using the CouponI18n relation
+ * @method ChildCouponQuery rightJoinCouponI18n($relationAlias = null) Adds a RIGHT JOIN clause to the query using the CouponI18n relation
+ * @method ChildCouponQuery innerJoinCouponI18n($relationAlias = null) Adds a INNER JOIN clause to the query using the CouponI18n relation
+ *
+ * @method ChildCouponQuery leftJoinCouponVersion($relationAlias = null) Adds a LEFT JOIN clause to the query using the CouponVersion relation
+ * @method ChildCouponQuery rightJoinCouponVersion($relationAlias = null) Adds a RIGHT JOIN clause to the query using the CouponVersion relation
+ * @method ChildCouponQuery innerJoinCouponVersion($relationAlias = null) Adds a INNER JOIN clause to the query using the CouponVersion relation
*
* @method ChildCoupon findOne(ConnectionInterface $con = null) Return the first ChildCoupon matching the query
* @method ChildCoupon findOneOrCreate(ConnectionInterface $con = null) Return the first ChildCoupon matching the query, or a new ChildCoupon object populated from the query conditions when no match is found
*
* @method ChildCoupon findOneById(int $id) Return the first ChildCoupon filtered by the id column
* @method ChildCoupon findOneByCode(string $code) Return the first ChildCoupon filtered by the code column
- * @method ChildCoupon findOneByAction(string $action) Return the first ChildCoupon filtered by the action column
+ * @method ChildCoupon findOneByType(string $type) Return the first ChildCoupon filtered by the type column
+ * @method ChildCoupon findOneByTitle(string $title) Return the first ChildCoupon filtered by the title column
+ * @method ChildCoupon findOneByShortDescription(string $short_description) Return the first ChildCoupon filtered by the short_description column
+ * @method ChildCoupon findOneByDescription(string $description) Return the first ChildCoupon filtered by the description column
* @method ChildCoupon findOneByValue(double $value) Return the first ChildCoupon filtered by the value column
- * @method ChildCoupon findOneByUsed(int $used) Return the first ChildCoupon filtered by the used column
- * @method ChildCoupon findOneByAvailableSince(string $available_since) Return the first ChildCoupon filtered by the available_since column
- * @method ChildCoupon findOneByDateLimit(string $date_limit) Return the first ChildCoupon filtered by the date_limit column
- * @method ChildCoupon findOneByActivate(int $activate) Return the first ChildCoupon filtered by the activate column
+ * @method ChildCoupon findOneByIsUsed(int $is_used) Return the first ChildCoupon filtered by the is_used column
+ * @method ChildCoupon findOneByIsEnabled(int $is_enabled) Return the first ChildCoupon filtered by the is_enabled column
+ * @method ChildCoupon findOneByExpirationDate(string $expiration_date) Return the first ChildCoupon filtered by the expiration_date column
+ * @method ChildCoupon findOneBySerializedRules(string $serialized_rules) Return the first ChildCoupon filtered by the serialized_rules column
* @method ChildCoupon findOneByCreatedAt(string $created_at) Return the first ChildCoupon filtered by the created_at column
* @method ChildCoupon findOneByUpdatedAt(string $updated_at) Return the first ChildCoupon filtered by the updated_at column
+ * @method ChildCoupon findOneByVersion(int $version) Return the first ChildCoupon filtered by the version column
*
* @method array findById(int $id) Return ChildCoupon objects filtered by the id column
* @method array findByCode(string $code) Return ChildCoupon objects filtered by the code column
- * @method array findByAction(string $action) Return ChildCoupon objects filtered by the action column
+ * @method array findByType(string $type) Return ChildCoupon objects filtered by the type column
+ * @method array findByTitle(string $title) Return ChildCoupon objects filtered by the title column
+ * @method array findByShortDescription(string $short_description) Return ChildCoupon objects filtered by the short_description column
+ * @method array findByDescription(string $description) Return ChildCoupon objects filtered by the description column
* @method array findByValue(double $value) Return ChildCoupon objects filtered by the value column
- * @method array findByUsed(int $used) Return ChildCoupon objects filtered by the used column
- * @method array findByAvailableSince(string $available_since) Return ChildCoupon objects filtered by the available_since column
- * @method array findByDateLimit(string $date_limit) Return ChildCoupon objects filtered by the date_limit column
- * @method array findByActivate(int $activate) Return ChildCoupon objects filtered by the activate column
+ * @method array findByIsUsed(int $is_used) Return ChildCoupon objects filtered by the is_used column
+ * @method array findByIsEnabled(int $is_enabled) Return ChildCoupon objects filtered by the is_enabled column
+ * @method array findByExpirationDate(string $expiration_date) Return ChildCoupon objects filtered by the expiration_date column
+ * @method array findBySerializedRules(string $serialized_rules) Return ChildCoupon objects filtered by the serialized_rules column
* @method array findByCreatedAt(string $created_at) Return ChildCoupon objects filtered by the created_at column
* @method array findByUpdatedAt(string $updated_at) Return ChildCoupon objects filtered by the updated_at column
+ * @method array findByVersion(int $version) Return ChildCoupon objects filtered by the version column
*
*/
abstract class CouponQuery extends ModelCriteria
{
+ // versionable behavior
+
+ /**
+ * Whether the versioning is enabled
+ */
+ static $isVersioningEnabled = true;
+
/**
* Initializes internal state of \Thelia\Model\Base\CouponQuery object.
*
@@ -163,7 +195,7 @@ abstract class CouponQuery extends ModelCriteria
*/
protected function findPkSimple($key, $con)
{
- $sql = 'SELECT ID, CODE, ACTION, VALUE, USED, AVAILABLE_SINCE, DATE_LIMIT, ACTIVATE, CREATED_AT, UPDATED_AT FROM coupon WHERE ID = :p0';
+ $sql = 'SELECT ID, CODE, TYPE, TITLE, SHORT_DESCRIPTION, DESCRIPTION, VALUE, IS_USED, IS_ENABLED, EXPIRATION_DATE, SERIALIZED_RULES, CREATED_AT, UPDATED_AT, VERSION FROM coupon WHERE ID = :p0';
try {
$stmt = $con->prepare($sql);
$stmt->bindValue(':p0', $key, PDO::PARAM_INT);
@@ -323,32 +355,119 @@ abstract class CouponQuery extends ModelCriteria
}
/**
- * Filter the query on the action column
+ * Filter the query on the type column
*
* Example usage:
*
- * $query->filterByAction('fooValue'); // WHERE action = 'fooValue'
- * $query->filterByAction('%fooValue%'); // WHERE action LIKE '%fooValue%'
+ * $query->filterByType('fooValue'); // WHERE type = 'fooValue'
+ * $query->filterByType('%fooValue%'); // WHERE type LIKE '%fooValue%'
*
*
- * @param string $action The value to use as filter.
+ * @param string $type The value to use as filter.
* Accepts wildcards (* and % trigger a LIKE)
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildCouponQuery The current query, for fluid interface
*/
- public function filterByAction($action = null, $comparison = null)
+ public function filterByType($type = null, $comparison = null)
{
if (null === $comparison) {
- if (is_array($action)) {
+ if (is_array($type)) {
$comparison = Criteria::IN;
- } elseif (preg_match('/[\%\*]/', $action)) {
- $action = str_replace('*', '%', $action);
+ } elseif (preg_match('/[\%\*]/', $type)) {
+ $type = str_replace('*', '%', $type);
$comparison = Criteria::LIKE;
}
}
- return $this->addUsingAlias(CouponTableMap::ACTION, $action, $comparison);
+ return $this->addUsingAlias(CouponTableMap::TYPE, $type, $comparison);
+ }
+
+ /**
+ * Filter the query on the title column
+ *
+ * Example usage:
+ *
+ * $query->filterByTitle('fooValue'); // WHERE title = 'fooValue'
+ * $query->filterByTitle('%fooValue%'); // WHERE title LIKE '%fooValue%'
+ *
+ *
+ * @param string $title The value to use as filter.
+ * Accepts wildcards (* and % trigger a LIKE)
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildCouponQuery The current query, for fluid interface
+ */
+ public function filterByTitle($title = null, $comparison = null)
+ {
+ if (null === $comparison) {
+ if (is_array($title)) {
+ $comparison = Criteria::IN;
+ } elseif (preg_match('/[\%\*]/', $title)) {
+ $title = str_replace('*', '%', $title);
+ $comparison = Criteria::LIKE;
+ }
+ }
+
+ return $this->addUsingAlias(CouponTableMap::TITLE, $title, $comparison);
+ }
+
+ /**
+ * Filter the query on the short_description column
+ *
+ * Example usage:
+ *
+ * $query->filterByShortDescription('fooValue'); // WHERE short_description = 'fooValue'
+ * $query->filterByShortDescription('%fooValue%'); // WHERE short_description LIKE '%fooValue%'
+ *
+ *
+ * @param string $shortDescription The value to use as filter.
+ * Accepts wildcards (* and % trigger a LIKE)
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildCouponQuery The current query, for fluid interface
+ */
+ public function filterByShortDescription($shortDescription = null, $comparison = null)
+ {
+ if (null === $comparison) {
+ if (is_array($shortDescription)) {
+ $comparison = Criteria::IN;
+ } elseif (preg_match('/[\%\*]/', $shortDescription)) {
+ $shortDescription = str_replace('*', '%', $shortDescription);
+ $comparison = Criteria::LIKE;
+ }
+ }
+
+ return $this->addUsingAlias(CouponTableMap::SHORT_DESCRIPTION, $shortDescription, $comparison);
+ }
+
+ /**
+ * Filter the query on the description column
+ *
+ * Example usage:
+ *
+ * $query->filterByDescription('fooValue'); // WHERE description = 'fooValue'
+ * $query->filterByDescription('%fooValue%'); // WHERE description LIKE '%fooValue%'
+ *
+ *
+ * @param string $description The value to use as filter.
+ * Accepts wildcards (* and % trigger a LIKE)
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildCouponQuery The current query, for fluid interface
+ */
+ public function filterByDescription($description = null, $comparison = null)
+ {
+ if (null === $comparison) {
+ if (is_array($description)) {
+ $comparison = Criteria::IN;
+ } elseif (preg_match('/[\%\*]/', $description)) {
+ $description = str_replace('*', '%', $description);
+ $comparison = Criteria::LIKE;
+ }
+ }
+
+ return $this->addUsingAlias(CouponTableMap::DESCRIPTION, $description, $comparison);
}
/**
@@ -393,16 +512,16 @@ abstract class CouponQuery extends ModelCriteria
}
/**
- * Filter the query on the used column
+ * Filter the query on the is_used column
*
* Example usage:
*
- * $query->filterByUsed(1234); // WHERE used = 1234
- * $query->filterByUsed(array(12, 34)); // WHERE used IN (12, 34)
- * $query->filterByUsed(array('min' => 12)); // WHERE used > 12
+ * $query->filterByIsUsed(1234); // WHERE is_used = 1234
+ * $query->filterByIsUsed(array(12, 34)); // WHERE is_used IN (12, 34)
+ * $query->filterByIsUsed(array('min' => 12)); // WHERE is_used > 12
*
*
- * @param mixed $used The value to use as filter.
+ * @param mixed $isUsed The value to use as filter.
* Use scalar values for equality.
* Use array values for in_array() equivalent.
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
@@ -410,16 +529,16 @@ abstract class CouponQuery extends ModelCriteria
*
* @return ChildCouponQuery The current query, for fluid interface
*/
- public function filterByUsed($used = null, $comparison = null)
+ public function filterByIsUsed($isUsed = null, $comparison = null)
{
- if (is_array($used)) {
+ if (is_array($isUsed)) {
$useMinMax = false;
- if (isset($used['min'])) {
- $this->addUsingAlias(CouponTableMap::USED, $used['min'], Criteria::GREATER_EQUAL);
+ if (isset($isUsed['min'])) {
+ $this->addUsingAlias(CouponTableMap::IS_USED, $isUsed['min'], Criteria::GREATER_EQUAL);
$useMinMax = true;
}
- if (isset($used['max'])) {
- $this->addUsingAlias(CouponTableMap::USED, $used['max'], Criteria::LESS_EQUAL);
+ if (isset($isUsed['max'])) {
+ $this->addUsingAlias(CouponTableMap::IS_USED, $isUsed['max'], Criteria::LESS_EQUAL);
$useMinMax = true;
}
if ($useMinMax) {
@@ -430,20 +549,61 @@ abstract class CouponQuery extends ModelCriteria
}
}
- return $this->addUsingAlias(CouponTableMap::USED, $used, $comparison);
+ return $this->addUsingAlias(CouponTableMap::IS_USED, $isUsed, $comparison);
}
/**
- * Filter the query on the available_since column
+ * Filter the query on the is_enabled column
*
* Example usage:
*
- * $query->filterByAvailableSince('2011-03-14'); // WHERE available_since = '2011-03-14'
- * $query->filterByAvailableSince('now'); // WHERE available_since = '2011-03-14'
- * $query->filterByAvailableSince(array('max' => 'yesterday')); // WHERE available_since > '2011-03-13'
+ * $query->filterByIsEnabled(1234); // WHERE is_enabled = 1234
+ * $query->filterByIsEnabled(array(12, 34)); // WHERE is_enabled IN (12, 34)
+ * $query->filterByIsEnabled(array('min' => 12)); // WHERE is_enabled > 12
*
*
- * @param mixed $availableSince The value to use as filter.
+ * @param mixed $isEnabled The value to use as filter.
+ * Use scalar values for equality.
+ * Use array values for in_array() equivalent.
+ * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildCouponQuery The current query, for fluid interface
+ */
+ public function filterByIsEnabled($isEnabled = null, $comparison = null)
+ {
+ if (is_array($isEnabled)) {
+ $useMinMax = false;
+ if (isset($isEnabled['min'])) {
+ $this->addUsingAlias(CouponTableMap::IS_ENABLED, $isEnabled['min'], Criteria::GREATER_EQUAL);
+ $useMinMax = true;
+ }
+ if (isset($isEnabled['max'])) {
+ $this->addUsingAlias(CouponTableMap::IS_ENABLED, $isEnabled['max'], Criteria::LESS_EQUAL);
+ $useMinMax = true;
+ }
+ if ($useMinMax) {
+ return $this;
+ }
+ if (null === $comparison) {
+ $comparison = Criteria::IN;
+ }
+ }
+
+ return $this->addUsingAlias(CouponTableMap::IS_ENABLED, $isEnabled, $comparison);
+ }
+
+ /**
+ * Filter the query on the expiration_date column
+ *
+ * Example usage:
+ *
+ * $query->filterByExpirationDate('2011-03-14'); // WHERE expiration_date = '2011-03-14'
+ * $query->filterByExpirationDate('now'); // WHERE expiration_date = '2011-03-14'
+ * $query->filterByExpirationDate(array('max' => 'yesterday')); // WHERE expiration_date > '2011-03-13'
+ *
+ *
+ * @param mixed $expirationDate The value to use as filter.
* Values can be integers (unix timestamps), DateTime objects, or strings.
* Empty strings are treated as NULL.
* Use scalar values for equality.
@@ -453,16 +613,16 @@ abstract class CouponQuery extends ModelCriteria
*
* @return ChildCouponQuery The current query, for fluid interface
*/
- public function filterByAvailableSince($availableSince = null, $comparison = null)
+ public function filterByExpirationDate($expirationDate = null, $comparison = null)
{
- if (is_array($availableSince)) {
+ if (is_array($expirationDate)) {
$useMinMax = false;
- if (isset($availableSince['min'])) {
- $this->addUsingAlias(CouponTableMap::AVAILABLE_SINCE, $availableSince['min'], Criteria::GREATER_EQUAL);
+ if (isset($expirationDate['min'])) {
+ $this->addUsingAlias(CouponTableMap::EXPIRATION_DATE, $expirationDate['min'], Criteria::GREATER_EQUAL);
$useMinMax = true;
}
- if (isset($availableSince['max'])) {
- $this->addUsingAlias(CouponTableMap::AVAILABLE_SINCE, $availableSince['max'], Criteria::LESS_EQUAL);
+ if (isset($expirationDate['max'])) {
+ $this->addUsingAlias(CouponTableMap::EXPIRATION_DATE, $expirationDate['max'], Criteria::LESS_EQUAL);
$useMinMax = true;
}
if ($useMinMax) {
@@ -473,91 +633,36 @@ abstract class CouponQuery extends ModelCriteria
}
}
- return $this->addUsingAlias(CouponTableMap::AVAILABLE_SINCE, $availableSince, $comparison);
+ return $this->addUsingAlias(CouponTableMap::EXPIRATION_DATE, $expirationDate, $comparison);
}
/**
- * Filter the query on the date_limit column
+ * Filter the query on the serialized_rules column
*
* Example usage:
*
- * $query->filterByDateLimit('2011-03-14'); // WHERE date_limit = '2011-03-14'
- * $query->filterByDateLimit('now'); // WHERE date_limit = '2011-03-14'
- * $query->filterByDateLimit(array('max' => 'yesterday')); // WHERE date_limit > '2011-03-13'
+ * $query->filterBySerializedRules('fooValue'); // WHERE serialized_rules = 'fooValue'
+ * $query->filterBySerializedRules('%fooValue%'); // WHERE serialized_rules LIKE '%fooValue%'
*
*
- * @param mixed $dateLimit The value to use as filter.
- * Values can be integers (unix timestamps), DateTime objects, or strings.
- * Empty strings are treated as NULL.
- * Use scalar values for equality.
- * Use array values for in_array() equivalent.
- * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
+ * @param string $serializedRules The value to use as filter.
+ * Accepts wildcards (* and % trigger a LIKE)
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildCouponQuery The current query, for fluid interface
*/
- public function filterByDateLimit($dateLimit = null, $comparison = null)
+ public function filterBySerializedRules($serializedRules = null, $comparison = null)
{
- if (is_array($dateLimit)) {
- $useMinMax = false;
- if (isset($dateLimit['min'])) {
- $this->addUsingAlias(CouponTableMap::DATE_LIMIT, $dateLimit['min'], Criteria::GREATER_EQUAL);
- $useMinMax = true;
- }
- if (isset($dateLimit['max'])) {
- $this->addUsingAlias(CouponTableMap::DATE_LIMIT, $dateLimit['max'], Criteria::LESS_EQUAL);
- $useMinMax = true;
- }
- if ($useMinMax) {
- return $this;
- }
- if (null === $comparison) {
+ if (null === $comparison) {
+ if (is_array($serializedRules)) {
$comparison = Criteria::IN;
+ } elseif (preg_match('/[\%\*]/', $serializedRules)) {
+ $serializedRules = str_replace('*', '%', $serializedRules);
+ $comparison = Criteria::LIKE;
}
}
- return $this->addUsingAlias(CouponTableMap::DATE_LIMIT, $dateLimit, $comparison);
- }
-
- /**
- * Filter the query on the activate column
- *
- * Example usage:
- *
- * $query->filterByActivate(1234); // WHERE activate = 1234
- * $query->filterByActivate(array(12, 34)); // WHERE activate IN (12, 34)
- * $query->filterByActivate(array('min' => 12)); // WHERE activate > 12
- *
- *
- * @param mixed $activate The value to use as filter.
- * Use scalar values for equality.
- * Use array values for in_array() equivalent.
- * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildCouponQuery The current query, for fluid interface
- */
- public function filterByActivate($activate = null, $comparison = null)
- {
- if (is_array($activate)) {
- $useMinMax = false;
- if (isset($activate['min'])) {
- $this->addUsingAlias(CouponTableMap::ACTIVATE, $activate['min'], Criteria::GREATER_EQUAL);
- $useMinMax = true;
- }
- if (isset($activate['max'])) {
- $this->addUsingAlias(CouponTableMap::ACTIVATE, $activate['max'], Criteria::LESS_EQUAL);
- $useMinMax = true;
- }
- if ($useMinMax) {
- return $this;
- }
- if (null === $comparison) {
- $comparison = Criteria::IN;
- }
- }
-
- return $this->addUsingAlias(CouponTableMap::ACTIVATE, $activate, $comparison);
+ return $this->addUsingAlias(CouponTableMap::SERIALIZED_RULES, $serializedRules, $comparison);
}
/**
@@ -647,40 +752,81 @@ abstract class CouponQuery extends ModelCriteria
}
/**
- * Filter the query by a related \Thelia\Model\CouponRule object
+ * Filter the query on the version column
*
- * @param \Thelia\Model\CouponRule|ObjectCollection $couponRule the related object to use as filter
+ * Example usage:
+ *
+ * $query->filterByVersion(1234); // WHERE version = 1234
+ * $query->filterByVersion(array(12, 34)); // WHERE version IN (12, 34)
+ * $query->filterByVersion(array('min' => 12)); // WHERE version > 12
+ *
+ *
+ * @param mixed $version The value to use as filter.
+ * Use scalar values for equality.
+ * Use array values for in_array() equivalent.
+ * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildCouponQuery The current query, for fluid interface
+ */
+ public function filterByVersion($version = null, $comparison = null)
+ {
+ if (is_array($version)) {
+ $useMinMax = false;
+ if (isset($version['min'])) {
+ $this->addUsingAlias(CouponTableMap::VERSION, $version['min'], Criteria::GREATER_EQUAL);
+ $useMinMax = true;
+ }
+ if (isset($version['max'])) {
+ $this->addUsingAlias(CouponTableMap::VERSION, $version['max'], Criteria::LESS_EQUAL);
+ $useMinMax = true;
+ }
+ if ($useMinMax) {
+ return $this;
+ }
+ if (null === $comparison) {
+ $comparison = Criteria::IN;
+ }
+ }
+
+ return $this->addUsingAlias(CouponTableMap::VERSION, $version, $comparison);
+ }
+
+ /**
+ * Filter the query by a related \Thelia\Model\CouponOrder object
+ *
+ * @param \Thelia\Model\CouponOrder|ObjectCollection $couponOrder the related object to use as filter
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
*
* @return ChildCouponQuery The current query, for fluid interface
*/
- public function filterByCouponRule($couponRule, $comparison = null)
+ public function filterByCouponOrder($couponOrder, $comparison = null)
{
- if ($couponRule instanceof \Thelia\Model\CouponRule) {
+ if ($couponOrder instanceof \Thelia\Model\CouponOrder) {
return $this
- ->addUsingAlias(CouponTableMap::ID, $couponRule->getCouponId(), $comparison);
- } elseif ($couponRule instanceof ObjectCollection) {
+ ->addUsingAlias(CouponTableMap::CODE, $couponOrder->getCode(), $comparison);
+ } elseif ($couponOrder instanceof ObjectCollection) {
return $this
- ->useCouponRuleQuery()
- ->filterByPrimaryKeys($couponRule->getPrimaryKeys())
+ ->useCouponOrderQuery()
+ ->filterByPrimaryKeys($couponOrder->getPrimaryKeys())
->endUse();
} else {
- throw new PropelException('filterByCouponRule() only accepts arguments of type \Thelia\Model\CouponRule or Collection');
+ throw new PropelException('filterByCouponOrder() only accepts arguments of type \Thelia\Model\CouponOrder or Collection');
}
}
/**
- * Adds a JOIN clause to the query using the CouponRule relation
+ * Adds a JOIN clause to the query using the CouponOrder relation
*
* @param string $relationAlias optional alias for the relation
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
*
* @return ChildCouponQuery The current query, for fluid interface
*/
- public function joinCouponRule($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ public function joinCouponOrder($relationAlias = null, $joinType = Criteria::INNER_JOIN)
{
$tableMap = $this->getTableMap();
- $relationMap = $tableMap->getRelation('CouponRule');
+ $relationMap = $tableMap->getRelation('CouponOrder');
// create a ModelJoin object for this join
$join = new ModelJoin();
@@ -695,14 +841,14 @@ abstract class CouponQuery extends ModelCriteria
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
$this->addJoinObject($join, $relationAlias);
} else {
- $this->addJoinObject($join, 'CouponRule');
+ $this->addJoinObject($join, 'CouponOrder');
}
return $this;
}
/**
- * Use the CouponRule relation CouponRule object
+ * Use the CouponOrder relation CouponOrder object
*
* @see useQuery()
*
@@ -710,13 +856,159 @@ abstract class CouponQuery extends ModelCriteria
* to be used as main alias in the secondary query
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
*
- * @return \Thelia\Model\CouponRuleQuery A secondary query class using the current class as primary query
+ * @return \Thelia\Model\CouponOrderQuery A secondary query class using the current class as primary query
*/
- public function useCouponRuleQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ public function useCouponOrderQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
{
return $this
- ->joinCouponRule($relationAlias, $joinType)
- ->useQuery($relationAlias ? $relationAlias : 'CouponRule', '\Thelia\Model\CouponRuleQuery');
+ ->joinCouponOrder($relationAlias, $joinType)
+ ->useQuery($relationAlias ? $relationAlias : 'CouponOrder', '\Thelia\Model\CouponOrderQuery');
+ }
+
+ /**
+ * Filter the query by a related \Thelia\Model\CouponI18n object
+ *
+ * @param \Thelia\Model\CouponI18n|ObjectCollection $couponI18n the related object to use as filter
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildCouponQuery The current query, for fluid interface
+ */
+ public function filterByCouponI18n($couponI18n, $comparison = null)
+ {
+ if ($couponI18n instanceof \Thelia\Model\CouponI18n) {
+ return $this
+ ->addUsingAlias(CouponTableMap::ID, $couponI18n->getId(), $comparison);
+ } elseif ($couponI18n instanceof ObjectCollection) {
+ return $this
+ ->useCouponI18nQuery()
+ ->filterByPrimaryKeys($couponI18n->getPrimaryKeys())
+ ->endUse();
+ } else {
+ throw new PropelException('filterByCouponI18n() only accepts arguments of type \Thelia\Model\CouponI18n or Collection');
+ }
+ }
+
+ /**
+ * Adds a JOIN clause to the query using the CouponI18n relation
+ *
+ * @param string $relationAlias optional alias for the relation
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return ChildCouponQuery The current query, for fluid interface
+ */
+ public function joinCouponI18n($relationAlias = null, $joinType = 'LEFT JOIN')
+ {
+ $tableMap = $this->getTableMap();
+ $relationMap = $tableMap->getRelation('CouponI18n');
+
+ // create a ModelJoin object for this join
+ $join = new ModelJoin();
+ $join->setJoinType($joinType);
+ $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
+ if ($previousJoin = $this->getPreviousJoin()) {
+ $join->setPreviousJoin($previousJoin);
+ }
+
+ // add the ModelJoin to the current object
+ if ($relationAlias) {
+ $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
+ $this->addJoinObject($join, $relationAlias);
+ } else {
+ $this->addJoinObject($join, 'CouponI18n');
+ }
+
+ return $this;
+ }
+
+ /**
+ * Use the CouponI18n relation CouponI18n object
+ *
+ * @see useQuery()
+ *
+ * @param string $relationAlias optional alias for the relation,
+ * to be used as main alias in the secondary query
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return \Thelia\Model\CouponI18nQuery A secondary query class using the current class as primary query
+ */
+ public function useCouponI18nQuery($relationAlias = null, $joinType = 'LEFT JOIN')
+ {
+ return $this
+ ->joinCouponI18n($relationAlias, $joinType)
+ ->useQuery($relationAlias ? $relationAlias : 'CouponI18n', '\Thelia\Model\CouponI18nQuery');
+ }
+
+ /**
+ * Filter the query by a related \Thelia\Model\CouponVersion object
+ *
+ * @param \Thelia\Model\CouponVersion|ObjectCollection $couponVersion the related object to use as filter
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildCouponQuery The current query, for fluid interface
+ */
+ public function filterByCouponVersion($couponVersion, $comparison = null)
+ {
+ if ($couponVersion instanceof \Thelia\Model\CouponVersion) {
+ return $this
+ ->addUsingAlias(CouponTableMap::ID, $couponVersion->getId(), $comparison);
+ } elseif ($couponVersion instanceof ObjectCollection) {
+ return $this
+ ->useCouponVersionQuery()
+ ->filterByPrimaryKeys($couponVersion->getPrimaryKeys())
+ ->endUse();
+ } else {
+ throw new PropelException('filterByCouponVersion() only accepts arguments of type \Thelia\Model\CouponVersion or Collection');
+ }
+ }
+
+ /**
+ * Adds a JOIN clause to the query using the CouponVersion relation
+ *
+ * @param string $relationAlias optional alias for the relation
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return ChildCouponQuery The current query, for fluid interface
+ */
+ public function joinCouponVersion($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ $tableMap = $this->getTableMap();
+ $relationMap = $tableMap->getRelation('CouponVersion');
+
+ // create a ModelJoin object for this join
+ $join = new ModelJoin();
+ $join->setJoinType($joinType);
+ $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
+ if ($previousJoin = $this->getPreviousJoin()) {
+ $join->setPreviousJoin($previousJoin);
+ }
+
+ // add the ModelJoin to the current object
+ if ($relationAlias) {
+ $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
+ $this->addJoinObject($join, $relationAlias);
+ } else {
+ $this->addJoinObject($join, 'CouponVersion');
+ }
+
+ return $this;
+ }
+
+ /**
+ * Use the CouponVersion relation CouponVersion object
+ *
+ * @see useQuery()
+ *
+ * @param string $relationAlias optional alias for the relation,
+ * to be used as main alias in the secondary query
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return \Thelia\Model\CouponVersionQuery A secondary query class using the current class as primary query
+ */
+ public function useCouponVersionQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ return $this
+ ->joinCouponVersion($relationAlias, $joinType)
+ ->useQuery($relationAlias ? $relationAlias : 'CouponVersion', '\Thelia\Model\CouponVersionQuery');
}
/**
@@ -876,4 +1168,89 @@ abstract class CouponQuery extends ModelCriteria
return $this->addAscendingOrderByColumn(CouponTableMap::CREATED_AT);
}
+ // i18n behavior
+
+ /**
+ * Adds a JOIN clause to the query using the i18n relation
+ *
+ * @param string $locale Locale to use for the join condition, e.g. 'fr_FR'
+ * @param string $relationAlias optional alias for the relation
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'. Defaults to left join.
+ *
+ * @return ChildCouponQuery The current query, for fluid interface
+ */
+ public function joinI18n($locale = 'en_EN', $relationAlias = null, $joinType = Criteria::LEFT_JOIN)
+ {
+ $relationName = $relationAlias ? $relationAlias : 'CouponI18n';
+
+ return $this
+ ->joinCouponI18n($relationAlias, $joinType)
+ ->addJoinCondition($relationName, $relationName . '.Locale = ?', $locale);
+ }
+
+ /**
+ * Adds a JOIN clause to the query and hydrates the related I18n object.
+ * Shortcut for $c->joinI18n($locale)->with()
+ *
+ * @param string $locale Locale to use for the join condition, e.g. 'fr_FR'
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'. Defaults to left join.
+ *
+ * @return ChildCouponQuery The current query, for fluid interface
+ */
+ public function joinWithI18n($locale = 'en_EN', $joinType = Criteria::LEFT_JOIN)
+ {
+ $this
+ ->joinI18n($locale, null, $joinType)
+ ->with('CouponI18n');
+ $this->with['CouponI18n']->setIsWithOneToMany(false);
+
+ return $this;
+ }
+
+ /**
+ * Use the I18n relation query object
+ *
+ * @see useQuery()
+ *
+ * @param string $locale Locale to use for the join condition, e.g. 'fr_FR'
+ * @param string $relationAlias optional alias for the relation
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'. Defaults to left join.
+ *
+ * @return ChildCouponI18nQuery A secondary query class using the current class as primary query
+ */
+ public function useI18nQuery($locale = 'en_EN', $relationAlias = null, $joinType = Criteria::LEFT_JOIN)
+ {
+ return $this
+ ->joinI18n($locale, $relationAlias, $joinType)
+ ->useQuery($relationAlias ? $relationAlias : 'CouponI18n', '\Thelia\Model\CouponI18nQuery');
+ }
+
+ // versionable behavior
+
+ /**
+ * Checks whether versioning is enabled
+ *
+ * @return boolean
+ */
+ static public function isVersioningEnabled()
+ {
+ return self::$isVersioningEnabled;
+ }
+
+ /**
+ * Enables versioning
+ */
+ static public function enableVersioning()
+ {
+ self::$isVersioningEnabled = true;
+ }
+
+ /**
+ * Disables versioning
+ */
+ static public function disableVersioning()
+ {
+ self::$isVersioningEnabled = false;
+ }
+
} // CouponQuery
diff --git a/core/lib/Thelia/Model/Base/Order.php b/core/lib/Thelia/Model/Base/Order.php
index 6932ec6c4..3c47ce415 100755
--- a/core/lib/Thelia/Model/Base/Order.php
+++ b/core/lib/Thelia/Model/Base/Order.php
@@ -2842,6 +2842,31 @@ abstract class Order implements ActiveRecordInterface
return $this;
}
+
+ /**
+ * If this collection has already been initialized with
+ * an identical criteria, it returns the collection.
+ * Otherwise if this Order is new, it will return
+ * an empty collection; or if this Order has previously
+ * been saved, it will retrieve related CouponOrders from storage.
+ *
+ * This method is protected by default in order to keep the public
+ * api reasonable. You can provide public methods for those you
+ * actually need in Order.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
+ * @return Collection|ChildCouponOrder[] List of ChildCouponOrder objects
+ */
+ public function getCouponOrdersJoinCoupon($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
+ {
+ $query = ChildCouponOrderQuery::create(null, $criteria);
+ $query->joinWith('Coupon', $joinBehavior);
+
+ return $this->getCouponOrders($query, $con);
+ }
+
/**
* Clears the current object and sets all attributes to their default values
*/
diff --git a/core/lib/Thelia/Model/Base/Product.php b/core/lib/Thelia/Model/Base/Product.php
index 867f7dd50..e66c2fe17 100755
--- a/core/lib/Thelia/Model/Base/Product.php
+++ b/core/lib/Thelia/Model/Base/Product.php
@@ -23,11 +23,11 @@ use Thelia\Model\CartItem as ChildCartItem;
use Thelia\Model\CartItemQuery as ChildCartItemQuery;
use Thelia\Model\Category as ChildCategory;
use Thelia\Model\CategoryQuery as ChildCategoryQuery;
-use Thelia\Model\ContentAssoc as ChildContentAssoc;
-use Thelia\Model\ContentAssocQuery as ChildContentAssocQuery;
use Thelia\Model\FeatureProduct as ChildFeatureProduct;
use Thelia\Model\FeatureProductQuery as ChildFeatureProductQuery;
use Thelia\Model\Product as ChildProduct;
+use Thelia\Model\ProductAssociatedContent as ChildProductAssociatedContent;
+use Thelia\Model\ProductAssociatedContentQuery as ChildProductAssociatedContentQuery;
use Thelia\Model\ProductCategory as ChildProductCategory;
use Thelia\Model\ProductCategoryQuery as ChildProductCategoryQuery;
use Thelia\Model\ProductDocument as ChildProductDocument;
@@ -167,12 +167,6 @@ abstract class Product implements ActiveRecordInterface
protected $collProductSaleElementss;
protected $collProductSaleElementssPartial;
- /**
- * @var ObjectCollection|ChildContentAssoc[] Collection to store aggregation of ChildContentAssoc objects.
- */
- protected $collContentAssocs;
- protected $collContentAssocsPartial;
-
/**
* @var ObjectCollection|ChildProductImage[] Collection to store aggregation of ChildProductImage objects.
*/
@@ -209,6 +203,12 @@ abstract class Product implements ActiveRecordInterface
protected $collCartItems;
protected $collCartItemsPartial;
+ /**
+ * @var ObjectCollection|ChildProductAssociatedContent[] Collection to store aggregation of ChildProductAssociatedContent objects.
+ */
+ protected $collProductAssociatedContents;
+ protected $collProductAssociatedContentsPartial;
+
/**
* @var ObjectCollection|ChildProductI18n[] Collection to store aggregation of ChildProductI18n objects.
*/
@@ -302,12 +302,6 @@ abstract class Product implements ActiveRecordInterface
*/
protected $productSaleElementssScheduledForDeletion = null;
- /**
- * An array of objects scheduled for deletion.
- * @var ObjectCollection
- */
- protected $contentAssocsScheduledForDeletion = null;
-
/**
* An array of objects scheduled for deletion.
* @var ObjectCollection
@@ -344,6 +338,12 @@ abstract class Product implements ActiveRecordInterface
*/
protected $cartItemsScheduledForDeletion = null;
+ /**
+ * An array of objects scheduled for deletion.
+ * @var ObjectCollection
+ */
+ protected $productAssociatedContentsScheduledForDeletion = null;
+
/**
* An array of objects scheduled for deletion.
* @var ObjectCollection
@@ -1137,8 +1137,6 @@ abstract class Product implements ActiveRecordInterface
$this->collProductSaleElementss = null;
- $this->collContentAssocs = null;
-
$this->collProductImages = null;
$this->collProductDocuments = null;
@@ -1151,6 +1149,8 @@ abstract class Product implements ActiveRecordInterface
$this->collCartItems = null;
+ $this->collProductAssociatedContents = null;
+
$this->collProductI18ns = null;
$this->collProductVersions = null;
@@ -1447,23 +1447,6 @@ abstract class Product implements ActiveRecordInterface
}
}
- if ($this->contentAssocsScheduledForDeletion !== null) {
- if (!$this->contentAssocsScheduledForDeletion->isEmpty()) {
- \Thelia\Model\ContentAssocQuery::create()
- ->filterByPrimaryKeys($this->contentAssocsScheduledForDeletion->getPrimaryKeys(false))
- ->delete($con);
- $this->contentAssocsScheduledForDeletion = null;
- }
- }
-
- if ($this->collContentAssocs !== null) {
- foreach ($this->collContentAssocs as $referrerFK) {
- if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
- $affectedRows += $referrerFK->save($con);
- }
- }
- }
-
if ($this->productImagesScheduledForDeletion !== null) {
if (!$this->productImagesScheduledForDeletion->isEmpty()) {
\Thelia\Model\ProductImageQuery::create()
@@ -1566,6 +1549,23 @@ abstract class Product implements ActiveRecordInterface
}
}
+ if ($this->productAssociatedContentsScheduledForDeletion !== null) {
+ if (!$this->productAssociatedContentsScheduledForDeletion->isEmpty()) {
+ \Thelia\Model\ProductAssociatedContentQuery::create()
+ ->filterByPrimaryKeys($this->productAssociatedContentsScheduledForDeletion->getPrimaryKeys(false))
+ ->delete($con);
+ $this->productAssociatedContentsScheduledForDeletion = null;
+ }
+ }
+
+ if ($this->collProductAssociatedContents !== null) {
+ foreach ($this->collProductAssociatedContents as $referrerFK) {
+ if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
+ $affectedRows += $referrerFK->save($con);
+ }
+ }
+ }
+
if ($this->productI18nsScheduledForDeletion !== null) {
if (!$this->productI18nsScheduledForDeletion->isEmpty()) {
\Thelia\Model\ProductI18nQuery::create()
@@ -1848,9 +1848,6 @@ abstract class Product implements ActiveRecordInterface
if (null !== $this->collProductSaleElementss) {
$result['ProductSaleElementss'] = $this->collProductSaleElementss->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
- if (null !== $this->collContentAssocs) {
- $result['ContentAssocs'] = $this->collContentAssocs->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
- }
if (null !== $this->collProductImages) {
$result['ProductImages'] = $this->collProductImages->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
@@ -1869,6 +1866,9 @@ abstract class Product implements ActiveRecordInterface
if (null !== $this->collCartItems) {
$result['CartItems'] = $this->collCartItems->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
+ if (null !== $this->collProductAssociatedContents) {
+ $result['ProductAssociatedContents'] = $this->collProductAssociatedContents->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
+ }
if (null !== $this->collProductI18ns) {
$result['ProductI18ns'] = $this->collProductI18ns->toArray(null, true, $keyType, $includeLazyLoadColumns, $alreadyDumpedObjects);
}
@@ -2090,12 +2090,6 @@ abstract class Product implements ActiveRecordInterface
}
}
- foreach ($this->getContentAssocs() as $relObj) {
- if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
- $copyObj->addContentAssoc($relObj->copy($deepCopy));
- }
- }
-
foreach ($this->getProductImages() as $relObj) {
if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
$copyObj->addProductImage($relObj->copy($deepCopy));
@@ -2132,6 +2126,12 @@ abstract class Product implements ActiveRecordInterface
}
}
+ foreach ($this->getProductAssociatedContents() as $relObj) {
+ if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
+ $copyObj->addProductAssociatedContent($relObj->copy($deepCopy));
+ }
+ }
+
foreach ($this->getProductI18ns() as $relObj) {
if ($relObj !== $this) { // ensure that we don't try to copy a reference to ourselves
$copyObj->addProductI18n($relObj->copy($deepCopy));
@@ -2245,9 +2245,6 @@ abstract class Product implements ActiveRecordInterface
if ('ProductSaleElements' == $relationName) {
return $this->initProductSaleElementss();
}
- if ('ContentAssoc' == $relationName) {
- return $this->initContentAssocs();
- }
if ('ProductImage' == $relationName) {
return $this->initProductImages();
}
@@ -2266,6 +2263,9 @@ abstract class Product implements ActiveRecordInterface
if ('CartItem' == $relationName) {
return $this->initCartItems();
}
+ if ('ProductAssociatedContent' == $relationName) {
+ return $this->initProductAssociatedContents();
+ }
if ('ProductI18n' == $relationName) {
return $this->initProductI18ns();
}
@@ -3006,274 +3006,6 @@ abstract class Product implements ActiveRecordInterface
return $this;
}
- /**
- * Clears out the collContentAssocs collection
- *
- * This does not modify the database; however, it will remove any associated objects, causing
- * them to be refetched by subsequent calls to accessor method.
- *
- * @return void
- * @see addContentAssocs()
- */
- public function clearContentAssocs()
- {
- $this->collContentAssocs = null; // important to set this to NULL since that means it is uninitialized
- }
-
- /**
- * Reset is the collContentAssocs collection loaded partially.
- */
- public function resetPartialContentAssocs($v = true)
- {
- $this->collContentAssocsPartial = $v;
- }
-
- /**
- * Initializes the collContentAssocs collection.
- *
- * By default this just sets the collContentAssocs collection to an empty array (like clearcollContentAssocs());
- * however, you may wish to override this method in your stub class to provide setting appropriate
- * to your application -- for example, setting the initial array to the values stored in database.
- *
- * @param boolean $overrideExisting If set to true, the method call initializes
- * the collection even if it is not empty
- *
- * @return void
- */
- public function initContentAssocs($overrideExisting = true)
- {
- if (null !== $this->collContentAssocs && !$overrideExisting) {
- return;
- }
- $this->collContentAssocs = new ObjectCollection();
- $this->collContentAssocs->setModel('\Thelia\Model\ContentAssoc');
- }
-
- /**
- * Gets an array of ChildContentAssoc objects which contain a foreign key that references this object.
- *
- * If the $criteria is not null, it is used to always fetch the results from the database.
- * Otherwise the results are fetched from the database the first time, then cached.
- * Next time the same method is called without $criteria, the cached collection is returned.
- * If this ChildProduct is new, it will return
- * an empty collection or the current collection; the criteria is ignored on a new object.
- *
- * @param Criteria $criteria optional Criteria object to narrow the query
- * @param ConnectionInterface $con optional connection object
- * @return Collection|ChildContentAssoc[] List of ChildContentAssoc objects
- * @throws PropelException
- */
- public function getContentAssocs($criteria = null, ConnectionInterface $con = null)
- {
- $partial = $this->collContentAssocsPartial && !$this->isNew();
- if (null === $this->collContentAssocs || null !== $criteria || $partial) {
- if ($this->isNew() && null === $this->collContentAssocs) {
- // return empty collection
- $this->initContentAssocs();
- } else {
- $collContentAssocs = ChildContentAssocQuery::create(null, $criteria)
- ->filterByProduct($this)
- ->find($con);
-
- if (null !== $criteria) {
- if (false !== $this->collContentAssocsPartial && count($collContentAssocs)) {
- $this->initContentAssocs(false);
-
- foreach ($collContentAssocs as $obj) {
- if (false == $this->collContentAssocs->contains($obj)) {
- $this->collContentAssocs->append($obj);
- }
- }
-
- $this->collContentAssocsPartial = true;
- }
-
- $collContentAssocs->getInternalIterator()->rewind();
-
- return $collContentAssocs;
- }
-
- if ($partial && $this->collContentAssocs) {
- foreach ($this->collContentAssocs as $obj) {
- if ($obj->isNew()) {
- $collContentAssocs[] = $obj;
- }
- }
- }
-
- $this->collContentAssocs = $collContentAssocs;
- $this->collContentAssocsPartial = false;
- }
- }
-
- return $this->collContentAssocs;
- }
-
- /**
- * Sets a collection of ContentAssoc objects related by a one-to-many relationship
- * to the current object.
- * It will also schedule objects for deletion based on a diff between old objects (aka persisted)
- * and new objects from the given Propel collection.
- *
- * @param Collection $contentAssocs A Propel collection.
- * @param ConnectionInterface $con Optional connection object
- * @return ChildProduct The current object (for fluent API support)
- */
- public function setContentAssocs(Collection $contentAssocs, ConnectionInterface $con = null)
- {
- $contentAssocsToDelete = $this->getContentAssocs(new Criteria(), $con)->diff($contentAssocs);
-
-
- $this->contentAssocsScheduledForDeletion = $contentAssocsToDelete;
-
- foreach ($contentAssocsToDelete as $contentAssocRemoved) {
- $contentAssocRemoved->setProduct(null);
- }
-
- $this->collContentAssocs = null;
- foreach ($contentAssocs as $contentAssoc) {
- $this->addContentAssoc($contentAssoc);
- }
-
- $this->collContentAssocs = $contentAssocs;
- $this->collContentAssocsPartial = false;
-
- return $this;
- }
-
- /**
- * Returns the number of related ContentAssoc objects.
- *
- * @param Criteria $criteria
- * @param boolean $distinct
- * @param ConnectionInterface $con
- * @return int Count of related ContentAssoc objects.
- * @throws PropelException
- */
- public function countContentAssocs(Criteria $criteria = null, $distinct = false, ConnectionInterface $con = null)
- {
- $partial = $this->collContentAssocsPartial && !$this->isNew();
- if (null === $this->collContentAssocs || null !== $criteria || $partial) {
- if ($this->isNew() && null === $this->collContentAssocs) {
- return 0;
- }
-
- if ($partial && !$criteria) {
- return count($this->getContentAssocs());
- }
-
- $query = ChildContentAssocQuery::create(null, $criteria);
- if ($distinct) {
- $query->distinct();
- }
-
- return $query
- ->filterByProduct($this)
- ->count($con);
- }
-
- return count($this->collContentAssocs);
- }
-
- /**
- * Method called to associate a ChildContentAssoc object to this object
- * through the ChildContentAssoc foreign key attribute.
- *
- * @param ChildContentAssoc $l ChildContentAssoc
- * @return \Thelia\Model\Product The current object (for fluent API support)
- */
- public function addContentAssoc(ChildContentAssoc $l)
- {
- if ($this->collContentAssocs === null) {
- $this->initContentAssocs();
- $this->collContentAssocsPartial = true;
- }
-
- if (!in_array($l, $this->collContentAssocs->getArrayCopy(), true)) { // only add it if the **same** object is not already associated
- $this->doAddContentAssoc($l);
- }
-
- return $this;
- }
-
- /**
- * @param ContentAssoc $contentAssoc The contentAssoc object to add.
- */
- protected function doAddContentAssoc($contentAssoc)
- {
- $this->collContentAssocs[]= $contentAssoc;
- $contentAssoc->setProduct($this);
- }
-
- /**
- * @param ContentAssoc $contentAssoc The contentAssoc object to remove.
- * @return ChildProduct The current object (for fluent API support)
- */
- public function removeContentAssoc($contentAssoc)
- {
- if ($this->getContentAssocs()->contains($contentAssoc)) {
- $this->collContentAssocs->remove($this->collContentAssocs->search($contentAssoc));
- if (null === $this->contentAssocsScheduledForDeletion) {
- $this->contentAssocsScheduledForDeletion = clone $this->collContentAssocs;
- $this->contentAssocsScheduledForDeletion->clear();
- }
- $this->contentAssocsScheduledForDeletion[]= $contentAssoc;
- $contentAssoc->setProduct(null);
- }
-
- return $this;
- }
-
-
- /**
- * If this collection has already been initialized with
- * an identical criteria, it returns the collection.
- * Otherwise if this Product is new, it will return
- * an empty collection; or if this Product has previously
- * been saved, it will retrieve related ContentAssocs from storage.
- *
- * This method is protected by default in order to keep the public
- * api reasonable. You can provide public methods for those you
- * actually need in Product.
- *
- * @param Criteria $criteria optional Criteria object to narrow the query
- * @param ConnectionInterface $con optional connection object
- * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
- * @return Collection|ChildContentAssoc[] List of ChildContentAssoc objects
- */
- public function getContentAssocsJoinCategory($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
- {
- $query = ChildContentAssocQuery::create(null, $criteria);
- $query->joinWith('Category', $joinBehavior);
-
- return $this->getContentAssocs($query, $con);
- }
-
-
- /**
- * If this collection has already been initialized with
- * an identical criteria, it returns the collection.
- * Otherwise if this Product is new, it will return
- * an empty collection; or if this Product has previously
- * been saved, it will retrieve related ContentAssocs from storage.
- *
- * This method is protected by default in order to keep the public
- * api reasonable. You can provide public methods for those you
- * actually need in Product.
- *
- * @param Criteria $criteria optional Criteria object to narrow the query
- * @param ConnectionInterface $con optional connection object
- * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
- * @return Collection|ChildContentAssoc[] List of ChildContentAssoc objects
- */
- public function getContentAssocsJoinContent($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
- {
- $query = ChildContentAssocQuery::create(null, $criteria);
- $query->joinWith('Content', $joinBehavior);
-
- return $this->getContentAssocs($query, $con);
- }
-
/**
* Clears out the collProductImages collection
*
@@ -4707,6 +4439,249 @@ abstract class Product implements ActiveRecordInterface
return $this->getCartItems($query, $con);
}
+ /**
+ * Clears out the collProductAssociatedContents collection
+ *
+ * This does not modify the database; however, it will remove any associated objects, causing
+ * them to be refetched by subsequent calls to accessor method.
+ *
+ * @return void
+ * @see addProductAssociatedContents()
+ */
+ public function clearProductAssociatedContents()
+ {
+ $this->collProductAssociatedContents = null; // important to set this to NULL since that means it is uninitialized
+ }
+
+ /**
+ * Reset is the collProductAssociatedContents collection loaded partially.
+ */
+ public function resetPartialProductAssociatedContents($v = true)
+ {
+ $this->collProductAssociatedContentsPartial = $v;
+ }
+
+ /**
+ * Initializes the collProductAssociatedContents collection.
+ *
+ * By default this just sets the collProductAssociatedContents collection to an empty array (like clearcollProductAssociatedContents());
+ * however, you may wish to override this method in your stub class to provide setting appropriate
+ * to your application -- for example, setting the initial array to the values stored in database.
+ *
+ * @param boolean $overrideExisting If set to true, the method call initializes
+ * the collection even if it is not empty
+ *
+ * @return void
+ */
+ public function initProductAssociatedContents($overrideExisting = true)
+ {
+ if (null !== $this->collProductAssociatedContents && !$overrideExisting) {
+ return;
+ }
+ $this->collProductAssociatedContents = new ObjectCollection();
+ $this->collProductAssociatedContents->setModel('\Thelia\Model\ProductAssociatedContent');
+ }
+
+ /**
+ * Gets an array of ChildProductAssociatedContent objects which contain a foreign key that references this object.
+ *
+ * If the $criteria is not null, it is used to always fetch the results from the database.
+ * Otherwise the results are fetched from the database the first time, then cached.
+ * Next time the same method is called without $criteria, the cached collection is returned.
+ * If this ChildProduct is new, it will return
+ * an empty collection or the current collection; the criteria is ignored on a new object.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @return Collection|ChildProductAssociatedContent[] List of ChildProductAssociatedContent objects
+ * @throws PropelException
+ */
+ public function getProductAssociatedContents($criteria = null, ConnectionInterface $con = null)
+ {
+ $partial = $this->collProductAssociatedContentsPartial && !$this->isNew();
+ if (null === $this->collProductAssociatedContents || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collProductAssociatedContents) {
+ // return empty collection
+ $this->initProductAssociatedContents();
+ } else {
+ $collProductAssociatedContents = ChildProductAssociatedContentQuery::create(null, $criteria)
+ ->filterByProduct($this)
+ ->find($con);
+
+ if (null !== $criteria) {
+ if (false !== $this->collProductAssociatedContentsPartial && count($collProductAssociatedContents)) {
+ $this->initProductAssociatedContents(false);
+
+ foreach ($collProductAssociatedContents as $obj) {
+ if (false == $this->collProductAssociatedContents->contains($obj)) {
+ $this->collProductAssociatedContents->append($obj);
+ }
+ }
+
+ $this->collProductAssociatedContentsPartial = true;
+ }
+
+ $collProductAssociatedContents->getInternalIterator()->rewind();
+
+ return $collProductAssociatedContents;
+ }
+
+ if ($partial && $this->collProductAssociatedContents) {
+ foreach ($this->collProductAssociatedContents as $obj) {
+ if ($obj->isNew()) {
+ $collProductAssociatedContents[] = $obj;
+ }
+ }
+ }
+
+ $this->collProductAssociatedContents = $collProductAssociatedContents;
+ $this->collProductAssociatedContentsPartial = false;
+ }
+ }
+
+ return $this->collProductAssociatedContents;
+ }
+
+ /**
+ * Sets a collection of ProductAssociatedContent objects related by a one-to-many relationship
+ * to the current object.
+ * It will also schedule objects for deletion based on a diff between old objects (aka persisted)
+ * and new objects from the given Propel collection.
+ *
+ * @param Collection $productAssociatedContents A Propel collection.
+ * @param ConnectionInterface $con Optional connection object
+ * @return ChildProduct The current object (for fluent API support)
+ */
+ public function setProductAssociatedContents(Collection $productAssociatedContents, ConnectionInterface $con = null)
+ {
+ $productAssociatedContentsToDelete = $this->getProductAssociatedContents(new Criteria(), $con)->diff($productAssociatedContents);
+
+
+ $this->productAssociatedContentsScheduledForDeletion = $productAssociatedContentsToDelete;
+
+ foreach ($productAssociatedContentsToDelete as $productAssociatedContentRemoved) {
+ $productAssociatedContentRemoved->setProduct(null);
+ }
+
+ $this->collProductAssociatedContents = null;
+ foreach ($productAssociatedContents as $productAssociatedContent) {
+ $this->addProductAssociatedContent($productAssociatedContent);
+ }
+
+ $this->collProductAssociatedContents = $productAssociatedContents;
+ $this->collProductAssociatedContentsPartial = false;
+
+ return $this;
+ }
+
+ /**
+ * Returns the number of related ProductAssociatedContent objects.
+ *
+ * @param Criteria $criteria
+ * @param boolean $distinct
+ * @param ConnectionInterface $con
+ * @return int Count of related ProductAssociatedContent objects.
+ * @throws PropelException
+ */
+ public function countProductAssociatedContents(Criteria $criteria = null, $distinct = false, ConnectionInterface $con = null)
+ {
+ $partial = $this->collProductAssociatedContentsPartial && !$this->isNew();
+ if (null === $this->collProductAssociatedContents || null !== $criteria || $partial) {
+ if ($this->isNew() && null === $this->collProductAssociatedContents) {
+ return 0;
+ }
+
+ if ($partial && !$criteria) {
+ return count($this->getProductAssociatedContents());
+ }
+
+ $query = ChildProductAssociatedContentQuery::create(null, $criteria);
+ if ($distinct) {
+ $query->distinct();
+ }
+
+ return $query
+ ->filterByProduct($this)
+ ->count($con);
+ }
+
+ return count($this->collProductAssociatedContents);
+ }
+
+ /**
+ * Method called to associate a ChildProductAssociatedContent object to this object
+ * through the ChildProductAssociatedContent foreign key attribute.
+ *
+ * @param ChildProductAssociatedContent $l ChildProductAssociatedContent
+ * @return \Thelia\Model\Product The current object (for fluent API support)
+ */
+ public function addProductAssociatedContent(ChildProductAssociatedContent $l)
+ {
+ if ($this->collProductAssociatedContents === null) {
+ $this->initProductAssociatedContents();
+ $this->collProductAssociatedContentsPartial = true;
+ }
+
+ if (!in_array($l, $this->collProductAssociatedContents->getArrayCopy(), true)) { // only add it if the **same** object is not already associated
+ $this->doAddProductAssociatedContent($l);
+ }
+
+ return $this;
+ }
+
+ /**
+ * @param ProductAssociatedContent $productAssociatedContent The productAssociatedContent object to add.
+ */
+ protected function doAddProductAssociatedContent($productAssociatedContent)
+ {
+ $this->collProductAssociatedContents[]= $productAssociatedContent;
+ $productAssociatedContent->setProduct($this);
+ }
+
+ /**
+ * @param ProductAssociatedContent $productAssociatedContent The productAssociatedContent object to remove.
+ * @return ChildProduct The current object (for fluent API support)
+ */
+ public function removeProductAssociatedContent($productAssociatedContent)
+ {
+ if ($this->getProductAssociatedContents()->contains($productAssociatedContent)) {
+ $this->collProductAssociatedContents->remove($this->collProductAssociatedContents->search($productAssociatedContent));
+ if (null === $this->productAssociatedContentsScheduledForDeletion) {
+ $this->productAssociatedContentsScheduledForDeletion = clone $this->collProductAssociatedContents;
+ $this->productAssociatedContentsScheduledForDeletion->clear();
+ }
+ $this->productAssociatedContentsScheduledForDeletion[]= clone $productAssociatedContent;
+ $productAssociatedContent->setProduct(null);
+ }
+
+ return $this;
+ }
+
+
+ /**
+ * If this collection has already been initialized with
+ * an identical criteria, it returns the collection.
+ * Otherwise if this Product is new, it will return
+ * an empty collection; or if this Product has previously
+ * been saved, it will retrieve related ProductAssociatedContents from storage.
+ *
+ * This method is protected by default in order to keep the public
+ * api reasonable. You can provide public methods for those you
+ * actually need in Product.
+ *
+ * @param Criteria $criteria optional Criteria object to narrow the query
+ * @param ConnectionInterface $con optional connection object
+ * @param string $joinBehavior optional join type to use (defaults to Criteria::LEFT_JOIN)
+ * @return Collection|ChildProductAssociatedContent[] List of ChildProductAssociatedContent objects
+ */
+ public function getProductAssociatedContentsJoinContent($criteria = null, $con = null, $joinBehavior = Criteria::LEFT_JOIN)
+ {
+ $query = ChildProductAssociatedContentQuery::create(null, $criteria);
+ $query->joinWith('Content', $joinBehavior);
+
+ return $this->getProductAssociatedContents($query, $con);
+ }
+
/**
* Clears out the collProductI18ns collection
*
@@ -5752,11 +5727,6 @@ abstract class Product implements ActiveRecordInterface
$o->clearAllReferences($deep);
}
}
- if ($this->collContentAssocs) {
- foreach ($this->collContentAssocs as $o) {
- $o->clearAllReferences($deep);
- }
- }
if ($this->collProductImages) {
foreach ($this->collProductImages as $o) {
$o->clearAllReferences($deep);
@@ -5787,6 +5757,11 @@ abstract class Product implements ActiveRecordInterface
$o->clearAllReferences($deep);
}
}
+ if ($this->collProductAssociatedContents) {
+ foreach ($this->collProductAssociatedContents as $o) {
+ $o->clearAllReferences($deep);
+ }
+ }
if ($this->collProductI18ns) {
foreach ($this->collProductI18ns as $o) {
$o->clearAllReferences($deep);
@@ -5830,10 +5805,6 @@ abstract class Product implements ActiveRecordInterface
$this->collProductSaleElementss->clearIterator();
}
$this->collProductSaleElementss = null;
- if ($this->collContentAssocs instanceof Collection) {
- $this->collContentAssocs->clearIterator();
- }
- $this->collContentAssocs = null;
if ($this->collProductImages instanceof Collection) {
$this->collProductImages->clearIterator();
}
@@ -5858,6 +5829,10 @@ abstract class Product implements ActiveRecordInterface
$this->collCartItems->clearIterator();
}
$this->collCartItems = null;
+ if ($this->collProductAssociatedContents instanceof Collection) {
+ $this->collProductAssociatedContents->clearIterator();
+ }
+ $this->collProductAssociatedContents = null;
if ($this->collProductI18ns instanceof Collection) {
$this->collProductI18ns->clearIterator();
}
diff --git a/core/lib/Thelia/Model/Base/ProductQuery.php b/core/lib/Thelia/Model/Base/ProductQuery.php
index 9d4685f38..8a4d4ed18 100755
--- a/core/lib/Thelia/Model/Base/ProductQuery.php
+++ b/core/lib/Thelia/Model/Base/ProductQuery.php
@@ -64,10 +64,6 @@ use Thelia\Model\Map\ProductTableMap;
* @method ChildProductQuery rightJoinProductSaleElements($relationAlias = null) Adds a RIGHT JOIN clause to the query using the ProductSaleElements relation
* @method ChildProductQuery innerJoinProductSaleElements($relationAlias = null) Adds a INNER JOIN clause to the query using the ProductSaleElements relation
*
- * @method ChildProductQuery leftJoinContentAssoc($relationAlias = null) Adds a LEFT JOIN clause to the query using the ContentAssoc relation
- * @method ChildProductQuery rightJoinContentAssoc($relationAlias = null) Adds a RIGHT JOIN clause to the query using the ContentAssoc relation
- * @method ChildProductQuery innerJoinContentAssoc($relationAlias = null) Adds a INNER JOIN clause to the query using the ContentAssoc relation
- *
* @method ChildProductQuery leftJoinProductImage($relationAlias = null) Adds a LEFT JOIN clause to the query using the ProductImage relation
* @method ChildProductQuery rightJoinProductImage($relationAlias = null) Adds a RIGHT JOIN clause to the query using the ProductImage relation
* @method ChildProductQuery innerJoinProductImage($relationAlias = null) Adds a INNER JOIN clause to the query using the ProductImage relation
@@ -92,6 +88,10 @@ use Thelia\Model\Map\ProductTableMap;
* @method ChildProductQuery rightJoinCartItem($relationAlias = null) Adds a RIGHT JOIN clause to the query using the CartItem relation
* @method ChildProductQuery innerJoinCartItem($relationAlias = null) Adds a INNER JOIN clause to the query using the CartItem relation
*
+ * @method ChildProductQuery leftJoinProductAssociatedContent($relationAlias = null) Adds a LEFT JOIN clause to the query using the ProductAssociatedContent relation
+ * @method ChildProductQuery rightJoinProductAssociatedContent($relationAlias = null) Adds a RIGHT JOIN clause to the query using the ProductAssociatedContent relation
+ * @method ChildProductQuery innerJoinProductAssociatedContent($relationAlias = null) Adds a INNER JOIN clause to the query using the ProductAssociatedContent relation
+ *
* @method ChildProductQuery leftJoinProductI18n($relationAlias = null) Adds a LEFT JOIN clause to the query using the ProductI18n relation
* @method ChildProductQuery rightJoinProductI18n($relationAlias = null) Adds a RIGHT JOIN clause to the query using the ProductI18n relation
* @method ChildProductQuery innerJoinProductI18n($relationAlias = null) Adds a INNER JOIN clause to the query using the ProductI18n relation
@@ -996,79 +996,6 @@ abstract class ProductQuery extends ModelCriteria
->useQuery($relationAlias ? $relationAlias : 'ProductSaleElements', '\Thelia\Model\ProductSaleElementsQuery');
}
- /**
- * Filter the query by a related \Thelia\Model\ContentAssoc object
- *
- * @param \Thelia\Model\ContentAssoc|ObjectCollection $contentAssoc the related object to use as filter
- * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
- *
- * @return ChildProductQuery The current query, for fluid interface
- */
- public function filterByContentAssoc($contentAssoc, $comparison = null)
- {
- if ($contentAssoc instanceof \Thelia\Model\ContentAssoc) {
- return $this
- ->addUsingAlias(ProductTableMap::ID, $contentAssoc->getProductId(), $comparison);
- } elseif ($contentAssoc instanceof ObjectCollection) {
- return $this
- ->useContentAssocQuery()
- ->filterByPrimaryKeys($contentAssoc->getPrimaryKeys())
- ->endUse();
- } else {
- throw new PropelException('filterByContentAssoc() only accepts arguments of type \Thelia\Model\ContentAssoc or Collection');
- }
- }
-
- /**
- * Adds a JOIN clause to the query using the ContentAssoc relation
- *
- * @param string $relationAlias optional alias for the relation
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return ChildProductQuery The current query, for fluid interface
- */
- public function joinContentAssoc($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- $tableMap = $this->getTableMap();
- $relationMap = $tableMap->getRelation('ContentAssoc');
-
- // create a ModelJoin object for this join
- $join = new ModelJoin();
- $join->setJoinType($joinType);
- $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
- if ($previousJoin = $this->getPreviousJoin()) {
- $join->setPreviousJoin($previousJoin);
- }
-
- // add the ModelJoin to the current object
- if ($relationAlias) {
- $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
- $this->addJoinObject($join, $relationAlias);
- } else {
- $this->addJoinObject($join, 'ContentAssoc');
- }
-
- return $this;
- }
-
- /**
- * Use the ContentAssoc relation ContentAssoc object
- *
- * @see useQuery()
- *
- * @param string $relationAlias optional alias for the relation,
- * to be used as main alias in the secondary query
- * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
- *
- * @return \Thelia\Model\ContentAssocQuery A secondary query class using the current class as primary query
- */
- public function useContentAssocQuery($relationAlias = null, $joinType = Criteria::LEFT_JOIN)
- {
- return $this
- ->joinContentAssoc($relationAlias, $joinType)
- ->useQuery($relationAlias ? $relationAlias : 'ContentAssoc', '\Thelia\Model\ContentAssocQuery');
- }
-
/**
* Filter the query by a related \Thelia\Model\ProductImage object
*
@@ -1507,6 +1434,79 @@ abstract class ProductQuery extends ModelCriteria
->useQuery($relationAlias ? $relationAlias : 'CartItem', '\Thelia\Model\CartItemQuery');
}
+ /**
+ * Filter the query by a related \Thelia\Model\ProductAssociatedContent object
+ *
+ * @param \Thelia\Model\ProductAssociatedContent|ObjectCollection $productAssociatedContent the related object to use as filter
+ * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
+ *
+ * @return ChildProductQuery The current query, for fluid interface
+ */
+ public function filterByProductAssociatedContent($productAssociatedContent, $comparison = null)
+ {
+ if ($productAssociatedContent instanceof \Thelia\Model\ProductAssociatedContent) {
+ return $this
+ ->addUsingAlias(ProductTableMap::ID, $productAssociatedContent->getProductId(), $comparison);
+ } elseif ($productAssociatedContent instanceof ObjectCollection) {
+ return $this
+ ->useProductAssociatedContentQuery()
+ ->filterByPrimaryKeys($productAssociatedContent->getPrimaryKeys())
+ ->endUse();
+ } else {
+ throw new PropelException('filterByProductAssociatedContent() only accepts arguments of type \Thelia\Model\ProductAssociatedContent or Collection');
+ }
+ }
+
+ /**
+ * Adds a JOIN clause to the query using the ProductAssociatedContent relation
+ *
+ * @param string $relationAlias optional alias for the relation
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return ChildProductQuery The current query, for fluid interface
+ */
+ public function joinProductAssociatedContent($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ $tableMap = $this->getTableMap();
+ $relationMap = $tableMap->getRelation('ProductAssociatedContent');
+
+ // create a ModelJoin object for this join
+ $join = new ModelJoin();
+ $join->setJoinType($joinType);
+ $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
+ if ($previousJoin = $this->getPreviousJoin()) {
+ $join->setPreviousJoin($previousJoin);
+ }
+
+ // add the ModelJoin to the current object
+ if ($relationAlias) {
+ $this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
+ $this->addJoinObject($join, $relationAlias);
+ } else {
+ $this->addJoinObject($join, 'ProductAssociatedContent');
+ }
+
+ return $this;
+ }
+
+ /**
+ * Use the ProductAssociatedContent relation ProductAssociatedContent object
+ *
+ * @see useQuery()
+ *
+ * @param string $relationAlias optional alias for the relation,
+ * to be used as main alias in the secondary query
+ * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
+ *
+ * @return \Thelia\Model\ProductAssociatedContentQuery A secondary query class using the current class as primary query
+ */
+ public function useProductAssociatedContentQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
+ {
+ return $this
+ ->joinProductAssociatedContent($relationAlias, $joinType)
+ ->useQuery($relationAlias ? $relationAlias : 'ProductAssociatedContent', '\Thelia\Model\ProductAssociatedContentQuery');
+ }
+
/**
* Filter the query by a related \Thelia\Model\ProductI18n object
*
diff --git a/core/lib/Thelia/Model/ContentAssoc.php b/core/lib/Thelia/Model/ContentAssoc.php
deleted file mode 100755
index 0723ef537..000000000
--- a/core/lib/Thelia/Model/ContentAssoc.php
+++ /dev/null
@@ -1,9 +0,0 @@
-addRelation('ProductCategory', '\\Thelia\\Model\\ProductCategory', RelationMap::ONE_TO_MANY, array('id' => 'category_id', ), 'CASCADE', 'RESTRICT', 'ProductCategories');
$this->addRelation('FeatureCategory', '\\Thelia\\Model\\FeatureCategory', RelationMap::ONE_TO_MANY, array('id' => 'category_id', ), 'CASCADE', 'RESTRICT', 'FeatureCategories');
$this->addRelation('AttributeCategory', '\\Thelia\\Model\\AttributeCategory', RelationMap::ONE_TO_MANY, array('id' => 'category_id', ), 'CASCADE', 'RESTRICT', 'AttributeCategories');
- $this->addRelation('ContentAssoc', '\\Thelia\\Model\\ContentAssoc', RelationMap::ONE_TO_MANY, array('id' => 'category_id', ), 'CASCADE', 'RESTRICT', 'ContentAssocs');
$this->addRelation('Rewriting', '\\Thelia\\Model\\Rewriting', RelationMap::ONE_TO_MANY, array('id' => 'category_id', ), 'CASCADE', 'RESTRICT', 'Rewritings');
$this->addRelation('CategoryImage', '\\Thelia\\Model\\CategoryImage', RelationMap::ONE_TO_MANY, array('id' => 'category_id', ), 'CASCADE', 'RESTRICT', 'CategoryImages');
$this->addRelation('CategoryDocument', '\\Thelia\\Model\\CategoryDocument', RelationMap::ONE_TO_MANY, array('id' => 'category_id', ), 'CASCADE', 'RESTRICT', 'CategoryDocuments');
+ $this->addRelation('CategoryAssociatedContent', '\\Thelia\\Model\\CategoryAssociatedContent', RelationMap::ONE_TO_MANY, array('id' => 'category_id', ), 'CASCADE', 'RESTRICT', 'CategoryAssociatedContents');
$this->addRelation('CategoryI18n', '\\Thelia\\Model\\CategoryI18n', RelationMap::ONE_TO_MANY, array('id' => 'id', ), 'CASCADE', null, 'CategoryI18ns');
$this->addRelation('CategoryVersion', '\\Thelia\\Model\\CategoryVersion', RelationMap::ONE_TO_MANY, array('id' => 'id', ), 'CASCADE', null, 'CategoryVersions');
$this->addRelation('Product', '\\Thelia\\Model\\Product', RelationMap::MANY_TO_MANY, array(), 'CASCADE', 'RESTRICT', 'Products');
@@ -228,10 +228,10 @@ class CategoryTableMap extends TableMap
ProductCategoryTableMap::clearInstancePool();
FeatureCategoryTableMap::clearInstancePool();
AttributeCategoryTableMap::clearInstancePool();
- ContentAssocTableMap::clearInstancePool();
RewritingTableMap::clearInstancePool();
CategoryImageTableMap::clearInstancePool();
CategoryDocumentTableMap::clearInstancePool();
+ CategoryAssociatedContentTableMap::clearInstancePool();
CategoryI18nTableMap::clearInstancePool();
CategoryVersionTableMap::clearInstancePool();
}
diff --git a/core/lib/Thelia/Model/Map/ContentAssocTableMap.php b/core/lib/Thelia/Model/Map/ContentAssocTableMap.php
deleted file mode 100755
index b080bea83..000000000
--- a/core/lib/Thelia/Model/Map/ContentAssocTableMap.php
+++ /dev/null
@@ -1,465 +0,0 @@
- array('Id', 'CategoryId', 'ProductId', 'ContentId', 'Position', 'CreatedAt', 'UpdatedAt', ),
- self::TYPE_STUDLYPHPNAME => array('id', 'categoryId', 'productId', 'contentId', 'position', 'createdAt', 'updatedAt', ),
- self::TYPE_COLNAME => array(ContentAssocTableMap::ID, ContentAssocTableMap::CATEGORY_ID, ContentAssocTableMap::PRODUCT_ID, ContentAssocTableMap::CONTENT_ID, ContentAssocTableMap::POSITION, ContentAssocTableMap::CREATED_AT, ContentAssocTableMap::UPDATED_AT, ),
- self::TYPE_RAW_COLNAME => array('ID', 'CATEGORY_ID', 'PRODUCT_ID', 'CONTENT_ID', 'POSITION', 'CREATED_AT', 'UPDATED_AT', ),
- self::TYPE_FIELDNAME => array('id', 'category_id', 'product_id', 'content_id', 'position', 'created_at', 'updated_at', ),
- self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, )
- );
-
- /**
- * holds an array of keys for quick access to the fieldnames array
- *
- * first dimension keys are the type constants
- * e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
- */
- protected static $fieldKeys = array (
- self::TYPE_PHPNAME => array('Id' => 0, 'CategoryId' => 1, 'ProductId' => 2, 'ContentId' => 3, 'Position' => 4, 'CreatedAt' => 5, 'UpdatedAt' => 6, ),
- self::TYPE_STUDLYPHPNAME => array('id' => 0, 'categoryId' => 1, 'productId' => 2, 'contentId' => 3, 'position' => 4, 'createdAt' => 5, 'updatedAt' => 6, ),
- self::TYPE_COLNAME => array(ContentAssocTableMap::ID => 0, ContentAssocTableMap::CATEGORY_ID => 1, ContentAssocTableMap::PRODUCT_ID => 2, ContentAssocTableMap::CONTENT_ID => 3, ContentAssocTableMap::POSITION => 4, ContentAssocTableMap::CREATED_AT => 5, ContentAssocTableMap::UPDATED_AT => 6, ),
- self::TYPE_RAW_COLNAME => array('ID' => 0, 'CATEGORY_ID' => 1, 'PRODUCT_ID' => 2, 'CONTENT_ID' => 3, 'POSITION' => 4, 'CREATED_AT' => 5, 'UPDATED_AT' => 6, ),
- self::TYPE_FIELDNAME => array('id' => 0, 'category_id' => 1, 'product_id' => 2, 'content_id' => 3, 'position' => 4, 'created_at' => 5, 'updated_at' => 6, ),
- self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, )
- );
-
- /**
- * Initialize the table attributes and columns
- * Relations are not initialized by this method since they are lazy loaded
- *
- * @return void
- * @throws PropelException
- */
- public function initialize()
- {
- // attributes
- $this->setName('content_assoc');
- $this->setPhpName('ContentAssoc');
- $this->setClassName('\\Thelia\\Model\\ContentAssoc');
- $this->setPackage('Thelia.Model');
- $this->setUseIdGenerator(true);
- // columns
- $this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null);
- $this->addForeignKey('CATEGORY_ID', 'CategoryId', 'INTEGER', 'category', 'ID', false, null, null);
- $this->addForeignKey('PRODUCT_ID', 'ProductId', 'INTEGER', 'product', 'ID', false, null, null);
- $this->addForeignKey('CONTENT_ID', 'ContentId', 'INTEGER', 'content', 'ID', false, null, null);
- $this->addColumn('POSITION', 'Position', 'INTEGER', false, null, null);
- $this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
- $this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
- } // initialize()
-
- /**
- * Build the RelationMap objects for this table relationships
- */
- public function buildRelations()
- {
- $this->addRelation('Category', '\\Thelia\\Model\\Category', RelationMap::MANY_TO_ONE, array('category_id' => 'id', ), 'CASCADE', 'RESTRICT');
- $this->addRelation('Product', '\\Thelia\\Model\\Product', RelationMap::MANY_TO_ONE, array('product_id' => 'id', ), 'CASCADE', 'RESTRICT');
- $this->addRelation('Content', '\\Thelia\\Model\\Content', RelationMap::MANY_TO_ONE, array('content_id' => 'id', ), 'CASCADE', 'RESTRICT');
- } // buildRelations()
-
- /**
- *
- * Gets the list of behaviors registered for this table
- *
- * @return array Associative array (name => parameters) of behaviors
- */
- public function getBehaviors()
- {
- return array(
- 'timestampable' => array('create_column' => 'created_at', 'update_column' => 'updated_at', ),
- );
- } // getBehaviors()
-
- /**
- * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table.
- *
- * For tables with a single-column primary key, that simple pkey value will be returned. For tables with
- * a multi-column primary key, a serialize()d version of the primary key will be returned.
- *
- * @param array $row resultset row.
- * @param int $offset The 0-based offset for reading from the resultset row.
- * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
- * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
- */
- public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
- {
- // If the PK cannot be derived from the row, return NULL.
- if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) {
- return null;
- }
-
- return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)];
- }
-
- /**
- * Retrieves the primary key from the DB resultset row
- * For tables with a single-column primary key, that simple pkey value will be returned. For tables with
- * a multi-column primary key, an array of the primary key columns will be returned.
- *
- * @param array $row resultset row.
- * @param int $offset The 0-based offset for reading from the resultset row.
- * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
- * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
- *
- * @return mixed The primary key of the row
- */
- public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
- {
-
- return (int) $row[
- $indexType == TableMap::TYPE_NUM
- ? 0 + $offset
- : self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)
- ];
- }
-
- /**
- * The class that the tableMap will make instances of.
- *
- * If $withPrefix is true, the returned path
- * uses a dot-path notation which is translated into a path
- * relative to a location on the PHP include_path.
- * (e.g. path.to.MyClass -> 'path/to/MyClass.php')
- *
- * @param boolean $withPrefix Whether or not to return the path with the class name
- * @return string path.to.ClassName
- */
- public static function getOMClass($withPrefix = true)
- {
- return $withPrefix ? ContentAssocTableMap::CLASS_DEFAULT : ContentAssocTableMap::OM_CLASS;
- }
-
- /**
- * Populates an object of the default type or an object that inherit from the default.
- *
- * @param array $row row returned by DataFetcher->fetch().
- * @param int $offset The 0-based offset for reading from the resultset row.
- * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType().
- One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
- * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
- *
- * @throws PropelException Any exceptions caught during processing will be
- * rethrown wrapped into a PropelException.
- * @return array (ContentAssoc object, last column rank)
- */
- public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
- {
- $key = ContentAssocTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType);
- if (null !== ($obj = ContentAssocTableMap::getInstanceFromPool($key))) {
- // We no longer rehydrate the object, since this can cause data loss.
- // See http://www.propelorm.org/ticket/509
- // $obj->hydrate($row, $offset, true); // rehydrate
- $col = $offset + ContentAssocTableMap::NUM_HYDRATE_COLUMNS;
- } else {
- $cls = ContentAssocTableMap::OM_CLASS;
- $obj = new $cls();
- $col = $obj->hydrate($row, $offset, false, $indexType);
- ContentAssocTableMap::addInstanceToPool($obj, $key);
- }
-
- return array($obj, $col);
- }
-
- /**
- * The returned array will contain objects of the default type or
- * objects that inherit from the default.
- *
- * @param DataFetcherInterface $dataFetcher
- * @return array
- * @throws PropelException Any exceptions caught during processing will be
- * rethrown wrapped into a PropelException.
- */
- public static function populateObjects(DataFetcherInterface $dataFetcher)
- {
- $results = array();
-
- // set the class once to avoid overhead in the loop
- $cls = static::getOMClass(false);
- // populate the object(s)
- while ($row = $dataFetcher->fetch()) {
- $key = ContentAssocTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType());
- if (null !== ($obj = ContentAssocTableMap::getInstanceFromPool($key))) {
- // We no longer rehydrate the object, since this can cause data loss.
- // See http://www.propelorm.org/ticket/509
- // $obj->hydrate($row, 0, true); // rehydrate
- $results[] = $obj;
- } else {
- $obj = new $cls();
- $obj->hydrate($row);
- $results[] = $obj;
- ContentAssocTableMap::addInstanceToPool($obj, $key);
- } // if key exists
- }
-
- return $results;
- }
- /**
- * Add all the columns needed to create a new object.
- *
- * Note: any columns that were marked with lazyLoad="true" in the
- * XML schema will not be added to the select list and only loaded
- * on demand.
- *
- * @param Criteria $criteria object containing the columns to add.
- * @param string $alias optional table alias
- * @throws PropelException Any exceptions caught during processing will be
- * rethrown wrapped into a PropelException.
- */
- public static function addSelectColumns(Criteria $criteria, $alias = null)
- {
- if (null === $alias) {
- $criteria->addSelectColumn(ContentAssocTableMap::ID);
- $criteria->addSelectColumn(ContentAssocTableMap::CATEGORY_ID);
- $criteria->addSelectColumn(ContentAssocTableMap::PRODUCT_ID);
- $criteria->addSelectColumn(ContentAssocTableMap::CONTENT_ID);
- $criteria->addSelectColumn(ContentAssocTableMap::POSITION);
- $criteria->addSelectColumn(ContentAssocTableMap::CREATED_AT);
- $criteria->addSelectColumn(ContentAssocTableMap::UPDATED_AT);
- } else {
- $criteria->addSelectColumn($alias . '.ID');
- $criteria->addSelectColumn($alias . '.CATEGORY_ID');
- $criteria->addSelectColumn($alias . '.PRODUCT_ID');
- $criteria->addSelectColumn($alias . '.CONTENT_ID');
- $criteria->addSelectColumn($alias . '.POSITION');
- $criteria->addSelectColumn($alias . '.CREATED_AT');
- $criteria->addSelectColumn($alias . '.UPDATED_AT');
- }
- }
-
- /**
- * Returns the TableMap related to this object.
- * This method is not needed for general use but a specific application could have a need.
- * @return TableMap
- * @throws PropelException Any exceptions caught during processing will be
- * rethrown wrapped into a PropelException.
- */
- public static function getTableMap()
- {
- return Propel::getServiceContainer()->getDatabaseMap(ContentAssocTableMap::DATABASE_NAME)->getTable(ContentAssocTableMap::TABLE_NAME);
- }
-
- /**
- * Add a TableMap instance to the database for this tableMap class.
- */
- public static function buildTableMap()
- {
- $dbMap = Propel::getServiceContainer()->getDatabaseMap(ContentAssocTableMap::DATABASE_NAME);
- if (!$dbMap->hasTable(ContentAssocTableMap::TABLE_NAME)) {
- $dbMap->addTableObject(new ContentAssocTableMap());
- }
- }
-
- /**
- * Performs a DELETE on the database, given a ContentAssoc or Criteria object OR a primary key value.
- *
- * @param mixed $values Criteria or ContentAssoc object or primary key or array of primary keys
- * which is used to create the DELETE statement
- * @param ConnectionInterface $con the connection to use
- * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
- * if supported by native driver or if emulated using Propel.
- * @throws PropelException Any exceptions caught during processing will be
- * rethrown wrapped into a PropelException.
- */
- public static function doDelete($values, ConnectionInterface $con = null)
- {
- if (null === $con) {
- $con = Propel::getServiceContainer()->getWriteConnection(ContentAssocTableMap::DATABASE_NAME);
- }
-
- if ($values instanceof Criteria) {
- // rename for clarity
- $criteria = $values;
- } elseif ($values instanceof \Thelia\Model\ContentAssoc) { // it's a model object
- // create criteria based on pk values
- $criteria = $values->buildPkeyCriteria();
- } else { // it's a primary key, or an array of pks
- $criteria = new Criteria(ContentAssocTableMap::DATABASE_NAME);
- $criteria->add(ContentAssocTableMap::ID, (array) $values, Criteria::IN);
- }
-
- $query = ContentAssocQuery::create()->mergeWith($criteria);
-
- if ($values instanceof Criteria) { ContentAssocTableMap::clearInstancePool();
- } elseif (!is_object($values)) { // it's a primary key, or an array of pks
- foreach ((array) $values as $singleval) { ContentAssocTableMap::removeInstanceFromPool($singleval);
- }
- }
-
- return $query->delete($con);
- }
-
- /**
- * Deletes all rows from the content_assoc table.
- *
- * @param ConnectionInterface $con the connection to use
- * @return int The number of affected rows (if supported by underlying database driver).
- */
- public static function doDeleteAll(ConnectionInterface $con = null)
- {
- return ContentAssocQuery::create()->doDeleteAll($con);
- }
-
- /**
- * Performs an INSERT on the database, given a ContentAssoc or Criteria object.
- *
- * @param mixed $criteria Criteria or ContentAssoc object containing data that is used to create the INSERT statement.
- * @param ConnectionInterface $con the ConnectionInterface connection to use
- * @return mixed The new primary key.
- * @throws PropelException Any exceptions caught during processing will be
- * rethrown wrapped into a PropelException.
- */
- public static function doInsert($criteria, ConnectionInterface $con = null)
- {
- if (null === $con) {
- $con = Propel::getServiceContainer()->getWriteConnection(ContentAssocTableMap::DATABASE_NAME);
- }
-
- if ($criteria instanceof Criteria) {
- $criteria = clone $criteria; // rename for clarity
- } else {
- $criteria = $criteria->buildCriteria(); // build Criteria from ContentAssoc object
- }
-
- if ($criteria->containsKey(ContentAssocTableMap::ID) && $criteria->keyContainsValue(ContentAssocTableMap::ID) ) {
- throw new PropelException('Cannot insert a value for auto-increment primary key ('.ContentAssocTableMap::ID.')');
- }
-
-
- // Set the correct dbName
- $query = ContentAssocQuery::create()->mergeWith($criteria);
-
- try {
- // use transaction because $criteria could contain info
- // for more than one table (I guess, conceivably)
- $con->beginTransaction();
- $pk = $query->doInsert($con);
- $con->commit();
- } catch (PropelException $e) {
- $con->rollBack();
- throw $e;
- }
-
- return $pk;
- }
-
-} // ContentAssocTableMap
-// This is the static code needed to register the TableMap for this table with the main Propel class.
-//
-ContentAssocTableMap::buildTableMap();
diff --git a/core/lib/Thelia/Model/Map/ContentTableMap.php b/core/lib/Thelia/Model/Map/ContentTableMap.php
index 724c839a1..5b6787a28 100755
--- a/core/lib/Thelia/Model/Map/ContentTableMap.php
+++ b/core/lib/Thelia/Model/Map/ContentTableMap.php
@@ -184,11 +184,12 @@ class ContentTableMap extends TableMap
*/
public function buildRelations()
{
- $this->addRelation('ContentAssoc', '\\Thelia\\Model\\ContentAssoc', RelationMap::ONE_TO_MANY, array('id' => 'content_id', ), 'CASCADE', 'RESTRICT', 'ContentAssocs');
$this->addRelation('Rewriting', '\\Thelia\\Model\\Rewriting', RelationMap::ONE_TO_MANY, array('id' => 'content_id', ), 'CASCADE', 'RESTRICT', 'Rewritings');
$this->addRelation('ContentFolder', '\\Thelia\\Model\\ContentFolder', RelationMap::ONE_TO_MANY, array('id' => 'content_id', ), 'CASCADE', 'RESTRICT', 'ContentFolders');
$this->addRelation('ContentImage', '\\Thelia\\Model\\ContentImage', RelationMap::ONE_TO_MANY, array('id' => 'content_id', ), 'CASCADE', 'RESTRICT', 'ContentImages');
$this->addRelation('ContentDocument', '\\Thelia\\Model\\ContentDocument', RelationMap::ONE_TO_MANY, array('id' => 'content_id', ), 'CASCADE', 'RESTRICT', 'ContentDocuments');
+ $this->addRelation('ProductAssociatedContent', '\\Thelia\\Model\\ProductAssociatedContent', RelationMap::ONE_TO_MANY, array('id' => 'content_id', ), 'CASCADE', 'RESTRICT', 'ProductAssociatedContents');
+ $this->addRelation('CategoryAssociatedContent', '\\Thelia\\Model\\CategoryAssociatedContent', RelationMap::ONE_TO_MANY, array('id' => 'content_id', ), 'CASCADE', 'RESTRICT', 'CategoryAssociatedContents');
$this->addRelation('ContentI18n', '\\Thelia\\Model\\ContentI18n', RelationMap::ONE_TO_MANY, array('id' => 'id', ), 'CASCADE', null, 'ContentI18ns');
$this->addRelation('ContentVersion', '\\Thelia\\Model\\ContentVersion', RelationMap::ONE_TO_MANY, array('id' => 'id', ), 'CASCADE', null, 'ContentVersions');
$this->addRelation('Folder', '\\Thelia\\Model\\Folder', RelationMap::MANY_TO_MANY, array(), 'CASCADE', 'RESTRICT', 'Folders');
@@ -215,11 +216,12 @@ class ContentTableMap extends TableMap
{
// Invalidate objects in ".$this->getClassNameFromBuilder($joinedTableTableMapBuilder)." instance pool,
// since one or more of them may be deleted by ON DELETE CASCADE/SETNULL rule.
- ContentAssocTableMap::clearInstancePool();
RewritingTableMap::clearInstancePool();
ContentFolderTableMap::clearInstancePool();
ContentImageTableMap::clearInstancePool();
ContentDocumentTableMap::clearInstancePool();
+ ProductAssociatedContentTableMap::clearInstancePool();
+ CategoryAssociatedContentTableMap::clearInstancePool();
ContentI18nTableMap::clearInstancePool();
ContentVersionTableMap::clearInstancePool();
}
diff --git a/core/lib/Thelia/Model/Map/CouponOrderTableMap.php b/core/lib/Thelia/Model/Map/CouponOrderTableMap.php
index 9d91ef068..1826bcb70 100755
--- a/core/lib/Thelia/Model/Map/CouponOrderTableMap.php
+++ b/core/lib/Thelia/Model/Map/CouponOrderTableMap.php
@@ -152,7 +152,7 @@ class CouponOrderTableMap extends TableMap
// columns
$this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null);
$this->addForeignKey('ORDER_ID', 'OrderId', 'INTEGER', 'order', 'ID', true, null, null);
- $this->addColumn('CODE', 'Code', 'VARCHAR', true, 45, null);
+ $this->addForeignKey('CODE', 'Code', 'VARCHAR', 'coupon', 'CODE', true, 45, null);
$this->addColumn('VALUE', 'Value', 'FLOAT', true, null, null);
$this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
$this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
@@ -164,6 +164,7 @@ class CouponOrderTableMap extends TableMap
public function buildRelations()
{
$this->addRelation('Order', '\\Thelia\\Model\\Order', RelationMap::MANY_TO_ONE, array('order_id' => 'id', ), 'CASCADE', 'RESTRICT');
+ $this->addRelation('Coupon', '\\Thelia\\Model\\Coupon', RelationMap::MANY_TO_ONE, array('code' => 'code', ), null, null);
} // buildRelations()
/**
diff --git a/core/lib/Thelia/Model/Map/CouponTableMap.php b/core/lib/Thelia/Model/Map/CouponTableMap.php
index d1ff79ac0..7e576a585 100755
--- a/core/lib/Thelia/Model/Map/CouponTableMap.php
+++ b/core/lib/Thelia/Model/Map/CouponTableMap.php
@@ -57,7 +57,7 @@ class CouponTableMap extends TableMap
/**
* The total number of columns
*/
- const NUM_COLUMNS = 10;
+ const NUM_COLUMNS = 14;
/**
* The number of lazy-loaded columns
@@ -67,7 +67,7 @@ class CouponTableMap extends TableMap
/**
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
*/
- const NUM_HYDRATE_COLUMNS = 10;
+ const NUM_HYDRATE_COLUMNS = 14;
/**
* the column name for the ID field
@@ -80,9 +80,24 @@ class CouponTableMap extends TableMap
const CODE = 'coupon.CODE';
/**
- * the column name for the ACTION field
+ * the column name for the TYPE field
*/
- const ACTION = 'coupon.ACTION';
+ const TYPE = 'coupon.TYPE';
+
+ /**
+ * the column name for the TITLE field
+ */
+ const TITLE = 'coupon.TITLE';
+
+ /**
+ * the column name for the SHORT_DESCRIPTION field
+ */
+ const SHORT_DESCRIPTION = 'coupon.SHORT_DESCRIPTION';
+
+ /**
+ * the column name for the DESCRIPTION field
+ */
+ const DESCRIPTION = 'coupon.DESCRIPTION';
/**
* the column name for the VALUE field
@@ -90,24 +105,24 @@ class CouponTableMap extends TableMap
const VALUE = 'coupon.VALUE';
/**
- * the column name for the USED field
+ * the column name for the IS_USED field
*/
- const USED = 'coupon.USED';
+ const IS_USED = 'coupon.IS_USED';
/**
- * the column name for the AVAILABLE_SINCE field
+ * the column name for the IS_ENABLED field
*/
- const AVAILABLE_SINCE = 'coupon.AVAILABLE_SINCE';
+ const IS_ENABLED = 'coupon.IS_ENABLED';
/**
- * the column name for the DATE_LIMIT field
+ * the column name for the EXPIRATION_DATE field
*/
- const DATE_LIMIT = 'coupon.DATE_LIMIT';
+ const EXPIRATION_DATE = 'coupon.EXPIRATION_DATE';
/**
- * the column name for the ACTIVATE field
+ * the column name for the SERIALIZED_RULES field
*/
- const ACTIVATE = 'coupon.ACTIVATE';
+ const SERIALIZED_RULES = 'coupon.SERIALIZED_RULES';
/**
* the column name for the CREATED_AT field
@@ -119,11 +134,25 @@ class CouponTableMap extends TableMap
*/
const UPDATED_AT = 'coupon.UPDATED_AT';
+ /**
+ * the column name for the VERSION field
+ */
+ const VERSION = 'coupon.VERSION';
+
/**
* The default string format for model objects of the related table
*/
const DEFAULT_STRING_FORMAT = 'YAML';
+ // i18n behavior
+
+ /**
+ * The default locale to use for translations.
+ *
+ * @var string
+ */
+ const DEFAULT_LOCALE = 'en_EN';
+
/**
* holds an array of fieldnames
*
@@ -131,12 +160,12 @@ class CouponTableMap extends TableMap
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
protected static $fieldNames = array (
- self::TYPE_PHPNAME => array('Id', 'Code', 'Action', 'Value', 'Used', 'AvailableSince', 'DateLimit', 'Activate', 'CreatedAt', 'UpdatedAt', ),
- self::TYPE_STUDLYPHPNAME => array('id', 'code', 'action', 'value', 'used', 'availableSince', 'dateLimit', 'activate', 'createdAt', 'updatedAt', ),
- self::TYPE_COLNAME => array(CouponTableMap::ID, CouponTableMap::CODE, CouponTableMap::ACTION, CouponTableMap::VALUE, CouponTableMap::USED, CouponTableMap::AVAILABLE_SINCE, CouponTableMap::DATE_LIMIT, CouponTableMap::ACTIVATE, CouponTableMap::CREATED_AT, CouponTableMap::UPDATED_AT, ),
- self::TYPE_RAW_COLNAME => array('ID', 'CODE', 'ACTION', 'VALUE', 'USED', 'AVAILABLE_SINCE', 'DATE_LIMIT', 'ACTIVATE', 'CREATED_AT', 'UPDATED_AT', ),
- self::TYPE_FIELDNAME => array('id', 'code', 'action', 'value', 'used', 'available_since', 'date_limit', 'activate', 'created_at', 'updated_at', ),
- self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
+ self::TYPE_PHPNAME => array('Id', 'Code', 'Type', 'Title', 'ShortDescription', 'Description', 'Value', 'IsUsed', 'IsEnabled', 'ExpirationDate', 'SerializedRules', 'CreatedAt', 'UpdatedAt', 'Version', ),
+ self::TYPE_STUDLYPHPNAME => array('id', 'code', 'type', 'title', 'shortDescription', 'description', 'value', 'isUsed', 'isEnabled', 'expirationDate', 'serializedRules', 'createdAt', 'updatedAt', 'version', ),
+ self::TYPE_COLNAME => array(CouponTableMap::ID, CouponTableMap::CODE, CouponTableMap::TYPE, CouponTableMap::TITLE, CouponTableMap::SHORT_DESCRIPTION, CouponTableMap::DESCRIPTION, CouponTableMap::VALUE, CouponTableMap::IS_USED, CouponTableMap::IS_ENABLED, CouponTableMap::EXPIRATION_DATE, CouponTableMap::SERIALIZED_RULES, CouponTableMap::CREATED_AT, CouponTableMap::UPDATED_AT, CouponTableMap::VERSION, ),
+ self::TYPE_RAW_COLNAME => array('ID', 'CODE', 'TYPE', 'TITLE', 'SHORT_DESCRIPTION', 'DESCRIPTION', 'VALUE', 'IS_USED', 'IS_ENABLED', 'EXPIRATION_DATE', 'SERIALIZED_RULES', 'CREATED_AT', 'UPDATED_AT', 'VERSION', ),
+ self::TYPE_FIELDNAME => array('id', 'code', 'type', 'title', 'short_description', 'description', 'value', 'is_used', 'is_enabled', 'expiration_date', 'serialized_rules', 'created_at', 'updated_at', 'version', ),
+ self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, )
);
/**
@@ -146,12 +175,12 @@ class CouponTableMap extends TableMap
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
*/
protected static $fieldKeys = array (
- self::TYPE_PHPNAME => array('Id' => 0, 'Code' => 1, 'Action' => 2, 'Value' => 3, 'Used' => 4, 'AvailableSince' => 5, 'DateLimit' => 6, 'Activate' => 7, 'CreatedAt' => 8, 'UpdatedAt' => 9, ),
- self::TYPE_STUDLYPHPNAME => array('id' => 0, 'code' => 1, 'action' => 2, 'value' => 3, 'used' => 4, 'availableSince' => 5, 'dateLimit' => 6, 'activate' => 7, 'createdAt' => 8, 'updatedAt' => 9, ),
- self::TYPE_COLNAME => array(CouponTableMap::ID => 0, CouponTableMap::CODE => 1, CouponTableMap::ACTION => 2, CouponTableMap::VALUE => 3, CouponTableMap::USED => 4, CouponTableMap::AVAILABLE_SINCE => 5, CouponTableMap::DATE_LIMIT => 6, CouponTableMap::ACTIVATE => 7, CouponTableMap::CREATED_AT => 8, CouponTableMap::UPDATED_AT => 9, ),
- self::TYPE_RAW_COLNAME => array('ID' => 0, 'CODE' => 1, 'ACTION' => 2, 'VALUE' => 3, 'USED' => 4, 'AVAILABLE_SINCE' => 5, 'DATE_LIMIT' => 6, 'ACTIVATE' => 7, 'CREATED_AT' => 8, 'UPDATED_AT' => 9, ),
- self::TYPE_FIELDNAME => array('id' => 0, 'code' => 1, 'action' => 2, 'value' => 3, 'used' => 4, 'available_since' => 5, 'date_limit' => 6, 'activate' => 7, 'created_at' => 8, 'updated_at' => 9, ),
- self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
+ self::TYPE_PHPNAME => array('Id' => 0, 'Code' => 1, 'Type' => 2, 'Title' => 3, 'ShortDescription' => 4, 'Description' => 5, 'Value' => 6, 'IsUsed' => 7, 'IsEnabled' => 8, 'ExpirationDate' => 9, 'SerializedRules' => 10, 'CreatedAt' => 11, 'UpdatedAt' => 12, 'Version' => 13, ),
+ self::TYPE_STUDLYPHPNAME => array('id' => 0, 'code' => 1, 'type' => 2, 'title' => 3, 'shortDescription' => 4, 'description' => 5, 'value' => 6, 'isUsed' => 7, 'isEnabled' => 8, 'expirationDate' => 9, 'serializedRules' => 10, 'createdAt' => 11, 'updatedAt' => 12, 'version' => 13, ),
+ self::TYPE_COLNAME => array(CouponTableMap::ID => 0, CouponTableMap::CODE => 1, CouponTableMap::TYPE => 2, CouponTableMap::TITLE => 3, CouponTableMap::SHORT_DESCRIPTION => 4, CouponTableMap::DESCRIPTION => 5, CouponTableMap::VALUE => 6, CouponTableMap::IS_USED => 7, CouponTableMap::IS_ENABLED => 8, CouponTableMap::EXPIRATION_DATE => 9, CouponTableMap::SERIALIZED_RULES => 10, CouponTableMap::CREATED_AT => 11, CouponTableMap::UPDATED_AT => 12, CouponTableMap::VERSION => 13, ),
+ self::TYPE_RAW_COLNAME => array('ID' => 0, 'CODE' => 1, 'TYPE' => 2, 'TITLE' => 3, 'SHORT_DESCRIPTION' => 4, 'DESCRIPTION' => 5, 'VALUE' => 6, 'IS_USED' => 7, 'IS_ENABLED' => 8, 'EXPIRATION_DATE' => 9, 'SERIALIZED_RULES' => 10, 'CREATED_AT' => 11, 'UPDATED_AT' => 12, 'VERSION' => 13, ),
+ self::TYPE_FIELDNAME => array('id' => 0, 'code' => 1, 'type' => 2, 'title' => 3, 'short_description' => 4, 'description' => 5, 'value' => 6, 'is_used' => 7, 'is_enabled' => 8, 'expiration_date' => 9, 'serialized_rules' => 10, 'created_at' => 11, 'updated_at' => 12, 'version' => 13, ),
+ self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, )
);
/**
@@ -172,14 +201,18 @@ class CouponTableMap extends TableMap
// columns
$this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null);
$this->addColumn('CODE', 'Code', 'VARCHAR', true, 45, null);
- $this->addColumn('ACTION', 'Action', 'VARCHAR', true, 255, null);
+ $this->addColumn('TYPE', 'Type', 'VARCHAR', true, 255, null);
+ $this->addColumn('TITLE', 'Title', 'VARCHAR', true, 255, null);
+ $this->addColumn('SHORT_DESCRIPTION', 'ShortDescription', 'LONGVARCHAR', true, null, null);
+ $this->addColumn('DESCRIPTION', 'Description', 'CLOB', true, null, null);
$this->addColumn('VALUE', 'Value', 'FLOAT', true, null, null);
- $this->addColumn('USED', 'Used', 'TINYINT', false, null, null);
- $this->addColumn('AVAILABLE_SINCE', 'AvailableSince', 'TIMESTAMP', false, null, null);
- $this->addColumn('DATE_LIMIT', 'DateLimit', 'TIMESTAMP', false, null, null);
- $this->addColumn('ACTIVATE', 'Activate', 'TINYINT', false, null, null);
+ $this->addColumn('IS_USED', 'IsUsed', 'TINYINT', true, null, null);
+ $this->addColumn('IS_ENABLED', 'IsEnabled', 'TINYINT', true, null, null);
+ $this->addColumn('EXPIRATION_DATE', 'ExpirationDate', 'TIMESTAMP', true, null, null);
+ $this->addColumn('SERIALIZED_RULES', 'SerializedRules', 'LONGVARCHAR', true, null, null);
$this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
$this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
+ $this->addColumn('VERSION', 'Version', 'INTEGER', false, null, 0);
} // initialize()
/**
@@ -187,7 +220,9 @@ class CouponTableMap extends TableMap
*/
public function buildRelations()
{
- $this->addRelation('CouponRule', '\\Thelia\\Model\\CouponRule', RelationMap::ONE_TO_MANY, array('id' => 'coupon_id', ), 'CASCADE', 'RESTRICT', 'CouponRules');
+ $this->addRelation('CouponOrder', '\\Thelia\\Model\\CouponOrder', RelationMap::ONE_TO_MANY, array('code' => 'code', ), null, null, 'CouponOrders');
+ $this->addRelation('CouponI18n', '\\Thelia\\Model\\CouponI18n', RelationMap::ONE_TO_MANY, array('id' => 'id', ), 'CASCADE', null, 'CouponI18ns');
+ $this->addRelation('CouponVersion', '\\Thelia\\Model\\CouponVersion', RelationMap::ONE_TO_MANY, array('id' => 'id', ), 'CASCADE', null, 'CouponVersions');
} // buildRelations()
/**
@@ -200,6 +235,8 @@ class CouponTableMap extends TableMap
{
return array(
'timestampable' => array('create_column' => 'created_at', 'update_column' => 'updated_at', ),
+ 'i18n' => array('i18n_table' => '%TABLE%_i18n', 'i18n_phpname' => '%PHPNAME%I18n', 'i18n_columns' => '', 'locale_column' => 'locale', 'locale_length' => '5', 'default_locale' => '', 'locale_alias' => '', ),
+ 'versionable' => array('version_column' => 'version', 'version_table' => '', 'log_created_at' => 'false', 'log_created_by' => 'false', 'log_comment' => 'false', 'version_created_at_column' => 'version_created_at', 'version_created_by_column' => 'version_created_by', 'version_comment_column' => 'version_comment', ),
);
} // getBehaviors()
/**
@@ -209,7 +246,8 @@ class CouponTableMap extends TableMap
{
// Invalidate objects in ".$this->getClassNameFromBuilder($joinedTableTableMapBuilder)." instance pool,
// since one or more of them may be deleted by ON DELETE CASCADE/SETNULL rule.
- CouponRuleTableMap::clearInstancePool();
+ CouponI18nTableMap::clearInstancePool();
+ CouponVersionTableMap::clearInstancePool();
}
/**
@@ -352,25 +390,33 @@ class CouponTableMap extends TableMap
if (null === $alias) {
$criteria->addSelectColumn(CouponTableMap::ID);
$criteria->addSelectColumn(CouponTableMap::CODE);
- $criteria->addSelectColumn(CouponTableMap::ACTION);
+ $criteria->addSelectColumn(CouponTableMap::TYPE);
+ $criteria->addSelectColumn(CouponTableMap::TITLE);
+ $criteria->addSelectColumn(CouponTableMap::SHORT_DESCRIPTION);
+ $criteria->addSelectColumn(CouponTableMap::DESCRIPTION);
$criteria->addSelectColumn(CouponTableMap::VALUE);
- $criteria->addSelectColumn(CouponTableMap::USED);
- $criteria->addSelectColumn(CouponTableMap::AVAILABLE_SINCE);
- $criteria->addSelectColumn(CouponTableMap::DATE_LIMIT);
- $criteria->addSelectColumn(CouponTableMap::ACTIVATE);
+ $criteria->addSelectColumn(CouponTableMap::IS_USED);
+ $criteria->addSelectColumn(CouponTableMap::IS_ENABLED);
+ $criteria->addSelectColumn(CouponTableMap::EXPIRATION_DATE);
+ $criteria->addSelectColumn(CouponTableMap::SERIALIZED_RULES);
$criteria->addSelectColumn(CouponTableMap::CREATED_AT);
$criteria->addSelectColumn(CouponTableMap::UPDATED_AT);
+ $criteria->addSelectColumn(CouponTableMap::VERSION);
} else {
$criteria->addSelectColumn($alias . '.ID');
$criteria->addSelectColumn($alias . '.CODE');
- $criteria->addSelectColumn($alias . '.ACTION');
+ $criteria->addSelectColumn($alias . '.TYPE');
+ $criteria->addSelectColumn($alias . '.TITLE');
+ $criteria->addSelectColumn($alias . '.SHORT_DESCRIPTION');
+ $criteria->addSelectColumn($alias . '.DESCRIPTION');
$criteria->addSelectColumn($alias . '.VALUE');
- $criteria->addSelectColumn($alias . '.USED');
- $criteria->addSelectColumn($alias . '.AVAILABLE_SINCE');
- $criteria->addSelectColumn($alias . '.DATE_LIMIT');
- $criteria->addSelectColumn($alias . '.ACTIVATE');
+ $criteria->addSelectColumn($alias . '.IS_USED');
+ $criteria->addSelectColumn($alias . '.IS_ENABLED');
+ $criteria->addSelectColumn($alias . '.EXPIRATION_DATE');
+ $criteria->addSelectColumn($alias . '.SERIALIZED_RULES');
$criteria->addSelectColumn($alias . '.CREATED_AT');
$criteria->addSelectColumn($alias . '.UPDATED_AT');
+ $criteria->addSelectColumn($alias . '.VERSION');
}
}
diff --git a/core/lib/Thelia/Model/Map/ProductTableMap.php b/core/lib/Thelia/Model/Map/ProductTableMap.php
index ef2cc7ca0..81badfba0 100755
--- a/core/lib/Thelia/Model/Map/ProductTableMap.php
+++ b/core/lib/Thelia/Model/Map/ProductTableMap.php
@@ -200,13 +200,13 @@ class ProductTableMap extends TableMap
$this->addRelation('ProductCategory', '\\Thelia\\Model\\ProductCategory', RelationMap::ONE_TO_MANY, array('id' => 'product_id', ), 'CASCADE', 'RESTRICT', 'ProductCategories');
$this->addRelation('FeatureProduct', '\\Thelia\\Model\\FeatureProduct', RelationMap::ONE_TO_MANY, array('id' => 'product_id', ), 'CASCADE', 'RESTRICT', 'FeatureProducts');
$this->addRelation('ProductSaleElements', '\\Thelia\\Model\\ProductSaleElements', RelationMap::ONE_TO_MANY, array('id' => 'product_id', ), 'CASCADE', 'RESTRICT', 'ProductSaleElementss');
- $this->addRelation('ContentAssoc', '\\Thelia\\Model\\ContentAssoc', RelationMap::ONE_TO_MANY, array('id' => 'product_id', ), 'CASCADE', 'RESTRICT', 'ContentAssocs');
$this->addRelation('ProductImage', '\\Thelia\\Model\\ProductImage', RelationMap::ONE_TO_MANY, array('id' => 'product_id', ), 'CASCADE', 'RESTRICT', 'ProductImages');
$this->addRelation('ProductDocument', '\\Thelia\\Model\\ProductDocument', RelationMap::ONE_TO_MANY, array('id' => 'product_id', ), 'CASCADE', 'RESTRICT', 'ProductDocuments');
$this->addRelation('AccessoryRelatedByProductId', '\\Thelia\\Model\\Accessory', RelationMap::ONE_TO_MANY, array('id' => 'product_id', ), 'CASCADE', 'RESTRICT', 'AccessoriesRelatedByProductId');
$this->addRelation('AccessoryRelatedByAccessory', '\\Thelia\\Model\\Accessory', RelationMap::ONE_TO_MANY, array('id' => 'accessory', ), 'CASCADE', 'RESTRICT', 'AccessoriesRelatedByAccessory');
$this->addRelation('Rewriting', '\\Thelia\\Model\\Rewriting', RelationMap::ONE_TO_MANY, array('id' => 'product_id', ), 'CASCADE', 'RESTRICT', 'Rewritings');
$this->addRelation('CartItem', '\\Thelia\\Model\\CartItem', RelationMap::ONE_TO_MANY, array('id' => 'product_id', ), null, null, 'CartItems');
+ $this->addRelation('ProductAssociatedContent', '\\Thelia\\Model\\ProductAssociatedContent', RelationMap::ONE_TO_MANY, array('id' => 'product_id', ), 'CASCADE', 'RESTRICT', 'ProductAssociatedContents');
$this->addRelation('ProductI18n', '\\Thelia\\Model\\ProductI18n', RelationMap::ONE_TO_MANY, array('id' => 'id', ), 'CASCADE', null, 'ProductI18ns');
$this->addRelation('ProductVersion', '\\Thelia\\Model\\ProductVersion', RelationMap::ONE_TO_MANY, array('id' => 'id', ), 'CASCADE', null, 'ProductVersions');
$this->addRelation('Category', '\\Thelia\\Model\\Category', RelationMap::MANY_TO_MANY, array(), 'CASCADE', 'RESTRICT', 'Categories');
@@ -238,11 +238,11 @@ class ProductTableMap extends TableMap
ProductCategoryTableMap::clearInstancePool();
FeatureProductTableMap::clearInstancePool();
ProductSaleElementsTableMap::clearInstancePool();
- ContentAssocTableMap::clearInstancePool();
ProductImageTableMap::clearInstancePool();
ProductDocumentTableMap::clearInstancePool();
AccessoryTableMap::clearInstancePool();
RewritingTableMap::clearInstancePool();
+ ProductAssociatedContentTableMap::clearInstancePool();
ProductI18nTableMap::clearInstancePool();
ProductVersionTableMap::clearInstancePool();
}
diff --git a/install/thelia.sql b/install/thelia.sql
index 3d9806696..031b00f5b 100755
--- a/install/thelia.sql
+++ b/install/thelia.sql
@@ -567,42 +567,6 @@ CREATE TABLE `content`
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
--- ---------------------------------------------------------------------
--- content_assoc
--- ---------------------------------------------------------------------
-
-DROP TABLE IF EXISTS `content_assoc`;
-
-CREATE TABLE `content_assoc`
-(
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `category_id` INTEGER,
- `product_id` INTEGER,
- `content_id` INTEGER,
- `position` INTEGER,
- `created_at` DATETIME,
- `updated_at` DATETIME,
- PRIMARY KEY (`id`),
- INDEX `idx_content_assoc_category_id` (`category_id`),
- INDEX `idx_content_assoc_product_id` (`product_id`),
- INDEX `idx_content_assoc_content_id` (`content_id`),
- CONSTRAINT `fk_content_assoc_category_id`
- FOREIGN KEY (`category_id`)
- REFERENCES `category` (`id`)
- ON UPDATE RESTRICT
- ON DELETE CASCADE,
- CONSTRAINT `fk_content_assoc_product_id`
- FOREIGN KEY (`product_id`)
- REFERENCES `product` (`id`)
- ON UPDATE RESTRICT
- ON DELETE CASCADE,
- CONSTRAINT `fk_content_assoc_content_id`
- FOREIGN KEY (`content_id`)
- REFERENCES `content` (`id`)
- ON UPDATE RESTRICT
- ON DELETE CASCADE
-) ENGINE=InnoDB;
-
-- ---------------------------------------------------------------------
-- product_image
-- ---------------------------------------------------------------------
@@ -1117,42 +1081,22 @@ CREATE TABLE `coupon`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`code` VARCHAR(45) NOT NULL,
- `action` VARCHAR(255) NOT NULL,
+ `type` VARCHAR(255) NOT NULL,
+ `title` VARCHAR(255) NOT NULL,
+ `short_description` TEXT NOT NULL,
+ `description` LONGTEXT NOT NULL,
`value` FLOAT NOT NULL,
- `used` TINYINT,
- `available_since` DATETIME,
- `date_limit` DATETIME,
- `activate` TINYINT,
+ `is_used` TINYINT NOT NULL,
+ `is_enabled` TINYINT NOT NULL,
+ `expiration_date` DATETIME NOT NULL,
+ `serialized_rules` TEXT NOT NULL,
`created_at` DATETIME,
`updated_at` DATETIME,
+ `version` INTEGER DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE INDEX `code_UNIQUE` (`code`)
) ENGINE=InnoDB;
--- ---------------------------------------------------------------------
--- coupon_rule
--- ---------------------------------------------------------------------
-
-DROP TABLE IF EXISTS `coupon_rule`;
-
-CREATE TABLE `coupon_rule`
-(
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `coupon_id` INTEGER NOT NULL,
- `controller` VARCHAR(255),
- `operation` VARCHAR(255),
- `value` FLOAT,
- `created_at` DATETIME,
- `updated_at` DATETIME,
- PRIMARY KEY (`id`),
- INDEX `idx_coupon_rule_coupon_id` (`coupon_id`),
- CONSTRAINT `fk_coupon_rule_coupon_id`
- FOREIGN KEY (`coupon_id`)
- REFERENCES `coupon` (`id`)
- ON UPDATE RESTRICT
- ON DELETE CASCADE
-) ENGINE=InnoDB;
-
-- ---------------------------------------------------------------------
-- coupon_order
-- ---------------------------------------------------------------------
@@ -1169,11 +1113,15 @@ CREATE TABLE `coupon_order`
`updated_at` DATETIME,
PRIMARY KEY (`id`),
INDEX `idx_coupon_order_order_id` (`order_id`),
+ INDEX `fk_coupon_order_coupon_idx` (`code`),
CONSTRAINT `fk_coupon_order_order_id`
FOREIGN KEY (`order_id`)
REFERENCES `order` (`id`)
ON UPDATE RESTRICT
- ON DELETE CASCADE
+ ON DELETE CASCADE,
+ CONSTRAINT `fk_coupon_order_coupon`
+ FOREIGN KEY (`code`)
+ REFERENCES `coupon` (`code`)
) ENGINE=InnoDB;
-- ---------------------------------------------------------------------
@@ -1457,6 +1405,64 @@ CREATE TABLE `folder_document`
ON DELETE CASCADE
) ENGINE=InnoDB;
+-- ---------------------------------------------------------------------
+-- product_associated_content
+-- ---------------------------------------------------------------------
+
+DROP TABLE IF EXISTS `product_associated_content`;
+
+CREATE TABLE `product_associated_content`
+(
+ `id` INTEGER NOT NULL AUTO_INCREMENT,
+ `product_id` INTEGER NOT NULL,
+ `content_id` INTEGER NOT NULL,
+ `position` INTEGER NOT NULL,
+ `created_at` DATETIME,
+ `updated_at` DATETIME,
+ PRIMARY KEY (`id`),
+ INDEX `idx_product_associated_content_product_id` (`product_id`),
+ INDEX `idx_product_associated_content_content_id` (`content_id`),
+ CONSTRAINT `fk_product_associated_content_product_id`
+ FOREIGN KEY (`product_id`)
+ REFERENCES `product` (`id`)
+ ON UPDATE RESTRICT
+ ON DELETE CASCADE,
+ CONSTRAINT `fk_product_associated_content_content_id`
+ FOREIGN KEY (`content_id`)
+ REFERENCES `content` (`id`)
+ ON UPDATE RESTRICT
+ ON DELETE CASCADE
+) ENGINE=InnoDB;
+
+-- ---------------------------------------------------------------------
+-- category_associated_content
+-- ---------------------------------------------------------------------
+
+DROP TABLE IF EXISTS `category_associated_content`;
+
+CREATE TABLE `category_associated_content`
+(
+ `id` INTEGER NOT NULL AUTO_INCREMENT,
+ `category_id` INTEGER NOT NULL,
+ `content_id` INTEGER NOT NULL,
+ `position` INTEGER NOT NULL,
+ `created_at` DATETIME,
+ `updated_at` DATETIME,
+ PRIMARY KEY (`id`),
+ INDEX `idx_category_associated_content_category_id` (`category_id`),
+ INDEX `idx_category_associated_content_content_id` (`content_id`),
+ CONSTRAINT `fk_category_associated_content_category_id`
+ FOREIGN KEY (`category_id`)
+ REFERENCES `category` (`id`)
+ ON UPDATE RESTRICT
+ ON DELETE CASCADE,
+ CONSTRAINT `fk_category_associated_content_content_id`
+ FOREIGN KEY (`content_id`)
+ REFERENCES `content` (`id`)
+ ON UPDATE RESTRICT
+ ON DELETE CASCADE
+) ENGINE=InnoDB;
+
-- ---------------------------------------------------------------------
-- category_i18n
-- ---------------------------------------------------------------------
@@ -1466,7 +1472,7 @@ DROP TABLE IF EXISTS `category_i18n`;
CREATE TABLE `category_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1487,7 +1493,7 @@ DROP TABLE IF EXISTS `product_i18n`;
CREATE TABLE `product_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1508,7 +1514,7 @@ DROP TABLE IF EXISTS `country_i18n`;
CREATE TABLE `country_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1529,7 +1535,7 @@ DROP TABLE IF EXISTS `tax_i18n`;
CREATE TABLE `tax_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` TEXT,
PRIMARY KEY (`id`,`locale`),
@@ -1548,7 +1554,7 @@ DROP TABLE IF EXISTS `tax_rule_i18n`;
CREATE TABLE `tax_rule_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
PRIMARY KEY (`id`,`locale`),
CONSTRAINT `tax_rule_i18n_FK_1`
FOREIGN KEY (`id`)
@@ -1565,7 +1571,7 @@ DROP TABLE IF EXISTS `feature_i18n`;
CREATE TABLE `feature_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1586,7 +1592,7 @@ DROP TABLE IF EXISTS `feature_av_i18n`;
CREATE TABLE `feature_av_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1607,7 +1613,7 @@ DROP TABLE IF EXISTS `attribute_i18n`;
CREATE TABLE `attribute_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1628,7 +1634,7 @@ DROP TABLE IF EXISTS `attribute_av_i18n`;
CREATE TABLE `attribute_av_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1649,7 +1655,7 @@ DROP TABLE IF EXISTS `config_i18n`;
CREATE TABLE `config_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1670,7 +1676,7 @@ DROP TABLE IF EXISTS `customer_title_i18n`;
CREATE TABLE `customer_title_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`short` VARCHAR(10),
`long` VARCHAR(45),
PRIMARY KEY (`id`,`locale`),
@@ -1689,7 +1695,7 @@ DROP TABLE IF EXISTS `folder_i18n`;
CREATE TABLE `folder_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1710,7 +1716,7 @@ DROP TABLE IF EXISTS `content_i18n`;
CREATE TABLE `content_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1731,7 +1737,7 @@ DROP TABLE IF EXISTS `product_image_i18n`;
CREATE TABLE `product_image_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1752,7 +1758,7 @@ DROP TABLE IF EXISTS `product_document_i18n`;
CREATE TABLE `product_document_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1773,7 +1779,7 @@ DROP TABLE IF EXISTS `currency_i18n`;
CREATE TABLE `currency_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`name` VARCHAR(45),
PRIMARY KEY (`id`,`locale`),
CONSTRAINT `currency_i18n_FK_1`
@@ -1791,7 +1797,7 @@ DROP TABLE IF EXISTS `order_status_i18n`;
CREATE TABLE `order_status_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1812,7 +1818,7 @@ DROP TABLE IF EXISTS `module_i18n`;
CREATE TABLE `module_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1833,7 +1839,7 @@ DROP TABLE IF EXISTS `group_i18n`;
CREATE TABLE `group_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1854,7 +1860,7 @@ DROP TABLE IF EXISTS `resource_i18n`;
CREATE TABLE `resource_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1875,7 +1881,7 @@ DROP TABLE IF EXISTS `message_i18n`;
CREATE TABLE `message_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` TEXT,
`description` LONGTEXT,
`description_html` LONGTEXT,
@@ -1886,6 +1892,23 @@ CREATE TABLE `message_i18n`
ON DELETE CASCADE
) ENGINE=InnoDB;
+-- ---------------------------------------------------------------------
+-- coupon_i18n
+-- ---------------------------------------------------------------------
+
+DROP TABLE IF EXISTS `coupon_i18n`;
+
+CREATE TABLE `coupon_i18n`
+(
+ `id` INTEGER NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ PRIMARY KEY (`id`,`locale`),
+ CONSTRAINT `coupon_i18n_FK_1`
+ FOREIGN KEY (`id`)
+ REFERENCES `coupon` (`id`)
+ ON DELETE CASCADE
+) ENGINE=InnoDB;
+
-- ---------------------------------------------------------------------
-- category_image_i18n
-- ---------------------------------------------------------------------
@@ -1895,7 +1918,7 @@ DROP TABLE IF EXISTS `category_image_i18n`;
CREATE TABLE `category_image_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1916,7 +1939,7 @@ DROP TABLE IF EXISTS `folder_image_i18n`;
CREATE TABLE `folder_image_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1937,7 +1960,7 @@ DROP TABLE IF EXISTS `content_image_i18n`;
CREATE TABLE `content_image_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1958,7 +1981,7 @@ DROP TABLE IF EXISTS `category_document_i18n`;
CREATE TABLE `category_document_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1979,7 +2002,7 @@ DROP TABLE IF EXISTS `content_document_i18n`;
CREATE TABLE `content_document_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -2000,7 +2023,7 @@ DROP TABLE IF EXISTS `folder_document_i18n`;
CREATE TABLE `folder_document_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -2132,5 +2155,34 @@ CREATE TABLE `message_version`
ON DELETE CASCADE
) ENGINE=InnoDB;
+-- ---------------------------------------------------------------------
+-- coupon_version
+-- ---------------------------------------------------------------------
+
+DROP TABLE IF EXISTS `coupon_version`;
+
+CREATE TABLE `coupon_version`
+(
+ `id` INTEGER NOT NULL,
+ `code` VARCHAR(45) NOT NULL,
+ `type` VARCHAR(255) NOT NULL,
+ `title` VARCHAR(255) NOT NULL,
+ `short_description` TEXT NOT NULL,
+ `description` LONGTEXT NOT NULL,
+ `value` FLOAT NOT NULL,
+ `is_used` TINYINT NOT NULL,
+ `is_enabled` TINYINT NOT NULL,
+ `expiration_date` DATETIME NOT NULL,
+ `serialized_rules` TEXT NOT NULL,
+ `created_at` DATETIME,
+ `updated_at` DATETIME,
+ `version` INTEGER DEFAULT 0 NOT NULL,
+ PRIMARY KEY (`id`,`version`),
+ CONSTRAINT `coupon_version_FK_1`
+ FOREIGN KEY (`id`)
+ REFERENCES `coupon` (`id`)
+ ON DELETE CASCADE
+) ENGINE=InnoDB;
+
# This restores the fkey checks, after having unset them earlier
SET FOREIGN_KEY_CHECKS = 1;
diff --git a/local/config/schema.xml b/local/config/schema.xml
index 238f66277..839e89079 100755
--- a/local/config/schema.xml
+++ b/local/config/schema.xml
@@ -425,32 +425,6 @@