Skip to content

Commit

Permalink
Merge pull request techjoomla#144 from pranotiTechjoomla/sort
Browse files Browse the repository at this point in the history
Task #148927 feat: Add reports API plugin in TJReport package
  • Loading branch information
manojLondhe authored Nov 15, 2019
2 parents b55d986 + c5f2be4 commit 8f09f45
Show file tree
Hide file tree
Showing 7 changed files with 239 additions and 0 deletions.
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"
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"
43 changes: 43 additions & 0 deletions tjreports/plugins/api/reports/reports.php
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);
}
}
21 changes: 21 additions & 0 deletions tjreports/plugins/api/reports/reports.xml
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>
61 changes: 61 additions & 0 deletions tjreports/plugins/api/reports/reports/filters.php
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);
}
}
97 changes: 97 additions & 0 deletions tjreports/plugins/api/reports/reports/report.php
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);
}
}
3 changes: 3 additions & 0 deletions tjreports/script.tjreports.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ class Com_TjreportsInstallerScript
),
'user' => array(
'tjreportsindexer' => 0
),
'api' => array(
'reports' => 1
)
)
);
Expand Down

0 comments on commit 8f09f45

Please sign in to comment.