Current File : /home/pacjaorg/public_html/kmm/plugins/djclassifieds/conditionalfields/conditionalfields.php
<?php
/**
 * @package DJ-Classifieds
 * @copyright Copyright (C) DJ-Extensions.com, All rights reserved.
 * @license http://www.gnu.org/licenses GNU/GPL
 * @author url: http://dj-extensions.com
 * @author email: contact@dj-extensions.com
 */

defined ( '_JEXEC' ) or die ( 'Restricted access' );

class plgDJClassifiedsConditionalfields extends JPlugin
{
	protected static $trigger_fields = array();

	public function __construct(& $subject, $config)
	{
		parent::__construct ( $subject, $config );
		$this->loadLanguage();
	}

	static function getTriggerFields()
    {
        if(empty(self::$trigger_fields)){
			$db = JFactory::getDBO();
			$query = "SELECT DISTINCT cf.trig_field_id "
			."FROM #__djcf_fields f "
			."INNER JOIN #__djcf_conditionalfields cf ON f.id=cf.field_id "
			."INNER JOIN #__djcf_fields ft ON cf.trig_field_id=ft.id "
			."WHERE f.published=1 AND ft.published=1 "
			."AND f.edition_blocked=0 AND ft.edition_blocked=0";
			
            $db->setQuery($query);
            self::$trigger_fields = $db->loadColumn();
        }
        return self::$trigger_fields;
	}

	//function onBeforeAdminDJClassifiedsSaveField(&$row)
	function onDJClassifiedsModelAdminAfterSave($context, $item)
	{
		if($context != 'com_djclassifieds.field'){
			return;
		}

		$app = JFactory::getApplication();
		$db = JFactory::getDBO();

		$field_id = $item->id;
		if(!$field_id){
			return;
		}

		$trig_field_id = $app->input->getInt('trig_field_id', '0');
		$trig_value = $app->input->getStr('trig_value', '');
		
		if(is_array($app->input->getStr('trig_value'))){
			$trig_value = implode(';', $app->input->getStr('trig_value'));
		}elseif(empty($app->input->getStr('trig_value'))){ // handling empty checkboxes
			$trig_value = '';
		}

		$query = "DELETE FROM #__djcf_conditionalfields WHERE field_id=".$field_id;
		$db->setQuery($query);
		$db->execute();

		if($trig_field_id){
			$query = "INSERT INTO #__djcf_conditionalfields(field_id, trig_field_id, trig_value) VALUES(".$field_id.", ".$trig_field_id.", ".$db->quote($trig_value).")";
			$db->setQuery($query);
			$db->execute();
		}
	}

	function onAdminFieldEditTabTitle($field)
	{
		$document= JFactory::getDocument(); 
		$document->addStyleSheetVersion(JURI::root(true).'/plugins/djclassifieds/conditionalfields/assets/css/style.css');

		$output = '<li>';
			$output .= '<a href="#conditional" data-toggle="tab">'.JText::_('PLG_DJCLASSIFIEDS_CONDITIONALFIELDS_CONDITIONAL_OPTIONS').'</a>';
		$output .= '</li>';

		return $output;
	}

	function onAdminFieldEditTabContent($field)
	{
		$db = JFactory::getDBO();

		$output = '<div class="tab-pane" id="conditional">';
		if($field->id){	
			$query = "SELECT * FROM #__djcf_conditionalfields WHERE field_id=".$field->id;
			$db->setQuery($query);
			$conditionalfield = $db->LoadObject();

			JForm::addFormPath(JPATH_PLUGINS . '/djclassifieds/conditionalfields/forms');
			$form = JForm::getInstance('djclassifieds.field', 'field');
			$form->bind($conditionalfield);
			foreach($form->getFieldset('conditional') as $f){
				$output .= $f->renderField();
			}
		 }else{
			$output .= JText::_('PLG_DJCLASSIFIEDS_CONDITIONALFIELDS_SAVE_FIELD_FIRST');
		}
		$output .= '</div>';

		/*
		$js = "<script>
			jQuery(function($){
				toggleConditional();
				$('#source').change(function(){
					toggleConditional();
				})
				function toggleConditional(){
					if(['0', '1', '3'].includes($('#source').val())){
						$('a[href=\"#conditional\"]').closest('li').show();
					}else{
						$('a[href=\"#conditional\"]').closest('li').hide();
					}
				}
			})
		</script>";

		$output .= $js;
		*/

		return $output;
	}

