%PDF- %PDF-
| Direktori : /home1/lightco1/www/plugins/system/baforms/ |
| Current File : //home1/lightco1/www/plugins/system/baforms/baforms.php |
<?php
/**
* @package BaForms
* @author Balbooa http://www.balbooa.com/
* @copyright Copyright @ Balbooa
* @license http://www.gnu.org/licenses/gpl.html GNU/GPL
*/
defined('_JEXEC') or die;
jimport( 'joomla.plugin.plugin' );
jimport('joomla.filesystem.folder');
class plgSystemBaforms extends JPlugin
{
/**
* Constructor.
*
* @access protected
* @param object $subject The object to observe
* @param array $config An array that holds the plugin configuration
* @since 1.0
*/
public function __construct( &$subject, $config )
{
$doc = JFactory::getDocument();
if ($doc->getType() != 'html') {
return;
}
parent::__construct( $subject, $config );
}
function onAfterInitialise()
{
$app = JFactory::getApplication();
if ($app->isSite()) {
$path = JPATH_ROOT . '/components/com_baforms/helpers/baforms.php';
$dir = $this->checkOverride();
if ($dir) {
$path = $dir;
}
JLoader::register('baformsHelper', $path);
}
}
public function checkOverride()
{
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('template')
->from('#__template_styles')
->where('`client_id`=0')
->where('`home`=1');
$db->setQuery($query);
$template = $db->loadResult();
$path = JPATH_ROOT. '/templates/' .$template. '/html/com_baforms';
if (JFolder::exists($path)) {
if (JFolder::exists($path. '/helpers')) {
$file = JFolder::files($path. '/helpers', 'baforms.php');
if (!empty($file)) {
return $path. '/helpers/baforms.php';
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
function onBeforeCompileHead()
{
$app = JFactory::getApplication();
if ($app->isSite()) {
$loaded = JLoader::getClassList();
if (isset($loaded['baformshelper'])) {
$a_id = $app->input->get('a_id');
if (empty($a_id)) {
baformsHelper::addStyle();
}
}
}
}
function onAfterRender()
{
$app = JFactory::getApplication();
$a_id = $app->input->get('a_id');
if ($app->isSite() && empty($a_id)) {
$loaded = JLoader::getClassList();
if (isset($loaded['baformshelper'])) {
$html = JResponse::getBody();
$html = $this->getContent($html);
JResponse::setBody($html);
}
}
}
function getContent($body)
{
$regex = '/\[forms ID=+(.*?)\]/i';
preg_match_all($regex, $body, $matches, PREG_SET_ORDER);
if ($matches) {
foreach ($matches as $index => $match) {
$form = explode(',', $match[1]);
$formId = $form[0];
if (isset($formId)) {
if (baformsHelper::checkForm($formId)) {
$doc = JFactory::getDocument();
$form = baformsHelper::drawHTMLPage($formId);
if (!array_key_exists(JURI::root() . 'components/com_baforms/assets/js/ba-form.js', $doc->_scripts)) {
$form = $this->drawScripts($formId).$form;
}
$body = @preg_replace("|\[forms ID=".$formId."\]|", addcslashes($form, '\\$'), $body, 1);
}
}
}
}
return $body;
}
public function drawScripts($id)
{
$doc = JFactory::getDocument();
$scripts = $doc->_scripts;
$array = array();
$map = true;
foreach ($scripts as $key=>$script) {
if (strpos($key, 'maps.googleapis.com/maps/api/js')) {
$map = false;
}
$key = explode('/', $key);
$array[] = end($key);
}
$html = '';
if (!in_array('jquery.min.js', $array) && !in_array('jquery.js', $array)) {
$html .= '<script type="text/javascript" src="' .JUri::root(true). '/media/jui/js/jquery.min.js"></script>';
}
if (!in_array('bootstrap.min.js', $array) && !in_array('bootstrap.js', $array)) {
$html .= '<script type="text/javascript" src="' .JUri::root(true) . '/media/jui/js/bootstrap.min.js"></script>';
}
$captcha = baformsHelper::getCaptcha($id);
if ($captcha != '0') {
$captch = JCaptcha::getInstance($captcha);
$captch->initialise($captcha);
}
$elements = baformsHelper::getElement($id);
foreach ($elements as $element) {
$element = explode('_-_', $element->settings);
if ($element[2] == 'map') {
if ($map) {
$html .= '<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"></script>';
}
}
if ($element[2] == 'date') {
$html .= '<script type="text/javascript" src="'.JUri::root(true) . '/media/system/js/calendar.js"></script>';
$html .= '<script type="text/javascript" src="'.JUri::root(true) . '/media/system/js/calendar-setup.js"></script>';
$html .= '<link rel="stylesheet" href="' .JUri::root(true) . '/media/system/css/calendar-jos.css">';
}
if ($element[2] == 'slider') {
$html .= '<script type="text/javascript" src="'.JUri::root() . 'components/com_baforms/libraries/bootstrap-slider/bootstrap-slider.js"></script>';
}
}
$html .= '<script type="text/javascript" src="' .JUri::root() . 'components/com_baforms/libraries/modal/ba_modal.js"></script>';
$html .= '<link rel="stylesheet" href="' .JURI::root() . 'components/com_baforms/assets/css/ba-style.css">';
$html .= '<script type="text/javascript" src="' .JURI::root() . 'components/com_baforms/assets/js/ba-form.js"></script>';
return $html;
}
}