function deletetopic() { global $CONF; $user = $_SESSION['user']; if (!isset($_GET['topicid_deletetopic']) || empty($_GET['topicid_deletetopic'])) return array('ok'=>'false','error'=>'no id'); elseif ($user->isAnon()) return array('ok'=>false,'error'=>'anon cannot delete topic'); else { $topic = new Topic(); $topic->setId($_GET['topicid_deletetopic']); $topic->load(); if ( (!$topic->getUser()->isAnon() && $topic->getUser()->getId() == $user->getId()) || ($topic->getChannel()->getUser()->getId() == $user->getId()) ) { $topic->delete(); return array('ok'=>true,'error'=>''); } return array('ok'=>false,'error'=>'you cannot delete this topic'); } }
public function edit($id = 0) { $obj = new Topic(); $obj->get_by_id((int) $id); if (!$_POST) { echo $obj->to_json(); } else { if (isset($_POST['model']) and $model = $_POST['model']) { $testid = $this->session->userdata('testid'); $topic = new Topic(); $topic->from_json($model); $topic->test_id = $testid; if ($topic->save()) { echo $topic->to_json(); } else { echo array('error' => $test->error->string); } } else { if (isset($_POST['_method']) and $_POST['_method'] === 'DELETE') { $obj->delete(); } } } }
$id = $_GET['id']; $manager = new Topic($link); $message = $manager->selectById($id); $topic = $message->getTopic(); $categorie = $topic->getCategory(); $categoryName = $topic->getCategory()->getCategory(); $topicName = urlencode($topic->getTitre()); } //Mise à jour d'un message if (isset($_POST['update'], $_POST['contenu'])) { try { $message->setContenu($_POST['contenu']); } catch (Exception $e) { $error = $e->getMessage(); } if (empty($error)) { $topic->update($message); // /!\ header('Location : '); exit; } } elseif (isset($_POST['delete'])) { $manager->delete($id); header('Location: ' . str_replace('index.php', '', $_SERVER['SCRIPT_NAME']) . 'home/' . $categoryName . '/' . $topicName); exit; } elseif (isset($_POST['signalement'])) { $message->signalement(); $topic->update($message); header('Location: ' . str_replace('index.php', '', $_SERVER['SCRIPT_NAME']) . 'home/' . $categoryName . '/' . $topicName); exit; } }
function delete($id) { $topic = new Topic($id); $question = new Questionaire(); $answer = new Answer(); $answer->where_related('questionaire', 'topic_id', $id)->get()->delete_all(); $choice = new Choice(); $choice->where_related('questionaire', 'topic_id', $id)->get()->delete_all(); $question->where('topic_id', $id)->get()->delete_all(); $topic->delete(); set_notify('success', 'ลบข้อมูลเรียบร้อยแล้วค่ะ'); redirect($_SERVER['HTTP_REFERER']); }
if ($f_confirmed == 1) { // get a list of subtopics $deleteTopics = $deleteTopic->getSubtopics(); // detach all subtopics from all articles foreach ($deleteTopics as $topic) { ArticleTopic::RemoveTopicFromArticles($topic->getTopicId()); } // delete all subtopics foreach ($deleteTopics as $topic) { $topic->delete($f_topic_language_id); } $doDelete = true; } if ($doDelete) { ArticleTopic::RemoveTopicFromArticles($deleteTopic->getTopicId()); $deleted = $deleteTopic->delete($f_topic_language_id); if ($deleted) { camp_html_add_msg(getGS("Topic was deleted."), "ok"); camp_html_goto_page("/{$ADMIN}/topics/index.php"); } else { $errorMsgs[] = getGS('The topic $1 could not be deleted.', '<B>' . $deleteTopic->getName($f_topic_language_id) . '</B>'); } } $crumbs = array(); $crumbs[] = array(getGS("Configure"), ""); $crumbs[] = array(getGS("Topics"), "/{$ADMIN}/topics/"); $crumbs[] = array(getGS("Deleting topic"), ""); echo camp_html_breadcrumbs($crumbs); ?> <P>
public function testCreate() { // test create(), fetch(), getLeft(), getRight(), getName() $this->createAndTest(1, array('names'=>array(1=>'Sports', 2=>'Sport')), 1, 2); $this->createAndTest(3, array('names'=>array(1=>'Electronics', 2=>'Electronice')), 1, 2); $this->createAndTest(2, array('names'=>array(1=>'Education', 2=>'Educație')), 1, 2); $this->createAndTest(27, array('names'=>array(1=>'Health', 2=>'Sănătate')), 1, 2); $this->createAndTest(4, array('parent_id'=>3, 'names'=>array(1=>'Televisions', 2=>'Televizoare')), 6, 7); $this->createAndTest(9, array('parent_id'=>3, 'names'=>array(1=>'Portable Electronics', 2=>'Electronice portabile')), 6, 7); $this->createAndTest(14, array('parent_id'=>2, 'names'=>array(1=>'Culture', 2=>'Cultură')), 4, 5); $this->createAndTest(15, array('parent_id'=>2, 'names'=>array(1=>'Science', 2=>'Știință')), 4, 5); $this->createAndTest(26, array('parent_id'=>2, 'names'=>array(1=>'Religion', 2=>'Religie')), 4, 5); $this->createAndTest(16, array('parent_id'=>14, 'names'=>array(1=>'Music', 2=>'Muzică')), 9, 10); $this->createAndTest(19, array('parent_id'=>14, 'names'=>array(1=>'Film', 2=>'Film')), 9, 10); $this->createAndTest(22, array('parent_id'=>14, 'names'=>array(1=>'Books', 2=>'Cărți')), 9, 10); $this->createAndTest(17, array('parent_id'=>16, 'names'=>array(1=>'Classical', 2=>'Clasică')), 14, 15); $this->createAndTest(18, array('parent_id'=>16, 'names'=>array(1=>'Jazz', 2=>'Jazz')), 14, 15); $this->createAndTest(24, array('parent_id'=>15, 'names'=>array(1=>'Physics', 2=>'Fizică')), 7, 8); $this->createAndTest(25, array('parent_id'=>15, 'names'=>array(1=>'Mathematics', 2=>'Matematică')), 7, 8); // test constructor and GetByFullName() $topic = new Topic('Physics:en'); // test other get methods $this->assertEquals(24, $topic->getTopicId()); $this->assertEquals(15, $topic->getParentId()); $this->assertEquals(2, $topic->getNumTranslations()); $translations = array(1=>new TopicName(24, 1), 2=>new TopicName(24, 2)); $this->assertEquals($translations, $topic->getTranslations()); $path = array(2=>new Topic(2), 15=>new Topic(15), 24=>new Topic(24)); $pathIds = array(2=>2, 15=>15, 24=>24); $this->assertEquals($path, $topic->getPath()); $this->assertEquals($pathIds, $topic->getPath(true)); $this->assertFalse($topic->hasSubtopics()); $this->assertFalse($topic->isRoot()); $this->assertEquals(1, $topic->getWidth()); $this->assertEquals(array(), $topic->getSubtopics()); $topic = new Topic('Educație:ro'); $this->assertTrue($topic->isRoot()); $this->assertTrue($topic->hasSubtopics()); $this->assertEquals(21, $topic->getWidth()); $this->assertEquals(null, $topic->getParentId()); $this->assertEquals(array(2=>new Topic(2)), $topic->getPath()); $subtopicsDepth1 = array(new Topic(26), new Topic(15), new Topic(14)); $subtopicsDepth1Ids = array(26, 15, 14); $this->assertEquals($subtopicsDepth1, $topic->getSubtopics()); $this->assertEquals($subtopicsDepth1Ids, $topic->getSubtopics(true)); $subtopicsDepth2 = array(new Topic(26), new Topic(15), new Topic(25), new Topic(24), new Topic(14), new Topic(22), new Topic(19), new Topic(16)); $this->assertEquals($subtopicsDepth2, $topic->getSubtopics(false, 2)); $subtopicsAll = array(new Topic(26), new Topic(15), new Topic(25), new Topic(24), new Topic(14), new Topic(22), new Topic(19), new Topic(16), new Topic(18), new Topic(17)); $this->assertEquals($subtopicsAll, $topic->getSubtopics(false, 0)); $topics = array(new Topic(2)); $this->assertEquals($topics, Topic::GetTopics(2)); $this->assertEquals($topics, Topic::GetTopics(null, 1, 'Education')); $this->assertEquals($subtopicsDepth1, Topic::GetTopics(null, null, null, 2)); $this->assertEquals($subtopicsAll, Topic::GetTopics(null, null, null, 2, 0)); $subtopicsDepth1Name = array(new Topic(14), new Topic(26), new Topic(15)); $this->assertEquals($subtopicsDepth1Name, Topic::GetTopics(null, 1, null, 2, 1, null, array(array('field'=>'byname', 'dir'=>'asc')))); $tree = array( array(27=>new Topic(27)), array(2=>new Topic(2)), array(2=>new Topic(2), 26=>new Topic(26)), array(2=>new Topic(2), 15=>new Topic(15)), array(2=>new Topic(2), 15=>new Topic(15), 25=>new Topic(25)), array(2=>new Topic(2), 15=>new Topic(15), 24=>new Topic(24)), array(2=>new Topic(2), 14=>new Topic(14)), array(2=>new Topic(2), 14=>new Topic(14), 22=>new Topic(22)), array(2=>new Topic(2), 14=>new Topic(14), 19=>new Topic(19)), array(2=>new Topic(2), 14=>new Topic(14), 16=>new Topic(16)), array(2=>new Topic(2), 14=>new Topic(14), 16=>new Topic(16), 18=>new Topic(18)), array(2=>new Topic(2), 14=>new Topic(14), 16=>new Topic(16), 17=>new Topic(17)), array(3=>new Topic(3)), array(3=>new Topic(3), 9=>new Topic(9)), array(3=>new Topic(3), 4=>new Topic(4)), array(1=>new Topic(1)) ); $this->assertEquals($tree, Topic::GetTree()); $subtree = array( array(26=>new Topic(26)), array(15=>new Topic(15)), array(15=>new Topic(15), 25=>new Topic(25)), array(15=>new Topic(15), 24=>new Topic(24)), array(14=>new Topic(14)), array(14=>new Topic(14), 22=>new Topic(22)), array(14=>new Topic(14), 19=>new Topic(19)), array(14=>new Topic(14), 16=>new Topic(16)), array(14=>new Topic(14), 16=>new Topic(16), 18=>new Topic(18)), array(14=>new Topic(14), 16=>new Topic(16), 17=>new Topic(17)) ); $this->assertEquals($subtree, Topic::GetTree(2)); $subtree = array( array(22=>new Topic(22)), array(19=>new Topic(19)), array(16=>new Topic(16)), array(16=>new Topic(16), 18=>new Topic(18)), array(16=>new Topic(16), 17=>new Topic(17)) ); $this->assertEquals($subtree, Topic::GetTree(14)); Topic::UpdateOrder(array('topic_2'=>array('topic_26', 'topic_14', 'topic_15'))); $topic = new Topic(14); $this->assertEquals(6, $topic->getLeft()); $this->assertEquals(17, $topic->getRight()); $topic = new Topic(15); $this->assertEquals(18, $topic->getLeft()); $this->assertEquals(23, $topic->getRight()); $topic = new Topic(16); $this->assertEquals(11, $topic->getLeft()); $this->assertEquals(16, $topic->getRight()); Topic::UpdateOrder(array('topic_0'=>array('topic_27', 'topic_3', 'topic_2', 'topic_1'))); $topic = new Topic(3); $this->assertEquals(3, $topic->getLeft()); $this->assertEquals(8, $topic->getRight()); $topic = new Topic(2); $this->assertEquals(9, $topic->getLeft()); $this->assertEquals(30, $topic->getRight()); $topic = new Topic(16); $this->assertEquals(17, $topic->getLeft()); $this->assertEquals(22, $topic->getRight()); // test setName() $topic->setName(1, 'My Music'); $topic = new Topic(16); $this->assertEquals('My Music', $topic->getName(1)); // test delete() $topic->delete(2); $this->assertEquals('My Music', $topic->getName(1)); $this->assertEquals(1, $topic->getNumTranslations()); $topic->delete(); $topic = new Topic(15); $this->assertEquals(18, $topic->getLeft()); $this->assertEquals(23, $topic->getRight()); $topic = new Topic(1); $this->assertEquals(25, $topic->getLeft()); $this->assertEquals(26, $topic->getRight()); $topic = new Topic(14); $subtopics = array(22, 19); $this->assertEquals($subtopics, $topic->getSubtopics(true)); } // fn testCreate
public function destroy_topic() { if (!isset($_POST['topic_id'])) { error(__("Error"), __("No topic ID specified.", "discuss")); } $topic = new Topic($_POST['topic_id']); if ($topic->no_results) { error(__("Error"), __("Invalid topic ID specified.", "discuss")); } if (!$topic->deletable()) { show_403(__("Access Denied"), __("You do not have sufficient privileges to delete this topic.", "discuss")); } Topic::delete($topic->id); Flash::notice(__("Topic deleted.", "discuss"), $topic->forum->url()); }
/** * Crée un nouveau topic dans le forum désiré * * @param $slug Slug du forum dans lequel sera le topic * @param $id Id du forum dans lequel sera le topic */ public function newTopic($slug, $id) { $user = Auth::user(); $forum = Forum::find($id); $category = $forum->getCategory(); $parsedContent = null; // L'utilisateur possède le droit de crée un topic ici if ($category->getPermission()->start_topic != true) { return Redirect::route('forum_index')->with('message', 'You can\'t start a new topic here'); } // Prévisualisation du post if (Request::getMethod() == 'POST' && Input::get('preview') == true) { $code = new Decoda\Decoda(Input::get('content')); $code->defaults(); $parsedContent = $code->parse(); } if (Request::getMethod() == 'POST' && Input::get('post') == true) { // Crée le topic $topic = new Topic(); $topic->name = Input::get('title'); $topic->slug = Str::slug(Input::get('title')); $topic->state = 'open'; $topic->first_post_user_id = $topic->last_post_user_id = $user->id; $topic->first_post_user_username = $topic->last_post_user_username = $user->username; $topic->views = 0; $topic->pinned = false; $topic->forum_id = $forum->id; $v = Validator::make($topic->toArray(), $topic->rules); if ($v->passes()) { $topic->save(); $post = new Post(); $post->content = Input::get('content'); $post->user_id = $user->id; $post->topic_id = $topic->id; $v = Validator::make($post->toArray(), $post->rules); if ($v->passes()) { $post->save(); $topic->num_post = 1; $topic->save(); $forum->num_topic = $forum->getTopicCount($forum->id); $forum->num_post = $forum->getPostCount($forum->id); $forum->last_topic_id = $topic->id; $forum->last_topic_name = $topic->name; $forum->last_topic_slug = $topic->slug; $forum->last_post_user_id = $user->id; $forum->last_post_user_username = $user->username; $forum->save(); return Redirect::route('forum_topic', array('slug' => $topic->slug, 'id' => $topic->id)); } else { // Impoossible de save le premier post donc delete le topic $topic->delete(); } } else { Session::put('message', 'An error has occurred with this topic. Try again.'); } } return View::make('forum.new_topic', array('forum' => $forum, 'category' => $category, 'parsedContent' => $parsedContent, 'title' => Input::get('title'), 'content' => Input::get('content'))); }
function test_delete() { $name = "Writing"; $test_topic = new Topic($name); $test_topic->save(); $name2 = "Interview"; $test_topic2 = new Topic($name2); $test_topic2->save(); $test_topic->delete(); $result = Topic::getAll(); $this->assertEquals([$test_topic2], $result); }
/** * Topics administration */ public function actionAdmin() { $this->layout = 'admin'; $data = array(); // delete request if (Rays::app()->request()->isPostRequest()) { if (isset($_POST['checked_topics'])) { $checkedTopics = $_POST['checked_topics']; foreach ($checkedTopics as $item) { if (!is_numeric($item)) { return; } else { $topic = new Topic(); $topic->id = $item; $topic->delete(); } } } } $curPage = $this->getPage("page"); $pageSize = $this->getPageSize("pagesize"); $count = Topic::find()->count(); $data['count'] = $count; $query = Topic::find()->join("user")->join("group")->join("rating")->join("counter"); $orderBy = Rays::getParam("orderBy", "id"); $order = Rays::getParam("order", "desc"); switch ($orderBy) { case "id": $query = $query->order($order, "[Topic.id]"); break; case "likes": $query = $query->order($order, "[RatingStatistic.value]"); break; case "views": $query = $query->order($order, "[Counter.totalCount]"); break; case "createTime": $query = $query->order($order, "[Topic.id]"); break; default: $query = $query->order_desc("id"); } $posts = $query->range(($curPage - 1) * $pageSize, $pageSize); $data['topics'] = $posts; $pager = new RPager('page', $count, $pageSize, RHtml::siteUrl("post/admin?orderBy={$orderBy}&&order={$order}"), $curPage); $pager = $pager->showPager(); $data['pager'] = $pager; $this->render('admin', $data, false); }