	function onAdminPrepareItemEdit(&$item, &$images, &$payment, &$custom_contact, &$bids, &$buynow)
	{
		$document = JFactory::getDocument();

		$ajaxData = array();
		if($item->id) $ajaxData['id'] = $item->id;
		
		$document->addScriptVersion(JURI::root(true).'/plugins/djclassifieds/conditionalfields/assets/js/conditionalfields.js');
		$document->addScriptDeclaration("jQuery(function(){ DJConditionalFieldsInit('".JURI::root().'administrator/'."', null, '#ex_fields', 'item.getFields', null, ".($ajaxData ? json_encode($ajaxData) : '{}')."); });");
		$document->addScriptDeclaration("jQuery(function(){ DJConditionalFieldsInit('".JURI::root().'administrator/'."', null, '#contact_ex_fields', 'item.getContactFields', null, ".($ajaxData ? json_encode($ajaxData) : '{}')."); });");
	}

	function onDJClassifiedsAdminPrepareProfileEdit(&$profile)
	{
		$document = JFactory::getDocument();

		$ajaxData = array(
			'user_id' => $profile->user_id,
			'group_id' => $profile->group_id
		);
		
		$document->addScriptVersion(JURI::root(true).'/plugins/djclassifieds/conditionalfields/assets/js/conditionalfields.js');
		$document->addScriptDeclaration("jQuery(function(){ DJConditionalFieldsInit('".JURI::root().'administrator/'."', null, '#profile_ex_fields', 'profile.getProfileFields', null, ".($ajaxData ? json_encode($ajaxData) : '{}')."); });");
	}

	function onItemEditForm(&$item, &$par, $subscr_id, &$promotions, &$cats, &$types)
	{
		$app = JFactory::getApplication();
		$document = JFactory::getDocument();

		$ajaxData = array();
		if($item->id) $ajaxData['id'] = $item->id;
		if($item->token) $ajaxData['token'] = $item->token;
		if($app->input->getInt('copy')) $ajaxData['id_copy'] = $app->input->getInt('copy');
		
		$document->addScriptVersion(JURI::root(true).'/plugins/djclassifieds/conditionalfields/assets/js/conditionalfields.js');
		$document->addScriptDeclaration("jQuery(function(){ DJConditionalFieldsInit('".JURI::root()."', 'additem', '#ex_fields', 'getFields', null, ".($ajaxData ? json_encode($ajaxData) : '{}')."); });");
		$document->addScriptDeclaration("jQuery(function(){ DJConditionalFieldsInit('".JURI::root()."', 'additem', '#contact_ex_fields', 'getContactFields', null, ".($ajaxData ? json_encode($ajaxData) : '{}')."); });");
	}
	function onDJClassifiedsPrepareProfile(&$profile, &$par, $context)
	{
			$document = JFactory::getDocument();
			$document->addScriptVersion(JURI::root(true).'/plugins/djclassifieds/conditionalfields/assets/js/conditionalfields.js');
			$document->addScriptDeclaration("jQuery(function(){ DJConditionalFieldsInit('".JURI::root()."', 'item', '#ask_ex_fields', 'getAskFields', null, {}); });");
	}
	function onPrepareDJClassifiedsSearchModule($params, $module)
	{
		$app = JFactory::getApplication();
		$document = JFactory::getDocument();

		$ajaxData = array(
			'se' => $app->input->getInt('se', 0)
		);
		$document->addScriptVersion(JURI::root(true).'/plugins/djclassifieds/conditionalfields/assets/js/conditionalfields.js');
		$document->addScriptDeclaration("jQuery(function(){ DJConditionalFieldsInit('".JURI::root()."', 'item', '#search".$module->id."_ex_fields', 'getSearchFields', '".$module->id."', ".($ajaxData ? json_encode($ajaxData) : '{}')."); });");
	}
	function onUserRegistrationForm()
	{
		$document = JFactory::getDocument();

		$document = JFactory::getDocument();
		$document->addScriptVersion(JURI::root(true).'/plugins/djclassifieds/conditionalfields/assets/js/conditionalfields.js');
		$document->addScriptDeclaration("jQuery(function(){ DJConditionalFieldsInit('".JURI::root()."', 'registration', '#profile_ex_fields', 'getProfileFields', null, {}); });");
	}
	function onProfileEditFormSections($profile, &$custom_fields, &$custom_values_c, &$profile_image, &$par)
	{
		$document = JFactory::getDocument();

		$ajaxData = array(
			'user_id' => $profile->user_id,
			'group_id' => $profile->group_id
		);
		$document->addScriptVersion(JURI::root(true).'/plugins/djclassifieds/conditionalfields/assets/js/conditionalfields.js');
		$document->addScriptDeclaration("jQuery(function(){ DJConditionalFieldsInit('".JURI::root()."', 'profileedit', '#profile_ex_fields', 'getProfileFields', null, ".($ajaxData ? json_encode($ajaxData) : '{}')."); });");
	}

