Exemplo n.º 1
0
 /**
  * Saves an category into the database.
  *
  * @param \GamyGoody\Domain\category $category The category to save
  */
 public function save(category $category)
 {
     $categoryData = array('cat_title' => $category->getTitle());
     if ($category->getId()) {
         // The category has already been saved : update it
         $this->getDb()->update('category', $categoryData, array('cat_id' => $category->getId()));
     } else {
         // The category has never been saved : insert it
         $this->getDb()->insert('category', $categoryData);
         // Get the id of the newly created category and set it on the entity.
         $id = $this->getDb()->lastInsertId();
         $category->setId($id);
     }
 }
Exemplo n.º 2
0
 /**
  * Liefert ein array aller Kategorien, auf welche die angegebene Gruppe zugreifen darf
  * @param int $groupId
  * @return array
  */
 public function getCategoriesByGroup($groupId)
 {
     $where = "groups = ? OR groups " . $this->dbcon->dbLike() . " ? OR groups " . $this->dbcon->dbLike() . " ? OR groups " . $this->dbcon->dbLike() . " ?";
     $valueParams = array();
     $valueParams[] = "{$groupId}";
     $valueParams[] = "%;{$groupId};%";
     $valueParams[] = "{$groupId};%";
     $valueParams[] = "%;{$groupId}";
     $list = $this->dbcon->fetch($this->dbcon->select($this->table, '*', $where, $valueParams), true);
     $res = array();
     foreach ($list as $listItem) {
         $object = new category();
         if ($object->createFromDbObject($listItem)) {
             $res[$object->getId()] = $object;
         }
     }
     return $res;
 }
 /**
  * Adds an object to the instance pool.
  *
  * Propel keeps cached copies of objects in an instance pool when they are retrieved
  * from the database.  In some cases -- especially when you override doSelect*()
  * methods in your stub classes -- you may need to explicitly add objects
  * to the cache in order to ensure that the same objects are always returned by doSelect*()
  * and retrieveByPK*() calls.
  *
  * @param      category $value A category object.
  * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
  */
 public static function addInstanceToPool(category $obj, $key = null)
 {
     if (Propel::isInstancePoolingEnabled()) {
         if ($key === null) {
             $key = (string) $obj->getId();
         }
         // if key === null
         self::$instances[$key] = $obj;
     }
 }
Exemplo n.º 4
0
 /**
  * Adds an object to the instance pool.
  *
  * Propel keeps cached copies of objects in an instance pool when they are retrieved
  * from the database.  In some cases -- especially when you override doSelect*()
  * methods in your stub classes -- you may need to explicitly add objects
  * to the cache in order to ensure that the same objects are always returned by doSelect*()
  * and retrieveByPK*() calls.
  *
  * @param      category $value A category object.
  * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
  */
 public static function addInstanceToPool(category $obj, $key = null)
 {
     if (Propel::isInstancePoolingEnabled()) {
         if ($key === null) {
             $key = (string) $obj->getId();
         }
         if (isset(self::$instances[$key]) || count(self::$instances) < kConf::get('max_num_instances_in_pool')) {
             self::$instances[$key] = $obj;
             kMemoryManager::registerPeer('categoryPeer');
         }
     }
 }
