first commit
This commit is contained in:
106
administrator/components/com_pagebuilderck/models/browse.php
Normal file
106
administrator/components/com_pagebuilderck/models/browse.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
/**
|
||||
* @name Page Builder CK
|
||||
* @package com_pagebuilderck
|
||||
* @copyright Copyright (C) 2015. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
* @author Cedric Keiflin - https://www.template-creator.com - https://www.joomlack.fr
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
use Pagebuilderck\CKModel;
|
||||
|
||||
class PagebuilderckModelBrowse extends CKModel {
|
||||
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/*
|
||||
* Get a list of folders and files
|
||||
*/
|
||||
public function getItemsList($type = 'image') {
|
||||
$input = JFactory::getApplication()->input;
|
||||
|
||||
$type = $input->get('type', $type, 'string');
|
||||
|
||||
switch ($type) {
|
||||
case 'video' :
|
||||
$filetypes = array('.mp4', '.ogv', '.webm');
|
||||
break;
|
||||
case 'audio' :
|
||||
$filetypes = array('.mp3', '.ogg');
|
||||
break;
|
||||
case 'image' :
|
||||
default :
|
||||
$filetypes = array('.jpg', '.jpeg', '.png', '.gif', '.tiff', '.webp');
|
||||
break;
|
||||
}
|
||||
|
||||
$folder = $input->get('folder', 'images', 'string');
|
||||
$tree = new stdClass();
|
||||
|
||||
// look for all folder and files
|
||||
$this->getSubfolder(JPATH_SITE . '/' . $folder, $tree, implode('|', $filetypes), 1);
|
||||
|
||||
$tree = $this->prepareList($tree);
|
||||
|
||||
return $tree;
|
||||
}
|
||||
|
||||
/*
|
||||
* List the subfolders and files according to the filter
|
||||
*/
|
||||
private function getSubfolder($folder, &$tree, $filter, $level) {
|
||||
$folders = JFolder::folders($folder, '.', $recurse = false, $fullpath = true);
|
||||
|
||||
if (! count($folders)) return;
|
||||
|
||||
foreach ($folders as $f) {
|
||||
// list all authorized files from the folder
|
||||
$files = JFolder::files($f, $filter, $recurse = false, $fullpath = false);
|
||||
$fName = JFile::makeSafe($f);
|
||||
$tree->$fName = new stdClass();
|
||||
$name = explode('/', $f);
|
||||
$name = end($name);
|
||||
$tree->$fName->name = $name;
|
||||
$tree->$fName->path = $f;
|
||||
$tree->$fName->files = $files;
|
||||
$tree->$fName->level = $level;
|
||||
|
||||
// recursive loop
|
||||
$this->getSubfolder($f, $tree, $filter, $level+1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set level diff and check for depth
|
||||
*/
|
||||
private function prepareList($items) {
|
||||
if (! $items) return $items;
|
||||
|
||||
$lastitem = 0;
|
||||
foreach ($items as $i => $item)
|
||||
{
|
||||
$item->deeper = false;
|
||||
$item->shallower = false;
|
||||
$item->level_diff = 0;
|
||||
|
||||
if (isset($items->$lastitem))
|
||||
{
|
||||
$items->$lastitem->deeper = ($item->level > $items->$lastitem->level);
|
||||
$items->$lastitem->shallower = ($item->level < $items->$lastitem->level);
|
||||
$items->$lastitem->level_diff = ($items->$lastitem->level - $item->level);
|
||||
}
|
||||
$lastitem = $i;
|
||||
|
||||
$item->basepath = str_replace(JPATH_SITE, '', $item->path);
|
||||
$item->basepath = str_replace('\\', '/', $item->basepath);
|
||||
$item->basepath = trim($item->basepath, '/');
|
||||
}
|
||||
|
||||
return $items;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user