	function onDJClassifiedsAdminGetFormFieldsQuery(&$query, $context = 'item')
	{
		$this->onDJClassifiedsGetFormFieldsQuery($query, $context);
	}

	function onDJClassifiedsGetFormFieldsQuery(&$query, $context = 'additem')
	{
		$app = JFactory::getApplication();

		$trig_field_id = $app->input->getInt('trigger_field_id', 0);
		$trig_field_val = $app->input->getStr('trigger_field_value', '');

		$query->join('LEFT', '#__djcf_conditionalfields cf ON f.id = cf.field_id');

        if($trig_field_id){
			$vals = array_filter(explode(';', $trig_field_val));
			$query->where('cf.trig_field_id = '.$trig_field_id);
            if($vals){
				$conditional_where = "(";
                foreach($vals as $key => $val){
                    $conditional_where .= $key ? " OR " : "";
                    $conditional_where .= "CONCAT(';',cf.trig_value,';') LIKE '%;".addslashes($val).";%'";
				}
				$conditional_where .= ")";
				$query->where($conditional_where);
            }else{
				$query->where("cf.trig_value = ''");
            }
        }else{
			$query->where('cf.trig_field_id IS NULL');
		}
	}

	function onDJClassifiedsRenderFormFieldClass($f)
	{
		if(in_array($f->id, self::getTriggerFields())){
			return 'trigger_field';
		}
		return '';
	}
	function onDJClassifiedsAdminRenderFormFieldClass($f)
	{
		return $this->onDJClassifiedsRenderFormFieldClass($f);
	}
	
	public function onAjaxGetTrigValues(){
		header("Content-type: text/html; charset=utf-8");
		$app = JFactory::getApplication();
		$db = JFactory::getDBO();

		$trig_field_id = $app->input->get('trig_field_id', '');
		$field_id = $app->input->get('field_id', '');

		if($trig_field_id){
			$query = "SELECT f.*, cf.trig_field_id, cf.trig_value "
					."FROM #__djcf_fields f LEFT JOIN #__djcf_conditionalfields cf ON f.id=cf.field_id "
					."WHERE f.id=".$trig_field_id;
			$db->setQuery($query);
			$f = $db->loadObject();

			if($field_id){
				$query = "SELECT f.*, cf.trig_field_id, cf.trig_value "
				."FROM #__djcf_fields f LEFT JOIN #__djcf_conditionalfields cf ON f.id=cf.field_id "
				."WHERE f.id=".$field_id;
				$db->setQuery($query);
				$current_f = $db->loadObject();
			}

			$current_val = !empty($current_f->trig_value) && $current_f->trig_field_id == $f->id ? $current_f->trig_value : '';
			if(in_array($f->type, array('checkbox', 'radio', 'selectlist'))){
				$val = array_filter(explode(';', $f->values));
				echo '<fieldset>';
				foreach($val as $i => $v){
					echo '<label><input'.($current_val && strstr(';'.$current_val.';', ';'.$val[$i].';') ? ' checked' : '').' type="checkbox" name="trig_value[]" value="'.$val[$i].'">'.$val[$i].'</label>';
				}
				echo '</fieldset>';
			}
			// elseif(in_array($f->type, array('date', 'date_from_to'))){
			// 	echo JHTML::calendar($current_val, 'trig_value', 'trig_value', null, array('class' => 'djcalendar'));
			// }
			else{
				echo '<input type="text" name="trig_value" value="'.$current_val.'">';
			}
		}

		die();
	}

	function onDJClassifiedsAdminFieldsDisplayAfterName($field)
	{
		$db = JFactory::getDBO();
		$query = "SELECT f.* "
		."FROM #__djcf_fields f "
		."INNER JOIN #__djcf_conditionalfields cf ON f.id=cf.trig_field_id "
		."WHERE cf.field_id=".$field->id;
		$db->setQuery($query);
		$trig_field = $db->loadObject();

		if($trig_field){
			return '&nbsp;<a href="index.php?option=com_djclassifieds&task=field.edit&id='.$trig_field->id.'" target="_blank"><span style="color:#CECECE" class="icon-stack" title="'.JText::_('PLG_DJCLASSIFIEDS_CONDITIONALFIELDS_CONFIG_FIELD_TRIG_FIELD_ID').': '.$trig_field->name.'"></span></a>';
		}
	}
}
Site is undergoing maintenance

PACJA Events

Maintenance mode is on

Site will be available soon. Thank you for your patience!