Exemplo n.º 5
0
 /**
  * Find subcategories
  * @param category
  * @return array
  */
 public function findSubcategories(category $category)
 {
     $ret = $this->poolResults(dibi::query('
         SELECT
             [categories].[id] AS [id],
             [pages].[name] AS [name],
             [pages].[nice_name] AS [nice_name],
             [pages].[content] AS [description],
             [pages].[meta_keywords] AS [meta_keywords],
             [pages].[meta_description] AS [meta_description],
             [pictures].[id] AS [picture_id],
             [pictures].[file] AS [picture_file],
             [pictures].[description] AS [picture_description],
             [pictures].[thumbnail_id] AS [thumbnail_id],
             [thumbnails].[file] AS [thumbnail_file],
             [thumbnails].[description] AS [thumbnail_description]
         FROM (SELECT
                 [node].[id] AS [id],
                 (COUNT([parent].[id]) - ([sub_tree].[depth] + 1)) AS [depth]
             FROM [:prefix:categories] AS [node], [:prefix:categories] AS [parent],
                 [:prefix:categories] AS [sub_parent], (
                     SELECT [node].[id], (COUNT([parent].[id]) - 1) AS [depth]
                     FROM [:prefix:categories] AS [node], [:prefix:categories] AS [parent]
                     WHERE ([node].[lft] BETWEEN [parent].[lft] AND [parent].[rgt]) AND
                         [node].[id] = %i', $category->getId(), '
                     GROUP BY [node].[id]
                 ) AS [sub_tree]
             WHERE ([node].[lft] BETWEEN [parent].[lft] AND [parent].[rgt]) AND
                 ([node].[lft] BETWEEN [sub_parent].[lft] AND [sub_parent].[rgt]) AND
                 [sub_parent].[id] = [sub_tree].[id]
             GROUP BY [node].[id]
             HAVING [depth] = 1) AS [categories]
         LEFT JOIN [:prefix:pages] AS [pages]
             ON [pages].[ref_id] = [categories].[id] AND
                [pages].[ref_type] = %s', pages::CATEGORY, '
         LEFT JOIN [:prefix:pictures] AS [pictures]
             ON [pages].[picture_id] = [pictures].[id]
         LEFT JOIN [:prefix:pictures] AS [thumbnails]
             ON [pictures].[thumbnail_id] = [thumbnails].[id]
         ORDER BY [name]'));
     return $ret;
 }
Exemplo n.º 6
0
 private function setEntryOnCategory(category $category, $entry = null)
 {
     $category->incrementEntriesCount($this->getEntryId());
     $category->incrementDirectEntriesCount($this->getEntryId());
     //if was pending - decrease pending entries count!
     if ($this->getColumnsOldValue(categoryEntryPeer::STATUS) == CategoryEntryStatus::PENDING) {
         $category->decrementPendingEntriesCount();
     }
     $category->save();
     //only categories with no context are saved on entry - this is only for Backward compatible
     if ($entry && !categoryEntryPeer::getSkipSave() && (trim($category->getPrivacyContexts()) == '' || $category->getPrivacyContexts() == null)) {
         $categories = array();
         if (trim($entry->getCategories()) != '') {
             $categories = explode(entry::ENTRY_CATEGORY_SEPARATOR, $entry->getCategories());
         }
         $categories[] = $category->getFullName();
         $categoriesIds = array();
         if (trim($entry->getCategoriesIds()) != '') {
             $categoriesIds = explode(entry::ENTRY_CATEGORY_SEPARATOR, $entry->getCategoriesIds());
         }
         $categoriesIds[] = $category->getId();
         $entry->parentSetCategories(implode(entry::ENTRY_CATEGORY_SEPARATOR, $categories));
         $entry->parentSetCategoriesIds(implode(entry::ENTRY_CATEGORY_SEPARATOR, $categoriesIds));
         $entry->justSave();
     }
     return $entry;
 }
Exemplo n.º 7
0
 /**
  * Initialize new category using patnerId and fullName, this will also create the needed categories for the fullName
  *
  * @param $partnerId
  * @param $fullName
  * @return category
  */
 public static function createByPartnerAndFullName($partnerId, $fullName)
 {
     $fullNameArray = explode(categoryPeer::CATEGORY_SEPARATOR, $fullName);
     $fullNameTemp = "";
     $parentId = 0;
     foreach ($fullNameArray as $name) {
         if ($fullNameTemp === "") {
             $fullNameTemp .= $name;
         } else {
             $fullNameTemp .= categoryPeer::CATEGORY_SEPARATOR . $name;
         }
         $category = categoryPeer::getByFullNameExactMatch($fullNameTemp);
         if (!$category) {
             $category = new category();
             $category->setPartnerId($partnerId);
             $category->setParentId($parentId);
             $category->setName($name);
             $category->save();
         }
         $parentId = $category->getId();
     }
     return $category;
 }
Exemplo n.º 8
0
 /**
  * Declares an association between this object and a category object.
  *
  * @param      category $v
  * @return     categoryKuser The current object (for fluent API support)
  * @throws     PropelException
  */
 public function setcategory(category $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 category object, it will not be re-added.
     if ($v !== null) {
         $v->addcategoryKuser($this);
     }
     return $this;
 }
Exemplo n.º 9
0
 private function handleCoreException(kCoreException $ex, category $categoryDb, KalturaCategory $category)
 {
     switch ($ex->getCode()) {
         case kCoreException::DUPLICATE_CATEGORY:
             throw new KalturaAPIException(KalturaErrors::DUPLICATE_CATEGORY, $categoryDb->getFullName());
         case kCoreException::PARENT_ID_IS_CHILD:
             throw new KalturaAPIException(KalturaErrors::PARENT_CATEGORY_IS_CHILD, $category->parentId, $categoryDb->getId());
         default:
             throw $ex;
     }
 }
 private function setEntryOnCategory(category $category, $entry = null)
 {
     if (is_null($this->entryCategoriesAddedIds)) {
         $categoriesEntries = categoryEntryPeer::retrieveActiveByEntryId($this->getEntryId());
         $categoriesIds = array();
         foreach ($categoriesEntries as $categroyEntry) {
             //cannot get directly the full ids - since it might not be updated.
             if ($categroyEntry->getCategoryId() != $this->getCategoryId()) {
                 $categoriesIds[] = $categroyEntry->getCategoryId();
             }
         }
         $categoriesAdded = categoryPeer::retrieveByPKs($categoriesIds);
         $entryCategoriesAddedIds = array();
         foreach ($categoriesAdded as $categoryAdded) {
             $fullIds = explode(categoryPeer::CATEGORY_SEPARATOR, $categoryAdded->getFullIds());
             $entryCategoriesAddedIds = array_merge($entryCategoriesAddedIds, $fullIds);
         }
         $this->entryCategoriesAddedIds = $entryCategoriesAddedIds;
     }
     $category->incrementEntriesCount(1, $this->entryCategoriesAddedIds);
     $category->incrementDirectEntriesCount();
     //if was pending - decrease pending entries count!
     if ($this->getColumnsOldValue(categoryEntryPeer::STATUS) == CategoryEntryStatus::PENDING) {
         $category->decrementPendingEntriesCount();
     }
     $category->save();
     //only categories with no context are saved on entry - this is only for Backward compatible
     if ($entry && !categoryEntryPeer::getSkipSave() && (trim($category->getPrivacyContexts()) == '' || $category->getPrivacyContexts() == null)) {
         $categories = array();
         if (trim($entry->getCategories()) != '') {
             $categories = explode(entry::ENTRY_CATEGORY_SEPARATOR, $entry->getCategories());
         }
         $categories[] = $category->getFullName();
         $categoriesIds = array();
         if (trim($entry->getCategoriesIds()) != '') {
             $categoriesIds = explode(entry::ENTRY_CATEGORY_SEPARATOR, $entry->getCategoriesIds());
         }
         $categoriesIds[] = $category->getId();
         $entry->parentSetCategories(implode(entry::ENTRY_CATEGORY_SEPARATOR, $categories));
         $entry->parentSetCategoriesIds(implode(entry::ENTRY_CATEGORY_SEPARATOR, $categoriesIds));
         $entry->justSave();
     }
     return $entry;
 }
Exemplo n.º 11
0
 /**
  * Function calculates and returns the MRSS XML of a category
  * @param category $category
  * @param SimpleXMLElement $mrss
  * @param kMrssParameters $mrssParams
  * @param string $features
  * @return SimpleXMLElement
  */
 public static function getCategoryMrssXml(category $category, SimpleXMLElement $mrss = null, kMrssParameters $mrssParams = null, $features = null)
 {
     $instanceKey = self::generateInstanceKey($category->getId(), $mrssParams, $features);
     if (is_null($mrss)) {
         $mrss = self::getInstanceFromPool($instanceKey);
         if ($mrss) {
             return $mrss;
         }
         $mrss = new SimpleXMLElement('<item/>');
     }
     if (!$features || in_array(ObjectFeatureType::METADATA, $features)) {
         $mrss->addChild("id", $category->getId());
         $mrss->addChild("name", $category->getName());
         $mrss->addChild("referenceId", $category->getReferenceId());
         $mrss->addChild("fullName", $category->getFullName());
     }
     $mrssContributors = self::getMrssContributors();
     if (count($mrssContributors)) {
         foreach ($mrssContributors as $mrssContributor) {
             /* @var $mrssContributor IKalturaMrssContributor */
             try {
                 if (!$features || in_array($mrssContributor->getObjectFeatureType(), $features)) {
                     $mrssContributor->contribute($category, $mrss, $mrssParams);
                 }
             } catch (kCoreException $ex) {
                 KalturaLog::err("Unable to add MRSS element for contributor [" . get_class($mrssContributor) . "] message [" . $ex->getMessage() . "]");
             }
         }
     }
     if ($features && in_array(ObjectFeatureType::ANCESTOR_RECURSIVE, $features)) {
         $ancestorIds = explode(">", $category->getFullIds());
         $ancestorCategories = categoryPeer::retrieveByPKs($ancestorIds);
         array_pop($ancestorCategories);
         //find and delete the ANCESTOR_RECURSIVE from the features array
         for ($i = 0; $i < count($features); $i++) {
             if ($features[$i] == ObjectFeatureType::ANCESTOR_RECURSIVE) {
                 unset($features[$i]);
             }
         }
         //retrieve mrss for each ancestor category
         $parentCategories = $mrss->addChild('parent_categories');
         foreach ($ancestorCategories as $ancestorCategory) {
             $ancestorMrss = $parentCategories->addChild('category_item');
             $ancestorMrss = self::getCategoryMrssXml($ancestorCategory, $ancestorMrss, $mrssParams, $features);
         }
     }
     if ($mrssParams && $mrssParams->getItemXpathsToExtend()) {
         self::addExtendingItemsToMrss($mrss, $mrssParams);
     }
     self::addInstanceToPool($instanceKey, $mrss);
     return $mrss;
 }
Exemplo n.º 12
0
 private function handleCoreException(kCoreException $ex, category $categoryDb, KalturaCategory $category)
 {
     switch ($ex->getCode()) {
         case kCoreException::DUPLICATE_CATEGORY:
             throw new KalturaAPIException(KalturaErrors::DUPLICATE_CATEGORY, $categoryDb->getFullName());
         case kCoreException::PARENT_ID_IS_CHILD:
             throw new KalturaAPIException(KalturaErrors::PARENT_CATEGORY_IS_CHILD, $category->parentId, $categoryDb->getId());
         case kCoreException::DISABLE_CATEGORY_LIMIT_MULTI_PRIVACY_CONTEXT_FORBIDDEN:
             throw new KalturaAPIException(KalturaErrors::CANNOT_SET_MULTI_PRIVACY_CONTEXT);
         default:
             throw $ex;
     }
 }
Exemplo n.º 13
0
 /**
  * Count by category
  * @return int
  */
 public function countByCategory(category $category, $letter = NULL)
 {
     try {
         $query = array('SELECT COUNT(*) FROM [:prefix:products] AS [products]');
         if ($letter !== NULL) {
             $query[] = 'LEFT JOIN [:prefix:pages] AS [pages] ON [pages].[ref_id] = [products].[id] AND [pages].[ref_type] = %s';
             $query[] = pages::PRODUCT;
         }
         $query[] = 'LEFT JOIN [:prefix:categories] AS [categories] ON [products].[category_id] = [categories].[id]';
         $query[] = 'WHERE [categories].[id] = %i';
         $query[] = $category->getId();
         if ($letter !== NULL) {
             $query = array_merge($query, (array) 'AND', $this->whereLetter($letter));
         }
         return dibi::query($query)->fetchSingle();
     } catch (Exception $e) {
         return NULL;
     }
 }