Example #1
0
 function getInput($name, $id, $value, $params, $children, $j15 = 0)
 {
     $this->params = $params;
     $description = $value != '' ? $value : $this->def('description');
     // variables
     $v1 = JText::_($this->def('var1'));
     $v2 = JText::_($this->def('var2'));
     $v3 = JText::_($this->def('var3'));
     $v4 = JText::_($this->def('var4'));
     $v5 = JText::_($this->def('var5'));
     $html = JText::sprintf($description, $v1, $v2, $v3, $v4, $v5);
     $html = trim(NNFrameworkFunctions::html_entity_decoder($html));
     $html = str_replace('"', '"', $html);
     $html = str_replace('span style="font-family:monospace;"', 'span class="nn_code"', $html);
     if (!$j15 && ($this->def('label') || $value)) {
         // display as label on Joomla 1.6+ if there is more than just a description
         $html = '<fieldset id="' . $id . '" class="radio"><label>' . $html . '</label></fieldset>';
     }
     return $html;
 }
Example #2
0
 function processModule($module, $style = 'none', $overrides = array())
 {
     $db =& JFactory::getDBO();
     $where = ' AND ( title=' . $db->quote(NNFrameworkFunctions::html_entity_decoder($module)) . '';
     if (is_numeric($module)) {
         $where .= ' OR id=' . $module;
     }
     $where .= ' ) ';
     if (!$this->params->ignore_state) {
         $where .= ' AND published = 1';
     }
     $query = 'SELECT *' . ' FROM #__modules' . ' WHERE client_id = 0' . ' AND access ' . (defined('_JACL') ? 'IN (' . $this->params->aid_jaclplus . ')' : '<= ' . (int) $this->params->aid) . $where . ' ORDER BY ordering' . ' LIMIT 1';
     $db->setQuery($query);
     $module = $db->loadObject();
     $html = '';
     if ($module) {
         //determine if this is a custom module
         $module->user = substr($module->module, 0, 4) == 'mod_' ? 0 : 1;
         // set style
         $module->style = $style;
         // override module settings
         $params = '';
         foreach ($overrides as $key => $val) {
             $params .= "\n" . $key . '=' . $val;
         }
         if ($params != '') {
             $module->params = trim($module->params) . $params . "\n\n";
         }
         $document = clone JFactory::getDocument();
         $document->_type = 'html';
         $renderer = $document->loadRenderer('module');
         $html = $renderer->render($module, array('style' => $style));
     }
     return $html;
 }
Example #3
0
 private function getTitleBlock($title = '', $description = '', $start = 0, $j15 = 0)
 {
     $nostyle = $this->def('nostyle', 0);
     if ($title) {
         $title = NNFrameworkFunctions::html_entity_decoder(JText::_($title));
     }
     if ($description) {
         // variables
         $v1 = $this->def('var1');
         $v2 = $this->def('var2');
         $v3 = $this->def('var3');
         $v4 = $this->def('var4');
         $v5 = $this->def('var5');
         $description = NNFrameworkFunctions::html_entity_decoder(trim(JText::sprintf($description, $v1, $v2, $v3, $v4, $v5)));
         $description = str_replace('span style="font-family:monospace;"', 'span class="nn_code"', $description);
     }
     $html = array();
     if ($title) {
         if ($nostyle) {
             $html[] = '<div style="clear:both;"><div>';
         } else {
             $class = 'panel nn_panel nn_panel_title';
             if ($j15) {
                 $class .= ' nn_panel_15';
             }
             if ($start || $description) {
                 $class .= ' nn_panel_top';
             }
             $html[] = '<div class="' . $class . '"><div class="nn_block nn_title">';
         }
         $html[] = $title;
         $html[] = '<div style="clear: both;"></div>';
         $html[] = '</div></div>';
     }
     if ($description) {
         if ($nostyle) {
             $html[] = '<div style="clear:both;"><div>';
         } else {
             $class = 'panel nn_panel nn_panel_description';
             if ($j15) {
                 $class .= ' nn_panel_15';
             }
             if ($start) {
                 $class .= ' nn_panel_top';
             }
             if ($title) {
                 $class .= ' nn_panel_hastitle';
             }
             $html[] = '<div class="' . $class . '"><div class="nn_block nn_title">';
         }
         $html[] = $description;
         $html[] = '<div style="clear: both;"></div>';
         $html[] = '</div></div>';
     }
     return implode('', $html);
 }
Example #4
0
 function getInput($name, $id, $value, $params, $children, $j15 = 0)
 {
     $this->params = $params;
     $document = JFactory::getDocument();
     $document->addStyleSheet(JURI::root(true) . '/plugins/system/nnframework/css/style.css?v=' . $this->_version);
     $title = $this->def('label');
     $description = $this->def('description');
     $xml = $this->def('xml');
     $lang_file = $this->def('language_file');
     $image = $this->def('image');
     $image_w = $this->def('image_w');
     $image_h = $this->def('image_h');
     $url = $this->def('url');
     $help_url = $this->def('help_url');
     if ($description) {
         // variables
         $v1 = $this->def('var1');
         $v2 = $this->def('var2');
         $v3 = $this->def('var3');
         $v4 = $this->def('var4');
         $v5 = $this->def('var5');
         $description = NNFrameworkFunctions::html_entity_decoder(trim(JText::sprintf($description, $v1, $v2, $v3, $v4, $v5)));
     }
     if ($lang_file) {
         jimport('joomla.filesystem.file');
         // Include extra language file
         $language = JFactory::getLanguage();
         $lang = str_replace('_', '-', $language->getTag());
         $inc = '';
         $lang_path = 'language/' . $lang . '/' . $lang . '.' . $lang_file . '.inc.php';
         if (JFile::exists(JPATH_ADMINISTRATOR . '/' . $lang_path)) {
             $inc = JPATH_ADMINISTRATOR . '/' . $lang_path;
         } else {
             if (JFile::exists(JPATH_SITE . '/' . $lang_path)) {
                 $inc = JPATH_SITE . '/' . $lang_path;
             }
         }
         if (!$inc && $lang != 'en-GB') {
             $lang = 'en-GB';
             $lang_path = 'language/' . $lang . '/' . $lang . '.' . $lang_file . '.inc.php';
             if (JFile::exists(JPATH_ADMINISTRATOR . '/' . $lang_path)) {
                 $inc = JPATH_ADMINISTRATOR . '/' . $lang_path;
             } else {
                 if (JFile::exists(JPATH_SITE . '/' . $lang_path)) {
                     $inc = JPATH_SITE . '/' . $lang_path;
                 }
             }
         }
         if ($inc) {
             include $inc;
         }
     }
     if ($title) {
         $title = JText::_($title);
     }
     if ($description) {
         $description = str_replace('span style="font-family:monospace;"', 'span class="nn_code"', $description);
         if ($description['0'] != '<') {
             $description = '<p>' . $description . '</p>';
         }
     }
     if ($xml) {
         $xml = JApplicationHelper::parseXMLInstallFile(JPATH_SITE . '/' . $xml);
         $version = 0;
         if ($xml && isset($xml['version'])) {
             $version = $xml['version'];
         }
         if ($version) {
             if (!(strpos($version, 'PRO') === false)) {
                 $version = str_replace('PRO', '', $version);
                 $version .= ' <small style="color:green">[PRO]</small>';
             } else {
                 if (!(strpos($version, 'FREE') === false)) {
                     $version = str_replace('FREE', '', $version);
                     $version .= ' <small style="color:green">[FREE]</small>';
                 }
             }
             if ($title) {
                 $title .= ' v';
             } else {
                 $title = JText::_('Version') . ' ';
             }
             $title .= $version;
         }
     }
     if ($url) {
         $url = '<a href="' . $url . '" target="_blank" title="' . preg_replace('#<[^>]*>#', '', $title) . '">';
     }
     $html = array();
     $html[] = '<div class="panel nn_panel' . ($j15 ? ' nn_panel_15' : '') . '"><div class="nn_block nn_title">';
     if ($image) {
         $image = str_replace('/', "\n", str_replace('\\', '/', $image));
         $image = explode("\n", trim($image));
         if ($image['0'] == 'administrator') {
             $image['0'] = JURI::base(true);
         } else {
             $image['0'] = JURI::root(true) . '/' . $image['0'];
         }
         $image = '<img src="' . implode('/', $image) . '" border="0" style="float:right;margin-left:10px" alt=""';
         if ($image_w) {
             $image .= ' width="' . $image_w . '"';
         }
         if ($image_h) {
             $image .= ' height="' . $image_h . '"';
         }
         $image .= ' />';
         if ($url) {
             $image = $url . $image . '</a>';
         }
         $html[] = $image;
     }
     if ($title) {
         if ($url) {
             $title = $url . $title . '</a>';
         }
         $html[] = '<h4 style="margin: 0px;">' . NNFrameworkFunctions::html_entity_decoder($title) . '</h4>';
     }
     if ($description) {
         $html[] = $description;
     }
     if ($help_url) {
         $html[] = '<p><a href="' . $help_url . '" target="_blank" title="' . JText::_('NN_MORE_INFO') . '">' . JText::_('NN_MORE_INFO') . '...</a></p>';
     }
     $html[] = '<div style="clear: both;"></div>';
     $html[] = '</div></div>';
     return implode('', $html);
 }
