<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Статьи о программировании, все о программировании, исходники программ &#187; Excalibur</title>
	<atom:link href="http://statprog.ru/tag/excalibur/feed/" rel="self" type="application/rss+xml" />
	<link>http://statprog.ru</link>
	<description>Авторские статьи, исходники, программы.</description>
	<lastBuildDate>Thu, 12 Aug 2010 16:53:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Копирование музыки у друзей в SocialEngine Excalibur (Часть 2)</title>
		<link>http://statprog.ru/2009/09/13/kopirovanie-muzyki-u-druzej-v-socialengine-excalibur-chast-2/</link>
		<comments>http://statprog.ru/2009/09/13/kopirovanie-muzyki-u-druzej-v-socialengine-excalibur-chast-2/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 15:30:58 +0000</pubDate>
		<dc:creator>evteev</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Excalibur]]></category>
		<category><![CDATA[SocialEngine]]></category>

		<guid isPermaLink="false">http://statprog.ru/?p=356</guid>
		<description><![CDATA[Продолжаем говорить о моде “Копирование музыки у друзей”. В предыдущей статье я рассказал, как сделать эту возможность, но недавно обнаружена недоработка в этом моде, при удалении музыки владельцем удалялась она и у всех скопировавших эту музыку. Сейчас я расскажу, как &#8230; <a href="http://statprog.ru/2009/09/13/kopirovanie-muzyki-u-druzej-v-socialengine-excalibur-chast-2/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Продолжаем говорить о моде “<strong><a href="http://statprog.ru/2009/08/30/plagin-muzyka-kopirovanie-muzyki-u-druzej-v-socialengine-excalibur/">Копирование музыки у друзей</a></strong>”. В предыдущей статье я рассказал, как сделать эту возможность, но недавно обнаружена недоработка в этом моде, при удалении музыки владельцем удалялась она и у всех скопировавших эту музыку.</p>
<p>Сейчас я расскажу, как сделать, чтобы при удалении музыки владельцем права и сама музыка копировались одному из его друзей, которые скопировали его музыку.</p>
<p>Здесь все просто, необходимо произвести изменения всего в одном файле.<span id="more-356"></span></p>
<p><strong>Открыть: class_music.</strong><strong>php</strong><strong></strong></p>
<p><strong>Подсказка:</strong> Данный файл находится в папке include.</p>
<p><strong>Найти</strong></p>
<pre class="brush: php;">music_delete($music_id)</pre>
<p><strong>Заменить</strong></p>
<p><strong>Подсказка:</strong> Полностью заменить функцию music_delete() начиная с function music_delete($music_id) и заканчивая return TRUE; }</p>
<pre class="brush: php;">function music_delete($music_id)
{
	global $database, $url, $user, $admin;
	if( $this-&gt;user_id )
	{
		$music = $database-&gt;database_fetch_assoc($database-&gt;database_query(&quot;SELECT * FROM se_music WHERE music_user_id='{$this-&gt;user_id}' &amp;&amp; music_id='{$music_id}'&quot;));
	}

	elseif( $admin &amp;&amp; $admin-&gt;admin_exists )
	{
		$music = $database-&gt;database_fetch_assoc($database-&gt;database_query(&quot;SELECT * FROM se_music WHERE music_id='{$music_id}'&quot;));
	}

	if( empty($music) )
		return FALSE;

	$music_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&quot;SELECT owner_user_id FROM se_music WHERE music_id='{$music_id}' LIMIT 1&quot;));
	$owner_user_id = $music_tb[owner_user_id];

	if( strlen($owner_user_id) &gt; 0 )
	{
		if(strrchr($owner_user_id, ','))
		{
			$owner_user_id_text = explode(',', $owner_user_id);
			$owner_user_id_db = &quot;&quot;;
			$new_user_music = &quot;&quot;;
			foreach($owner_user_id_text as $owner_user_id)
			{
				if($new_user_music == &quot;&quot;)
					$new_user_music = $owner_user_id;

				if($owner_user_id != $new_user_music)
					$owner_user_id_db = $owner_user_id_db . &quot;&quot; . $owner_user_id . &quot;,&quot;;
			}
			$owner_user_id_db = trim(substr_replace($owner_user_id_db, &quot;&quot;, strlen($owner_user_id_db) - 1));
		}
		else
		{
			$new_user_music = $owner_user_id;
			$owner_user_id_db = '';
		}
		$userdir_old = $url-&gt;url_userdir($music['music_user_id']);
		$music_file_old = &quot;{$userdir_old}{$music['music_id']}.{$music['music_ext']}&quot;;
		$userdir_new = $url-&gt;url_userdir($new_user_music);
		$music_file_new = &quot;{$userdir_new}{$music['music_id']}.{$music['music_ext']}&quot;;

		if( file_exists($music_file_old) )
		{
			copy($music_file_old, $music_file_new);
			unlink($music_file_old);
		}
		$database-&gt;database_query(&quot;UPDATE `se_music` SET `music_user_id` = '{$new_user_music}', `owner_user_id` = '{$owner_user_id_db}' WHERE `music_id` = '{$music_id}' LIMIT 1&quot;);
	}
	else
	{
		$userdir = $url-&gt;url_userdir($music['music_user_id']);
		$music_file = &quot;{$userdir}{$music['music_id']}.{$music['music_ext']}&quot;;
		$database-&gt;database_query(&quot;DELETE FROM se_music WHERE music_id='{$music_id}' LIMIT 1&quot;);
		if( file_exists($music_file) )
			unlink($music_file);
	}
	return TRUE;
}</pre>
<p>Данную статью Вы также можете скачать в формате doc:<br />
<a href="http://statprog.ru/wp-content/copy_music_SocialEngine_Excalibur_2.rar">скачать</a></p>
<p><strong>Автор:<em> Евтеев Евгений Александрович</em></strong></p>
<p><strong>Email:<em> evteev_e2003@mail.ru</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://statprog.ru/2009/09/13/kopirovanie-muzyki-u-druzej-v-socialengine-excalibur-chast-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Плагин музыка &#8211; копирование музыки у друзей в SocialEngine Excalibur</title>
		<link>http://statprog.ru/2009/08/30/plagin-muzyka-kopirovanie-muzyki-u-druzej-v-socialengine-excalibur/</link>
		<comments>http://statprog.ru/2009/08/30/plagin-muzyka-kopirovanie-muzyki-u-druzej-v-socialengine-excalibur/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 04:37:40 +0000</pubDate>
		<dc:creator>evteev</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Excalibur]]></category>
		<category><![CDATA[SocialEngine]]></category>

		<guid isPermaLink="false">http://statprog.ru/?p=349</guid>
		<description><![CDATA[В этой статье поговорим о плагине “Музыка”, а именно о копировании музыки у друзей. А что тут говорить, такой возможности в плагине “Музыка” нет, так вот я покажу, как в несколько шагов реализовать такую возможность. Сначала необходимо добавить еще одно &#8230; <a href="http://statprog.ru/2009/08/30/plagin-muzyka-kopirovanie-muzyki-u-druzej-v-socialengine-excalibur/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В этой статье поговорим о плагине “Музыка”, а именно о копировании музыки у друзей. А что тут говорить, такой возможности в плагине “Музыка” нет, так вот я покажу, как в несколько шагов реализовать такую возможность.</p>
<p>Сначала необходимо добавить еще одно поле в таблицу «se_music», где хранятся записи о добавленным песнях. Выполним sql-запрос:</p>
<pre class="brush: sql;">ALTER TABLE `se_music` ADD `owner_user_id` text AFTER `music_user_id`</pre>
<p>Для работы функции «is_already_music()», которая возвращает логическую ложь в том случае, если у участника нет данной песни в его коллекции, пропишем ее в класс «user».<span id="more-349"></span></p>
<ol>
<li><strong>Открыть: class_user.php</strong><br />
<strong>Подсказка:</strong> Данный файл находится в папке include.<br />
<strong>Найти</strong><br />
<strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть. Данная часть кода находится внутри функции user_message_view ().</p>
<pre class="brush: php;">return array
    (
      'collaborators' =&gt; &amp;$collaborators,
      'pms'           =&gt; &amp;$pms
    );
  }
</pre>
<p><strong>Добавить после</strong></p>
<p><strong>Подсказка:</strong> Добавьте эти строки на новой строке после ранее найденных строк.</p>
<pre class="brush: php;">function is_already_music($music_id)
{
	global $database;

	$music_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&quot;SELECT owner_user_id FROM se_music WHERE music_id='{$music_id}' LIMIT 1&quot;));
	$owner_user_id = $music_tb[owner_user_id];

	if(substr_count($owner_user_id, $this-&gt;user_info['user_id']) == 0)
		return 0;
	else
		return 1;
	return 1;
}
</pre>
<p>Далее уже будем работать с файлами, отвечающими за вывод и добавление музыки.</li>
<li><strong>Открыть</strong><strong>: class_music.php</strong><br />
<strong>Найти </strong><br />
<strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть. Данная часть кода находится внутри функции music_list ().</p>
<pre class="brush: php;">if( $this-&gt;user_id ) $sql .= &quot;
      WHERE
        se_music.music_user_id='{$this-&gt;user_id}'
    &quot;;
