Index: branches/5.0.x/core/units/general/helpers/rating_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/rating_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/rating_helper.php	(nonexistent)
@@ -1,195 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class RatingHelper extends kHelper {
-
-		/**
-		 * One star width/height in pixels
-		 *
-		 * @var int
-		 */
-		var $ratingUnitWidth = 25;
-		var $ratingSmallUnitWidth = 20;
-
-		/**
-		 * Maximal star count
-		 *
-		 * @var int
-		 */
-		var $ratingMaximal = 5;
-
-		var $_phrases = Array (
-			'current_rating' => 'lu_CurrentRating',
-			'vote_title' => 'lu_VoteTitle',
-			'vote_count' => 'lu_VoteCount',
-			'invalid_rating' => 'lu_InvalidRating',
-			'already_voted' => 'lu_AlreadyVoted',
-			'thanks_for_voting' => 'lu_ThanksForVoting',
-		);
-
-		/**
-		 * Draws rating bar for a given category item
-		 *
-		 * @param kDBItem $object
-		 * @param bool $show_div
-		 * @param string $additional_msg
-		 * @return string
-		 */
-		function ratingBar(&$object, $show_div = true, $additional_msg = '', $additional_style = '')
-		{
-			$perm_prefix = $this->Application->getUnitOption($object->Prefix, 'PermItemPrefix');
-			$static = !$this->Application->CheckPermission($perm_prefix . '.RATE', 0, $object->GetDBField('CategoryId'));
-
-			$total_votes = $object->GetDBField('CachedVotesQty');
-			$total_rating = $object->GetDBField('CachedRating') * $total_votes;
-
-			$spam_helper =& $this->Application->recallObject('SpamHelper');
-			/* @var $spam_helper SpamHelper */
-
-			$config_mapping = $this->Application->getUnitOption($object->Prefix, 'ConfigMapping');
-			$review_settings = $config_mapping['RatingDelayValue'].':'.$config_mapping['RatingDelayInterval'];
-			$spam_helper->InitHelper($object->GetDBField('ResourceId'), 'Rating', $review_settings);
-
-			$user_voted = $spam_helper->InSpamControl();
-
-			// now draw the rating bar
-			$unit_selected_width = $additional_style? $this->ratingSmallUnitWidth : $this->ratingUnitWidth;
-			$rating_width = $total_votes ? @number_format($total_rating / $total_votes, 2) * $unit_selected_width : 0;
-			$rating1 = $total_votes ? @number_format($total_rating / $total_votes, 1) : 0;
-			$rating2 = $total_votes ? @number_format($total_rating / $total_votes, 2) : 0;
-
-			$rater = '<span class="inline-rating">
-						<ul class="star-rating '.$additional_style.'" style="width: ' . $unit_selected_width * $this->ratingMaximal . 'px;">
-							<li class="current-rating" style="width: ' . $rating_width . 'px;">' . $this->_replaceInPhrase('current_rating', Array ('<strong>' . $rating2 . '</strong>', $this->ratingMaximal)) . '</li>'."\n";;
-
-			if (!$static && !$user_voted) {
-				// allow to set rating when not static and user not voted before
-				for ($ncount = 1; $ncount <= $this->ratingMaximal; $ncount++) {
-					$rater .= '<li><a href="#vote-' . $ncount . '" onclick="aRatingManager.makeVote(' . $ncount . ', \'' . $object->Prefix . '\', ' . $object->GetID() . ', \''.$additional_style.'\'); return false;" title="' . $this->_replaceInPhrase('vote_title', Array ($ncount, $this->ratingMaximal)) . '" class="r' . $ncount . '-unit rater" rel="nofollow">' . $ncount . '</a></li>'."\n";
-				}
-			}
-
-			$msg_class = Array ();
-
-			if ($static) {
-				$msg_class[] = 'static';
-			}
-
-			if ($user_voted) {
-				$msg_class[] = 'voted';
-			}
-
-			$rater .= '	</ul></span>';
-
-			// this part is disabled for now, will be addressed once properly review
-//			$rater .= '	<p class="' . implode(' ', $msg_class) . '">' .
-							$this->_replaceInPhrase('vote_title', Array('<strong>'.$rating1.'</strong>', $this->ratingMaximal)) . ' ('. $this->_replaceInPhrase('vote_count', Array($total_votes)) . ') </p>';
-
-			$rater .= '&nbsp;<span class="' . implode(' ', $msg_class) . '">'.$additional_msg.'</span>';
-
-			if ($show_div) {
-				// adds div around rating stars (when drawing rating first time)
-				$rater = '<div class="inline-rating" id="page_rating_' . $object->GetID() . '">' . $rater . '</div>';
-			}
-
-			return $rater;
-		}
-
-		/**
-		 * Saves user's vote, when allowed
-		 *
-		 * @param kDBItem $object
-		 * @return string
-		 */
-		function makeVote(&$object)
-		{
-			$spam_helper =& $this->Application->recallObject('SpamHelper');
-			/* @var $spam_helper SpamHelper */
-
-			$config_mapping = $this->Application->getUnitOption($object->Prefix, 'ConfigMapping');
-			$review_settings = $config_mapping['RatingDelayValue'].':'.$config_mapping['RatingDelayInterval'];
-			$spam_helper->InitHelper($object->GetDBField('ResourceId'), 'Rating', $review_settings);
-
-			if (!$object->isLoaded() || $spam_helper->InSpamControl()) {
-				return '@err:' . $this->_replaceInPhrase('already_voted');
-			}
-
-			$perm_prefix = $this->Application->getUnitOption($object->Prefix, 'PermItemPrefix');
-			$can_rate = $this->Application->CheckPermission($perm_prefix . '.RATE', 0, $object->GetDBField('CategoryId'));
-			$rating = (int)$this->Application->GetVar('rating'); // not numeric rating is from GoogleBot :(
-			$additional_style = $this->Application->GetVar('size');
-
-			if (($rating <= 0) || ($rating > $this->ratingMaximal) || !$can_rate) {
-				return '@err:' . $this->_replaceInPhrase('invalid_rating');
-			}
-
-			// save current rating
-			$fields_hash = Array (
-				'ItemId'		=>	$object->GetID(),
-				'RatingValue'	=>	$rating,
-				'IPAddress'		=>	$_SERVER['REMOTE_ADDR'],
-				'CreatedOn'		=>	adodb_mktime(),
-			);
-			$this->Conn->doInsert($fields_hash, TABLE_PREFIX.'ItemRating');
-
-			// recalculate average rating
-			$votes_count = $object->GetDBField('CachedVotesQty');
-			$avg_rating = $object->GetDBField('CachedRating');
-
-			$avg_rating = round((($votes_count * $avg_rating) + $rating) / ($votes_count + 1), 2);
-			$object->SetDBField('CachedRating', "$avg_rating");
-			$object->Update();
-
-			$sql = 'UPDATE '.$object->TableName.'
-					SET CachedVotesQty = CachedVotesQty + 1
-					WHERE '.$object->IDField.' = '.$object->GetID();
-			$this->Conn->Query($sql);
-
-			$object->SetDBField('CachedVotesQty', $object->GetDBField('CachedVotesQty') + 1); // for using in template
-
-			// prevent user from voting too quickly
-			$spam_helper->AddToSpamControl();
-
-			return $this->ratingBar($object, false, '<span class="thanks">' . $this->_replaceInPhrase('thanks_for_voting') . '</span>', $additional_style);
-		}
-
-		/*function purgeVotes()
-		{
-			$expired = adodb_mktime() - 86400 * $this->Application->ConfigValue('Timeout_Rating'); // 3600
-
-			$sql = 'DELETE FROM ' . TABLE_PREFIX . 'ItemRating
-					WHERE CreatedOn < ' . $expired;
-			$this->Conn->Query($sql);
-		}*/
-
-		/**
-		 * Performs sprintf on phrase translation using given variables
-		 *
-		 * @param string $phrase
-		 * @param Array $arguments
-		 * @return string
-		 */
-		function _replaceInPhrase($phrase, $arguments = Array ())
-		{
-			$value = $this->Application->Phrase($this->_phrases[$phrase]);
-
-			if ($arguments) {
-				return vsprintf($value, $arguments);
-			}
-
-			return $value;
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/rating_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.2.6
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/multilanguage.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/multilanguage.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/multilanguage.php	(nonexistent)
@@ -1,306 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	/**
-	 * Performs action on multilingual fields
-	 *
-	 */
-	class kMultiLanguageHelper extends kHelper {
-
-		/**
-		 * Maximal language id
-		 *
-		 * @var int
-		 */
-		var $languageCount = 0;
-
-		/**
-		 * Languages created in system
-		 *
-		 * @var Array
-		 */
-		var $languagesIDs = Array ();
-
-		/**
-		 * Structure of table, that is currently processed
-		 *
-		 * @var Array
-		 */
-		var $curStructure = Array();
-
-		/**
-		 * Field, to get structure information from
-		 *
-		 * @var string
-		 */
-		var $curSourceField = false;
-
-		/**
-		 * Indexes used in table of 32
-		 *
-		 * @var int
-		 */
-		var $curIndexCount = 0;
-
-		/**
-		 * Fields from config, that are currently used
-		 *
-		 * @var Array
-		 */
-		var $curFields = Array();
-
-		function kMultiLanguageHelper()
-		{
-			parent::kHelper();
-			$this->languageCount = $this->getLanguageCount();
-		}
-
-		/**
-		 * Checks if language with specified id is created
-		 *
-		 * @param int $language_id
-		 * @return bool
-		 */
-		function LanguageFound($language_id)
-		{
-			return in_array($language_id, $this->languagesIDs) || $language_id <= 5;
-		}
-
-		/**
-		 * Returns language count in system (always is divisible by 5)
-		 *
-		 */
-		function getLanguageCount()
-		{
-			$id_field = $this->Application->getUnitOption('lang', 'IDField');
-			$table_name = $this->Application->getUnitOption('lang', 'TableName');
-
-			$this->languagesIDs = $this->Conn->GetCol('SELECT '.$id_field.' FROM '.$table_name);
-
-			$languages_count = $this->Conn->GetOne('SELECT MAX('.$id_field.') FROM '.$table_name);
-
-			return max($languages_count, 5);
-		}
-
-
-		function scanTable($mask)
-		{
-			$i = 0;
-			$fields_found = 0;
-			$fields = array_keys($this->curStructure);
-
-			foreach ($fields as $field_name) {
-				if (preg_match($mask, $field_name)) {
-					$fields_found++;
-				}
-			}
-			return $fields_found;
-		}
-
-		function readTableStructure($table_name, $refresh = false)
-		{
-//			if ($refresh || !getArrayValue($structure_status, $prefix.'.'.$table_name)) {
-				$this->curStructure = $this->Conn->Query('DESCRIBE '.$table_name, 'Field');
-				$this->curIndexCount = count($this->Conn->Query('SHOW INDEXES FROM '.$table_name));
-//			}
-		}
-
-		/**
-		 * Creates missing multilanguage fields in table by specified prefix
-		 *
-		 * @param string $prefix
-		 * @param bool $refresh Forces config field structure to be re-read from database
-		 */
-		function createFields($prefix, $refresh = false)
-		{
-			if ($refresh && preg_match('/(.*)-cdata$/', $prefix, $regs)) {
-				// call main item config to clone cdata table
-				$this->Application->UnitConfigReader->loadConfig($regs[1]);
-				$this->Application->HandleEvent( new kEvent($prefix.':OnAfterConfigRead') );
-			}
-
-			$table_name = $this->Application->getUnitOption($prefix, 'TableName');
-			$this->curFields = $this->Application->getUnitOption($prefix, 'Fields');
-
-			if (!($table_name && $this->curFields) || ($table_name && !$this->Conn->TableFound($table_name))) {
-				// invalid config found or prefix not found
-				return true;
-			}
-
-			$sqls = Array();
-			$this->readTableStructure($table_name, $refresh);
-
-			foreach($this->curFields as $field_name => $field_options)
-			{
-				if (getArrayValue($field_options, 'formatter') == 'kMultiLanguage') {
-					if (isset($field_options['master_field'])) {
-						unset($this->curFields[$field_name]);
-						continue;
-					}
-
-					$this->setSourceField($field_name);
-					if ($this->languageCount > 0) {
-						// `l77_Name` VARCHAR( 255 ) NULL DEFAULT '0';
-						$field_mask = Array();
-						$field_mask['name'] = 'l%s_'.$field_name;
-						$field_mask['null'] = getArrayValue($field_options, 'not_null') ? 'NOT NULL' : 'NULL';
-
-						if ($this->curSourceField) {
-							$default_value = $this->getFieldParam('Default') != 'NULL' ? $this->Conn->qstr($this->getFieldParam('Default')) : $this->getFieldParam('Default');
-							$field_mask['type'] = $this->getFieldParam('Type');
-						}
-						else {
-							$default_value = is_null($field_options['default']) ? 'NULL' : $this->Conn->qstr($field_options['default']);
-							$field_mask['type'] = $field_options['db_type'];
-						}
-						$field_mask['default'] = 'DEFAULT '.$default_value;
-
-						if (strtoupper($field_mask['type']) == 'TEXT') {
-							// text fields in mysql doesn't have default value
-							$field_mask = $field_mask['name'].' '.$field_mask['type'].' '.$field_mask['null'];
-						}
-						else {
-							$field_mask = $field_mask['name'].' '.$field_mask['type'].' '.$field_mask['null'].' '.$field_mask['default'];
-						}
-
-						$alter_sqls = $this->generateAlterSQL($field_mask, 1, $this->languageCount);
-						if ($alter_sqls) {
-							$sqls[] = 'ALTER TABLE '.$table_name.' '.$alter_sqls;
-						}
-					}
-				}
-			}
-
-			foreach ($sqls as $sql_query) {
-				$this->Conn->Query($sql_query);
-			}
-		}
-
-		function deleteField($prefix, $custom_id)
-		{
-			$table_name = $this->Application->getUnitOption($prefix, 'TableName');
-			$sql = 'DESCRIBE '.$table_name.' "l%_cust_'.$custom_id.'"';
-			$fields = $this->Conn->GetCol($sql);
-
-			$sql = 'ALTER TABLE '.$table_name.' ';
-			$sql_template = 'DROP COLUMN %s, ';
-			foreach ($fields as $field_name) {
-				$sql .= sprintf($sql_template, $field_name);
-			}
-			$sql = preg_replace('/(.*), $/', '\\1', $sql);
-			$this->Conn->Query($sql);
-		}
-
-		/**
-		 * Returns parameter requested of current source field
-		 *
-		 * @param string $param_name
-		 * @return string
-		 */
-		function getFieldParam($param_name)
-		{
-			return $this->curStructure[$this->curSourceField][$param_name];
-		}
-
-		/**
-		 * Detects field name to create other fields from
-		 *
-		 * @param string $field_name
-		 */
-		function setSourceField($field_name)
-		{
-			$ret = $this->scanTable('/^l[\d]+_'.preg_quote($field_name, '/').'$/');
-			if (!$ret) {
-				// no multilingual fields at all (but we have such field without language prefix)
-				$original_found = $this->scanTable('/'.preg_quote($field_name, '/').'/');
-				$this->curSourceField = $original_found ? $field_name : false;
-			}
-			else {
-				$this->curSourceField = 'l1_'.$field_name;
-			}
-		}
-
-		/**
-		 * Returns ALTER statement part for adding required fields to table
-		 *
-		 * @param string $field_mask sql mask for creating field with correct definition (type & size)
-		 * @param int $start_index add new fields starting from this index
-		 * @param int $create_count create this much new multilingual field translations
-		 * @return string
-		 */
-		function generateAlterSQL($field_mask, $start_index, $create_count)
-		{
-			static $single_lang = null;
-			if (!isset($single_lang)) {
-				// if single language mode, then create indexes only on primary columns
-				$table_name = $this->Application->getUnitOption('lang', 'TableName');
-				$sql = 'SELECT COUNT(*)
-						FROM '.$table_name.'
-						WHERE Enabled = 1';
-				// if language count = 0, then assume it's multi language mode
-				$single_lang = $this->Conn->GetOne($sql) == 1;
-			}
-
-			$ret = '';
-			$ml_field = preg_replace('/l(.*?)_(.*?) (.*)/', '\\2', $field_mask);
-
-			$i_count = $start_index + $create_count;
-			while ($start_index < $i_count) {
-
-				if (isset($this->curStructure['l'.$start_index.'_'.$ml_field]) || (!$this->LanguageFound($start_index)) ) {
-					$start_index++;
-					continue;
-				}
-
-				$prev_index = $start_index - 1;
-				do {
-					list($prev_field,$type) = explode(' ', sprintf($field_mask, $prev_index) );
-				} while ($prev_index > 0 && !$this->LanguageFound($prev_index--));
-
-				if (substr($prev_field, 0, 3) == 'l0_') {
-					$prev_field = substr($prev_field, 3, strlen($prev_field));
-					if (!$this->curSourceField) {
-						// get field name before this one
-						$fields = array_keys($this->curFields);
-//						$prev_field = key(end($this->curStructure));
-						$prev_field = $fields[array_search($prev_field, $fields) - 1];
-						if (getArrayValue($this->curFields[$prev_field], 'formatter') == 'kMultiLanguage') {
-							$prev_field = 'l'.$this->languageCount.'_'.$prev_field;
-						}
-					}
-				}
-
-				$field_expression = sprintf($field_mask, $start_index);
-				$ret .= 'ADD COLUMN '.$field_expression.' AFTER `'.$prev_field.'`, ';
-
-				if ($this->curIndexCount < 32 && ($start_index == $this->Application->GetDefaultLanguageId() || !$single_lang)) {
-					// create index for primary language column + for all others (if multiple languages installed)
-					list($field_name, $field_params) = explode(' ', $field_expression, 2);
-
-					$index_type = isset($this->curFields[$ml_field]['index_type']) ? $this->curFields[$prev_field]['index_type'] : 'string';
-
-					$ret .= $index_type == 'string' ? 'ADD INDEX (`'.$field_name.'` (5) ), ' : 'ADD INDEX (`'.$field_name.'`), ';
-					$this->curIndexCount++;
-				}
-
-				$start_index++;
-			}
-			return preg_replace('/, $/', ';', $ret);
-		}
-	}
-
-
-?>
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/multilanguage.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.15.2.1
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/captcha_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/captcha_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/captcha_helper.php	(nonexistent)
@@ -1,176 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-defined('FULL_PATH') or die('restricted access!');
-
-class kCaptchaHelper extends kHelper {
-
-	var $width;
-	var $height;
-
-	function GenerateCaptchaCode($len = 5)
-	{
-		$chars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
-		$s = '';
-		for ($i = 0; $i < $len; $i++) {
-			$s .= $chars[ rand(0, strlen($chars)-1) ];
-		}
-		return $s;
-	}
-
-	function graphics($w, $h)
-	{
-		$this->width = $w;
-		$this->height = $h;
-	}
-
-	function GenerateCaptchaImage($rand, $width, $height, $filter_blur = false)
-	{
-		global $site_font_path;
-		global $site_font_validation;
-
-		$image = imagecreate($width, $height);
-		$bgColor = imagecolorallocate ($image, 255, 255, 255);
-		$textColor = imagecolorallocate ($image, 0, 0, 0);
-
-		// add random noise
-		for ($i = 0; $i < 20; $i++) {
-			$rx1 = rand(0, $width);
-			$rx2 = rand(0, $width);
-			$ry1 = rand(0, $height);
-			$ry2 = rand(0, $height);
-			$rcVal = rand(0, 255);
-			$rc1 = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(100, 255));
-			imageline($image, $rx1, $ry1, $rx2, $ry2, $rc1);
-		}
-
-		// write the random number
-
-		$dimensions = imagettfbbox($height*0.75, 0, KERNEL_PATH.'/fonts/monofont.ttf', $rand );
-
-		imagettftext($image, $height*0.75, 0, floor(($width - $dimensions[4])/2),  floor(($height - $dimensions[5])/2), $textColor, KERNEL_PATH.'/fonts/monofont.ttf', $rand);
-
-		//		$font = imageloadfont(KERNEL_PATH.'/fonts/monofont.ttf');
-		//		imagestring($image, $font, 3, 0, $rand, $textColor);
-
-		if ($filter_blur) $this->blur($image, 3);
-
-		// send several headers to make sure the image is not cached
-		// date in the past
-		header("Expires: Mon, 23 Jul 1993 05:00:00 GMT");
-
-		// always modified
-		header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
-
-		// HTTP/1.1
-		header("Cache-Control: no-store, no-cache, must-revalidate");
-		header("Cache-Control: post-check=0, pre-check=0", false);
-
-		// HTTP/1.0
-		header("Pragma: no-cache");
-
-		// send the content type header so the image is displayed properly
-		header('Content-type: image/jpeg');
-
-		imagejpeg($image);
-		imagedestroy($image);
-	}
-
-	function blur(&$gdimg, $radius = 5.0)
-	{
-		// Taken from Torstein H�nsi's phpUnsharpMask (see phpthumb.unsharp.php)
-
-		$radius = round(max(0, min($radius, 50)) * 2);
-		if (!$radius) {
-			return false;
-		}
-
-		$w = ImageSX($gdimg);
-		$h = ImageSY($gdimg);
-		if ($imgBlur = ImageCreateTrueColor($w, $h)) {
-			// Gaussian blur matrix:
-			//    1    2    1
-			//    2    4    2
-			//    1    2    1
-
-			// Move copies of the image around one pixel at the time and merge them with weight
-			// according to the matrix. The same matrix is simply repeated for higher radii.
-			for ($i = 0; $i < $radius; $i++)    {
-				ImageCopy     ($imgBlur, $gdimg, 0, 0, 1, 1, $w - 1, $h - 1);            // up left
-				ImageCopyMerge($imgBlur, $gdimg, 1, 1, 0, 0, $w,     $h,     50.00000);  // down right
-				ImageCopyMerge($imgBlur, $gdimg, 0, 1, 1, 0, $w - 1, $h,     33.33333);  // down left
-				ImageCopyMerge($imgBlur, $gdimg, 1, 0, 0, 1, $w,     $h - 1, 25.00000);  // up right
-				ImageCopyMerge($imgBlur, $gdimg, 0, 0, 1, 0, $w - 1, $h,     33.33333);  // left
-				ImageCopyMerge($imgBlur, $gdimg, 1, 0, 0, 0, $w,     $h,     25.00000);  // right
-				ImageCopyMerge($imgBlur, $gdimg, 0, 0, 0, 1, $w,     $h - 1, 20.00000);  // up
-				ImageCopyMerge($imgBlur, $gdimg, 0, 1, 0, 0, $w,     $h,     16.666667); // down
-				ImageCopyMerge($imgBlur, $gdimg, 0, 0, 0, 0, $w,     $h,     50.000000); // center
-				ImageCopy     ($gdimg, $imgBlur, 0, 0, 0, 0, $w,     $h);
-			}
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Generates captcha code for showing on form
-	 *
-	 * @param kEvent $event
-	 */
-	function prepareCode(&$event)
-	{
-		if ($this->Application->IsAdmin() || $this->Application->RecallVar($event->getPrefixSpecial() . '_captcha_code')) {
-			// when code found don't generate it 2nd time
-			return ;
-		}
-
-		$this->Application->StoreVar($event->getPrefixSpecial() . '_captcha_code', $this->GenerateCaptchaCode());
-	}
-
-	/**
-	 * Validates captcha code on form
-	 *
-	 * @param kEvent $event
-	 * @param bool $check_request
-	 * @return bool
-	 */
-	function validateCode(&$event, $check_request = true)
-	{
-		if ($this->Application->IsAdmin()) {
-			// no captcha codes in admin
-			return true;
-		}
-
-		if ($check_request) {
-			// perform validation only when field is found on form
-			list ($id, $field_values) = each($this->Application->GetVar($event->getPrefixSpecial()));
-			if (!array_key_exists('Captcha', $field_values)) {
-				// when captcha code not submitted
-				return true;
-			}
-		}
-
-		$object =& $event->getObject();
-		/* @var $object kDBItem */
-
-		if ($object->GetDBField('Captcha') != $this->Application->RecallVar($event->getPrefixSpecial() . '_captcha_code')) {
-			$object->SetError('Captcha', 'captcha_error', 'lu_captcha_error');
-
-			$this->Application->StoreVar($event->getPrefixSpecial() . '_captcha_code', $this->GenerateCaptchaCode());
-			return false;
-		}
-
-		return true;
-	}
-}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/captcha_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.3.2.1
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/clipboard_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/clipboard_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/clipboard_helper.php	(nonexistent)
@@ -1,59 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class kClipboardHelper extends kHelper {
-
-		/**
-		 * Set's clipboard mode
-		 *
-		 * @param kEvent $event
-		 * @param string $mode
-		 */
-		function setClipboard(&$event, $mode, $ids)
-		{
-			// clipboard = { prefix1 = { cut = {idsA}, copy = {idsB} }, ... prefixN = { cut = {idsC}, copy = {idsD} } }
-			$object = $event->getObject();
-
-			$clipboard = $this->Application->RecallVar('clipboard');
-			$clipboard = $clipboard ? unserialize($clipboard) : Array();
-
-			$prefix = $event->getPrefixSpecial();
-
-			// 1. add $ids to mode key for prefix (make sure the unique)
-			$this_mode_ids =& $clipboard[$prefix][$mode];
-			if (!is_array($this_mode_ids)) {
-				$this_mode_ids = $ids;
-			}
-			else {
-				$this_mode_ids = array_unique( array_merge($this_mode_ids, $ids) );
-			}
-
-			// 2. remove that ids from all other modes
-			$other_mode_ids =& $clipboard[$prefix][$mode == 'cut' ? 'copy' : 'cut'];
-			if (!is_array($other_mode_ids)) {
-				$other_mode_ids = Array();
-			}
-			else {
-				$other_mode_ids = array_diff($other_mode_ids, $this_mode_ids);
-			}
-
-			$this->Application->StoreVar('clipboard', serialize($clipboard));
-
-			/*// do not go up - STAY
-			$event->SetRedirectParam('opener', 's');
-			$event->SetRedirectParam('pass_events', true);*/
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/clipboard_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/recursive_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/recursive_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/recursive_helper.php	(nonexistent)
@@ -1,223 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class kRecursiveHelper extends kHelper {
-
-		function DeleteCategory($category_id, $prefix='c')
-		{
-			$id_field = $this->Application->getUnitOption($prefix, 'IDField');
-			$table_name = $this->Application->getUnitOption($prefix, 'TableName');
-
-			$sql = 'SELECT '.$id_field.'
-					FROM '.$table_name.'
-					WHERE ParentId = '.$category_id;
-
-			$sub_categories = $this->Conn->GetCol($sql);
-			if ($sub_categories) {
-				foreach ($sub_categories as $sub_category_id) {
-					$this->DeleteCategory($sub_category_id);
-				}
-			}
-
-			$ci_table = $this->Application->getUnitOption('ci', 'TableName');
-			// 1. remove category items from this category if it is supplemental (non-primary) category to them
-			$sql = 'DELETE FROM '.$ci_table.'
-					WHERE ('.$id_field.' = '.$category_id.') AND (PrimaryCat = 0)';
-			$this->Conn->Query($sql);
-
-			$temp_handler =& $this->Application->recallObject($prefix.'_TempHandler', 'kTempTablesHandler');
-
-			// 2. delete items this have this category as primary
-			$delete_ids = $this->getCategoryItems($category_id, true);
-
-			foreach ($delete_ids as $item_prefix => $resource_ids) {
-				if (!$item_prefix) {
-					// not ItemPrefix filled -> old categoryitem linking
-					continue;
-				}
-				$item_ids = $this->GetItemIDs($item_prefix, $resource_ids);
-				$temp_handler->BuildTables($item_prefix, $item_ids);
-				$temp_handler->DeleteItems($item_prefix, '', $item_ids);
-			}
-
-			// 3. delete this category
-			$temp_handler->BuildTables($prefix, Array($category_id));
-			$temp_handler->DeleteItems($prefix, '', Array($category_id));
-		}
-
-		/**
-		 * Converts resource ids list to id field list for given prefix
-		 *
-		 * @param string $prefix
-		 * @param Array $resource_ids
-		 * @return Array
-		 */
-		function GetItemIDs($prefix, $resource_ids)
-		{
-			if (!$resource_ids) {
-				return Array();
-			}
-
-			$id_field = $this->Application->getUnitOption($prefix, 'IDField');
-			$table_name = $this->Application->getUnitOption($prefix, 'TableName');
-
-			$sql = 'SELECT '.$id_field.'
-					FROM '.$table_name.'
-					WHERE ResourceId IN ('.implode(',', $resource_ids).')';
-			return $this->Conn->GetCol($sql);
-		}
-
-		// moves selected categories to destination category
-		function MoveCategories($category_ids, $dest_category_id)
-		{
-			if (!$category_ids) return ;
-
-			$id_field = $this->Application->getUnitOption('c', 'IDField');
-			$table_name = $this->Application->getUnitOption('c', 'TableName');
-
-			// do not move categories into their children
-			$sql = 'SELECT ParentPath
-					FROM '.$table_name.'
-					WHERE '.$id_field.' = '.$dest_category_id;
-			$dest_parent_path = explode('|', substr($this->Conn->GetOne($sql), 1, -1));
-
-			$child_categories = array_intersect($dest_parent_path, $category_ids); // get categories, then can't be moved
-			$category_ids = array_diff($category_ids, $child_categories); // remove them from movable categories list
-
-			if ($category_ids) {
-				$sql = 'UPDATE '.$table_name.'
-						SET ParentId = '.$dest_category_id.'
-						WHERE '.$id_field.' IN ('.implode(',', $category_ids).')';
-				$this->Conn->Query($sql);
-			}
-		}
-
-		/**
-		 * Complete cloning or category with subcategories and subitems
-		 *
-		 * @param int $category_id
-		 */
-		function PasteCategory($category_id, $prefix = 'c')
-		{
-			$backup_category_id = $this->Application->GetVar('m_cat_id');
-
-			$src_parent_path = $this->_getParentPath($category_id);
-			$dst_parent_path = $this->_getParentPath($backup_category_id);
-
-			if (substr($dst_parent_path, 0, strlen($src_parent_path)) == $src_parent_path) {
-				// target path contains source path -> recursion
-				return ;
-			}
-
-			// 1. clone category
-			$temp_handler =& $this->Application->recallObject($prefix.'_TempHandler', 'kTempTablesHandler');
-			/* @var $temp_handler kTempTablesHandler*/
-			$temp_handler->BuildTables($prefix, Array($category_id));
-			$new_category_id = array_pop( $temp_handler->CloneItems($prefix, '', Array($category_id)) );
-			$this->Application->SetVar('m_cat_id', $new_category_id);
-
-			$id_field = $this->Application->getUnitOption($prefix, 'IDField');
-			$table_name = $this->Application->getUnitOption($prefix, 'TableName');
-
-			// 2. assign supplemental items to current category to new category
-			$paste_ids = $this->getCategoryItems($category_id, false);
-
-			foreach ($paste_ids as $item_prefix => $resource_ids) {
-				if (!$item_prefix) {
-					// not ItemPrefix filled -> old categoryitem linking
-					continue;
-				}
-
-				$item_object =& $this->Application->recallObject($item_prefix.'.-item', null, Array('skip_autoload' => true));
-				foreach ($resource_ids as $item_resource_id) {
-					$item_object->Load($item_resource_id, 'ResourceId');
-					$item_object->assignToCategory($new_category_id, false);
-				}
-			}
-
-			// 3. clone items that have current category as primary
-			$paste_ids = $this->getCategoryItems($category_id, true);
-
-			foreach ($paste_ids as $item_prefix => $resource_ids) {
-				if (!$item_prefix) {
-					// not ItemPrefix filled -> old categoryitem linking
-					continue;
-				}
-
-				// 2. clone items from current category (for each prefix separately)
-				$item_ids = $this->GetItemIDs($item_prefix, $resource_ids);
-				$temp_handler->BuildTables($item_prefix, $item_ids);
-				$temp_handler->CloneItems($item_prefix, '', $item_ids);
-			}
-
-			// 4. do same stuff for each subcategory
-			$sql = 'SELECT '.$id_field.'
-					FROM '.$table_name.'
-					WHERE ParentId = '.$category_id;
-
-			$sub_categories = $this->Conn->GetCol($sql);
-			if ($sub_categories) {
-				foreach ($sub_categories as $sub_category_id) {
-					$this->PasteCategory($sub_category_id, $prefix);
-				}
-			}
-
-			$this->Application->SetVar('m_cat_id', $backup_category_id);
-		}
-
-		/**
-		 * Returns grouped category items
-		 *
-		 * @param int $category_id
-		 * @param bool $item_primary_category
-		 * @return Array
-		 */
-		function getCategoryItems($category_id, $item_primary_category = true)
-		{
-			$ci_table = $this->Application->getUnitOption('ci', 'TableName');
-
-			$sql = 'SELECT ItemPrefix, ItemResourceId
-					FROM '.$ci_table.'
-					WHERE (CategoryId = '.$category_id.') AND (PrimaryCat = '.($item_primary_category ? 1 : 0).')';
-			$category_items = $this->Conn->GetCol($sql, 'ItemResourceId');
-
-			$item_ids = Array();
-			foreach ($category_items as $resource_id => $item_prefix) {
-				$item_ids[$item_prefix][] = $resource_id;
-			}
-			return $item_ids;
-		}
-
-		/**
-		 * Returns parent path for given category
-		 *
-		 * @param int $category_id
-		 * @return Array
-		 */
-		function _getParentPath($category_id)
-		{
-			static $cache = Array ();
-
-			if (!array_key_exists($category_id, $cache)) {
-				$sql = 'SELECT ParentPath
-						FROM ' . TABLE_PREFIX . 'Category
-						WHERE CategoryId = ' . $category_id;
-				$cache[$category_id] = $this->Conn->GetOne($sql);
-			}
-
-			return $cache[$category_id];
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/recursive_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.6
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/json_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/json_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/json_helper.php	(nonexistent)
@@ -1,167 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class JSONHelper extends kHelper {
-
-//		var $match = Array ('\\', "\n", "\t", "\r", "\b", "\f", '"');
-//		var $replace = Array ('\\\\', '\\n', '\\t', '\\r', '\\b', '\\f', '\"');
-
-//		\x{2028} is some strange char found in GTA responses... it breaks javascript
-		var $match = Array ('/\\\\/u', '/\\"/u', '/\\t/u', '/\\n/u', '/\\r/u', '/\\x{2028}/u');
-		var $replace = Array ('\\\\\\\\', '\\"', '\\t', '\\n', '\\r', '');
-
-		/**
-		 * Object constructor
-		 *
-		 * @return JSONHelper
-		 */
-		function JSONHelper() {
-
-		}
-
-		/**
-		 * Parse structure to JSON
-		 *
-		 * @param mixed $data
-		 * @return string
-		 */
-		function parse($data)
-		{
-			return '('.$this->encode($data).')';
-		}
-
-		/**
-		 * Converts PHP variable to JSON string
-		 * Can convert any PHP variable with any content to correct JSON structure
-		 *
-		 * @param mixed $data Data to convert
-		 * @return string
-		 */
-		function encode($data)
-		{
-			$type = $this->getType($data);
-
-			switch ($type) {
-				case 'object':
-					$data = '{'.$this->processData($data, $type).'}';
-					break;
-				case 'array':
-					$data = '['.$this->processData($data, $type).']';
-					break;
-				default:
-					if (is_int($data) || is_float($data)) {
-						$data = (string)$data;
-					} elseif (is_string($data)) {
-						$data = '"'.$this->escape($data).'"';
-					} elseif (is_bool($data)) {
-						$data = $data ? 'true' : 'false';
-					} else {
-						$data = 'null';
-					}
-			}
-			return $data;
-		}
-
-		/**
-		 * Enter description here...
-		 *
-		 * @param unknown_type $input
-		 * @param unknown_type $type
-		 * @return unknown
-		 */
-		function processData($data, $type)
-		{
-			$output = Array();
-			// If data is an object - it should be converted as a key => value pair
-
-			if ($type == 'object'){
-				foreach($data as $key => $value) {
-					$output[] = '"'.$key.'": '.$this->encode($value);
-				}
-			} else {
-				foreach($data as $key => $value) {
-					$output[] = $this->encode($value);
-				}
-			}
-			return implode(',', $output);;
-		}
-
-		/**
-		 * Function determines type of variable
-		 *
-		 * @param unknown_type $data
-		 * @return unknown
-		 */
-		function getType(&$data)
-		{
-			if (is_object($data)) {
-				$type = 'object';
-			} elseif (is_array($data)) {
-				// If array is assoc it should be processed as an object
-				if($this->is_assoc($data)) {
-					$type = 'object';
-				} else {
-					$type = 'array';
-				}
-			} elseif (is_numeric($data)) {
-				$type = 'number';
-			} elseif(is_string($data)) {
-				$type = 'string';
-			} elseif(is_bool($data)) {
-				$type = 'boolean';
-			} elseif(is_null($data)) {
-				$type = 'null';
-			} else {
-				$type = 'string';
-			}
-			return $type;
-		}
-
-		/**
-		 * Function determines if array is associative
-		 *
-		 * @param array $array
-		 * @return bool
-		 */
-		function is_assoc($array)
-		{
-//			Arrays are defined as integer-indexed arrays starting at index 0, where
-//	     	the last index is (count($array) -1); any deviation from that is
-//	     	considered an associative array, and will be encoded as such (from Zend Framework).
-
-			return !empty($array) && (array_keys($array) !== range(0, count($array) - 1));
-		}
-
-		/**
-		 * Escapes special characters
-		 * Function escapes ", \, /, \n and \r symbols so that not to cause JavaScript error or
-		 * data loss
-		 *
-		 * @param string $string
-		 * @return string
-		 */
-		function escape($string)
-		{
-			$string = preg_replace($this->match, $this->replace, $string);
-
-			return $string;
-
-			// Escape certain ASCII characters:
-	        // 0x08 => \b
-	        // 0x0c => \f
-//			return str_replace(array(chr(0x08), chr(0x0C)), array('\b', '\f'), $string);
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/json_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.2.2
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/mailing_list_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/mailing_list_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/mailing_list_helper.php	(nonexistent)
@@ -1,284 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class MailingListHelper extends kHelper {
-
-		var $_mailingId = false;
-
-		/**
-		 * Adds new email from given mailing to emails queue
-		 *
-		 * @param string $email
-		 * @param int $mailing_id
-		 * @param Array $mailing_data
-		 */
-		function queueEmail($email, $mailing_id, &$mailing_data)
-		{
-			$esender =& $this->Application->recallObject('EmailSender');
-			/* @var $esender kEmailSendingHelper */
-
-			if ($this->_mailingId != $mailing_id) {
-				if (is_numeric($this->_mailingId)) {
-					// clear fields after previous mailing processing
-					$esender->Clear();
-				}
-
-				// 1. set headers same for all emails
-				list ($mailing_data['FromName'], $mailing_data['FromEmail']) = $this->_getSenderData($mailing_data);
-				$esender->SetFrom($mailing_data['FromEmail'], $mailing_data['FromName']);
-
-				$esender->SetSubject($mailing_data['Subject']);
-				$esender->SetBody($mailing_data['MessageHtml'], $mailing_data['MessageText']);
-
-		    	// 2. add attachment if any
-		    	$attachments = $mailing_data['Attachments'] ? explode('|', $mailing_data['Attachments']) : Array ();
-
-				foreach ($attachments as $attachment) {
-					$esender->AddAttachment(FULL_PATH . ITEM_FILES_PATH . $attachment);
-				}
-
-				$this->_mailingId = $mailing_id;
-			}
-
-			// 3. set recipient specific fields
-			$esender->SetTo($email, $email);
-			$esender->Deliver(null, $mailing_id, false);
-
-			// 4. write to log
-			$log_fields_hash = Array (
-				'fromuser'	=>	$mailing_data['FromName'] . '<' . $mailing_data['FromEmail'] . '>',
-				'addressto'	=>	$email,
-				'subject'	=>	$mailing_data['Subject'],
-				'timestamp'	=>	adodb_mktime(),
-				'EventParams' => serialize( Array ('MailingId' => $mailing_id) ),
-			);
-
-			$this->Conn->doInsert($log_fields_hash, TABLE_PREFIX . 'EmailLog');
-		}
-
-		/**
-		 * Returns mass mail sender name & email
-		 *
-		 * @return Array
-		 */
-		function _getSenderData(&$mailing_data)
-		{
-			$is_root = true;
-			if ($mailing_data['PortalUserId'] > 0) {
-				$sender =& $this->Application->recallObject('u.-item', null, Array ('skip_autoload' => true));
-				/* @var $sender UsersItem */
-
-				$sender->Load($mailing_data['PortalUserId']);
-
-				$email_address = $sender->GetDBField('Email');
-				$name = trim( $sender->GetDBField('FirstName') . ' ' . $sender->GetDBField('LastName') );
-				$is_root = false;
-			}
-
-			if ($is_root || !$email_address) {
-				$email_address = $this->Application->ConfigValue('Smtp_AdminMailFrom');
-			}
-
-			if ($is_root || !$name) {
-				$name = strip_tags( $this->Application->ConfigValue('Site_Name') );
-			}
-
-			return Array ($name, $email_address);
-		}
-
-		/**
-		 * Generates recipients emails based on "To" field value
-		 *
-		 * @param int $id
-		 * @param Array $fields_hash
-		 */
-		function generateRecipients($id, $fields_hash)
-		{
-			$recipients = explode(';', $fields_hash['To']);
-
-			// 1. group recipients by types
-			$recipients_grouped = Array ();
-			foreach ($recipients as $recipient) {
-				if (strpos($recipient, '_') !== false) {
-					list ($recipient_type, $recipient_id) = explode('_', $recipient);
-				}
-				else {
-					$recipient_type = 'direct';
-					$recipient_id = $recipient;
-				}
-
-				if (!array_key_exists($recipient_type, $recipients_grouped)) {
-					$recipients_grouped[$recipient_type] = Array ();
-				}
-
-				$recipients_grouped[$recipient_type][] = $recipient_id;
-			}
-
-			// for each group convert ids to names
-			$recpient_emails = Array ();
-			foreach ($recipients_grouped as $recipient_type => $group_recipients) {
-				$recpient_emails = array_merge($recpient_emails, $this->_getRecipientEmails($recipient_type, $group_recipients));
-			}
-
-			$recpient_emails = array_unique($recpient_emails);
-
-			return Array (
-				'ToParsed' => serialize($recpient_emails),
-				'EmailsTotal' => count($recpient_emails),
-			);
-		}
-
-		function _getRecipientEmails($recipient_type, $recipient_ids)
-		{
-			if (strpos($recipient_type, '.') !== false) {
-				// remove special
-				list ($recipient_type, ) = explode('.', $recipient_type);
-			}
-
-			if ($recipient_type != 'u' && $recipient_type != 'g') {
-				// theese are already emails
-				return $recipient_ids;
-			}
-
-			switch ($recipient_type) {
-				case 'u':
-					$sql = 'SELECT Email
-							FROM ' . TABLE_PREFIX . 'PortalUser
-							WHERE (PortalUserId IN (' . implode(',', $recipient_ids) . ')) AND (Email <> "")';
-					break;
-
-				case 'g':
-					$sql = 'SELECT u.Email
-							FROM ' . TABLE_PREFIX . 'UserGroup ug
-							LEFT JOIN ' . TABLE_PREFIX . 'PortalUser u ON u.PortalUserId = ug.PortalUserId
-							WHERE (ug.GroupId IN (' . implode(',', $recipient_ids) . ')) AND (u.Email <> "")';
-					break;
-			}
-
-			return $this->Conn->GetCol($sql);
-		}
-
-		function getRecipientNames($recipient_type, $recipient_ids)
-		{
-			if (strpos($recipient_type, '.') !== false) {
-				// remove special
-				list ($recipient_type, ) = explode('.', $recipient_type);
-			}
-
-			switch ($recipient_type) {
-				case 'u':
-					$title_field = 'Email';
-					break;
-
-				case 'g':
-					$title_field = 'Name';
-					break;
-
-				default:
-					$title_field = false;
-					break;
-			}
-
-			if ($title_field === false || !$recipient_ids) {
-				return $recipient_ids;
-			}
-
-			$id_field = $this->Application->getUnitOption($recipient_type, 'IDField');
-			$table_name = $this->Application->getUnitOption($recipient_type, 'TableName');
-
-			$sql = 'SELECT ' . $title_field . '
-					FROM ' . $table_name . '
-					WHERE ' . $id_field . ' IN (' . implode(',', $recipient_ids) . ')';
-			return $this->Conn->GetCol($sql);
-		}
-
-		/**
-		 * Updates information about sent email count based on given totals by mailings
-		 *
-		 * @param Array $mailing_totals
-		 */
-		function _updateSentTotals($mailing_totals)
-		{
-			if (array_key_exists(0, $mailing_totals)) {
-				// don't update sent email count for mails queued directly (not via mailing lists)
-				unset($mailing_totals[0]);
-			}
-
-			$id_field = $this->Application->getUnitOption('mailing-list', 'IDField');
-			$table_name = $this->Application->getUnitOption('mailing-list', 'TableName');
-
-			// update sent email count for each processed mailing
-			foreach ($mailing_totals as $mailing_id => $mailing_total) {
-				$sql = 'UPDATE ' . $table_name . '
-						SET EmailsSent = EmailsSent + ' . $mailing_total . '
-						WHERE ' . $id_field . ' = ' . $mailing_id;
-				$this->Conn->Query($sql);
-			}
-
-			// mark mailings, that were processed completely
-			$sql = 'UPDATE ' . $table_name . '
-					SET Status = ' . MAILING_LIST_PROCESSED . '
-					WHERE (Status = ' . MAILING_LIST_PARTIALLY_PROCESSED . ') AND (EmailsSent = EmailsTotal)';
-			$this->Conn->Query($sql);
-		}
-
-		/**
-		 * Sent given messages from email queue
-		 *
-		 * @param Array $messages
-		 */
-		function processQueue(&$messages)
-		{
-			$esender =& $this->Application->recallObject('EmailSender');
-			/* @var $esender kEmailSendingHelper */
-
-			$queue_table = $this->Application->getUnitOption('email-queue', 'TableName');
-
-			$i = 0;
-			$message = Array ();
-			$mailing_totals = Array ();
-			$message_count = count($messages);
-
-			while ($i < $message_count) {
-				$message[0] = unserialize($messages[$i]['MessageHeaders']);
-				$message[1] =& $messages[$i]['MessageBody'];
-				$delivered = $esender->Deliver($message, true); // immediate send!
-
-				if ($delivered) {
-					// send succseeded, delete from queue
-					$sql = 'DELETE FROM ' . $queue_table . '
-							WHERE EmailQueueId = ' . $messages[$i]['EmailQueueId'];
-					$this->Conn->Query($sql);
-
-					$mailing_id = $messages[$i]['MailingId'];
-					if (!array_key_exists($mailing_id, $mailing_totals)) {
-						$mailing_totals[$mailing_id] = 0;
-					}
-					$mailing_totals[$mailing_id]++;
-				}
-				else {
-					// send failed, increment retries counter
-					$sql = 'UPDATE ' . $queue_table . '
-							SET SendRetries = SendRetries + 1, LastSendRetry = ' . adodb_mktime() . '
-							WHERE EmailQueueId = ' . $messages[$i]['EmailQueueId'];
-					$this->Conn->Query($sql);
-				}
-				$i++;
-			}
-
-			$this->_updateSentTotals($mailing_totals);
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/mailing_list_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.2.2
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/spam_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/spam_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/spam_helper.php	(nonexistent)
@@ -1,144 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class SpamHelper extends kHelper {
-
-		/**
-		 * Table name where spam control information is keeped
-		 *
-		 * @var string
-		 */
-		var $TableName;
-
-		/**
-		 * RecourceId field of current item
-		 *
-		 * @var int
-		 */
-		var $ResourceId = 0;
-
-		/**
-		 * Type of information to put into spam control
-		 *
-		 * @var string
-		 */
-		var $DataType = '';
-
-		/**
-		 * Default spam control record expiration
-		 *
-		 * @var int
-		 */
-		var $Expiration = 0;
-
-		function SpamHelper()
-		{
-			parent::kHelper();
-			$this->TableName = TABLE_PREFIX.'SpamControl';
-		}
-
-		/**
-		 * Initializes helper for concrete item
-		 *
-		 * @param int $resource_id
-		 * @param string $data_type
-		 * @param int $expiration
-		 */
-		function InitHelper($resource_id, $data_type, $expiration)
-		{
-			$this->ResourceId = $resource_id;
-			$this->DataType = $data_type;
-
-			if (preg_match('/(.*):(.*)/', $expiration, $regs)) {
-				$delay_value = $this->Application->ConfigValue($regs[1]);
-				$delay_interval = $this->Application->ConfigValue($regs[2]);
-				$expiration = $delay_value * $delay_interval;
-			}
-
-			$this->Expiration = adodb_mktime() + $expiration;
-		}
-
-		/**
-		 * Returns WHERE clause that identified each spam control record
-		 *
-		 * @param bool $as_array return result as array, not string
-		 *
-		 * @return string
-		 */
-		function GetKeyClause($as_array = false)
-		{
-			$user_id = $this->Application->RecallVar('user_id');
-
-			if ($user_id == 0) {
-				$user_id = -2;
-			}
-
-			$keys = Array (
-				'ItemResourceId'	=>	$this->ResourceId,
-				'IPaddress'			=>	$_SERVER['REMOTE_ADDR'],
-				'PortalUserId'		=>	$user_id,
-				'DataType'			=>	$this->DataType,
-			);
-
-			if ($as_array) {
-				return $keys;
-			}
-
-			$ret = '';
-			foreach ($keys as $field_name => $field_value) {
-				$ret .= '('.$field_name.' = '.$this->Conn->qstr($field_value).') AND ';
-			}
-
-			return preg_replace('/(.*) AND $/', '\\1', $ret);
-		}
-
-		/**
-		 * Allows to add current item in spam control
-		 *
-		 */
-		function AddToSpamControl()
-		{
-			$fields_hash = $this->GetKeyClause(true);
-
-			$fields_hash['Expire'] = $this->Expiration;
-			$this->Conn->doInsert($fields_hash, $this->TableName);
-		}
-
-		/**
-		 * Allows to check if current item is in spam control
-		 *
-		 * @return bool
-		 */
-		function InSpamControl()
-		{
-			$key_clause = $this->GetKeyClause();
-
-			$sql = 'SELECT Expire
-					FROM '.$this->TableName.'
-					WHERE '.$key_clause;
-			$expires = $this->Conn->GetOne($sql);
-
-			if ($expires && $expires < adodb_mktime()) {
-				// spam control record is expired
-				$sql = 'DELETE FROM '.$this->TableName.'
-						WHERE '.$key_clause;
-				$this->Conn->Query($sql);
-				return false;
-			}
-
-			return $expires ? true : false;
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/spam_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/permissions_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/permissions_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/permissions_helper.php	(nonexistent)
@@ -1,680 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class kPermissionsHelper extends kHelper {
-
-		/**
-		 * Current set of permissions for group being edited
-		 *
-		 * @var Array
-		 */
-		var $Permissions = Array();
-
-		function LoadPermissions($group_id, $cat_id, $type = 1, $prefix = '')
-		{
-			$perm_table = $this->Application->getUnitOption('perm', 'TableName');
-			$perm_table = $this->Application->GetTempName($perm_table, 'prefix:'.$prefix);
-			$sql = 'SELECT *
-					FROM '.$perm_table.'
-					WHERE (GroupId = '.$group_id.') AND (CatId = '.$cat_id.') AND (Type = '.$type.')';
-			$permissions = $this->Conn->Query($sql, 'Permission');
-
-			$this->Permissions = Array();
-			foreach ($permissions as $perm_name => $perm_options) {
-				$perm_record['value'] = $perm_options['PermissionValue'];
-				$perm_record['id'] = $perm_options['PermissionId'];
-				$this->Permissions[$perm_name] = $perm_record;
-			}
-		}
-
-		function getPermissionValue($perm_name)
-		{
-			 return isset($this->Permissions[$perm_name]) ? $this->Permissions[$perm_name]['value'] : 0;
-		}
-
-		function getPermissionID($perm_name)
-		{
-			return isset($this->Permissions[$perm_name]) ? $this->Permissions[$perm_name]['id'] : 0;
-		}
-
-		/**
-		 * This is old permission like ADMIN or LOGIN
-		 *
-		 * @param string $section_name
-		 * @param string $perm_name
-		 * @return bool
-		 */
-		function isOldPermission($section_name, $perm_name)
-		{
-			return $section_name == 'in-portal:root' && $perm_name != 'view';
-		}
-
-		/**
-		 * Returns permission names to check based on event name and item prefix (main item or subitem)
-		 *
-		 * @param kEvent $event
-		 * @return Array
-		 */
-		function getPermissionByEvent(&$event, $perm_mapping)
-		{
-			$top_prefix = $event->getEventParam('top_prefix');
-
-			$pefix_type = ($top_prefix == $event->Prefix) ? 'self' : 'subitem';
-			$perm_mapping = getArrayValue($perm_mapping, $event->Name);
-
-			if (!$perm_mapping[$pefix_type]) {
-				trigger_error('Permission mappings not defined for event <b>'.$top_prefix.' <- '.$event->Prefix.':'.$event->Name.'</b>', E_USER_ERROR);
-			}
-
-			if ($perm_mapping[$pefix_type] === true) {
-				// event is defined in mapping but is not checked by permissions
-				return true;
-			}
-
-			return explode('|', $perm_mapping[$pefix_type]);
-		}
-
-		/**
-		 * Common event permission checking method
-		 *
-		 * @param kEvent $event
-		 */
-		function CheckEventPermission(&$event, $perm_mapping)
-		{
-			$section = $event->getSection();
-			if (preg_match('/^CATEGORY:(.*)/', $section)) {
-				return $this->CheckEventCategoryPermission($event, $perm_mapping);
-			}
-
-			$top_prefix = $event->getEventParam('top_prefix');
-			$check_perms = $this->getPermissionByEvent($event, $perm_mapping);
-
-			if ($check_perms === true) {
-				// event is defined in mapping but is not checked by permissions
-				return true;
-			}
-
-			$perm_status = false;
-			foreach ($check_perms as $perm_name) {
-				// check if at least one of required permissions is set
-				$perm_name = $section.'.'.$perm_name;
-				$perm_status = $this->CheckPermission($perm_name, 1);
-				if (($perm_name == $section.'.add') && $perm_status && ($top_prefix == $event->Prefix)) {
-					// main item, add permission allowed, but ID is > 0, then deny permission
-					// how to get id here
-				}
-
-				if ($perm_status) {
-					return $perm_status;
-				}
-			}
-
-			return $this->finalizePermissionCheck($event, $perm_status);
-		}
-
-		/**
-		 * Returns owner + primary category for each item (used for permission checking)
-		 *
-		 * @param string $prefix
-		 * @param string $ids
-		 * @param bool $temp_mode
-		 * @return Array
-		 * @author Alex
-		 */
-		function GetCategoryItemData($prefix, $ids, $temp_mode = false)
-		{
-			if (is_array($ids)) {
-				$ids = implode(',', $ids);
-			}
-			$id_field = $this->Application->getUnitOption($prefix, 'IDField');
-			$table_name = $this->Application->getUnitOption($prefix, 'TableName');
-			$ci_table = $this->Application->getUnitOption('ci', 'TableName');
-
-			if ($temp_mode) {
-				$table_name = $this->Application->GetTempName($table_name, 'prefix:' . $prefix);
-				$ci_table = $this->Application->GetTempName($ci_table, 'prefix:' . $prefix);
-			}
-
-			$owner_field = $this->Application->getUnitOption($prefix, 'OwnerField');
-			if (!$owner_field) {
-				$owner_field = 'CreatedById';
-			}
-
-			$sql = 'SELECT item_table.'.$id_field.', item_table.'.$owner_field.' AS CreatedById, ci.CategoryId
-					FROM '.$table_name.' item_table
-					LEFT JOIN '.$ci_table.' ci ON ci.ItemResourceId = item_table.ResourceId
-					WHERE item_table.'.$id_field.' IN ('.$ids.') AND (ci.PrimaryCat = 1)';
-			return $this->Conn->Query($sql, $id_field);
-		}
-
-		/**
-		 * Check category-based permissions for category items
-		 *
-		 * @param kEvent $event
-		 */
-		function _frontCheckEventCategoryPermission(&$event, $event_perm_mapping)
-		{
-			// mapping between specific permissions and common permissions
-			static $perm_mapping = Array(
-				'add' => 'ADD', 'add.pending' => 'ADD.PENDING', 'edit' => 'MODIFY',
-				'edit.pending' => 'MODIFY.PENDING', 'delete' => 'DELETE', 'view' => 'VIEW'
-			);
-
-			$top_prefix = $event->getEventParam('top_prefix');
-			$event_handler =& $this->Application->recallObject($event->Prefix.'_EventHandler');
-			/* @var $event_handler kCatDBEventHandler */
-
-			$raise_warnings = $event->getEventParam('raise_warnings');
-			$event->setEventParam('raise_warnings', 0);
-			if ($event->Prefix != $top_prefix) {
-				$top_event = new kEvent($top_prefix.':'.$event->Name);
-				$id = $event_handler->getPassedID($top_event);
-			}
-			else {
-				$id = $event_handler->getPassedID($event);
-			}
-			$event->setEventParam('raise_warnings', $raise_warnings);
-
-			$owner_id = -1; // owner is root if not detected
-			if (!$id) {
-				// item being created -> check by current (before editing started, saved in OnPreCreate event) category permissions
-				// note: category in session is placed on catalog data import start
-				$category_id = $this->Application->IsAdmin() ? $this->Application->RecallVar('m_cat_id') : $this->Application->GetVar('m_cat_id');
-			}
-			elseif ($top_prefix == 'c' || $top_prefix == 'st') {
-				$category_id = $id;
-			}
-			else {
-				// item being edited -> check by it's primary category permissions
-				$items_info = $this->GetCategoryItemData($top_prefix, $id);
-				$category_id = $items_info[$id]['CategoryId'];
-				$owner_id = $items_info[$id]['CreatedById'];
-			}
-
-			// specific permission check for pending & owner permissions: begin
-			$uploader_events = Array ('OnUploadFile', 'OnDeleteFile', 'OnViewFile');
-			if (in_array($event->Name, $uploader_events)) {
-				// don't recall target object during uploader-related, because OnItemLoad will use incorrect
-				// $user_id in Firefox (during Flash problems session will be used from Internet Exploere)
-				$new_item = false;
-			}
-			else {
-				$new_item = $this->Application->IsAdmin() && $event_handler->isNewItemCreate($event) ? true : false;
-				$check_status = $this->checkCombinedPermissions($event, $owner_id, (int)$category_id, $new_item);
-			}
-
-			if (isset($check_status)) {
-				return $this->finalizePermissionCheck($event, $check_status);
-			}
-			// specific permission check for pending & owner permissions: end
-
-			$perm_status = false;
-			$check_perms = $this->getPermissionByEvent($event, $event_perm_mapping);
-
-			if ($check_perms === true) {
-				// event is defined in mapping but is not checked by permissions
-				return true;
-			}
-
-			$item_prefix = $this->Application->getUnitOption($top_prefix, 'PermItemPrefix');
-			foreach ($check_perms as $perm_name) {
-				// check if at least one of required permissions is set
-				if (!isset($perm_mapping[$perm_name])) {
-					// not mapped permission (e.g. advanced:approve) -> skip
-					continue;
-				}
-				$perm_name = $item_prefix.'.'.$perm_mapping[$perm_name];
-				$perm_status = $this->CheckPermission($perm_name, 0, (int)$category_id);
-
-				if ($perm_status) {
-					return $perm_status;
-				}
-			}
-
-			return $this->finalizePermissionCheck($event, $perm_status);
-		}
-
-		/**
-		 * Finalizes permission checking (with additional debug output, when in debug mode)
-		 *
-		 * @param kEvent $event
-		 * @param bool $perm_status
-		 * @return bool
-		 */
-		function finalizePermissionCheck(&$event, $perm_status)
-		{
-			if (!$perm_status) {
-				if ($this->Application->isDebugMode()) {
-					// for debugging purposes
-					$event->SetRedirectParam('section', $event->getSection());
-					$event->SetRedirectParam('main_prefix', $event->getEventParam('top_prefix'));
-					$event->SetRedirectParam('event_name', $event->Name);
-					$event->SetRedirectParam('next_template', $this->Application->GetVar('t'));
-				}
-
-				$event->status = erPERM_FAIL;
-			}
-
-			return $perm_status;
-		}
-
-		/**
-		 * Allows to check combined permissions (*.owner, *.pending) for add/modify/delete operations from admin & front-end
-		 *
-		 * @param kEvent $event
-		 * @param int $owner_id
-		 * @param int $category_id
-		 * @param bool $new_item
-		 * @return mixed
-		 */
-		function checkCombinedPermissions(&$event, $owner_id, $category_id, $new_item = false)
-		{
-			$ret = null; // true/false when used, null when not used
-			$top_prefix = $event->getEventParam('top_prefix');
-
-			// check admin permission
-			if (substr($event->Name, 0, 9) == 'OnPreSave') {
-				if ($new_item) {
-					$ret = $this->AddCheckPermission($category_id, $top_prefix);
-				}
-				else {
-					// add & modify because $new_item is false, when item is aready created & then saved in temp table (even with 0 id)
-					$ret =	$this->AddCheckPermission($category_id, $top_prefix) ||
-							$this->ModifyCheckPermission($owner_id, $category_id, $top_prefix);
-				}
-			}
-
-			// check front-end permissions
-			switch ($event->Name) {
-				case 'OnCreate':
-					$ret = $this->AddCheckPermission($category_id, $top_prefix);
-					break;
-
-				case 'OnUpdate':
-					$ret = $this->ModifyCheckPermission($owner_id, $category_id, $top_prefix);
-					break;
-
-				case 'OnDelete':
-				case 'OnMassDelete':
-					$ret = $this->DeleteCheckPermission($owner_id, $category_id, $top_prefix);
-					break;
-			}
-
-			if ($ret === 0) {
-				// permission check failed (user has no permission)
-				$event->status = erPERM_FAIL;
-			}
-
-			return $ret;
-		}
-
-		/**
-		 * Simplified permission check for category items, when adding/editing them from advanced view.
-		 *
-		 * @param kEvent $event
-		 * @return mixed
-		 */
-		function CheckEventCategoryPermission(&$event, $event_perm_mapping)
-		{
-			if (!$this->Application->IsAdmin()) {
-				// check front-end permission by old scheme
-				return $this->_frontCheckEventCategoryPermission($event, $event_perm_mapping);
-			}
-
-			if (substr($event->Name, 0, 9) == 'OnPreSave') {
-				// check separately, because permission mapping is not defined for OnPreSave* events
-				$check_perms = Array ('add', 'edit');
-			}
-			else {
-				$check_perms = $this->getPermissionByEvent($event, $event_perm_mapping);
-			}
-
-			if ($check_perms === true) {
-				// event is defined in mapping but is not checked by permissions
-				return true;
-			}
-
-			// 1. most of events does require admin login only
-			$perm_status = $this->Application->LoggedIn() && $this->Application->IsAdmin();
-
-			// 2. in case, when event require more, then "view" right, then restrict it to temporary tables only
-			if (!in_array('view', $check_perms)) {
-				$perm_status = $perm_status && $this->Application->IsTempMode($event->Prefix, $event->Special);
-			}
-
-			return $this->finalizePermissionCheck($event, $perm_status);
-		}
-
-		function TagPermissionCheck($params, $is_owner = false)
-		{
-			$perm_prefix = getArrayValue($params, 'perm_prefix');
-			$perm_event = getArrayValue($params, 'perm_event');
-			$permission_groups = getArrayValue($params, 'permissions');
-
-			if ($permission_groups && !$perm_event) {
-				// check permissions by permission names in current category
-				$permission_groups = explode('|', $permission_groups);
-				$group_has_permission = false;
-
-				$perm_category = isset($params['cat_id']) ? $params['cat_id'] : $this->Application->GetVar('m_cat_id');
-
-				if ($perm_prefix) {
-					// use primary category of item with id from {perm_prefix}_id as base for permission checking
-					$perm_category = $this->getPrimaryCategory($perm_prefix);
-				}
-
-				$is_system = isset($params['system']) && $params['system'] ? 1 : 0;
-				foreach ($permission_groups as $permission_group) {
-					$permissions = explode(',', $permission_group);
-					$has_permission = true;
-					foreach ($permissions as $permission) {
-						$owner_checked = (strpos($permission, '.OWNER.') !== false) ? $is_owner : true;
-						$has_permission = $has_permission && $this->CheckPermission($permission, $is_system, $perm_category) && $owner_checked;
-					}
-					$group_has_permission = $group_has_permission || $has_permission;
-
-					if ($group_has_permission) {
-						return true;
-					}
-				}
-				return false;
-			}
-			elseif ($perm_event) {
-				// check permission by event name
-				list ($prefix, $event) = explode(':', $perm_event);
-				$event_handler =& $this->Application->recallObject($prefix.'_EventHandler');
-				return $event_handler->CheckPermission( new kEvent($perm_event) );
-			}
-
-			return true;
-		}
-
-		/**
-		 * Returns item's primary category (get item_id from request)
-		 *
-		 * @param string $prefix
-		 * @return int
-		 */
-		function getPrimaryCategory($prefix)
-		{
-			$id_field = $this->Application->getUnitOption($prefix, 'IDField');
-			$table_name = $this->Application->getUnitOption($prefix, 'TableName');
-			$id = $this->Application->GetVar($prefix.'_id');
-
-			if (!$id) return $this->Application->GetVar('m_cat_id');
-
-			$sql = 'SELECT ResourceId
-					FROM '.$table_name.'
-					WHERE '.$id_field.' = '.$id;
-			$resource_id = $this->Conn->GetOne($sql);
-
-			$sql = 'SELECT CategoryId
-					FROM '.$this->Application->getUnitOption('ci', 'TableName').'
-					WHERE ItemResourceId = '.$resource_id.' AND PrimaryCat = 1';
-			return $this->Conn->GetOne($sql);
-		}
-
-		/**
-		 * Returns no permission template to redirect to
-		 *
-		 * @param Array $params
-		 * @return Array
-		 */
-		function getPermissionTemplate($params)
-		{
-			$t = $this->Application->GetVar('t');
-			if ($next_t = getArrayValue($params, 'next_template')) {
-				$t = $next_t;
-			}
-
-			$redirect_params = $this->Application->HttpQuery->getRedirectParams(true);
-
-			if (array_key_exists('pass_category', $params)) {
-				$redirect_params['pass_category'] = $params['pass_cateogry'];
-			}
-
-			if (!$this->Application->LoggedIn()) {
-				$redirect_template = array_key_exists('login_template', $params) ? $params['login_template'] : '';
-				if (!$redirect_template && $this->Application->IsAdmin()) {
-					$redirect_template = 'login';
-				}
-				$redirect_params['next_template'] = $t;
-			}
-			else {
-				if (isset($params['no_permissions_template'])) {
-					$redirect_template = $params['no_permissions_template'];
-				}
-				else {
-					$redirect_template = $this->Application->IsAdmin() ? 'no_permission' : $this->Application->ConfigValue('NoPermissionTemplate');
-				}
-
-				if ($this->Application->isDebugMode()) {
-					$redirect_params['from_template'] = 1;
-					$redirect_params['perms'] = $params[ isset($params['permissions']) ? 'permissions' : 'perm_event' ];
-					$redirect_params['next_template'] = $t;
-				}
-			}
-
-			if (isset($params['index_file']) && $params['index_file']) {
-				$redirect_params['index_file'] = $params['index_file'];
-			}
-
-			return Array($redirect_template, $redirect_params);
-		}
-
-		/**
-		 * Check current user permissions based on it's group permissions in specified category (for non-system permissions) or just checks if system permission is set
-		 *
-		 * @param string $name permission name
-		 * @param int $cat_id category id, current used if not specified
-		 * @param int $type permission type {1 - system, 0 - per category}
-		 * @return int
-		 */
-		function CheckPermission($name, $type = 1, $cat_id = null)
-		{
-			$user_id = $this->Application->RecallVar('user_id');
-			return $this->CheckUserPermission($user_id, $name, $type, $cat_id);
-		}
-
-		function CheckUserPermission($user_id, $name, $type = 1, $cat_id = null)
-		{
-			if ($user_id == -1) {
-				// "root" is allowed anywhere
-				return $name == 'SYSTEM_ACCESS.READONLY' ? 0 : 1;
-			}
-
-			if ($type == 1) {
-				// "system" permission are always checked per "Home" category (ID = 0)
-				$cat_id = 0;
-			}
-
-			if (!isset($cat_id)) {
-				$cat_id = $this->Application->GetVar('m_cat_id');
-			}
-
-			$cache_key = $name.'|'.$type.'|'.$cat_id;
-			$perm_value = $this->Application->getCache('permissions', $cache_key);
-			if ($perm_value !== false) {
-				return $perm_value;
-			}
-
-			// perm cache is build only based on records in db, that's why if permission is not explicitly denied, then
-			// that (perm cache creator) code thinks that it is allowed & adds corresponding record and code below will
-			// return incorrect results
-
-			if ($user_id == $this->Application->RecallVar('user_id')) {
-				$groups = explode(',', $this->Application->RecallVar('UserGroups'));
-			}
-			else { // checking not current user
-				$sql = 'SELECT GroupId
-						FROM '.TABLE_PREFIX.'UserGroup
-						WHERE (PortalUserId = '.$user_id.') AND ( (MembershipExpires IS NULL) OR ( MembershipExpires >= UNIX_TIMESTAMP() ) )';
-				$groups = $this->Conn->GetCol($sql);
-				array_push($groups, $this->Application->ConfigValue('User_LoggedInGroup') );
-			}
-
-			if (preg_match('/(.*)\.VIEW$/', $name) && ($type == 0)) {
-				// cached view permission of category: begin
-				if (strpos($cat_id, '|') !== false) {
-					$category_path = explode('|', substr($cat_id, 1, -1));
-					$cat_id = end($category_path);
-				}
-
-				$sql = 'SELECT PermissionConfigId
-						FROM '.TABLE_PREFIX.'PermissionConfig
-						WHERE PermissionName = '.$this->Conn->qstr($name);
-				$perm_id = $this->Conn->GetOne($sql);
-
-				$sql = 'SELECT PermId
-						FROM '.TABLE_PREFIX.'PermCache
-						WHERE (PermId = '.$perm_id.') AND (CategoryId = '.$cat_id.')';
-
-				$view_filters = Array();
-				foreach ($groups as $group) {
-					$view_filters[] = 'FIND_IN_SET('.$group.', ACL)';
-				}
-				$sql .= ' AND ('.implode(' OR ', $view_filters).')';
-				$perm_value = $this->Conn->GetOne($sql) ? 1 : 0;
-
-				$this->Application->setCache('permissions', $cache_key, $perm_value);
-				return $perm_value;
-				// cached view permission of category: end
-			}
-
-			if (is_numeric($cat_id) && $cat_id == 0) {
-				$cat_hierarchy = Array(0);
-			}
-			else {
-				if (strpos($cat_id, '|') !== false) {
-					$cat_hierarchy = $cat_id;
-				}
-				else {
-					$sql = 'SELECT ParentPath
-							FROM '.$this->Application->getUnitOption('c', 'TableName').'
-							WHERE CategoryId = '.$cat_id;
-					$cat_hierarchy = $this->Conn->GetOne($sql);
-					if ($cat_hierarchy === false) {
-						// category was deleted, but refrence to it stays in other tables -> data integrity is broken
-						$cat_hierarchy = '|' . $this->Application->findModule('Name', 'Core', 'RootCat') . '|';
-					}
-				}
-
-				$cat_hierarchy = explode('|', substr($cat_hierarchy, 1, -1));
-				$cat_hierarchy = array_reverse($cat_hierarchy);
-				array_push($cat_hierarchy, 0);
-			}
-
-			$perm_value = 0;
-			$groups = implode(',',$groups);
-			foreach ($cat_hierarchy as $category_id) {
-				$sql = 'SELECT SUM(PermissionValue)
-						FROM '.TABLE_PREFIX.'Permissions
-						WHERE Permission = "'.$name.'" AND CatId = '.$category_id.' AND GroupId IN ('.$groups.') AND Type = '.$type;
-				$res = $this->Conn->GetOne($sql);
-				if ($res !== false && !is_null($res)) {
-					$perm_value = $res ? 1 : 0;
-					break;
-				}
-			}
-
-			$this->Application->setCache('permissions', $cache_key, $perm_value);
-			return $perm_value;
-		}
-
-		/**
-		 * Allows to check MODIFY & OWNER.MODFY +/- PENDING permission combinations on item
-		 *
-		 * @param int $owner_id user_id, that is owner of the item
-		 * @param int $category_id primary category of item
-		 * @param string $prefix prefix of item
-		 * @return int {0 - no MODIFY permission, 1 - has MODIFY permission, 2 - has MODIFY.PENDING permission}
-		 */
-		function ModifyCheckPermission($owner_id, $category_id, $prefix)
-		{
-			$perm_prefix = $this->Application->getUnitOption($prefix, 'PermItemPrefix');
-
-			$live_modify = $this->CheckPermission($perm_prefix.'.MODIFY', ptCATEGORY, $category_id);
-			if ($live_modify) {
-				return 1;
-			}
-			else if ($this->CheckPermission($perm_prefix.'.MODIFY.PENDING', ptCATEGORY, $category_id)) {
-				return 2;
-			}
-
-			if ($owner_id == $this->Application->RecallVar('user_id')) {
-				// user is item's OWNER -> check this permissions first
-				$live_modify = $this->CheckPermission($perm_prefix.'.OWNER.MODIFY', ptCATEGORY, $category_id);
-				if ($live_modify) {
-					return 1;
-				}
-				else if ($this->CheckPermission($perm_prefix.'.OWNER.MODIFY.PENDING', ptCATEGORY, $category_id)) {
-					return 2;
-				}
-			}
-
-			return 0;
-		}
-
-		/**
-		 * Allows to check DELETE & OWNER.DELETE permission combinations on item
-		 *
-		 * @param int $owner_id user_id, that is owner of the item
-		 * @param int $category_id primary category of item
-		 * @param string $prefix prefix of item
-		 * @return int {0 - no DELETE permission, 1 - has DELETE/OWNER.DELETE permission}
-		 */
-		function DeleteCheckPermission($owner_id, $category_id, $prefix)
-		{
-			$perm_prefix = $this->Application->getUnitOption($prefix, 'PermItemPrefix');
-
-			$live_delete = $this->CheckPermission($perm_prefix.'.DELETE', ptCATEGORY, $category_id);
-			if ($live_delete) {
-				return 1;
-			}
-
-			if ($owner_id == $this->Application->RecallVar('user_id')) {
-				// user is item's OWNER -> check this permissions first
-				$live_delete = $this->CheckPermission($perm_prefix.'.OWNER.DELETE', ptCATEGORY, $category_id);
-				if ($live_delete) {
-					return 1;
-				}
-			}
-
-			return 0;
-		}
-
-		/**
-		 * Allows to check ADD +/- PENDING permission combinations on item
-		 *
-		 * @param int $category_id primary category of item
-		 * @param string $prefix prefix of item
-		 * @return int {0 - no ADD permission, 1 - has ADD permission, 2 - has ADD.PENDING permission}
-		 */
-		function AddCheckPermission($category_id, $prefix)
-		{
-			$perm_prefix = $this->Application->getUnitOption($prefix, 'PermItemPrefix');
-
-			$live_add = $this->CheckPermission($perm_prefix.'.ADD', ptCATEGORY, $category_id);
-			if ($live_add) {
-				return 1;
-			}
-			else if ($this->CheckPermission($perm_prefix.'.ADD.PENDING', ptCATEGORY, $category_id)) {
-				return 2;
-			}
-
-			return 0;
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/permissions_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.32.2.9
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/col_picker_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/col_picker_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/col_picker_helper.php	(nonexistent)
@@ -1,204 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-defined('FULL_PATH') or die('restricted access!');
-
-class kColumnPickerHelper extends kHelper {
-
-	var $PickerData;
-	var $GridName;
-	var $UseFreezer;
-
-	function Init($prefix,$special,$event_params=null)
-	{
-		parent::Init($prefix, $special, $event_params);
-		$this->UseFreezer = $this->Application->ConfigValue('UseColumnFreezer');
-	}
-
-	function LoadColumns($prefix)
-	{
-		$view_name = $this->Application->RecallVar($prefix.'_current_view');
-		$val = $this->Application->RecallPersistentVar($prefix.'_columns_.'.$view_name, ALLOW_DEFAULT_SETTINGS);
-
-		if (!$val) {
-			$cols = $this->RebuildColumns($prefix);
-		}
-		else {
-			$cols = unserialize($val);
-			$current_cols = $this->GetColumns($prefix);
-
-			if ($cols === false || $cols['crc'] != $current_cols['crc'])
-			{
-				$cols = $this->RebuildColumns($prefix, $cols);
-			}
-		}
-		return $cols;
-	}
-
-	function PreparePicker($prefix, $grid_name)
-	{
-		$this->SetGridName($grid_name);
-		$this->PickerData = $this->LoadColumns($prefix);
-	}
-
-	function ApplyPicker($prefix, &$fields, $grid_name)
-	{
-		$this->PreparePicker($prefix, $grid_name);
-		uksort($fields, array($this, 'CmpElems'));
-		$this->RemoveHiddenColumns($fields);
-	}
-
-	function SetGridName($grid_name)
-	{
-		$this->GridName = $grid_name;
-	}
-
-	function CmpElems($a, $b)
-	{
-		$a_index = array_search($a, $this->PickerData['order']);
-		$b_index = array_search($b, $this->PickerData['order']);
-
-		if ($a_index == $b_index) {
-        return 0;
-    }
-    return ($a_index < $b_index) ? -1 : 1;
-	}
-
-	function RebuildColumns($prefix, $current=null)
-	{
-		$cols = $this->GetColumns($prefix);
-
-		if (is_array($current)) {
-			//get common fields both in db and xml
-			$common = array_intersect($current['order'], $cols['order']);
-
-			//get added columns - present in xml, but not in db
-			$added = array_diff($cols['order'], $current['order']);
-			if (in_array('__FREEZER__', $added)) {
-				array_unshift($common, '__FREEZER__');
-				unset($added[array_search('__FREEZER__', $added)]);
-			}
-
-			$cols['order'] = array_merge($common, $added);
-			$cols['hidden_fields'] = array_intersect($current['order'], $current['hidden_fields']);
-			foreach($common as $col) {
-				$cols['widths'][$col] = isset($current['widths'][$col]) ? $current['widths'][$col] : 100;
-			}
-			$this->SetCRC($cols);
-		}
-		$this->StoreCols($prefix, $cols);
-
-		return $cols;
-	}
-
-	function StoreCols($prefix, $cols)
-	{
-		$view_name = $this->Application->RecallVar($prefix.'_current_view');
-		$this->Application->StorePersistentVar($prefix.'_columns_.'.$view_name, serialize($cols));
-	}
-
-	function GetColumns($prefix)
-	{
-		$splited = $this->Application->processPrefix($prefix);
-		$grids = $this->Application->getUnitOption($splited['prefix'], 'Grids');
-		$conf_fields = $this->UseFreezer ? array_merge_recursive(
-			array('__FREEZER__' => array('title' => '__FREEZER__')),
-			$grids[$this->GridName]['Fields']
-		) : $grids[$this->GridName]['Fields'];
-//		$conf_fields = $grids[$this->GridName]['Fields'];
-
-		// we NEED to recall dummy here to apply fields changes imposed by formatters,
-		// such as replacing multilingual field titles etc.
-		$dummy =& $this->Application->recallObject($prefix, null, array('skip_autoload'=>1));
-
-		$counter = 0;
-		$hidden = array();
-		$fields = array();
-		$titles = array();
-		$widths = array();
-		foreach ($conf_fields as $name => $options) {
-			$fields[$counter] = $name;
-			$titles[$name] = $options['title'];
-			$widths[$name] = array_key_exists('width', $options) ? $options['width'] : 100; // only once per grid !
-			if (isset($options['hidden']) && $options['hidden'])
-			{
-				$hidden[$counter] = $name;
-			}
-			$counter++;
-		}
-		$sorted_fields = $fields;
-		sort($sorted_fields);
-		$cols = array(
-			'order' => $fields,
-			'titles' => $titles,
-			'hidden_fields' => $hidden,
-			'widths' => $widths,
-		);
-		$this->SetCRC($cols);
-		return $cols;
-	}
-
-	function SetCRC(&$cols)
-	{
-		$sorted_fields = $cols['order'];
-		$sorted_titles = $cols['titles'];
-		asort($sorted_fields);
-		asort($sorted_titles);
-		$cols['crc'] = crc32(implode(',', $sorted_fields).implode(',', $sorted_titles));
-	}
-
-	function RemoveHiddenColumns(&$fields)
-	{
-		$to_remove = array();
-		foreach ($fields as $name => $options) {
-			if (array_search($name, $this->PickerData['hidden_fields']) !== false) {
-				$to_remove[] = $name;
-			}
-		}
-		foreach ($to_remove as $name) {
-			unset($fields[$name]);
-		}
-	}
-
-	function SaveColumns($prefix, $picked, $hidden)
-	{
-		$order = $picked ? explode('|', $picked) : array();
-		$hidden = $hidden ? explode('|', $hidden) : array();
-		$order = array_merge($order, $hidden);
-
-		$cols = $this->LoadColumns($prefix);
-		$cols['order'] = $order;
-		$cols['hidden_fields'] = $hidden;
-
-		$this->SetCRC($cols);
-		$this->StoreCols($prefix, $cols);
-	}
-
-	function SaveWidths($prefix, $widths)
-	{
-		if (!is_array($widths)) $widths = explode(':', $widths);
-		array_shift($widths); // removing first col (checkbox col) width
-		$i = 0;
-		foreach ($this->PickerData['order'] as $ord => $field) {
-			if ($field == '__FREEZER__') continue;
-			$this->PickerData['widths'][$field] = $widths[$i++];
-		}
-		$this->StoreCols($prefix, $this->PickerData);
-	}
-
-	function GetWidth($field)
-	{
-		return isset($this->PickerData['widths'][$field]) ? $this->PickerData['widths'][$field] : false;
-	}
-}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/col_picker_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2.2.4
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/count_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/count_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/count_helper.php	(nonexistent)
@@ -1,259 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class kCountHelper extends kHelper {
-
-		function kCountHelper()
-		{
-			parent::kHelper();
-
-			// reset expired counts
-			$sql = 'UPDATE '.TABLE_PREFIX.'Counters
-					SET CountValue = NULL
-					WHERE (LifeTime > 0) AND (LastCounted < '.adodb_mktime().' - LifeTime)';
-			$this->Conn->Query($sql);
-		}
-
-		/**
-		 * Returns counter value
-		 *
-		 * @param string $name counter name
-		 * @param Array $params counter parameters
-		 * @param string $query_name specify query name directly (don't generate from parmeters)
-		 * @param bool $multiple_results
-		 * @return mixed
-		 */
-		function getCounter($name, $params = Array (), $query_name = null, $multiple_results = false)
-		{
-			$clone_counter = false;
-			$query_name = isset($query_name) ? $query_name : rtrim($name.'-'.implode('-', array_values($params)), '-');
-			$sql = 'SELECT *
-					FROM '.TABLE_PREFIX.'Counters
-					WHERE Name = '.$this->Conn->qstr($query_name);
-			$count_data = $this->Conn->GetRow($sql);
-
-			if (!$count_data && ($query_name != $name)) {
-				// cloned record not found -> search for origial one
-				$sql = 'SELECT *
-						FROM '.TABLE_PREFIX.'Counters
-						WHERE Name = '.$this->Conn->qstr($name);
-				$count_data = $this->Conn->GetRow($sql);
-				$clone_counter = true;
-			}
-
-			if (is_null($count_data['CountValue'])) {
-				$params['PREFIX'] = TABLE_PREFIX;
-				$count_sql = $count_data['CountQuery'];
-
-				foreach ($params as $replace_from => $replace_to) {
-					$count_sql = str_replace('<%'.$replace_from.'%>', $replace_to, $count_sql);
-				}
-
-				if ($multiple_results) {
-					$count_data['CountValue'] = serialize($this->Conn->GetCol($count_sql));
-				}
-				else {
-					$count_data['CountValue'] = $this->Conn->GetOne($count_sql);
-				}
-
-				if ($clone_counter && !$count_data['IsClone']) {
-					// don't clone clones
-					$count_data['CounterId'] = 0;
-					$count_data['Name'] = $query_name;
-					$count_data['IsClone'] = 1;
-				}
-
-				$count_data['LastCounted'] = adodb_mktime();
-				$this->Conn->doInsert($count_data, TABLE_PREFIX.'Counters', 'REPLACE');
-			}
-
-			return $multiple_results ? unserialize($count_data['CountValue']) : $count_data['CountValue'];
-		}
-
-		/**
-		 * Resets counter, whitch are affected by one of specified tables
-		 *
-		 * @param string $tables comma separated tables list used in counting sqls
-		 */
-		function resetCounters($tables)
-		{
-			$tables = explode(',', $tables);
-			$prefix_length = strlen(TABLE_PREFIX);
-			foreach ($tables as $index => $table) {
-				// remove prefixes
-				if (substr($table, 0, $prefix_length) == TABLE_PREFIX) {
-					$table = substr($table, $prefix_length);
-				}
-				$tables[$index] = '(TablesAffected LIKE "%|'.$table.'|%")';
-			}
-
-			$sql = 'UPDATE '.TABLE_PREFIX.'Counters
-					SET CountValue = NULL
-					WHERE '.implode(' OR ', $tables);
-
-			$this->Conn->Query($sql);
-		}
-
-		/**
-		 * Counts items (of specific type) in category & subcategories
-		 *
-		 * @param string $prefix
-		 * @param Array $params
-		 * @param mixed $count_sql
-		 * @return int
-		 */
-		function CategoryItemCount($prefix, $params, $count_sql = null)
-		{
-			if (!$this->Application->findModule('Var', $prefix)) {
-				// this is not module item
-				return $this->Application->ProcessParsedTag($prefix, 'CategoryItemCount', $params);
-			}
-
-			// 1. get root category for counting
-			$category_id = isset($params['cat_id']) ? $params['cat_id'] : false;
-			if (!is_numeric($category_id)) {
-				$category_id = $this->Application->GetVar('m_cat_id');
-			}
-
-			if (!isset($count_sql)) {
-				$count_sql = 'COUNT(*)';
-			}
-
-			$where_clauses = Array ();
-			$table_name = $this->Application->getUnitOption($prefix, 'TableName');
-
-			// 1. count category items
-			$sql = 'SELECT '.$count_sql.'
-					FROM '.$table_name.' item_table
-					INNER JOIN '.TABLE_PREFIX.'CategoryItems ci ON (ci.ItemResourceId = item_table.ResourceId)
-					INNER JOIN '.TABLE_PREFIX.'Category c ON (ci.CategoryId = c.CategoryId)';
-
-			// 2. count items from subcategories
-			if ($category_id > 0) {
-				// get subcategories of required category
-				$tmp_sql = 'SELECT TreeLeft, TreeRight
-							FROM '.TABLE_PREFIX.'Category
-							WHERE CategoryId = '.$category_id;
-				$tree_info = $this->Conn->GetRow($tmp_sql);
-				$where_clauses[] = 'c.TreeLeft BETWEEN '.$tree_info['TreeLeft'].' AND '.$tree_info['TreeRight'];
-			}
-			$where_clauses[] = 'item_table.Status = '.STATUS_ACTIVE;
-
-			if (isset($params['today']) && $params['today']) {
-				$today = adodb_mktime(0,0,0, adodb_date('m'), adodb_date('d'), adodb_date('Y'));
-				$where_clauses[] = 'item_table.CreatedOn >= '.$today;
-			}
-
-			$sql .= ' WHERE ('.implode(') AND (', $where_clauses).')';
-
-			return (int)$this->Conn->GetOne($sql);
-		}
-
-		/**
-		 * Counts items (of specific type) from all categories
-		 *
-		 * @param string $prefix
-		 * @param bool $today
-		 * @return int
-		 */
-		function ItemCount($prefix, $today = false, $count_sql = null)
-		{
-		  	$table_name = $this->Application->getUnitOption($prefix, 'TableName');
-
-		  	if (!isset($count_sql)) {
-		  		$count_sql = 'COUNT(*)';
-		  	}
-
-		  	$sql = 'SELECT '.$count_sql.'
-		  			FROM '.$table_name.' item_table
-		  			INNER JOIN '.TABLE_PREFIX.'CategoryItems ci ON ci.ItemResourceId = item_table.ResourceId
-		    		INNER JOIN '.TABLE_PREFIX.'Category c ON c.CategoryId = ci.CategoryId
-		    		INNER JOIN '.TABLE_PREFIX.'PermCache perm_cache ON ci.CategoryId = perm_cache.CategoryId';
-
-		  	list ($view_perm, $view_filter) = $this->GetPermissionClause($prefix, 'perm_cache');
-		  	$where_clauses = Array (
-		  		$view_filter, 'perm_cache.PermId = '.$view_perm, 'ci.PrimaryCat = 1', 'c.Status = '.STATUS_ACTIVE,
-			);
-
-		  	if ($today) {
-		  		$today_date = adodb_mktime(0, 0, 0, adodb_date('m'), adodb_date('d'), adodb_date('Y'));
-		  		$where_clauses[] = 'item_table.CreatedOn >= '.$today_date;
-		  	}
-
-		  	$sql .= ' WHERE ('.implode(') AND (', $where_clauses).')';
-
-			return (int)$this->Conn->GetOne($sql);
-		}
-
-		/**
-		 * Returns categories count in system
-		 *
-		 * @param bool $today
-		 * @return int
-		 */
-		function CategoryCount($today = false)
-		{
-		    $table_name = $this->Application->getUnitOption('c', 'TableName');
-
-		  	$sql = 'SELECT COUNT(*)
-		  			FROM '.$table_name.' c
-		    		INNER JOIN '.TABLE_PREFIX.'PermCache perm_cache ON c.CategoryId = perm_cache.CategoryId';
-
-		  	list ($view_perm, $view_filter) = $this->GetPermissionClause('c', 'perm_cache');
-		  	$where_clauses = Array (
-		  		$view_filter, 'perm_cache.PermId = '.$view_perm, 'c.Status = '.STATUS_ACTIVE,
-			);
-
-		  	if ($today) {
-		  		$today_date = adodb_mktime(0, 0, 0, adodb_date('m'), adodb_date('d'), adodb_date('Y'));
-		  		$where_clauses[] = 'c.CreatedOn >= '.$today_date;
-		  	}
-
-		    $sql .= ' WHERE ('.implode(') AND (', $where_clauses).')';
-
-			return $this->Conn->GetOne($sql);
-		}
-
-		/**
-		 * Returns permission limitation clause for category item lists
-		 *
-		 * @param string $prefix
-		 * @param string $table_alias
-		 * @return Array
-		 */
-		function GetPermissionClause($prefix, $table_alias)
-		{
-			$view_perm = $this->Application->getCache(__CLASS__ . __FUNCTION__, $prefix);
-			if ($view_perm === false) {
-				$sql = 'SELECT PermissionConfigId
-						FROM '.TABLE_PREFIX.'PermissionConfig
-						WHERE PermissionName = "'.$this->Application->getUnitOption($prefix, 'PermItemPrefix').'.VIEW"';
-				$view_perm = $this->Conn->GetOne($sql);
-
-				$this->Application->setCache(__CLASS__ . __FUNCTION__, $prefix, $view_perm);
-			}
-
-			$groups = explode(',', $this->Application->RecallVar('UserGroups'));
-			foreach ($groups as $group) {
-				$view_filters[] = 'FIND_IN_SET('.$group.', '.$table_alias.'.acl)';
-			}
-
-			$view_filter = implode(' OR ', $view_filters);
-
-			return Array ($view_perm, $view_filter);
-		}
-
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/count_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.4.4.4
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/sections_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/sections_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/sections_helper.php	(nonexistent)
@@ -1,306 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	/**
-	 * Processes sections info from the configs
-	 *
-	 */
-	class kSectionsHelper extends kHelper {
-
-		/**
-		 * Holds information about all sections
-		 *
-		 * @var Array
-		 */
-		var $Tree = Array();
-
-		/**
-		 * Set's prefix and special
-		 *
-		 * @param string $prefix
-		 * @param string $special
-		 * @access public
-		 */
-		function Init($prefix, $special, $event_params = null)
-		{
-			parent::Init($prefix, $special, $event_params);
-			$this->BuildTree();
-		}
-
-		/**
-		 * Builds xml for tree in left frame in admin
-		 *
-		 * @param Array $params
-		 */
-		function BuildTree()
-		{
-			if (!isset($this->Application->Memcached) || !($data = $this->Application->Memcached->get('master:sections_parsed'))) {
-				$data = $this->Conn->GetOne('SELECT Data FROM '.TABLE_PREFIX.'Cache WHERE VarName = "sections_parsed"');
-			}
-			if ($data) {
-				$this->Tree = unserialize($data);
-				return ;
-			}
-
-			if (!(defined('IS_INSTALL') && IS_INSTALL)) {
-				// don't reread all configs during install, because they are reread on every install step
-				$this->Application->UnitConfigReader->ReReadConfigs();
-			}
-
-			$this->Tree = Array ();
-
-			// 1. build base tree (don't update parent with children list yet)
-
-			// 1.1. process prefixes without priority
-			$prioritized_prefixes = Array ();
-			$prefixes = array_keys($this->Application->UnitConfigReader->configData);
-
-			foreach ($prefixes as $prefix) {
-				$config =& $this->Application->UnitConfigReader->configData[$prefix];
-
-				if (array_key_exists('ConfigPriority', $config)) {
-					$prioritized_prefixes[$prefix] = $config['ConfigPriority'];
-					continue;
-				}
-				$this->_processPrefixSections($prefix);
-			}
-
-			// 2. process prefixes with priority
-			asort($prioritized_prefixes);
-			foreach ($prioritized_prefixes as $prefix => $priority) {
-				$this->_processPrefixSections($prefix);
-			}
-
-			// 2. apply section ajustments
-			foreach ($prefixes as $prefix) {
-				$config =& $this->Application->UnitConfigReader->configData[$prefix];
-				$section_ajustments = getArrayValue($config, 'SectionAdjustments');
-				if (!$section_ajustments) continue;
-
-				foreach ($section_ajustments as $section_name => $ajustment_params) {
-					if (is_array($ajustment_params)) {
-						if (!array_key_exists($section_name, $this->Tree)) {
-							// don't process ajustments for non-existing sections
-							continue;
-						}
-
-						$this->Tree[$section_name] = array_merge_recursive2($this->Tree[$section_name], $ajustment_params);
-					}
-					else {
-						// then remove section
-						unset($this->Tree[$section_name]);
-					}
-				}
-			}
-
-			// 3.
-			foreach ($this->Tree as $section_name => $section_params) {
-				// 3.1. update parent -> children references
-				$parent_section = $section_params['parent'];
-				$section_order = "{$section_params['priority']}";
-
-				if (!isset($parent_section)) {
-					// don't process parent section of "in-portal:root" section
-					continue;
-				}
-
-				if (!array_key_exists('children', $this->Tree[$parent_section])) {
-					$this->Tree[$parent_section]['children'] = Array ();
-				}
-
-				if (array_key_exists($section_order, $this->Tree[$parent_section]['children'])) {
-					trigger_error(
-						'Section "<strong>' . $section_name . '</strong>" has replaced section "<strong>' .
-						$this->Tree[$parent_section]['children'][$section_order] .
-						'</strong>" (parent section: "<strong>' . $parent_section .
-						'</strong>"; duplicate priority: <strong>' . $section_order . '</strong>)',
-						E_USER_WARNING
-					);
-				}
-
-				$this->Tree[$parent_section]['children'][$section_order] = $section_name;
-
-				if ($section_params['type'] == stTAB) {
-					// if this is tab, then mark parent section as TabOnly
-					$this->Tree[$parent_section]['tabs_only'] = true;
-				}
-
-				// 3.2. process icons here, because they also can be ajusted
-				if (isset($section_params['icon']) && preg_match('/([^:]+):(.*)/', $section_params['icon'], $regs)) {
-					$this->Tree[$section_name]['icon'] = $regs[2];
-					$this->Tree[$section_name]['icon_module'] = $regs[1]; // set "icon_module" used in "combined_header" block
-					$module_folder = trim( $this->Application->findModule('Name', $regs[1], 'Path'), '/');
-					if ($module_folder == '') {
-						$module_folder = 'core';
-					}
-				}
-				else {
-					$module_folder = $this->Application->getUnitOption($section_params['SectionPrefix'], 'ModuleFolder');
-					if (!array_key_exists('icon_module', $section_params)) {
-						$this->Tree[$section_name]['icon_module'] = $module_folder; // set "icon_module" used in "combined_header" block
-					}
-				}
-
-				// this is to display HELP icon instead of missing one.. can be replaced with some other icon to draw attention
-				$icon_file = $module_folder.'/admin_templates/img/icons/icon24_'.$this->Tree[$section_name]['icon'];
-
-				/*$core_file = FULL_PATH.'/core/admin_templates/img/icons/icon24_' . $this->Tree[$section_name]['icon'].'.gif';
-				if ($module_folder != 'core' && file_exists($core_file) && file_exists(FULL_PATH.'/'.$icon_file.'.gif')) {
-					if (crc32(file_get_contents($core_file)) == crc32(file_get_contents(FULL_PATH.'/'.$icon_file.'.gif'))) {
-						trigger_error('Section "<strong>' . $section_name . '</strong>" uses icon copy from "Core" module', E_USER_NOTICE);
-					}
-				}*/
-
-				if (!file_exists(FULL_PATH.'/'.$icon_file.'.gif')) {
-					$this->Tree[$section_name]['icon'] = 'help';
-					$this->Tree[$section_name]['icon_module'] = 'core';
-				}
-			}
-			$this->Application->HandleEvent( new kEvent('adm:OnAfterBuildTree') );
-
-			if (isset($this->Application->Memcached)) {
-				$this->Application->Memcached->set('master:sections_parsed',serialize($this->Tree), 0, 0);
-				return;
-			}
-
-			$this->Conn->Query('REPLACE '.TABLE_PREFIX.'Cache (VarName, Data, Cached) VALUES ("sections_parsed", '.$this->Conn->qstr(serialize($this->Tree)).', '.adodb_mktime().')');
-		}
-
-		function _processPrefixSections($prefix)
-		{
-			$config =& $this->Application->UnitConfigReader->configData[$prefix];
-			$sections = getArrayValue($config, 'Sections');
-			if (!$sections) {
-				return ;
-			}
-
-//			echo 'Prefix: ['.$prefix.'] has ['.count($sections).'] sections<br />';
-
-			foreach ($sections as $section_name => $section_params) {
-				// we could also skip not allowed sections here in future
-				if ( isset($section_params['SectionPrefix']) ) {
-					$section_prefix = $section_params['SectionPrefix'];
-				}
-				elseif ( $this->Application->getUnitOption($prefix, 'SectionPrefix') ) {
-					$section_prefix = $this->Application->getUnitOption($prefix, 'SectionPrefix');
-				}
-				else {
-					$section_prefix = $prefix;
-				}
-				$section_params['SectionPrefix'] = $section_prefix;
-				$section_params['url']['m_opener'] = 'r';
-				$section_params['url']['no_pass_through'] = 1;
-				$pass_section = getArrayValue($section_params, 'url', 'pass_section');
-
-				if ($pass_section) {
-					unset($section_params['url']['pass_section']);
-					$section_params['url']['section'] = $section_name;
-					if (!isset($section_params['url']['module'])) {
-						$module_name = $this->Application->findModule('Path', $config['ModuleFolder'].'/', 'Name');
-						$section_params['url']['module'] = $module_name;
-					}
-				}
-
-				if (!isset($section_params['url']['t'])) {
-					$section_params['url']['t'] = 'index';
-				}
-
-				if (!isset($section_params['onclick'])) {
-					$section_params['onclick'] = 'checkEditMode()';
-				}
-
-				if (!isset($section_params['container'])) {
-					$section_params['container'] = 0; // for js tree printing to xml
-				}
-
-				$current_data = isset($this->Tree[$section_name]) ? $this->Tree[$section_name] : Array();
-
-				if ($current_data) {
-					trigger_error('Section "<strong>' . $section_name . '</strong>" declaration (originally defined in "<strong>' . $current_data['SectionPrefix'] . '</strong>") was overwriten from "<strong>' . $prefix . '</strong>"', E_USER_NOTICE);
-				}
-
-				$this->Tree[$section_name] = array_merge_recursive2($current_data, $section_params);
-			}
-		}
-
-		/**
-		 * Returns details information about section
-		 *
-		 * @param string $section_name
-		 * @return Array
-		 */
-		function &getSectionData($section_name)
-		{
-			if (isset($this->Tree[$section_name])) {
-				$ret =& $this->Tree[$section_name];
-			}
-			else {
-				$ret = Array();
-			}
-			return $ret;
-		}
-
-		/**
-		 * Returns first child, that is not a folder
-		 *
-		 * @param string $section_name
-		 * @param Array $tree
-		 * @return stirng
-		 */
-		function getFirstChild($section_name, $check_permission = false)
-		{
-			$section_data =& $this->getSectionData($section_name);
-
-			$children = isset($section_data['children']) && $section_data['children'] ? $section_data['children'] : false;
-			if ($children) {
-				// get 1st child
-				ksort($children, SORT_NUMERIC);
-				foreach ($children as $child_priority => $child_section) {
-					$section_data =& $this->getSectionData($child_section);
-
-					$perm_section = $this->getPermSection($child_section);
-					$perm_status = $check_permission ? $this->Application->CheckPermission($perm_section.'.view') : true;
-					if ((isset($section_data['show_mode']) && $section_data['show_mode']) || !$perm_status) {
-						continue;
-					}
-
-					break;
-				}
-
-				return $this->getFirstChild($child_section, $check_permission);
-			}
-
-			return $section_name;
-		}
-
-		/**
-		 * Returns section for permission checking based on given section
-		 *
-		 * @param string $section_name
-		 * @return string
-		 */
-		function getPermSection($section_name)
-		{
-			$ret = $section_name;
-			$section_data =& $this->getSectionData($section_name);
-
-			if ($section_data && isset($section_data['perm_prefix'])) {
-				// this section uses other section permissions
-				$ret = $this->Application->getUnitOption($section_data['perm_prefix'].'.main', 'PermSection');
-			}
-			return $ret;
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/sections_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.12.2.11
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/filenames_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/filenames_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/filenames_helper.php	(nonexistent)
@@ -1,158 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-defined('FULL_PATH') or die('restricted access!');
-
-class kFilenamesHelper extends kHelper {
-
-	/**
-	 * Character, that should replace disallowed symbols in filename
-	 *
-	 * @var string
-	 */
-	var $_escapeChar = '_';
-
-	/**
-	 * Sequences, that should be replaced with mathing sequences from _filenameReplaceTo property
-	 *
-	 * @var Array
-	 */
-	var $_filenameReplaceFrom = Array ();
-
-	/**
-	 * Sequences, that will replace matching sequences from _filenameReplaceFrom property
-	 *
-	 * @var Array
-	 */
-	var $_filenameReplaceTo = Array ();
-
-
-	function kFilenamesHelper()
-	{
-		parent::kHelper();
-
-		$this->_escapeChar = $this->Application->ConfigValue('FilenameSpecialCharReplacement');
-
-		$language =& $this->Application->recallObject('lang.current');
-		/* @var $language kDBItem */
-
-		$replacements = $language->GetDBField('FilenameReplacements');
-		if ($replacements) {
-			$replacements = explode("\r\n", $replacements);
-			foreach ($replacements as $replacement) {
-				list ($replace_from, $replace_to) = explode('=', $replacement);
-				$this->_filenameReplaceFrom[] = trim($replace_from);
-				$this->_filenameReplaceTo[] = trim($replace_to);
-			}
-		}
-	}
-
-	function replaceSequences($filename)
-	{
-		$not_allowed = Array (
-			' ', '\\', '/', ':', '*', '?', '"', '<', '>', '|', '`',
-			'~', '!', '@', '#', '$', '%', '^', '&', '(', ')', '~',
-			'+', '=', '-', '{', '}', ']', '[', "'", ';', '.', ',', "\r", "\n"
-		);
-
-		if ($this->_filenameReplaceFrom) {
-			// replace predefined sequences
-			$filename = str_replace($this->_filenameReplaceFrom, $this->_filenameReplaceTo, $filename);
-		}
-
-		$filename = str_replace($not_allowed, $this->_escapeChar, $filename);
-		$filename = preg_replace('/(' . $this->_escapeChar . '+)/', $this->_escapeChar, $filename);
-		return trim($filename, $this->_escapeChar); // remove trailing escape chars
-	}
-
-	/**
-	 * replace not allowed symbols with "_" chars + remove duplicate "_" chars in result
-	 *
-	 * @param string $string
-	 * @return string
-	 */
-	function stripDisallowed($table, $id_field, $item_id, $filename)
-	{
-		$filename = $this->replaceSequences($filename);
-
-		return $this->checkAutoFilename($table, $id_field, $item_id, $filename);
-	}
-
-	function checkAutoFilename($table, $id_field, $item_id, $filename)
-	{
-		if(!$filename) return $filename;
-
-		$item_id = !$item_id ? 0 : $item_id;
-
-		if ($table == TABLE_PREFIX.'CategoryItems') {
-			$item_categories_cur = $this->Conn->GetCol('SELECT CategoryId FROM '.$table.' WHERE ItemResourceId = '.$item_id);
-			$item_categories_live = $this->Application->IsTempTable($table) ? $this->Conn->GetCol('SELECT CategoryId FROM '.$this->Application->GetLiveName($table).' WHERE ItemResourceId = '.$item_id) : array();
-
-			$item_categories = array_unique(array_merge($item_categories_cur, $item_categories_live));
-			if (!$item_categories) {
-				$item_categories = array($this->Application->GetVar('m_cat_id')); // this may happen when creating new item
-			}
-			$cat_filter = ' AND CategoryId IN ('.implode(',', $item_categories).')';
-		}
-		else {
-			$cat_filter = '';
-		}
-
-		// check current table (temp or live)
-		$sql_temp = 'SELECT '.$id_field.' FROM '.$table.' WHERE Filename = '.$this->Conn->qstr($filename).$cat_filter;
-		$found_temp_ids = $this->Conn->GetCol($sql_temp);
-
-		// check live table if current is temp
-		if ( $this->Application->IsTempTable($table) ) {
-			$sql_live = 'SELECT '.$id_field.' FROM '.$this->Application->GetLiveName($table).' WHERE Filename = '.$this->Conn->qstr($filename).$cat_filter;
-			$found_live_ids = $this->Conn->GetCol($sql_live);
-		}
-		else {
-			$found_live_ids = array();
-		}
-
-		$found_item_ids = array_unique( array_merge($found_temp_ids, $found_live_ids) );
-
-		$has_page = preg_match('/(.*)_([\d]+)([a-z]*)$/', $filename, $rets);
-
-		$duplicates_found = (count($found_item_ids) > 1) || ($found_item_ids && $found_item_ids[0] != $item_id);
-		if ($duplicates_found || $has_page) // other category has same filename as ours OR we have filename, that ends with _number
-		{
-			$append = $duplicates_found ? '_a' : '';
-			if($has_page)
-			{
-				$filename = $rets[1].'_'.$rets[2];
-				$append = $rets[3] ? $rets[3] : '_a';
-			}
-
-			// check live & temp table
-			$sql_cur = 'SELECT '.$id_field.' FROM '.$table.' WHERE (Filename = %s) AND ('.$id_field.' != '.$item_id.')'.$cat_filter;
-			$sql_live = $this->Application->IsTempTable($table) ? 'SELECT '.$id_field.' FROM '.$this->Application->GetLiveName($table).' WHERE (Filename = %s) AND ('.$id_field.' != '.$item_id.')'.$cat_filter : false;
-			while ( $this->Conn->GetOne( sprintf($sql_cur, $this->Conn->qstr($filename.$append)) ) > 0 ||
-							(	$sql_live
-								&&
-								( $this->Conn->GetOne( sprintf($sql_live, $this->Conn->qstr($filename.$append)) ) > 0 )
-							)
-						)
-			{
-				if (mb_substr($append, -1) == 'z') $append .= 'a';
-				$append = mb_substr($append, 0, mb_strlen($append) - 1) . chr( ord( mb_substr($append, -1) ) + 1 );
-			}
-
-			return $filename.$append;
-		}
-
-		return $filename;
-	}
-}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/filenames_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.3.2.2
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/skin_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/skin_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/skin_helper.php	(nonexistent)
@@ -1,208 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class SkinHelper extends kHelper {
-
-		/**
-		 * Allows to read some skin fields and build link to admin skin file.
-		 * Will automatically compile skin file, when missing.
-		 *
-		 * @param Array $params
-		 * @return string
-		 */
-		function AdminSkinTag($params)
-		{
-			if (array_key_exists('type', $params)) {
-				// returns given field of skin
-				return $this->_getStyleField( $params['type'] );
-			}
-
-			$style_info = $this->_getStyleInfo();
-
-			if (file_exists( $this->getSkinPath() )) {
-				// returns last compiled skin
-				$ret = $this->getSkinPath(true);
-			}
-			else {
-				// search for previously compiled skin
-				$last_compiled = $this->_getLastCompiled( mb_strtolower($style_info['Name']) );
-				if ($last_compiled) {
-					// found
-					$ret = $this->getSkinPath(true, $last_compiled);
-				}
-				else {
-					// not found (try to compile on the fly)
-					$skin =& $this->Application->recallObject('skin.-item', null, Array ('skip_autoload' => true));
-					/* @var $skin kDBItem */
-
-					$skin->Load(1, 'IsPrimary');
-					$last_compiled = $this->compile($skin);
-					$ret = $last_compiled ? $this->getSkinPath(true, $last_compiled) : '';
-				}
-			}
-
-			if (array_key_exists('file_only', $params) && $params['file_only']) {
-				return $ret;
-			}
-
-			return '<link rel="stylesheet" rev="stylesheet" href="' . $ret . '" type="text/css" media="screen"/>';
-		}
-
-		/**
-		 * Compiles given skin object
-		 *
-		 * @param kDBItem $object
-		 */
-		function compile(&$object)
-		{
-			$ret = $object->GetDBField('CSS');
-			$options = $object->GetDBField('Options');
-			$options = unserialize($options);
-			$options['base_url'] = Array ('Value' => rtrim($this->Application->BaseURL(), '/'));
-
-			foreach ($options as $key => $row) {
-				$ret = str_replace('@@' . $key . '@@', $row['Value'], $ret);
-			}
-
-			$compile_ts = adodb_mktime();
-			$css_file = $this->_getStylesheetPath() . DIRECTORY_SEPARATOR . 'admin-' . mb_strtolower($object->GetDBField('Name')) . '-' . $compile_ts . '.css';
-
-			$fp = fopen($css_file, 'w');
-			if (!$fp) {
-				return false;
-			}
-
-			$prev_css = $this->_getStylesheetPath() . '/admin-' . mb_strtolower($object->GetDBField('Name')) . '-' . $object->GetDBField('LastCompiled') . '.css';
-			if (file_exists($prev_css)) {
-				unlink($prev_css);
-			}
-
-			fwrite($fp, $ret);
-			fclose($fp);
-
-			$sql = 'UPDATE ' . $object->TableName . '
-					SET LastCompiled = ' . $compile_ts . '
-					WHERE ' . $object->IDField . ' = ' . $object->GetID();
-			$this->Conn->Query($sql);
-
-			return $compile_ts;
-		}
-
-		/**
-		 * Returns fields of primary admin skin
-		 *
-		 * @return Array
-		 */
-		function _getStyleInfo()
-		{
-			static $style = null;
-
-			if (!isset($style)) {
-				$sql = 'SELECT *
-						FROM ' . TABLE_PREFIX . 'Skins
-						WHERE IsPrimary = 1';
-				$style = $this->Conn->GetRow($sql);
-			}
-
-			return $style;
-		}
-
-		/**
-		 * Returns requested field value of primary admin skin
-		 *
-		 * @param string $field
-		 * @return string
-		 */
-		function _getStyleField($field)
-		{
-			if ($field == 'logo') {
-				// old style method of calling
-				$field = 'Logo';
-			}
-
-			$style_info = $this->_getStyleInfo();
-
-			if (!$style_info[$field]) {
-				return '';
-			}
-
-			$image_fields = Array ('Logo', 'LogoBottom', 'LogoLogin');
-			if (in_array($field, $image_fields)) {
-				return $this->_getStylesheetPath(true) . '/' . $style_info[$field];
-			}
-
-			return $style_info[$field];
-		}
-
-		/**
-		 * Returns path, where compiled skin and it's image files are stored
-		 *
-		 * @param bool $url
-		 * @return string
-		 */
-		function _getStylesheetPath($url = false)
-		{
-			if ($url) {
-				return $this->Application->BaseURL( str_replace(DIRECTORY_SEPARATOR, '/', WRITEBALE_BASE) ) . 'user_files';
-			}
-
-			return WRITEABLE . DIRECTORY_SEPARATOR . 'user_files';
-		}
-
-		/**
-		 * Returns full path to primary admin skin using given or last compiled date
-		 *
-		 * @param unknown_type $url
-		 * @param unknown_type $compile_date
-		 * @return unknown
-		 */
-		function getSkinPath($url = false, $compile_date = null)
-		{
-			$style_info = $this->_getStyleInfo();
-
-			if (!isset($compile_date)) {
-				$compile_date = $style_info['LastCompiled'];
-			}
-
-			$style_name = 'admin-' . mb_strtolower($style_info['Name']) . '-' . $compile_date . '.css';
-
-			return $this->_getStylesheetPath($url) . ($url ? '/' : DIRECTORY_SEPARATOR) . $style_name;
-		}
-
-		/**
-		 * Returns maximal compilation date for given skin name
-		 *
-		 * @param string $style_name
-		 * @return int
-		 */
-		function _getLastCompiled($style_name)
-		{
-			$last_compiled = 0;
-			$dh = dir($this->_getStylesheetPath() . DIRECTORY_SEPARATOR);
-
-			while (false !== ($file = $dh->read())) {
-				if ( preg_match('/admin-(.*)-([\d]+).css/', $file, $rets) ) {
-					if ($rets[1] == $style_name && $rets[2] > $last_compiled) {
-						$last_compiled = $rets[2];
-					}
-				}
-			}
-
-			$dh->close();
-
-			return $last_compiled;
-		}
-	}
\ No newline at end of file
Index: branches/5.0.x/core/units/general/helpers/search_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/search_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/search_helper.php	(nonexistent)
@@ -1,706 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class kSearchHelper extends kHelper {
-
-
-		/**
-		 * Splits search phrase into keyword using quotes,plus and minus sings and spaces as split criteria
-		 *
-		 * @param string $keyword
-		 * @return string
-		 */
-		function splitKeyword($keyword)
-		{
-			if ($this->Application->ConfigValue('CheckStopWords')) {
-				$keyword_after_remove = $this->_removeStopWords($keyword);
-				if ($keyword_after_remove) {
-					// allow to search through stop word grid
-					$keyword = $keyword_after_remove;
-				}
-			}
-
-			$quotes_re = '/([+\-]?)"(.*?)"/';
-			$no_quotes_re = '/([+\-]?)([^ ]+)/';
-
-			$quoted_kw = preg_match_all($quotes_re, $keyword, $res);
-			foreach ($res[2] as $index => $kw) $final[$kw] = $res[1][$index];
-			$keyword = preg_replace($quotes_re, '', $keyword);
-			$not_quoted_kw =  preg_match_all($no_quotes_re, $keyword, $res);
-			foreach ($res[2] as $index => $kw) $final[$kw] = $res[1][$index];
-
-			return $final;
-		}
-
-		function getPositiveKeywords($keyword)
-		{
-			$keywords = $this->splitKeyword($keyword);
-
-			$ret = Array();
-			foreach ($keywords as $keyword => $sign) {
-				if ($sign == '+' || $sign == '') {
-					$ret[] = $keyword;
-				}
-			}
-			return $ret;
-		}
-
-		function buildWhereClause($keyword, $fields)
-		{
-			$keywords = $this->splitKeyword($keyword);
-
-			$normal_conditions = Array();
-			$plus_conditions = Array();
-			$minus_conditions = Array();
-
-			foreach ($keywords as $keyword => $sign) {
-				switch ($sign) {
-					case '+':
-						$plus_conditions[] = implode(' LIKE "%'.$keyword.'%" OR ', $fields).' LIKE "%'.$keyword.'%"';
-						break;
-
-					case '-':
-						foreach ($fields as $field) {
-							$condition[] = $field.' NOT LIKE "%'.$keyword.'%" OR '.$field.' IS NULL';
-						}
-						$minus_conditions[] = '('.implode(') AND (', $condition).')';
-						break;
-
-					case '':
-						$keyword = str_replace('"', '\"', $keyword);
-						$normal_conditions[] = implode(' LIKE "%'.$keyword.'%" OR ', $fields).' LIKE "%'.$keyword.'%"';
-						break;
-				}
-			}
-
-			// building where clause
-			if ($normal_conditions) {
-				$where_clause = '('.implode(') OR (', $normal_conditions).')';
-			}
-			else {
-				$where_clause = '1';
-			}
-
-			if ($plus_conditions) {
-				$where_clause = '('.$where_clause.') AND ('.implode(') AND (', $plus_conditions).')';
-			}
-
-			if ($minus_conditions) {
-				$where_clause = '('.$where_clause.') AND ('.implode(') AND (', $minus_conditions).')';
-			}
-
-			return $where_clause;
-		}
-
-		/**
-		 * Returns additional information about search field
-		 *
-		 * @param kDBList $object
-		 * @param string $field_name
-		 * @return Array
-		 */
-		function _getFieldInformation(&$object, $field_name)
-		{
-			$sql_filter_type = isset($object->VirtualFields[$field_name]) ? 'having' : 'where';
-			$field_type = isset($object->Fields[$field_name]['type']) ? $object->Fields[$field_name]['type'] : 'string';
-
-			if (preg_match('/(.*)\.(.*)/', $field_name, $regs)) {
-				$table_name = '`'.$regs[1].'`.'; // field from external table
-				$field_name = $regs[2];
-			}
-			elseif ($sql_filter_type == 'where') {
-				$table_name = '`'.$object->TableName.'`.'; // field from local table
-			}
-
-			$table_name = ($sql_filter_type == 'where') ? $table_name : '';
-
-			// replace wid inside table name to WID_MARK constant value
-			$is_temp_table = preg_match('/(.*)'.TABLE_PREFIX.'ses_'.$this->Application->GetSID().'(_[\d]+){0,1}_edit_(.*)/', $table_name, $regs);
-			if ($is_temp_table) {
-				$table_name = $regs[1].TABLE_PREFIX.'ses_'.EDIT_MARK.'_edit_'.$regs[3]; // edit_mark will be replaced with sid[_main_wid] in AddFilters
-			}
-
-			return Array ($field_name, $field_type, $table_name, $sql_filter_type);
-		}
-
-		/**
-		 * Removes stop words from keyword
-		 *
-		 * @param string $keyword
-		 * @return string
-		 */
-		function _removeStopWords($keyword)
-		{
-			static $stop_words = Array ();
-
-			if (!$stop_words) {
-				$sql = 'SELECT StopWord
-						FROM ' . $this->Application->getUnitOption('stop-word', 'TableName') . '
-						ORDER BY LENGTH(StopWord) DESC, StopWord ASC';
-				$stop_words = $this->Conn->GetCol($sql);
-
-				foreach ($stop_words as $index => $stop_word) {
-					$stop_words[$index] = '/(^| )' . preg_quote($stop_word, '/') . '( |$)/';
-				}
-			}
-
-			$keyword = preg_replace($stop_words, ' ', $keyword);
-
-			return trim( preg_replace('/[ ]+/', ' ', $keyword) );
-		}
-
-		/**
-		 * Enter description here...
-		 *
-		 * @param kEvent $event
-		 */
-		function performSearch(&$event)
-		{
-			$object =& $event->getObject();
-
-			// process search keyword
-			$search_keyword = $this->Application->GetVar( $event->getPrefixSpecial(true).'_search_keyword');
-			$this->Application->StoreVar( $event->getPrefixSpecial().'_search_keyword', $search_keyword);
-			$search_keyword = str_replace('*', '%', $search_keyword);
-
-			$custom_filter = $this->processCustomFilters($event);
-
-			if(!$search_keyword && $custom_filter === false) {
-				$this->resetSearch($event);
-				return true;
-			}
-
-			if ($search_keyword) {
-				$this->processAutomaticFilters($event, $search_keyword, $custom_filter);
-			}
-		}
-
-
-		function processAutomaticFilters(&$event, $search_keyword, $custom_filter)
-		{
-			$grid_name = $this->Application->GetVar('grid_name');
-			$grids = $this->Application->getUnitOption($event->Prefix, 'Grids');
-			$search_fields = array_keys($grids[$grid_name]['Fields']);
-
-			$search_filter = Array();
-			$object =& $event->getObject();
-
-			foreach ($search_fields as $search_field) {
-				$custom_search = isset($custom_filter[$search_field]);
-
-				$filter_data = $this->getSearchClause($object, $search_field, $search_keyword, $custom_search);
-
-				if ($filter_data) {
-					$search_filter[$search_field] = $filter_data;
-				}
-				else {
-					unset($search_filter[$search_field]);
-				}
-			}
-			$this->Application->StoreVar($event->getPrefixSpecial().'_search_filter', serialize($search_filter) );
-		}
-
-		/**
-		 * Returns search clause for any particular field
-		 *
-		 * @param kDBList $object
-		 * @param string $search_field
-		 * @param string $search_keyword what we are searching (false, when building custom filter clause)
-		 * @param string $custom_search already found using custom filter
-		 * @return Array
-		 */
-		function getSearchClause(&$object, $field_name, $search_keyword, $custom_search)
-		{
-			if (array_key_exists($field_name, $object->VirtualFields) && !array_key_exists($field_name, $object->CalculatedFields)) {
-				// Virtual field, that is shown in grid, but it doesn't have corresponding calculated field.
-				// Happens, when field value is calculated on the fly (during grid display) and it is not searchable.
-				return '';
-			}
-
-			$search_keywords = $this->splitKeyword($search_keyword);
-
-			list ($field_name, $field_type, $table_name, $sql_filter_type) = $this->_getFieldInformation($object, $field_name);
-
-			$filter_value = '';
-
-			// get field clause by formatter name and/or parameters
-			$formatter = getArrayValue($object->Fields[$field_name], 'formatter');
-			switch ($formatter) {
-				case 'kOptionsFormatter':
-					$search_keys = Array();
-
-					if ($custom_search === false) {
-						// if keywords passed through simple search filter (on each grid)
-						$use_phrases = getArrayValue($object->Fields[$field_name], 'use_phrases');
-						$field_options = $object->GetFieldOptions($field_name);
-						$multiple = array_key_exists('multiple', $field_options) && $field_options['multiple'];
-
-						foreach ($field_options['options'] as $key => $val) {
-							foreach ($search_keywords as $keyword => $sign) {
-								$pattern = '#'.$keyword.'#i';
-								if (!preg_match($pattern, $use_phrases ? $this->Application->Phrase($val) : $val)) {
-									if ($sign == '+') {
-										$filter_value = $table_name.'`'.$field_name.'` = NULL';
-										break;
-									}
-									else {
-										continue;
-									}
-								}
-
-								if ($sign == '+' || $sign == '') {
-									// don't add single quotes to found option ids when multiselect (but escape string anyway)
-									$search_keys[$key] = $multiple ? mysql_real_escape_string($key) : $this->Conn->qstr($key);
-								}
-								elseif($sign == '-') {
-									// if same value if found as exclusive too, then remove from search result
-									unset($search_keys[$key]);
-								}
-							}
-						}
-					}
-
-					if ($search_keys) {
-						if ($multiple) {
-							$filter_value = $table_name.'`'.$field_name.'` LIKE "%|' . implode('|%" OR ' . $table_name.'`'.$field_name.'` LIKE "%|', $search_keys) . '|%"';
-						}
-						else {
-							$filter_value = $table_name.'`'.$field_name.'` IN ('.implode(',', $search_keys).')';
-						}
-					}
-
-					$field_processed = true;
-					break;
-
-				case 'kDateFormatter':
-					// if date is searched using direct filter, then do nothing here, otherwise search using LIKE clause
-					$field_processed = ($custom_search !== false) ? true : false;
-					break;
-
-				default:
-					$field_processed = false;
-					break;
-			}
-
-			// if not already processed by formatter, then get clause by field type
-			if (!$field_processed && $search_keywords) {
-				switch($field_type)
-				{
-					case 'int':
-					case 'integer':
-					case 'numeric':
-						$search_keys = Array();
-						foreach ($search_keywords as $keyword => $sign) {
-							if (!is_numeric($keyword) || ($sign == '-')) continue;
-							$search_keys[] = $this->Conn->qstr($keyword);
-						}
-
-						if ($search_keys) {
-							$filter_value = $table_name.'`'.$field_name.'` IN ('.implode(',', $search_keys).')';
-						}
-						break;
-
-					case 'double':
-					case 'float':
-					case 'real':
-						$search_keys = Array();
-						foreach ($search_keywords as $keyword => $sign) {
-							$keyword = str_replace(',', '.', $keyword);
-							if (!is_numeric($keyword) || ($sign == '-')) continue;
-							$search_keys[] = 'ABS('.$table_name.'`'.$field_name.'` - '.$this->Conn->qstr($keyword).') <= 0.0001';
-						}
-
-						if ($search_keys) {
-							$filter_value = '('.implode(') OR (', $search_keys).')';
-						}
-						break;
-
-					case 'string':
-						$filter_value = $this->buildWhereClause($search_keyword, Array($table_name.'`'.$field_name.'`'));
-						break;
-				}
-			}
-
-			if ($filter_value) {
-				return Array('type' => $sql_filter_type, 'value' => $filter_value);
-			}
-
-			return false;
-		}
-
-		/**
-		 * Processes custom filters from submit
-		 *
-		 * @param KEvent $event
-		 * @return bool
-		 */
-		function processCustomFilters(&$event)
-		{
-			$grid_name = $this->Application->GetVar('grid_name');
-
-			// update "custom filter" with values from submit: begin
-			$view_name = $this->Application->RecallVar($event->getPrefixSpecial().'_current_view');
-			$custom_filters = $this->Application->RecallPersistentVar($event->getPrefixSpecial().'_custom_filter.'.$view_name/*, ALLOW_DEFAULT_SETTINGS*/);
-			if ($custom_filters) {
-				$custom_filters = unserialize($custom_filters);
-				$custom_filter = isset($custom_filters[$grid_name]) ? $custom_filters[$grid_name] : Array ();
-			}
-			else {
-				$custom_filter = Array ();
-			}
-
-			// submit format custom_filters[prefix_special][field]
-			$submit_filters = $this->Application->GetVar('custom_filters');
-			if ($submit_filters) {
-				$submit_filters = getArrayValue($submit_filters, $event->getPrefixSpecial(), $grid_name);
-				if ($submit_filters) {
-					foreach ($submit_filters as $field_name => $field_options) {
-						list ($filter_type, $field_value) = each($field_options);
-						$is_empty = strlen(is_array($field_value) ? implode('', $field_value) : $field_value) == 0;
-						if ($is_empty) {
-							if (isset($custom_filter[$field_name])) {
-								// use isset, because non-existing key will cause "php notice"!
-								unset($custom_filter[$field_name][$filter_type]); // remove filter
-
-								if (!$custom_filter[$field_name]) {
-									// if no filters left for field, then delete record at all
-									unset($custom_filter[$field_name]);
-								}
-							}
-						}
-						else {
-							$custom_filter[$field_name][$filter_type]['submit_value'] = $field_value;
-						}
-					}
-				}
-			}
-
-			if ($custom_filter) {
-				$custom_filters[$grid_name] = $custom_filter;
-			}
-			else {
-				unset($custom_filters[$grid_name]);
-			}
-			// update "custom filter" with values from submit: end
-
-			if (!$custom_filter) {
-				// in case when no filters specified, there are nothing to process
-				$this->Application->StorePersistentVar($event->getPrefixSpecial().'_custom_filter.'.$view_name, serialize($custom_filters) );
-				return false;
-			}
-
-			$object =& $event->getObject(); // don't recall it each time in getCustomFilterSearchClause
-			$grid_info = $this->Application->getUnitOption($event->Prefix.'.'.$grid_name, 'Grids');
-			foreach ($custom_filter as $field_name => $field_options) {
-				list ($filter_type, $field_options) = each($field_options);
-				$field_options['grid_options'] = $grid_info['Fields'][$field_name];
-				$field_options = $this->getCustomFilterSearchClause($object, $field_name, $filter_type, $field_options);
-				if ($field_options['value']) {
-					unset($field_options['grid_options']);
-					$custom_filter[$field_name][$filter_type] = $field_options;
-				}
-			}
-
-			$custom_filters[$grid_name] = $custom_filter;
-			$this->Application->StorePersistentVar($event->getPrefixSpecial().'_custom_filter.'.$view_name, serialize($custom_filters) );
-			return $custom_filter;
-		}
-
-		/**
-		 * Checks, that range filters "To" part is defined for given grid
-		 *
-		 * @param string $prefix_special
-		 * @param string $grid_name
-		 * @return bool
-		 */
-		function rangeFiltersUsed($prefix_special, $grid_name)
-		{
-			static $cache = Array ();
-			$cache_key = $prefix_special . $grid_name;
-
-			if (array_key_exists($cache_key, $cache)) {
-				return $cache[$cache_key];
-			}
-
-			$view_name = $this->Application->RecallVar($prefix_special . '_current_view');
-			$custom_filters = $this->Application->RecallPersistentVar($prefix_special . '_custom_filter.' . $view_name/*, ALLOW_DEFAULT_SETTINGS*/);
-			if (!$custom_filters) {
-				// filters not defined for given prefix
-				$cache[$cache_key] = false;
-				return false;
-			}
-
-			$custom_filters = unserialize($custom_filters);
-			if (!array_key_exists($grid_name, $custom_filters)) {
-				// filters not defined for given grid
-				$cache[$cache_key] = false;
-				return false;
-			}
-
-			$range_filter_defined = false;
-
-			$custom_filter = $custom_filters[$grid_name];
-			foreach ($custom_filter as $field_name => $field_options) {
-				list ($filter_type, $field_options) = each($field_options);
-
-				if (strpos($filter_type, 'range') === false) {
-					continue;
-				}
-
-				$to_value = (string)$field_options['submit_value']['to'];
-				if ($to_value !== '') {
-					$range_filter_defined = true;
-					break;
-				}
-			}
-
-			$cache[$cache_key] = $range_filter_defined;
-			return $range_filter_defined;
-		}
-
-		/**
-		 * Return numeric range filter value + checking that it's number
-		 *
-		 * @param Array $value array containing range filter value
-		 * @return unknown
-		 */
-		function getRangeValue($value)
-		{
-			return strlen($value) && is_numeric($value) ? $this->Conn->qstr($value) : false;
-		}
-
-		function getCustomFilterSearchClause(&$object, $field_name, $filter_type, $field_options)
-		{
-			// this is usually used for mutlilingual fields and date fields
-			if (isset($field_options['grid_options']['sort_field'])) {
-				$field_name = $field_options['grid_options']['sort_field'];
-			}
-			list ($field_name, $field_type, $table_name, $sql_filter_type) = $this->_getFieldInformation($object, $field_name);
-
-			$filter_value = '';
-
-			switch ($filter_type) {
-				case 'range':
-					$from = $this->getRangeValue($field_options['submit_value']['from']);
-					$to = $this->getRangeValue($field_options['submit_value']['to']);
-
-					if ($from !== false && $to !== false) {
-						// add range filter
-						$filter_value = $table_name.'`'.$field_name.'` >= '.$from.' AND '.$table_name.'`'.$field_name.'` <= '.$to;
-					}
-					elseif ($from !== false) {
-						// add equals filter on $from
-						$filter_value = $table_name.'`'.$field_name.'` = '.$from;
-					}
-					elseif ($to !== false) {
-						// add equals filter on $to
-						$filter_value = $table_name.'`'.$field_name.'` = '.$to;
-					}
-					break;
-
-				case 'float_range':
-					// MySQL can't compare values in "float" type columns using "=" operator
-					$from = $this->getRangeValue($field_options['submit_value']['from']);
-					$to = $this->getRangeValue($field_options['submit_value']['to']);
-
-					if ($from !== false && $to !== false) {
-						// add range filter
-						$filter_value = $table_name.'`'.$field_name.'` >= '.$from.' AND '.$table_name.'`'.$field_name.'` <= '.$to;
-					}
-					elseif ($from !== false) {
-						// add equals filter on $from
-						$filter_value = 'ABS('.$table_name.'`'.$field_name.'` - '.$from.') <= 0.0001';
-					}
-					elseif ($to !== false) {
-						// add equals filter on $to
-						$filter_value = 'ABS('.$table_name.'`'.$field_name.'` - '.$to.') <= 0.0001';
-					}
-					break;
-
-				case 'date_range':
-					$from = $this->processRangeField($object, $field_name, $field_options['submit_value'], 'from');
-					$to = $this->processRangeField($object, $field_name, $field_options['submit_value'], 'to');
-
-					$day_seconds = 23 * 60 * 60 + 59 * 60 + 59;
-					if ($from !== false && $to === false) {
-						$from = strtotime(date('Y-m-d', $from) . ' 00:00:00', $from); // reset to morning
-						$to = $from + $day_seconds;
-					}
-					elseif ($from === false && $to !== false) {
-						$to = strtotime(date('Y-m-d', $to) . ' 23:59:59', $to); // reset to evening
-						$from = $to - $day_seconds;
-					}
-
-					if ($from !== false && $to !== false) {
-						$filter_value = $table_name.'`'.$field_name.'` >= '.$from.' AND '.$table_name.'`'.$field_name.'` <= '.$to;
-					}
-					break;
-
-				case 'equals':
-				case 'options':
-					$field_value = strlen($field_options['submit_value']) ? $this->Conn->qstr($field_options['submit_value']) : false;
-					if ($field_value) {
-						$filter_value = $table_name.'`'.$field_name.'` = '.$field_value;
-					}
-					break;
-
-				case 'picker':
-					$field_value = strlen($field_options['submit_value']) ? $field_options['submit_value'] : false;
-					if ($field_value) {
-						$filter_value = $table_name.'`'.$field_name.'` LIKE "%|'.$field_value.'|%"';
-					}
-					break;
-
-				case 'like':
-					$filter_value = $this->buildWhereClause($field_options['submit_value'], Array($table_name.'`'.$field_name.'`'));
-					break;
-
-				default:
-					break;
-			}
-
-			$field_options['sql_filter_type'] = $sql_filter_type;
-			$field_options['value'] = $filter_value;
-
-			return $field_options;
-		}
-
-		/**
-		 * Enter description here...
-		 *
-		 * @param kdbItem $object
-		 * @param string $search_field
-		 * @param string $value
-		 * @param string $type
-		 */
-		function processRangeField(&$object, $search_field, $value, $type)
-		{
-			if (!strlen($value[$type])) {
-				return false;
-			}
-
-			$options = $object->GetFieldOptions($search_field);
-			$dt_separator = array_key_exists('date_time_separator', $options) ? $options['date_time_separator'] : ' ';
-			$value[$type] = trim($value[$type], $dt_separator); // trim any
-
-			$tmp_value = explode($dt_separator, $value[$type], 2);
-			if (count($tmp_value) == 1) {
-				$time_format = $this->_getInputTimeFormat($options);
-				if ($time_format) {
-					// time is missing, but time format available -> guess time and add to date
-					$time = ($type == 'from') ? adodb_mktime(0, 0, 0) : adodb_mktime(23, 59, 59);
-					$time = adodb_date($time_format, $time);
-					$value[$type] .= $dt_separator . $time;
-				}
-			}
-
-			$formatter =& $this->Application->recallObject($object->Fields[$search_field]['formatter']);
-
-			$value_ts = $formatter->Parse($value[$type], $search_field, $object);
-			$pseudo = getArrayValue($object->FieldErrors, $search_field, 'pseudo');
-			if ($pseudo) {
-				unset($object->FieldErrors[$search_field]); // remove error!
-				// invalid format -> ignore this date in search
-				return false;
-			}
-			return $value_ts;
-		}
-
-		/**
-		 * Returns InputTimeFormat using given field options
-		 *
-		 * @param Array $field_options
-		 * @return string
-		 */
-		function _getInputTimeFormat($field_options)
-		{
-			if (array_key_exists('input_time_format', $field_options)) {
-				return $field_options['input_time_format'];
-			}
-
-			$lang_current =& $this->Application->recallObject('lang.current');
-			return $lang_current->GetDBField('InputTimeFormat');
-		}
-
-		/**
-		 * Resets current search
-		 *
-		 * @param kEvent $event
-		 */
-		function resetSearch(&$event)
-		{
-			$this->Application->RemoveVar($event->getPrefixSpecial().'_search_filter');
-			$this->Application->RemoveVar($event->getPrefixSpecial().'_search_keyword');
-
-			$view_name = $this->Application->RecallVar($event->getPrefixSpecial().'_current_view');
-			$this->Application->RemovePersistentVar($event->getPrefixSpecial().'_custom_filter.'.$view_name);
-		}
-
-		/**
-		 * Creates filters based on "types" & "except" parameters from PrintList
-		 *
-		 * @param kEvent $event
-		 * @param Array $type_clauses
-		 * @param string $types
-		 * @param string $except_types
-		 */
-		function SetComplexFilter(&$event, &$type_clauses, $types, $except_types)
-		{
-			$includes_or_filter =& $this->Application->makeClass('kMultipleFilter', FLT_TYPE_OR);
-			$excepts_and_filter =& $this->Application->makeClass('kMultipleFilter', FLT_TYPE_AND);
-
-			$includes_or_filter_h =& $this->Application->makeClass('kMultipleFilter', FLT_TYPE_OR);
-			$excepts_and_filter_h =& $this->Application->makeClass('kMultipleFilter', FLT_TYPE_AND);
-
-			if ($types) {
-				$types = explode(',', $types);
-				foreach ($types as $type) {
-					$type = trim($type);
-
-					if (isset($type_clauses[$type])) {
-						if ($type_clauses[$type]['having_filter']) {
-							$includes_or_filter_h->addFilter('filter_'.$type, $type_clauses[$type]['include']);
-						} else {
-							$includes_or_filter->addFilter('filter_'.$type, $type_clauses[$type]['include']);
-						}
-					}
-				}
-			}
-
-			if ($except_types) {
-				$except_types = explode(',', $except_types);
-				foreach ($except_types as $type) {
-					$type = trim($type);
-
-					if (isset($type_clauses[$type])) {
-						if ($type_clauses[$type]['having_filter']) {
-							$excepts_and_filter_h->addFilter('filter_'.$type, $type_clauses[$type]['except']);
-						} else {
-							$excepts_and_filter->addFilter('filter_'.$type, $type_clauses[$type]['except']);
-						}
-					}
-				}
-			}
-
-			$object =& $event->getObject();
-
-			$object->addFilter('includes_filter', $includes_or_filter);
-			$object->addFilter('excepts_filter', $excepts_and_filter);
-
-			$object->addFilter('includes_filter_h', $includes_or_filter_h, HAVING_FILTER);
-			$object->addFilter('excepts_filter_h', $excepts_and_filter_h, HAVING_FILTER);
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/search_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.10.2.8
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/modules.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/modules.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/modules.php	(nonexistent)
@@ -1,435 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class kModulesHelper extends kHelper {
-
-		function getWhereClause()
-		{
-			$where_clause = Array('Loaded = 1');
-
-			if (!$this->Application->IsAdmin()) return implode(' AND ', $where_clause);
-
-			$modules = $this->_GetModules();
-			if ($modules) {
-				foreach ($modules as $module_index => $module) {
-					$modules[$module_index] = $this->Conn->qstr($module);
-				}
-				$where_clause[] = 'Name IN ('.implode(',', $modules).')';
-			}
-
-			return implode(' AND ', $where_clause);
-		}
-
-		function _EnableCookieSID()
-		{
-			$session =& $this->Application->recallObject('Session');
-			return $session->CookiesEnabled;
-		}
-
-		function _IsSpider($UserAgent)
-		{
-			global $robots;
-			$lines = file(FULL_PATH.'/robots_list.txt');
-
-			if (!is_array($robots)) {
-				$robots = Array();
-				for($i = 0; $i < count($lines); $i++) {
-					$l = $lines[$i];
-					$p = explode("\t", $l, 3);
-					$robots[] = $p[2];
-		    	}
-		  	}
-			return in_array($UserAgent, $robots);
-		}
-
-		function _MatchIp($ip1, $ip2)
-		{
-			$matched = TRUE;
-
-			$ip = explode('.', $ip1);
-			$MatchIp = explode('.', $ip2);
-			for ($i = 0; $i < count($ip); $i++) {
-				if($i == count($MatchIp)) break;
-				if (trim($ip[$i]) != trim($MatchIp[$i]) || trim($ip[$i]) == '*') {
-					$matched = FALSE;
-					break;
-				}
-			}
-			return $matched;
-		}
-
-		function _IpAccess($IpAddress, $AllowList, $DenyList)
-		{
-			$allowed = explode(',', $AllowList);
-			$denied = explode(',', $DenyList);
-
-			$MatchAllowed = FALSE;
-			for ($x = 0; $x < count($allowed); $x++) {
-				$ip = explode('.', $allowed[$x]);
-
-				$MatchAllowed = $this->_MatchIp($IpAddress, $allowed[$x]);
-				if ($MatchAllowed)
-				break;
-			}
-			$MatchDenied = FALSE;
-			for ($x = 0; $x < count($denied); $x++) {
-				$ip = explode('.', $denied[$x]);
-
-				$MatchDenied = $this->_MatchIp($IpAddress, $denied[$x]);
-				if ($MatchDenied)
-				break;
-			}
-
-			$Result = (($MatchAllowed && !$MatchDenied) || (!$MatchAllowed && !$MatchDenied) ||
-		  			  ($MatchAllowed && $MatchDenied));
-			return $Result;
-		}
-
-		/**
-		 * Leaves only domain part from hostname (e.g. extract "intechnic.lv" from "test.intechnic.lv")
-		 * Used for admin login license check
-		 *
-		 * @param string $d
-		 * @return string
-		 */
-		function _StripDomainHost($d)
-		{
-			$IsIp = false;
-			$dotcount = substr_count($d, '.');
-			if ($dotcount == 3) {
-				$IsIp = true;
-				for ($x = 0; $x < strlen($d); $x++) {
-					if (!is_numeric(substr($d, $x, 1)) && substr($d, $x, 1) != '.')
-					{
-						$IsIp = false;
-						break;
-					}
-				}
-			}
-
-			if ($dotcount > 1 && !$IsIp) {
-				$p = explode('.', $d);
-				$ret = $p[count($p) - 2].'.'.$p[count($p) - 1];
-			}
-			else {
-				$ret = $d;
-			}
-			return $ret;
-		}
-
-		/**
-		 * When logging into admin then check only last 2 parts of host name VS domain in license
-		 *
-		 * @param string $user_domain
-		 * @param string $license_domain
-		 * @return int
-		 */
-		function _CheckDomain($user_domain, $license_domain)
-		{
-			if ($this->Application->IsAdmin()) {
-				$user_domain = $this->_StripDomainHost($user_domain);
-				return preg_match('/(.*)'.preg_quote($user_domain, '/').'$/', $license_domain);
-			}
-			else {
-				return preg_match('/(.*)'.preg_quote($license_domain, '/').'$/', $user_domain);
-			}
-		}
-
-		/**
-		 * Returns modules list, that are in license
-		 *
-		 * @return Array
-		 */
-		function _GetModules()
-		{
-		    static $modules = null;
-
-		    if (isset($modules)) {
-		    	return $modules;
-		    }
-
-		    $modules = Array();
-		    $vars = parse_portal_ini(FULL_PATH . DIRECTORY_SEPARATOR . 'config.php');
-		    $license = array_key_exists('License', $vars) ? base64_decode($vars['License']) : false;
-		    if ($license) {
-			    list ( , , $i_Keys) = $this->_ParseLicense($license);
-			    $domain = $this->_GetDomain($vars);
-			    if (!$this->_IsLocalSite($domain)) {
-			        for ($x = 0; $x < count($i_Keys); $x++) {
-			            $key = $i_Keys[$x];
-			            if ($this->_CheckDomain($domain, $key['domain'])) {
-			            	// used hostname is subdomain or matches domain from license
-			            	$modules = explode(',', $key['mod']);
-			            }
-			        }
-			    }
-			    else {
-			    	// all already installed modules are licensed for localhost
-			        $modules = array_keys($this->Application->ModuleInfo);
-			    }
-		    }
-
-		    // all modules starting from "in-" doesn't require license
-		    $base_modules = Array ('Core', 'In-Portal', 'Custom');
-		    $modules = array_merge($modules, $base_modules, $this->_getFreeModules($vars));
-		    $modules = array_unique( array_map('strtolower', $modules) );
-
-		    return $modules;
-		}
-
-		/**
-		 * Get all modules, that don't require licensing
-		 *
-		 * @return Array
-		 */
-		function _getFreeModules($vars)
-		{
-			$skip_modules = Array ('.', '..');
-			$domain = $this->_GetDomain($vars);
-
-		    if (!$this->_IsLocalSite($domain)) {
-		    	array_push($skip_modules, 'in-commerce', 'in-auction');
-		    }
-
-			$folder = dir(MODULES_PATH);
-
-			$ret = Array ();
-			while (($entry = $folder->read()) !== false) {
-				$entry_lowercased = strtolower($entry);
-				if (!is_dir($folder->path . '/' . $entry) || in_array($entry_lowercased, $skip_modules) || (substr($entry_lowercased, 0, 3) != 'in-')) {
-					continue;
-				}
-
-				$ret[] = $entry_lowercased;
-			}
-
-			$folder->close();
-
-			return $ret;
-		}
-
-		/**
-		 * Allows to determine if module is licensed
-		 *
-		 * @param string $name
-		 * @return bool
-		 */
-		function _ModuleLicensed($name)
-		{
-		    $modules = $this->_GetModules();
-			return in_array($name, $modules);
-		}
-
-		/**
-		 * Returns domain from licences (and direct in case of install script)
-		 *
-		 * @return string
-		 */
-		function _GetDomain($vars)
-		{
-			$config_domain = array_key_exists('Domain', $vars) ? $vars['Domain'] : false;
-			return $this->Application->ConfigValue('DomainDetect') ? $_SERVER['HTTP_HOST'] : $config_domain;
-		}
-
-		function _keyED($txt, $encrypt_key)
-		{
-			$encrypt_key = md5($encrypt_key);
-			$ctr = 0;
-			$tmp = '';
-			for ($i = 0; $i < strlen($txt); $i++) {
-				if ($ctr == strlen($encrypt_key)) $ctr = 0;
-				$tmp .= substr($txt, $i, 1) ^ substr($encrypt_key, $ctr, 1);
-				$ctr++;
-			}
-			return $tmp;
-		}
-
-
-		function _decrypt($txt, $key)
-		{
-			$txt = $this->_keyED($txt,$key);
-			$tmp = '';
-			for ($i = 0; $i < strlen($txt); $i++) {
-				$md5 = substr($txt, $i, 1);
-				$i++;
-				$tmp .= (substr($txt, $i, 1) ^ $md5);
-			}
-			return $tmp;
-		}
-
-		function LoadFromRemote()
-		{
-		    return '';
-		}
-
-		function DLid()
-		{
-		    die($GLOBALS['lid']."\n");
-		}
-
-		function _LoadLicense($LoadRemote = false)
-		{
-		    $f = FULL_PATH.'/intechnic.php';
-		    if ($this->_falseIsLocalSite($f)) $ret = true;
-		    if (file_exists($f)) {
-		        $contents = file($f);
-		        $data = base64_decode($contents[1]);
-		    }
-		    else {
-		        if ($LoadRemote) return $LoadFromRemote;
-		    }
-		   return $data;
-		}
-
-		function _VerifyKey($domain, $k)
-		{
-		    $key = md5($domain);
-		    $lkey = substr($key, 0, strlen($key) / 2);
-		    $rkey = substr($key, strlen($key) / 2);
-		    $r = $rkey.$lkey;
-		    if ($k == $r) return true;
-		    return false;
-		}
-
-		function _ParseLicense($txt)
-		{
-//			global $i_User, $i_Pswd, $i_Keys;
-
-			if (!$this->_falseIsLocalSite($txt)) {
-				$nah = false;
-			}
-
-			$data = $this->_decrypt($txt, 'beagle');
-			$i_User = $i_Pswd = '';
-			$i_Keys = Array();
-			$lines = explode("\n", $data);
-			for ($x = 0; $x < count($lines); $x++) {
-				$l = $lines[$x];
-				$p = explode('=', $l, 2);
-				switch($p[0]) {
-					case 'Username':
-						$i_User = $p[1];
-						break;
-
-					case 'UserPass':
-						$i_Pswd = $p[1];
-						break;
-
-					default:
-						if (substr($p[0], 0, 3) == 'key') {
-							$parts = explode('|', $p[1]);
-							if ($this->_VerifyKey($parts[0], $parts[1])) {
-								unset($K);
-								$k['domain'] = $parts[0];
-								$k['key'] = $parts[1];
-								$k['desc'] = $parts[2];
-								$k['mod'] = $parts[3];
-								$i_Keys[] = $k;
-							}
-						}
-						break;
-				}
-			}
-
-			return Array ($i_User, $i_Pswd, $i_Keys);
-		}
-
-		function _GetObscureValue($i)
-		{
-			if ($i == 'x') return 0254; $z = '';
-			if ($i == 'z') return 0x7F.'.';
-			if ($i == 'c') return '--code--';
-			if ($i >= 5 && $i < 7) return $this->_GetObscureValue($z)*$this->_GetObscureValue('e');
-			if ($i > 30) return Array(0x6c,0x6f,0x63,0x61,0x6c,0x68,0x6f,0x73,0x74);
-			if ($i > 20) return 99;
-			if ($i > 10) return '.'.($this->_GetObscureValue(6.5)+1);
-			if ($i == 'a') return 0xa;
-		}
-
-		function _Chr($val)
-		{
-			$x = $this->_GetObscureValue(25);
-			$f = chr($x).chr($x+5).chr($x+15);
-			return $f($val);
-		}
-
-		function _IsLocalSite($domain)
-		{
-		    $ee = $this->_GetObscureValue(35); $yy = '';
-			foreach ($ee as $e) $yy .= $this->_Chr($e);
-		    $localb = FALSE;
-		    if(substr($domain,0,3)==$this->_GetObscureValue('x'))
-		    {
-		        $b = substr($domain,0,6);
-		        $p = explode(".",$domain);
-		        $subnet = $p[1];
-		        if($p[1]>15 && $p[1]<32)
-		            $localb=TRUE;
-		    }
-		    $zz = $this->_GetObscureValue('z').$this->_GetObscureValue(5).'.'.(int)$this->_GetObscureValue(7).$this->_GetObscureValue(12);
-		    $ff = $this->_GetObscureValue('z')+65;
-		    $hh = $ff-0x18;
-		    if($domain==$yy || $domain==$zz || substr($domain,0,7)==$ff.$this->_Chr(46).$hh ||
-		       substr($domain,0,3)==$this->_GetObscureValue('a').$this->_Chr(46) || $localb || strpos($domain,".")==0)
-		    {
-		        return TRUE;
-		    }
-		    return FALSE;
-		}
-
-		function _falseIsLocalSite($domain)
-		{
-		    $localb = FALSE;
-		    if(substr($domain,0,3)=="172")
-		    {
-		        $b = substr($domain,0,6);
-		        $p = explode(".",$domain);
-		        $subnet = $p[1];
-		        if($p[1]>15 && $p[1]<32)
-		            $localb=TRUE;
-		    }
-		    if($domain=="localhost" || $domain=="127.0.0.1" || substr($domain,0,7)=="192.168" ||
-		       substr($domain,0,3)=="10." || $localb || strpos($domain,".")==0)
-		    {
-		        return TRUE;
-		    }
-		    return FALSE;
-		}
-
-		function verifyLicense($license_hash)
-		{
-			$license_hash = base64_decode($license_hash);
-			list ($license_user, $license_password, ) = $this->_ParseLicense($license_hash);
-			return strlen($license_user) && strlen($license_password);
-		}
-
-		function moduleInstalled($module_name)
-		{
-			static $modules = null;
-
-			if (is_null($modules)) {
-				$sql = 'SELECT LOWER(Name)
-						FROM ' . $this->Application->getUnitOption('mod', 'TableName');
-				$modules = $this->Conn->GetCol($sql);
-			}
-
-			if ($module_name == 'kernel') {
-				$module_name = 'in-portal';
-			}
-
-			return in_array(strtolower($module_name), $modules);
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/modules.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.10.2.5
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/fck_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/fck_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/fck_helper.php	(nonexistent)
@@ -1,294 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-defined('FULL_PATH') or die('restricted access!');
-
-class fckFCKHelper extends kHelper {
-
-	var $Config = Array();
-
-	function fckFCKHelper()
-	{
-		parent::kHelper();
-
-		$this->Config['AllowedExtensions']['Files']	= array('jpg','gif','jpeg','png','swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg','zip','rar','arj','gz','tar','doc','pdf','ppt','rdp','swf','swt','txt','vsd','xls','csv','odt') ;
-		$this->Config['DeniedExtensions']['Files']	= array('php','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg') ;
-		$this->Config['AllowedExtensions']['Images']	= array('jpg','gif','jpeg','png', 'bmp') ;
-		$this->Config['DeniedExtensions']['Images']	= array('php','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg');
-		$this->Config['AllowedExtensions']['Flash']	= array('swf','fla') ;
-		$this->Config['DeniedExtensions']['Flash']	= array('php','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg') ;
-		$this->Config['AllowedExtensions']['Media']	= array('asf','asx','avi','wav','wax','wma','wm','wmv','m3u','mp2v','mpg','mpeg','m1v','mp2','mp3','mpa','mpe','mpv2','mp4','mid','midi','rmi','qt','aif','aifc','aiff','mov','flv','rm','svcd','swf','vcd') ;
-		$this->Config['DeniedExtensions']['Media']	= array('php','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg');
-		$this->Config['AllowedExtensions']['Documents']	= array('doc','pdf','ppt','rdp','swf','swt','txt','vsd','xls','csv','zip','odt') ;
-		$this->Config['DeniedExtensions']['Documents']	= array('php','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg');
-
-	}
-
-	function CreateFolder($folder = '')
-	{
-		if (!$folder) {
-			return false;
-		}
-
-		$folderPath = WRITEABLE . '/user_files/' . $folder;
-
-		if (file_exists($folderPath) && is_dir($folderPath)) {
-			return true;
-		}
-
-		$permissions = defined('FCK_FOLDERS_PERMISSIONS') ? FCK_FOLDERS_PERMISSIONS : '0777';
-		return mkdir($folderPath); // , $permissions
-	}
-
-	function IsAllowedExtension($folder, $file_name)
-	{
-		$base_folder = $this->getBaseFolder($folder);
-		eregi("(\.[a-zA-Z0-9]{1,10})$", $file_name, $regs);
-		$ext = strtolower(ltrim($regs[1],"."));
-		if (isset($this->Config['DeniedExtensions'][$folder])) {
-			if (in_array($ext, $this->Config['DeniedExtensions'][$folder])) {
-				return false;
-			}
-		}
-		if (isset($this->Config['AllowedExtensions'][$folder])) {
-			if (!in_array($ext, $this->Config['AllowedExtensions'][$folder])) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	function getBaseFolder($folder)
-	{
-		$end = strpos("/", $folder);
-		if ($end) {
-			return substr($folder, 0, $end);
-		}
-		return $folder;
-	}
-
-	function ReadFolders($files_dir)
-	{
-		$aFolders = array();
-		$oCurrentFolder = opendir($files_dir) ;
-		$KernelSystemFolders = defined('KERNEL_SYSTEM_FOLDERS') ? KERNEL_SYSTEM_FOLDERS : array('icons', 'CVS', '.svn');
-		while ( $sFile = readdir( $oCurrentFolder ) )
-		{
-			if (is_dir($files_dir . $sFile ) && !in_array($sFile,$KernelSystemFolders) && $sFile != '.' && $sFile != '..') {
-				$aFolders[] = $sFile;
-			}
-		}
-		closedir( $oCurrentFolder ) ;
-		return $aFolders;
-	}
-
-
-	function ReadFiles($files_dir)
-	{
-		$aFiles = array();
-		$oCurrentFolder = opendir($files_dir) ;
-		while ( $sFile = readdir( $oCurrentFolder ) )
-		{
-			if (!is_dir($files_dir . $sFile )) {
-				$aFiles[] = $sFile;
-			}
-		}
-		closedir( $oCurrentFolder ) ;
-		return $aFiles;
-	}
-
-
-	function PrintFolders()
-	{
-		$order_by = $this->Application->GetVar('order_by');
-		$sort_by = $this->Application->GetVar('sort_by');
-		$folder = $this->Application->GetVar('folder');
-		$files_dir = WRITEABLE."/user_files/".$folder."/";
-		$aFolders = $this->ReadFolders($files_dir);
-		$ret = '';
-		$order_by = $this->Application->GetVar('order_by');
-		$sort_by = $this->Application->GetVar('sort_by');
-		natcasesort($aFolders);
-		foreach ($aFolders as $k => $v) {
-			$ret .= '<folder2 path="'.$folder."/".$v.'">'.$v.'</folder2>'."\n";
-		}
-
-		if ($sort_by == 'name' && $order_by == '_desc') {
-			$aFolders = array_reverse($aFolders);
-		}
-		foreach ($aFolders as $k => $v) {
-			$ret .= '<folder path="'.$folder."/".$v.'">'.$v.'</folder>'."\n";
-		}
-		return $ret;
-	}
-
-	function CalculateFileSize($size)
-	{
-		if ( $size > 0 ) {
-			$size = round( $size / 1024 );
-			$size = ($size < 1)? 1:$size;//  round( $iFileSize / 1024 ) ;
-		}
-		return $size;
-	}
-
-	function CheckIconType($v)
-	{
-		$a_ext = Array('ai','avi','bmp','cs','dll','doc','exe','fla','gif','htm','html','jpg','js','mdb','mp3','pdf','png','ppt','rdp','swf','swt','txt','vsd','xls','xml','zip');
-
-		eregi("(\.[a-zA-Z0-9]{1,10})$", $v, $regs);
-		$ext = strtolower(ltrim($regs[1],"."));
-		if (in_array($ext, $a_ext))
-		{
-			$icon = $ext;
-		} else {
-			$icon = 'default.icon';
-		}
-		return $icon;
-	}
-
-	function GetXmlString($size,$url,$icon,$date,$file_name)
-	{
-		return 	'<file size="'.$size.'" url="'.$url.'" icon="'.$icon.'" date="'.$date.'">'.$file_name.'</file>'."\n";
-	}
-
-	function PrintFiles()
-	{
-		$order_by = $this->Application->GetVar('order_by');
-		$sort_by = $this->Application->GetVar('sort_by');
-
-		$folder = $this->Application->GetVar('folder');
-		$files_dir = WRITEABLE . "/user_files/" . $folder."/";
-		$files_url = BASE_PATH . WRITEBALE_BASE . "/user_files/" . $folder . "/";
-		$aFiles = $this->ReadFiles($files_dir);
-		$ret = '';
-		$date_format = "m/d/Y h:i A";
-		natcasesort($aFiles);
-		if ($sort_by == 'name' && $order_by == '_desc') {
-			$aFiles = array_reverse($aFiles,TRUE);
-		}
-
-		foreach ($aFiles as $k => $v)
-		{
-			$aFilesSize[$k] = filesize( $files_dir . $v);
-			$aFilesDate[$k] = filectime( $files_dir . $v);
-		}
-		if ($sort_by == 'name') {
-			foreach ($aFiles as $k => $file) {
-				$size = $this->CalculateFileSize($aFilesSize[$k]);
-				$date = date($date_format, $aFilesDate[$k]);
-				$icon = $this->CheckIconType($file);
-				$ret .= $this->GetXmlString($size,$files_url.$file,$icon,$date,$file);
-			}
-		}
-		if ($sort_by == 'date') {
-			asort($aFilesDate);
-			 if($order_by == '_desc') {
-			 	$aFilesDate = array_reverse($aFilesDate,TRUE);
-			 }
-			foreach ($aFilesDate as $k => $date) {
-				$size = $this->CalculateFileSize($aFilesSize[$k]);
-				$file = $aFiles[$k];
-				$date = date($date_format, $date);
-				$icon = $this->CheckIconType($file);
-				$ret .= $this->GetXmlString($size,$files_url.$file,$icon,$date,$file);
-			}
-		}
-		if ($sort_by == 'size') {
-			asort($aFilesSize);
-			 if($order_by == '_desc') {
-			 	$aFilesSize = array_reverse($aFilesSize,TRUE);
-			 }
-			foreach ($aFilesSize as $k => $size) {
-				$size = $this->CalculateFileSize($size);
-				$file = $aFiles[$k];
-				$date = date($date_format, $aFilesDate[$k]);
-				$icon = $this->CheckIconType($file);
-				$ret .= $this->GetXmlString($size,$files_url.$file,$icon,$date,$file);
-			}
-		}
-		return $ret;
-	}
-
-	function UploadFile()
-	{
-		$Extensions['Allowed']['Files']	= array('jpg','gif','jpeg','png','swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg','zip','rar','arj','gz','tar','doc','pdf','ppt','rdp','swf','swt','txt','vsd','xls','csv','odt') ;
-		$Extensions['Allowed']['Images'] = array('jpg','gif','jpeg','png', 'bmp') ;
-		$Extensions['Allowed']['Flash']	= array('swf','fla') ;
-		$Extensions['Allowed']['Media']	= array('asf','asx','avi','wav','wax','wma','wm','wmv','m3u','mp2v','mpg','mpeg','m1v','mp2','mp3','mpa','mpe','mpv2','mp4','mid','midi','rmi','qt','aif','aifc','aiff','mov','flv','rm','svcd','swf','vcd') ;
-		$Extensions['Allowed']['Documents']	= array('doc','pdf','ppt','rdp','swf','swt','txt','vsd','xls','csv','zip','odt') ;
-
-		$upload_dir = $this->Application->GetVar('upload_dir');
-		$type = explode("/",$upload_dir);
-		$type = $type[0];
-		$sServerDir =  WRITEABLE."/user_files/".$upload_dir."/";
-
-		$aUpFile = $_FILES['NewFile'];
-		$sFileName = $aUpFile['name'];
-		$sOriginalFileName = $aUpFile['name'];
-		$sExtension = strtolower(substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) );
-		$sErrorNumber = 0;
-		if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )
-		{
-			if (in_array($sExtension,$Extensions['Allowed'][$type]))
-			{
-
-				if (!$aUpFile['error']) {
-					$iCounter = 0 ;
-					while ( true )
-					{
-						$sFilePath = $sServerDir . $sFileName ;
-						if ( is_file( $sFilePath ) )
-						{
-							$iCounter++ ;
-							$sFileName = $this->RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
-							$sErrorNumber = '201' ;
-						}
-						else
-						{
-							// Turn off all error reporting.
-							error_reporting( 0 ) ;
-							// Enable error tracking to catch the error.
-							ini_set( 'track_errors', '1' ) ;
-							move_uploaded_file( $aUpFile['tmp_name'], $sFilePath ) ;
-							$sErrorMsg = $php_errormsg ;
-							// Restore the configurations.
-							ini_restore( 'track_errors' ) ;
-							ini_restore( 'error_reporting' ) ;
-
-							if ( is_file( $sFilePath ) )
-							{
-								$oldumask = umask(0) ;
-								chmod( $sFilePath, 0666 ) ;
-								umask( $oldumask ) ;
-							}
-							break ;
-						}
-					}
-				}
-			} else {
-				$sErrorNumber = '203';
-			}
-		} else {
-			$sErrorNumber = '202' ;
-		}
-		echo '<script type="text/javascript">' ;
-		echo 'window.parent.frames["frmUpload"].OnUploadCompleted(' . $sErrorNumber . ',"' . str_replace( '"', '\\"', $sFileName ) . '") ;' ;
-		echo '</script>' ;
-	}
-
-	function RemoveExtension( $fileName )
-	{
-		return substr( $fileName, 0, strrpos( $fileName, '.' ) ) ;
-	}
-}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/fck_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.2.1
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/helpers_config.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/helpers_config.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/helpers_config.php	(nonexistent)
@@ -1,52 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-defined('FULL_PATH') or die('restricted access!');
-
-	$config = Array (
-		'Prefix' => 'helpers',
-		'EventHandlerClass' => Array ('class' => 'kEventHandler', 'file' => '', 'build_event' => 'OnBuild'),
-
-		'RegisterClasses' => Array (
-			Array ('pseudo' => 'kMultiLanguageHelper', 'class' => 'kMultiLanguageHelper', 'file' => 'multilanguage.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'SearchHelper', 'class' => 'kSearchHelper', 'file' => 'search_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'SectionsHelper', 'class' => 'kSectionsHelper', 'file' => 'sections_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'PermissionsHelper', 'class' => 'kPermissionsHelper', 'file' => 'permissions_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'ModulesHelper', 'class' => 'kModulesHelper', 'file' => 'modules.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'ModRewriteHelper', 'class' => 'kModRewriteHelper', 'file' => 'mod_rewrite_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'RecursiveHelper', 'class' => 'kRecursiveHelper', 'file' => 'recursive_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'FilenamesHelper', 'class' => 'kFilenamesHelper', 'file' => 'filenames_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'ClipboardHelper', 'class' => 'kClipboardHelper', 'file' => 'clipboard_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'ColumnPickerHelper', 'class' => 'kColumnPickerHelper', 'file' => 'col_picker_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'ThemesHelper', 'class' => 'kThemesHelper', 'file' => 'themes_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'CaptchaHelper', 'class' => 'kCaptchaHelper', 'file' => 'captcha_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'PriorityHelper', 'class' => 'kPriorityHelper', 'file' => 'priority_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'CurlHelper', 'class' => 'kCurlHelper', 'file' => 'curl_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'CountHelper', 'class' => 'kCountHelper', 'file' => 'count_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-
-			Array ('pseudo' => 'ImageHelper', 'class' => 'ImageHelper', 'file' => 'image_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'FileHelper', 'class' => 'FileHelper', 'file' => 'file_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'CategoryHelper', 'class' => 'CategoryHelper', 'file' => 'category_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'CSVHelper', 'class' => 'kCSVHelper', 'file' => 'csv_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'ChartHelper', 'class' => 'kChartHelper', 'file' => 'chart_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'RatingHelper', 'class' => 'RatingHelper', 'file' => 'rating_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'FCKHelper', 'class' => 'fckFCKHelper', 'file' => 'fck_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'SpamHelper', 'class' => 'SpamHelper', 'file' => 'spam_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'TemplateHelper', 'class' => 'TemplateHelper', 'file' => 'template_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'MailingListHelper', 'class' => 'MailingListHelper', 'file' => 'mailing_list_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'JSONHelper', 'class' => 'JSONHelper', 'file' => 'json_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'LanguageImportHelper', 'class' => 'LanguageImportHelper', 'file' => 'language_import_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-			Array ('pseudo' => 'SkinHelper', 'class' => 'SkinHelper', 'file' => 'skin_helper.php', 'build_event' => '', 'require_classes' => 'kHelper'),
-		),
-	);
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/helpers_config.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.9.2.10
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/csv_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/csv_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/csv_helper.php	(nonexistent)
@@ -1,374 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	safeDefine('EXPORT_STEP', 100); // export by 100 items
-	safeDefine('IMPORT_STEP', 10);
-
-	class kCSVHelper extends kHelper {
-
-		var $PrefixSpecial;
-		var $grid;
-
-		var $delimiter_mapping = Array(0 => "\t", 1 => ',', 2 => ';', 3 => ' ', 4 => ':');
-		var $enclosure_mapping = Array(0 => '"', 1 => "'");
-		var $separator_mapping = Array(0 => "\n", 1 => "\r\n");
-
-		function ExportStep()
-		{
-			$export_data = $this->Application->RecallVar('export_data');
-			$export_rand = $this->Application->RecallVar('export_rand');
-			$get_rand = $this->Application->GetVar('export_rand');
-
-			if($export_data && $export_rand == $get_rand) {
-				$export_data = unserialize($export_data);
-				$first_step = false;
-			}
-			else {
-				// first step
-				$export_data = Array();
-				$export_data['prefix'] = $this->PrefixSpecial;
-				$export_data['grid'] = $this->grid;
-				$export_data['file_name'] = EXPORT_PATH.'/'.$this->ValidateFileName(EXPORT_PATH, 'export_'.$export_data['prefix'].'.csv');
-				$export_data['step'] = EXPORT_STEP;
-				$export_data['delimiter'] = $this->delimiter_mapping[(int)$this->Application->ConfigValue('CSVExportDelimiter')];
-				$export_data['enclosure'] = $this->enclosure_mapping[(int)$this->Application->ConfigValue('CSVExportEnclosure')];
-				$export_data['record_separator'] = $this->separator_mapping[(int)$this->Application->ConfigValue('CSVExportSeparator')];
-				$export_data['page'] = 1;
-
-				$lang_object =& $this->Application->recallObject('lang.current');
-				/* @var $lang_object LanguagesItem */
-				$export_data['source_encoding'] = strtoupper( $lang_object->GetDBField('Charset') );
-				$export_data['encoding'] = $this->Application->ConfigValue('CSVExportEncoding') ? false : 'UTF-16LE';
-
-				$this->Application->StoreVar('export_rand', $get_rand);
-
-				$first_step = true;
-			}
-
-			$file = fopen($export_data['file_name'], $first_step ? 'w' : 'a');
-
-			$prefix_elems = split('\.|_', $export_data['prefix']);
-			$grids = $this->Application->getUnitOption($prefix_elems[0], 'Grids');
-			$grid_config = $grids[ $export_data['grid'] ]['Fields'];
-
-			$list_params = Array('per_page' => $export_data['step'], 'grid' => $export_data['grid']);
-			$list =& $this->Application->recallObject(rtrim(implode('.', $prefix_elems), '.'), $prefix_elems[0].'_List', $list_params);
-			/* @var $list kDBList */
-			$list->SetPage($export_data['page']);
-
-			$list->Query();
-			$list->GoFirst();
-
-			$picker_helper =& $this->Application->RecallObject('ColumnPickerHelper');
-			/* @var $picker_helper kColumnPickerHelper */
-			$picker_helper->ApplyPicker(rtrim(implode('.', $prefix_elems), '.'), $grid_config, $export_data['grid']);
-
-			if($first_step) {
-				// if UTF-16, write Unicode marker
-				if($export_data['encoding'] == 'UTF-16LE') {
-					fwrite($file, chr(0xFF).chr(0xFE));
-				}
-
-				// inserting header line
-				$headers = Array();
-				foreach($grid_config as $field_name => $field_data) {
-					$header = $this->Application->Phrase( $field_data['title'] );
-					array_push($headers, $header);
-				}
-				$csv_line = getcsvline($headers, $export_data['delimiter'], $export_data['enclosure'], $export_data['record_separator']);
-				if($export_data['encoding']) {
-					$csv_line = mb_convert_encoding($csv_line, $export_data['encoding'], $export_data['source_encoding']);
-				}
-				fwrite($file, $csv_line);
-			}
-
-			while(!$list->EOL())
-			{
-				$data = Array();
-				foreach($grid_config as $field_name => $field_data) {
-					if(isset($field_data['export_field'])) {
-						$field_name = $field_data['export_field'];
-					}
-					$value = $list->GetField($field_name, isset($field_data['format']) ? $field_data['format'] : null);
-					$value = str_replace("\r\n", "\n", $value);
-					$value = str_replace("\r", "\n", $value);
-					array_push($data, $value);
-				}
-				if($export_data['encoding'] == 'UTF-16LE') {
-					fwrite($file, chr(0xFF).chr(0xFE));
-				}
-				$csv_line = getcsvline($data, $export_data['delimiter'], $export_data['enclosure'], $export_data['record_separator']);
-				if($export_data['encoding']) {
-					$csv_line = mb_convert_encoding($csv_line, $export_data['encoding'], $export_data['source_encoding']);
-				}
-				fwrite($file, $csv_line);
-
-				$list->GoNext();
-			}
-
-			$records_processed = $export_data['page'] * $export_data['step'];
-			$percent_complete = min($records_processed / $list->RecordsCount * 100, 100);
-
-			fclose($file);
-
-			if ($records_processed >= $list->RecordsCount) {
-				$this->Application->StoreVar('export_data', serialize($export_data));
-				$this->Application->Redirect($this->Application->GetVar('finish_template'));
-			}
-
-			echo $percent_complete;
-
-			$export_data['page']++;
-			$this->Application->StoreVar('export_data', serialize($export_data));
-		}
-
-		function ValidateFileName($path, $name)
-		{
-			$parts = pathinfo($name);
-			$ext = '.'.$parts['extension'];
-			$filename = mb_substr($parts['basename'], 0, -mb_strlen($ext));
-			$new_name = $filename.$ext;
-			while ( file_exists($path.'/'.$new_name) )
-			{
-		   		if ( preg_match('/('.preg_quote($filename, '/').'_)([0-9]*)('.preg_quote($ext, '/').')/', $new_name, $regs) ) {
-						$new_name = $regs[1].($regs[2]+1).$regs[3];
-					}
-					else {
-						$new_name = $filename.'_1'.$ext;
-					}
-			}
-			return $new_name;
-		}
-
-		function ExportData($name)
-		{
-			$export_data = unserialize($this->Application->RecallVar('export_data'));
-			return isset($export_data[$name]) ? $export_data[$name] : false;
-		}
-
-		function GetCSV()
-		{
-			safeDefine('DBG_SKIP_REPORTING', 1);
-
-			$export_data = unserialize($this->Application->RecallVar('export_data'));
-			header('Content-type: text/csv');
-			$filename = rtrim(basename($export_data['file_name']), '.csv').'.csv';
-			header('Content-Disposition: attachment; filename="'.$filename.'"');
-			readfile($export_data['file_name']);
-			die();
-		}
-
-		function ImportStart($filename)
-		{
-			if(!file_exists($filename) || !is_file($filename)) return 'cant_open_file';
-
-			$import_data = Array();
-
-			$lang_object =& $this->Application->recallObject('lang.current');
-			/* @var $lang_object LanguagesItem */
-			$import_data['source_encoding'] = strtoupper( $lang_object->GetDBField('Charset') );
-			$import_data['encoding'] = $this->Application->ConfigValue('CSVExportEncoding') ? false : 'UTF-16LE';
-			$import_data['errors'] = '';
-
-			// convert file in case of UTF-16LE
-			if($import_data['source_encoding'] != $import_data['encoding']) {
-				copy($filename, $filename.'.orginal');
-				$file_content = file_get_contents($filename);
-				$file = fopen($filename, 'w');
-				fwrite($file, mb_convert_encoding(str_replace(chr(0xFF).chr(0xFE), '', $file_content), $import_data['source_encoding'], $import_data['encoding']));
-				fclose($file);
-
-			}
-
-			$import_data['prefix'] = $this->PrefixSpecial;
-			$import_data['grid'] = $this->grid;
-			$import_data['file'] = $filename;
-			$import_data['total_lines'] = count(file($filename));
-			if(!$import_data['total_lines']) $import_data['total_lines'] = 1;
-			unset($file_content);
-			$import_data['lines_processed'] = 0;
-			$import_data['delimiter'] = $this->delimiter_mapping[(int)$this->Application->ConfigValue('CSVExportDelimiter')];
-			$import_data['enclosure'] = $this->enclosure_mapping[(int)$this->Application->ConfigValue('CSVExportEnclosure')];
-			$import_data['step'] = IMPORT_STEP;
-			$import_data['not_imported_lines'] = '';
-			$import_data['added'] = 0;
-			$import_data['updated'] = 0;
-
-			$file = fopen($filename, 'r');
-			// getting first line for headers
-			$headers = fgetcsv($file, 8192, $import_data['delimiter'], $import_data['enclosure']);
-			fclose($file);
-
-			$prefix_elems = split('\.|_', $import_data['prefix']);
-			$grids = $this->Application->getUnitOption($prefix_elems[0], 'Grids');
-			$grid_config = $grids[ $import_data['grid'] ]['Fields'];
-
-			$field_list = Array();
-			foreach($grid_config as $field_name => $field_data) {
-				if(isset($field_data['export_field'])) {
-					$field_name = $field_data['export_field'];
-				}
-				$field_label = $this->Application->Phrase( $field_data['title'] );
-				$field_pos = array_search($field_label, $headers);
-				if($field_pos !== false) {
-					$field_list[$field_pos] = $field_name;
-				}
-			}
-
-			if(!count($field_list)) return 'no_matching_columns';
-			$import_data['field_list'] = $field_list;
-
-			// getting key list
-			$field_positions = Array();
-			$config_key_list = $this->Application->getUnitOption($prefix_elems[0], 'ImportKeys');
-			if(!$config_key_list) $config_key_list = Array();
-			array_unshift($config_key_list, Array($this->Application->getUnitOption($prefix_elems[0], 'IDField')));
-
-			$key_list = Array();
-			foreach($config_key_list as $arr_key => $import_key) {
-				$key_list[$arr_key] = is_array($import_key) ? $import_key : Array($import_key);
-
-				foreach($key_list[$arr_key] as $key_field) {
-					$field_positions[$key_field] = array_search($key_field, $import_data['field_list']);
-					if($field_positions[$key_field] === false) {
-						// no such key field combination in imported file
-						unset($key_list[$arr_key]);
-						break;
-					}
-				}
-			}
-			$import_data['key_list'] = $key_list;
-			$import_data['field_positions'] = $field_positions;
-
-			$this->Application->StoreVar('import_data', serialize($import_data));
-			return true;
-		}
-
-		function ImportStep()
-		{
-			$import_data = unserialize($this->Application->RecallVar('import_data'));
-			$prefix_elems = split('\.|_', $import_data['prefix']);
-
-			$object =& $this->Application->recallObject($prefix_elems[0].'.-csvimport', $prefix_elems[0], Array('skip_autoload' => true, 'populate_ml_fields' => true));
-			/* @var $object kDBItem */
-
-			$file = fopen($import_data['file'], 'r');
-			$eof = false;
-			// skipping lines that has been already imported
-			for($i = 0; $i < $import_data['lines_processed'] + 1; $i++) {
-				if(feof($file)) break;
-				fgets($file, 8192);
-			}
-
-			$import_event = new kEvent($prefix_elems[0].'.-csvimport:OnBeforeCSVLineImport');
-
-			for($i = 0; $i < $import_data['step']; $i++) {
-				if(feof($file)) break;
-				$data = fgetcsv($file, 8192, $import_data['delimiter'], $import_data['enclosure']);
-				if(!$data) continue;
-
-				$object->Clear();
-				$action = 'Create';
-
-				// 1. trying to load object by keys
-				foreach($import_data['key_list'] as $key) {
-					$fail = false;
-					$key_array = Array();
-					foreach($key as $key_field) {
-						if(!isset($data[ $import_data['field_positions'][$key_field] ])) {
-							$fail = true;
-							break;
-						}
-						$key_array[$key_field] = $data[ $import_data['field_positions'][$key_field] ];
-					}
-					if($fail) continue;
-					if($object->Load($key_array)) {
-						$action = 'Update';
-						break;
-					}
-				}
-
-				// 2. set object fields
-				foreach($import_data['field_list'] as $position => $field_name) {
-					if(isset($data[$position])) {
-						$object->SetField($field_name, $data[$position]);
-					}
-				}
-
-				// 3. validate item and run event
-				$status = $object->Validate();
-				$import_event->status = $status ? erSUCCESS : erFAIL;
-				$this->Application->HandleEvent($import_event);
-
-				if($import_event->status == erSUCCESS && $object->$action()) {
-					$import_data[ ($action == 'Create') ? 'added' : 'updated' ]++;
-				}
-				else {
-					$msg = '';
-					foreach ($object->FieldErrors as $field => $info) {
-						if (!$info['pseudo']) continue;
-						$msg .= "$field: {$info['pseudo']} ";
-					}
-					$import_data['errors'] .= ($i + $import_data['lines_processed'] + 1).": $msg\n";
-					$import_data['not_imported_lines'] .= ','.($i + $import_data['lines_processed'] + 1);
-				}
-			}
-
-			$import_data['lines_processed'] += $import_data['step'];
-
-			$import_data['not_imported_lines'] = ltrim($import_data['not_imported_lines'], ',');
-			$this->Application->StoreVar('import_data', serialize($import_data));
-
-			$feof = feof($file);
-			fclose($file);
-
-			if($feof) {
-				$this->Application->Redirect($this->Application->GetVar('finish_template'));
-			}
-			else {
-				$percent_complete = floor($import_data['lines_processed'] / $import_data['total_lines'] * 100);
-				if($percent_complete > 99) $percent_complete = 99;
-				echo $percent_complete;
-			}
-		}
-
-		function ImportData($name)
-		{
-			$import_data = unserialize($this->Application->RecallVar('import_data'));
-			return isset($import_data[$name]) ? $import_data[$name] : false;
-		}
-
-		function GetNotImportedLines()
-		{
-			$import_data = unserialize($this->Application->RecallVar('import_data'));
-
-			if(!$import_data['not_imported_lines']) return false;
-			$line_numbers = explode(',', $import_data['not_imported_lines']);
-			$line_numbers[] = 0; // include header row in output
-
-			$file = fopen($import_data['file'], 'r');
-			$eof = false;
-			$result = '';
-			for($i = 0; $i <= max($line_numbers); $i++) {
-				if(feof($file)) break;
-				$line = fgets($file, 8192);
-				if(in_array($i, $line_numbers)) {
-					$result .= $i.':'.$line;
-				}
-			}
-			return $result."\n\n".$import_data['errors'];
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/csv_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.4.4
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/geocode_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/geocode_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/geocode_helper.php	(nonexistent)
@@ -1,186 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class GeoCodeHelper extends kHelper {
-
-		/**
-		 * Returns Longitude & Latitude by US address provided
-		 *
-		 * @param Array $data
-		 * @return Array
-		 */
-		function QueryCoordinates($address, $city, $state, $zip)
-		{
-			$user = $this->Application->ConfigValue('GeoCodeUser');
-			$pass = $this->Application->ConfigValue('GeoCodePass');
-
-			$rie_path = sprintf(FULL_PATH.'/tools/rie/rie -u %s -p %s -g "%s" -l',
-								$user,
-								$pass,
-								$address.'|'.$city.'|'.$state.'|'.$zip
-						);
-
-			exec($rie_path, $geo_array, $code);
-
-			if ($code == 0) {
-				$out_data = explode('|', $geo_array[2]);
-
-//				include_once(FULL_PATH.'/compat/array_combine.php');
-				$assoc_data = array_combine(explode('|', $geo_array[1]), $out_data);
-
-				$lon = abs($out_data[8]); // set to positive, because required by SQL formula
-				$lat = $out_data[7];
-
-				$zip4 = $out_data[9];
-				$dpbc = $out_data[10];
-				$carrier = $out_data[11];
-			}
-			else {
-				$lon = '';
-				$lat = '';
-				$zip4 = '';
-				$dpbc = '';
-				$carrier = '';
-				$assoc_data = Array();
-			}
-
-			return Array($lon, $lat, $zip4, $dpbc, $carrier, serialize($assoc_data));
-		}
-
-		function getTag($tag, $xml)
-		{
-			$open_tag_pos = strpos($xml, '<'.$tag.'>');
-			$close_tag_pos = strpos($xml, '</'.$tag.'>');
-			if (!$open_tag_pos || !$close_tag_pos)
-			{
-				return '';
-			}
-			$tag_length = strlen($tag) + 2;
-			return substr($xml, $open_tag_pos + $tag_length, $close_tag_pos - $open_tag_pos - $tag_length);
-		}
-
-		function QueryCoordinatesFromGoogle($address, $city, $state, $zip)
-		{
-		//	1908 Pike pl, Seattle, WA
-		// http://maps.google.com/maps/geo?
-		// ABQIAAAAzNbTbxHki-PAnXzsrA7z2hR0fs2_a3JecCfKmMFhGT8VtEjV7xRV8rMK1czaEH2ZG3eiYJMuej_vnQ
-
-		    $qaddress = $address.', '.$city.', '.$state;
-		    $request_url = $this->Application->ConfigValue('GoogleMapsURL').'output=xml&key='.
-		    	$this->Application->ConfigValue('GoogleMapsKey').'&q='.urlencode($qaddress);
-
-		    $curl_helper =& $this->Application->recallObject('CurlHelper');
-			/* @var $curl_helper kCurlHelper */
-
-		    $delay = 0;
-		    while (true)
-		    {
-			    $xml = $curl_helper->Send($request_url);
-
-			    if (strpos($xml, '<code>620</code>')) {
-			    	$delay += 100000;
-			    } elseif (strpos($xml, '<code>200</code>')) {
-			    	// get latitude, longitude and zip  from xml-answer
-					$a_coords = explode(',', $this->getTag('coordinates', $xml));
-					$lat = $a_coords[1];
-					$lon = abs($a_coords[0]); // set to positive, because required by SQL formula
-					$zip4 = $this->getTag('PostalCodeNumber', $xml);
-					$dpbc = '';
-					$carrier = '';
-					$assoc_data = Array();
-					break;
-			    } else {
-					$lon = '';
-					$lat = '';
-					$zip4 = '';
-					$dpbc = '';
-					$carrier = '';
-					$assoc_data = Array();
-					break;
-			    }
-		    	usleep($delay);
-		    }
-
-			return Array($lon, $lat, $zip4, $dpbc, $carrier, serialize($assoc_data));
-
-		}
-
-		/**
-		 * Try to find lon, lat by address return false if failed
-		 *
-		 * @param string $address
-		 * @param string $city
-		 * @param string $state
-		 * @param int $zip
-		 * @return Array (lon, lat)
-		 */
-		function GetCoordinates($address, $city, $state, $zip, $no_cache = false, $force_cache = false)
-		{
-			if (!$zip && !$state) {
-				// if state or zip missing then do nothing
-				return false;
-			}
-
-			$zip_info = $no_cache ? false : $this->GetFromCache($address, $city, $state, $zip);
-//			$zip_info = $this->GetFromCache($address, $city, $state, $zip);
-
-			if (!$zip_info && !$force_cache) {
-				list($lon, $lat, $zip4, $dpbc, $carrier, $geocode_answer) = $this->QueryCoordinatesFromGoogle($address, $city, $state, $zip);
-
-				if ($lon != '' && $lat != '') {
-					// valid position returned by geocode => add to cache
-					$fields_hash = 	Array(
-											'zipcode'			=>	$zip4,
-											'address'			=>	$address,
-											'city'				=>	$city,
-											'state'				=>	$state,
-											'lat'				=>	$lat,
-											'lon'				=>	$lon,
-											'zip4'				=>	$zip4,
-											'dpbc'				=>	$dpbc,
-											'carrier'			=>	$carrier,
-											'geocode_answer'	=>	$geocode_answer,
-										);
-					$this->Conn->doInsert($fields_hash, TABLE_PREFIX.'ZipCodes');
-					return Array($lon, $lat, $zip4, $dpbc, $carrier);
-				}
-				else {
-					// bad case, rie call failed => no data retrieved
-					return false;
-				}
-			}
-
-			return Array($zip_info['lon'], $zip_info['lat'], getArrayValue($zip_info, 'zip4'), getArrayValue($zip_info, 'dpbc'), getArrayValue($zip_info, 'carrier'));
-		}
-
-		/**
-		 * Try to find cached lon, lat by address
-		 *
-		 * @param string $address
-		 * @param string $city
-		 * @param string $state
-		 * @param int $zip
-		 * @return Array (lon, lat)
-		 */
-		function GetFromCache($address, $city, $state, $zip)
-		{
-			$zip = substr($zip, 0, 5); // use only first 5 digits
-			$sql = 'SELECT lon, lat
-					FROM '.TABLE_PREFIX.'ZipCodes
-					WHERE zipcode = '.$this->Conn->qstr($zip);
-			return $this->Conn->GetRow($sql);
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/geocode_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.72.2
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/themes_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/themes_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/themes_helper.php	(nonexistent)
@@ -1,392 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class kThemesHelper extends kHelper {
-
-		/**
-		 * Where all themes are located
-		 *
-		 * @var string
-		 */
-		var $themesFolder = '';
-
-		/**
-		 * List of theme names, found on system
-		 *
-		 * @var Array
-		 */
-		var $_themeNames = Array ();
-
-		/**
-		 * Temporary array when all theme files from db are stored
-		 *
-		 * @var Array
-		 */
-		var $themeFiles = Array ();
-
-		function kThemesHelper()
-		{
-			parent::kHelper();
-			$this->themesFolder = FULL_PATH.'/themes';
-		}
-
-		/**
-		 * Updates file system changes to database for selected theme
-		 *
-		 * @param string $theme_name
-		 *
-		 * @return mixed returns ID of created/used theme or false, if none created
-		 */
-		function refreshTheme($theme_name)
-		{
-			if (!file_exists($this->themesFolder . '/' . $theme_name)) {
-				// requested theme was not found on hdd
-				return false;
-			}
-
-			$id_field = $this->Application->getUnitOption('theme', 'IDField');
-			$table_name = $this->Application->getUnitOption('theme', 'TableName');
-
-			$sql = 'SELECT ' . $id_field . ', Enabled
-					FROM ' . $table_name . '
-					WHERE Name = ' . $this->Conn->qstr($theme_name);
-			$theme_info = $this->Conn->GetRow($sql);
-
-			if ($theme_info) {
-				$theme_id = $theme_info[$id_field];
-				$theme_enabled = $theme_info['Enabled'];
-			}
-			else {
-				$theme_id = $theme_enabled = false;
-			}
-
-			$this->themeFiles = Array ();
-			if ($theme_id) {
-				if (!$theme_enabled) {
-					// don't process existing theme files, that are disabled
-					return $theme_id;
-				}
-
-				// reset found mark for every themes file (if theme is not new)
-				$sql = 'UPDATE '.TABLE_PREFIX.'ThemeFiles
-						SET FileFound = 0
-						WHERE ThemeId = '.$theme_id;
-				$this->Conn->Query($sql);
-
-				// get all theme files from db
-				$sql = 'SELECT FileId, CONCAT(FilePath, "/", FileName) AS FullPath
-						FROM '.TABLE_PREFIX.'ThemeFiles
-						WHERE ThemeId = '.$theme_id;
-				$this->themeFiles = $this->Conn->GetCol($sql, 'FullPath');
-			}
-			else {
-				// theme was not found in db, but found on hdd -> create new
-				$fields_hash = 	Array (
-					 'Name'			=>	$theme_name,
-					 'Enabled'		=>	0,
-					 'Description'	=>	$theme_name,
-					 'PrimaryTheme'	=>	0,
-					 'CacheTimeout'	=>	3600, // not in use right now
-					 'StylesheetId'	=>	0,	  // not in use right now
-				);
-
-				$this->Conn->doInsert($fields_hash, $table_name);
-				$theme_id = $this->Conn->getInsertID();
-
-				if (!$theme_enabled) {
-					// don't process newly created theme files, because they are disabled
-					return $theme_id;
-				}
-			}
-
-			$this->_themeNames[$theme_id] = $theme_name;
-			$theme_path = $this->themesFolder.'/'.$theme_name;
-			$this->FindThemeFiles('', $theme_path, $theme_id); // search from base theme directory
-
-			// delete file records from db, that were not found on hdd
-			$sql = 'DELETE FROM '.TABLE_PREFIX.'ThemeFiles
-					WHERE ThemeId = '.$theme_id.' AND FileFound = 0';
-			$this->Conn->Query($sql);
-
-			return $theme_id;
-		}
-
-		/**
-		 * Searches for new templates (missing in db) in spefied folder
-		 *
-		 * @param string $folder_path subfolder of searchable theme
-		 * @param string $theme_path theme path from web server root
-		 * @param int $theme_id id of theme we are scanning
-		 */
-		function FindThemeFiles($folder_path, $theme_path, $theme_id, $auto_structure_mode = 1)
-		{
-			$fh = opendir($theme_path.$folder_path.'/');
-
-			// always ingore design and element templates
-			$ignore = Array ('^CVS$', '^\.svn$', '\.des\.tpl$', '\.elm\.tpl$');
-
-			$sms_ingore = $theme_path . $folder_path . '/.smsignore';
-
-			if (file_exists($sms_ingore)) {
-				$ignore = array_merge($ignore, file($sms_ingore));
-			}
-
-			while (($filename = readdir($fh))) {
-				if ($filename == '.' || $filename == '..') continue;
-
-				$auto_structure = $auto_structure_mode;
-				foreach ($ignore as $pattern) {
-					if (preg_match('/'.str_replace('/', '\\/', trim($pattern)).'/', $filename)) {
-						$auto_structure = 2;
-						break;
-					}
-				}
-
-				$full_path = $theme_path.$folder_path.'/'.$filename;
-				if (is_dir($full_path)) {
-					$this->FindThemeFiles($folder_path.'/'.$filename, $theme_path, $theme_id, $auto_structure);
-				}
-				elseif (substr($filename, -4) == '.tpl') {
-					$file_path = $folder_path.'/'.$filename;
-
-					$meta_info = $this->_getTemplateMetaInfo(trim($file_path, '/'), $theme_id);
-					$file_id = isset($this->themeFiles[$file_path]) ? $this->themeFiles[$file_path] : false;
-					$file_description = array_key_exists('desc', $meta_info) ? $meta_info['desc'] : '';
-
-					if ($file_id) {
-						// file was found in db & on hdd -> mark as existing
-						$fields_hash = Array (
-							'FileFound' => 1,
-							'Description' => $file_description,
-							'FileType' => $auto_structure,
-							'FileMetaInfo' => serialize($meta_info),
-						);
-
-						$this->Conn->doUpdate($fields_hash, TABLE_PREFIX . 'ThemeFiles', 'FileId = ' . $file_id);
-					}
-					else {
-						// file was found on hdd, but missing in db -> create new file record
-						$fields_hash = Array (
-							'ThemeId' => $theme_id,
-							'FileName' => $filename,
-							'FilePath' => $folder_path,
-							'Description' => $file_description,
-							'FileType' => $auto_structure, // 1 - built-in, 0 - custom (not in use right now), 2 - skipped in structure
-							'FileMetaInfo' => serialize($meta_info),
-							'FileFound' => 1,
-						);
-
-						$this->Conn->doInsert($fields_hash, TABLE_PREFIX.'ThemeFiles');
-						$this->themeFiles[$file_path] = $this->Conn->getInsertID();
-					}
-//					echo 'FilePath: [<strong>'.$folder_path.'</strong>]; FileName: [<strong>'.$filename.'</strong>]; IsNew: [<strong>'.($file_id > 0 ? 'NO' : 'YES').'</strong>]<br />';
-				}
-
-			}
-		}
-
-		/**
-		 * Returns template information (name, description, path) from it's header comment
-		 *
-		 * @param string $template
-		 * @param int $theme_id
-		 * @return Array
-		 */
-		function _getTemplateMetaInfo($template, $theme_id)
-		{
-			static $init_made = false;
-			if (!$init_made) {
-				$this->Application->InitParser(true);
-				$init_made = true;
-			}
-
-			$template = 'theme:' . $this->_themeNames[$theme_id] . '/' . $template;
-			$template_file = $this->Application->TemplatesCache->GetRealFilename($template); // ".tpl" was added before
-
-			return $this->parseTemplateMetaInfo($template_file);
-		}
-
-		function parseTemplateMetaInfo($template_file)
-		{
-			if (!file_exists($template_file)) {
-				// when template without info it's placed in top category
-				return Array ();
-			}
-
-			$template_data = file_get_contents($template_file);
-
-			if (substr($template_data, 0, 6) == '<!--##') {
-				// template starts with comment in such format
-				/*<!--##
-				<NAME></NAME>
-				<DESC></DESC>
-				<SECTION>||</SECTION>
-				##-->*/
-
-				$comment_end = strpos($template_data, '##-->');
-				if ($comment_end === false) {
-					// badly formatted comment
-					return Array ();
-				}
-
-				$comment = trim( substr($template_data, 6, $comment_end - 6) );
-				if (preg_match_all('/<(NAME|DESC|SECTION)>(.*?)<\/(NAME|DESC|SECTION)>/is', $comment, $regs)) {
-					$ret = Array ();
-					foreach ($regs[1] as $param_order => $param_name) {
-						$ret[ strtolower($param_name) ] = trim($regs[2][$param_order]);
-					}
-
-					if (array_key_exists('section', $ret) && $ret['section']) {
-						$category_path = explode('||', $ret['section']);
-						$category_path = array_map('trim', $category_path);
-						$ret['section'] = implode('||', $category_path);
-					}
-
-					return $ret;
-				}
-			}
-
-			return Array ();
-		}
-
-		/**
-		 * Updates file system changes to database for all themes (including new ones)
-		 *
-		 */
-		function refreshThemes()
-		{
-			$themes_found = Array();
-			$skip_filenames = Array ('.', '..', 'CVS', '.svn');
-
-			$fh = opendir($this->themesFolder.'/');
-			while (($filename = readdir($fh))) {
-				if (in_array($filename, $skip_filenames)) {
-					continue;
-				}
-
-				if (is_dir($this->themesFolder.'/'.$filename)) {
-					$theme_id = $this->refreshTheme($filename);
-					if ($theme_id) {
-						$themes_found[] = $theme_id;
-					}
-				}
-			}
-
-			$id_field = $this->Application->getUnitOption('theme', 'IDField');
-			$table_name = $this->Application->getUnitOption('theme', 'TableName');
-
-			// 1. only one theme found -> enable it and make primary
-			/*if (count($themes_found) == 1) {
-				$sql = 'UPDATE ' . $table_name . '
-						SET Enabled = 1, PrimaryTheme = 1
-						WHERE ' . $id_field . ' = ' . current($themes_found);
-				$this->Conn->Query($sql);
-			}*/
-
-			// 2. if none themes found -> delete all from db OR delete all except of found themes
-			$sql = 'SELECT '.$id_field.'
-					FROM '.$table_name;
-			if ($themes_found) {
-				$sql .= ' WHERE '.$id_field.' NOT IN ('.implode(',', $themes_found).')';
-			}
-			$theme_ids = $this->Conn->GetCol($sql);
-			$this->deleteThemes($theme_ids);
-
-		}
-
-		/**
-		 * Deletes themes with ids passed from db
-		 *
-		 * @param Array $theme_ids
-		 */
-		function deleteThemes($theme_ids)
-		{
-			if (!$theme_ids) {
-				return ;
-			}
-
-			$id_field = $this->Application->getUnitOption('theme', 'IDField');
-			$table_name = $this->Application->getUnitOption('theme', 'TableName');
-
-			$sql = 'DELETE FROM '.$table_name.'
-					WHERE '.$id_field.' IN ('.implode(',', $theme_ids).')';
-			$this->Conn->Query($sql);
-
-			$sql = 'DELETE FROM '.TABLE_PREFIX.'ThemeFiles
-					WHERE '.$id_field.' IN ('.implode(',', $theme_ids).')';
-			$this->Conn->Query($sql);
-		}
-
-		/**
-		 * Returns current theme (also works in admin)
-		 *
-		 * @return int
-		 */
-		function getCurrentThemeId()
-		{
-			static $theme_id = null;
-
-			if (isset($theme_id)) {
-				return $theme_id;
-			}
-
-			if ($this->Application->IsAdmin()) {
-				// get theme, that user selected in catalog
-				$theme_id = $this->Application->RecallVar('theme_id');
-
-				if ($theme_id === false) {
-					// query, because "m_theme" is always empty in admin
-					$id_field = $this->Application->getUnitOption('theme', 'IDField');
-					$table_name = $this->Application->getUnitOption('theme', 'TableName');
-
-					$sql = 'SELECT ' . $id_field . '
-							FROM ' . $table_name . '
-							WHERE (PrimaryTheme = 1) AND (Enabled = 1)';
-					$theme_id = $this->Conn->GetOne($sql);
-				}
-
-				return $theme_id;
-			}
-
-			// use current theme, because it's available on Front-End
-			$theme_id = $this->Application->GetVar('m_theme');
-			if (!$theme_id) {
-				// happens in mod-rewrite mode, then requested template is not found
-				$theme_id = $this->Application->GetDefaultThemeId();
-			}
-
-			return $theme_id;
-		}
-
-		/**
-		 * Returns page id based on given template
-		 *
-		 * @param string $template
-		 * @return int
-		 */
-		function getPageByTemplate($template)
-		{
-			$sql = 'SELECT ' . $this->Application->getUnitOption('c', 'IDField') . '
-					FROM ' . $this->Application->getUnitOption('c', 'TableName') . '
-					WHERE
-						(
-							(NamedParentPath = ' . $this->Conn->qstr('Content/' . $template) . ') OR
-							(IsSystem = 1 AND CachedTemplate = ' . $this->Conn->qstr($template) . ')
-						)
-						AND (ThemeId = ' . $this->getCurrentThemeId() . ' OR ThemeId = 0)';
-			return $this->Conn->GetOne($sql);
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/themes_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.4.2.5
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/image_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/image_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/image_helper.php	(nonexistent)
@@ -1,594 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class ImageHelper extends kHelper {
-
-		/**
-		 * Parses format string into array
-		 *
-		 * @param string $format sample format: "resize:300x500;wm:inc/wm.png|c|-20"
-		 * @return Array sample result: Array('max_width' => 300, 'max_height' => 500, 'wm_filename' => 'inc/wm.png', 'h_margin' => 'c', 'v_margin' => -20)
-		 */
-		function parseFormat($format)
-		{
-			$res = Array ();
-
-			$format_parts = explode(';', $format);
-			foreach ($format_parts as $format_part) {
-				if (preg_match('/resize:(\d*)x(\d*)/', $format_part, $regs)) {
-					$res['max_width'] = $regs[1];
-					$res['max_height'] = $regs[2];
-				}
-				elseif (preg_match('/wm:([^\|]*)\|([^\|]*)\|([^\|]*)/', $format_part, $regs)) {
-					$res['wm_filename'] = FULL_PATH.THEMES_PATH.'/'.$regs[1];
-					$res['h_margin'] = strtolower($regs[2]);
-					$res['v_margin'] = strtolower($regs[3]);
-				}
-				elseif (preg_match('/crop:([^\|]*)\|([^\|]*)/', $format_part, $regs)) {
-					$res['crop_x'] = strtolower($regs[1]);
-					$res['crop_y'] = strtolower($regs[2]);
-				}
-				elseif ($format_part == 'img_size' || $format_part == 'img_sizes') {
-					$res['image_size'] = true;
-				}
-				elseif (preg_match('/fill:(.*)/', $format_part, $regs)) {
-					$res['fill'] = $regs[1];
-				}
-			}
-
-			return $res;
-		}
-
-		/**
-		 * Resized given image to required dimensions & saves resized image to "resized" subfolder in source image folder
-		 *
-		 * @param string $src_image full path to image (on server)
-		 * @param mixed $max_width maximal allowed resized image width or false if no limit
-		 * @param mixed $max_height maximal allowed resized image height or false if no limit
-		 * @return string direct url to resized image
-		 */
-		function ResizeImage($src_image, $max_width, $max_height = null)
-		{
-			$image_size = false;
-
-			if(isset($max_height)) {
-				$params['max_height'] = $max_height;
-				$params['max_width'] = $max_width;
-			}
-			else {
-				$params = $this->parseFormat($max_width);
-
-				if (array_key_exists('image_size', $params)) {
-					// image_size param shouldn't affect resized file name (crc part)
-					$image_size = $params['image_size'];
-					unset($params['image_size']);
-				}
-			}
-
-			if ($params['max_width'] > 0 || $params['max_height'] > 0) {
-				list ($params['target_width'], $params['target_height'], $needs_resize) = $this->GetImageDimensions($src_image, $params['max_width'], $params['max_height'], $params);
-
-				if (!is_numeric($params['max_width'])) {
-					$params['max_width'] = $params['target_width'];
-				}
-
-				if (!is_numeric($params['max_height'])) {
-					$params['max_height'] = $params['target_height'];
-				}
-
-				$src_path = dirname($src_image);
-
-				if ($needs_resize || array_key_exists('wm_filename', $params) && $params['wm_filename']) {
-					// resize required OR watermarking required -> change resulting image name !
-					$dst_image = preg_replace('/^'.preg_quote($src_path, '/').'(.*)\.(.*)$/', $src_path . DIRECTORY_SEPARATOR . 'resized\\1_' . crc32(serialize($params)) . '.\\2', $src_image);
-					if (!file_exists($dst_image) || filemtime($src_image) > filemtime($dst_image)) {
-						// resized image not available OR should be recreated due source image change
-						$params['dst_image'] = $dst_image;
-						$image_resized = $this->ScaleImage($src_image, $params);
-						if (!$image_resized) {
-							// resize failed, because of server error
-							$dst_image = $src_image;
-						}
-					}
-
-					// resize/watermarking ok
-					$src_image = $dst_image;
-				}
-			}
-
-			if ($image_size) {
-				// return only image size (resized or not)
-				$image_info = $this->getImageInfo($src_image);
-				return $image_info ? $image_info[3] : '';
-			}
-
-			$base_url = rtrim($this->Application->BaseURL(), '/');
-			return str_replace(DIRECTORY_SEPARATOR, '/', preg_replace('/^'.preg_quote(FULL_PATH, '/').'(.*)/', $base_url.'\\1', $src_image));
-		}
-
-		/**
-		 * Proportionally resizes given image to destination dimensions
-		 *
-		 * @param string $src_image full path to source image (already existing)
-		 * @param string $dst_image full path to destination image (will be created)
-		 * @param int $dst_width destination image width (in pixels)
-		 * @param int $dst_height destination image height (in pixels)
-		 */
-		function ScaleImage($src_image, $params)
-		{
-			$image_info = $this->getImageInfo($src_image);
-			if (!$image_info) {
-				return false;
-			}
-
-			/*list ($params['max_width'], $params['max_height'], $resized) = $this->GetImageDimensions($src_image, $params['max_width'], $params['max_height'], $params);
-			if (!$resized) {
-				// image dimensions are smaller or equals to required dimensions
-				return false;
-			}*/
-
-			if (!$this->Application->ConfigValue('ForceImageMagickResize') && function_exists('imagecreatefromjpeg')) {
-				// try to resize using GD
-				$resize_map = Array (
-					'image/jpeg' => 'imagecreatefromjpeg:imagejpeg:jpg',
-					'image/gif' => 'imagecreatefromgif:imagegif:gif',
-					'image/png' => 'imagecreatefrompng:imagepng:png',
-					'image/bmp' => 'imagecreatefrombmp:imagejpeg:bmp',
-				);
-
-				$mime_type = $image_info['mime'];
-				if (!isset($resize_map[$mime_type])) {
-					return false;
-				}
-
-				list ($read_function, $write_function, $file_extension) = explode(':', $resize_map[$mime_type]);
-
-				$src_image_rs = @$read_function($src_image);
-				if ($src_image_rs) {
-					// when source image has large dimensions (over 1MB filesize), then 16M is not enough
-					set_time_limit(0);
-					ini_set('memory_limit', -1);
-
-					$dst_image_rs = imagecreatetruecolor($params['target_width'], $params['target_height']); // resize target size
-
-					if ($file_extension == 'png') {
-						// preserve transparency of PNG images
-						$transparent_color = imagecolorallocate($dst_image_rs, 0, 0, 0);
-						imagecolortransparent($dst_image_rs, $transparent_color);
-					}
-
-					// 1. resize
-					imagecopyresampled($dst_image_rs, $src_image_rs, 0, 0, 0, 0, $params['target_width'], $params['target_height'], $image_info[0], $image_info[1]);
-
-					$watermark_size = 'target';
-
-					if (array_key_exists('crop_x', $params) || array_key_exists('crop_y', $params)) {
-						// 2.1. crop image to given size
-						$dst_image_rs =& $this->_cropImage($dst_image_rs, $params);
-						$watermark_size = 'max';
-					} elseif (array_key_exists('fill', $params)) {
-						// 2.2. fill image margins from resize with given color
-						$dst_image_rs =& $this->_applyFill($dst_image_rs, $params);
-						$watermark_size = 'max';
-					}
-
-					// 3. apply watermark
-					$dst_image_rs =& $this->_applyWatermark($dst_image_rs, $params[$watermark_size . '_width'], $params[$watermark_size . '_height'], $params);
-
-					return @$write_function($dst_image_rs, $params['dst_image'], 100);
-				}
-			}
-			else {
-				// try to resize using ImageMagick
-				// TODO: implement crop and watermarking using imagemagick
-				exec('/usr/bin/convert '.$src_image.' -resize '.$params['target_width'].'x'.$params['target_height'].' '.$params['dst_image'], $shell_output, $exec_status);
-				return $exec_status == 0;
-			}
-
-			return false;
-		}
-
-		/**
-		 * Fills margins (if any) of resized are with given color
-		 *
-		 * @param resource $src_image_rs resized image resource
-		 * @param Array $params crop parameters
-		 * @return resource
-		 */
-		function &_applyFill(&$src_image_rs, $params)
-		{
-			$x_position = round(($params['max_width'] - $params['target_width']) / 2); // center
-			$y_position = round(($params['max_height'] - $params['target_height']) / 2); // center
-
-			// crop resized image
-			$fill_image_rs = imagecreatetruecolor($params['max_width'], $params['max_height']);
-
-			$fill = $params['fill'];
-
-			if (substr($fill, 0, 1) == '#') {
-				// hexdecimal color
-				$color = imagecolorallocate($fill_image_rs, hexdec( substr($fill, 1, 2) ), hexdec( substr($fill, 3, 2) ), hexdec( substr($fill, 5, 2) ));
-			}
-			else {
-				// for now we don't support color names, but we will in future
-				return $src_image_rs;
-			}
-
-			imagefill($fill_image_rs, 0, 0, $color);
-			imagecopy($fill_image_rs, $src_image_rs, $x_position, $y_position, 0, 0, $params['target_width'], $params['target_height']);
-
-			return $fill_image_rs;
-		}
-
-		/**
-		 * Crop given image resource using given params and return resulting image resource
-		 *
-		 * @param resource $src_image_rs resized image resource
-		 * @param Array $params crop parameters
-		 * @return resource
-		 */
-		function &_cropImage(&$src_image_rs, $params)
-		{
-			if ($params['crop_x'] == 'c') {
-				$x_position = round(($params['max_width'] - $params['target_width']) / 2); // center
-			}
-			elseif ($params['crop_x'] >= 0) {
-				$x_position = $params['crop_x']; // margin from left
-			}
-			else {
-				$x_position = $params['target_width'] - ($params['max_width'] - $params['crop_x']); // margin from right
-			}
-
-			if ($params['crop_y'] == 'c') {
-				$y_position = round(($params['max_height'] - $params['target_height']) / 2); // center
-			}
-			elseif ($params['crop_y'] >= 0) {
-				$y_position = $params['crop_y']; // margin from top
-			}
-			else {
-				$y_position = $params['target_height'] - ($params['max_height'] - $params['crop_y']); // margin from bottom
-			}
-
-			// crop resized image
-			$crop_image_rs = imagecreatetruecolor($params['max_width'], $params['max_height']);
-			$crop_image_rs =& $this->_applyFill($crop_image_rs, $params);
-
-			imagecopy($crop_image_rs, $src_image_rs, $x_position, $y_position, 0, 0, $params['target_width'], $params['target_height']);
-
-			return $crop_image_rs;
-		}
-
-		/**
-		 * Apply watermark (transparent PNG image) to given resized image resource
-		 *
-		 * @param resource $src_image_rs
-		 * @param int $max_width
-		 * @param int $max_height
-		 * @param Array $params
-		 * @return resource
-		 */
-		function &_applyWatermark(&$src_image_rs, $max_width, $max_height, $params)
-		{
-			$watermark_file = array_key_exists('wm_filename', $params) ? $params['wm_filename'] : false;
-
-			if (!$watermark_file || !file_exists($watermark_file)) {
-				// no watermark required, or provided watermark image is missing
-				return $src_image_rs;
-			}
-
-			$watermark_img_rs = imagecreatefrompng($watermark_file);
-			list ($watermark_width, $watermark_height) = $this->getImageInfo($watermark_file);
-
-			imagealphablending($src_image_rs, true);
-
-			if ($params['h_margin'] == 'c') {
-				$x_position = round($max_width / 2 - $watermark_width / 2); // center
-			}
-			elseif ($params['h_margin'] >= 0) {
-				$x_position = $params['h_margin']; // margin from left
-			}
-			else {
-				$x_position = $max_width - ($watermark_width - $params['h_margin']); // margin from right
-			}
-
-			if ($params['v_margin'] == 'c') {
-				$y_position = round($max_height / 2 - $watermark_height / 2); // center
-			}
-			elseif ($params['v_margin'] >= 0) {
-				$y_position = $params['v_margin']; // margin from top
-			}
-			else {
-				$y_position = $max_height - ($watermark_height - $params['v_margin']); // margin from bottom
-			}
-
-			imagecopy($src_image_rs, $watermark_img_rs, $x_position, $y_position, 0, 0, $watermark_width, $watermark_height);
-
-			return $src_image_rs;
-		}
-
-		/**
-		 * Returns destination image size without actual resizing (useful for <img .../> HTML tag)
-		 *
-		 * @param string $src_image full path to source image (already existing)
-		 * @param int $dst_width destination image width (in pixels)
-		 * @param int $dst_height destination image height (in pixels)
-		 * @param Array $params
-		 * @return Array resized image dimensions (0 - width, 1 - height)
-		 */
-		function GetImageDimensions($src_image, $dst_width, $dst_height, $params)
-		{
-			$image_info = $this->getImageInfo($src_image);
-			if (!$image_info) {
-				return false;
-			}
-
-			$orig_width = $image_info[0];
-			$orig_height = $image_info[1];
-
-			$too_large = is_numeric($dst_width) ? ($orig_width > $dst_width) : false;
-			$too_large = $too_large || (is_numeric($dst_height) ? ($orig_height > $dst_height) : false);
-
-			if ($too_large) {
-				$width_ratio = $dst_width ? $dst_width / $orig_width : 1;
-				$height_ratio = $dst_height ? $dst_height / $orig_height : 1;
-
-				if (array_key_exists('crop_x', $params) || array_key_exists('crop_y', $params)) {
-					// resize by smallest inverted radio
-					$resize_by = $this->_getCropImageMinRatio($image_info, $dst_width, $dst_height);
-					$ratio = $resize_by == 'width' ? $width_ratio : $height_ratio;
-				}
-				else {
-					$ratio = min($width_ratio, $height_ratio);
-				}
-
-				$width = ceil($orig_width * $ratio);
-				$height = ceil($orig_height * $ratio);
-			}
-			else {
-				$width = $orig_width;
-				$height = $orig_height;
-			}
-
-			return Array ($width, $height, $too_large);
-		}
-
-		/**
-		 * Returns ratio type with smaller relation of original size to target size
-		 *
-		 * @param Array $image_info image information from "ImageHelper::getImageInfo"
-		 * @param int $dst_width destination image width (in pixels)
-		 * @param int $dst_height destination image height (in pixels)
-		 * @return Array
-		 */
-		function _getCropImageMinRatio($image_info, $dst_width, $dst_height)
-		{
-			$width_ratio = $dst_width ? $image_info[0] / $dst_width : 1;
-			$height_ratio = $dst_height ? $image_info[1] / $dst_height : 1;
-
-			return $width_ratio < $height_ratio ? 'width' : 'height';
-		}
-
-		/**
-		 * Returns image dimensions + checks if given file is existing image
-		 *
-		 * @param string $src_image full path to source image (already existing)
-		 * @return mixed
-		 */
-		function getImageInfo($src_image)
-		{
-			if (!file_exists($src_image)) {
-				return false;
-			}
-
-			$image_info = @getimagesize($src_image);
-			if (!$image_info) {
-				trigger_error('Image <b>'.$src_image.'</b> <span class="debug_error">missing or invalid</span>', E_USER_WARNING);
-				return false;
-			}
-
-			return $image_info;
-		}
-
-		/**
-		 * Returns maximal image size (width & height) among fields specified
-		 *
-		 * @param kDBItem $object
-		 * @param string $fields
-		 * @param string $format any format, that returns full url (e.g. files_resized:WxH, resize:WxH, full_url, full_urls)
-		 * @return string
-		 */
-		function MaxImageSize(&$object, $fields, $format = null)
-		{
-			static $cached_sizes = Array ();
-
-			$cache_key = $object->getPrefixSpecial().'_'.$object->GetID();
-			if (!isset($cached_sizes[$cache_key])) {
-				$images = Array ();
-
-				$fields = explode(',', $fields);
-				foreach ($fields as $field) {
-					$image_data = $object->GetField($field, $format);
-					if (!$image_data) {
-						continue;
-					}
-
-					$images = array_merge($images, explode('|', $image_data));
-				}
-
-				$max_width = 0;
-				$max_height = 0;
-				$base_url = rtrim($this->Application->BaseURL(), '/');
-
-				foreach ($images as $image_url) {
-					$image_path = preg_replace('/^'.preg_quote($base_url, '/').'(.*)/', FULL_PATH.'\\1', $image_url);
-					$image_info = $this->getImageInfo($image_path);
-					$max_width = max($max_width, $image_info[0]);
-					$max_height = max($max_height, $image_info[1]);
-				}
-
-				$cached_sizes[$cache_key] = Array ($max_width, $max_height);
-			}
-
-			return $cached_sizes[$cache_key];
-		}
-
-		/**
-		 * Puts existing item images (from subitem) to virtual fields (in main item)
-		 *
-		 * @param kCatDBItem $object
-		 */
-		function LoadItemImages(&$object)
-		{
-			if (!$this->Application->prefixRegistred($object->Prefix.'-img')) {
-				return ;
-			}
-
-			$max_image_count = $this->Application->ConfigValue($object->Prefix.'_MaxImageCount');
-
-			$sql = 'SELECT *
-					FROM '.TABLE_PREFIX.'Images
-					WHERE ResourceId = '.$object->GetDBField('ResourceId').'
-					ORDER BY Priority DESC
-					LIMIT 0, ' . (int)$max_image_count;
-			$item_images = $this->Conn->Query($sql);
-
-			$image_counter = 1;
-			foreach ($item_images as $item_image) {
-				$image_path = $item_image['ThumbPath'];
-				if ($item_image['DefaultImg'] == 1 || $item_image['Name'] == 'main') {
-					// process primary image separately
-					if (array_key_exists('PrimaryImage', $object->Fields)) {
-						$object->SetDBField('PrimaryImage', $image_path);
-						$object->SetOriginalField('PrimaryImage', $image_path);
-						$object->Fields['PrimaryImage']['original_field'] = $item_image['Name'];
-
-						$this->_loadCustomFields($object, $item_image, 0);
-					}
-					continue;
-				}
-
-				if (abs($item_image['Priority'])) {
-					// use Priority as image counter, when specified
-					$image_counter = abs($item_image['Priority']);
-				}
-
-				if (array_key_exists('Image'.$image_counter, $object->Fields)) {
-					$object->SetDBField('Image'.$image_counter, $image_path);
-					$object->SetOriginalField('Image'.$image_counter, $image_path);
-					$object->Fields['Image'.$image_counter]['original_field'] = $item_image['Name'];
-
-					$this->_loadCustomFields($object, $item_image, $image_counter);
-				}
-				$image_counter++;
-			}
-		}
-
-		/**
-		 * Saves newly uploaded images to external image table
-		 *
-		 * @param kCatDBItem $object
-		 */
-		function SaveItemImages(&$object)
-		{
-			if (!$this->Application->prefixRegistred($object->Prefix.'-img')) {
-				return ;
-			}
-
-			$table_name = $this->Application->getUnitOption('img', 'TableName');
-			$max_image_count = $this->Application->getUnitOption($object->Prefix, 'ImageCount'); // $this->Application->ConfigValue($object->Prefix.'_MaxImageCount');
-
-			$i = 0;
-			while ($i < $max_image_count) {
-				$field = $i ? 'Image'.$i : 'PrimaryImage';
-				$field_options = $object->GetFieldOptions($field);
-
-				$image_src = $object->GetDBField($field);
-				if ($image_src) {
-					if (isset($field_options['original_field'])) {
-						$key_clause = 'Name = '.$this->Conn->qstr($field_options['original_field']).' AND ResourceId = '.$object->GetDBField('ResourceId');
-
-						if ($object->GetDBField('Delete'.$field)) {
-							// if item was cloned, then new filename is in db (not in $image_src)
-							$sql = 'SELECT ThumbPath
-									FROM '.$table_name.'
-									WHERE '.$key_clause;
-							$image_src = $this->Conn->GetOne($sql);
-							if (@unlink(FULL_PATH.$image_src)) {
-								$sql = 'DELETE FROM '.$table_name.'
-										WHERE '.$key_clause;
-								$this->Conn->Query($sql);
-							}
-						}
-						else {
-							// image record found -> update
-							$fields_hash = Array (
-								'ThumbPath' => $image_src,
-							);
-							$this->_saveCustomFields($object, $fields_hash, $i);
-
-							$this->Conn->doUpdate($fields_hash, $table_name, $key_clause);
-						}
-					}
-					else {
-						// image record not found -> create
-						$fields_hash = Array (
-							'ResourceId' => $object->GetDBField('ResourceId'),
-							'Name' => $field,
-							'AltName' => $field,
-							'Enabled' => STATUS_ACTIVE,
-							'DefaultImg' => $i ? 0 : 1, // first image is primary, others not primary
-							'ThumbPath' => $image_src,
-							'Priority' => ($i == 0)? 0 : $i * (-1),
-						);
-						$this->_saveCustomFields($object, $fields_hash, $i);
-
-						$this->Conn->doInsert($fields_hash, $table_name);
-						$field_options['original_field'] = $field;
-						$object->SetFieldOptions($field, $field_options);
-					}
-				}
-				$i++;
-			}
-		}
-
-		/**
-		 * Adds ability to load custom fields along with main image field
-		 *
-		 * @param kCatDBItem $object
-		 * @param Array $fields_hash
-		 * @param int $counter 0 - primary image, other number - additional image number
-		 */
-		function _loadCustomFields(&$object, $fields_hash, $counter)
-		{
-			$field_name = $counter ? 'Image' . $counter . 'Alt' : 'PrimaryImageAlt';
-
-			$object->SetDBField($field_name, (string)$fields_hash['AltName']);
-		}
-
-		/**
-		 * Adds ability to save custom field along with main image save
-		 *
-		 * @param kCatDBItem $object
-		 * @param Array $fields_hash
-		 * @param int $counter 0 - primary image, other number - additional image number
-		 */
-		function _saveCustomFields(&$object, &$fields_hash, $counter)
-		{
-			$field_name = $counter ? 'Image' . $counter . 'Alt' : 'PrimaryImageAlt';
-
-			$fields_hash['AltName'] = (string)$object->GetDBField($field_name);
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/image_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.6.2.14
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/priority_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/priority_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/priority_helper.php	(nonexistent)
@@ -1,175 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class kPriorityHelper extends kHelper {
-
-
-		/**
-		 * Prepares options for priority dropdown
-		 *
-		 * @param kEvent $event
-		 * @param bool $is_new for newly created items add new priority to the end
-		 * @param string $constrain constrain for priority selection (if any)
-		 *
-		 */
-		function preparePriorities(&$event, $is_new = false, $constrain = '')
-		{
-			$object =& $event->getObject();
-
-			$field_options = $object->GetFieldOptions('Priority');
-			$table_name = $this->Application->getUnitOption($event->Prefix, 'TableName');
-
-			$sql = 'SELECT COUNT(*)
-					FROM '.$table_name;
-			if ($constrain) {
-				$sql .= ' WHERE '.$constrain;
-			}
-
-			if (!isset($object->Fields['OldPriority'])) {
-				$object->VirtualFields['OldPriority'] = Array('type' => 'int', 'default' => 0);
-			}
-
-			$items_count = $this->Conn->GetOne($sql);
-
-			// instanceof is not used, because PHP4 doesn't support it
-			$current_priority = is_a($object, 'kDBList') ? 0 : $object->GetDBField('Priority');
-
-			if ($is_new || $current_priority == -($items_count+1)) {
-				$items_count++;
-			}
-
-			if ($is_new) {
-				// add new item to the end of list
-				$object->SetDBField('Priority', -$items_count);
-				$object->SetDBField('OldPriority', -$items_count);
-			}
-			else {
-				$object->SetDBField('OldPriority', $current_priority);
-			}
-
-			for ($i = 1; $i <= $items_count; $i++) {
-				$field_options['options'][-$i] = $i;
-			}
-
-			$object->SetFieldOptions('Priority', $field_options);
-			// storing prioriry right after load for comparing when updating
-		}
-
-		/**
-		 * Updates priorities for changed items
-		 *
-		 * @param kEvent $event
-		 * @param Array $changes = Array (ID => Array ('parent' => ..., 'new' => ..., 'old' => ...), ...)
-		 * @param Array $new_ids = Array (temp_id => live_id)
-		 * @param string $constrain
-		 */
-		function updatePriorities(&$event, $changes, $new_ids, $constrain = '')
-		{
-			if (!$changes) {
-				// no changes to process
-				return Array ();
-			}
-			list ($id, $pair) = each($changes);
-
-			if (!$id && !array_key_exists('parent', $pair)) {
-				// adding new item without constrain -> priority stays the same
-				return Array ($id);
-			}
-
-			$id_field = $this->Application->getUnitOption($event->Prefix, 'IDField');
-			$table_name = $this->Application->getUnitOption($event->Prefix, 'TableName');
-
-			$ids = array();
-			$not_processed = array_keys($changes);
-
-			foreach ($changes as $id => $pair) {
-				array_push($ids, $id);
-				$constrain = isset($pair['parent']) ? 'ParentId = '.$pair['parent'].' AND ' : '';
-
-				if ($pair['old'] == 'new') {
-					// replace 0 with newly created item id (from $new_ids mapping)
-					$not_processed[ array_search($id, $not_processed) ] = $new_ids[$id];
-					$id = $new_ids[$id];
-
-					$sql = 'SELECT MIN(Priority)
-							FROM '.$table_name.'
-							WHERE '.$constrain.' '.$id_field.' NOT IN ('.implode(',', $not_processed).')';
-					$min_priority = (int)$this->Conn->GetOne($sql) - 1;
-
-					if ($pair['new'] < $min_priority) {
-						$pair['new'] = $min_priority;
-					}
-					$pair['old'] = $min_priority;
-				}
-
-				if ($pair['new'] < $pair['old']) {
-					$set = '	SET Priority = Priority + 1';
-					$where =' WHERE '.$constrain.'
-								Priority >= '.$pair['new'].'
-								AND
-								Priority < '.$pair['old'].'
-								AND
-								'.$id_field.' NOT IN ('.implode(',', $not_processed).')';
-				}
-				elseif ($pair['new'] > $pair['old']) {
-					$set = '	SET Priority = Priority - 1';
-					$where ='	WHERE '.$constrain.'
-								Priority > '.$pair['old'].'
-								AND
-								Priority <= '.$pair['new'].'
-								AND
-								'.$id_field.' NOT IN ('.implode(',', $not_processed).')';
-				}
-				else {
-					$set = 'SET Priority = '.$pair['new'];
-					$where = ' WHERE '.$id_field.' = '.$id;
-				}
-				$ids = array_merge($ids, $this->Conn->GetCol('SELECT '.$id_field.' FROM '.$table_name.$where));
-				$q = 'UPDATE '.$table_name.' '.$set.$where;
-				$this->Conn->Query($q);
-
-				unset( $not_processed[array_search($id, $not_processed)] );
-			}
-			return $ids;
-		}
-
-		/**
-		 * Recalculates priorities
-		 *
-		 * @param kEvent $event
-		 * @param string $constrain
-		 */
-		function recalculatePriorities(&$event, $constrain = '')
-		{
-			$id_field = $this->Application->getUnitOption($event->Prefix, 'IDField');
-			$table_name = $this->Application->getUnitOption($event->Prefix, 'TableName');
-
-			$sql = 'SELECT '.$id_field.'
-					FROM '.$table_name.
-					($constrain ? ' WHERE '.$constrain : '').'
-					ORDER BY Priority DESC';
-
-			$items = $this->Conn->GetCol($sql);
-
-			foreach ($items as $item_number => $item_id) {
-				$sql = 'UPDATE '.$table_name.'
-						SET Priority = '.-($item_number + 1).'
-						WHERE '.$id_field.' = '.$item_id;
-				$this->Conn->Query($sql);
-			}
-			return $items;
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/priority_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.2.2.4
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/template_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/template_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/template_helper.php	(nonexistent)
@@ -1,448 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	class TemplateHelper extends kHelper {
-
-		/**
-		 * parser element location information
-		 *
-		 * @var Array
-		 */
-		var $_blockLocation = Array ();
-
-		/**
-		 * Block name, that will be used
-		 *
-		 * @var string
-		 */
-		var $_blockName = '';
-
-		/**
-		 * Function name, that represents compiled block
-		 *
-		 * @var sting
-		 */
-		var $_functionName = '';
-
-		/**
-		 * Errors found during template parsing
-		 *
-		 * @var Array
-		 */
-		var $_parseErrors = Array ();
-
-		/**
-		 * Source template, that is being edited
-		 *
-		 * @var string
-		 */
-		var $_sourceTemplate = '';
-
-		var $_initMade = false;
-
-		/**
-		 * Performs init ot helper
-		 *
-		 * @param kDBItem $object
-		 */
-		function InitHelper(&$object)
-		{
-			if ($this->_initMade) {
-				return ;
-			}
-
-			define('DBG_IGNORE_FATAL_ERRORS', 1);
-
-			// 1. get block information
-			$block_info = $this->Application->GetVar('block');
-			list ($this->_blockName, $this->_functionName) = explode(':', $block_info);
-
-			$this->_parseTemplate($object);
-
-			if (array_key_exists($this->_functionName, $this->Application->Parser->ElementLocations)) {
-				$this->_blockLocation = $this->Application->Parser->ElementLocations[$this->_functionName];
-			}
-
-			$this->_initMade = true;
-		}
-
-		function _getSourceTemplate()
-		{
-			// get source template
-			$t = $this->Application->GetVar('source');
-
-			if (!$this->Application->TemplatesCache->TemplateExists($t)) {
-				$cms_handler =& $this->Application->recallObject('st_EventHandler');
-				/* @var $cms_handler StructureEventHandler */
-
-				$t = ltrim($cms_handler->GetDesignTemplate($t), '/');
-			}
-
-			$this->_sourceTemplate = $t;
-		}
-
-		function _getThemeName()
-		{
-			$theme_id = (int)$this->Application->GetVar('theme_id');
-
-			$sql = 'SELECT Name
-					FROM ' . $this->Application->getUnitOption('theme', 'TableName') . '
-					WHERE ' . $this->Application->getUnitOption('theme', 'IDField') . ' = ' . $theme_id;
-			return $this->Conn->GetOne($sql);
-		}
-
-		/**
-		 * Render source template to get parse errors OR it's element locations
-		 *
-		 * @param kDBItem $object
-		 * @param string $append
-		 * @return bool
-		 */
-		function _parseTemplate(&$object, $append = '')
-		{
-			// 1. set internal error handler to catch all parsing errors
-			$error_handlers = $this->Application->errorHandlers;
-			$this->Application->errorHandlers = Array (
-				Array (&$this, '_saveError'),
-			);
-
-			// 2. parse template
-			$this->Application->InitParser( $this->_getThemeName() ); // we have no parser when saving block content
-
-			$this->_getSourceTemplate();
-
-			// design templates have leading "/" in the beginning
-			$this->Application->Parser->Run($this->_sourceTemplate . $append);
-
-			// 3. restore original error handler
-			$this->Application->errorHandlers = $error_handlers;
-
-			if ($this->_parseErrors) {
-				if ($this->_isMainTemplate()) {
-					// 3.1. delete temporary file, that was parsed
-					$filename = $this->_getTemplateFile(false, $append . '.tpl');
-					if (!unlink($filename)) {
-						$error_file = $this->_getTemplateFile(true, $append . '.tpl');
-						$object->SetError('FileContents', 'template_delete_failed', '+Failed to delete temporary template "<strong>' . $error_file . '</strong>"');
-						return false;
-					}
-				}
-				else {
-					// 3.2. restore backup
-					if (!rename($this->_getTemplateFile(false, '.tpl.bak'), $this->_getTemplateFile(false))) {
-						$error_file = $this->_getTemplateFile(true);
-						$object->SetError('FileContents', 'template_restore_failed', '+Failed to restore template "<strong>' . $error_file . '</strong>" from backup.');
-						return false;
-					}
-				}
-
-				return false;
-			}
-
-			return true;
-		}
-
-		/**
-		 * Move elements in template and save changes, when possible
-		 *
-		 * @param Array $target_order
-		 * @return bool
-		 */
-		function moveTemplateElements($target_order)
-		{
-			// 2. parse template
-			$this->Application->InitParser(); // we have no parser when saving block content
-
-			$this->_getSourceTemplate();
-
-			$filename = $this->Application->TemplatesCache->GetRealFilename($this->_sourceTemplate) . '.tpl';
-			if (!is_writable($filename)) {
-				// we can't save changes, don't bother calculating new template contents
-				return false;
-			}
-
-			$data = file_get_contents($filename);
-
-			$line_ending = strpos($data, "\r") !== false ? "\r\n" : "\n";
-
-			// 1. get location of movable areas
-			$mask = '';
-			$start_pos = 0;
-			$elements = Array ();
-			$areas = $this->_getDivPairs($data, 'movable-area');
-			foreach ($areas as $area_index => $area) {
-				// 1.1. get locations of all movable elements inside given area
-				$area_content = substr($area['data'], $area['open_len'], -$area['close_len']);
-				$elements = array_merge($elements, $this->_getDivPairs($area_content, 'movable-element', $area_index, $area['open_pos'] + $area['open_len']));
-
-				// 1.2. prepare mask to place movable elements into (don't include movable area div ifself)
-				$mask .= "\t" . substr($data, $start_pos, $area['open_pos'] + $area['open_len'] - $start_pos) . $line_ending . "\t\t" . '#AREA' . $area_index . '#' . $line_ending;
-				$start_pos = $area['close_pos'] - $area['close_len'];
-			}
-			$mask = trim($mask . "\t" . substr($data, $area['close_pos'] - $area['close_len']));
-
-			if (!$elements) {
-				// no elements found
-				return false;
-			}
-
-			foreach ($areas as $area_index => $area) {
-				$area_content = '';
-				$target_elements = $target_order[$area_index];
-				foreach ($target_order[$area_index] as $old_location) {
-					$area_content .= $elements[$old_location]['data'] . $line_ending . "\t\t";
-				}
-
-				$mask = str_replace('#AREA' . $area_index . '#', trim($area_content), $mask);
-			}
-
-			$fp = fopen($filename, 'w');
-			fwrite($fp, $mask);
-			fclose($fp);
-
-			return true;
-		}
-
-		/**
-		 * Extracts div pairs with given class from given text
-		 *
-		 * @param string $data
-		 * @param string $class
-		 * @param int $area
-		 * @param int $offset
-		 * @return Array
-		 */
-		function _getDivPairs(&$data, $class, $area = null, $offset = 0)
-		{
-			preg_match_all('/(<div[^>]*>)|(<\/div>)/s', $data, $divs, PREG_SET_ORDER + PREG_OFFSET_CAPTURE);
-
-			$skip_count = 0;
-			$pairs = Array ();
-
-			foreach ($divs as $div) {
-				if (strpos($div[0][0], '/') === false) {
-					// opening div
-					if (strpos($div[0][0], $class) !== false) {
-						$pair = Array ('open_pos' => $div[0][1], 'open_len' => strlen($div[0][0]));
-						$skip_count = 0;
-					}
-					else {
-						$skip_count++;
-					}
-				}
-				else {
-					// closing div
-					if ($skip_count == 0) {
-						$pair['close_len'] = strlen($div[0][0]);
-						$pair['close_pos'] = $div[0][1] + $pair['close_len'];
-						$pair['data'] = substr($data, $pair['open_pos'], $pair['close_pos'] - $pair['open_pos']);
-
-						if (isset($area)) {
-							$pair['open_pos'] += $offset;
-							$pair['close_pos'] += $offset;
-							// index indicates area
-							$pairs['a' . $area . 'e' . count($pairs)] = $pair;
-						}
-						else {
-							$pairs[] = $pair;
-						}
-					}
-					else {
-						$skip_count--;
-					}
-				}
-			}
-
-			return $pairs;
-		}
-
-		/**
-		 * Returns information about parser element locations in template
-		 *
-		 * @param Array $params
-		 * @return mixed
-		 */
-		function blockInfo($info_type)
-		{
-			switch ($info_type) {
-				case 'block_name':
-					return $this->_blockName;
-					break;
-
-				case 'function_name':
-					return $this->_functionName;
-					break;
-
-				case 'start_pos':
-				case 'end_pos':
-				case 'template':
-					if (!array_key_exists($info_type, $this->_blockLocation)) {
-						// invalid block name
-						return 'invalid block name';
-					}
-
-					return $this->_blockLocation[$info_type];
-					break;
-
-				case 'template_file':
-					return $this->_getTemplateFile(true);
-					break;
-
-				case 'content':
-					$template_body = file_get_contents( $this->_getTemplateFile() );
-					$length = $this->_blockLocation['end_pos'] - $this->_blockLocation['start_pos'];
-
-					return substr($template_body, $this->_blockLocation['start_pos'], $length);
-					break;
-			}
-
-			return 'undefined';
-		}
-
-		/**
-		 * Main template being edited (parse copy, instead of original)
-		 *
-		 * @return bool
-		 */
-		function _isMainTemplate()
-		{
-			return $this->_blockLocation['template'] == $this->_sourceTemplate;
-		}
-
-		/**
-		 * Returns filename, that contains template, where block is located
-		 *
-		 * @return string
-		 */
-		function _getTemplateFile($relative = false, $extension = '.tpl')
-		{
-			$filename = $this->Application->TemplatesCache->GetRealFilename( $this->_blockLocation['template'] ) . $extension;
-
-			if ($relative) {
-				$filename = preg_replace('/^' . preg_quote(FULL_PATH, '/') . '/', '', $filename, 1);
-			}
-
-			return $filename;
-		}
-
-		/**
-		 * Saves new version of block to template, where it's located
-		 *
-		 * @param kDBItem $object
-		 */
-		function saveBlock(&$object)
-		{
-			$main_template = $this->_isMainTemplate();
-			$filename = $this->_getTemplateFile(false);
-
-			// 1. get new template content
-			$new_template_body = $this->_getNewTemplateContent($object, $filename, $lines_before);
-			if (is_bool($new_template_body) && ($new_template_body === true)) {
-				// when nothing changed -> stop processing
-				return true;
-			}
-
-			// 2. backup original template
-			if (!$main_template && !copy($filename, $filename . '.bak')) {
-				// backup failed
-				$error_file = $this->_getTemplateFile(true, '.tpl.bak');
-				$object->SetError('FileContents', 'template_backup_failed', '+Failed to create backup template "<strong>' . $error_file . '</strong>" backup.');
-				return false;
-			}
-
-			// 3. save changed template
-			$save_filename = $this->_getTemplateFile(false, $main_template ? '.tmp.tpl' : '.tpl');
-			$fp = fopen($save_filename, 'w');
-			if (!$fp) {
-				// backup template create failed OR existing template save
-				$error_file = $this->_getTemplateFile(true, $main_template ? '.tmp.tpl' : '.tpl');
-				$object->SetError('FileContents', 'template_changes_save_failed', '+Failed to save template "<strong>' . $error_file . '</strong>" changes.');
-				return false;
-			}
-			fwrite($fp, $new_template_body);
-			fclose($fp);
-
-			// 3. parse template to check for errors
-			$this->_parseTemplate($object, $main_template ? '.tmp' : '');
-
-			if ($this->_parseErrors) {
-				$error_msg = Array ();
-				foreach ($this->_parseErrors as $error_data) {
-					if (preg_match('/line ([\d]+)/', $error_data['msg'], $regs)) {
-						// another line number inside message -> patch it
-						$error_data['msg'] = str_replace('line ' . $regs[1], 'line ' . ($regs[1] - $lines_before), $error_data['msg']);
-					}
-
-					$error_msg[] = $error_data['msg'] . ' at line ' . ($error_data['line'] - $lines_before);
-				}
-
-				$object->SetError('FileContents', 'template_syntax_error', '+Template syntax errors:<br/>' . implode('<br/>', $error_msg));
-				return false;
-			}
-
-			if ($main_template) {
-				// 4.1. replace original file with temporary
-				if (!rename($this->_getTemplateFile(false, '.tmp.tpl'), $filename)) {
-					// failed to save new content to original template
-					$error_file = $this->_getTemplateFile(true);
-					$object->SetError('FileContents', 'template_save_failed', '+Failed to save template "<strong>' . $error_file . '</strong>".');
-					return false;
-				}
-			}
-			else {
-				// 4.2. delete backup
-				unlink( $this->_getTemplateFile(false, '.tpl.bak') );
-			}
-
-			return true;
-		}
-
-		/**
-		 * Returns new template content of "true", when nothing is changed
-		 *
-		 * @param kDBItem $object
-		 * @param string $filename
-		 * @param int $lines_before
-		 * @return mixed
-		 */
-		function _getNewTemplateContent(&$object, $filename, &$lines_before)
-		{
-			$new_content = $object->GetDBField('FileContents');
-
-			$template_body = file_get_contents($filename);
-			$lines_before = substr_count(substr($template_body, 0,  $this->_blockLocation['start_pos']), "\n");
-
-			$new_template_body = 	substr($template_body, 0,  $this->_blockLocation['start_pos']) .
-									$new_content .
-									substr($template_body, $this->_blockLocation['end_pos']);
-
-			return crc32($template_body) == crc32($new_template_body) ? true : $new_template_body;
-		}
-
-		function _saveError($errno, $errstr, $errfile, $errline, $errcontext)
-		{
-			if ($errno != E_USER_ERROR) {
-				// ignore all minor errors, except fatals from parser
-				return true;
-			}
-
-			/*if (defined('E_STRICT') && ($errno == E_STRICT)) {
-				// always ignore strict errors here (specially when not in debug mode)
-				return true;
-			}*/
-
-			$this->_parseErrors[] = Array ('msg' => $errstr, 'file' => $errfile, 'line' => $errline);
-			return true;
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/template_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.2.5
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/mod_rewrite_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/mod_rewrite_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/mod_rewrite_helper.php	(nonexistent)
@@ -1,921 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class kModRewriteHelper extends kHelper {
-
-		/**
-		 * Holds a refererence to httpquery
-		 *
-		 * @var kHttpQuery
-		 */
-		var $HTTPQuery = null;
-
-		/**
-		 * Parts found during url parsing
-		 *
-		 * @var Array
-		 */
-		var $_partsFound = Array ();
-
-		/**
-		 * Category item prefix, that was found
-		 *
-		 * @var string
-		 */
-		var $_modulePrefix = false;
-
-		/**
-		 * Constructor of kModRewriteHelper class
-		 *
-		 * @return kModRewriteHelper
-		 */
-		function kModRewriteHelper()
-		{
-			parent::kHelper();
-
-			$this->HTTPQuery =& $this->Application->recallObject('HTTPQuery');
-		}
-
-		function processRewriteURL()
-		{
-			$passed = Array ();
-			$url = $this->HTTPQuery->Get('_mod_rw_url_');
-			if (substr($url, -5) == '.html') {
-				$url = substr($url, 0, strlen($url) - 5);
-			}
-
-			$restored = false;
-			$sql = 'SELECT Data, Cached
-					FROM ' . TABLE_PREFIX . 'Cache
-					WHERE VarName = "mod_rw_' . md5($url) . '"';
-			$cache = $this->Conn->GetRow($sql);
-
-			if (false && $cache && $cache['Cached'] > 0) {
-				// not used for now
-				$cache = unserialize($cache['Data']);
-				$vars = $cache['vars'];
-				$passed = $cache['passed'];
-				$restored = true;
-			}
-			else {
-				$vars = $this->parseRewriteURL($url);
-				$passed = $vars['pass']; // also used in bottom of this method
-				unset($vars['pass']);
-
-				$cache = Array ('vars' => $vars, 'passed' => $passed);
-
-				$fields_hash = Array (
-					'VarName' => 'mod_rw_' . md5($url),
-					'Data' => serialize($cache),
-					'Cached' => adodb_mktime(),
-				);
-				$this->Conn->doInsert($fields_hash, TABLE_PREFIX . 'Cache', 'REPLACE');
-
-				if (array_key_exists('t', $this->HTTPQuery->Post) && $this->HTTPQuery->Post['t']) {
-					// template from POST overrides template from URL.
-					$vars['t'] = $this->HTTPQuery->Post['t'];
-					if (isset($vars['is_virtual']) && $vars['is_virtual']) {
-						$vars['m_cat_id'] = 0; // this is virtual template category (for Proj-CMS)
-					}
-				}
-
-				unset($vars['is_virtual']);
-			}
-
-			foreach ($vars as $name => $value) {
-				$this->HTTPQuery->Set($name,$value);
-			}
-
-//			if ($restored) {
-				$this->InitAll();
-//			}
-
-			$this->HTTPQuery->finalizeParsing($passed);
-		}
-
-		function parseRewriteURL($url)
-		{
-			$sql = 'SELECT Data, Cached
-					FROM ' . TABLE_PREFIX . 'Cache
-					WHERE VarName = "mod_rw_' . md5($url) . '"';
-			$vars = $this->Conn->GetRow($sql);
-
-			if (false && $vars && $vars['Cached'] > 0) {
-				// not used for now
-				$vars = unserialize($menu['Data']);
-				return $vars;
-			}
-
-			$vars = Array ('pass' => Array ('m'));
-			$url_parts = $url ? explode('/', trim($url, '/')) : Array ();
-
-			if (($this->HTTPQuery->Get('rewrite') == 'on') || !$url_parts) {
-				$this->_setDefaultValues($vars);
-			}
-
-			if (!$url_parts) {
-				$this->InitAll();
-				$vars['t'] = $this->HTTPQuery->getDefaultTemplate('');
-
-				return $vars;
-			}
-			else {
-				$vars['t'] = '';
-			}
-
-			$this->_parseLanguage($url_parts, $vars);
-			$this->_parseTheme($url_parts, $vars);
-			$this->_setDefaultPages($vars);
-
-			if ($this->_parsePage($url_parts, $vars)) {
-				$this->_partsFound[] = 'parsePage';
-			}
-
-			// http://site-url/<language>/<theme>/<category>[_<category_page>]/<template>/<module_page>
-			// http://site-url/<language>/<theme>/<category>[_<category_page>]/<module_page> (category-based section template)
-			// http://site-url/<language>/<theme>/<category>[_<category_page>]/<template>/<module_item>
-			// http://site-url/<language>/<theme>/<category>[_<category_page>]/<module_item> (category-based detail template)
-			// http://site-url/<language>/<theme>/<rl_injections>/<category>[_<category_page>]/<rl_part> (customized url)
-
-			if ( $this->processRewriteListeners($url_parts, $vars) ) {
-				return $vars;
-			}
-
-			if ($this->_parsePhisycalTemplate($url_parts, $vars)) {
-				$this->_partsFound[] = 'parsePhisycalTemplate';
-			}
-
-			if (($this->_modulePrefix === false) && in_array('parseCategory', $this->_partsFound)) {
-				// no item found, but category found -> module index page
-				foreach ($this->Application->ModuleInfo as $module_name => $info) {
-					// no idea what module we are talking about, so pass info form all modules
-					$vars['pass'][] = $info['Var'];
-				}
-
-				return $vars;
-			}
-
-			if (!$this->_partsFound) {
-				$not_found = $this->Application->ConfigValue('ErrorTemplate');
-				$vars['t'] = $not_found ? $not_found : 'error_notfound';
-
-				$themes_helper =& $this->Application->recallObject('ThemesHelper');
-				/* @var $themes_helper kThemesHelper */
-
-				$vars['m_cat_id'] = $themes_helper->getPageByTemplate($vars['t']);
-
-				header('HTTP/1.0 404 Not Found');
-			}
-
-			return $vars;
-		}
-
-		function InitAll()
-		{
-			$this->Application->VerifyLanguageId();
-			$this->Application->Phrases->Init('phrases');
-			$this->Application->VerifyThemeId();
-		}
-
-		/**
-		 * Processes url using rewrite listeners
-		 *
-		 * @param Array $url_parts
-		 * @param Array $vars
-		 * @return bool
-		 */
-		function processRewriteListeners(&$url_parts, &$vars)
-		{
-			$this->initRewriteListeners();
-
-			foreach ($this->Application->RewriteListeners as $prefix => $listener) {
-				$listener_result = $listener[0]->$listener[1](REWRITE_MODE_PARSE, $prefix, $vars, $url_parts);
-				if ($listener_result === false) {
-					// will not proceed to other methods
-					return true;
-				}
-			}
-
-			// will proceed to other methods
-			return false;
-		}
-
-		/**
-		 * Parses real template name from url
-		 *
-		 * @param Array $url_parts
-		 * @param Array $vars
-		 * @return bool
-		 */
-		function _parsePhisycalTemplate($url_parts, &$vars)
-		{
-			if (!$url_parts) {
-				return false;
-			}
-
-			do {
-				$template_path = implode('/', $url_parts);
-
-				$t_parts['path'] = dirname($template_path) == '.' ? '' : '/' . dirname($template_path);
-				$t_parts['file'] = basename($template_path);
-
-				$sql = 'SELECT FileId
-						FROM ' . TABLE_PREFIX . 'ThemeFiles
-						WHERE (FilePath = ' . $this->Conn->qstr($t_parts['path']) . ') AND (FileName = ' . $this->Conn->qstr($t_parts['file'] . '.tpl') . ')';
-				$template_found = $this->Conn->GetOne($sql);
-
-				if (!$template_found) {
-					array_shift($url_parts);
-				}
-			} while (!$template_found && $url_parts);
-
-			if ($template_found) {
-				$vars['t'] = $template_path;
-				return true;
-			}
-
-			return false;
-		}
-
-		/**
-		 * Parses category part of url, build main part of url
-		 *
-		 * @param int $rewrite_mode Mode in what rewrite listener was called. Possbile two modes: REWRITE_MODE_BUILD, REWRITE_MODE_PARSE.
-		 * @param string $prefix Prefix, that listener uses for system integration
-		 * @param Array $params Params, that are used for url building or created during url parsing.
-		 * @param Array $url_parts Url parts to parse (only for parsing).
-		 * @param bool $keep_events Keep event names in resulting url (only for building).
-		 * @return bool|string|Array Return true to continue to next listener; return false (when building) not to rewrite given prefix; return false (when parsing) to stop processing at this listener.
-		 */
-		function MainRewriteListener($rewrite_mode = REWRITE_MODE_BUILD, $prefix, &$params, &$url_parts, $keep_events = false)
-		{
-			if ($rewrite_mode == REWRITE_MODE_BUILD) {
-				return $this->_buildMainUrl($prefix, $params, $keep_events);
-			}
-
-			if ( $this->_parseFriendlyUrl($url_parts, $params) ) {
-				// friendly urls work like exact match only!
-				return false;
-			}
-
-			if ($this->_parseCategory($url_parts, $params)) {
-				$this->_partsFound[] = 'parseCategory';
-			}
-
-			return true;
-		}
-
-		/**
-		 * Build main part of every url
-		 *
-		 * @param string $prefix_special
-		 * @param Array $params
-		 * @param bool $keep_events
-		 * @return string
-		 */
-		function _buildMainUrl($prefix_special, &$params, $keep_events)
-		{
-			$ret = '';
-			list ($prefix) = explode('.', $prefix_special);
-
-			$processed_params = $this->getProcessedParams($prefix_special, $params, $keep_events);
-			if ($processed_params === false) {
-				return '';
-			}
-
-			// add language
-			$default_language_id = $this->Application->GetDefaultLanguageId();
-			if ($processed_params['m_lang'] && ($processed_params['m_lang'] != $default_language_id)) {
-				$language_name = $this->Application->getCache('language_names', $processed_params['m_lang']);
-				if ($language_name === false) {
-					$sql = 'SELECT PackName
-							FROM ' . TABLE_PREFIX . 'Language
-							WHERE LanguageId = ' . $processed_params['m_lang'];
-					$language_name = $this->Conn->GetOne($sql);
-
-					$this->Application->setCache('language_names', $processed_params['m_lang'], $language_name);
-				}
-
-				$ret .= $language_name . '/';
-			}
-
-			// add theme
-			$default_theme_id = $this->Application->GetDefaultThemeId();
-			if ($processed_params['m_theme'] && ($processed_params['m_theme'] != $default_theme_id)) {
-				$theme_name = $this->Application->getCache('theme_names', $processed_params['m_theme']);
-				if ($theme_name === false) {
-					$sql = 'SELECT Name
-							FROM ' . TABLE_PREFIX . 'Theme
-							WHERE ThemeId = ' . $processed_params['m_theme'];
-					$theme_name = $this->Conn->GetOne($sql);
-
-					$this->Application->setCache('theme_names', $processed_params['m_theme'], $theme_name);
-
-				}
-
-				$ret .= $theme_name . '/';
-			}
-
-			// inject custom url parts made by other rewrite listeners just after language/theme url parts
-			$ret .= implode('/', $params['inject_parts']) . '/';
-
-			// add category
-			if ($processed_params['m_cat_id'] > 0 && $params['pass_category']) {
-				$category_filename = $this->Application->getFilename('c', $processed_params['m_cat_id']);
-
-				preg_match('/^Content\/(.*)/i', $category_filename, $regs);
-
-				if ($regs) {
-					$template = array_key_exists('t', $params) ? $params['t'] : false;
-
-					if (strtolower($regs[1]) == strtolower($template)) {
-						// we could have category path like "Content/<template_path>" in this case remove template
-						$params['pass_template'] = false;
-					}
-
-					$ret .= $regs[1] . '/';
-				}
-
-				$params['category_processed'] = true;
-			}
-
-			// reset category page
-			$force_page_adding = false;
-			if (array_key_exists('reset', $params) && $params['reset']) {
-				unset($params['reset']);
-
-				if ($processed_params['m_cat_id']) {
-					$processed_params['m_cat_page'] = 1;
-					$force_page_adding = true;
-				}
-			}
-
-			if ((array_key_exists('category_processed', $params) && $params['category_processed'] && ($processed_params['m_cat_page'] > 1)) || $force_page_adding) {
-				// category name was added before AND category page number found
-				$ret = rtrim($ret, '/') . '_' . $processed_params['m_cat_page'] . '/';
-			}
-
-			$template = array_key_exists('t', $params) ? $params['t'] : false;
-			$category_template = $processed_params['m_cat_id'] ? $this->Application->getCache('category_designs', $processed_params['m_cat_id']) : '';
-
-			if ((strtolower($template) == '__default__') && ($processed_params['m_cat_id'] == 0)) {
-				// for "Home" category set template to index when not set
-				$template = 'index';
-			}
-
-			// remove template from url if it is category index cached template
-			if (($template == $category_template) || (mb_strtolower($template) == '__default__')) {
-				// given template is also default template for this category or '__default__' given
-				$params['pass_template'] = false;
-			}
-
-			if ($template && $params['pass_template']) {
-				$ret .= $template . '/';
-			}
-
-			return mb_strtolower( rtrim($ret, '/') );
-		}
-
-		/**
-		 * Gets language part from url
-		 *
-		 * @param Array $url_parts
-		 * @param Array $vars
-		 * @return bool
-		 */
-		function _parseLanguage(&$url_parts, &$vars)
-		{
-			if (!$url_parts) {
-				return false;
-			}
-
-			$url_part = array_shift($url_parts);
-
-			$sql = 'SELECT LanguageId
-					FROM ' . TABLE_PREFIX . 'Language
-					WHERE LOWER(PackName) = ' . $this->Conn->qstr($url_part) . ' AND Enabled = 1';
-			$language_id = $this->Conn->GetOne($sql);
-
-			$this->Application->Phrases = new PhrasesCache();
-			if ($language_id) {
-				$vars['m_lang'] = $language_id;
-				return true;
-			}
-
-			array_unshift($url_parts, $url_part);
-
-			return false;
-		}
-
-		/**
-		 * Gets theme part from url
-		 *
-		 * @param Array $url_parts
-		 * @param Array $vars
-		 * @return bool
-		 */
-		function _parseTheme(&$url_parts, &$vars)
-		{
-			if (!$url_parts) {
-				return false;
-			}
-
-			$url_part = array_shift($url_parts);
-
-			$sql = 'SELECT ThemeId
-					FROM ' . TABLE_PREFIX . 'Theme
-					WHERE LOWER(Name) = ' . $this->Conn->qstr($url_part) . ' AND Enabled = 1';
-			$theme_id = $this->Conn->GetOne($sql);
-			if ($theme_id) {
-				$vars['m_theme'] = $theme_id;
-				return true;
-			}
-
-			array_unshift($url_parts, $url_part);
-
-			return false;
-		}
-
-		/**
-		 * Checks if whole url_parts matches a whole In-CMS page
-		 *
-		 * @param array $url_parts
-		 * @return boolean
-		 */
-		function _parseFriendlyUrl($url_parts, &$vars)
-		{
-			if (!$url_parts) {
-				return false;
-			}
-
-			$sql = 'SELECT CategoryId, NamedParentPath
-					FROM ' . TABLE_PREFIX . 'Category
-					WHERE FriendlyURL = ' . $this->Conn->qstr(implode('/', $url_parts));
-
-			$friendly = $this->Conn->GetRow($sql);
-			if ($friendly) {
-				$vars['m_cat_id'] = $friendly['CategoryId'];
-				$vars['t'] = preg_replace('/^Content\//i', '', $friendly['NamedParentPath']);
-				return true;
-			}
-
-			return false;
-		}
-
-		/**
-		 * Set's 1st page for all modules (will be used when not passed in url)
-		 *
-		 * @param Array $vars
-		 */
-		function _setDefaultPages(&$vars)
-		{
-			// set 1st page for all rewrite listeners, since we don't know which of them will need it
-			foreach ($this->Application->RewriteListeners as $prefix => $listener) {
-				$vars[$prefix . '_Page'] = 1;
-			}
-		}
-
-		/**
-		 * Set's page (when found) to all modules
-		 *
-		 * @param Array $url_parts
-		 * @param Array $vars
-		 * @return string
-		 */
-		function _parsePage(&$url_parts, &$vars)
-		{
-			if (!$url_parts) {
-				return false;
-			}
-
-			$page_number = end($url_parts);
-			if (!is_numeric($page_number)) {
-				return false;
-			}
-
-			// set module pages for all modules, since we don't know which module will need it
-			foreach ($this->Application->RewriteListeners as $prefix => $listener) {
-				$vars[$prefix . '_id'] = 0;
-				$vars[$prefix . '_Page'] = $page_number;
-			}
-
-			array_pop($url_parts);
-
-			return true;
-		}
-
-		/**
-		 * Extracts category part from url
-		 *
-		 * @param Array $url_parts
-		 * @param Array $vars
-		 * @return bool
-		 */
-		function _parseCategory($url_parts, &$vars)
-		{
-			if (!$url_parts) {
-				return false;
-			}
-
-			$res = false;
-			$url_part = array_shift($url_parts);
-
-			$category_id = 0;
-			$last_category_info = false;
-			$category_path = $url_part == 'content' ? '' : 'content';
-
-			do {
-				$category_path = trim($category_path . '/' . $url_part, '/');
-				// bb_<topic_id> -> forums/bb_2
-				if ( !preg_match('/^bb_[\d]+$/', $url_part) && preg_match('/(.*)_([\d]+)$/', $category_path, $rets) ) {
-					$category_path = $rets[1];
-					$vars['m_cat_page'] = $rets[2];
-				}
-
-				$sql = 'SELECT CategoryId, IsIndex, NamedParentPath
-						FROM ' . TABLE_PREFIX . 'Category
-						WHERE Status IN (1,4) AND (LOWER(NamedParentPath) = ' . $this->Conn->qstr($category_path) . ')';
-				$category_info = $this->Conn->GetRow($sql);
-
-				if ($category_info !== false) {
-					$last_category_info = $category_info;
-					$url_part = array_shift($url_parts);
-					$res = true;
-				}
-			} while ($category_info !== false && $url_part);
-
-			if ($last_category_info) {
-				// IsIndex = 2 is a Container-only page, meaning it should go to index-page child
-				if ($last_category_info['IsIndex'] == 2) {
-					$sql = 'SELECT CategoryId, NamedParentPath
-							FROM ' . TABLE_PREFIX . 'Category
-							WHERE ParentId = ' . $last_category_info['CategoryId'] . ' AND IsIndex = 1';
-					$category_info = $this->Conn->GetRow($sql);
-
-					if ($category_info) {
-						// when index sub-page is found use it, otherwise use container page
-						$last_category_info = $category_info;
-					}
-				}
-
-				// 1. Set virtual page as template, this will be replaced to physical template later in kApplication::Run.
-				// 2. Don't set CachedTemplate field as template here, because we will loose original page associated with it's cms blocks!
-				$vars['t'] = strtolower( preg_replace('/^Content\//i', '', $last_category_info['NamedParentPath']) );
-
-				$vars['m_cat_id'] = $last_category_info['CategoryId'];
-				$vars['is_virtual'] = true; // for template from POST, strange code there!
-			}
-			else {
-				$vars['m_cat_id'] = 0;
-			}
-
-			return $res;
-		}
-
-		/**
-		 * Builds/parses category item part of url
-		 *
-		 * @param int $rewrite_mode Mode in what rewrite listener was called. Possbile two modes: REWRITE_MODE_BUILD, REWRITE_MODE_PARSE.
-		 * @param string $prefix Prefix, that listener uses for system integration
-		 * @param Array $params Params, that are used for url building or created during url parsing.
-		 * @param Array $url_parts Url parts to parse (only for parsing).
-		 * @param bool $keep_events Keep event names in resulting url (only for building).
-		 * @return bool Return true to continue to next listener; return false (when building) not to rewrite given prefix; return false (when parsing) to stop processing at this listener.
-		 */
-		function CategoryItemRewriteListener($rewrite_mode = REWRITE_MODE_BUILD, $prefix, &$params, &$url_parts, $keep_events = false)
-		{
-			static $parsed = false;
-
-			if ($rewrite_mode == REWRITE_MODE_BUILD) {
-				return $this->_buildCategoryItemUrl($prefix, $params, $keep_events);
-			}
-
-			if (!$parsed) {
-				$this->_modulePrefix = $this->_parseCategoryItemUrl($url_parts, $params);
-				if ($this->_modulePrefix !== false) {
-					$params['pass'][] = $this->_modulePrefix;
-					$this->_partsFound[] = 'parseCategoryItemUrl';
-				}
-
-				$parsed = true;
-			}
-
-			return true;
-		}
-
-		/**
-		 * Build category teim part of url
-		 *
-		 * @param string $prefix_special
-		 * @param Array $params
-		 * @param bool $keep_events
-		 * @return string
-		 */
-		function _buildCategoryItemUrl($prefix_special, &$params, $keep_events)
-		{
-			$ret = '';
-			list ($prefix) = explode('.', $prefix_special);
-			$processed_params = $this->getProcessedParams($prefix_special, $params, $keep_events);
-
-			if ($processed_params === false) {
-				return '';
-			}
-
-			if ($processed_params[$prefix_special . '_id']) {
-				// this allows to fill 3 cache records with one query (see this method for details)
-				$category_id = array_key_exists('m_cat_id', $params) ? $params['m_cat_id'] : $this->Application->GetVar('m_cat_id');
-				$category_filename = $this->Application->getFilename('c', $category_id);
-
-				// if template is also item template of category, then remove template
-				$template = array_key_exists('t', $params) ? $params['t'] : false;
-
-				$item_template = $this->GetItemTemplate($category_id, $prefix);
-
-				if ($template == $item_template || strtolower($template) == '__default__') {
-					// given template is also default template for this category item or '__default__' given
-					$params['pass_template'] = false;
-				}
-
-				// get item's filename
-				if ($prefix == 'bb') {
-					$ret .= 'bb_' . $processed_params[$prefix_special . '_id'] . '/';
-				}
-				else {
-					$filename = $this->Application->getFilename($prefix, $processed_params[$prefix_special . '_id'], $category_id);
-					if ($filename !== false) {
-						$ret .= $filename . '/';
-					}
-				}
-			} else {
-				if ($processed_params[$prefix_special . '_Page'] == 1) {
-					// when printing category items and we are on the 1st page -> there is no information about
-					// category item prefix and $params['pass_category'] will not be added automatically
-					$params['pass_category'] = true;
-				}
-				else {
-					$ret .= $processed_params[$prefix_special . '_Page'] . '/';
-				}
-			}
-
-			return mb_strtolower( rtrim($ret, '/') );
-		}
-
-		/**
-		 * Sets template and id, corresponding to category item given in url
-		 *
-		 * @param Array $url_parts
-		 * @param Array $vars
-		 * @return bool|string
-		 */
-		function _parseCategoryItemUrl(&$url_parts, &$vars)
-		{
-			if (!$url_parts) {
-				return false;
-			}
-
-			$item_filename = end($url_parts);
-			if (is_numeric($item_filename)) {
-				// this page, don't process here
-				return false;
-			}
-
-			if (preg_match('/^bb_([\d]+)/', $item_filename, $regs)) {
-				// process topics separatly, because they don't use item filenames
-				array_pop($url_parts);
-
-				return $this->_parseTopicUrl($regs[1], $vars);
-			}
-
-			// locating the item in CategoryItems by filename to detect its ItemPrefix and its category ParentPath
-			$sql = 'SELECT ci.ItemResourceId, ci.ItemPrefix, c.ParentPath, ci.CategoryId
-					FROM ' . TABLE_PREFIX . 'CategoryItems AS ci
-					LEFT JOIN ' . TABLE_PREFIX . 'Category AS c ON c.CategoryId = ci.CategoryId
-					WHERE (ci.CategoryId = ' . $vars['m_cat_id'] . ') AND (ci.Filename = ' . $this->Conn->qstr($item_filename) . ')';
-			$cat_item = $this->Conn->GetRow($sql);
-
-			if ($cat_item !== false) {
-				// item found
-				$module_prefix = $cat_item['ItemPrefix'];
-				$item_template = $this->GetItemTemplate($cat_item, $module_prefix);
-
-				// converting ResourceId to correpsonding Item id
-				$module_config = $this->Application->getUnitOptions($module_prefix);
-
-				$sql = 'SELECT ' . $module_config['IDField'] . '
-						FROM ' . $module_config['TableName'] . '
-					 	WHERE ResourceId = ' . $cat_item['ItemResourceId'];
-				$item_id = $this->Conn->GetOne($sql);
-
-				array_pop($url_parts);
-
-				if ($item_id) {
-					if ($item_template) {
-						// when template is found in category -> set it
-						$vars['t'] = $item_template;
-					}
-
-					// we have category item id
-					$vars[$module_prefix . '_id'] = $item_id;
-
-					return $module_prefix;
-				}
-			}
-
-			return false;
-		}
-
-		/**
-		 * Set's template and topic id corresponding to topic given in url
-		 *
-		 * @param int $topic_id
-		 * @param Array $vars
-		 * @return string
-		 */
-		function _parseTopicUrl($topic_id, &$vars)
-		{
-			$sql = 'SELECT c.ParentPath, c.CategoryId
-					FROM ' . TABLE_PREFIX . 'Category AS c
-					WHERE c.CategoryId = ' . $vars['m_cat_id'];
-			$cat_item = $this->Conn->GetRow($sql);
-
-			$item_template = $this->GetItemTemplate($cat_item, 'bb');
-
-			if ($item_template) {
-				$vars['t'] = $item_template;
-			}
-
-			$vars['bb_id'] = $topic_id;
-
-			return 'bb';
-		}
-
-		/**
-		 * Returns enviroment variable values for given prefix (uses directly given params, when available)
-		 *
-		 * @param string $prefix_special
-		 * @param Array $params
-		 * @param bool $keep_events
-		 * @return Array
-		 */
-		function getProcessedParams($prefix_special, &$params, $keep_events)
-		{
-			list ($prefix) = explode('.', $prefix_special);
-
-			$query_vars = $this->Application->getUnitOption($prefix, 'QueryString');
-			if (!$query_vars) {
-				// given prefix doesn't use "env" variable to pass it's data
-				return false;
-			}
-
-			$event_key = array_search('event', $query_vars);
-			if ($event_key) {
-				// pass through event of this prefix
-				unset($query_vars[$event_key]);
-			}
-
-			if (array_key_exists($prefix_special . '_event', $params) && !$params[$prefix_special . '_event']) {
-				// if empty event, then remove it from url
-				unset( $params[$prefix_special . '_event'] );
-			}
-
-			// if pass events is off and event is not implicity passed
-			if (!$keep_events && !array_key_exists($prefix_special . '_event', $params)) {
-				unset($params[$prefix_special . '_event']); // remove event from url if requested
-				//otherwise it will use value from get_var
-			}
-
-			$processed_params = Array ();
-			foreach ($query_vars as $index => $var_name) {
-				// if value passed in params use it, otherwise use current from application
-				$var_name = $prefix_special . '_' . $var_name;
-				$processed_params[$var_name] = array_key_exists($var_name, $params) ? $params[$var_name] : $this->Application->GetVar($var_name);
-				if (array_key_exists($var_name, $params)) {
-					unset($params[$var_name]);
-				}
-			}
-
-			return $processed_params;
-		}
-
-		/**
-		 * Returns module item details template specified in given category custom field for given module prefix
-		 *
-		 * @param int|Array $category
-		 * @param string $module_prefix
-		 * @return string
-		 */
-		function GetItemTemplate($category, $module_prefix)
-		{
-			$cache_key = serialize($category) . '_' . $module_prefix;
-
-			$cached_value = $this->Application->getCache(__CLASS__ . __FUNCTION__, $cache_key);
-			if ($cached_value !== false) {
-				return $cached_value;
-			}
-
-			if (!is_array($category)) {
-				if ($category == 0) {
-					$category = $this->Application->findModule('Var', $module_prefix, 'RootCat');
-				}
-				$sql = 'SELECT c.ParentPath, c.CategoryId
-						FROM ' . TABLE_PREFIX . 'Category AS c
-						WHERE c.CategoryId = ' . $category;
-				$category = $this->Conn->GetRow($sql);
-			}
-			$parent_path = implode(',',explode('|', substr($category['ParentPath'], 1, -1)));
-
-			// item template is stored in module' system custom field - need to get that field Id
-			$item_template_field_id = $this->_getItemTemplateCustomField($module_prefix);
-
-			// looking for item template through cats hierarchy sorted by parent path
-			$query = '	SELECT ccd.l1_cust_' . $item_template_field_id . ',
-									FIND_IN_SET(c.CategoryId, ' . $this->Conn->qstr($parent_path) . ') AS Ord1,
-									c.CategoryId, c.Name, ccd.l1_cust_' . $item_template_field_id . '
-						FROM ' . TABLE_PREFIX . 'Category AS c
-						LEFT JOIN ' . TABLE_PREFIX . 'CategoryCustomData AS ccd
-						ON ccd.ResourceId = c.ResourceId
-						WHERE c.CategoryId IN (' . $parent_path . ') AND ccd.l1_cust_' . $item_template_field_id . ' != \'\'
-						ORDER BY FIND_IN_SET(c.CategoryId, ' . $this->Conn->qstr($parent_path) . ') DESC';
-			$item_template = $this->Conn->GetOne($query);
-
-			$this->Application->setCache(__CLASS__ . __FUNCTION__, $cache_key, $item_template);
-
-			return $item_template;
-		}
-
-		/**
-		 * Loads all registered rewrite listeners, so they could be quickly accessed later
-		 *
-		 */
-		function initRewriteListeners()
-		{
-			static $init_done = false;
-
-			if ($init_done) {
-				return ;
-			}
-
-			foreach ($this->Application->RewriteListeners as $prefix => $listener_data) {
-				list ($listener_prefix, $listener_method) = explode(':', $listener_data['listener']);
-				$listener =& $this->Application->recallObject($listener_prefix);
-
-				$this->Application->RewriteListeners[$prefix] = Array (&$listener, $listener_method);
-			}
-
-			$init_done = true;
-		}
-
-		/**
-		 * Returns category custom field id, where given module prefix item template name is stored
-		 *
-		 * @param string $module_prefix
-		 * @return int
-		 */
-		function _getItemTemplateCustomField($module_prefix)
-		{
-			$cached_value = $this->Application->getCache(__CLASS__ . __FUNCTION__, $module_prefix);
-			if ($cached_value !== false) {
-				return $cached_value;
-			}
-
-			$sql = 'SELECT CustomFieldId
-				 	FROM ' . TABLE_PREFIX . 'CustomField
-				 	WHERE FieldName = ' . $this->Conn->qstr($module_prefix . '_ItemTemplate');
-			$item_template_field_id = $this->Conn->GetOne($sql);
-
-			$this->Application->setCache(__CLASS__ . __FUNCTION__, $module_prefix, $item_template_field_id);
-
-			return $item_template_field_id;
-		}
-
-		/**
-		 * Sets default parsed values before actual url parsing
-		 *
-		 * @param Array $vars
-		 */
-		function _setDefaultValues(&$vars)
-		{
-			$defaults = Array ('m_cat_id' => 0, 'm_cat_page' => 1, 'm_opener' => 's', 't' => 'index');
-
-			foreach ($defaults as $default_key => $default_value) {
-				// bug: null is never returned
-				if ($this->HTTPQuery->Get($default_key) == null) {
-					$vars[$default_key] = $default_value;
-				}
-			}
-		}
-	}
-?>
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/mod_rewrite_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.11.2.9
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/language_import_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/language_import_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/language_import_helper.php	(nonexistent)
@@ -1,599 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	define('LANG_OVERWRITE_EXISTING', 1);
-	define('LANG_SKIP_EXISTING', 2);
-
-	class LanguageImportHelper extends kHelper {
-
-		/**
-		 * Current Language in import
-		 *
-		 * @var LanguagesItem
-		 */
-		var $lang_object = null;
-
-		/**
-		 * Current user's IP address
-		 *
-		 * @var string
-		 */
-		var $ip_address = '';
-
-		/**
-		 * Event type + name mapping to id (from system)
-		 *
-		 * @var Array
-		 */
-		var $events_hash = Array ();
-
-		/**
-		 * Language pack import mode
-		 *
-		 * @var int
-		 */
-		var $import_mode = LANG_SKIP_EXISTING;
-
-		/**
-		 * Language IDs, that were imported
-		 *
-		 * @var Array
-		 */
-		var $_languages = Array ();
-
-		/**
-		 * Temporary table names to perform import on
-		 *
-		 * @var Array
-		 */
-		var $_tables = Array ();
-
-		/**
-		 * Phrase types allowed for import/export operations
-		 *
-		 * @var Array
-		 */
-		var $phrase_types_allowed = Array ();
-
-		/**
-		 * Encoding, used for language pack exporting
-		 *
-		 * @var string
-		 */
-		var $_exportEncoding = 'base64';
-
-		/**
-		 * Debug language pack import process
-		 *
-		 * @var bool
-		 */
-		var $_debugMode = false;
-
-		function LanguageImportHelper()
-		{
-			parent::kHelper();
-
-			// "core/install/english.lang", phrase count: 3318, xml parse time on windows: 10s, insert time: 0.058s
-			set_time_limit(0);
-			ini_set('memory_limit', -1);
-
-			$this->lang_object =& $this->Application->recallObject('lang.import', null, Array ('skip_autoload' => true));
-
-			if (!(defined('IS_INSTALL') && IS_INSTALL)) {
-				// perform only, when not in installation mode
-				$this->_updateEventsCache();
-			}
-
-			$this->ip_address = getenv('HTTP_X_FORWARDED_FOR') ? getenv('HTTP_X_FORWARDED_FOR') : getenv('REMOTE_ADDR');
-
-//			$this->_debugMode = $this->Application->isDebugMode();
-		}
-
-		/**
-		 * Performs import of given language pack (former Parse method)
-		 *
-		 * @param string $filename
-		 * @param string $phrase_types
-		 * @param Array $module_ids
-		 * @param int $import_mode
-		 * @return bool
-		 */
-		function performImport($filename, $phrase_types, $module_ids, $import_mode = LANG_SKIP_EXISTING)
-		{
-			// define the XML parsing routines/functions to call based on the handler path
-			if (!file_exists($filename) || !$phrase_types /*|| !$module_ids*/) {
-				return false;
-			}
-
-			if ($this->_debugMode) {
-				$start_time = getmicrotime();
-				$this->Application->Debugger->appendHTML(__CLASS__ . '::' . __FUNCTION__ . '("' . $filename . '")');
-			}
-
-			if (defined('IS_INSTALL') && IS_INSTALL) {
-				// new events could be added during module upgrade
-				$this->_updateEventsCache();
-			}
-
-			$this->_initImportTables();
-
-			$phrase_types = explode('|', substr($phrase_types, 1, -1) );
-//			$module_ids = explode('|', substr($module_ids, 1, -1) );
-
-			$this->phrase_types_allowed = array_flip($phrase_types);
-			$this->import_mode = $import_mode;
-
-			$this->_parseXML($filename);
-
-			// copy data from temp tables to live
-			foreach ($this->_languages as $language_id) {
-				$this->_performUpgrade($language_id, 'phrases', 'Phrase');
-				$this->_performUpgrade($language_id, 'emailmessages', 'EventId');
-			}
-
-			$this->_initImportTables(true);
-
-			if ($this->_debugMode) {
-				$this->Application->Debugger->appendHTML(__CLASS__ . '::' . __FUNCTION__ . '("' . $filename . '"): ' . (getmicrotime() - $start_time));
-			}
-
-			return true;
-		}
-
-		/**
-		 * Creates XML file with exported language data (former Create method)
-		 *
-		 * @param string $filename filename to export into
-		 * @param Array $phrase_types phrases types to export from modules passed in $module_ids
-		 * @param Array $language_ids IDs of languages to export
-		 * @param Array $module_ids IDs of modules to export phrases from
-		 */
-		function performExport($filename, $phrase_types, $language_ids, $module_ids)
-		{
-			$fp = fopen($filename,'w');
-			if (!$fp || !$phrase_types || !$module_ids || !$language_ids) {
-				return false;
-			}
-
-			$phrase_types = explode('|', substr($phrase_types, 1, -1) );
-			$module_ids = explode('|', substr($module_ids, 1, -1) );
-
-			$this->events_hash = array_flip($this->events_hash);
-
-			$lang_table = $this->Application->getUnitOption('lang','TableName');
-			$phrases_table = $this->Application->getUnitOption('phrases','TableName');
-			$emailevents_table = $this->Application->getUnitOption('emailmessages','TableName');
-			$mainevents_table = $this->Application->getUnitOption('emailevents','TableName');
-
-			$phrase_tpl = "\t\t\t".'<PHRASE Label="%s" Module="%s" Type="%s">%s</PHRASE>'."\n";
-			$event_tpl = "\t\t\t".'<EVENT MessageType="%s" Event="%s" Type="%s">%s</EVENT>'."\n";
-			$sql = 'SELECT * FROM %s WHERE LanguageId = %s';
-			$ret = '<LANGUAGES>'."\n";
-			foreach ($language_ids as $language_id) {
-				// languages
-				$row = $this->Conn->GetRow( sprintf($sql, $lang_table, $language_id) );
-				$ret .= "\t".'<LANGUAGE PackName="'.$row['PackName'].'" Encoding="'.$this->_exportEncoding.'"><DATEFORMAT>'.$row['DateFormat'].'</DATEFORMAT>';
-				$ret .= '<TIMEFORMAT>'.$row['TimeFormat'].'</TIMEFORMAT><INPUTDATEFORMAT>'.$row['InputDateFormat'].'</INPUTDATEFORMAT>';
-				$ret .= '<INPUTTIMEFORMAT>'.$row['InputTimeFormat'].'</INPUTTIMEFORMAT><DECIMAL>'.$row['DecimalPoint'].'</DECIMAL>';
-				$ret .= '<THOUSANDS>'.$row['ThousandSep'].'</THOUSANDS><CHARSET>'.$row['Charset'].'</CHARSET><DOCS_URL>'.$row['UserDocsUrl'].'</DOCS_URL>';
-				$ret .= '<UNITSYSTEM>'.$row['UnitSystem'].'</UNITSYSTEM>'."\n";
-
-				// phrases
-				$phrases_sql = 'SELECT * FROM '.$phrases_table.' WHERE LanguageId = %s AND PhraseType IN (%s) AND Module IN (%s) ORDER BY Phrase';
-				if( in_array('In-Portal',$module_ids) ) array_push($module_ids, ''); // for old language packs
-				$rows = $this->Conn->Query( sprintf($phrases_sql,$language_id, implode(',',$phrase_types), '\''.implode('\',\'',$module_ids).'\'' ) );
-				if($rows)
-				{
-					$ret .= "\t\t".'<PHRASES>'."\n";
-					foreach($rows as $row)
-					{
-						$data = $this->_exportEncoding == 'base64' ? base64_encode($row['Translation']) : '<![CDATA['.$row['Translation'].']]>';
-						$ret .= sprintf($phrase_tpl, $row['Phrase'], $row['Module'], $row['PhraseType'], $data );
-					}
-					$ret .= "\t\t".'</PHRASES>'."\n";
-				}
-
-				// email events
-				if( in_array('In-Portal',$module_ids) ) unset( $module_ids[array_search('',$module_ids)] ); // for old language packs
-				$module_sql = preg_replace('/(.*) OR $/', '\\1', preg_replace('/(.*),/U', 'INSTR(Module,\'\\1\') OR ', implode(',', $module_ids).',' ) );
-
-				$sql = 'SELECT EventId FROM '.$mainevents_table.' WHERE '.$module_sql;
-				$event_ids = $this->Conn->GetCol($sql);
-
-				if($event_ids)
-				{
-					$ret .= "\t\t".'<EVENTS>'."\n";
-					$event_sql = '	SELECT em.*
-									FROM '.$emailevents_table.' em
-									LEFT JOIN '.$mainevents_table.' e ON e.EventId = em.EventId
-									WHERE em.LanguageId = %s AND em.EventId IN (%s)
-									ORDER BY e.Event, e.Type';
-					$rows = $this->Conn->Query( sprintf($event_sql,$language_id, $event_ids ? implode(',',$event_ids) : '' ) );
-					foreach($rows as $row)
-					{
-						if (!array_key_exists($row['EventId'], $this->events_hash)) {
-							// don't export existing translations of missing events
-							continue;
-						}
-
-						list($event_name, $event_type) = explode('_', $this->events_hash[ $row['EventId'] ] );
-						$data = $this->_exportEncoding == 'base64' ? base64_encode($row['Template']) : '<![CDATA['.$row['Template'].']]>';
-						$ret .= sprintf($event_tpl, $row['MessageType'], $event_name, $event_type, $data );
-					}
-					$ret .= "\t\t".'</EVENTS>'."\n";
-				}
-				$ret .= "\t".'</LANGUAGE>'."\n";
-			}
-
-			$ret .= '</LANGUAGES>';
-			fwrite($fp, $ret);
-			fclose($fp);
-
-			return true;
-		}
-
-		/**
-		 * Sets language pack encoding (not charset) used during export
-		 *
-		 * @param string $encoding
-		 */
-		function setExportEncoding($encoding)
-		{
-			$this->_exportEncoding = $encoding;
-		}
-
-		/**
-		 * Performs upgrade of given language pack part
-		 *
-		 * @param int $language_id
-		 * @param string $prefix
-		 * @param string $unique_field
-		 */
-		function _performUpgrade($language_id, $prefix, $unique_field)
-		{
-			// TODO: find a way to compare (intersect,diff) phrases in non-case sensitive way, but keeping original case in result
-			$live_records = $this->_getTableData($language_id, $prefix, $unique_field, false);
-			$temp_records = $this->_getTableData($language_id, $prefix, $unique_field, true);
-
-			if ($this->import_mode == LANG_OVERWRITE_EXISTING) {
-				// remove existing records before copy
-				$common_records = array_intersect($temp_records, $live_records);
-				if ($common_records) {
-					$live_records = array_diff($live_records, $common_records); // remove overlaping records
-					$common_records = array_map(Array(&$this->Conn, 'qstr'), $common_records);
-
-					$sql = 'DELETE FROM ' . $this->Application->getUnitOption($prefix, 'TableName') . '
-							WHERE (LanguageId = ' . $language_id . ') AND (' . $unique_field . ' IN (' . implode(',', $common_records) . '))';
-					$this->Conn->Query($sql);
-				}
-			}
-
-			$temp_records = array_diff($temp_records, $live_records);
-
-			if (!$temp_records) {
-				// no new records found in temp table while comparing it to live table
-				return ;
-			}
-
-			$temp_records = array_map(Array(&$this->Conn, 'qstr'), $temp_records);
-
-			$sql = 'INSERT INTO ' . $this->Application->getUnitOption($prefix, 'TableName') . '
-					SELECT *
-					FROM ' . $this->_tables[$prefix] . '
-					WHERE (LanguageId = ' . $language_id . ')';
-
-			if ($live_records) {
-				// subsctract live records from temp table during coping
-				$sql .= ' AND (' . $unique_field . ' IN (' . implode(',', $temp_records) . '))';
-			}
-
-			$this->Conn->Query($sql);
-		}
-
-		/**
-		 * Returns data from given table used for language pack upgrade
-		 *
-		 * @param int $language_id
-		 * @param string $prefix
-		 * @param string $unique_field
-		 * @param bool $temp_mode
-		 * @return Array
-		 */
-		function _getTableData($language_id, $prefix, $unique_field, $temp_mode = false)
-		{
-			$table_name = $this->Application->getUnitOption($prefix, 'TableName');
-
-			if ($temp_mode) {
-				$table_name = $this->Application->GetTempName($table_name, 'prefix:' . $prefix);
-			}
-
-			$sql = 'SELECT ' . $unique_field . '
-					FROM ' . $table_name . '
-					WHERE LanguageId = ' . $language_id;
-			return $this->Conn->GetCol($sql);
-		}
-
-		function _parseXML($filename)
-		{
-			if ($this->_debugMode) {
-				$start_time = getmicrotime();
-				$this->Application->Debugger->appendHTML(__CLASS__ . '::' . __FUNCTION__ . '("' . $filename . '")');
-			}
-
-			$fdata = file_get_contents($filename);
-
-			$xml_parser =& $this->Application->recallObject('kXMLHelper');
-			/* @var $xml_parser kXMLHelper */
-
-			$root_node =& $xml_parser->Parse($fdata);
-			if (!is_object($root_node) || !is_a($root_node, 'kXMLNode')) {
-				// invalid language pack contents
-				return false;
-			}
-
-			if ($root_node->Children) {
-				$this->_processLanguages($root_node->firstChild);
-			}
-
-			if ($this->_debugMode) {
-				$this->Application->Debugger->appendHTML(__CLASS__ . '::' . __FUNCTION__ . '("' . $filename . '"): ' . (getmicrotime() - $start_time));
-			}
-
-			return true;
-		}
-
-		/**
-		 * Creates temporary tables, used during language import
-		 *
-		 * @param bool $drop_only
-		 */
-		function _initImportTables($drop_only = false)
-		{
-			$this->_tables['phrases'] = $this->_prepareTempTable('phrases', $drop_only);
-			$this->_tables['emailmessages'] = $this->_prepareTempTable('emailmessages', $drop_only);
-		}
-
-		/**
-		 * Create temp table for prefix, if table already exists, then delete it and create again
-		 *
-		 * @param string $prefix
-		 */
-		function _prepareTempTable($prefix, $drop_only = false)
-		{
-			$idfield = $this->Application->getUnitOption($prefix, 'IDField');
-			$table = $this->Application->getUnitOption($prefix,'TableName');
-			$temp_table = $this->Application->GetTempName($table);
-
-			$sql = 'DROP TABLE IF EXISTS %s';
-			$this->Conn->Query( sprintf($sql, $temp_table) );
-
-			if (!$drop_only) {
-				$sql = 'CREATE TABLE %s SELECT * FROM %s WHERE 0';
-				$this->Conn->Query( sprintf($sql, $temp_table, $table) );
-
-				$sql = 'ALTER TABLE %1$s CHANGE %2$s %2$s INT(11) NOT NULL';
-				$this->Conn->Query( sprintf($sql, $temp_table, $idfield) );
-			}
-
-			return $temp_table;
-		}
-
-		/**
-		 * Prepares mapping between event name+type and their ids in database
-		 *
-		 */
-		function _updateEventsCache()
-		{
-			$sql = 'SELECT EventId, CONCAT(Event,"_",Type) AS EventMix
-					FROM ' . TABLE_PREFIX . 'Events';
-			$this->events_hash = $this->Conn->GetCol($sql, 'EventMix');
-		}
-
-		/**
-		 * Processes parsed XML
-		 *
-		 * @param kXMLNode $language_node
-		 */
-		function _processLanguages(&$language_node)
-		{
-			$field_mapping = Array (
-				'DATEFORMAT' => 'DateFormat',
-				'TIMEFORMAT' => 'TimeFormat',
-				'INPUTDATEFORMAT' => 'InputDateFormat',
-				'INPUTTIMEFORMAT' => 'InputTimeFormat',
-				'DECIMAL' => 'DecimalPoint',
-				'THOUSANDS' => 'ThousandSep',
-				'CHARSET' => 'Charset',
-				'UNITSYSTEM' => 'UnitSystem',
-				'DOCS_URL' => 'UserDocsUrl',
-			);
-
-			do {
-				$language_id = false;
-
-				$fields_hash = Array (
-					'PackName' => $language_node->Attributes['PACKNAME'],
-					'LocalName' => $language_node->Attributes['PACKNAME'],
-					'Encoding' => $language_node->Attributes['ENCODING'],
-					'Charset' => 'iso-8859-1',
-				);
-
-				$sub_node =& $language_node->firstChild;
-				/* @var $sub_node kXMLNode */
-
-				do {
-					switch ($sub_node->Name) {
-						case 'PHRASES':
-							if ($sub_node->Children) {
-								if (!$language_id) {
-									$language_id = $this->_processLanguage($fields_hash);
-								}
-
-								if ($this->_debugMode) {
-									$start_time = getmicrotime();
-								}
-
-								$this->_processPhrases($sub_node->firstChild, $language_id, $fields_hash['Encoding']);
-
-								if ($this->_debugMode) {
-									$this->Application->Debugger->appendHTML(__CLASS__ . '::' . '_processPhrases: ' . (getmicrotime() - $start_time));
-								}
-							}
-							break;
-
-						case 'EVENTS':
-							if ($sub_node->Children) {
-								if (!$language_id) {
-									$language_id = $this->_processLanguage($fields_hash);
-								}
-
-								$this->_processEvents($sub_node->firstChild, $language_id, $fields_hash['Encoding']);
-							}
-							break;
-
-						default:
-							$fields_hash[ $field_mapping[$sub_node->Name] ] = $sub_node->Data;
-							break;
-					}
-				} while (($sub_node =& $sub_node->NextSibling()));
-			} while (($language_node =& $language_node->NextSibling()));
-		}
-
-		/**
-		 * Performs phases import
-		 *
-		 * @param kXMLNode $phrase_node
-		 * @param int $language_id
-		 * @param string $language_encoding
-		 */
-		function _processPhrases(&$phrase_node, $language_id, $language_encoding)
-		{
-			do {
-				$fields_hash = Array (
-					'LanguageId' => $language_id,
-					'Phrase' => $phrase_node->Attributes['LABEL'],
-					'PhraseType' => $phrase_node->Attributes['TYPE'],
-					'Module' => array_key_exists('MODULE', $phrase_node->Attributes) ? $phrase_node->Attributes['MODULE'] : 'Core',
-					'LastChanged' => adodb_mktime(),
-					'LastChangeIP' => $this->ip_address,
-					'Translation' => $phrase_node->Data,
-				);
-
-				if (array_key_exists($fields_hash['PhraseType'], $this->phrase_types_allowed)) {
-					if ($language_encoding != 'plain') {
-						$fields_hash['Translation'] = base64_decode($fields_hash['Translation']);
-					}
-
-					$this->Conn->doInsert($fields_hash, $this->_tables['phrases'], 'INSERT', false);
-				}
-			} while (($phrase_node =& $phrase_node->NextSibling()));
-
-			$this->Conn->doInsert($fields_hash, $this->_tables['phrases'], 'INSERT');
-		}
-
-		/**
-		 * Performs email event import
-		 *
-		 * @param kXMLNode $event_node
-		 * @param int $language_id
-		 * @param string $language_encoding
-		 */
-		function _processEvents(&$event_node, $language_id, $language_encoding)
-		{
-			do {
-				$event_id = $this->_getEventId($event_node->Attributes['EVENT'], $event_node->Attributes['TYPE']);
-				if ($event_id) {
-					$fields_hash = Array (
-						'LanguageId' => $language_id,
-						'EventId' => $event_id,
-						'MessageType' => $event_node->Attributes['MESSAGETYPE'],
-					);
-
-					if ($language_encoding == 'plain') {
-						$fields_hash['Template'] = rtrim($event_node->Data);
-					}
-					else {
-						$fields_hash['Template'] = base64_decode($event_node->Data);
-					}
-
-					$this->Conn->doInsert($fields_hash, $this->_tables['emailmessages'], 'INSERT', false);
-				}
-			} while (($event_node =& $event_node->NextSibling()));
-
-			$this->Conn->doInsert($fields_hash, $this->_tables['emailmessages'], 'INSERT');
-		}
-
-		/**
-		 * Creates/updates language based on given fields and returns it's id
-		 *
-		 * @param Array $fields_hash
-		 * @return int
-		 */
-		function _processLanguage($fields_hash)
-		{
-			// 1. get language from database
-			$sql = 'SELECT ' . $this->lang_object->IDField . '
-					FROM ' . $this->lang_object->TableName . '
-					WHERE PackName = ' . $this->Conn->qstr($fields_hash['PackName']);
-			$language_id = $this->Conn->GetOne($sql);
-
-			if ($language_id) {
-				// 2. language found -> update, when allowed
-				$this->lang_object->Load($language_id);
-
-				if ($this->import_mode == LANG_OVERWRITE_EXISTING) {
-					// update live language record based on data from xml
-					$this->lang_object->SetFieldsFromHash($fields_hash);
-					$this->lang_object->Update();
-				}
-			}
-			else {
-				// 3. language not found -> create
-				$this->lang_object->SetFieldsFromHash($fields_hash);
-				$this->lang_object->SetDBField('Enabled', STATUS_ACTIVE);
-
-				if ($this->lang_object->Create()) {
-					$language_id = $this->lang_object->GetID();
-
-					if (defined('IS_INSTALL') && IS_INSTALL) {
-						// language created during install becomes admin interface language
-						$this->lang_object->setPrimary(true, true);
-					}
-				}
-			}
-
-			// 4. collect ID of every processed language
-			if (!in_array($language_id, $this->_languages)) {
-				$this->_languages[] = $language_id;
-			}
-
-			return $language_id;
-		}
-
-		/**
-		 * Returns event id based on it's name and type
-		 *
-		 * @param string $event_name
-		 * @param string $event_type
-		 * @return int
-		 */
-		function _getEventId($event_name, $event_type)
-		{
-			$cache_key = $event_name . '_' . $event_type;
-
-			return array_key_exists($cache_key, $this->events_hash) ? $this->events_hash[$cache_key] : 0;
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/language_import_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.2.1
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/chart_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/chart_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/chart_helper.php	(nonexistent)
@@ -1,47 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class kChartHelper extends kHelper {
-
-		function kChartHelper()
-		{
-			parent::kHelper();
-			$prefix = realpath(dirname(__FILE__).'/../').'/libchart/classes/';
-			require_once $prefix.'model/Point.php';
-			require_once $prefix.'model/DataSet.php';
-			require_once $prefix.'model/XYDataSet.php';
-			require_once $prefix.'model/XYSeriesDataSet.php';
-
-			require_once $prefix.'view/primitive/Padding.php';
-			require_once $prefix.'view/primitive/Rectangle.php';
-			require_once $prefix.'view/primitive/Primitive.php';
-			require_once $prefix.'view/text/Text.php';
-			require_once $prefix.'view/color/Color.php';
-			require_once $prefix.'view/color/ColorSet.php';
-			require_once $prefix.'view/color/Palette.php';
-			require_once $prefix.'view/axis/Bound.php';
-			require_once $prefix.'view/axis/Axis.php';
-			require_once $prefix.'view/plot/Plot.php';
-			require_once $prefix.'view/caption/Caption.php';
-			require_once $prefix.'view/chart/Chart.php';
-			require_once $prefix.'view/chart/BarChart.php';
-			require_once $prefix.'view/chart/VerticalBarChart.php';
-			require_once $prefix.'view/chart/HorizontalBarChart.php';
-			require_once $prefix.'view/chart/LineChart.php';
-			require_once $prefix.'view/chart/PieChart.php';
-		}
-
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/chart_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.4.1
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/file_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/file_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/file_helper.php	(nonexistent)
@@ -1,233 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class FileHelper extends kHelper {
-
-		/**
-		 * Puts existing item images (from subitem) to virtual fields (in main item)
-		 *
-		 * @param kCatDBItem $object
-		 */
-		function LoadItemFiles(&$object)
-		{
-			$max_file_count = $this->Application->ConfigValue($object->Prefix.'_MaxImageCount'); // file count equals to image count (temporary measure)
-
-			$sql = 'SELECT *
-					FROM '.TABLE_PREFIX.'ItemFiles
-					WHERE ResourceId = '.$object->GetDBField('ResourceId').'
-					ORDER BY FileId ASC
-					LIMIT 0, '.(int)$max_file_count;
-			$item_files = $this->Conn->Query($sql);
-
-			$file_counter = 1;
-			foreach ($item_files as $item_file) {
-				$file_path = $item_file['FilePath'];
-				$object->SetDBField('File'.$file_counter, $file_path);
-				$object->SetOriginalField('File'.$file_counter, $file_path);
-				$object->Fields['File'.$file_counter]['original_field'] = $item_file['FileName'];
-				$file_counter++;
-			}
-		}
-
-		/**
-		 * Saves newly uploaded images to external image table
-		 *
-		 * @param kCatDBItem $object
-		 */
-		function SaveItemFiles(&$object)
-		{
-			$table_name = $this->Application->getUnitOption('#file', 'TableName');
-			$max_file_count = $this->Application->getUnitOption($object->Prefix, 'FileCount'); // $this->Application->ConfigValue($object->Prefix.'_MaxImageCount');
-
-			$i = 0;
-			while ($i < $max_file_count) {
-				$field = 'File'.($i + 1);
-				$field_options = $object->GetFieldOptions($field);
-
-				$file_path = $object->GetDBField($field);
-				if ($file_path) {
-					if (isset($field_options['original_field'])) {
-						$key_clause = 'FileName = '.$this->Conn->qstr($field_options['original_field']).' AND ResourceId = '.$object->GetDBField('ResourceId');
-
-						if ($object->GetDBField('Delete'.$field)) {
-							// if item was cloned, then new filename is in db (not in $image_src)
-							$sql = 'SELECT FilePath
-									FROM '.$table_name.'
-									WHERE '.$key_clause;
-							$file_path = $this->Conn->GetOne($sql);
-							if (@unlink(FULL_PATH.ITEM_FILES_PATH.$file_path)) {
-								$sql = 'DELETE FROM '.$table_name.'
-										WHERE '.$key_clause;
-								$this->Conn->Query($sql);
-							}
-						}
-						else {
-							// image record found -> update
-							$fields_hash = Array (
-								'FilePath' => $file_path,
-							);
-
-							$this->Conn->doUpdate($fields_hash, $table_name, $key_clause);
-						}
-					}
-					else {
-						// record not found -> create
-						$fields_hash = Array (
-							'ResourceId' => $object->GetDBField('ResourceId'),
-							'FileName' => $field,
-							'Status' => STATUS_ACTIVE,
-							'FilePath' => $file_path,
-						);
-
-						$this->Conn->doInsert($fields_hash, $table_name);
-						$field_options['original_field'] = $field;
-						$object->SetFieldOptions($field, $field_options);
-					}
-				}
-				$i++;
-			}
-		}
-
-		/**
-		 * Preserves cloned item images/files to be rewrited with original item images/files
-		 *
-		 * @param Array $field_values
-		 */
-		function PreserveItemFiles(&$field_values)
-		{
-			foreach ($field_values as $field_name => $field_value) {
-				if (!is_array($field_value)) continue;
-
-				if (isset($field_value['upload']) && ($field_value['error'] == UPLOAD_ERR_NO_FILE)) {
-					// this is upload field, but nothing was uploaded this time
-					unset($field_values[$field_name]);
-				}
-			}
-		}
-
-		/**
-		 * Determines what image/file fields should be created (from post or just dummy fields for 1st upload)
-		 *
-		 * @param string $prefix
-		 * @param bool $is_image
-		 */
-		function createItemFiles($prefix, $is_image = false)
-		{
-			$items_info = $this->Application->GetVar($prefix);
-			if ($items_info) {
-				list ($id, $fields_values) = each($items_info);
-				$this->createUploadFields($prefix, $fields_values, $is_image);
-			}
-			else {
-				$this->createUploadFields($prefix, Array(), $is_image);
-			}
-		}
-
-		/**
-		 * Dynamically creates virtual fields for item for each image/file field in submit
-		 *
-		 * @param string $prefix
-		 * @param Array $fields_values
-		 * @param bool $is_image
-		 */
-		function createUploadFields($prefix, $fields_values, $is_image = false)
-		{
-			$field_options = Array (
-				'type'			=>	'string',
-				'max_len'		=>	240,
-				'default'		=>	'',
-				'not_null'		=>	1,
-			);
-
-			if ($is_image) {
-				$field_options['formatter'] = 'kPictureFormatter';
-				$field_options['include_path'] = 1;
-				$field_options['allowed_types'] = Array ('image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png', 'image/gif', 'image/bmp');
-				$field_prefix = 'Image';
-			}
-			else {
-				$field_options['formatter'] = 'kUploadFormatter';
-				$field_options['upload_dir'] = ITEM_FILES_PATH;
-				$field_options['allowed_types'] = Array ('application/pdf', 'application/msexcel', 'application/msword', 'application/mspowerpoint');
-				$field_prefix = 'File';
-			}
-
-			$fields = $this->Application->getUnitOption($prefix, 'Fields');
-			$virtual_fields = $this->Application->getUnitOption($prefix, 'VirtualFields');
-
-			$image_count = 0;
-			foreach ($fields_values as $field_name => $field_value) {
-				if (preg_match('/^('.$field_prefix.'[\d]+|Primary'.$field_prefix.')$/', $field_name)) {
-					$fields[$field_name] = $field_options;
-					$virtual_fields[$field_name] = $field_options;
-					$this->_createCustomFields($prefix, $field_name, $virtual_fields, $is_image);
-
-					$image_count++;
-				}
-			}
-
-			if (!$image_count) {
-				// no images found in POST -> create default image fields
-				$image_names = Array ('Primary'.$field_prefix => '');
-				$image_count = $this->Application->ConfigValue($prefix.'_MaxImageCount');
-
-				$created_count = 1;
-				while ($created_count < $image_count) {
-					$image_names[$field_prefix.$created_count] = '';
-					$created_count++;
-				}
-
-				$this->createUploadFields($prefix, $image_names, $is_image);
-				return ;
-			}
-
-			$this->Application->setUnitOption($prefix, $field_prefix.'Count', $image_count);
-			$this->Application->setUnitOption($prefix, 'Fields', $fields);
-			$this->Application->setUnitOption($prefix, 'VirtualFields', $virtual_fields);
-		}
-
-		/**
-		 * Adds ability to create more virtual fields associated with main image/file
-		 *
-		 * @param string $prefix
-		 * @param string $field_name
-		 * @param Array $virtual_fields
-		 */
-		function _createCustomFields($prefix, $field_name, &$virtual_fields, $is_image)
-		{
-			$virtual_fields['Delete' . $field_name] = Array ('type' => 'int', 'not_null' => 1, 'default' => 0);
-
-			if ($is_image) {
-				$virtual_fields[$field_name . 'Alt'] = Array ('type' => 'string', 'default' => '');
-			}
-		}
-
-		/**
-		 * Downloads file to user
-		 *
-		 * @param string $filename
-		 */
-		function DownloadFile($filename)
-		{
-			$content_type = function_exists('mime_content_type') ? mime_content_type($filename) : 'application/octet-stream';
-
-			header('Content-type: '.$content_type);
-			header('Content-Disposition: attachment; filename="'.basename($filename).'"');
-			header('Content-Length: '.filesize($filename));
-			readfile($filename);
-			flush();
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/file_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.2.2
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/curl_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/curl_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/curl_helper.php	(nonexistent)
@@ -1,265 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class kCurlHelper extends kHelper {
-
-		/**
-		 * Connection to host
-		 *
-		 * @var resource
-		 */
-		var $connectionID = null;
-
-		/**
-		 * Pointer to opened log file
-		 *
-		 * @var resource
-		 */
-		var $logFilePointer = null;
-
-		/**
-		 * Responce waiting timeout
-		 *
-		 * @var int
-		 */
-		var $timeout = 90;
-
-		/**
-		 * Follow to url, if redirect received insted of document (only works when open_basedir and safe mode is off)
-		 *
-		 * @var bool
-		 */
-		var $followLocation = false;
-
-		/**
-		 * Last responce received by Curl
-		 *
-		 * @var string
-		 */
-		var $lastRespoce = '';
-
-		/**
-		 * Last error code
-		 *
-		 * @var int
-		 */
-		var $lastErrorCode = 0;
-
-		/**
-		 * Last error message
-		 *
-		 * @var string
-		 */
-		var $lastErrorMsg = '';
-
-		/**
-		 * Most recent HTTP responce code received
-		 *
-		 * @var int
-		 */
-		var $lastHTTPCode = 0;
-
-		/**
-		 * POST data to be sent using curl
-		 *
-		 * @var string
-		 */
-		var $postData = '';
-
-		var $requestHeaders = Array ();
-
-		var $responceHeaders = Array ();
-
-		var $options = Array ();
-
-		/**
-		 * Indicates debug mode status
-		 *
-		 * @var bool
-		 */
-		var $debugMode = false;
-
-		function kCurlHelper()
-		{
-			parent::kHelper();
-
-			$this->debugMode = $this->Application->isDebugMode(false) && constOn('DBG_CURL');
-		}
-
-		/**
-		 * Reset connection settings (not results) after connection was closed
-		 *
-		 */
-		function _resetSettings()
-		{
-			$this->timeout = 90;
-			$this->followLocation = false;
-			$this->postData = '';
-			$this->requestHeaders = Array ();
-			$this->options = Array ();
-		}
-
-		function setOptions($options_hash)
-		{
-			$this->options = array_merge_recursive2($this->options, $options_hash);
-		}
-
-		function prepareOptions()
-		{
-			$default_options = Array (
-				// customizable options
-				CURLOPT_FOLLOWLOCATION => $this->followLocation ? 1 : 0,
-				CURLOPT_TIMEOUT => $this->timeout,
-
-				// hardcoded options
-				CURLOPT_RETURNTRANSFER => 1,
-				CURLOPT_REFERER => PROTOCOL.SERVER_NAME,
-				CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'],
-			);
-
-			if ($this->requestHeaders) {
-				$default_options[CURLOPT_HTTPHEADER] = $this->prepareHeaders();
-			}
-
-			// if we have post data, then POST else use GET method instead
-			if ($this->postData) {
-				$default_options[CURLOPT_POST] = 1;
-				$default_options[CURLOPT_POSTFIELDS] = $this->postData;
-			}
-
-//			$default_options[CURLOPT_HEADERFUNCTION] = Array(&$this, 'ParseHeader');
-
-			$user_options = $this->options; // backup options, that user set directly
-			$this->setOptions($default_options);
-			$this->setOptions($user_options);
-			$this->applyOptions();
-		}
-
-		function applyOptions()
-		{
-			foreach ($this->options as $option_name => $option_value) {
-				curl_setopt($this->connectionID, $option_name, $option_value);
-			}
-		}
-
-		function ParseHeader(&$ch, $header)
-		{
-			$this->responceHeaders[] = $header;
-			return strlen($header);
-		}
-
-		/**
-		 * Sets POST data for next query
-		 *
-		 * @param mixed $post_data Array or string
-		 */
-		function SetPostData($post_data)
-		{
-			if (is_array($post_data)) {
-				$params_str = '';
-				foreach ($post_data as $key => $value) {
-					$params_str .= $key.'='.urlencode($value).'&';
-				}
-				$post_data = $params_str;
-			}
-
-			$this->postData = $post_data;
-		}
-
-		function SetHeaders($headers)
-		{
-			$this->requestHeaders = array_merge_recursive2($this->requestHeaders, $headers);
-		}
-
-		function SetHeader($name, $value)
-		{
-			$this->requestHeaders[$name] = $value;
-		}
-
-		/**
-		 * Returns compiled header to be used by curl
-		 *
-		 * @return Array
-		 */
-		function prepareHeaders()
-		{
-			$ret = Array ();
-			foreach ($this->requestHeaders as $header_name => $header_value) {
-				$ret[] = $header_name.': '.$header_value;
-			}
-			return $ret;
-		}
-
-		function Send($url, $close_connection = true)
-		{
-			$this->connectionID = curl_init($url);
-
-			if ($this->debugMode) {
-				safeDefine('DBG_CURL_LOGFILE', '/curl.log');
-				$this->logFilePointer = fopen(FULL_PATH.DBG_CURL_LOGFILE, 'a');
-
-				curl_setopt($this->connectionID, CURLOPT_FILE, $this->logFilePointer);
-				curl_setopt($this->connectionID, CURLOPT_VERBOSE, true);
-				curl_setopt($this->connectionID, CURLOPT_STDERR, $this->logFilePointer);
-				//curl_setopt($this->connectionID, CURLOPT_WRITEHEADER, $this->logFilePointer);
-			}
-
-			$this->responceHeaders = Array ();
-
-			$this->prepareOptions();
-			$this->lastRespoce = curl_exec($this->connectionID);
-
-			$this->Finalize($close_connection);
-
-			return $this->lastRespoce;
-		}
-
-		/**
-		 * Returns various info about request made
-		 *
-		 * @param int $info_type
-		 * @return mixed
-		 *
-		 * @see http://www.php.net/manual/ru/function.curl-getinfo.php
-		 */
-		function getInfo($info_type)
-		{
-			return curl_getinfo($this->connectionID, $info_type);
-		}
-
-		function Finalize($close_connection = true)
-		{
-			$this->lastErrorCode = curl_errno($this->connectionID);
-			$this->lastErrorMsg = curl_error($this->connectionID);
-			$this->lastHTTPCode = curl_getinfo($this->connectionID, CURLINFO_HTTP_CODE);
-
-			if ($this->debugMode) {
-				fwrite($this->logFilePointer, "\n".$this->lastRespoce);
-				fclose($this->logFilePointer);
-			}
-
-			$this->_resetSettings();
-
-			if ($close_connection) {
-				$this->CloseConnection();
-			}
-		}
-
-		function CloseConnection()
-		{
-			curl_close($this->connectionID);
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/curl_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.1.4.4
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
Index: branches/5.0.x/core/units/general/helpers/category_helper.php
===================================================================
--- branches/5.0.x/core/units/general/helpers/category_helper.php	(revision 12307)
+++ branches/5.0.x/core/units/general/helpers/category_helper.php	(nonexistent)
@@ -1,477 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.net/license/ for copyright notices and details.
-*/
-
-	defined('FULL_PATH') or die('restricted access!');
-
-	class CategoryHelper extends kHelper {
-
-		/**
-		 * Structure tree for ParentId field in category or category items
-		 *
-		 * @var Array
-		 */
-		var $_structureTree = null;
-
-		/**
-		 * Prints category path using given blocks. Also supports used defined path elements at the end.
-		 *
-		 * @param Array $params
-		 * @return string
-		 */
-		function NavigationBar($params)
-		{
-			$main_category_id = isset($params['cat_id']) ? $params['cat_id'] : $this->Application->GetVar('m_cat_id');
-
-			$home_element = $this->getHomeCategoryPath($params, $main_category_id);
-			if (!getArrayValue($params, 'titles') && !getArrayValue($params, 'templates')) {
-				// no static templates given, show only category path
-				return $home_element . $this->getCategoryPath($main_category_id, $params);
-			}
-
-			$navigation_parts = $this->getNavigationParts($params['titles'], $params['templates']);
-
-			$ret = '';
-			$block_params = Array (); //$params; // sort of TagProcessor:prepareTagParams
-			$block_params['no_editing'] = 1;
-			$block_params['category'] = 0;
-			$block_params['separator'] = $params['separator'];
-			$current_template = $this->Application->GetVar('t');
-			$show_category = getArrayValue($params, 'show_category');
-
-			foreach ($navigation_parts as $template => $title) {
-				$block_params['template'] = $template;
-
-				if ($title == '__item__') {
-					if ($show_category) {
-						$ret .= $this->getCategoryPath($main_category_id, $params);
-						$show_category = false;
-					}
-
-					$category_path = $this->getCategoryParentPath($main_category_id);
-					$module_info = $this->getCategoryModule($params, array_keys($category_path));
-					if (!$module_info) {
-						continue;
-					}
-
-					$module_prefix = $module_info['Var'];
-					$object =& $this->Application->recallObject($module_prefix);
-					/* @var $object kCatDBItem */
-
-					$title_field = $this->Application->getUnitOption($module_prefix, 'TitleField');
-					$block_params['title'] = $object->GetField($title_field);
-					$block_params['prefix'] = $module_prefix;
-					$block_params['current'] = 0;
-
-					$block_params['name'] = $this->SelectParam($params, 'module_item_render_as,render_as');
-				}
-				else {
-					$block_params['current'] = ($template == $current_template);
-					$block_params['title'] = $this->Application->Phrase($title);
-
-					$block_params['name'] = $template == $current_template ? $params['current_render_as'] : $params['render_as'];
-				}
-
-				$ret .= $this->Application->ParseBlock($block_params);
-			}
-
-			if ($show_category) {
-				$params['no_current'] = true;
-				return $home_element . ($show_category ? $this->getCategoryPath($main_category_id, $params) : '') . $ret;
-			}
-
-			return $home_element . $ret;
-		}
-
-		/**
-		 * Get navigation parts
-		 *
-		 * @param Array $titles
-		 * @param Array $templates
-		 * @return Array
-		 */
-		function getNavigationParts($titles, $templates)
-		{
-			$titles = explode(',', $titles);
-			$templates = explode(',', $templates);
-
-			$ret = Array ();
-			foreach ($templates as $template_pos => $template) {
-				$ret[$template] = $titles[$template_pos];
-			}
-
-			return $ret;
-		}
-
-		/**
-		 * Renders path to given category using given blocks.
-		 *
-		 * @param int $main_category_id
-		 * @param Array $params
-		 * @return string
-		 */
-		function getCategoryPath($main_category_id, $params)
-		{
-			$category_path = $this->getCategoryParentPath($main_category_id);
-			if (!$category_path) {
-				// in "Home" category
-				return '';
-			}
-
-			$module_info = $this->getCategoryModule($params, array_keys($category_path));
-
-			$module_category_id = $module_info['RootCat'];
-			$module_item_id = $this->Application->GetVar($module_info['Var'].'_id');
-
-			$ret = '';
-			$block_params['category'] = 1;
-			$block_params['no_editing'] = 1;
-			$block_params['separator'] = $params['separator'];
-			$no_current = isset($params['no_current']) && $params['no_current'];
-
-			$backup_category_id = $this->Application->GetVar('c_id');
-			foreach ($category_path as $category_id => $category_name) {
-				$block_params['cat_id'] = $category_id;
-				$block_params['cat_name'] = $block_params['title'] = $category_name;
-
-				if ($no_current) {
-					$block_params['current'] = 0;
-				}
-				else {
-					$block_params['current'] = ($main_category_id == $category_id) && !$module_item_id ? 1 : 0;
-				}
-
-				$block_params['is_module_root'] = $category_id == $module_category_id ? 1 : 0;
-				$block_params['name'] = $this->SelectParam($params, 'render_as,block');
-
-				// which block to parse as current ?
-				if ($block_params['is_module_root']) {
-					$block_params['name'] = $this->SelectParam($params, 'module_root_render_as,render_as');
-					$block_params['module_index'] = $module_info['TemplatePath'].'index';
-				}
-
-				if ($block_params['current']) {
-					$block_params['name'] = $this->SelectParam($params, 'current_render_as,render_as');
-				}
-
-				$this->Application->SetVar('c_id', $category_id);
-				$ret .= $this->Application->ParseBlock($block_params);
-			}
-			$this->Application->SetVar('c_id', $backup_category_id);
-
-			return $ret;
-		}
-
-		/**
-		 * Returns module information based on given module name or current category (relative to module root categories)
-		 *
-		 * @param Array $params
-		 * @param Array $category_ids category parent path (already as array)
-		 * @return Array
-		 */
-		function getCategoryModule($params, $category_ids)
-		{
-			if (isset($params['module'])) {
-				// get module by name specified
-				$module_info = $this->Application->findModule('Name', $params['module']);
-
-			}
-			elseif ($category_ids) {
-				// get module by category path
-				$module_root_categories = $this->getModuleRootCategories();
-				$common_categories = array_intersect($category_ids, $module_root_categories);
-				$module_category_id = array_shift($common_categories); // get 1st common category
-				$module_info = $this->Application->findModule('RootCat', $module_category_id);
-			}
-
-			return $module_info;
-		}
-
-		/**
-		 * Renders path to top catalog category
-		 *
-		 * @param Array $params
-		 * @param int $current_category
-		 * @return string
-		 */
-		function getHomeCategoryPath($params, $current_category)
-		{
-			$block_params['cat_id'] = $this->Application->findModule('Name', 'Core', 'RootCat'); // 0;
-			$block_params['no_editing'] = 1;
-			$block_params['current'] = $current_category == $block_params['cat_id'] ? 1 : 0;
-			$block_params['separator'] = $params['separator'];
-			$block_params['cat_name'] = $this->Application->ProcessParsedTag('m', 'RootCategoryName', $params);
-			$block_params['name'] = $this->SelectParam($params, 'root_cat_render_as,render_as');
-			return $this->Application->ParseBlock($block_params);
-		}
-
-		/**
-		 * Returns root categories from all modules
-		 *
-		 * @return Array
-		 */
-		function getModuleRootCategories()
-		{
-			static $root_categories = null;
-
-			if (!isset($root_categories)) {
-				$root_categories = Array ();
-				foreach ($this->Application->ModuleInfo as $module_name => $module_info) {
-					array_push($root_categories, $module_info['RootCat']);
-				}
-
-				$root_categories = array_unique($root_categories);
-			}
-
-			return $root_categories;
-		}
-
-		/**
-		 * Returns given category's parent path as array of id=>name elements
-		 *
-		 * @param int $main_category_id
-		 * @return Array
-		 */
-		function getCategoryParentPath($main_category_id)
-		{
-			static $cached_path = null;
-
-			if ($main_category_id == 0) {
-				// don't query path for "Home" category
-				return Array ();
-			}
-
-			if (!isset($cached_path[$main_category_id])) {
-				$ml_formatter =& $this->Application->recallObject('kMultiLanguage');
-				$navbar_field = $ml_formatter->LangFieldName('CachedNavBar');
-
-				$id_field = $this->Application->getUnitOption('c', 'IDField');
-				$table_name = $this->Application->getUnitOption('c', 'TableName');
-
-				$sql = 'SELECT '.$navbar_field.', ParentPath
-						FROM '.$table_name.'
-						WHERE '.$id_field.' = '.$main_category_id;
-				$category_data = $this->Conn->GetRow($sql);
-
-				$skip_category = $this->Application->findModule('Name', 'Core', 'RootCat');
-				$cached_path[$main_category_id] = Array ();
-				if ($category_data) {
-					$category_names = explode('&|&', $category_data[$navbar_field]);
-					$category_ids = explode('|', substr($category_data['ParentPath'], 1, -1));
-
-					foreach ($category_ids as $category_index => $category_id) {
-						if ($category_id == $skip_category) {
-							continue;
-						}
-						$cached_path[$main_category_id][$category_id] = $category_names[$category_index];
-					}
-				}
-			}
-			return $cached_path[$main_category_id];
-		}
-
-		 /**
-		 * Not tag, method for parameter
-		 * selection from list in this TagProcessor
-		 *
-		 * @param Array $params
-		 * @param string $possible_names
-		 * @return string
-		 * @access public
-		 */
-		function SelectParam($params, $possible_names)
-		{
-			if (!is_array($params)) return;
-			if (!is_array($possible_names))
-
-			$possible_names = explode(',', $possible_names);
-			foreach ($possible_names as $name)
-			{
-				if( isset($params[$name]) ) return $params[$name];
-			}
-			return false;
-		}
-
-		/**
-		 * Converts multi-dimensional category structure in one-dimensional option array (category_id=>category_name)
-		 *
-		 * @param Array $data
-		 * @param int $parent_category_id
-		 * @param int_type $language_id
-		 * @param int $theme_id
-		 * @param int $level
-		 * @return Array
-		 */
-		function _printChildren(&$data, $parent_category_id, $language_id, $theme_id, $level = 0)
-		{
-			if ($data['ThemeId'] != $theme_id && $data['ThemeId'] != 0) {
-				// don't show system templates from different themes
-				return Array ();
-			}
-
-			$ret = Array($parent_category_id => str_repeat('-', $level).' '.$data['l'.$language_id.'_Name']);
-
-			if ($data['children']) {
-				$level++;
-				foreach ($data['children'] as $category_id => $category_data) {
-					$ret = array_merge_recursive2($ret, $this->_printChildren($data['children'][$category_id], $category_id, $language_id, $theme_id, $level));
-				}
-			}
-
-			return $ret;
-		}
-
-		/**
-		 * Returns information about children under parent path (recursive)
-		 *
-		 * @param int $parent_category_id
-		 * @param int $language_count
-		 * @return Array
-		 */
-		function _getChildren($parent_category_id, $language_count)
-		{
-			$id_field = $this->Application->getUnitOption('c', 'IDField');
-
-			// get category children + parent category
-			$sql = 'SELECT *
-					FROM '.$this->Application->getUnitOption('c', 'TableName').'
-					WHERE ParentId = '.$parent_category_id.' OR '.$id_field.' = '.$parent_category_id.'
-					ORDER BY Priority DESC';
-			$categories = $this->Conn->Query($sql, $id_field);
-
-			$parent_data = $categories[$parent_category_id];
-			unset($categories[$parent_category_id]);
-
-			// no children for this category
-			$data = Array ('id' => $parent_data[$id_field], 'children' => false, 'ThemeId' => $parent_data['ThemeId']);
-			for ($i = 1; $i <= $language_count; $i++) {
-				$data['l'.$i.'_Name'] = $parent_data['l'.$i.'_Name'];
-			}
-
-			if (!$categories) {
-				// no children
-				return $data;
-			}
-
-			// category has children
-			foreach ($categories as $category_id => $category_data) {
-				$data['children'][$category_id] = $this->_getChildren($category_id, $language_count);
-			}
-
-			return $data;
-		}
-
-		/**
-		 * Generates OR retrieves from cache structure tree
-		 *
-		 * @return Array
-		 */
-		function &_getStructureTree()
-		{
-			// get cached version of structure tree
-			$sql = 'SELECT Data
-					FROM ' . TABLE_PREFIX . 'Cache
-					WHERE VarName = "StructureTree"';
-			$data = $this->Conn->GetOne($sql);
-
-			if ($data) {
-				$data = unserialize($data);
-
-				return $data;
-			}
-
-			// generate structure tree from scratch
-			$ml_helper =& $this->Application->recallObject('kMultiLanguageHelper');
-			/* @var $ml_helper kMultiLanguageHelper */
-
-			$language_count = $ml_helper->getLanguageCount();
-
-			$root_category = $this->Application->findModule('Name', 'Core', 'RootCat');
-			$data = $this->_getChildren($root_category, $language_count);
-
-			$fields_hash = 	Array (
-				'VarName'	=>	'StructureTree',
-				'Data'		=>	serialize($data),
-				'Cached'	=>	adodb_mktime(),
-			);
-
-			$this->Conn->doInsert($fields_hash, TABLE_PREFIX.'Cache', 'REPLACE');
-
-			return $data;
-		}
-
-		/**
-		 * Returns category structure as field option list
-		 *
-		 * @return Array
-		 */
-		function getStructureTreeAsOptions()
-		{
-			if (defined('IS_INSTALL') && IS_INSTALL) {
-				// no need to create category structure during install, because it's not used there
-				return Array ();
-			}
-
-			if (isset($this->_structureTree)) {
-				return $this->_structureTree;
-			}
-
-			$themes_helper =& $this->Application->recallObject('ThemesHelper');
-			/* @var $themes_helper kThemesHelper */
-
-			$data = $this->_getStructureTree();
-
-			$theme_id = (int)$themes_helper->getCurrentThemeId();
-			$root_category = $this->Application->findModule('Name', 'Core', 'RootCat');
-
-			$this->_structureTree = $this->_printChildren($data, $root_category, $this->Application->GetVar('m_lang'), $theme_id);
-
-			return $this->_structureTree;
-		}
-
-		/**
-		 * Replace links like "@@ID@@" to actual template names in given text
-		 *
-		 * @param string $text
-		 * @return string
-		 */
-		function replacePageIds($text)
-		{
-			if (!preg_match_all('/@@(\\d+)@@/', $text, $regs)) {
-				return $text;
-			}
-
-			$page_ids = $regs[1];
-
-			$sql = 'SELECT NamedParentPath, CategoryId
-					FROM ' . TABLE_PREFIX . 'Category
-					WHERE CategoryId IN (' . implode(',', $page_ids) . ')';
-			$templates = $this->Conn->GetCol($sql, 'CategoryId');
-
-			foreach ($page_ids as $page_id) {
-				if (!array_key_exists($page_id, $templates)) {
-					// internal page was deleted, but link to it was found in given content block data
-					continue;
-				}
-
-				$url_params = Array ('m_cat_id' => $page_id, 'pass' => 'm');
-				$page_url = $this->Application->HREF(strtolower($templates[$page_id]), '', $url_params);
-				/*if ($this->Application->IsAdmin()) {
-					$page_url = preg_replace('/&(admin|editing_mode)=[\d]/', '', $page_url);
-				}*/
-			$text = preg_replace('/@@' . $page_id . '@@/', $page_url, $text);
-			}
-
-			return $text;
-		}
-	}
\ No newline at end of file

Property changes on: branches/5.0.x/core/units/general/helpers/category_helper.php
___________________________________________________________________
Deleted: cvs2svn:cvs-rev
## -1 +0,0 ##
-1.3.2.7
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property