Example #5
0
 function processModule($module, $style = 'none', $overrides = array())
 {
     $db =& JFactory::getDBO();
     $where = ' AND ( title=' . $db->quote(NNFrameworkFunctions::html_entity_decoder($module)) . '';
     if (is_numeric($module)) {
         $where .= ' OR id=' . $module;
     }
     $where .= ' ) ';
     if (!$this->params->ignore_state) {
         $where .= ' AND published = 1';
     }
     $query = 'SELECT *' . ' FROM #__modules' . ' WHERE client_id = 0' . ' AND access IN (' . implode(',', $this->params->aid) . ')' . $where . ' ORDER BY ordering' . ' LIMIT 1';
     $db->setQuery($query);
     $module = $db->loadObject();
     $html = '';
     if ($module) {
         //determine if this is a custom module
         $module->user = substr($module->module, 0, 4) == 'mod_' ? 0 : 1;
         // set style
         $module->style = $style;
         // override module parameters
         $params = json_decode($module->params);
         foreach ($overrides as $key => $val) {
             if (isset($params->{$key}) && is_array($params->{$key})) {
                 $val = explode(',', $val);
             }
             $params->{$key} = $val;
         }
         $module->params = json_encode($params);
         $document = clone JFactory::getDocument();
         $document->_type = 'html';
         $renderer = $document->loadRenderer('module');
         $html = $renderer->render($module, array('style' => $style));
     }
     return $html;
 }
	function getInput( $name, $id, $value, $params, $children, $j15 = 0 )
	{
		$this->params = $params;

		$label = $this->def( 'label' );
		$description = $this->def( 'description' );
		$lang_file = $this->def( 'language_file' );
		$show_apply = $this->def( 'show_apply' );

		$html = '</td></tr></table></div></div>';
		$html .= '<div class="panel"><h3 class="jpane-toggler title" id="advanced-page"><span>';
		$html .= NNFrameworkFunctions::html_entity_decoder( JText::_( $label ) );
		$html .= '</span></h3>';
		$html .= '<div class="jpane-slider content"><table width="100%" class="paramlist admintable" cellspacing="1"><tr><td colspan="2" class="paramlist_value">';

		if ( $description ) {
			// variables
			$v1 = $this->def( 'var1' );
			$v2 = $this->def( 'var2' );
			$v3 = $this->def( 'var3' );
			$v4 = $this->def( 'var4' );
			$v5 = $this->def( 'var5' );

			$description = NNFrameworkFunctions::html_entity_decoder( trim( JText::sprintf( $description, $v1, $v2, $v3, $v4, $v5 ) ) );
		}

		if ( $lang_file ) {
			jimport( 'joomla.filesystem.file' );

			// Include extra language file
			$language = JFactory::getLanguage();
			$lang = str_replace( '_', '-', $language->getTag() );

			$inc = '';
			$lang_path = 'language/'.$lang.'/'.$lang.'.'.$lang_file.'.inc.php';
			if ( JFile::exists( JPATH_ADMINISTRATOR.'/'.$lang_path ) ) {
				$inc = JPATH_ADMINISTRATOR.'/'.$lang_path;
			} else if ( JFile::exists( JPATH_SITE.'/'.$lang_path ) ) {
				$inc = JPATH_SITE.'/'.$lang_path;
			}
			if ( !$inc && $lang != 'en-GB' ) {
				$lang = 'en-GB';
				$lang_path = 'language/'.$lang.'/'.$lang.'.'.$lang_file.'.inc.php';
				if ( JFile::exists( JPATH_ADMINISTRATOR.'/'.$lang_path ) ) {
					$inc = JPATH_ADMINISTRATOR.'/'.$lang_path;
				} else if ( JFile::exists( JPATH_SITE.'/'.$lang_path ) ) {
					$inc = JPATH_SITE.'/'.$lang_path;
				}
			}
			if ( $inc ) {
				include $inc;
			}
		}

		if ( $description ) {
			$description = str_replace( 'span style="font-family:monospace;"', 'span class="nn_code"', $description );
			if ( $description['0'] != '<' ) {
				$description = '<p>'.$description.'</p>';
			}
			$class = 'panel nn_panel nn_panel_description';
			if ( $j15 ) {
				$class .= ' nn_panel_15';
			}
			$html .= '<div class="'.$class.'"><div class="nn_block nn_title">';
			if ( $show_apply ) {
				$apply_button = '<a href="#" onclick="submitbutton( \'apply\' );" title="'.JText::_( 'Apply' ).'"><img align="right" border="0" alt="'.JText::_( 'Apply' ).'" src="images/tick.png"/></a>';
				$html .= $apply_button;
			}
			$html .= $description;
			$html .= '<div style="clear: both;"></div></div></div>';
		}

		return $html;
	}
	function getInput( $name, $id, $value, $params, $children, $j15 = 0 )
	{
		$this->params = $params;

		$start = $this->def( 'start' );
		$end = $this->def( 'end' );
		$blocktype = $this->def( 'blocktype' );

		if ( $blocktype == 'spacer' ) {
			return;
		}

		$document =& JFactory::getDocument();
		$document->addStyleSheet( JURI::root( true ).'/plugins/system/nnframework/css/style.css?v='.$this->_version );

		if ( $end ) {
			$html = '';
			if ( $j15 ) {
				$random = rand( 100000, 999999 );
				$html .= '<div id="end-'.$random.'"></div><script type="text/javascript">NNFrameworkHideTD( "end-'.$random.'" );</script>';
				$html .= '</td></tr></table>';
			} else {
				$html .= '<div style="clear: both;"></div></li></ul>';
			}
			if ( $j15 && $blocktype == 'fieldset' ) {
				$html .= '</fieldset>';
			} else {
				$html .= '</div></div>';
			}
			return $html;
		}
		$description = $this->def( 'description' );
		$nostyle = $this->def( 'nostyle' );

		$title = $this->def( 'label' );
		$lang_file = $this->def( 'language_file' );
		$message_type = $this->def( 'message_type' );
		$image = $this->def( 'image' );
		$image_w = $this->def( 'image_w' );
		$image_h = $this->def( 'image_h' );
		$show_apply = $this->def( 'show_apply' );
		$toggle = $this->def( 'toggle' );
		$tooltip = $this->def( 'tooltip' );

		// The main url
		$url = $this->def( 'url' );
		$help = $this->def( 'help_url' );
		$extension = $this->def( 'extension' );
		$xml = $this->def( 'xml' );
		$version = $this->def( 'version' );
		$version_file = $this->def( 'version_file' );

		if ( !$extension ) {
			$extension = str_replace( 'version_', '', $version_file );
		}

		$msg = '';

		if ( $description ) {
			// variables
			$v1 = $this->def( 'var1' );
			$v2 = $this->def( 'var2' );
			$v3 = $this->def( 'var3' );
			$v4 = $this->def( 'var4' );
			$v5 = $this->def( 'var5' );

			$description = NNFrameworkFunctions::html_entity_decoder( trim( JText::sprintf( $description, $v1, $v2, $v3, $v4, $v5 ) ) );
		}

		if ( $lang_file ) {
			jimport( 'joomla.filesystem.file' );

			// Include extra language file
			$language =& JFactory::getLanguage();
			$lang = str_replace( '_', '-', $language->getTag() );

			$inc = '';
			$lang_path = 'language/'.$lang.'/'.$lang.'.'.$lang_file.'.inc.php';
			if ( JFile::exists( JPATH_ADMINISTRATOR.'/'.$lang_path ) ) {
				$inc = JPATH_ADMINISTRATOR.'/'.$lang_path;
			} else if ( JFile::exists( JPATH_SITE.'/'.$lang_path ) ) {
				$inc = JPATH_SITE.'/'.$lang_path;
			}
			if ( !$inc && $lang != 'en-GB' ) {
				$lang = 'en-GB';
				$lang_path = 'language/'.$lang.'/'.$lang.'.'.$lang_file.'.inc.php';
				if ( JFile::exists( JPATH_ADMINISTRATOR.'/'.$lang_path ) ) {
					$inc = JPATH_ADMINISTRATOR.'/'.$lang_path;
				} else if ( JFile::exists( JPATH_SITE.'/'.$lang_path ) ) {
					$inc = JPATH_SITE.'/'.$lang_path;
				}
			}
			if ( $inc ) {
				include $inc;
			}
		}

		if ( $description ) {
			$description = str_replace( 'span style="font-family:monospace;"', 'span class="nn_code"', $description );
			if ( !$nostyle && $description['0'] != '<' ) {
				$description = '<p>'.$description.'</p>';
			}
		}

		if ( $nostyle && $description ) {
			return $description;
		}

		if ( $title ) {
			$title = JText::_( $title );
		}

		$user = JFactory::getUser();
		if ( strlen( $version ) && strlen( $version_file ) && ( $user->usertype == 'Super Administrator' || $user->usertype == 'Administrator' ) ) {
			// Import library dependencies
			require_once JPATH_PLUGINS.'/system/nnframework/helpers/versions.php';
			$versions = NNVersions::instance();

			$msg = $versions->getMessage( $extension, $xml, $version, 1 );
			if ( $version ) {
				if ( $title ) {
					$title .= ' v'.$version;
				} else {
					$title = JText::_( 'Version' ).' '.$version;
				}
			}
		} else if ( $xml ) {
			$xml = JApplicationHelper::parseXMLInstallFile( JPATH_SITE.'/'.$xml );
			if ( $xml && isset( $xml['version'] ) ) {
				$version = $xml['version'];
			}
			if ( $version ) {
				if ( $title ) {
					$title .= ' v'.$version;
				} else {
					$title = JText::_( 'Version' ).' '.$version;
				}
			}
		}

		if ( $url ) {
			$url = '<a href="'.$url.'" target="_blank" title="'.$title.'">';
		}

		if ( $image ) {
			$image = str_replace( '/', "\n", str_replace( '\\', '/', $image ) );
			$image = explode( "\n", trim( $image ) );
			if ( $image['0'] == 'administrator' ) {
				$image['0'] = JURI::base( true );
			} else {
				$image['0'] = JURI::root( true ).'/'.$image['0'];
			}
			$image = $url.'<img src="'.implode( '/', $image ).'" border="0" style="float:right;margin-left:10px" alt=""';
			if ( $image_w ) {
				$image .= ' width="'.$image_w.'"';
			}
			if ( $image_h ) {
				$image .= ' height="'.$image_h.'"';
			}
			$image .= ' />';
			if ( $url ) {
				$image .= '</a>';
			}
		}

		if ( $url ) {
			$title = $url.$title.'</a>';
		}

		if ( $help ) {
			$help = '<a href="'.$help.'" target="_blank" title="'.JText::_( 'NN_MORE_INFO' ).'">'.JText::_( 'NN_MORE_INFO' ).'...</a>';
		}

		if ( $title ) {
			$title = NNFrameworkFunctions::html_entity_decoder( $title );
		}

		$html = '';
		if ( $image ) {
			$html .= $image;
		}
		if ( $show_apply ) {
			$onclick = '';
			if ( $j15 ) {
				$onclick = 'submitbutton( \'apply\' );';
			} else {
				$bar = JToolBar::getInstance( 'toolbar' );
				foreach ( $bar->getItems() as $b ) {
					if ( isset( $b['3'] ) && $b['1'] == 'apply' ) {
						$onclick = 'Joomla.submitbutton(\''.$b['3'].'\')';
					}
				}
			}
			if ( $onclick ) {
				$html .= '<a href="#" onclick="'.$onclick.'" title="'.JText::_( 'Apply' ).'"><img style="float:right;" border="0" alt="'.JText::_( 'Apply' ).'" src="'.JURI::root().'plugins/system/nnframework/images/tick.png"/></a>';
			}
		}

		if ( $toggle && $description ) {
			$el = 'document.getElementById( \''.$id.'description\' )';
			$onclick =
				'if( this.innerHTML == \''.JText::_( JText::_( 'Show' ).' '.$title ).'\' ){'
					.$el.'.style.display = \'block\';'
					.'this.innerHTML = \''.JText::_( JText::_( 'Hide' ).' '.$title ).'\';'
					.'}else{'
					.$el.'.style.display = \'none\';'
					.'this.innerHTML = \''.JText::_( JText::_( 'Show' ).' '.$title ).'\';'
					.'}'
					.'this.blur();return false;';
			$html .= '<div class="button2-left" style="margin:0px 0px 5px 0px;"><div class="blank"><a href="javascript://;" onclick="'.$onclick.'">'.JText::_( JText::_( 'Show' ).' '.$title ).'</a></div></div>'."\n";
			$html .= '<br clear="all" />';
			$html .= '<div id="'.$id.'description" style="display:none;">';
		} else if ( $title ) {
			if ( !$j15 || $blocktype != 'fieldset' ) {
				$html .= '<h4 style="margin: 0px;">'.$title.'</h4>';
			}
		}
		if ( $description && !$tooltip ) {
			$html .= $description;
		}
		if ( $help ) {
			$html .= '<p>'.$help.'</p>';
		}
		if ( $description ) {
			$html = '<div class="nn_block nn_title">'.$html.'</div>';
		}

		if ( $toggle && $description ) {
			$html .= '</div>';
		}
		if ( $message_type ) {
			$html = '<dl id="system-message"><dd class="'.$message_type.'"><ul><li>'.NNFrameworkFunctions::html_entity_decoder( $html ).'</li></ul></dd></dl>';
		} else {
			if ( ( !$j15 || $blocktype != 'fieldset' ) && !$nostyle ) {
				$class = 'panel nn_panel';
				if ( $j15 ) {
					$class .= ' nn_panel_15';
				}
				$html = '<div class="'.$class.'"><div class="nn_block nn_title">'.$html.'<div style="clear: both;"></div>';
			}
			if ( $start ) {
				if ( $j15 && $blocktype == 'fieldset' ) {
					if ( $description && $tooltip ) {
						$title = '<span class="hasTip" title="'.htmlentities( $title.'::'.$description ).'">'.$title.'</span>';
					}
					$html = '<fieldset class="adminform"><legend>'.$title.'</legend>'.$html;
				}

				if ( $j15 ) {
					$html .= '<table width="100%" class="paramlist admintable" cellspacing="1">';
					$html .= '<tr><td colspan="2" class="paramlist_value">';
					$random = rand( 100000, 999999 );
					$html .= '<div id="end-'.$random.'"></div><script type="text/javascript">NNFrameworkHideTD( "end-'.$random.'" );</script>';
				} else {
					$html .= '<ul class="adminformlist"><li>';
				}
			} else {
				$html .= '</div></div>';
			}
		}

		if ( $msg ) {
			$html = $msg.$html;
		}

		return $html;
	}