</pre>
<p><strong>Заменить</strong></p>
<p><strong>Подсказка:</strong> Произведите замену ранее найденных строк.</p>
<pre class="brush: php;">if( $this-&gt;user_id ) $sql .= &quot;
      WHERE
        se_music.music_user_id='{$this-&gt;user_id}' OR FIND_IN_SET('{$this-&gt;user_id}', owner_user_id)&quot;;</pre>
</li>
<li><strong>Открыть</strong><strong>: browse_music.php</strong><br />
<strong>Найти </strong><br />
<strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть.</p>
<pre class="brush: php;">$music_object = new se_music();</pre>
<p><strong>Добавить</strong></p>
<p><strong>Подсказка:</strong> Добавьте эти строки на новой строке перед ранее найденными строками.</p>
<pre class="brush: php;">$music_id = $_GET['music_id'];
if( $_GET['task'] == &quot;copy&quot; &amp;&amp; $music_id &gt; 0)
{
	ob_end_clean();

	$music_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&quot;SELECT owner_user_id FROM se_music WHERE music_id='{$music_id}' LIMIT 1&quot;));
	$owner_user_id = trim($music_tb[owner_user_id]);

	if(strrchr($owner_user_id, ','))
	{
		$owner_user_id_text = explode(',', $owner_user_id);
		$owner_user_id_update = &quot;&quot;;
		foreach($owner_user_id_text as $owner_user_id)
		{
			if($owner_user_id != $user-&gt;user_info['user_id'])
				$owner_user_id_update = $owner_user_id_update . &quot;&quot; . $owner_user_id . &quot;,&quot;;
		}
		$owner_user_id_update = $owner_user_id_update . &quot;&quot; . $user-&gt;user_info['user_id'];
	}
	else
	{
		if($owner_user_id == $user-&gt;user_info['user_id'] || strlen($owner_user_id) == 0)
			$owner_user_id_update = $user-&gt;user_info['user_id'];
		if( strlen($owner_user_id) &gt; 0 )
			$owner_user_id_update = $owner_user_id . &quot;,&quot; . $user-&gt;user_info['user_id'];
	}
	$database-&gt;database_query(&quot;UPDATE `se_music` SET `owner_user_id` = '{$owner_user_id_update}' WHERE `music_id` = '{$music_id}' LIMIT 1&quot;);
}</pre>
</li>
<li><strong>Открыть</strong><strong>: user_music.php</strong><br />
<strong>Найти </strong><br />
<strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть.</p>
<pre class="brush: php;">$musiclist = $music-&gt;music_list();</pre>
<p><strong>Добавить</strong></p>
<p><strong>Подсказка:</strong> Добавьте эти строки на новой строке перед ранее найденными строками.</p>
<pre class="brush: php;">if( $task == &quot;removesong&quot; &amp;&amp; $music_id &gt; 0)
{
	ob_end_clean();

	$music_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&quot;SELECT owner_user_id FROM se_music WHERE music_id='{$music_id}' LIMIT 1&quot;));
	$owner_user_id = $music_tb[owner_user_id];

	if(strrchr($owner_user_id, ','))
	{
		$owner_user_id_text = explode(',', $owner_user_id);
		$owner_user_id_db = &quot;&quot;;
		foreach($owner_user_id_text as $owner_user_id)
		{
			if($owner_user_id != $user-&gt;user_info['user_id'])
				$owner_user_id_db = $owner_user_id_db . &quot;&quot; . $owner_user_id . &quot;,&quot;;
		}
		$owner_user_id_db = trim(substr_replace($owner_user_id_db, &quot;&quot;, strlen($owner_user_id_db) - 1));
	}
	else
	{
		if($owner_user_id == $user-&gt;user_info['user_id'])
			$owner_user_id_text = '';
	}
	$database-&gt;database_query(&quot;UPDATE `se_music` SET `owner_user_id` = '{$owner_user_id_db}' WHERE `music_id` = '{$music_id}' LIMIT 1&quot;);
}
</pre>
</li>
<li><strong>Открыть</strong><strong>: <span>browse_music.tpl</span></strong><br />
<strong>Найти </strong><br />
<strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть.</p>
<pre class="brush: php;">{if $user-&gt;user_exists &amp;&amp; $user-&gt;level_info.level_music_allow_downloads}
        &lt;div style='margin-top: 4px;'&gt;
          &lt;a type=&quot;application/force-download&quot; href=&quot;{$media_path}&quot;&gt;{lang_print id=4000095}&lt;/a&gt;
        &lt;/div&gt;
        {/if}
      &lt;/td&gt;
</pre>
<p><strong>Добавить после</strong><br />
<strong>Подсказка:</strong> Добавьте эти строки на новой строке после ранее найденных строк.</p>
<pre class="brush: php;">&lt;td style='vertical-align: top; padding-left: 10px;' width='50'&gt;
	  {if $user-&gt;user_friended($browse_music_list[browse_music_list_loop].user_id, 1) &amp;&amp; $user-&gt;is_already_music($browse_music_list[browse_music_list_loop].music_id) == 0}
        &lt;div style='font-weight: bold; font-size: 8pt; text-align: right;'&gt;&lt;a href='browse_music.php?task=copy&amp;music_id={$browse_music_list[browse_music_list_loop].music_id}' title='Скопировать музыку к себе'&gt;Копировать&lt;/a&gt;&lt;/div&gt;
	  {/if}
      &lt;/td&gt;
</pre>
</li>
<li><strong>Открыть</strong><strong>: user_music.tpl</strong><br />
<strong>Найти </strong><br />
<strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть.</p>
<pre class="brush: php;">{assign var='media_dir' value=$url-&gt;url_userdir($user-&gt;user_info.user_id)}
{section name=music_loop loop=$musiclist}
</pre>
<p><strong>Заменить</strong></p>
<p><strong>Подсказка:</strong> Произведите замену ранее найденных строк.</p>
<pre class="brush: php;">{section name=music_loop loop=$musiclist}
      {assign var='media_dir' value=$url-&gt;url_userdir($musiclist[music_loop].music_user_id)}
