forked from techjoomla/com_tjreports
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request techjoomla#144 from pranotiTechjoomla/sort
Task #148927 feat: Add reports API plugin in TJReport package
- Loading branch information
Showing
7 changed files
with
239 additions
and
0 deletions.
There are no files selected for viewing
7 changes: 7 additions & 0 deletions
7
tjreports/plugins/api/reports/language/en-GB/en-GB.plg_api_reports.ini
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
; @package Com_Tjreports | ||
; @copyright Copyright © 2009-2018 Techjoomla. All rights reserved. | ||
; @license GNU General Public License version 2, or later | ||
; Note: All ini files need to be saved as UTF-8 | ||
|
||
PLG_API_REPORTS_REPORT_NAME_MISSSING="Please enter report name" | ||
PLG_API_REPORTS_REPORT_NAME_INVALID="Please enter valid report name" |
7 changes: 7 additions & 0 deletions
7
tjreports/plugins/api/reports/language/en-GB/en-GB.plg_api_reports.sys.ini
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
; @package Com_Tjreports | ||
; @copyright Copyright © 2009-2018 Techjoomla. All rights reserved. | ||
; @license GNU General Public License version 2, or later | ||
; Note: All ini files need to be saved as UTF-8 | ||
|
||
PLG_API_REPORTS="TJ Reports Api Plugin" | ||
PLG_API_REPORTS_DESCRIPTION="TJ Reports Api Plugin" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
<?php | ||
/** | ||
* @package Tjreports | ||
* @subpackage com_api | ||
* | ||
* @author Techjoomla <[email protected]> | ||
* @copyright Copyright (C) 2009 - 2018 Techjoomla. All rights reserved. | ||
* @license GNU General Public License version 2 or later; see LICENSE.txt | ||
*/ | ||
|
||
// No direct access. | ||
defined('_JEXEC') or die; | ||
|
||
jimport('joomla.plugin.plugin'); | ||
JLoader::import('components.com_tjreports.models.report', JPATH_SITE); | ||
|
||
/** | ||
* Tjreports API plugin | ||
* | ||
* @since 1.0 | ||
*/ | ||
class PlgAPIReports extends ApiPlugin | ||
{ | ||
/** | ||
* Constructor | ||
* | ||
* @param STRING &$subject subject | ||
* @param array $config config | ||
* | ||
* @since 1.0 | ||
*/ | ||
public function __construct(&$subject, $config = array()) | ||
{ | ||
parent::__construct($subject, $config = array()); | ||
|
||
// Set resource path | ||
ApiResource::addIncludePath(dirname(__FILE__) . '/reports'); | ||
|
||
// Load language files | ||
$lang = JFactory::getLanguage(); | ||
$lang->load('plg_api_reports', JPATH_SITE . "/plugins/api/reports/", 'en-GB', true); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<extension version="3.0.0" type="plugin" group="api" method="upgrade"> | ||
<name>PLG_API_REPORTS</name> | ||
<version>1.0</version> | ||
<creationDate>28th May 2018</creationDate> | ||
<author>Techjoomla</author> | ||
<authorEmail>[email protected]</authorEmail> | ||
<authorUrl>https://techjoomla.com</authorUrl> | ||
<copyright>Techjoomla. All rights reserved.</copyright> | ||
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license> | ||
<description>PLG_API_REPORTS_DESCRIPTION</description> | ||
<files> | ||
<filename plugin="reports">reports.php</filename> | ||
<folder>reports</folder> | ||
<folder>language</folder> | ||
</files> | ||
<languages folder="language"> | ||
<language tag="en-GB">en-GB/en-GB.plg_api_reports.ini</language> | ||
<language tag="en-GB">en-GB/en-GB.plg_api_reports.sys.ini</language> | ||
</languages> | ||
</extension> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
<?php | ||
/** | ||
* @package Tjreports | ||
* @subpackage com_api | ||
* | ||
* @author Techjoomla <[email protected]> | ||
* @copyright Copyright (C) 2009 - 2018 Techjoomla. All rights reserved. | ||
* @license GNU General Public License version 2 or later; see LICENSE.txt | ||
*/ | ||
|
||
// No direct access. | ||
defined('_JEXEC') or die; | ||
|
||
/** | ||
* Tjreports API report class | ||
* | ||
* @since 1.0.0 | ||
*/ | ||
class ReportsApiResourceFilters extends ApiResource | ||
{ | ||
/** | ||
* Function get filters data | ||
* | ||
* @return boolean | ||
*/ | ||
public function get() | ||
{ | ||
$app = JFactory::getApplication(); | ||
$jinput = $app->input; | ||
$reportName = $jinput->getString('id'); | ||
|
||
if (!isset($reportName)) | ||
{ | ||
ApiError::raiseError(400, JText::_('PLG_API_REPORTS_REPORT_NAME_MISSSING'), 'APIValidationException'); | ||
} | ||
|
||
$lang = JFactory::getLanguage(); | ||
//load default joomla language file | ||
$lang->load('', JPATH_ADMINISTRATOR, 'en-GB', true); | ||
|
||
// Make object of the tjreports plugin to load filters for | ||
JLoader::import('plugins.tjreports.' . $reportName . "." . $reportName, JPATH_SITE); | ||
$className = 'TjreportsModel' . ucfirst($reportName); | ||
|
||
if (!class_exists($className)) | ||
{ | ||
ApiError::raiseError(400, JText::_('PLG_API_REPORTS_REPORT_NAME_INVALID'), 'APIValidationException'); | ||
} | ||
|
||
$reportPlugin = new $className; | ||
|
||
$filters = $reportPlugin->displayFilters(); | ||
$filter_array = []; | ||
foreach ($filters[0] as $key => $value) { | ||
$value['name'] = $key; | ||
$filter_array[] = $value; | ||
} | ||
|
||
$this->plugin->setResponse($filter_array); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
<?php | ||
/** | ||
* @package Tjreports | ||
* @subpackage com_api | ||
* | ||
* @author Techjoomla <[email protected]> | ||
* @copyright Copyright (C) 2009 - 2018 Techjoomla. All rights reserved. | ||
* @license GNU General Public License version 2 or later; see LICENSE.txt | ||
*/ | ||
|
||
// No direct access. | ||
defined('_JEXEC') or die; | ||
|
||
/** | ||
* Tjreports API report class | ||
* | ||
* @since 1.0.0 | ||
*/ | ||
class ReportsApiResourceReport extends ApiResource | ||
{ | ||
/** | ||
* Function to get report data from tjreports plugin | ||
* | ||
* @return json | ||
*/ | ||
public function post() | ||
{ | ||
$app = JFactory::getApplication(); | ||
$jinput = $app->input; | ||
$formData = $jinput->post; | ||
$reportName = $app->input->getString('id'); | ||
|
||
if (empty($reportName)) | ||
{ | ||
$reportName = $formData->getString('report'); | ||
} | ||
|
||
if (!isset($reportName)) | ||
{ | ||
ApiError::raiseError(400, JText::_('PLG_API_REPORTS_REPORT_NAME_MISSSING'), 'APIValidationException'); | ||
} | ||
|
||
// Create object of tjreports plugin class | ||
|
||
JLoader::import('plugins.tjreports.' . $reportName . "." . $reportName, JPATH_SITE); | ||
$className = 'TjreportsModel' . ucfirst($reportName); | ||
|
||
if (!class_exists($className)) | ||
{ | ||
ApiError::raiseError(400, JText::_('PLG_API_REPORTS_REPORT_NAME_INVALID'), 'APIValidationException'); | ||
} | ||
|
||
$reportPlugin = new $className; | ||
|
||
// Load language files | ||
$lang = JFactory::getLanguage(); | ||
$lang->load('com_tjreports', JPATH_ADMINISTRATOR, 'en-GB', true); | ||
$lang->load('plg_tjreports_' . $reportName, JPATH_SITE . "/plugins/tjreports/" . $reportName, 'en-GB', true); | ||
|
||
// Get filters and cols | ||
$reportId = $reportPlugin->getDefaultReport($reportName); | ||
$reportFilters = ($formData->get('filters')) ? $formData->get('filters') : []; | ||
$reportCols = ($formData->get('colToshow')) ? $formData->get('colToshow') : []; | ||
|
||
$reportPlugin->setState('filters', $reportFilters); | ||
$reportPlugin->setState('colToshow', $reportCols); | ||
$reportPlugin->setState('reportId', $reportId); | ||
|
||
// Get results and errors if any | ||
$report = $reportPlugin->getItems(); | ||
$errors = $reportPlugin->getTJRMessages(); | ||
|
||
if (!empty($errors)) | ||
{ | ||
ApiError::raiseError(400, $errors[0], 'APIValidationException'); | ||
} | ||
|
||
// @TODO Handle else condition first to reduce nesting | ||
if (!empty($reportCols)) | ||
{ | ||
foreach ($report as $key => $value) | ||
{ | ||
foreach ($value as $k => $v) | ||
{ | ||
if (!in_array($k, $reportCols)) | ||
{ | ||
unset($value[$k]); | ||
} | ||
} | ||
|
||
$report[$key] = $value; | ||
} | ||
} | ||
|
||
$this->plugin->setResponse($report); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters