<?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"
	>

<channel>
	<title>Вовата, s. Hamaelleon ™ &#187; CMS</title>
	<atom:link href="http://www.vlkomarov.info/blog/tag/cms/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vlkomarov.info/blog</link>
	<description>Почти сериозен блог на една гола цица</description>
	<pubDate>Wed, 26 Nov 2008 19:51:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>Flash, XML, PHP, CMS - основата</title>
		<link>http://www.vlkomarov.info/blog/2008/07/12/flash-xml-php-cms_basic/</link>
		<comments>http://www.vlkomarov.info/blog/2008/07/12/flash-xml-php-cms_basic/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 17:18:28 +0000</pubDate>
		<dc:creator>Hamaelleon</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Web development]]></category>

		<category><![CDATA[XML]]></category>

		<category><![CDATA[back-end]]></category>

		<category><![CDATA[CMS]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Xground]]></category>

		<category><![CDATA[xgroundmodels]]></category>

		<category><![CDATA[администрация]]></category>

		<category><![CDATA[базисни положения]]></category>

		<category><![CDATA[Ексграунд]]></category>

		<category><![CDATA[основа]]></category>

		<guid isPermaLink="false">http://www.vlkomarov.info/blog/?p=83</guid>
		<description><![CDATA[
Абе просто съм се побъркал: вместо да ходя да.. разходя някоя подобна кака, аз седя отново зад компютъра (в събота) и работя. Мой ли проект? Ами не! Всъщност съм се закрастил яко с тази администрация на сайта на XGround Models.. ако беше &#8220;официално&#8221; поръчано щеше да ме домързи и да го работя вероятно в понеделник [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.vlkomarov.info/blog/wp-content/uploads/2008/07/lora-georgieva-xground.jpg" alt="Лора Георгиева - рекламно лица на XGround Models" /></p>
<p>Абе просто съм се побъркал: вместо да ходя да.. разходя някоя подобна кака, аз седя отново зад компютъра (в събота) и работя. Мой ли проект? Ами не! Всъщност съм се закрастил яко с тази администрация на сайта на XGround Models.. ако беше &#8220;официално&#8221; поръчано щеше да ме домързи и да го работя вероятно в понеделник към 4-5 сутринта.. ама не, като ми е интересно и си го човъркам по всяко време, без значение, че никой не го изисква..</p>
<p>Та, имаме <a href="http://www.xgroundmodels.com" target="_blank">Flash сайт</a>, който вече е изграден (т.е приемаме го за константа). Той използва семпли XML файлове като база данни. Задачата е да се напише back-end, чрез който да се редактират тези XML файлове, респективно да се променя обликът на front-end-a. <a href="http://www.vlkomarov.info/blog/2008/07/06/atom-solutions/" target="_blank">В предишната публикация</a> споменах за тази задача.</p>
<p><span id="more-83"></span></p>
<p>Оставяме настрана файловите операции (имам предвид качване, преоразмеряване, рязане на снимки, създаване на thumbnail-и, etc.) настрана, не се занимаваме и с DTD на този етап. Ползваме DOM за парсване и създаване на XML-ите и това е всичко. Основата..</p>
<p>Ако имаме XML файл със структура и съдържание подобно на следното:</p>
<pre class="syntax-highlight:xml">&lt; ?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;models&gt;
&lt;model name=&quot;Флейта Тромпеткова&quot; age=&quot;23&quot;
readonly=&quot;1&quot;/&gt;
&lt;model name=&quot;Блонди Свиркова&quot; age=&quot;19&quot;
readonly=&quot;1&quot;/&gt;
&lt;model name=&quot;Ганка Заблейкова&quot; age=&quot;20&quot;
readonly=&quot;1&quot;/&gt;
&lt;model name=&quot;Учтивост Лицемеркова&quot; age=&quot;18&quot;
readonly=&quot;1&quot;/&gt;
&lt;model name=&quot;Съска Змейкова&quot; age=&quot;22&quot;
readonly=&quot;1&quot;/&gt;
&lt;/models&gt;
</pre>
<p>..то можем да извършваме базовите операции с помощта на методите от този примерен PHP клас. Тези операции са:<br />
- добавяне на нов елемент<br />
- редактиране на даден елемент<br />
- изтриване на елемент<br />
- пренареждане в произволен ред (не просто сортиране) на елементите</p>
<pre class="syntax-highlight:php">
&lt; ?php
class xmlLib {

// XML File Parse -&gt; PHP Array

function getXML($xmlFile) {
$xmlArr = array();
$c = 1;
$xml = new DomDocument(&#039;1.0&#039;, &#039;UTF-8&#039;);
$xml-&gt;load($xmlFile);
$root = $xml-&gt;documentElement;
$children = $root-&gt;childNodes;
foreach ($children as $element) {
if ($element-&gt;nodeType == XML_ELEMENT_NODE &amp;&amp;
$element-&gt;nodeName == &#039;model&#039;) {
$xmlArr[$c][&#039;name&#039;]	=
$element-&gt;getAttributeNode(&#039;name&#039;)-&gt;value;
$xmlArr[$c][&#039;age&#039;]	=
$element-&gt;getAttributeNode(&#039;age&#039;)-&gt;value;
$xmlArr[$c][&#039;readonly&#039;]	=
$element-&gt;getAttributeNode(&#039;readonly&#039;)-&gt;value;
$c++;
}
}
return $xmlArr;
}

// Add Entry

function addEntry($add, $xmlArr, $xmlFile) {
$p = sizeof($xmlArr) + 1;
$xmlArr[$p][&#039;name&#039;] = $add[&#039;name&#039;];
$xmlArr[$p][&#039;age&#039;] = $add[&#039;age&#039;];
$xmlArr[$p][&#039;readonly&#039;] = $add[&#039;readonly&#039;];
if ($this-&gt;saveXML($xmlFile, $xmlArr)) {
return true;
}
}

// Edit Entry

function editEntry($edit, $xmlArr, $xmlFile) {
$who = $edit[&#039;who&#039;];
foreach ($xmlArr as $key =&gt; $person) {
if ($xmlArr[$key][&#039;name&#039;] == $who &amp;&amp;
$xmlArr[$key][&#039;readonly&#039;] != &#039;1&#039;) {
$xmlArr[$key][&#039;name&#039;] = $edit[&#039;name&#039;];
$xmlArr[$key][&#039;age&#039;] = $edit[&#039;age&#039;];
}
}
if ($this-&gt;saveXML($xmlFile, $xmlArr)) {
return true;
}
}

// Remove Entry

function removeEntry($remove, $xmlArr, $xmlFile) {
$who = $remove[&#039;name&#039;];
foreach ($xmlArr as $key =&gt; $person) {
if ($xmlArr[$key][&#039;name&#039;] == $who &amp;&amp;
$xmlArr[$key][&#039;readonly&#039;] != &#039;1&#039;) {
$xmlArr[$key] = null;
}
}
if ($this-&gt;saveXML($xmlFile, $xmlArr)) {
return true;
}
}

// Set Entries Order

function setOrder($order, $xmlArr, $xmlFile) {
$tmp = array();
for ($i = 1; $i &lt; = sizeof($xmlArr); $i++) {
for ($j = 1; $j &lt;= sizeof($xmlArr); $j++) {
if ($order[$i - 1] == $xmlArr[$j][&#039;name&#039;]) {
$tmp[$i][&#039;name&#039;] = $xmlArr[$j][&#039;name&#039;];
$tmp[$i][&#039;age&#039;] = $xmlArr[$j][&#039;age&#039;];
$tmp[$i][&#039;readonly&#039;] =
$xmlArr[$j][&#039;readonly&#039;];
}
}
}
if ($this-&gt;saveXML($xmlFile, $tmp)) {
return true;
}
}

// Save PHP Array -&gt; XML File

function saveXML($xmlFile, $xmlArr) {
$xml = new DomDocument(&#039;1.0&#039;, &#039;UTF-8&#039;);
$xml-&gt;formatOutput = true;
$root = $xml-&gt;createElement(&#039;models&#039;);
$root = $xml-&gt;appendChild($root);
foreach ($xmlArr as $key =&gt; $person) {
if ($xmlArr[$key][&#039;name&#039;] != null) {
$model = $xml-&gt;createElement(&#039;model&#039;);
$model = $root-&gt;appendChild($model);
$name = $xml-&gt;createAttribute(&#039;name&#039;);
$name = $model-&gt;setAttribute(&#039;name&#039;,
$xmlArr[$key][&#039;name&#039;]);
$name = $model-&gt;appendChild($name);
$age = $xml-&gt;createAttribute(&#039;age&#039;);
$age = $model-&gt;setAttribute(&#039;age&#039;,
$xmlArr[$key][&#039;age&#039;]);
$age = $model-&gt;appendChild($age);
$readonly = $xml-&gt;createAttribute(&#039;readonly&#039;);
$readonly = $model-&gt;setAttribute(&#039;readonly&#039;,
$xmlArr[$key][&#039;readonly&#039;]);
$readonly = $model-&gt;appendChild($readonly);
}
}
if ($xml-&gt;save($xmlFile)) {
return true;
}
}
}
?&gt;
</pre>
<p>Кодът е семпъл и няма нужда от допълнителни коментари, старал съм се да пиша максимално чисто. Некондензиран и с допълнителни инденти го има и в <a href="http://www.vlkomarov.info/projects/xgroundmodels/cms/demo/index.php" target="_blank">демо страницата.</a></p>
<p><a href="http://www.vlkomarov.info/projects/xgroundmodels/cms/demo/index.php" target="_blank">Пробвайте демото</a> и си кажете мнението. Мързи ме да пиша повече. Точка.</p>
<p>Тъй като такива (изтрито) красавици като Лора надали се сещат за съществуването на моя милост мисля да отида да си купя един-два кроасана с шоколад и да се натъпча подобаващо.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlkomarov.info/blog/2008/07/12/flash-xml-php-cms_basic/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