</pre>
<p><strong>Найти </strong></p>
<p><strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть.</p>
<pre class="brush: php;">&lt;input type='checkbox' name='delete_music_{$musiclist[music_loop].music_id}' value='1' /&gt;</pre>
<p><strong>Заменить</strong><strong> </strong></p>
<p><strong>Подсказка:</strong> Произведите замену ранее найденных строк.</p>
<pre class="brush: php;">{if $musiclist[music_loop].music_user_id == $user-&gt;user_info.user_id}&lt;input type='checkbox' name='delete_music_{$musiclist[music_loop].music_id}' value='1' /&gt;{/if}</pre>
<p><strong>Найти </strong></p>
<p><strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть.</p>
<pre class="brush: php;">&lt;span class=&quot;seMusicTitleEdit&quot;&gt;&amp;nbsp;(&lt;a href=&quot;javascript:void(0);&quot; onclick=&quot;SocialEngine.Music.editMusicTitle({$musiclist[music_loop].music_id});&quot;&gt;{lang_print id=187}&lt;/a&gt;)&lt;/span&gt;</pre>
<p><strong>Заменить</strong></p>
<p><strong>Подсказка:</strong> Произведите замену ранее найденных строк.</p>
<pre class="brush: php;">{if $musiclist[music_loop].music_user_id == $user-&gt;user_info.user_id}&lt;span class=&quot;seMusicTitleEdit&quot;&gt;&amp;nbsp;(&lt;a href=&quot;javascript:void(0);&quot; onclick=&quot;SocialEngine.Music.editMusicTitle({$musiclist[music_loop].music_id});&quot;&gt;{lang_print id=187}&lt;/a&gt;)&lt;/span&gt;{/if}</pre>
<p><strong> </strong></p>
<p><strong>Найти </strong></p>
<p><strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть.</p>
<pre class="brush: php;">&lt;span class=&quot;seMusicDelete&quot;&gt;&lt;a href=&quot;javascript:void(0);&quot; onclick=&quot;SocialEngine.Music.deleteMusic({$musiclist[music_loop].music_id});&quot;&gt;{lang_print id=155}&lt;/a&gt;&amp;nbsp;&lt;/span&gt;</pre>
<p><strong>Заменить</strong><strong> </strong></p>
<p><strong>Подсказка:</strong> Произведите замену ранее найденных строк.</p>
<pre class="brush: php;">{if $musiclist[music_loop].music_user_id == $user-&gt;user_info.user_id}
&lt;span class=&quot;seMusicDelete&quot;&gt;&lt;a href=&quot;javascript:void(0);&quot; onclick=&quot;SocialEngine.Music.deleteMusic({$musiclist[music_loop].music_id});&quot;&gt;{lang_print id=155}&lt;/a&gt;&amp;nbsp;&lt;/span&gt;
{else}
&lt;span class=&quot;seMusicDelete&quot;&gt;&lt;a href=&quot; user_music.php?task=removesong&amp;music_id={$musiclist[music_loop].music_id}&quot;&gt;{lang_print id=155}&lt;/a&gt;&amp;nbsp;&lt;/span&gt;
{/if}
</pre>
</li>
</ol>
<p>Готово! Теперь на странице «browse_music.php» напротив музыки будет показана ссылка «Копировать» в том случае, если ее нет у участника. На странице «user_music.php» можно будет удалить музыку, которую скопировали от друзей.</p>
<p>Если удобнее читать данную статью в программе Word, можно скачать по ссылке <a title="Плагин музыка – копирование музыки у друзей в SocialEngine Excalibur" href="http://statprog.ru/wp-content/kopirovanie-muzyki.rar" target="_blank">Плагин музыка – копирование музыки у друзей в SocialEngine Excalibur</a></p>
<p><strong>Автор:<em> Евтеев Евгений Александрович</em></strong><br />
<strong>Email:<em> evteev_e2003@mail.ru</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://statprog.ru/2009/08/30/plagin-muzyka-kopirovanie-muzyki-u-druzej-v-socialengine-excalibur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Добавление фотографии к участникам в блоке &#8216;Сейчас на сайте&#8217; в SocialEngine Excalibur</title>
		<link>http://statprog.ru/2009/08/21/dobavlenie-fotografii-k-uchastnikam-v-bloke-sejchas-na-sajte-v-socialengine-excalibur/</link>
		<comments>http://statprog.ru/2009/08/21/dobavlenie-fotografii-k-uchastnikam-v-bloke-sejchas-na-sajte-v-socialengine-excalibur/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 17:11:32 +0000</pubDate>
		<dc:creator>evteev</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Excalibur]]></category>
		<category><![CDATA[SocialEngine]]></category>

		<guid isPermaLink="false">http://statprog.ru/?p=340</guid>
		<description><![CDATA[В движке SocialEngine в блоке &#8216;Сейчас на сайте&#8217; отображаются имя и фамилия участников, которые в данный момент находятся на сайте. Отображение только этих данных как-то ухудшают видимость этого блока, с помощью внедрения в код нескольких строчек и в этом блоке &#8230; <a href="http://statprog.ru/2009/08/21/dobavlenie-fotografii-k-uchastnikam-v-bloke-sejchas-na-sajte-v-socialengine-excalibur/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В движке SocialEngine в блоке &#8216;Сейчас на сайте&#8217; отображаются имя и фамилия участников, которые в данный момент находятся на сайте. Отображение только этих данных как-то ухудшают видимость этого блока, с помощью внедрения в код нескольких строчек и в этом блоке будет отображаться и фотография участника наряду с именем и фамилией.</p>
<p>Что для этого нужно сделать?<span id="more-340"></span></p>
<ol>
<li><strong>Открыть: functions_general.</strong><strong>php</strong><strong></strong>
<p><strong>Подсказка:</strong> Данный файл находится в папке include.</p>
<p><strong>Найти</strong></p>
<p><strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть. Данная строка находится внутри функции online_users().</p>
<blockquote><p><code>$online_user-&gt;user_info['user_displayname'] = $online_user_info['user_displayname'];</code></p></blockquote>
<p><strong>Добавить</strong><strong> </strong><strong>после</strong><strong></strong></p>
<p><strong>Подсказка:</strong> Добавьте эти строки на новой строке после ранее найденных строк.</p>
<blockquote><p><code>$view_user_photo = $database-&gt;database_query("SELECT user_id, user_photo FROM se_users WHERE user_id='" . $online_user_info['user_id'] . "' LIMIT 1");</p>
<p>$views_user_photo = $database-&gt;database_fetch_assoc($view_user_photo);</p>
<p>$online_user-&gt;user_info['user_photo']                          = $views_user_photo['user_photo'];</code></p></blockquote>
</li>
<li><strong>Открыть</strong><strong>: user_home.tpl</strong>
<p><strong>Найти</strong><strong></strong></p>
<blockquote><p><code>&lt;a href='{$url-&gt;url_create("profile", $online_users[0][online_loop]-&gt;user_info.user_username)}'&gt;{$online_users[0][online_loop]-&gt;user_displayname}&lt;/a&gt;</code></p></blockquote>
<p><strong>Заменить</strong></p>
<p><strong>Подсказка:</strong> Произведите замену ранее найденных строк.</p>
<blockquote><p><code>&lt;center&gt;&lt;img class='reflect' src='{$online_users[0][online_loop]-&gt;user_photo("./images/nophoto.gif")}' border='0'&gt;&lt;br&gt;&lt;a href='{$url-&gt;url_create("profile", $online_users[0][online_loop]-&gt;user_info.user_username)}'&gt;{$online_users[0][online_loop]-&gt;user_displayname}&lt;/a&gt;&lt;/center&gt;</code></p></blockquote>
</li>
</ol>
<p><strong>Автор:<em> Евтеев Евгений Александрович</em></strong></p>
<p><strong>Email:<em> evteev_e2003@mail.ru</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://statprog.ru/2009/08/21/dobavlenie-fotografii-k-uchastnikam-v-bloke-sejchas-na-sajte-v-socialengine-excalibur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Улучшенный поиск по группам в SocialEngine Excalibur</title>
		<link>http://statprog.ru/2009/08/15/uluchshennyj-poisk-po-gruppam-v-socialengine-excalibur/</link>
		<comments>http://statprog.ru/2009/08/15/uluchshennyj-poisk-po-gruppam-v-socialengine-excalibur/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 14:54:44 +0000</pubDate>
		<dc:creator>evteev</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Excalibur]]></category>
		<category><![CDATA[SocialEngine]]></category>

		<guid isPermaLink="false">http://statprog.ru/?p=338</guid>
		<description><![CDATA[В этой статье я расскажу, как сделать поиск по группам с такими параметрами как точный и приблизительный поиск с поиском по названию, описанию и лидеру группы. Сделать это очень просто: несколько строчек кода на php, пару sql-запросов и несколько полей &#8230; <a href="http://statprog.ru/2009/08/15/uluchshennyj-poisk-po-gruppam-v-socialengine-excalibur/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В этой статье я расскажу, как сделать поиск по группам с такими параметрами как точный и приблизительный <strong>поиск</strong> с поиском по названию, описанию и лидеру <strong>группы</strong>. Сделать это очень просто: несколько строчек кода на <strong>php</strong>, пару <strong>sql-запросов</strong> и несколько полей в <strong>html</strong>.<span id="more-338"></span></p>
<p>Выполним пару действий шаг за шагом:</p>
<ol>
<li><strong>Открыть: browse_groups.</strong><strong>php</strong><br />
	<strong>Найти</strong><br />
	<strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть.</p>
<pre class="brush: php;">
		else
		{
			$where .= &quot; AND se_groups.group_groupcat_id='{$groupcat['groupcat_id']}'&quot;;
			$groupsubcat = $groupcat;
			$groupcat = $database-&gt;database_fetch_assoc($database-&gt;database_query(&quot;SELECT groupcat_id, groupcat_title FROM se_groupcats WHERE groupcat_id='{$groupcat['groupcat_dependency']}' LIMIT 1&quot;));
		}
	}
}</pre>
<p><strong>Добавить после</strong></p>
<p><strong>Подсказка:</strong> Добавьте эти строки на новой строке после ранее найденных строк.</p>
<pre class="brush: php;">//GROUPS SEARCH
if(isset($_POST['submit']) &amp;&amp; $_POST['field_search'] != '')
{
	if($_POST['type_search2'] == 0)
		$search_f = &quot;group_title&quot;;
	elseif($_POST['type_search2'] == 1)
		$search_f = &quot;group_desc&quot;;
	else
	{
		$user_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&quot;SELECT user_id FROM se_users WHERE user_fname LIKE '%&quot; . $_POST['field_search'] . &quot;%' LIMIT 1&quot;));
		$_POST['field_search'] = $user_tb[user_id];
		$search_f = &quot;group_user_id&quot;;
	}

	if($_POST['type_search'] == 1)
		$search_f2 = &quot;= '&quot; . $_POST['field_search'] . &quot;'&quot;;
	else
		$search_f2 = &quot;LIKE '%&quot; . $_POST['field_search'] . &quot;%'&quot;;

	$where .= &quot; AND se_groups.{$search_f} {$search_f2}&quot;;
}

