/4.6/components/com_mostlyce_frontend/mostlyce_frontend.php
PHP | 237 lines | 155 code | 32 blank | 50 comment | 28 complexity | 25e3a631391f400eaeaace251f5d9821 MD5 | raw file
Possible License(s): LGPL-2.1, GPL-2.0, LGPL-2.0
- <?php
- /**
- * @package MOStlyCE
- * @author Chad Auld (chadauld@brilaps.com)
- * @copyright Brilaps, LLC (http://brilaps.com)
- * @license GNU Lesser General Public License (LGPL - http://www.gnu.org/licenses/lgpl.html)
- */
- /** ensure this file is being included by a parent file */
- defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
- $mosConfig_absolute_path = mamboCore::get('mosConfig_absolute_path');
- $mosConfig_secret = mamboCore::get('mosConfig_secret');
- require($mosConfig_absolute_path.'mambots/editors/mostlyce/jscripts/tiny_mce/auth_check.php');
- $result = externalCallCheck($mosConfig_absolute_path, $mosConfig_secret);
- if (!$result) {
- die(T_('Direct Access to this location is not allowed.'));
- }
- $task = trim(mosGetParam($_GET, 'task', ''));
- switch (strtolower($task)) {
- case 'imagelist':
- getImageList();
- break;
-
- case 'contentlist':
- getContentList();
- break;
- default:
- die(T_('Direct Access to this location is not allowed.'));
- break;
- }
- /**
- * Purpose: This function creates a list of images to be displayed as a dropdown in all image dialogs
- * if the "external_link_image_url" option is defined in TinyMCE init.
- *
- * Expected output:
- * var tinyMCEImageList = new Array(
- * // Name, URL
- * ["Logo 1", "media/logo.jpg"],
- * ["Logo 2 Over", "media/logo_over.jpg"]
- * );
- **/
- function getImageList() {
- global $mosConfig_absolute_path, $mosConfig_live_site, $mosConfig_secret;
- $pathToImages = $mosConfig_absolute_path.'images/stories';
- $imagesArray = array();
- $imageList = scan_directory_recursively($pathToImages);
- $validExtensions = array('jpeg', 'jpg', 'png', 'gif');
- $count = 0;
- $jsCode = 'var tinyMCEImageList = new Array(';
- foreach ($imageList as $image) {
- $count++;
- $crtExtension = substr(strrchr($image, '.'), 1);
- if (in_array($crtExtension, $validExtensions)) {
- $urlImagePath = str_replace($mosConfig_absolute_path, $mosConfig_live_site.'/', $image);
- $postAbsolutePath = str_replace($mosConfig_absolute_path, '', $image);
- if ($count < count($imageList )) {
- $jsCode .= "[\"$postAbsolutePath\", \"$urlImagePath\"],";
- } else {
- $jsCode .= "[\"$postAbsolutePath\", \"$urlImagePath\"]"; //no comma on the last line
- }
- }
- }
- $jsCode .= ");";
- //Dump out the newly assembled list of images for MOStlyCE
- echo $jsCode;
- }
- /**
- * Purpose: This function creates a list of content items to be displayed as a dropdown in all link dialogs if
- * the "external_link_list_url" option is defined in TinyMCE init.
- *
- * var tinyMCELinkList = new Array(
- * // Name, URL
- * ["Moxiecode", "http://www.moxiecode.com"],
- * ["Freshmeat", "http://www.freshmeat.com"],
- * ["Sourceforge", "http://www.sourceforge.com"]
- * );
- **/
- function getContentList() {
- global $database, $mosConfig_absolute_path, $mosConfig_offset, $mosConfig_secret;
-
- $now = date('Y-m-d H:i:s', time() + $mosConfig_offset * 60 * 60);
- /* Build an array to hold the content items. We need to combine the results from a
- a number of queries to build the full map */
- $jsCode = 'var tinyMCELinkList = new Array(';
-
- /* Section Query */
- $section_query = "select id as secid, title as sec_title
- from #__sections
- order by ordering";
- $database->setQuery($section_query);
- $section_rows = $database->loadObjectList();
-
- //Start the list
- foreach($section_rows as $section_row) {
- //Start the section
- $section_link = sefRelToAbs("index.php?option=com_content&task=section&id=$section_row->secid");
- $title_keyword = T_('Section');
- $jsCode .= "[\"$title_keyword: ".addslashes($section_row->sec_title)."\", \"$section_link\"],";
-
- /* Category Query */
- $cat_query = "select id as catid, title as cat_title
- from #__categories
- where section = $section_row->secid
- order by ordering";
- $database->setQuery($cat_query);
- $cat_rows = $database->loadObjectList();
-
- if (count($cat_rows)>0) { // count arrary first to prevent foreach() error when array is empty
- foreach($cat_rows as $cat_row) {
- //Start the category
- //Find the correct ItemID
- $itemid_query = "select id
- from #__menu
- where name = '$cat_row->cat_title'
- and type='content_category'";
- $database->setQuery($itemid_query);
- $ItemID = $database->loadResult();
- //Since we must have an ItemID default to 1 if not found to prevent "You are not authorized" errors
- if (empty($ItemID)) {
- $ItemID=1;
- }
-
- $cat_link = sefRelToAbs("index.php?option=com_content&task=category§ionid=$section_row->secid&id=$cat_row->catid&Itemid=$ItemID");
- $cat_keyword = T_('Category');
- $jsCode .= "[\"|_$cat_keyword: ".addslashes($cat_row->cat_title)."\", \"$cat_link\"],";
-
- /* Content Query */
- $content_query = "select id as content_id, title as content_title
- from #__content
- where sectionid = $section_row->secid
- and catid = $cat_row->catid
- order by ordering";
-
- $database->setQuery($content_query);
- $content_rows = $database->loadObjectList();
-
- if (count($content_rows)>0) { // count arrary first to prevent foreach() error when array is empty
- foreach($content_rows as $content_row) {
- //Generate content items
- $content_link = sefRelToAbs("index.php?option=com_content&task=view&id=$content_row->content_id");
- $content_keyword = T_('Content Item');
- $jsCode .= "[\"|__$content_keyword: ".addslashes($content_row->content_title)."\", \"$content_link\"],";
- } // End content_rows foreach
-
- } // End content_rows if
- } //End cat_rows foreach
-
- } //End cat_rows if
- } //End section_rows
-
- /* Static Content Query */
- $static_query = "select id as content_id, title as content_title
- from #__content
- where sectionid = 0
- and catid = 0
- order by ordering";
- $database->setQuery($static_query);
- $static_rows = $database->loadObjectList();
-
- if (count($static_rows)>0) { // count arrary first to prevent foreach() error when arrary is empty
- foreach($static_rows as $static_row) {
- //Start the section
- $static_link = sefRelToAbs("index.php?option=com_content&task=view&id=$static_row->content_id");
- $scontent_keyword = T_('Static Content Item');
- $jsCode .= "[\"|_$scontent_keyword: ".addslashes($static_row->content_title)."\", \"$static_link\"],";
- } //End static_rows foreach
-
- } //End static_rows if
- $jsCode = substr($jsCode, 0, strlen($jsCode)-1); //remove final comma
- $jsCode .= ");"; //end the js array
- //Dump out the newly assembled list of images for MOStlyCE
- echo $jsCode;
- }
- /**
- * Purpose: Used to recurse through the images dir/sub-dir structure and build a
- * list that can be used to hand back a JS array to TinyMCE's image list parameter
- *
- * Note: Based on lixlpixel recursive PHP function (http://lixlpixel.org/recursive_function/php/recursive_directory_scan/)
- **/
- function scan_directory_recursively($directory, $filter=FALSE) {
- global $imagesArray;
- if (substr($directory,-1) == '/') {
- $directory = substr($directory,0,-1);
- }
- if (!file_exists($directory) || !is_dir($directory)) {
- return FALSE;
- } else if (is_readable($directory)) {
- $directory_list = opendir($directory);
- while ($file = readdir($directory_list)) {
- if ($file != '.' && $file != '..') {
- $path = $directory.'/'.$file;
- if (is_readable($path)) {
- $subdirectories = explode('/',$path);
- if (is_dir($path)) {
- $directory_tree[] = array(
- 'path' => $path,
- 'name' => end($subdirectories),
- 'kind' => 'directory',
- 'content' => scan_directory_recursively($path, $filter));
- } else if (is_file($path)) {
- $imagesArray[] = $path; //Add to our master array
- $extension = end(explode('.',end($subdirectories)));
- if ($filter === FALSE || $filter == $extension) {
- $directory_tree[] = array(
- 'path' => $path,
- 'name' => end($subdirectories),
- 'extension' => $extension,
- 'size' => filesize($path),
- 'kind' => 'file');
- }
- }
- }
- }
- }
- closedir($directory_list);
- } else {
- return FALSE;
- }
-
- return $imagesArray;
- }
- ?>