Example #8
0
 function processArticle($article, $art, $text = '', $type = 'article')
 {
     if ($type == 'k2' && !$this->params->dbselects_k2) {
         $type = '';
     }
     $regex = '#\\{(/?[^\\}]+)\\}#si';
     if (preg_match_all($regex, $text, $matches, PREG_SET_ORDER) > 0) {
         if ($type == 'k2') {
             $selects = $this->params->dbselects_k2;
         } else {
             $selects = $this->params->dbselects_content;
         }
         if ($art && in_array($article, array('current', 'self', '{id}', '{title}', '{alias}'))) {
             if (isset($art->id)) {
                 $article = $art->id;
             } else {
                 if (isset($art->link) && preg_match('#&amp;id=([0-9]*)#', $art->link, $match)) {
                     $article = $match['1'];
                 }
             }
         }
         foreach ($matches as $match) {
             $data = trim($match['1']);
             if (!(strpos($data, 'intro') === false)) {
                 $selects[] = 'introtext';
             } else {
                 if (!(strpos($data, 'full') === false)) {
                     $selects[] = 'fulltext';
                 } else {
                     if (!(strpos($data, 'text') === false)) {
                         $selects[] = 'introtext';
                         $selects[] = 'fulltext';
                     }
                 }
             }
         }
         $selects = array_unique($selects);
         $selects = 'c.`' . implode('`, c.`', $selects) . '`';
         $joins = '';
         if ($type == 'article') {
             $selects .= ', CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(":", c.id, c.alias) ELSE c.id END as slug';
             $selects .= ', CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug';
             $joins = ' LEFT JOIN #__categories as cc ON cc.id = c.catid';
         }
         $where = ' AND ( c.title = ' . $this->database->quote(NNFrameworkFunctions::html_entity_decoder($article));
         $where .= ' OR c.alias = ' . $this->database->quote(NNFrameworkFunctions::html_entity_decoder($article));
         if (is_numeric($article)) {
             $where .= ' OR c.id = ' . $article;
         }
         $where .= ' ) ';
         if (!$this->params->ignore_state) {
             $jnow =& JFactory::getDate();
             $now = $jnow->toMySQL();
             $nullDate = $this->database->getNullDate();
             if ($type == 'k2') {
                 $where .= ' AND c.published = 1 AND trash = 0';
             } else {
                 $where .= ' AND c.state = 1';
             }
             $where .= ' AND ( c.publish_up = ' . $this->database->quote($nullDate) . ' OR c.publish_up <= ' . $this->database->quote($now) . ' )' . ' AND ( c.publish_down = ' . $this->database->quote($nullDate) . ' OR c.publish_down >= ' . $this->database->quote($now) . ' )';
         }
         $query = 'SELECT ' . $selects . ' FROM ' . ($type == 'k2' ? '#__k2_items as c' : '#__content as c') . $joins . ' WHERE c.access IN (' . implode(',', $this->params->aid) . ')' . $where . ' ORDER BY c.ordering' . ' LIMIT 1';
         $this->database->setQuery($query);
         $article = $this->database->loadObject();
         if (!$article) {
             return '<!-- ' . JText::_('AA_ACCESS_TO_ARTICLE_DENIED') . ' -->';
         }
         $ifregex = '#\\{if:([^\\}]+)\\}(.*?)(?:\\{else\\}(.*?))?\\{/if\\}#si';
         if (preg_match_all($ifregex, $text, $ifs, PREG_SET_ORDER) > 0) {
             foreach ($ifs as $if) {
                 $pass = 0;
                 $eval = '$pass = ( ( $article->' . str_replace('=', '==', trim($if['1'])) . ' ) ? 1 : 0 );';
                 $eval = str_replace('$article->!', '!$article->', $eval);
                 eval($eval);
                 if (!$pass) {
                     $text = str_replace($if['0'], isset($if['3']) ? $if['3'] : '', $text);
                 } else {
                     $text = str_replace($if['0'], $if['2'], $text);
                 }
             }
         }
     }
     if (preg_match_all($regex, $text, $matches, PREG_SET_ORDER) > 0) {
         foreach ($matches as $match) {
             $data = trim($match['1']);
             $ok = 0;
             $str = '';
             $data = explode(':', $data, 2);
             $tag = trim($data['0']);
             $extra = isset($data['1']) ? trim($data['1']) : '';
             if ($tag == '/link') {
                 $str = '</a>';
                 $ok = 1;
             } else {
                 if ($tag == '/div') {
                     $str = '</div>';
                     $ok = 1;
                 } else {
                     if ($tag == 'div' || strpos($tag, 'div ') === 0) {
                         if ($tag != 'div') {
                             $extra = str_replace('div ', '', $tag) . ':' . $extra;
                         }
                         $str = '';
                         if ($extra) {
                             $extra = explode('|', $extra);
                             $extras = new stdClass();
                             foreach ($extra as $e) {
                                 if (!(strpos($e, ':') === false)) {
                                     list($key, $val) = explode(':', $e, 2);
                                     $extras->{$key} = $val;
                                 }
                             }
                             if (isset($extras->class)) {
                                 $str .= 'class="' . $extras->class . '"';
                             }
                             $style = array();
                             if (isset($extras->width)) {
                                 if (is_numeric($extras->width)) {
                                     $extras->width .= 'px';
                                 }
                                 $style[] = 'width:' . $extras->width;
                             }
                             if (isset($extras->height)) {
                                 if (is_numeric($extras->height)) {
                                     $extras->height .= 'px';
                                 }
                                 $style[] = 'height:' . $extras->height;
                             }
                             if (isset($extras->align)) {
                                 $style[] = 'float:' . $extras->align;
                             } else {
                                 if (isset($extras->float)) {
                                     $style[] = 'float:' . $extras->float;
                                 }
                             }
                             if (!empty($style)) {
                                 $str .= ' style="' . implode(';', $style) . ';"';
                             }
                         }
                         $str = trim('<div ' . trim($str)) . '>';
                         $ok = 1;
                     } else {
                         if ($tag == 'link' || $tag == 'url' || !(strpos($tag, 'readmore') === false)) {
                             if (isset($article->id)) {
                                 if ($type == 'k2') {
                                     $link = 'index.php?option=com_k2&view=item&id=' . $article->id;
                                     $component =& JComponentHelper::getComponent('com_k2');
                                     $menus =& JApplication::getMenu('site', array());
                                     $menuitems = $menus->getItems('component_id', $component->id);
                                     $id = 0;
                                     if (is_array($menuitems)) {
                                         foreach ($menuitems as $item) {
                                             if (@$item->query['view'] == 'item' && @$item->query['layout'] == 'item' && @$item->query['id'] == $article->id) {
                                                 $id = $item->id;
                                                 break;
                                             }
                                         }
                                         if (!$id) {
                                             foreach ($menuitems as $item) {
                                                 if (@$item->query['view'] == 'itemlist' && @$item->query['layout'] == 'category' && @$item->query['id'] == $article->catid) {
                                                     $id = $item->id;
                                                     break;
                                                 }
                                             }
                                         }
                                     }
                                 } else {
                                     $slug = 'id=' . $article->slug;
                                     if ($article->catid) {
                                         $slug .= '&catid=' . $article->catslug;
                                     }
                                     $link = 'index.php?option=com_content&view=article&' . $slug;
                                     $component =& JComponentHelper::getComponent('com_content');
                                     $menus =& JApplication::getMenu('site', array());
                                     $menuitems = $menus->getItems('component_id', $component->id);
                                     $id = 0;
                                     if (is_array($menuitems)) {
                                         foreach ($menuitems as $item) {
                                             if (@$item->query['view'] == 'article' && @$item->query['id'] == $article->id) {
                                                 $id = $item->id;
                                                 break;
                                             }
                                         }
                                         if (!$id) {
                                             foreach ($menuitems as $item) {
                                                 if (@$item->query['view'] == 'category' && @$item->query['id'] == $article->catid) {
                                                     $id = $item->id;
                                                     break;
                                                 }
                                             }
                                         }
                                         if (!$id) {
                                             foreach ($menuitems as $item) {
                                                 if (@$item->query['view'] == 'section' && @$item->query['id'] == $article->sectionid) {
                                                     $id = $item->id;
                                                     break;
                                                 }
                                             }
                                         }
                                     }
                                 }
                                 if ($id) {
                                     $link .= '&Itemid=' . $id;
                                 }
                                 $link = JRoute::_($link);
                                 if ($tag == 'link') {
                                     $str = '<a href="' . $link . '">';
                                 } else {
                                     if ($tag == 'url') {
                                         $str = $link;
                                     } else {
                                         $readmore = JText::_('COM_CONTENT_READ_MORE_TITLE');
                                         $class = 'readon';
                                         if ($extra) {
                                             $extra = explode('|', $extra);
                                             if (trim($extra['0'])) {
                                                 $readmore = JText::sprintf(trim($extra['0']), $article->title);
                                                 if (!$readmore) {
                                                     $readmore = $extra['0'];
                                                 }
                                             }
                                             if (isset($extra['1'])) {
                                                 $class = trim($extra['1']);
                                             }
                                         }
                                         $str = '<a href="' . $link . '" class="' . $class . '">' . $readmore . '</a>';
                                     }
                                 }
                                 $ok = 1;
                             }
                         } else {
                             if (!(strpos($tag, 'text') === false) || !(strpos($tag, 'intro') === false) || !(strpos($tag, 'full') === false)) {
                                 // TEXT data
                                 $article->text = '';
                                 if (!(strpos($tag, 'intro') === false)) {
                                     if (isset($article->introtext)) {
                                         $article->text = $article->introtext;
                                         $ok = 1;
                                     }
                                 } else {
                                     if (!(strpos($tag, 'full') === false)) {
                                         if (isset($article->fulltext)) {
                                             $article->text = $article->fulltext;
                                             $ok = 1;
                                         }
                                     } else {
                                         if (!(strpos($tag, 'text') === false)) {
                                             if (isset($article->introtext) && isset($article->fulltext)) {
                                                 $article->text = $article->introtext . $article->fulltext;
                                                 $ok = 1;
                                             }
                                         }
                                     }
                                 }
                                 $article->parameters = new JRegistry();
                                 if ($type == 'k2') {
                                     $article->parameters->loadINI($article->params);
                                 } else {
                                     $article->parameters->loadString($article->attribs);
                                 }
                                 if ($this->params->run_content_plugins) {
                                     if (!$this->params->dispatcher) {
                                         $plugins = JPluginHelper::getPlugin('system');
                                         $plugins = array_merge($plugins, JPluginHelper::getPlugin('content'));
                                         $plugins = array_merge($plugins, JPluginHelper::getPlugin('k2'));
                                         foreach ($plugins as $plugin) {
                                             JPluginHelper::importPlugin($plugin->type, $plugin->name);
                                         }
                                         $this->params->dispatcher = clone JDispatcher::getInstance();
                                         $this->params->dispatcher->detach('plgSystemArticlesAnywhere');
                                         $this->params->dispatcher->detach('plgSystemBetterPreview');
                                     }
                                     $this->params->dispatcher->trigger('onPrepareContent', array(&$article, &$article->parameters, 0));
                                 }
                                 $str = $article->text;
                                 if ($extra) {
                                     $attribs = explode(':', $extra);
                                     $max = 0;
                                     $strip = 0;
                                     foreach ($attribs as $attrib) {
                                         if (trim($attrib) == 'strip') {
                                             $strip = 1;
                                         } else {
                                             $max = $attrib;
                                         }
                                     }
                                     $word_limit = !(strpos($max, 'word') === false);
                                     if ($strip) {
                                         // remove pagenavcounter
                                         $str = preg_replace('#(<' . 'div class="pagenavcounter">.*?</div>)#si', ' ', $str);
                                         // remove pagenavbar
                                         $str = preg_replace('#(<' . 'div class="pagenavbar">(<div>.*?</div>)*</div>)#si', ' ', $str);
                                         // remove scripts
                                         $str = preg_replace('#(<' . 'script[^a-z0-9].*?</script>)#si', ' ', $str);
                                         $str = preg_replace('#(<' . 'noscript[^a-z0-9].*?</noscript>)#si', ' ', $str);
                                         // remove other tags
                                         $str = preg_replace('#(<' . '/?[a-z][a-z0-9]?.*?>)#si', ' ', $str);
                                         // remove double whitespace
                                         $str = trim(preg_replace('#\\s+#s', ' ', $str));
                                         if ($max) {
                                             $orig_len = strlen($str);
                                             if ($word_limit) {
                                                 // word limit
                                                 $str = trim(preg_replace('#^(([^\\s]+\\s*){' . (int) $max . '}).*$#s', '\\1', $str));
                                                 if (strlen($str) < $orig_len) {
                                                     if (preg_match('#[^a-z0-9]$#si', $str)) {
                                                         $str .= ' ';
                                                     }
                                                     if ($this->params->use_ellipsis) {
                                                         $str .= '...';
                                                     }
                                                 }
                                             } else {
                                                 // character limit
                                                 $max = (int) $max;
                                                 if ($max < $orig_len) {
                                                     $str = rtrim(substr($str, 0, $max - 3));
                                                     if (preg_match('#[^a-z0-9]$#si', $str)) {
                                                         $str .= ' ';
                                                     }
                                                     if ($this->params->use_ellipsis) {
                                                         $str .= '...';
                                                     }
                                                 }
                                             }
                                         }
                                     } else {
                                         if ($max && ($word_limit || (int) $max < strlen($str))) {
                                             $max = (int) $max;
                                             // store pagenavcounter & pagenav (exclude from count)
                                             preg_match('#<' . 'div class="pagenavcounter">.*?</div>#si', $str, $pagenavcounter);
                                             $pagenavcounter = isset($pagenavcounter['0']) ? $pagenavcounter['0'] : '';
                                             if ($pagenavcounter) {
                                                 $str = str_replace($pagenavcounter, '<!-- ARTA_PAGENAVCOUNTER -->', $str);
                                             }
                                             preg_match('#<' . 'div class="pagenavbar">(<div>.*?</div>)*</div>#si', $str, $pagenav);
                                             $pagenav = isset($pagenav['0']) ? $pagenav['0'] : '';
                                             if ($pagenav) {
                                                 $str = str_replace($pagenav, '<!-- ARTA_PAGENAV -->', $str);
                                             }
                                             // add explode helper strings around tags
                                             $explode_str = '<!-- ARTA_TAG -->';
                                             $str = preg_replace('#(<\\/?[a-z][a-z0-9]?.*?>|<!--.*?-->)#si', $explode_str . '\\1' . $explode_str, $str);
                                             $str_array = explode($explode_str, $str);
                                             $str = array();
                                             $tags = array();
                                             $count = 0;
                                             $is_script = 0;
                                             foreach ($str_array as $i => $str_part) {
                                                 if (fmod($i, 2)) {
                                                     // is tag
                                                     $str[] = $str_part;
                                                     preg_match('#^<(\\/?([a-z][a-z0-9]*))#si', $str_part, $tag);
                                                     if (!empty($tag)) {
                                                         if ($tag['1'] == 'script') {
                                                             $is_script = 1;
                                                         }
                                                         if (!$is_script && strpos($str_part, '/>') === false && !in_array($tag['2'], array('area', 'br', 'hr', 'img', 'input', 'param'))) {
                                                             $tags[] = $tag['1'];
                                                         }
                                                         if ($tag['1'] == '/script') {
                                                             $is_script = 0;
                                                         }
                                                     }
                                                 } else {
                                                     if ($is_script) {
                                                         $str[] = $str_part;
                                                     } else {
                                                         if ($word_limit) {
                                                             // word limit
                                                             if ($str_part) {
                                                                 $words = explode(' ', trim($str_part));
                                                                 $word_count = count($words);
                                                                 if ($max < $count + $word_count) {
                                                                     $words_part = array();
                                                                     $word_count = 0;
                                                                     foreach ($words as $word) {
                                                                         if ($word) {
                                                                             $word_count++;
                                                                         }
                                                                         if ($max < $count + $word_count) {
                                                                             break;
                                                                         }
                                                                         $words_part[] = $word;
                                                                     }
                                                                     $string = rtrim(implode(' ', $words_part));
                                                                     if (preg_match('#[^a-z0-9]$#si', $string)) {
                                                                         $string .= ' ';
                                                                     }
                                                                     if ($this->params->use_ellipsis) {
                                                                         $string .= '...';
                                                                     }
                                                                     $str[] = $string;
                                                                     break;
                                                                 }
                                                                 $count += $word_count;
                                                             }
                                                             $str[] = $str_part;
                                                         } else {
                                                             // character limit
                                                             if ($max < $count + strlen($str_part)) {
                                                                 // strpart has to be cut off
                                                                 $maxlen = $max - $count;
                                                                 if ($maxlen < 3) {
                                                                     $string = '';
                                                                     if (preg_match('#[^a-z0-9]$#si', $str_part)) {
                                                                         $string .= ' ';
                                                                     }
                                                                     if ($this->params->use_ellipsis) {
                                                                         $string .= '...';
                                                                     }
                                                                     $str[] = $string;
                                                                 } else {
                                                                     $string = rtrim(substr($str_part, 0, $maxlen - 3));
                                                                     if (preg_match('#[^a-z0-9]$#si', $string)) {
                                                                         $string .= ' ';
                                                                     }
                                                                     if ($this->params->use_ellipsis) {
                                                                         $string .= '...';
                                                                     }
                                                                     $str[] = $string;
                                                                 }
                                                                 break;
                                                             }
                                                             $count += strlen($str_part);
                                                             $str[] = $str_part;
                                                         }
                                                     }
                                                 }
                                             }
                                             // revers sort open tags
                                             krsort($tags);
                                             $tags = array_values($tags);
                                             $count = count($tags);
                                             for ($i = 0; $i < 3; $i++) {
                                                 foreach ($tags as $ti => $tag) {
                                                     if ($tag['0'] == '/') {
                                                         for ($oi = $ti + 1; $oi < $count; $oi++) {
                                                             $opentag = $tags[$oi];
                                                             if ($opentag == $tag) {
                                                                 break;
                                                             }
                                                             if ('/' . $opentag == $tag) {
                                                                 unset($tags[$ti]);
                                                                 unset($tags[$oi]);
                                                                 break;
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                             foreach ($tags as $tag) {
                                                 // add closing tag to end of string
                                                 if ($tag['0'] != '/') {
                                                     $str[] = '</' . $tag . '>';
                                                 }
                                             }
                                             $str = implode('', $str);
                                             $str = str_replace(array('<!-- ARTA_PAGENAVCOUNTER -->', '<!-- ARTA_PAGENAV -->'), array($pagenavcounter, $pagenav), $str);
                                         }
                                     }
                                 }
                                 if ($art && isset($art->id) && $art->id) {
                                     $str = str_replace('view=article&amp;id=' . $art->id, 'view=article&amp;id=' . $article->id, $str);
                                 }
                             } else {
                                 // Get data from db columns
                                 if (isset($article->{$tag})) {
                                     $str = $article->{$tag};
                                     $ok = 1;
                                 }
                                 // otherwise get data from parameter data
                                 if (!$ok) {
                                     $params = new stdClass();
                                     if (isset($article->attribs)) {
                                         $params = $this->parameters->getParams($article->attribs);
                                     } else {
                                         if (isset($article->params)) {
                                             $params = $this->parameters->getParams($article->params);
                                         }
                                     }
                                     if ($params && isset($params->{$tag})) {
                                         $str = $params->{$tag};
                                         $ok = 1;
                                     }
                                 }
                                 // otherwise get data from extra fields (for k2 items)
                                 if (!$ok && $type == 'k2') {
                                     $extravalue = $this->getExtraFieldValue($article->extra_fields, $tag, $article->catid);
                                     if ($extravalue !== null) {
                                         $str = $extravalue;
                                         $ok = 1;
                                     }
                                 }
                                 if ($ok && !(strpos($str, '-') == false) && !preg_match('#[a-z]#i', $str) && strtotime($str)) {
                                     if ($extra && !(strpos($extra, '%') === false)) {
                                         $extra = NNFrameworkFunctions::dateToDateFormat($extra);
                                     }
                                     $str = JHTML::_('date', strtotime($str), $extra);
                                 }
                             }
                         }
                     }
                 }
             }
             if ($ok) {
                 $text = str_replace($match['0'], $str, $text);
             }
         }
     }
     return $text;
 }
Example #9
0
 function cleanText(&$string)
 {
     // replace chr style enters with normal enters
     $string = str_replace(array(chr(194) . chr(160), '&#160;'), ' ', $string);
     // replace linbreak tags with normal linebreaks (paragraphs, enters, etc).
     $enter_tags = array('p', 'br');
     $regex = '#</?((' . implode(')|(', $enter_tags) . '))+[^>]*?>\\n?#si';
     $string = preg_replace($regex, " \n", $string);
     // replace indent characters with spaces
     $string = preg_replace('#<' . 'img [^>]*/sourcerer/images/tab\\.png[^>]*>#si', '    ', $string);
     // strip all other tags
     $regex = '#<(/?\\w+((\\s+\\w+(\\s*=\\s*(?:".*?"|\'.*?\'|[^\'">\\s]+))?)+\\s*|\\s*)/?)>#si';
     $string = preg_replace($regex, "", $string);
     // reset htmlentities
     $string = NNFrameworkFunctions::html_entity_decoder($string);
     // convert protected html entities &_...; -> &...;
     $string = preg_replace('#&_([a-z0-9\\#]+?);#i', '&\\1;', $string);
 }