</TD> </TR> <tr style="display: none;" id="topic_list"> <td align="right"><?php putGS("Top element"); ?> :</td> <td> <select name="f_root_topic_id" class="input_select"> <?php $TOL_Language = camp_session_get('LoginLanguageId', 1); $lang = new Language($TOL_Language); $currentLanguageId = $lang->getLanguageId(); //$currentLanguages = Language::GetLanguages(null, $TOL_Language); //$currentLanguageId = $currentLanguages[0]->getLanguageId(); $topics = Topic::GetTree(); foreach ($topics as $topicPath) { $printTopic = array(); foreach ($topicPath as $topicId => $topic) { $translations = $topic->getTranslations(); if (array_key_exists($currentLanguageId, $translations)) { $currentTopic = $translations[$currentLanguageId]; } elseif ($currentLanguageId != 1 && array_key_exists(1, $translations)) { $currentTopic = $translations[1]; } else { $currentTopic = end($translations); } $printTopic[] = $currentTopic; } echo '<option value="' . $topic->getTopicId() . '">' . htmlspecialchars(implode(" / ", $printTopic)) . "</option>\n"; }
$issues = Issue::GetIssues($this->publication, NULL); $issuesNo = is_array($issues) ? sizeof($issues) : 0; $menuIssueTitle = $issuesNo > 0 ? getGS('All Issues') : getGS('No issues found'); $articleTypes = ArticleType::GetArticleTypes(true); // get sections $sections = array(); $section_objects = Section::GetSections($this->publication, $this->issue, $this->language); foreach ($section_objects as $section) { if (!isset($sections[$section->getSectionNumber()])) { $sections[$section->getSectionNumber()] = $section; } } $sectionsNo = is_array($sections) ? sizeof($sections) : 0; $menuSectionTitle = $sectionsNo > 0 ? getGS('All Sections') : getGS('No sections found'); $topics = array(); foreach (Topic::GetTree() as $topic) { $topic = array_pop($topic); $topics[$topic->getTopicId()] = $topic->getName($this->language); } ?> <script type="text/javascript"> //for use in table for default filters contextListFilters = {} </script> <div class="filters"> <dl class="zend_form"> <dd> <fieldset class="toggle filters" style="display:block">
<?php } else { ?> <?php p($text); ?> <?php } ?> </li> <?php } elseif ($dbColumn->getType() == ArticleTypeField::TYPE_TOPIC) { $articleTypeField = new ArticleTypeField($articleObj->getType(), substr($dbColumn->getName(), 1)); $rootTopicId = $articleTypeField->getTopicTypeRootElement(); $rootTopic = new Topic($rootTopicId); $subtopics = Topic::GetTree($rootTopicId); $articleTopicId = $articleData->getProperty($dbColumn->getName()); ?> <li> <label><?php echo htmlspecialchars($dbColumn->getDisplayName($articleObj->getLanguageId())); ?> </label> <?php if (count($subtopics) == 0) { ?> <?php putGS('No subtopics available'); ?> <?php } else {
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
$option .= " / ".htmlspecialchars($name); } $selected = $currentTopic->getTopicId() == SystemPref::Get('PLUGIN_BLOG_ROOT_TOPIC_ID') ? 'selected' : ''; p("<option value=\"{$currentTopic->getTopicId()}\" $selected>$option</option>"); } ?> </select> </td> </tr> <tr> <td align="left"><?php putGS("Blog mood root"); ?></td> <td> <select name="f_blog_root_mood_id" /> <option value="0">--root--</option> <?php foreach (Topic::GetTree() as $path) { $option=''; $currentTopic = camp_array_peek($path, false, -1); $name = $currentTopic->getName($language_id); if (empty($name)) { // Backwards compatibility $name = $currentTopic->getName(1); if (empty($name)) { continue; } } foreach ($path as $topicObj) { $name = $topicObj->getName($language_id); if (empty($name)) { $name = $topicObj->getName(1);
public static function GetMoodList($p_language_id) { $options = array(0 => '------'); foreach (Topic::GetTree((int)SystemPref::Get('PLUGIN_BLOG_ROOT_MOOD_ID')) as $path) { $currentTopic = camp_array_peek($path, false, -1); $name = $currentTopic->getName($p_language_id); if (empty($name)) { // Backwards compatibility $name = $currentTopic->getName(1); if (empty($name)) { continue; } } foreach ($path as $topicObj) { $name = $topicObj->getName($p_language_id); if (empty($name)) { $name = $topicObj->getName(1); if (empty($name)) { $name = "-----"; } } $value = htmlspecialchars($name); } $selected = $currentTopic->getTopicId() == SystemPref::Get('PLUGIN_BLOG_ROOT_MOOD_ID') ? 'selected' : ''; $options[$currentTopic->getTopicId()] = $value; } return (array)$options; }