public static function parseXmlFiles($templateBaseDir = null) { // Read the template folder to find templates if (!$templateBaseDir) { $templateBaseDir = KPATH_SITE . '/template'; } $data = self::parseXmlFile('', $templateBaseDir); if ($data) { // Guess template folder. $data->directory = preg_replace('/[^a-z0-9_]/', '', preg_replace('/\\s+/', '_', strtolower($data->name))); if (!$data->directory) { return array(); } // Template found from the root (folder cannot contain more than one template) return array('' => $data); } $templateDirs = KunenaFolder::folders($templateBaseDir); $rows = array(); // Check that the directory contains an xml file foreach ($templateDirs as $templateDir) { $data = self::parseXmlFile($templateDir, $templateBaseDir); if ($data) { $rows[$templateDir] = $data; } } ksort($rows); return $rows; }
/** * Get avatar gallery directories. * * @param string $path Absolute path for the gallery. * * @return array|string[] List of directories. */ protected function getGalleries($path) { $files = array(); $images = $this->getGallery($path); if ($images) { $files[''] = $images; } // TODO: Allow recursive paths. $folders = KunenaFolder::folders($path); foreach ($folders as $folder) { $images = $this->getGallery("{$path}/{$folder}"); if ($images) { foreach ($images as $image) { $files[$folder][] = "{$folder}/{$image}"; } } } return $files; }
/** * @return array */ function getAllImagesInGallery() { $path = JPATH_ROOT . '/media/kunena/avatars/gallery'; $galleryFolders = KunenaFolder::folders($path); $files_list = array(); $defaultGallery = KunenaFolder::files($path); $newdefaultGallery = array(); foreach ($defaultGallery as $image) { if ($image != 'index.html') { $newdefaultGallery[] = $image; } } $files_list['default'] = json_encode($newdefaultGallery); foreach ($galleryFolders as $folder) { $tmp = KunenaFolder::files($path . '/' . $folder); $newgalleryFolders = array(); foreach ($tmp as $img) { if ($img != 'index.html') { $newgalleryFolders[] = $img; } } $files_list[$folder] = json_encode($newgalleryFolders); } return $files_list; }
/** * @return array */ public function getAdminOptions() { $category = $this->getAdminCategory(); if (!$category) { return false; } $catList = array(); $catList[] = JHtml::_('select.option', 0, JText::_('COM_KUNENA_TOPLEVEL')); // make a standard yes/no list $published = array(); $published[] = JHtml::_('select.option', 1, JText::_('COM_KUNENA_PUBLISHED')); $published[] = JHtml::_('select.option', 0, JText::_('COM_KUNENA_UNPUBLISHED')); // make a standard yes/no list $yesno = array(); $yesno[] = JHtml::_('select.option', 0, JText::_('COM_KUNENA_NO')); $yesno[] = JHtml::_('select.option', 1, JText::_('COM_KUNENA_YES')); // Anonymous posts default $post_anonymous = array(); $post_anonymous[] = JHtml::_('select.option', '0', JText::_('COM_KUNENA_CATEGORY_ANONYMOUS_X_REG')); $post_anonymous[] = JHtml::_('select.option', '1', JText::_('COM_KUNENA_CATEGORY_ANONYMOUS_X_ANO')); $cat_params = array(); $cat_params['ordering'] = 'ordering'; $cat_params['toplevel'] = JText::_('COM_KUNENA_TOPLEVEL'); $cat_params['sections'] = 1; $cat_params['unpublished'] = 1; $cat_params['catid'] = $category->id; $cat_params['action'] = 'admin'; $channels_params = array(); $channels_params['catid'] = $category->id; $channels_params['action'] = 'admin'; $channels_options = array(); $channels_options[] = JHtml::_('select.option', 'THIS', JText::_('COM_KUNENA_CATEGORY_CHANNELS_OPTION_THIS')); $channels_options[] = JHtml::_('select.option', 'CHILDREN', JText::_('COM_KUNENA_CATEGORY_CHANNELS_OPTION_CHILDREN')); if (empty($category->channels)) { $category->channels = 'THIS'; } $topic_ordering_options = array(); $topic_ordering_options[] = JHtml::_('select.option', 'lastpost', JText::_('COM_KUNENA_CATEGORY_TOPIC_ORDERING_OPTION_LASTPOST')); $topic_ordering_options[] = JHtml::_('select.option', 'creation', JText::_('COM_KUNENA_CATEGORY_TOPIC_ORDERING_OPTION_CREATION')); $topic_ordering_options[] = JHtml::_('select.option', 'alpha', JText::_('COM_KUNENA_CATEGORY_TOPIC_ORDERING_OPTION_ALPHA')); $aliases = array_keys($category->getAliases()); $lists = array(); $lists['accesstypes'] = KunenaAccess::getInstance()->getAccessTypesList($category); $lists['accesslists'] = KunenaAccess::getInstance()->getAccessOptions($category); $lists['categories'] = JHtml::_('kunenaforum.categorylist', 'parent_id', 0, null, $cat_params, 'class="inputbox"', 'value', 'text', $category->parent_id); $lists['channels'] = JHtml::_('kunenaforum.categorylist', 'channels[]', 0, $channels_options, $channels_params, 'class="inputbox" multiple="multiple"', 'value', 'text', explode(',', $category->channels)); $lists['aliases'] = $aliases ? JHtml::_('kunenaforum.checklist', 'aliases', $aliases, true) : null; $lists['published'] = JHtml::_('select.genericlist', $published, 'published', 'class="inputbox"', 'value', 'text', $category->published); $lists['forumLocked'] = JHtml::_('select.genericlist', $yesno, 'locked', 'class="inputbox" size="1"', 'value', 'text', $category->locked); $lists['forumReview'] = JHtml::_('select.genericlist', $yesno, 'review', 'class="inputbox" size="1"', 'value', 'text', $category->review); $lists['allow_polls'] = JHtml::_('select.genericlist', $yesno, 'allow_polls', 'class="inputbox" size="1"', 'value', 'text', $category->allow_polls); $lists['allow_anonymous'] = JHtml::_('select.genericlist', $yesno, 'allow_anonymous', 'class="inputbox" size="1"', 'value', 'text', $category->allow_anonymous); $lists['post_anonymous'] = JHtml::_('select.genericlist', $post_anonymous, 'post_anonymous', 'class="inputbox" size="1"', 'value', 'text', $category->post_anonymous); $lists['topic_ordering'] = JHtml::_('select.genericlist', $topic_ordering_options, 'topic_ordering', 'class="inputbox" size="1"', 'value', 'text', $category->topic_ordering); $options = array(); $options[0] = JHtml::_('select.option', '0', JText::_('COM_KUNENA_A_CATEGORY_CFG_OPTION_NEVER')); $options[1] = JHtml::_('select.option', '1', JText::_('COM_KUNENA_A_CATEGORY_CFG_OPTION_SECTION')); $options[2] = JHtml::_('select.option', '2', JText::_('COM_KUNENA_A_CATEGORY_CFG_OPTION_CATEGORY')); $options[3] = JHtml::_('select.option', '3', JText::_('COM_KUNENA_A_CATEGORY_CFG_OPTION_SUBCATEGORY')); $lists['display_parent'] = JHtml::_('select.genericlist', $options, 'params[display][index][parent]', 'class="inputbox" size="1"', 'value', 'text', $category->params->get('display.index.parent', '3')); unset($options[1]); $lists['display_children'] = JHtml::_('select.genericlist', $options, 'params[display][index][children]', 'class="inputbox" size="1"', 'value', 'text', $category->params->get('display.index.children', '3')); $topicicons = array(); $topiciconslist = KunenaFolder::folders(JPATH_ROOT . '/media/kunena/topic_icons'); foreach ($topiciconslist as $icon) { $topicicons[] = JHtml::_('select.option', $icon, $icon); } $lists['category_iconset'] = JHtml::_('select.genericlist', $topicicons, 'iconset', 'class="inputbox" size="1"', 'value', 'text', $category->iconset); return $lists; }
/** * Delete previoulsy uplaoded avatars from filesystem * * @return void */ protected function deleteOldAvatars() { if (preg_match('|^users/|', $this->me->avatar)) { // Delete old uploaded avatars: if (is_dir(KPATH_MEDIA . '/avatars/resized')) { $deletelist = KunenaFolder::folders(KPATH_MEDIA . '/avatars/resized', '.', false, true); foreach ($deletelist as $delete) { if (is_file($delete . '/' . $this->me->avatar)) { KunenaFile::delete($delete . '/' . $this->me->avatar); } } } if (is_file(KPATH_MEDIA . '/avatars/' . $this->me->avatar)) { KunenaFile::delete(KPATH_MEDIA . '/avatars/' . $this->me->avatar); } } }