public static function markRead(array $ids, $user = null) { $user = KunenaUserHelper::get($user); $items = KunenaForumCategoryUserHelper::getCategories($ids, $user); $updateList = array(); $insertList = array(); $db = JFactory::getDbo(); $time = JFactory::getDate()->toUnix(); foreach ($items as $item) { if ($item->exists()) { $updateList[] = (int) $item->category_id; } else { $insertList[] = "{$db->quote($user->userid)}, {$db->quote($item->category_id)}, {$db->quote($time)}"; } } if ($updateList) { $idlist = implode(',', $updateList); $query = $db->getQuery(true); $query->update('#__kunena_user_categories')->set("allreadtime={$db->quote($time)}")->where("user_id={$db->quote($user->userid)}")->where("category_id IN ({$idlist})"); $db->setQuery($query); $db->execute(); } if ($insertList) { $query = $db->getQuery(true); $query->insert('#__kunena_user_categories')->columns('user_id, category_id, allreadtime')->values($insertList); $db->setQuery($query); $db->execute(); } }
/** * Test getCategories() */ public function testGetCategories() { $categories = KunenaForumCategoryHelper::getCategories(); $categoryusers = KunenaForumCategoryUserHelper::getCategories(); foreach ($categories as $category) { $this->assertTrue(isset($categoryusers[$category->id])); $this->assertEquals($category->id, $categoryusers[$category->id]->category_id); } }
/** * Get an instance of KunenaForumCategoryUser object. * * @param null|int $category The category id to load. * @param mixed $user The user id to load - Can be only an integer. * @param bool $reload Reload objects from the database. * * @return KunenaForumCategoryUser The user category object. */ public static function get($category = null, $user = null, $reload = false) { if ($category instanceof KunenaForumCategory) { $category = $category->id; } $category = intval($category); $user = KunenaUserHelper::get($user); if ($category === null) { return new KunenaForumCategoryUser(null, $user); } if ($reload || empty(self::$_instances[$user->userid][$category])) { $user_categories = KunenaForumCategoryUserHelper::getCategories($category, $user); self::$_instances[$user->userid][$category] = array_pop($user_categories); } return self::$_instances[$user->userid][$category]; }
/** * @param array $ids * @param bool $value * @param mixed $user * * @return integer * * @since 2.0.0 */ public static function subscribe($ids, $value = true, $user = null) { $count = 0; // Pre-load all items $usercategories = KunenaForumCategoryUserHelper::getCategories($ids, $user); foreach ($usercategories as $usercategory) { if ($usercategory->subscribed != (int) $value) { $count++; } $usercategory->subscribed = (int) $value; $usercategory->save(); } return $count; }