<?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>Serfe - IT Talent and Creativity</title>
	<atom:link href="http://www.serfe.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.serfe.com/blog</link>
	<description></description>
	<pubDate>Wed, 16 Mar 2011 19:35:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Agreement signed with UTN for Quality Management System Certification ISO 9001:2008</title>
		<link>http://www.serfe.com/blog/en/2011/03/agreement-with-utn-for-quality-management-system-certification-iso-9001-2008/</link>
		<comments>http://www.serfe.com/blog/en/2011/03/agreement-with-utn-for-quality-management-system-certification-iso-9001-2008/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 19:32:20 +0000</pubDate>
		<dc:creator>federico</dc:creator>
		
		<category><![CDATA[Serfe Events]]></category>

		<category><![CDATA[Serfe Projects]]></category>

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

		<category><![CDATA[Quality Assurance]]></category>

		<category><![CDATA[ISO 9001]]></category>

		<category><![CDATA[Our Team]]></category>

		<category><![CDATA[Quality Management System]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=306</guid>
		<description><![CDATA[The project &#8220;Certification of the Quality  Management System ISO 9001:2008 of the Software Companies in the city of  Santa Fe and the region&#8221; was initiated in the Meeting Room of the Board  of the National Technological University, Santa Fe.

In the project will work together UTN and 10 companies in the region,  [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">The project &#8220;Certification of the Quality  Management System ISO 9001:2008 of the Software Companies in the city of  Santa Fe and the region&#8221; was initiated in the Meeting Room of the Board  of the National Technological University, Santa Fe.</p>
<p align="justify"><a href="http://www.serfe.com/blog/wp-content/uploads/2011/03/serfe-iso-9001-quality-management-system.jpg"><img class="aligncenter size-full wp-image-301" title="serfe-iso-9001-quality-management-system" src="http://www.serfe.com/blog/wp-content/uploads/2011/03/serfe-iso-9001-quality-management-system.jpg" alt="" width="500" height="232" /></a></p>
<p>In the project will work together UTN and 10 companies in the region,  and will have partial funding from the Government of the Province of  Santa Fe, through the Ministry of Technology.</p>
<p>Among the objectives, seek to implement and certify the quality of  production and service processes of  the companies involved to the  project and improving them continuously. Building a partnership swap of   experiences and skills enhancement about quality in production and  services software processes, and increase Software Industry in the  Province of Santa Fe, with demonstrable ability to develop quality  products exported to other markets.</p>
<p>More information: <a href="http://www.frsf.utn.edu.ar/noticias/ver.php?id_noticia=1212" target="_blank">http://www.frsf.utn.edu.ar/noticias/ver.php?id_noticia=1212</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/en/2011/03/agreement-with-utn-for-quality-management-system-certification-iso-9001-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Serfe will drop support for IE6 from March 2010</title>
		<link>http://www.serfe.com/blog/en/2010/02/serfe-will-drop-support-for-ie6-from-march-2010/</link>
		<comments>http://www.serfe.com/blog/en/2010/02/serfe-will-drop-support-for-ie6-from-march-2010/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 16:56:26 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
		<category><![CDATA[Web Design]]></category>

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

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

		<category><![CDATA[Internet Explorer]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=277</guid>
		<description><![CDATA[
Internet Explorer 6 (IE6) was released on 27 August 2001, more than 8 years ago, and is the default browser shipped with Windows XP. The market share of this browser continues to decline, now being below 14% globally and less than 7% in Europe and USA. This version of Internet Explorer (IE) has several problems:

Does [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_280" class="wp-caption alignright" style="width: 129px"><a href="http://www.serfe.com/blog/wp-content/uploads/2010/01/ie_logo_small.jpg"><img class="size-full wp-image-280" title="ie_logo_small" src="http://www.serfe.com/blog/wp-content/uploads/2010/01/ie_logo_small.jpg" alt="Internet Explorer 6" width="119" height="128" /></a><p class="wp-caption-text">Internet Explorer 6</p></div></p>
<p>Internet Explorer 6 (IE6) was released on 27 August 2001, more than 8 years ago, and is the default browser shipped with Windows XP. The market share of this browser continues to decline, now being below 14% globally and less than 7% in Europe and USA. This version of Internet Explorer (IE) has several problems:</p>
<ul>
<li>Does not support PNG transparencies</li>
<li>Contains errors when using float + margin / padding</li>
<li>Inability to use pseudo-classes and pseudo-elements.</li>
<li>Incomplete support of CSS 2.1</li>
<li>Presents display errors</li>
</ul>
<p>Developing systems or websites with IE6 compatibility means spending hours to solve displaying bugs and limit the designs so that they appear correctly in this browser. Besides the user experience is limited to the possibilities available in IE6, modern browsers (IE7, IE8, Firefox 3.5, Safari 4, Google Chrome, Opera 10, etc.) can offer a much better online experience.</p>
<p>It is because of this that from March 2010 IE6 won&#8217;t have support on systems and sites developed by Serfe. This means that if you want to have support for this version of Internet Explorer, you must explicitly request it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/en/2010/02/serfe-will-drop-support-for-ie6-from-march-2010/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Software Requirements, Concepts and Methodologies for Agile Teams</title>
		<link>http://www.serfe.com/blog/en/2009/12/software-requirements-concepts-and-methodologies-for-agile-teams/</link>
		<comments>http://www.serfe.com/blog/en/2009/12/software-requirements-concepts-and-methodologies-for-agile-teams/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 17:39:30 +0000</pubDate>
		<dc:creator>federico</dc:creator>
		
		<category><![CDATA[Requirements]]></category>

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

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

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

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

		<category><![CDATA[Our Team]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=269</guid>
		<description><![CDATA[Following our training program, last November we attended the course &#8220;Software Requirements, Concepts and Practices for Agile Teams&#8221; delivered by Mr. Luiz Parzianello and organized by the Foundation for the development of new technologies.
Its objective was to develop basic skills necessary to capture, analyze, specify and validate a Product Backlog (requirements) effective preserving agile principles [...]]]></description>
			<content:encoded><![CDATA[<p>Following our training program, last November we attended the course &#8220;Software Requirements, Concepts and Practices for Agile Teams&#8221; delivered by Mr. Luiz Parzianello and organized by the Foundation for the development of new technologies.</p>
<p>Its objective was to develop basic skills necessary to capture, analyze, specify and validate a Product Backlog (requirements) effective preserving agile principles and practices. These where the main topics:</p>
<ul>
<li>Present the risks of decision-making process of the human mind and its influence on software requirements.</li>
<li>Submit an effective way of identifying the scope of software project based on business analysis and project.</li>
<li>Present models and effective practices for working with requirements in agile methodologies with techniques for estimating the size of the problem.</li>
<li>Develop an awareness of Planning and Production Control (PCP) for the management of requirements based on concepts and practices of inventory control.</li>
</ul>
<p>Of course that also took the opportunity to take a walk in the hills of Cordoba.</p>
<p style="text-align: center;"><div class="ngg-galleryoverview"><div class="slideshowlink"><a class="slideshowlink" href="/blog/feed/?show=gallery">[Show picture list]</a></div>
<div class="slideshow" id="ngg_slideshow1"><p>The <a href="http://www.macromedia.com/go/getflashplayer">Flash Player</a> and <a href="http://www.mozilla.com/firefox/">a browser with Javascript support</a> are needed..</p></div>
	<script type="text/javascript" defer="defer">
		var so189 = new SWFObject("http://www.serfe.com/blog/wp-content/plugins/nextgen-gallery/imagerotator.swf", "ngg_slideshow1", "400", "300", "7", "#000000");
		so189.addParam("wmode", "opaque");
		so189.addVariable("file", "http://www.serfe.com/blog/wp-content/plugins/nextgen-gallery/nggextractXML.php?gid=1");
		so189.addVariable("shuffle", "false");
		so189.addVariable("linkfromdisplay", "true");
		so189.addVariable("shownavigation", "true");
		so189.addVariable("showicons", "true");
		so189.addVariable("overstretch", "false");
		so189.addVariable("backcolor", "0x000000");
		so189.addVariable("frontcolor", "0xFFFFFF");
		so189.addVariable("lightcolor", "0xCC0000");
		so189.addVariable("screencolor", "0x000000");
		so189.addVariable("rotatetime", "5");
		so189.addVariable("transition", "random");
		so189.addVariable("width", "400");
		so189.addVariable("height", "300");
		so189.write("ngg_slideshow1");
	</script></div>
<div class="ngg-clear"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/en/2009/12/software-requirements-concepts-and-methodologies-for-agile-teams/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CRM: Customer Relationship Management</title>
		<link>http://www.serfe.com/blog/en/2009/11/crm-customer-relationship-management/</link>
		<comments>http://www.serfe.com/blog/en/2009/11/crm-customer-relationship-management/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 17:52:54 +0000</pubDate>
		<dc:creator>sebaberardi</dc:creator>
		
		<category><![CDATA[Open Source Customization]]></category>

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

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

		<category><![CDATA[Open Source]]></category>

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

		<category><![CDATA[Customer Relationship Management]]></category>

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

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

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=241</guid>
		<description><![CDATA[CRM is a tool for the management of customer relationships. It is very useful in any business, from manufacturing goods to those that provide services as it allows to plan a business strategy based on clients. This tools become essential in global markets like IT services where retain a customer is more important than winning [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_262" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/11/businessplan.jpg"><img class="size-medium wp-image-262 " title="Success plan" src="http://www.serfe.com/blog/wp-content/uploads/2009/11/businessplan-300x165.jpg" alt="Do you have a business plan?" width="300" height="165" /></a><p class="wp-caption-text">Do you have a business plan?</p></div></p>
<p style="justify;">CRM is a tool for the management of customer relationships. It is very useful in any business, from manufacturing goods to those that provide services as it allows to plan a business strategy based on clients. This tools become essential in global markets like IT services where retain a customer is more important than winning new ones.</p>
<p>This tool is an open system data (front office) that gives us the opportunity to exchange information with customers. To create records which allow us to see the concept of value that the customer has with the product, to focus on the real needs processes that give rise to the application and delete processes that result in an increase in the price of the product without increasing its value. We can also anticipate new requirements and provide better after-sales services.</p>
<p>The use of a CRM system often fails or doesn&#8217;t give the desired results because its implementation is only limited to software installation without studying the context of the company, nor provide the necessary knowledge to its employees. A CRM system should be implemented only after studying the current relationship with customers and defining the new one that the company  wants to reach. Once we know that we will have a clearer picture of which systems we will need, which procedures will need to be standardized and on which topics will be needed to train the staff of the organization.</p>
<p>The CRM software was initially developed by payment and large companies. Recently, however, began to emerge such as &#8220;open source&#8221;, ie free and open source. This brings with it the following advantages: low cost and the possibility of changing them to the needs of each company.</p>
<p><span id="more-241"></span><strong>The most important open source CRM softwares:</strong></p>
<p style="justify;"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/11/sugarcrm_logo.gif"><img class="alignright size-medium wp-image-265" style="margin: 5px;" title="sugarcrm_logo" src="http://www.serfe.com/blog/wp-content/uploads/2009/11/sugarcrm_logo.gif" alt="" width="216" height="36" /></a><strong>Sugar CRM</strong>: A powerful tool that helps companies manage customer relationships. That allows optimizing opportunities for presales, sales and after sales, improve customer service and create, implement and evaluate effective marketing campaigns. It enables easy access to available information to improve decision making. Support for multiple databases and processes that facilitate the flow of information. It can be integrated with different software for email management, spreadsheets and word processors. To be more customer friendly is separated into modules:</p>
<ul>
<li>Sales: Allows sharing of sales information with the rest of the staff, focus on more profitable business, increase productivity in the sales department through process standardization and monitoring the performance of employees.</li>
<li> Marketing: Enables support for the creation, implementation and monitoring of marketing campaigns, as well as share information, sales opportunities with the rest of the staff, supports the identification and tracking of leads.</li>
<li> Support for the client: This module ensures that customer cases are handled based on priority, status and category. This feature helps to solve customer problems and understand common drawbacks to correct and improve product quality. It also helps to measure the responsiveness of staff. The customer complaints are prioritized and assigned to a person or group in order to seek a solution to it. It also offers a self-help through FAQs with possible solutions with the use of keywords.</li>
<li>Report: Create real time reports of any attribute that the CRM uses, as might be the total of customers found a solution using self-help section or efficiency of a marketing campaign. Regulates access to this information taking into account the profile of each user. Allows a user to change the format of reports.</li>
<li> Collaboration: This module helps organize and monitor interdepartmental projects. It also enables a more expeditious flow of information within each department and among them too.</li>
<li> Platform: This module allows administrators and developers making modifications easily. With this module managers can set the control access for different users to areas of the program and give them different privileges depending on the needs, for example providing access to the history of each customer to the marketing staff but only employees of sale will be able to modify this information. Assists programmers to standardize processes of any of the above modules and edit the look of each field to facilitate access to functions that are considered most important.</li>
</ul>
<p style="justify;">You can find more information about this tool on: http://www.sugarcrm.com/</p>
<p style="justify;"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/11/vtiger.gif"><img class="alignright size-medium wp-image-266" style="margin: 5px;" title="vtiger" src="http://www.serfe.com/blog/wp-content/uploads/2009/11/vtiger.gif" alt="" width="133" height="92" /></a><strong>Vtiger</strong>: CRM program to automate sales forces, support and customer service, marketing automation and inventory control. Support for multiple data bases, security manager, customizing products and services, integration with email tools (Outlook and Thunderbird). Another advantage is that it is completely separate in modules which are:</p>
<ul>
<li> Marketing: Manage the efforts to sell things in a company through the form of campaigns, which manage accounts, contacts, emails and leads.</li>
<li>Commercial: Management and monitoring of sales from first contact with potential customer to the after sales service. You can control opportunities, orders, invoices, products and prices.</li>
<li>Customer: The easiest way to maintain customer relationships after finishing a project or business, to take reports of incidents, support, etc..</li>
<li>Analysis: You have ample options to generate reports and indicators at a glance charts to monitor the progress of your company and your business.</li>
<li>Inventory: It is an additional features to CRM where you can do product management, suppliers, prices, purchase orders, purchase orders, quotes and invoices.</li>
</ul>
<p>More information in: http://www.vtiger.com/</p>
<p style="justify;"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/11/hipergate.gif"><img class="alignright size-medium wp-image-267" style="margin: 5px;" title="hipergate" src="http://www.serfe.com/blog/wp-content/uploads/2009/11/hipergate.gif" alt="" width="207" height="66" /></a><strong>Hipergate: </strong>Open source and web-based applications completely free. Helps on a lot of information technology needs in any organization. Recognizes and indexes Office documents, also allows you to load and export data to Outlook Express. Like the previous tools also is split into modules, they are;</p>
<ul>
<li> Collaborative tools and group work module: to organize and keep track of meetings, reserve list and use of rooms, forums and FAQ.</li>
<li> Contact management module: Managing databases of customers, suppliers and competitors, as well as managing personal databases. Distribution lists. Territorial demarcation and pipelines of sales (business opportunities).</li>
<li>Project management and incident support module: Allows you to generate and store hierarchical tree of projects and monitoring tasks.</li>
<li>Virtual store module: Multiple independent catalogs, unlimited hierarchy of categories of goods, stock management and billing orders.</li>
<li>Content production modules: templates for communication through email and websites, including multimedia and electronic forms.</li>
<li>Mass emails module: manage multiple sends email to the mailing list to receive messages statistics.</li>
<li>Corporate Library: 100% disk-based virtual web-based user security roles for the files, management and indexing OLE document properties, links to favorites and ability to import / export.</li>
</ul>
<p style="justify;">More information in: http://www.hipergate.org/</p>
<p style="justify;"><strong>Open source software customization services:</strong></p>
<p>A important step of implementing a system based on a tool like consist on the modification of its features so it suits the requirements of each company. Customizing open source software is an affordable alternative, flexible, reliable, fast and secure in the development stage.</p>
<p>Serfe has extensive experience working on open source software to adapt them to business requirements of each company. Our staff is trained to give advice on selection, installation and software configuration. We can also assist in the development of templates, modules, components and also the integration of them with proprietary systems.</p>
<p>For more information visit the following link:</p>
<p style="justify;"><a href="http://www.serfe.com/en/web-solutions/open-source-software.html">http://www.serfe.com/en/web-solutions/open-source-software.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/en/2009/11/crm-customer-relationship-management/feed/</wfw:commentRss>
		</item>
		<item>
		<title>An anniversary worth celebrating</title>
		<link>http://www.serfe.com/blog/en/2009/10/an-anniversary-worth-celebrating/</link>
		<comments>http://www.serfe.com/blog/en/2009/10/an-anniversary-worth-celebrating/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 22:44:18 +0000</pubDate>
		<dc:creator>federico</dc:creator>
		
		<category><![CDATA[Serfe Events]]></category>

		<category><![CDATA[Our Team]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=230</guid>
		<description><![CDATA[ The last October 12th was our anniversary that`s why the last Friday we prepare an Asado to celebrate our first 6 years of our company. Years of a lot of work and effort, new challenges and projects, of new opportunities, but also of strengthening, achievement and consolidations.
Thanks to everyone that trust us and make [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: x-small;"> </span>The last October 12th was our anniversary that`s why the last Friday we prepare an Asado to celebrate our first 6 years of our company. Years of a lot of work and effort, new challenges and projects, of new opportunities, but also of strengthening, achievement and consolidations.</p>
<p>Thanks to everyone that trust us and make this possible.  It would be no fun without you.</p>
<p><div id="attachment_231" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/10/dsc03138-800x600.jpg"><img class="size-medium wp-image-231 " title="Work team - October 2009" src="http://www.serfe.com/blog/wp-content/uploads/2009/10/dsc03138-800x600-300x224.jpg" alt="Equipo de trabajo - Octubre 2009" width="300" height="224" /></a><p class="wp-caption-text">Work team - October 2009</p></div></p>
<p><div id="attachment_232" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/10/dsc03143-800x600.jpg"><img class="size-medium wp-image-232 " title="Asado in celebration of 6 years of Serfe.com" src="http://www.serfe.com/blog/wp-content/uploads/2009/10/dsc03143-800x600-300x225.jpg" alt="Asado en festejo de los 6 años de serfe.com" width="300" height="225" /></a><p class="wp-caption-text">Asado in celebration of 6 years of Serfe.com</p></div></p>
<p>Kinds Regards</p>
<p>Serfe.com team</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/en/2009/10/an-anniversary-worth-celebrating/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creating components for Joomla 1.0.x</title>
		<link>http://www.serfe.com/blog/en/2009/09/creating-components-for-joomla-10x/</link>
		<comments>http://www.serfe.com/blog/en/2009/09/creating-components-for-joomla-10x/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 20:33:26 +0000</pubDate>
		<dc:creator>sebastian</dc:creator>
		
		<category><![CDATA[Joomla]]></category>

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

		<category><![CDATA[Joomla Extension]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=178</guid>
		<description><![CDATA[This article will explain how to develop customized components for Joomla in the 1.0.x version, showing the files and basic steps, as well as some useful methods such as access to the database, paged results, etc. It is recommended to have knowledge of PHP and HTML to read this article.
Directory structure
Joomla has a directory structure [...]]]></description>
			<content:encoded><![CDATA[<p>This article will explain how to develop customized components for Joomla in the 1.0.x version, showing the files and basic steps, as well as some useful methods such as access to the database, paged results, etc. It is recommended to have knowledge of PHP and HTML to read this article.</p>
<p><strong>Directory structure</strong></p>
<p>Joomla has a directory structure divided into 2 big groups. Administrator, where are all the files needed for the backend to work and the various directories that are located in the root directory.</p>
<p>The directories of interest are the <em>components</em>, both within the <em>administrator </em>directory, as in the root directory, since here is where the files for each component are, which in turn are in sub-directories as follows, <em>com_componentName</em>, example com_users.</p>
<p>If we want to see the files corresponding to the users component, must look at</p>
<ul>
<li> Administrator/components/com_users (backend)</li>
<li>Components/com_users (frontend)</li>
</ul>
<p>Another important is the includes directory, since within it we find files that have classes that are going to be used in the component, for example to connect the database (database.php), to manage user data, paging, etc (joomla.php).</p>
<p>The components are stored in the database, more precisely in the jos_components table.</p>
<p><strong>Files that make up a component</strong></p>
<p>A component to be installed must be compressed in a zip file, with the following format com_ComponentName.zip example com_users.zip.</p>
<p>This file must have at least 8 files that are going to be described in brief:</p>
<ul>
<li> admin.componentName.php (backend)</li>
<li> admin. componentName.html.php (backend)</li>
<li> toolbar. componentName.php (backend)</li>
<li> toolbar. componentName.html.php (backend)</li>
<li> componentName.xml (backend)</li>
<li> componentName.class.php (opcional)</li>
<li> componentName.php (frontend)</li>
<li> componentName.html.php (frontend</li>
</ul>
<p>The following describes each file.<span id="more-178"></span></p>
<p><strong>componentName.xml (Backend)</strong></p>
<p>This file is the one that installs the component.</p>
<p>Basic structure of the file:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mosinstall</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;component&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Presentation<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;creationDate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>01/10/2008<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/creationDate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Serfe<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;copyright<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>This component in released under the GNU/GPL License<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/copyright<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;authorEmail<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>info@serfe.com<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/authorEmail<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;authorUrl<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>www.serfe.com<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/authorUrl<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.0.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;files<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>example.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>example.html.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>example.class.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/files<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;install<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;queries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;query<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>CREATE TABLE `#__example` (
 id INT NOT NULL AUTO_INCREMENT,
 title VARCHAR(100) NOT NULL,
 content TEXT NOT NULL,
 published TINYINT(1) NOT NULL,
 date DATETIME NOT NULL,
 PRIMARY KEY (`id`)
 )
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/query<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/queries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/install<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uninstall<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;queries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;query<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 DROP TABLE IF EXISTS `#__example`;
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/query<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/queries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/uninstall<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;administration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;menu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Example<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/menu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;submenu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;menu</span> <span style="color: #000066;">act</span>=<span style="color: #ff0000;">&quot;all&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>List<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/menu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/submenu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;files<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>admin.example.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>admin.example.html.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>toolbar.example.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>toolbar.example.html.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filename<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/files<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/administration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mosinstall<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p><strong>admin. componentName.php (Backend):</strong></p>
<p>It is the first file to be executed when loading the component in the backend, and is responsible for controlling what action is going to be performed, according to act and task parameters.</p>
<p>The act parameter identifies which backend&#8217;s menu item was selected.</p>
<p>The task parameter tells us which action is going to be executed, such as save, delete, etc.</p>
<p>For example:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
 <span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'_VALID_MOS'</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Direct Access to this location is not allowed.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//The direct access to the file is not allowed.</span>
&nbsp;
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPath</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'admin_html'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPath</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'class'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Performs the includes of the needed files.</span>
&nbsp;
<span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> mosGetParam<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'cid'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Capture the variable passed by REQUEST.</span>
&nbsp;
<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$act</span><span style="color: #009900;">&#41;</span>
 <span style="color: #009900;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">default</span>
 <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$task</span><span style="color: #009900;">&#41;</span>
 <span style="color: #009900;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">default</span><span style="color: #339933;">:</span>
 <span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">&quot;save&quot;</span><span style="color: #339933;">:</span>
 save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Function that lists the records from a table in the database.</span>
 <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #009900;">&#41;</span>
 <span style="color: #009900;">&#123;</span>
 <span style="color: #990000;">global</span> <span style="color: #000088;">$database</span><span style="color: #339933;">,</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$limit</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getUserStateFromRequest</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;viewlistlimit&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'limit'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Get the variable limit that is used for paging</span>
 <span style="color: #000088;">$limitstart</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getUserStateFromRequest</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;view<span style="color: #006699; font-weight: bold;">{$option}</span>limitstart&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'limitstart'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Get the variable limitstart that specifies from which record to begin displaying.</span>
&nbsp;
<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT COUNT(id) FROM #__example&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$database</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setQuery</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$total</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$database</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">loadResult</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Executes the query and returns the result in a variable, this function is used when the consult returns a single result.</span>
 <span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;includes/pageNavigation.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Includes the file cointaning the class for the paging.</span>
 <span style="color: #000088;">$pageNav</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> mosPageNav<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$total</span><span style="color: #339933;">,</span> <span style="color: #000088;">$limitstart</span><span style="color: #339933;">,</span> <span style="color: #000088;">$limit</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Instantiate the page class.</span>
 <span style="color: #000088;">$query</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT * FROM #__example&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$query</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot; LIMIT &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$limitstart</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;, &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$limit</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$database</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setQuery</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$rows</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$database</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">loadObjectList</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Executes the query returning the result into an objects array.</span>
 HTML_Example<span style="color: #339933;">::</span><span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #339933;">,</span> <span style="color: #000088;">$rows</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pageNav</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Call the method that will generate the HTML from the list, and it gets as parameters the option the actual component will have, the array with the records, and the object with the paging.</span>
 <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Function that saves a record in the database.</span>
 <span style="color: #000000; font-weight: bold;">function</span> save<span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #990000;">global</span> <span style="color: #000088;">$database</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> presentacionTable<span style="color: #009900;">&#40;</span><span style="color: #000088;">$database</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Instance the class that to be created in the file componentName.class.php</span>
 <span style="color: #000088;">$row</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bind</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//If the form's input names match with the names in the database table's fields, this method takes care to relate each form field with its respective column in the table.</span>
 <span style="color: #000088;">$row</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">date</span> <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Y-m-d H:i&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">// Seats a particular field.</span>
 <span style="color: #000088;">$row</span> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">store</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">// Saves the values in the database.</span>
 mosRedirect<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;index2.php?option=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$option</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;Example saved!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">// The page is redirected to a specific address, the second parameter is the message to display.</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>This file implements 2 actions: list and save.</p>
<p>The first lines includes the needed files, then receive the variables that come in for REQUEST. Next, we determine which action to execute according to the value of the act and task variables.</p>
<p>Then, we implement each of the necessary functions to perform the required tasks.</p>
<p><strong>admin. componentName.html.php (Backend):</strong></p>
<p>This file defines the class that will contain the different methods responsible for generating the HTML.</p>
<p>The basic structure of the file is:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'_VALID_MOS'</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Direct Access to this location is not allowed.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">class</span> HTML_Example
<span style="color: #009900;">&#123;</span>
 <span style="color: #666666; font-style: italic;">// Methods that generate the HTML to displayed.</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>toolbar. componentName.php (Backend):</strong></p>
<p>This file controls which menu to display according to the received act and task parameters. The basic structure of the file is:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'_VALID_MOS'</span> <span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Direct Access to this location is not allowed.'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$mainframe</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPath</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'toolbar_html'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// Performs an include of the file named toolbar.componentName.html.php which has the HTML for the menu to display.</span>
&nbsp;
<span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$task</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">default</span><span style="color: #339933;">:</span>
 menuExample<span style="color: #339933;">::</span><span style="color: #004000;">DEFAULT_MENU</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">// Load the default menu from the class menuExample.</span>
 <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>toolbar. componentName.html.php (Backend):</strong></p>
<p>This file generates the menu to display. The basic structure of the file is:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
 <span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'_VALID_MOS'</span> <span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Direct Access to this location is not allowed.'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Define the class that will have the menu.</span>
 <span style="color: #000000; font-weight: bold;">class</span> menuExample
 <span style="color: #009900;">&#123;</span>
 <span style="color: #000000; font-weight: bold;">function</span> DEFAULT_MENU<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
 <span style="color: #009900;">&#123;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">startTable</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">publish</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'publish'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">unpublish</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'unpublish'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">divider</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">addNew</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'new'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">editList</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'edit'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Edit'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">deleteList</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">' '</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'delete'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Remove'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 mosMenuBar<span style="color: #339933;">::</span><span style="color: #004000;">endTable</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>componentName.class.php (opcional):</strong></p>
<p>This file is used to create a class that will make it easier for us to save, edit and delete a record from the table using the methods inherited from the class mosDBTable.</p>
<p>In the example provided in the file admin.componentName.php we have used a class of this king, more specifically when using the methods bind(), store().</p>
<p>This class also allows us to load a record simply by using the load() method, which receives as parameters the record id.</p>
<p>Basic structure of the file:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
 <span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'_VALID_MOS'</span> <span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Direct Access to this location is not allowed.'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">class</span> classNameTable <span style="color: #000000; font-weight: bold;">extends</span> mosDBTable <span style="color: #009900;">&#123;</span>
 <span style="color: #666666; font-style: italic;">// Each variable is defined according to the number of fields in the table that is referenced in the database.</span>
 <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$fieldName1</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">var</span> $ fieldName <span style="color: #cc66cc;">2</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">;</span>
 <span style="color: #000000; font-weight: bold;">function</span> classNameTable <span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$db</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">mosDBTable</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'#__tableName'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'id'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$db</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//This method receives 3 parameters: table name, field with the primary key, database connector.</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>componentName.php and componentName.html.php (Frontend):</strong></p>
<p>These 2 files are used to perform actions in the frontend component. The file componentName.php has the same structure as the admin.componentName.php file. The file componentName.html.php has the same structure as the file named admin.componentName.html.php<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/en/2009/09/creating-components-for-joomla-10x/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introduction to Joomla</title>
		<link>http://www.serfe.com/blog/en/2009/08/introduction-to-joomla/</link>
		<comments>http://www.serfe.com/blog/en/2009/08/introduction-to-joomla/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 13:54:35 +0000</pubDate>
		<dc:creator>sebastian</dc:creator>
		
		<category><![CDATA[Joomla]]></category>

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

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=197</guid>
		<description><![CDATA[This article aim will be to provide an introduction to the content management system called Joomla, describe its main features and how it is made.
What is Joomla?
Joomla is an open source Content Management System (CMS) built with PHP under a GPL license. This o Content Management System can be used to create a website with [...]]]></description>
			<content:encoded><![CDATA[<p>This article aim will be to provide an introduction to the content management system called Joomla, describe its main features and how it is made.</p>
<p><strong>What is Joomla?</strong></p>
<p>Joomla is an open source Content Management System (CMS) built with PHP under a GPL license. This o Content Management System can be used to create a website with dynamic content, using a MySQL database.</p>
<p>Features:</p>
<ul>
<li>Websites organization.</li>
<li>Publication of contents.</li>
<li>Scalability and implementation of new functionalities.</li>
<li>User&#8217;s management.</li>
<li>Websites design.</li>
<li>Navigation and menu.</li>
<li>Image manager.</li>
<li>Modifiable modules order.</li>
<li>Polls.</li>
<li>Advertising.</li>
<li>Statistics of visits.</li>
<li>And more&#8230;</li>
</ul>
<p><strong>Which websites can be created with Joomla?</strong></p>
<p>With Joomla we can create news websites, corporate sites, community portals, and we can also create with Joomla systems operating on closed networks (Intranets) to manage internal information (communications, users, etc) from companies or business firms.<span id="more-197"></span></p>
<p><strong>Who can use Joomla?</strong></p>
<p>Anyone who wants to have a website can use Joomla.</p>
<p>To build sites on Joomla you must have knowledge about web design and programming, but to manage websites developed on Joomla you just need a minimal training on the programs use.</p>
<p>Joomla&#8217;s administrative interface is so simple and friendly, that anyone can manage their own web contents without the need to have technical knowledge, without knowing HTML, and without appeal to a WebMaster every time you have something to update in a website.</p>
<p>All technical aspects of the system are hidden from the common user, and have been resolved by the developers of Joomla, making things simple for administrators and content editors to dispense almost entirely of a specialized technical training.</p>
<p><strong>How is Joomla composed?</strong></p>
<p>Component:</p>
<p>The &#8220;Components&#8221; are content elements or Joomla&#8217;s applications that are usually shown in the center of the main content area of a template. The components are core elements of Joomla&#8217;s functionality.</p>
<p>Modules:</p>
<p>The &#8220;Modules&#8221; extend the possibilities of Joomla by providing the software new functionalities. Modules are small content items that can be displayed in any place that your template permits. The modules that Joomla typically includes are: Main Menu, Top Menu, Template Chooser, Polls, Hit Counter, etc.</p>
<p>Mambot:</p>
<p>The &#8220;Mambot&#8221; or &#8220;Plugins&#8221;are small task-oriented functions that intercept content before it is displayed and manipulates it somehow. Joomla provides several mambots/plugins in the distribution of the core. Between Mambots examples we can find WYSIWYG editors.</p>
<p><strong>Versions</strong></p>
<p>The first version of Joomla! (Joomla! 1.0.0) was published on 16 September 2005 and it was an enhanced evolution of Mambo 4.5.2.3 combined with changes in security and anti-bugs. The latest release is called Joomla! 1.5 stable, with its code completely rewritten and build under PHP 5.</p>
<p><strong>How is Joomla divided?</strong></p>
<p>Backend:</p>
<p>The &#8220;Joomla Administrator&#8221; (Back-end) is the administrative control panel from which the Manager, Administrator or Super Administrator administers the site and its contents.</p>
<p>Frontend:</p>
<p>&#8220;The Site&#8221; (Front-end) is the website that your visitors or registered users see, and it contains all the information managed from the Administrator.<!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/en/2009/08/introduction-to-joomla/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creating and using web services with PHP</title>
		<link>http://www.serfe.com/blog/en/2009/08/creating-and-consuming-web-services-with-php/</link>
		<comments>http://www.serfe.com/blog/en/2009/08/creating-and-consuming-web-services-with-php/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 20:40:17 +0000</pubDate>
		<dc:creator>fergamba</dc:creator>
		
		<category><![CDATA[Web Services]]></category>

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

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

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

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

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

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=134</guid>
		<description><![CDATA[Basic Implementation of a Web Service client with PHP
A web service is an application that exposes or publish its functionalities or methods through an interface. It works in client-server mode, other applications talk to the web service using messages in a standardized format. Essentially, the communication is the same as a web server returning requested [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Basic Implementation of a Web Service client with PHP</strong></p>
<p>A web service is an application that exposes or publish its functionalities or methods through an interface. It works in client-server mode, other applications talk to the web service using messages in a standardized format. Essentially, the communication is the same as a web server returning requested data by a browser such as an HTML page, the only difference is that instead of serving up HTML in response to HTTP requests, it serves up SOAP (XML) responses to SOAP requests.</p>
<p>Four elements make a web service:</p>
<ul>
<li><strong>XML </strong></li>
</ul>
<p>Standard format for exchange data primarily designed to the web. Its principal advantage is that a developer can define his own tags, this fix the way the data are read and validated by the client applications. XML schemas must be public so any change made in the application doesn&#8217;t affect communication. An xml file begins with this header:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span><span style="color: #000000; font-weight: bold;">&lt;span</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;more-134&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/span<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<ul>
<li><strong>SOAP </strong></li>
</ul>
<p>Acronym of Simple Object Access Protocol. Is a communication protocol between applications through messages, where web service objects will be instantiated and their methods will be requested. It was conceived to maintain independence of platform and language implementation, two applications created in different programming languages running on different operative systems, can request data and exchange information without know nothing about each other. SOAP is based on XML, that means that messages of applications are XML files with a predefined schema:   SOAP messages must be contained in an envelope associated with a namespace by</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Envelope</span> <span style="color: #000066;">xmlns:soap</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/12/soap-envelope&quot;</span></span>
<span style="color: #009900;">   <span style="color: #000066;">Soap:encodingStyle</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/12/soap-encoding&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Header<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   ...
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Header<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   ...
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:Fault<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     ...
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Fault<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/soap:Envelope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>SOAP messages must be contained in an envelope associated with a namespace by</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">xmlns:soap = &quot;http://www.w3.org/2001/12/soap-envelope&quot;</pre></div></div>

<p>In this case the predefined standard is used:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">http://www.w3.org/2001/12/soap-envelope</pre></div></div>

<p>With encodingStyle, all the complex and simple data types used in the document are defined (any complex type formed with simple type elements can be defined and used). Header includes specific information about the message, like autetication. The message itself is inside the body.</p>
<ul>
<li><strong>WSDL </strong></li>
</ul>
<p>Web Service Description Language is a standard based on XML that describes access to the web service. It indicates wich are the interfaces, operations, messages and data type needed. This is a brief example, to see the file in more detail see:  <a title="Amazon Web Service Description Language" href="http://soap.amazon.com/schemas3/AmazonWebServices.wsdl" target="_self">http://soap.amazon.com/schemas3/AmazonWebServices.wsdl</a></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;wsdl:definitions</span> <span style="color: #000066;">targetNamespace</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com&quot;</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;AmazonSearch&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;wsdl:types<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:schema</span> <span style="color: #000066;">targetNamespace</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:complexType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ProductLineArray&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:complexContent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:restriction</span> <span style="color: #000066;">base</span>=<span style="color: #ff0000;">&quot;soapenc:Array&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:attribute</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;soapenc:arrayType&quot;</span> <span style="color: #000066;">wsdl:arrayType</span>=<span style="color: #ff0000;">&quot;typens:ProductLine[]&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:restriction<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:complexContent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      ....
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:complexType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;CustomerReview&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:all<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Rating&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xsd:string&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Date&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xsd:string&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Summary&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xsd:string&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xsd:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Comment&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;xsd:string&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:all<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      ....
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xsd:schema<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/wsdl:types<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;message</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;KeywordSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #808080; font-style: italic;">&lt;!-- Messages for Amazon Web APIs --&gt;</span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;part</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;KeywordSearchRequest&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;typens:KeywordRequest&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/message<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;message</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;KeywordSearchResponse&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;part</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;return&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;typens:ProductInfo&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/message<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;portType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;AmazonSearchPort&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #808080; font-style: italic;">&lt;!-- Port for Amazon Web APIs --&gt;</span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;operation</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;KeywordSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;input</span> <span style="color: #000066;">message</span>=<span style="color: #ff0000;">&quot;typens:KeywordSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;output</span> <span style="color: #000066;">message</span>=<span style="color: #ff0000;">&quot;typens:KeywordSearchResponse&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/operation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;operation</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;TextStreamSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;input</span> <span style="color: #000066;">message</span>=<span style="color: #ff0000;">&quot;typens:TextStreamSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;output</span> <span style="color: #000066;">message</span>=<span style="color: #ff0000;">&quot;typens:TextStreamSearchResponse&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/operation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/portType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;binding</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;AmazonSearchBinding&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;typens:AmazonSearchPort&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:binding</span> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;rpc&quot;</span> <span style="color: #000066;">transport</span>=<span style="color: #ff0000;">&quot;http://schemas.xmlsoap.org/soap/http&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;operation</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;KeywordSearchRequest&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:operation</span> <span style="color: #000066;">soapAction</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;input<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:body</span> <span style="color: #000066;">use</span>=<span style="color: #ff0000;">&quot;encoded&quot;</span> <span style="color: #000066;">encodingStyle</span>=<span style="color: #ff0000;">&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;</span> <span style="color: #000066;">namespace</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/input<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;output<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
       <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:body</span> <span style="color: #000066;">use</span>=<span style="color: #ff0000;">&quot;encoded&quot;</span> <span style="color: #000066;">encodingStyle</span>=<span style="color: #ff0000;">&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;</span> <span style="color: #000066;">namespace</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/output<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/operation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  ....
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;AmazonSearchService&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #808080; font-style: italic;">&lt;!-- Endpoint for Amazon Web APIs --&gt;</span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;port</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;AmazonSearchPort&quot;</span> <span style="color: #000066;">binding</span>=<span style="color: #ff0000;">&quot;typens:AmazonSearchBinding&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;soap:address</span> <span style="color: #000066;">location</span>=<span style="color: #ff0000;">&quot;http://soap.amazon.com/onca/soap3&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/service<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/wsdl:definitions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<ul>
<li><strong>UDDI </strong></li>
</ul>
<p>Universal Discovery Description and Integration is a standard that describes the nature of a service, its capacities, location and requeriments in such a way that it can be categorized in web sites offering web service directory. UDDI uses WSDL to describe web service interfaces.</p>
<p>Some of the more common directories are:</p>
<p><a href="http://soapclient.com/uddisearch.html">http://soapclient.com/uddisearch.html</a></p>
<p><a href="http://uddi.org/find.html">http://uddi.org/find.html </a></p>
<p><strong>Applicability </strong></p>
<p>The most used protocol used by web services is HTTP, not because web services can&#8217;t be mounted on other protocols such as FTP or SMTP, but because in an environment such as Internet firewalls block many times the access to other protocols.</p>
<p><strong>Implementation </strong></p>
<p>PHP has a few options for SOAP: a PEAR package, an independent and very popular library called NuSOAP and a PHP 5 extension. The last option will be used in this example. First of all native support must be enabled in the web server, in this example Apache is used.  Find this lines in the PHP configuration file an uncomment them.</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">[soap]
; Enables or disables WSDL caching feature.
soap.wsdl_cache_enabled=<span style="color: #ff0000;">1</span>
; Sets the <span style="color: #00007f;">directory</span> name where SOAP extension will put cache <span style="color: #00007f;">files</span>.
soap.wsdl_cache_dir=<span style="color: #7f007f;">&quot;/tmp&quot;</span>
; (time to live) Sets the number of second while cached file will be used
; instead of original one.
soap.wsdl_cache_ttl=<span style="color: #ff0000;">86400</span></pre></div></div>

<p>If we create a php script with phpinfo() function we will see something like this:</p>
<p>soap</p>
<p>Soap Client enabled</p>
<p>Soap Server enabled</p>
<p>Once this is done, the rest of the process is very simple</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
 <span style="color: #000088;">$wsdl_url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://soap.amazon.com/schemas3/AmazonWebServices.wsdl&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$client</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> SoapClient<span style="color: #009900;">&#40;</span><span style="color: #000088;">$wsdl_url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$client</span><span style="color: #339933;">-;</span>__getFunctions<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>In this script we see a class instantiation and a parameter passing to use an amazon web service. The last line of code will shows us wich methods are exposed and what data types use.</p>
<p>The output is:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>pre lang<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;php&quot;</span> line<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;1&quot;</span> escaped<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;true&quot;</span><span style="color: #339933;">&gt;</span>array<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">26</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo KeywordSearchRequest(KeywordRequest <span style="color: #006699; font-weight: bold;">$KeywordSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">79</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo TextStreamSearchRequest(TextStreamRequest <span style="color: #006699; font-weight: bold;">$TextStreamSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">64</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo PowerSearchRequest(PowerRequest <span style="color: #006699; font-weight: bold;">$PowerSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">79</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo BrowseNodeSearchRequest(BrowseNodeRequest <span style="color: #006699; font-weight: bold;">$BrowseNodeSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">61</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo AsinSearchRequest(AsinRequest <span style="color: #006699; font-weight: bold;">$AsinSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">75</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductLineArray BlendedSearchRequest(BlendedRequest <span style="color: #006699; font-weight: bold;">$BlendedSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">58</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo UpcSearchRequest(UpcRequest <span style="color: #006699; font-weight: bold;">$UpcSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">7</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">58</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo SkuSearchRequest(SkuRequest <span style="color: #006699; font-weight: bold;">$SkuSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">8</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">67</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo AuthorSearchRequest(AuthorRequest <span style="color: #006699; font-weight: bold;">$AuthorSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">9</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">67</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo ArtistSearchRequest(ArtistRequest <span style="color: #006699; font-weight: bold;">$ArtistSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">64</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo ActorSearchRequest(ActorRequest <span style="color: #006699; font-weight: bold;">$ActorSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">11</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">85</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo ManufacturerSearchRequest(ManufacturerRequest <span style="color: #006699; font-weight: bold;">$ManufacturerSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">73</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo DirectorSearchRequest(DirectorRequest <span style="color: #006699; font-weight: bold;">$DirectorSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">13</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">83</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ListingProductDetails ExchangeSearchRequest(ExchangeRequest <span style="color: #006699; font-weight: bold;">$ExchangeSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">14</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">76</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo ListManiaSearchRequest(ListManiaRequest <span style="color: #006699; font-weight: bold;">$ListManiaSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">15</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">73</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo WishlistSearchRequest(WishlistRequest <span style="color: #006699; font-weight: bold;">$WishlistSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">16</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">90</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;SellerProfile SellerProfileSearchRequest(SellerProfileRequest <span style="color: #006699; font-weight: bold;">$SellerProfileSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">17</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">68</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;SellerSearch SellerSearchRequest(SellerRequest <span style="color: #006699; font-weight: bold;">$SellerSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">18</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">88</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;MarketplaceSearch MarketplaceSearchRequest(MarketplaceRequest <span style="color: #006699; font-weight: bold;">$MarketplaceSearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">19</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">79</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ProductInfo SimilaritySearchRequest(SimilarityRequest <span style="color: #006699; font-weight: bold;">$SimilaritySearchRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">20</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">83</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ShoppingCart GetShoppingCartRequest(GetShoppingCartRequest <span style="color: #006699; font-weight: bold;">$GetShoppingCartRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">21</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">89</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ShoppingCart ClearShoppingCartRequest(ClearShoppingCartRequest <span style="color: #006699; font-weight: bold;">$ClearShoppingCartRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">22</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">98</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ShoppingCart AddShoppingCartItemsRequest(AddShoppingCartItemsRequest <span style="color: #006699; font-weight: bold;">$AddShoppingCartItemsRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">23</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">107</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ShoppingCart RemoveShoppingCartItemsRequest(RemoveShoppingCartItemsRequest <span style="color: #006699; font-weight: bold;">$RemoveShoppingCartItemsRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">24</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">107</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;ShoppingCart ModifyShoppingCartItemsRequest(ModifyShoppingCartItemsRequest <span style="color: #006699; font-weight: bold;">$ModifyShoppingCartItemsRequest</span>)&quot;</span>
 <span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">25</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=&gt;</span> string<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">118</span><span style="color: #009900;">&#41;</span> <span style="color: #0000ff;">&quot;GetTransactionDetailsResponse GetTransactionDetailsRequest(GetTransactionDetailsRequest <span style="color: #006699; font-weight: bold;">$GetTransactionDetailsRequest</span>)&quot;</span>
 <span style="color: #009900;">&#125;</span></pre></div></div>

</pre>
<p>As you can see these are the methods exposed by the amazon web service.</p>
<p><strong>Resources: </strong></p>
<p><a title="w3schools" href="http://www.w3schools.com/webservices/" target="_self">http://www.w3schools.com/webservices/</a></p>
<p><a title="sitepoint" href="http://www.sitepoint.com/article/own-web-service-php-xml-rpc/" target="_self">http://www.sitepoint.com/article/own-web-service-php-xml-rpc/</a></p>
<p><a title="builderau" href="http://www.builderau.com.au/program/php/soa/Powerful-Web-Services-with-PHP-and-SOAP/0,339028448,339288552,00.htm" target="_self">http://www.builderau.com.au/program/php/soa/Powerful-Web-Services-with-PHP-and-SOAP/0,339028448,339288552,00.htm</a></p>
<p><a title="PHP manual" href="http://ar2.php.net/manual/en/book.soap.php" target="_self">http://ar2.php.net/manual/en/book.soap.php</a></p>
<p><a title="devzone" href="http://devzone.zend.com/article/689" target="_self">http://devzone.zend.com/article/689</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/en/2009/08/creating-and-consuming-web-services-with-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SVN Subversion: Version Control System</title>
		<link>http://www.serfe.com/blog/en/2009/07/svn-subversion-version-control-system/</link>
		<comments>http://www.serfe.com/blog/en/2009/07/svn-subversion-version-control-system/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 20:08:59 +0000</pubDate>
		<dc:creator>federico</dc:creator>
		
		<category><![CDATA[Quality Assurance]]></category>

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

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

		<category><![CDATA[Programming Phase]]></category>

		<category><![CDATA[Version Control System]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=117</guid>
		<description><![CDATA[One version or revision of a product is the state where it is at a given moment in its development or modification. Version control is the management of various changes made on the elements of a product. A Version Control Systems allow us to manage different versions of each product developed and made possible customizations [...]]]></description>
			<content:encoded><![CDATA[<p>One version or revision of a product is the state where it is at a given moment in its development or modification. Version control is the management of various changes made on the elements of a product. A Version Control Systems allow us to manage different versions of each product developed and made possible customizations (eg for a specific client). In the case of software is used to track different versions of source code that are continually modified by the development team. The most used tool for this is Subversion.</p>
<p>Subversion is a software Version Control System that seeks to replace the popular CVS, which has several shortcomings. It is open source and is also known as svn (because this is the name of the command-line tool).</p>
<p><span id="more-117"></span>The use of Web applications is growing day by day as well as its size. This is why a project of this topic need a team of several developers with different skills in order to finish the product on time. This is why we use this tool. All files related to the project are stored in the repository which is located on a remote server. Any member of the team could make changes and send to the repository, which can then be downloaded by other members of the team.</p>
<p>These are some of the benefits of using this tool:</p>
<div style="text-align: left;" dir="ltr">
<ul>
<li><strong>Multiple users can edit the same file simultaneously.</strong> Everyone can work without interruption in its local copy. To send the changes, the system will provide tools to integrate them without overwriting modifications made by another developer.</li>
<li><strong>Associate changes to a task.</strong> Every changes sent to the repository can be associated to a particular task (eg development of a new feature, change, solving a bug, etc).</li>
<li><strong>Roll-back to a previous version.</strong> At any time you can return to any previous version of the product.</li>
<li><strong>Log of changes of the repository.</strong> Useful if you do not remember which files were modified in a particular task. It has a log of all changes posted and each files which were modified in them.</li>
<li><strong>Get metric.</strong> Useful for measuring the quality and quantity of work in a unit time.</li>
<li><strong>Restrict read / write directory.</strong> Allows you to set read and write permissions on each directory to different users. In this way, users only has access to files according to its profile and the tasks that should perform.</li>
<li><strong>Backup.</strong> All versions of the product are hosted on a remote server. Its only necessary to backup the repository in the server to have all the versions saved.</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/en/2009/07/svn-subversion-version-control-system/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JReserv: We finished the requirement phase</title>
		<link>http://www.serfe.com/blog/en/2009/06/jreserv-we-finished-the-requirement-phase/</link>
		<comments>http://www.serfe.com/blog/en/2009/06/jreserv-we-finished-the-requirement-phase/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 15:49:19 +0000</pubDate>
		<dc:creator>federico</dc:creator>
		
		<category><![CDATA[Joomla]]></category>

		<category><![CDATA[Serfe Projects]]></category>

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

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

		<category><![CDATA[Open Source]]></category>

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

		<category><![CDATA[Joomla Extension]]></category>

		<category><![CDATA[Requirements Phase]]></category>

		<guid isPermaLink="false">http://www.serfe.com/blog/en/?p=81</guid>
		<description><![CDATA[We are pleased to announce that we have completed the requirements phase of JReserv project. Here are the features that we will implement in the first version.

Management:

Resources Management
Packages Management
Prices and Availabilities Management
Clients Managements
Agents Managements
Configuration Managements


Services that would be offered to visitors:

Resources Catalog and Packages
Online Booking



1 Resources Management:
The system will allow the management of resources, allowing [...]]]></description>
			<content:encoded><![CDATA[<p>We are pleased to announce that we have completed the requirements phase of JReserv project. Here are the features that we will implement in the first version.</p>
<ol>
<li>Management:<a href="http://www.serfe.com/blog/wp-content/uploads/2009/04/jreserv.jpg"><img class="size-medium wp-image-33 alignright" title="Logo JReserv" src="http://www.serfe.com/blog/wp-content/uploads/2009/04/jreserv-300x221.jpg" alt="JReser" width="180" height="133" /></a>
<ol>
<li>Resources Management</li>
<li>Packages Management</li>
<li>Prices and Availabilities Management</li>
<li>Clients Managements</li>
<li>Agents Managements</li>
<li>Configuration Managements</li>
</ol>
</li>
<li>Services that would be offered to visitors:
<ol>
<li>Resources Catalog and Packages</li>
<li>Online Booking</li>
</ol>
</li>
</ol>
<p><strong>1 Resources Management:</strong></p>
<p>The system will allow the management of resources, allowing to Create, Read, Update y Delete (CRUD) them. The system must store relevant information about it including: title, description and images.</p>
<p>Also should allow to classify the resources in a flexible manner in order to be suitable for any business allowing the proper adaptation of the tool to any environment. A resource would be associated to a bookable category which will be associated with one or more than one category. At the same time, a category can be classified in other parents categories. For example, for a resource of a hotel called &#8220;101 room&#8221; could be associated to a bookable category called &#8220;Double Room&#8221;, which may be associated with the following categories &#8220;Caesar Hotel&#8221; to define that it belong to this hotel. At the same, this hotel may be associated with &#8220;Santa Fe&#8221; to identify to which city belongs.<strong> </strong>The category &#8220;Caesar Hotel&#8221; may be a children of another category called &#8220;Emperors Chain&#8221; to identify which chain owns the hotel while &#8220;Santa Fe&#8221; is the children of &#8220;Argentina&#8221; to determine to which country it belongs. As you can see this is very flexible and could be adapted to any business.</p>
<p>A bookable category may be associated to one or more addons. These addons can be purchased at the same time of the booking. For example, by booking a &#8220;Double Room&#8221; we would be able to add to our order a &#8220;Dinner Menu&#8221;. It is possible that the addons impact on the price of the reservation.</p>
<p style="text-align: center;"><a href="http://www.serfe.com/blog/wp-content/uploads/2010/05/resources.jpg"><img class="aligncenter size-full wp-image-285" title="resources in jreserv" src="http://www.serfe.com/blog/wp-content/uploads/2010/05/resources.jpg" alt="" width="489" height="318" /></a>Picture 1: Entities associated with resources</p>
<p>Bookable categories and categories would also have associated properties that represents its characteristics. Having this information in a separate entity will allow to perform searches of resources and categories which have these characteristics in common. As an example, the resource &#8220;Double Room&#8221; could have assigned properties &#8220;Jacuzzi&#8221;, &#8220;Private Bath&#8221;, &#8220;Air Conditioning&#8221;. Then if you&#8217;re interested in making a reservation for a room with Jacuzzi you could make a filtering to obtain a list of all the rooms that have those features and then choose between them.</p>
<p><span id="more-81"></span><strong>2 Packages Management:</strong></p>
<p>The system would have CRUD of packages. These packages consist of a set of resources and addons and let us create special offers. For example in one package &#8220;Weekend in Santa Fe&#8221; we could add 2 nights of &#8220;Double Room&#8221; with an addon &#8220;Santa Fe City Tour&#8221; and offer it at a price of $500.</p>
<p>The packages may also have associated properties that detail their characteristics. As well as images which are used to show it to potential customers.</p>
<p><em> </em></p>
<p style="text-align: center;"><a href="http://www.serfe.com/blog/wp-content/uploads/2010/05/packages.jpg"><img class="aligncenter size-full wp-image-286" title="packages in jreserv" src="http://www.serfe.com/blog/wp-content/uploads/2010/05/packages.jpg" alt="" width="500" height="309" /></a>Picture 2: Entities associated with packages</p>
<p><strong>3 Prices and Availabilities Management:</strong></p>
<p>The system should allow setting the price of bookable categories and packages as well as their availability. The system must consider the possibility of setting different prices according to seasons. In the same way must allow to apply different discount depending on the month of the year, day of the month, day of week or hour of day. Also offer discount on longer period reservations. The system also would let the administrator to set the availability of the resource in order to prohibit its booking in periods that its not available.</p>
<p style="text-align: center;"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/06/prices.jpg"><img class="aligncenter size-full wp-image-287" title="prices on jreserv" src="http://www.serfe.com/blog/wp-content/uploads/2010/05/prices.jpg" alt="" width="500" height="319" /></a>Picture 3: Entities associated with prices and availabilities</p>
<p><strong>4 Client Management:</strong></p>
<p>The system should have features that allow CRUD of customers as well as the create order for a client, this would be useful for an operator to take telephone bookings from customers. It also may allows to manage the orders placed by customers, allowing the follow-up throughout the sales process.</p>
<p style="text-align: center;"><a href="http://www.serfe.com/blog/wp-content/uploads/2009/06/items_en.jpg"><img class="aligncenter size-full wp-image-288" title="items on jreserv" src="http://www.serfe.com/blog/wp-content/uploads/2010/05/items-en.jpg" alt="" width="500" height="233" /></a>Picture 4: Entities associated with clients and orders</p>
<p><strong>5 Agents Management:</strong></p>
<p>The agents are the users who use the system to manage resources, bookable categories, categories, packages and customers. The system needs to allow to current administrator or agents with sufficient permission to perform CRUD of agents. It will also enable the management of permissions which are then allocated to agents. This will limit the access of agents to the functionality of the system, allowing to perform only those task permitted based on their profile within the company.</p>
<p style="text-align: center;"><a href="http://www.serfe.com/blog/wp-content/uploads/2010/05/profiles.jpg"><img class="aligncenter size-full wp-image-289" title="profiles on jreserv" src="http://www.serfe.com/blog/wp-content/uploads/2010/05/profiles.jpg" alt="" width="500" height="238" /></a>Picture 5: Entities associated with agents</p>
<p><strong>6 Configuratin Management:</strong></p>
<p>The system administrator can modify the settings of the software. In this way would be able to set the rates of currencies, payment methods, taxes, among other parameters used.</p>
<p><strong>7 Resource Catalog and Packages:</strong></p>
<p>The system should displays all the information detailed before to visitors. The catalogue shall provide sufficient information in an orderly fashion and ensuring an enjoyable experience for the potential customer.</p>
<p>Should allow to perform searches on resources by identifying the desired characteristics, period where the visitor in interested on making the booking as well as its price. Visitors may also browse the entire catalog by visiting the various resource, packages and categories, reviewing the characteristics of each.</p>
<p><strong>8 Online Booking:</strong></p>
<p>When the potential customer finds a good or service in which is interested on making a booking then the system must also provide a simple process to make it. The visitor should have no problems in signing up as a client, set the start and end date of the reservation as well as all the special features of it. The system also must have an easy payment procedure.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.serfe.com/blog/en/2009/06/jreserv-we-finished-the-requirement-phase/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