//END GROUPS SEARCH</pre>
</li>
<li><strong>Открыть: browse_groups.tpl</strong><strong>Найти</strong>
<pre class="brush: php;">&lt;div style='text-align: center; line-height: 12pt; margin-top: 5px;'&gt;
{lang_print}&amp;nbsp;
&lt;select class='group_small' name='s' onchange=&quot;window.location.href='browse_groups.php?v={$v}&amp;s='+this.options[this.selectedIndex].value;&quot;&gt;
&lt;option value='group_totalmembers DESC'{if $s == &quot;group_totalmembers DESC&quot;} SELECTED{/if}&gt;{lang_print}&lt;/option&gt;
&lt;option value='group_datecreated DESC'{if $s == &quot;group_datecreated DESC&quot;} SELECTED{/if}&gt;{lang_print id=2000130}&lt;/option&gt;
&lt;/select&gt;
&lt;/div&gt;
&lt;/div&gt;</pre>
<p><strong>Добавить после</strong></p>
<p><strong>Подсказка:</strong> Добавьте эти строки на новой строке после ранее найденных строк.</p>
<pre class="brush: xml;">&lt;form action='browse_groups.php' method='post'&gt;
&lt;div style='margin-top: 10px; padding: 10px; background: #F2F2F2; border: 1px solid #BBBBBB; font-weight: bold;'&gt;
&lt;div style='text-align: center; line-height: 12pt;'&gt;Поиск групп:&lt;/div&gt;
&lt;div style='text-align: left; line-height: 12pt; margin-top: 5px; border: 1px solid #BBBBBB;'&gt;
&lt;input type='radio' name='type_search' value='1' CHECKED&gt;Точный поиск
&lt;br&gt;
&lt;input type='radio' name='type_search' value='0'&gt;Приблизительный
&lt;/div&gt;
&lt;div style='text-align: left; line-height: 12pt; margin-top: 5px; border: 1px solid #BBBBBB;'&gt;
&lt;input type='radio' name='type_search2' value='0' CHECKED&gt;По названию
&lt;br&gt;
&lt;input type='radio' name='type_search2' value='1'&gt;По описанию
&lt;br&gt;
&lt;input type='radio' name='type_search2' value='2'&gt;По лидеру
&lt;/div&gt;
&lt;div style='text-align: center; line-height: 12pt; margin-top: 5px; '&gt;
&lt;input type='input' name='field_search' value='' style='width: 180px;'&gt;
&lt;br&gt;&lt;br&gt;
&lt;input type='submit' name='submit' value='Выполнить поиск'&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/form&gt;</pre>
</li>
</ol>
<p>После выполнения этих простых действий на странице обзора групп появятся новые поля для лучшего поиска групп по различным критериям.</p>
<p><strong>Автор:<em> Евтеев Евгений Александрович</em></strong></p>
<p><strong>Email:<em> evteev_e2003@mail.ru</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://statprog.ru/2009/08/15/uluchshennyj-poisk-po-gruppam-v-socialengine-excalibur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Добавление полей страна, регион и город в расширенный поиск в SocialEngine Excalibur</title>
		<link>http://statprog.ru/2009/08/15/dobavlenie-polej-strana-region-i-gorod-v-rasshirennyj-poisk-v-socialengine-excalibur/</link>
		<comments>http://statprog.ru/2009/08/15/dobavlenie-polej-strana-region-i-gorod-v-rasshirennyj-poisk-v-socialengine-excalibur/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 09:56:37 +0000</pubDate>
		<dc:creator>evteev</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Excalibur]]></category>
		<category><![CDATA[SocialEngine]]></category>

		<guid isPermaLink="false">http://statprog.ru/?p=332</guid>
		<description><![CDATA[В прошлой статье я рассказал Вам о решении проблемы с добавлением полей страна, регион и город в профиль в движок SocialEngine Excalibur, сегодня мы добавим эти поля в расширенный поиск – это тоже немало важный апгрейд. Написание этой статьи меня &#8230; <a href="http://statprog.ru/2009/08/15/dobavlenie-polej-strana-region-i-gorod-v-rasshirennyj-poisk-v-socialengine-excalibur/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В прошлой статье я рассказал Вам о решении проблемы с добавлением полей <strong>страна</strong>, <strong>регион</strong> и <strong>город</strong> в профиль в <strong>движок</strong> <strong><a href="http://statprog.ru/2009/08/12/dobavlenie-stran-regionov-i-gorodov-v-socialengine-excalibur/">SocialEngine Excalibur</a></strong>, сегодня мы добавим эти поля в <strong>расширенный поиск</strong> – это тоже немало важный апгрейд. Написание этой статьи меня подтолкнул вопрос, зачем нужны поля <strong>страна</strong>, <strong>регион</strong> и <strong>город</strong> в профиле участника, если нет возможности найти участников, используя данные поля?<span id="more-332"></span></p>
<p>Для добавления данных полей необходимо выполнить пару шагов:</p>
<ol>
<li><strong>Открыть: search_advanced.</strong><strong>php</strong><br />
<strong>Найти</strong><br />
<strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть.</p>
<blockquote><p><code>$search_query = "<strong>SELECT</strong> se_users.user_id, se_users.user_username, se_users.user_fname, se_users.user_lname, se_users.user_photo <strong>FROM</strong> se_profilevalues LEFT JOIN se_users ON se_profilevalues.profilevalue_user_id=se_users.user_id <strong>LEFT JOIN</strong> se_levels ON se_levels.level_id=se_users.user_level_id <strong>WHERE</strong> se_users.user_profilecat_id='{$cat_selected}' <strong>AND</strong> se_users.user_verified='1' <strong>AND</strong> se_users.user_enabled='1' <strong>AND</strong> (se_users.user_search='1' <strong>OR</strong> se_levels.level_profile_search='0')";<br />
if($user_online == 1) { $search_query .= " <strong>AND</strong> user_lastactive&gt;'".(time()-10*60)."' <strong>AND</strong> user_invisible=0"; }<br />
if($user_withphoto == 1) { $search_query .= " <strong>AND</strong> user_photo &lt;&gt; ''"; }<br />
if($field-&gt;field_query != "") { $search_query .= " <strong>AND</strong> ".$field-&gt;field_query; }</code></p></blockquote>
<p><strong>Заменить</strong><br />
<strong>Подсказка:</strong> Произведите замену ранее найденных строк.</p>
<blockquote><p><code>$search_query = "<strong>SELECT</strong> se_users.user_id, se_users.user_username, se_users.user_fname, se_users.user_lname, se_users.user_photo <strong>FROM</strong> se_profilevalues <strong>LEFT JOIN</strong> se_users <strong>ON</strong> se_profilevalues.profilevalue_user_id=se_users.user_id <strong>LEFT JOIN</strong> se_levels <strong>ON</strong> se_levels.level_id=se_users.user_level_id <strong>LEFT JOIN</strong> cites_profilevalues <strong>ON</strong> se_profilevalues.profilevalue_user_id=cites_profilevalues.profilevalue_id <strong>WHERE</strong> se_users.user_profilecat_id='{$cat_selected}' <strong>AND</strong> se_users.user_verified='1' <strong>AND</strong> se_users.user_enabled='1' <strong>AND</strong> (se_users.user_search='1' <strong>OR</strong> se_levels.level_profile_search='0')";<br />
if($user_online == 1) { $search_query .= " <strong>AND</strong> user_lastactive&gt;'".(time()-10*60)."' <strong>AND</strong> user_invisible=0"; }<br />
if($user_withphoto == 1) { $search_query .= " <strong>AND</strong> user_photo &lt;&gt; ''"; }<br />
if($field-&gt;field_query != "") { $search_query .= " <strong>AND</strong> se_profilevalues.".$field-&gt;field_query; }<br />
if(isset($_POST['dhtmlgoodies_country']) &amp;&amp; $_POST['dhtmlgoodies_country'] &gt; 0)<br />
$search_query .= " <strong>AND</strong> cites_profilevalues.profilevalue_7 = '" . $_POST['dhtmlgoodies_country'] . "'";<br />
if(isset($_POST['dhtmlgoodies_region']) &amp;&amp; $_POST['dhtmlgoodies_region'] &gt; 0)<br />
$search_query .= " <strong>AND</strong> cites_profilevalues.profilevalue_8 = '" . $_POST['dhtmlgoodies_region'] . "'";<br />
if(isset($_POST['dhtmlgoodies_city']) &amp;&amp; $_POST['dhtmlgoodies_city'] &gt; 0)<br />
$search_query .= " <strong>AND</strong> cites_profilevalues.profilevalue_9 = '" . $_POST['dhtmlgoodies_city'] . "'";</code></p></blockquote>
<p><strong>Найти</strong><br />
<strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть.</p>
<blockquote><p><code>// SET GLOBAL PAGE TITLE<br />
$global_page_title[0] = 926;<br />
$global_page_description[0] = 1088;<br />
}</code></p></blockquote>
<p><strong>Добавить после</strong><br />
<strong>Подсказка:</strong> Добавьте эти строки на новой строке после ранее найденных строк.</p>
<blockquote><p><code>// GET COUNTRY, REGION AND CITY<br />
$sql = $database-&gt;database_query ("<strong>SELECT</strong> * <strong>FROM</strong> country");<br />
while ($country_bd = $database-&gt;database_fetch_assoc ($sql))<br />
{<br />
if(isset($_POST['dhtmlgoodies_country']) &amp;&amp; $country_bd[country_id] == $_POST['dhtmlgoodies_country'])<br />
$country_sel = " SELECTED";<br />
else<br />
$country_sel = "";</code></p>
<p>$country .= &laquo;&lt;option value=&#8217;&raquo; . $country_bd[country_id] . &laquo;&#8216;&raquo; . $country_sel . &laquo;&gt;&raquo; . $country_bd[name] . &laquo;&lt;/option&gt;\n&raquo;;<br />
}</p>
<p>if(isset($_POST['dhtmlgoodies_region']))<br />
{<br />
$region_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&laquo;<strong>SELECT</strong> region_id, name <strong>FROM</strong> region <strong>WHERE</strong> region_id=&#8217;&raquo;.$_POST['dhtmlgoodies_region'].&raquo;&#8216; <strong>LIMIT</strong> 1&#8243;));<br />
if(strlen($region_tb[name]) &gt; 1)<br />
$region .= &laquo;&lt;option value=&#8217;&raquo; . $region_tb[region_id] . &laquo;&#8216; SELECTED&gt;&raquo; . $region_tb[name] . &laquo;&lt;/option&gt;\n&raquo;;<br />
}</p>
<p>if(isset($_POST['dhtmlgoodies_city']))<br />
{<br />
$city_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&laquo;<strong>SELECT</strong> city_id, name <strong>FROM</strong> city <strong>WHERE</strong> city_id=&#8217;&raquo;.$_POST['dhtmlgoodies_city'].&raquo;&#8216; <strong>LIMIT</strong> 1&#8243;));<br />
if(strlen($city_tb[name]) &gt; 1)<br />
$city .= &laquo;&lt;option value=&#8217;&raquo; . $city_tb[city_id] . &laquo;&#8216; SELECTED&gt;&raquo; . $city_tb[name] . &laquo;&lt;/option&gt;\n&raquo;;<br />
}<br />
$smarty-&gt;assign(&#8216;country&#8217;, $country);<br />
$smarty-&gt;assign(&#8216;region&#8217;, $region);<br />
$smarty-&gt;assign(&#8216;city&#8217;, $city);<br />
// END GET COUNTRY, REGION AND CITY</p></blockquote>
</li>
<li><strong>Открыть: search_advanced.tpl</strong><br />
<strong>Найти</strong></p>
<blockquote><p><code>&lt;/div&gt;<br />
{/section}<br />
{/section}<br />
{/section}</code></p></blockquote>
<p><strong>Добавить после</strong><br />
<strong>Подсказка:</strong> Добавьте эти строки на новой строке после ранее найденных строк.</p>
<blockquote><p><code>&lt;table cellpadding='0' cellspacing='0' style='padding-top: 5px;'&gt;<br />
&lt;tr&gt;&lt;td&gt;<br />
&lt;div style='font-weight: bold; margin-top: 5px;'&gt;Страна проживания&lt;/div&gt;<br />
&lt;select name='dhtmlgoodies_country' id='dhtmlgoodies_country' onchange="getRegionList(this.value);"&gt;<br />
&lt;option id='op' value='-1'&gt;[ Страна ]&lt;/option&gt;<br />
{$country}&lt;/select&gt;<br />
&lt;/div&gt;<br />
&lt;div style='font-weight: bold; margin-top: 5px;'&gt;Регион проживания&lt;/div&gt;<br />
&lt;select name='dhtmlgoodies_region' id='dhtmlgoodies_region' onchange="getCityList(this.value);"&gt;<br />
&lt;option id='op' value='-1'&gt;[ Регион ]&lt;/option&gt;<br />
{$region}&lt;/select&gt;<br />
&lt;/div&gt;<br />
&lt;div style='font-weight: bold; margin-top: 5px;'&gt;Город проживания&lt;/div&gt;<br />
&lt;select name='dhtmlgoodies_city' id='dhtmlgoodies_city'&gt;<br />
&lt;option id='op' value='-1'&gt;[ Город ]&lt;/option&gt;<br />
{$city}&lt;/select&gt;<br />
&lt;/div&gt;<br />
&lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;</code></p></blockquote>
</li>
</ol>
<p>Все! Найти участников теперь можно по стране, региону и городу проживания.</p>
<p><a href="http://statprog.ru/wp-content/dobavlenie-polyei-strana-region-i-gorod-v-rasshirennyi-poisk-v-SocialEngine-Ekskalibur.rar">Скачать статью в формате word (.doc)</a></p>
<p>Вы ожидали больше шагов? Извините, что все так просто. Если у Вас возникнут вопросы, пишите мне на мыло, разберемся.</p>
<p><strong>Автор: <em>Евтеев Евгений Александрович</em></strong></p>
<p><strong>Email: <em>evteev_e2003@mail.ru</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://statprog.ru/2009/08/15/dobavlenie-polej-strana-region-i-gorod-v-rasshirennyj-poisk-v-socialengine-excalibur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Добавление полей страна, регион и город в SocialEngine Excalibur</title>
		<link>http://statprog.ru/2009/08/12/dobavlenie-stran-regionov-i-gorodov-v-socialengine-excalibur/</link>
		<comments>http://statprog.ru/2009/08/12/dobavlenie-stran-regionov-i-gorodov-v-socialengine-excalibur/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 10:50:32 +0000</pubDate>
		<dc:creator>evteev</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Excalibur]]></category>
		<category><![CDATA[SocialEngine]]></category>

		<guid isPermaLink="false">http://statprog.ru/?p=321</guid>
		<description><![CDATA[SocialEngine Excalibur Мне и моему другу захотелось создать свою социальную сеть, перебрали множество движков и остановились на SocialEngine Excalibur 3.15. По нашему мнению, SocialEngine Excalibur &#8211; это отличный движок для создания своей социальной сети, множество настроек, плагинов, но самое главное &#8230; <a href="http://statprog.ru/2009/08/12/dobavlenie-stran-regionov-i-gorodov-v-socialengine-excalibur/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1 class="titlepage">SocialEngine Excalibur</h1>
<p>Мне и моему другу захотелось создать свою социальную сеть, перебрали множество движков и остановились на <strong>SocialEngine Excalibur 3.15</strong>. По нашему мнению, <strong>SocialEngine Excalibur</strong> &#8211; это отличный движок для создания своей социальной сети, множество настроек, плагинов, но самое главное &#8211; серьезно мощный и простой в понимании код скриптов. Если имеются знания в таких языках как html, php и JavaScript, можно с легкостью переписать код скриптов <strong>SocialEngine Excalibur</strong> под свои нужды.</p>
<p>У нас возникла проблема, когда необходимо было добавить новые поля в профиль участника: <strong>страну</strong>, <strong>регион</strong> и <strong>город</strong>. В скрипте <strong>SocialEngine Excalibur</strong>, который имеется у нас, была база с этими данными, в файлах присутствовал код, ответственен за работу с данными полями. Но возник вопрос, почему при редактировании профиля не было этих полей?</p>
<p>Сначала искали ответ на этот вопрос на форуме <strong>SocialEngine Excalibur</strong>, даже создали свою тему, но ответа так и не получили. Я решил, что ответ мы не получим и если получим, то не скоро. Было принято решение сделать все своими руками, применив знания программирования.</p>
<h3 class="addonpage">SocialEngine Excalibur</h3>
<p>Для того чтобы поля «<strong>Страна</strong>», «<strong>Регион</strong>» и «<strong>Город</strong>» появились в <strong>SocialEngine Excalibur</strong> в разделе «<strong>Редактировать профиль</strong>» необходимо:<span id="more-321"></span></p>
<ol>
<li>Импортировать данные из файла <a href="http://statprog.ru/wp-content/cities.rar" target="_blank">cities.sql</a> в Вашу базу данных, выполнив <strong>запрос SQL</strong> или импорт файла целиком в <strong>phpmyadmin</strong>.</li>
<li><strong>Открыть: user_editprofile.tpl</strong><br />
<strong>Найти</strong><br />
<strong>Подсказка:</strong> Возможно, здесь приведена не вся строка, а лишь ее часть.</p>
<blockquote><p><code>&lt;div class='form_desc'&gt;{lang_print id=$fields[field_loop].field_desc}&lt;/div&gt;</code></p>
<p>{capture assign=&#8217;current_subnet&#8217;}{lang_print id=$user-&gt;subnet_info.subnet_name}{/capture}</p>
<p>{if $fields[field_loop].field_id == $setting.setting_subnet_field1_id || $fields[field_loop].field_id == $setting.setting_subnet_field2_id}{lang_sprintf id=766 1=$current_subnet}{/if}</p>
<p>{capture assign=&#8217;field_error&#8217;}{lang_print id=$fields[field_loop].field_error}{/capture}</p>
<p>{if $field_error != &laquo;&raquo;}&lt;div class=&#8217;form_error&#8217;&gt;&lt;img src=&#8217;./images/icons/error16.gif&#8217; border=&#8217;0&#8242; class=&#8217;icon&#8217;&gt; {$field_error}&lt;/div&gt;{/if}</p>
<p>&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p>
<p>{/section}</p></blockquote>
<p><strong>Добавить после</strong></p>
<p><strong>Подсказка:</strong> Добавьте эти строки на новой строке после ранее найденных строк.</p>
<blockquote><p><code>{if $cat_id == 3}</code></p>
<p>&lt;tr&gt;</p>
<p>&lt;td class=&#8217;form1&#8242; width=&#8217;150&#8242;&gt;Страна&lt;/td&gt;</p>
<p>&lt;td class=&#8217;form2&#8242;&gt;</p>
<p>&lt;div&gt;&lt;select name=&#8217;dhtmlgoodies_country&#8217; id=&#8217;dhtmlgoodies_country&#8217; onchange=&raquo;getRegionList(this.value);&raquo;&gt;</p>
<p>&lt;option id=&#8217;op&#8217; value=&#8217;-1&#8242;&gt;&lt;/option&gt;</p>
<p>{$country}&lt;/select&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;div id=&#8217;dhtmlgoodies_country&#8217;&gt;</p>
<p>Страна, в которой Вы в текущий момент проживаете.</p>
<p>&lt;/div&gt;</p>
<p>&lt;div class=&#8217;form_desc&#8217;&gt;&lt;/div&gt;</p>
<p>&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p>
<p>&lt;tr&gt;</p>
<p>&lt;tr&gt;</p>
<p>&lt;td class=&#8217;form1&#8242; width=&#8217;150&#8242;&gt;Регион&lt;/td&gt;</p>
<p>&lt;td class=&#8217;form2&#8242;&gt;</p>
<p>&lt;div&gt;&lt;select name=&#8217;dhtmlgoodies_region&#8217; id=&#8217;dhtmlgoodies_region&#8217; onchange=&raquo;getCityList(this.value);&raquo;&gt;</p>
<p>&lt;option id=&#8217;op&#8217; value=&#8217;-1&#8242;&gt;&lt;/option&gt;</p>
<p>{$region}&lt;/select&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;div id=&#8217;dhtmlgoodies_region&#8217;&gt;</p>
<p>Регион, в котором Вы в текущий момент проживаете.</p>
<p>&lt;/div&gt;</p>
<p>&lt;div class=&#8217;form_desc&#8217;&gt;&lt;/div&gt;</p>
<p>&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p>
<p>&lt;tr&gt;</p>
<p>&lt;td class=&#8217;form1&#8242; width=&#8217;150&#8242;&gt;Город&lt;/td&gt;</p>
<p>&lt;td class=&#8217;form2&#8242;&gt;</p>
<p>&lt;div&gt;&lt;select name=&#8217;dhtmlgoodies_city&#8217; id=&#8217;dhtmlgoodies_city&#8217;&gt;</p>
<p>&lt;option id=&#8217;op&#8217; value=&#8217;-1&#8242;&gt;&lt;/option&gt;</p>
<p>{$city}&lt;/select&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;div id=&#8217;dhtmlgoodies_city&#8217;&gt;</p>
<p>Город, в котором Вы в текущий момент проживаете.</p>
<p>&lt;/div&gt;</p>
<p>&lt;div class=&#8217;form_desc&#8217;&gt;&lt;/div&gt;</p>
<p>&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p>
<p>{/if}</p></blockquote>
<p>Условие {if $cat_id == 3} отвечает за отображение полей только в подкатегории «Персональная информация», это нужно если Вы собираетесь создавать дополнительные подкатегории, как, например, у нас создана {$country}, {$region} и {$city} &#8211; данные, которые формируются php-скриптом в файле user_editprofile.php</li>
<li><strong>Открыть: header_global.tpl</strong><br />
<strong>Найти</strong></p>
<blockquote><p><code>var countryCode = sel.options[sel.selectedIndex].value;</code></p></blockquote>
<p><strong>Заменить</strong></p>
<p><strong>Подсказка:</strong> Произведите замену ранее найденных строк.</p>
<blockquote><p><code>var countryCode = sel;</code></p></blockquote>
<p><strong> </strong></p>
<p><strong>Найти</strong><strong> </strong></p>
<blockquote><p><code>var regionCode = sel.options[sel.selectedIndex].value;</code></p></blockquote>
<p><strong>Заменить</strong></p>
<p><strong>Подсказка:</strong> Произведите замену ранее найденных строк.</p>
<blockquote><p><code>var regionCode = sel;</code></p></blockquote>
</li>
<p><strong>Открыть: user_editprofile.</strong><strong>php</strong><strong> </strong></p>
<p><strong>Найти</strong><strong> </strong></p>
<blockquote><p><code>if(isset($_POST['dhtmlgoodies_country'])) {</code></p>
<p>$country=$_POST['dhtmlgoodies_country'];</p>
<p>$sql = &laquo;<strong>SELECT</strong> profilevalue_7 <strong>FROM</strong> cites_profilevalues <strong>WHERE</strong> profilevalue_id=$id_ex LIMIT 1&#8243;;</p>
<p>if(!$database-&gt;database_query($sql))</p>
<p>{</p>
<p>$query=&raquo;<strong>INSERT INTO</strong> &#8216;cites_profilevalues&#8217; (&#8216;profilevalue_id&#8217;, &#8216;profilevalue_7&#8242;) <strong>VALUES</strong> ($id_ex,&#8217;$country&#8217;)&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$query=&raquo;<strong>UPDATE</strong> &#8216;cites_profilevalues&#8217; <strong>SET</strong> &#8216;profilevalue_7&#8242; = &#8216;$country&#8217; <strong>WHERE</strong> &#8216;cites_profilevalues&#8217;.'profilevalue_id&#8217; = $id_ex&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>}</p>
<p>if(isset($_POST['dhtmlgoodies_region'])) {</p>
<p>$region=$_POST['dhtmlgoodies_region'];</p>
<p>$sql = &laquo;<strong>SELECT</strong> profilevalue_8 <strong>FROM</strong> cites_profilevalues <strong>WHERE</strong> profilevalue_id=$id_ex LIMIT 1&#8243;;</p>
<p>if(!$database-&gt;database_query($sql))</p>
<p>{</p>
<p>$query=&raquo;<strong>INSERT INTO</strong> &#8216;cites_profilevalues&#8217; (&#8216;profilevalue_id&#8217;, &#8216;profilevalue_8&#8242;) <strong>VALUES</strong> ($id_ex,&#8217;$region&#8217;)&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$query=&raquo;<strong>UPDATE</strong> &#8216;cites_profilevalues&#8217; <strong>SET</strong> &#8216;profilevalue_8&#8242; = &#8216;$region&#8217; <strong>WHERE</strong> &#8216;cites_profilevalues&#8217;.'profilevalue_id&#8217; = $id_ex&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>}</p>
<p>if(isset($_POST['dhtmlgoodies_city'])) {</p>
<p>$city=$_POST['dhtmlgoodies_city'];</p>
<p>$sql = &laquo;<strong>SELECT</strong> profilevalue_9 <strong>FROM</strong> cites_profilevalues <strong>WHERE</strong> profilevalue_id=$id_ex <strong>LIMIT</strong> 1&#8243;;</p>
<p>if(!$database-&gt;database_query($sql))</p>
<p>{</p>
<p>$query=&raquo;<strong>INSERT INTO</strong> &#8216;cites_profilevalues&#8217; (&#8216;profilevalue_id&#8217;, &#8216;profilevalue_9&#8242;) <strong>VALUES</strong> ($id_ex,&#8217;$city&#8217;)&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$query=&raquo;<strong>UPDATE</strong> &#8216;cites_profilevalues&#8217; <strong>SET</strong> &#8216;profilevalue_9&#8242; = &#8216;$city&#8217; <strong>WHERE</strong> &#8216;cites_profilevalues&#8217;.'profilevalue_id&#8217; = $id_ex&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>}</p></blockquote>
<p><strong>Заменить</strong></p>
<p><strong>Подсказка:</strong> Произведите замену ранее найденных строк.</p>
<blockquote><p><code>if(isset($_POST['dhtmlgoodies_country']))</code></p>
<p>{</p>
<p>$country=$_POST['dhtmlgoodies_country'];</p>
<p>$country_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&laquo;<strong>SELECT</strong> profilevalue_id <strong>FROM</strong> cites_profilevalues <strong>WHERE</strong> profilevalue_id=&#8217;&raquo;.$user-&gt;user_info['user_id'].&raquo;&#8216; <strong>LIMIT</strong> 1&#8243;));</p>
<p>$country_id = $country_tb[profilevalue_id];</p>
<p>if($country_id &lt;= 0)</p>
<p>{</p>
<p>$query=&raquo;<strong>INSERT INTO</strong> &#8216;cites_profilevalues&#8217; (&#8216;profilevalue_id&#8217;, &#8216;profilevalue_7&#8242;) <strong>VALUES</strong> ($id_ex,&#8217;$country&#8217;)&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$query=&raquo;<strong>UPDATE</strong> &#8216;cites_profilevalues&#8217; <strong>SET</strong> &#8216;profilevalue_7&#8242; = &#8216;$country&#8217; <strong>WHERE</strong> &#8216;cites_profilevalues&#8217;.'profilevalue_id&#8217; = &#8216;&raquo;.$user-&gt;user_info['user_id'].&raquo;&#8216;&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>}</p>
<p>if(isset($_POST['dhtmlgoodies_region']))</p>
<p>{</p>
<p>$region=$_POST['dhtmlgoodies_region'];</p>
<p>$region_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&laquo;<strong>SELECT</strong> profilevalue_id <strong>FROM</strong> cites_profilevalues <strong>WHERE</strong> profilevalue_id=&#8217;&raquo;.$user-&gt;user_info['user_id'].&raquo;&#8216; <strong>LIMIT</strong> 1&#8243;));</p>
<p>$region_id = $region_tb[profilevalue_id];</p>
<p>//$sql = &laquo;<strong>SELECT</strong> profilevalue_8 <strong>FROM</strong> cites_profilevalues <strong>WHERE</strong> profilevalue_id=$id_ex <strong>LIMIT</strong> 1&#8243;;</p>
<p>if($region_id &lt;= 0)</p>
<p>{</p>
<p>$query=&raquo;<strong>INSERT INTO</strong> &#8216;cites_profilevalues&#8217; (&#8216;profilevalue_id&#8217;, &#8216;profilevalue_8&#8242;) <strong>VALUES</strong> ($id_ex,&#8217;$region&#8217;)&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$query=&raquo;<strong>UPDATE</strong> &#8216;cites_profilevalues&#8217; <strong>SET</strong> &#8216;profilevalue_8&#8242; = &#8216;$region&#8217; <strong>WHERE</strong> &#8216;cites_profilevalues&#8217;.'profilevalue_id&#8217; = &#8216;&raquo;.$user-&gt;user_info['user_id'].&raquo;&#8216;&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>}</p>
<p>if(isset($_POST['dhtmlgoodies_city']))</p>
<p>{</p>
<p>$city=$_POST['dhtmlgoodies_city'];</p>
<p>$city_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&laquo;<strong>SELECT</strong> profilevalue_id <strong>FROM</strong> cites_profilevalues <strong>WHERE</strong> profilevalue_id=&#8217;&raquo;.$user-&gt;user_info['user_id'].&raquo;&#8216; <strong>LIMIT</strong> 1&#8243;));</p>
<p>$city_id = $city_tb[profilevalue_id];</p>
<p>//$sql = &laquo;<strong>SELECT</strong> profilevalue_9 <strong>FROM</strong> cites_profilevalues <strong>WHERE</strong> profilevalue_id=&#8217;&raquo;.$user-&gt;user_info['user_id'].&raquo;&#8216; <strong>LIMIT</strong> 1&#8243;;</p>
<p>if($city_id &lt;= 0)</p>
<p>{</p>
<p>$query=&raquo;<strong>INSERT INTO</strong> &#8216;cites_profilevalues&#8217; (&#8216;profilevalue_id&#8217;, &#8216;profilevalue_9&#8242;) <strong>VALUES</strong> ($id_ex,&#8217;$city&#8217;)&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$query=&raquo;<strong>UPDATE</strong> &#8216;cites_profilevalues&#8217; <strong>SET</strong> &#8216;profilevalue_9&#8242; = &#8216;$city&#8217; <strong>WHERE</strong> &#8216;cites_profilevalues&#8217;.'profilevalue_id&#8217; = &#8216;&raquo;.$user-&gt;user_info['user_id'].&raquo;&#8216;&raquo;;</p>
<p>$database-&gt;database_query($query);</p>
<p>}</p>
<p>}</p></blockquote>
<p><strong>Найти</strong><strong> </strong></p>
<blockquote><p><code>$sql = $database-&gt;database_query ("<strong>SELECT</strong> * <strong>FROM</strong> country");</code></p>
<p>$countries = array ();</p>
<p>while ($country = $database-&gt;database_fetch_assoc ($sql))</p>
<p>{</p>
<p>$countries[] = $country;</p>
<p>}</p>
<p>$smarty-&gt;assign(&#8216;countries&#8217;, $countries);</p></blockquote>
<p><strong>Заменить</strong><strong> </strong></p>
<p><strong>Подсказка</strong><strong>:</strong> Произведите замену ранее найденных строк.</p>
<blockquote><p><code>$country_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query("<strong>SELECT</strong> profilevalue_7 <strong>FROM</strong> cites_profilevalues <strong>WHERE</strong> profilevalue_id='".$user-&gt;user_info['user_id']."' <strong>LIMIT</strong> 1"));</code></p>
<p>$country_id = $country_tb[profilevalue_7];</p>
<p>$sql = $database-&gt;database_query (&laquo;<strong>SELECT</strong> * <strong>FROM</strong> country&raquo;);</p>
<p>while ($country_bd = $database-&gt;database_fetch_assoc ($sql))</p>
<p>{</p>
<p>if($country_id == $country_bd[country_id])</p>
<p>$country_sel = &raquo; SELECTED&raquo;;</p>
<p>else</p>
<p>$country_sel = &laquo;&raquo;;</p>
<p>$country .= &laquo;&lt;option value=&#8217;&raquo; . $country_bd[country_id] . &laquo;&#8216;&raquo; . $country_sel . &laquo;&gt;&raquo; . $country_bd[name] . &laquo;&lt;/option&gt;\n&raquo;;</p>
<p>}</p>
<p>$region_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&laquo;<strong>SELECT</strong> profilevalue_8 <strong>FROM</strong> cites_profilevalues <strong>WHERE</strong> profilevalue_id=&#8217;&raquo;.$user-&gt;user_info['user_id'].&raquo;&#8216; <strong>LIMIT</strong> 1&#8243;));</p>
<p>$region_id = $region_tb[profilevalue_8];</p>
<p>if($region_id &gt; 0)</p>
<p>{</p>
<p>$region_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&laquo;<strong>SELECT</strong> region_id, name <strong>FROM</strong> region <strong>WHERE</strong> region_id=&#8217;&raquo;.$region_id.&raquo;&#8216; <strong>LIMIT</strong> 1&#8243;));</p>
<p>$region .= &laquo;&lt;option value=&#8217;&raquo; . $region_tb[region_id] . &laquo;&#8216; SELECTED&gt;&raquo; . $region_tb[name] . &laquo;&lt;/option&gt;\n&raquo;;</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$sql = $database-&gt;database_query (&laquo;<strong>SELECT</strong> * <strong>FROM</strong> region&raquo;);</p>
<p>while ($region_bd = $database-&gt;database_fetch_assoc ($sql))</p>
<p>{</p>
<p>if($region_id == $region_bd[region_id])</p>
<p>$region_sel = &raquo; SELECTED&raquo;;</p>
<p>else</p>
<p>$region_sel = &laquo;&raquo;;</p>
<p>$region .= &laquo;&lt;option value=&#8217;&raquo; . $region_bd[region_id] . &laquo;&#8216;&raquo; . $region_sel . &laquo;&gt;&raquo; . $region_bd[name] . &laquo;&lt;/option&gt;\n&raquo;;</p>
<p>}</p>
<p>}</p>
<p>$city_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&laquo;<strong>SELECT</strong> profilevalue_9 <strong>FROM</strong> cites_profilevalues <strong>WHERE</strong> profilevalue_id=&#8217;&raquo;.$user-&gt;user_info['user_id'].&raquo;&#8216; <strong>LIMIT</strong> 1&#8243;));</p>
<p>$city_id = $city_tb[profilevalue_9];</p>
<p>if($city_id &gt; 0)</p>
<p>{</p>
<p>$city_tb = $database-&gt;database_fetch_assoc($database-&gt;database_query(&laquo;<strong>SELECT</strong> city_id, name <strong>FROM</strong> city <strong>WHERE</strong> city_id=&#8217;&raquo;.$city_id.&raquo;&#8216; <strong>LIMIT</strong> 1&#8243;));</p>
<p>$city .= &laquo;&lt;option value=&#8217;&raquo; . $city_tb[city_id] . &laquo;&#8216; SELECTED&gt;&raquo; . $city_tb[name] . &laquo;&lt;/option&gt;\n&raquo;;</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>$sql = $database-&gt;database_query (&laquo;<strong>SELECT</strong> * <strong>FROM</strong> city <strong>ORDER BY</strong> name <strong>ASC</strong>&laquo;);</p>
<p>while ($city_bd = $database-&gt;database_fetch_assoc ($sql))</p>
<p>{</p>
<p>if($city_id == $city_bd[city_id])</p>
<p>$city_sel = &raquo; SELECTED&raquo;;</p>
<p>else</p>
<p>$city_sel = &laquo;&raquo;;</p>
<p>$city .= &laquo;&lt;option value=&#8217;&raquo; . $city_bd[city_id] . &laquo;&#8216;&raquo; . $city_sel . &laquo;&gt;&raquo; . $city_bd[name] . &laquo;&lt;/option&gt;\n&raquo;;</p>
<p>}</p>
<p>}</p>
<p>$smarty-&gt;assign(&#8216;country&#8217;, $country);</p>
<p>$smarty-&gt;assign(&#8216;region&#8217;, $region);</p>
<p>$smarty-&gt;assign(&#8216;city&#8217;, $city);</p></blockquote>
</ol>
<p>Если Вы выполнили все действия правильно, то теперь участники Вашей социальной сети <strong>SocialEngine Excalibur</strong> могут указать в профиле страну, регион и город проживания.</p>
<p>Также данную статью можно <a href="http://statprog.ru/wp-content/add_country_region_city_se.rar" target="_blank">скачать</a> в формате doc.</p>
<p><strong>Автор:<em> Евтеев Евгений Александрович</em></strong></p>
<p><strong>Email:<em> evteev_e2003@mail.ru</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://statprog.ru/2009/08/12/dobavlenie-stran-regionov-i-gorodov-v-socialengine-excalibur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
