public static function Update($author, $subject, $date, $total, $groups, $parts) { $authorid = static::Author($author); // Remove redundant characters foreach ($parts['id'] as $key => $value) { $parts['id'][$key] = str_replace(array('<', '>'), '', $value); } try { // Found $article = Article::Match($authorid, $subject, $date); $result = true; $article->parts = self::MergeParts($article->parts, $parts); if ($article->post_date > $date) { $article->post_date = $date; } $article->Save(); if ($article->postid > 0) { Post::Queue($article->postid); } } catch (ActiveRecord_NotFoundException $e) { // Not found $result = false; $article = new Article(); $article->subject = $subject; $article->authorid = $authorid; $article->parts_total = $total; $article->parts = $parts; $article->post_date = $date; $article->Save(); if (is_array($groups)) { foreach ($groups as $group) { try { $articlegroup = new ArticleGroup(); $articlegroup->articleid = $article->id; $articlegroup->groupid = $group; $articlegroup->created = $article->created; $articlegroup->Save(); } catch (Exception $e) { // Ignore errors } } } } return $result; }