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

<channel>
	<title>Timani &#187; Drupal + Open Atrium</title>
	<atom:link href="http://timani.net/category/blog/drupal-and-open-atrium/feed/" rel="self" type="application/rss+xml" />
	<link>http://timani.net</link>
	<description>Seattle based Drupal, Wordpress, CSS3, HTML5 and Android</description>
	<lastBuildDate>Sun, 29 Jan 2012 04:22:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Include CiviCRM functions from standalone PHP script</title>
		<link>http://timani.net/2010/04/include-civicrm-functions-from-standalone-php-script/</link>
		<comments>http://timani.net/2010/04/include-civicrm-functions-from-standalone-php-script/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 03:00:43 +0000</pubDate>
		<dc:creator>timani</dc:creator>
				<category><![CDATA[Drupal + Open Atrium]]></category>
		<category><![CDATA[CiviCRM]]></category>
		<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://timani.net/2010/04/08/include-civicrm-functions-from-standalone-php-script/</guid>
		<description><![CDATA[With CiviCRM being such a light, flexible and powerful alternative to use, and as an Open Source utility it makes it even better. Occasionally you will need to include functions, and extend the API. There is a Wiki that is &#8230; <a href="http://timani.net/2010/04/include-civicrm-functions-from-standalone-php-script/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>With <a title="CiviCRM" rel="homepage" href="http://civicrm.org/" target="_blank">CiviCRM</a> being such a light, flexible and powerful alternative to use, and as an <a title="Open Source" rel="wikinvest" href="http://www.wikinvest.com/concept/Open_Source" target="_blank">Open Source</a> utility it makes it even better. Occasionally you will need to include functions, and extend the <a title="Application programming interface" rel="wikipedia" href="http://en.wikipedia.org/wiki/Application_programming_interface" target="_blank">API</a>.</p>
<p>There is a <a title="CiviCRM Wiki" href="http://wiki.civicrm.org/confluence/display/CRMDOC/CiviCRM+Documentation" target="_blank">Wiki</a> that is pretty well documented, but even i will admit it will take some getting into, but once you are going then you can do a lot, and i mean a LOT.</p>
<p>Granted that not everyone uses <a title="Drupal" rel="homepage" href="http://drupal.org" target="_blank">Drupal</a>, or <a title="Joomla" rel="homepage" href="http://www.joomla.org/" target="_blank">Joomla</a>, and if you are using a</p>
<p>framework like Codeigniter, <a title="CakePHP" rel="homepage" href="http://www.cakephp.org" target="_blank">CakePHP</a>, <a title="Symfony" rel="homepage" href="http://www.symfony-project.org/" target="_blank">Symfony</a>, Plone or even another CMS like<span id="more-560"></span></p>
<p>WordPress you may want to actually get information related to CiviCRM. To get this done it is a pretty straightforward 3 step process if you have everything install correctly.</p>
<p>First you will need to include the following files:<!--more--></p>
<ol>
<li><em>civicrm.settings.php </em>
<ol>
<li><em>This is usually in the root of your CiviCRM install. So for Drupal: $drupal_root/sites/all/modules/civicrm/civicrm.settings.php</em></li>
</ol>
</li>
<li><em>$civicrm_root/CRM/Core/Config.php </em>
<ol>
<li><em>For Drupal based installs: $drupal_root/sites/all/modules/civicrm/CRM/Core/Config.php</em></li>
</ol>
</li>
<li><em>include specific php files within the api directory</em></li>
</ol>
<p>Once you have located your files above you can then include them in your file to bootstrap Civi. After this is done you will then have access to the global $civicrm_root from within your application.</p>
<p>Here is an example of what a bootstrap file may look like:</p>
<pre class="brush: php; title: ; notranslate">

// Set the Drupal Root path
$drupal_root = '/home/httpdocs/foo';

// Set the Civicrm settings file path
$civicrm_settings_path = $drupal_root . '/sites/all/modules/civicrm/civicrm.settings.php';

//Include the CiviCRM settings files
require_once $civicrm_settings_path;

//Initialize the CRM
civicrm_initialize( );
&lt;pre&gt;// Include the Config file
require_once $drupal_root. '/CRM/Core/Config.php';

$config =&amp; CRM_Core_Config::singleton( );

// Include any Modules that you may want to extend
require_once $drupal_root.'/api/v2/Contribute.php';

// Finally API call time
$contribution = civicrm_contribution_get();// now make API call // do whatever you want with your contribution
&lt;/pre&gt;
</pre>
<p>Now you can have the CRM running and integrated with virtually any external PHP framework or simple standalone script.<br />
This is great if you have an existing CMS or framework, so rather than a rebuild you can simply extend CiviCRM and get it<br />
to do everything you need.</p>
<p>I think i may actually be interested in a WordPress plugin to try and get some smoother integration. With WordPress 3.0 Beta out it may not be a bad idea.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=becbe240-c617-45a2-ba77-6f1e6867ae63" alt="" /><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://timani.net/2010/04/include-civicrm-functions-from-standalone-php-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bootstrap and include Drupal from outside the Drupal root</title>
		<link>http://timani.net/2010/04/bootstrap-and-include-drupal-from-outside-the-drupal-root/</link>
		<comments>http://timani.net/2010/04/bootstrap-and-include-drupal-from-outside-the-drupal-root/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 01:11:43 +0000</pubDate>
		<dc:creator>timani</dc:creator>
				<category><![CDATA[Drupal + Open Atrium]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[CiviCRM]]></category>
		<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://timani.net/2010/04/08/bootstrap-and-include-drupal-from-outside-the-drupal-root/</guid>
		<description><![CDATA[Working on a site that needed to get some pretty detailed membership information as well as some payment processing the natural solution seemed like the Drupal based CiviCRM .  However, there was one problem and that was the CMS they &#8230; <a href="http://timani.net/2010/04/bootstrap-and-include-drupal-from-outside-the-drupal-root/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Working on a site that needed to get some pretty detailed membership information as well as some payment processing the natural solution seemed like the Drupal based <a title="http://civicrm.org/" href="http://civicrm.org/" target="_blank">CiviCRM </a>.  However, there was one problem and that was the <a title="Content management system" rel="wikipedia" href="http://en.wikipedia.org/wiki/Content_management_system" target="_blank">CMS</a> they had managing the rest of the site was actually in Worpdress, so i would need to bootstrap Drupal.</p>
<div class="zemanta-img zemanta-action-dragged" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignright" style="width: 204px;">
<dt class="wp-caption-dt"><a href="http://en.wikipedia.org/wiki/Image:CiviCRM_Logo.png"><img title="CiviCRM" src="http://upload.wikimedia.org/wikipedia/en/4/46/CiviCRM_Logo.png" alt="CiviCRM" width="194" height="189" /></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Image via <a href="http://en.wikipedia.org/wiki/Image:CiviCRM_Logo.png">Wikipedia</a></dd>
</dl>
</div>
</div>
<p>Ideally if there was a <a title="Customer relationship management" rel="wikipedia" href="http://en.wikipedia.org/wiki/Customer_relationship_management" target="_blank">CRM</a> plugin with payment processing and some of the advanced features of CiviCRM then this would have been the natural choice. But seeing as none existed CiviCRM was the choice.</p>
<p>As a result we would also want to use some of the <a title="Drupal" rel="homepage" href="http://www.drupal.org" target="_blank">Drupal</a> classes, methods, and functions so we needed to bootstrap Drupal outside of the Drupal root.<span id="more-547"></span></p>
<p>For example the site <em>http://foo.com</em> is the site root, and the Drupal root is <em>http://foo.com/</em>drupal. If the site needed to have a registration form for a page within their current path where the events are located, the ideal method would be to simply call the hook for the Drupal form from <em>http://foo.com/events/party/event-1</em>.</p>
<p>To do this you need to bootsrap the Drupal files like this</p>
<pre class="brush: php; title: ; notranslate">
$drupal_directory = &quot;/home/httpdocs/drupal&quot;;  // wherever Drupal is

$current_directory = getcwd();

chdir($drupal_directory);

require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

$sql = &quot;SELECT node.title, node.type, node.nid FROM {node} WHERE node.type = '$node_type' &quot;;
$output .= &quot;&quot;;
$result = db_query($sql);
 while ($anode = db_fetch_object($result)) {
 $output .= l($anode-&gt;title, &quot;node/$anode-&gt;nid&quot;).&quot;&lt;br /&gt;&quot;;
}

print $output;
// --------------------------------------
// ...
// ...
chdir($current_dir);
return;
 </pre>
<p>There was one other way to do this and you can find how it was done <a title="Drupal Outside of the root" href="http://www.riot-nrrd.info/sfyn/blog/tech/bootstrap-drupal-outside-drupal-root" target="_blank">here</a>:</p>
<pre class="brush: php; title: ; notranslate">
$_SERVER['SCRIPT_NAME'] = '/script.php';
$_SERVER['SCRIPT_FILENAME'] = '/script.php';
$_SERVER['HTTP_HOST'] = 'mysite.example.com';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_METHOD'] = 'POST';

chdir('/path/to/drupal/');
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
</pre>
<p>TheAnd there you have it, now you have full access to methods like:<a title="db_query() Drupal 6 API" href="http://api.drupal.org/api/function/db_query/6" target="_blank"> db_query()</a>, <a title="db_fetch_object() Drupal 6 API" href="http://api.drupal.org/api/function/db_fetch_object/6" target="_blank">db_fetch_object()</a> and <a title="l() Drupal function " href="http://api.drupal.org/api/function/l" target="_blank">l()</a> from outside of the Drupal root. Be sure to check out this post on the <a title="Drupal from outide Path" href="https://drupal.org/node/166368" target="_blank">Drupal forum </a>on how to bootstrap or include Drupal functions outside of the actual path.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=becbe240-c617-45a2-ba77-6f1e6867ae63" alt="" /><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://timani.net/2010/04/bootstrap-and-include-drupal-from-outside-the-drupal-root/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Disable the drupal.css</title>
		<link>http://timani.net/2010/03/disable-the-drupal-css-from-loading-for-better-drupal-theme-development/</link>
		<comments>http://timani.net/2010/03/disable-the-drupal-css-from-loading-for-better-drupal-theme-development/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 00:45:59 +0000</pubDate>
		<dc:creator>timani</dc:creator>
				<category><![CDATA[Drupal + Open Atrium]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://timani.net/2010/03/02/disabling-the-drupal-css-from-loading-for-easier-drupal-theme-development/</guid>
		<description><![CDATA[When working with style and UI in Drupal there is a bit that needs to be understood about themeable functions, as well as the basics of themeing and what it entails. This is more a practical example. <a href="http://timani.net/2010/03/disable-the-drupal-css-from-loading-for-better-drupal-theme-development/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am sure everyone has had a time when using drupal that you have had to create a page and needed to alter the output that may be given by a Drupal module. A lot of the time this leads to much frustration cursing and in the end some sort of core hacking or something of that nature as well as cursing and hours of confusion.</p>
<h2>Introduction</h2>
<p>I think that is one of the subtle failures by drupal is getting all the power it has harnessed and being able to easily access resources on certain topics. Yet once you manage to get into the details it can be pretty sweet.</p>
<p>In this case there is a bit that needs to be understood about themeable functions, and for that be sure to look here for the basics of theming and what it entails. This is more a practical example.<span id="more-216"></span><img class="alignright size-medium wp-image-275" title="drupal-large" src="http://timani.net/wp-content/uploads/2010/02/drupal-large-300x187.jpg" alt="" width="300" height="187" /></p>
<p>So the first thing that you will need to do is find out what functions are themeable and what the default formatting of these functions is so that you can get both the default layout and the parameters each function may take. So to do this check out the <a title="Drupal theming api" href="http://api.drupal.org/api/group/themeable" target="_blank">Drupal API</a> for a full list of the built in themeable functions. If you ever have time it is advisable to sit down and take a look at the functions here, some will definitely offer a better understanding of the functionality of the <a class="zem_slink" title="Content management system" rel="wikipedia" href="http://en.wikipedia.org/wiki/Content_management_system">CMS</a> but also give you many flexible tools to work with in module and theme design.</p>
<p>In this case we are going to have custom breadcrumbs. So we need to know what the function is so that we can overide it, and in our case it is the <a title="Drupal theme_style_import function" href="http://api.drupal.org/api/function/theme_stylesheet_import/6" target="_blank">theme_stylesheet_import</a> function which you can find <a title="Drupal theme_stylsheet_import" href="http://api.drupal.org/api/function/theme_stylesheet_import/6" target="_blank">here</a>. Once you have taken a peek at the notes you can go ahead and fire up you favorite ide and navigate to your current active theme on the <a class="zem_slink" title="Web server" rel="wikipedia" href="http://en.wikipedia.org/wiki/Web_server">web server</a>. So for example, if your current theme is called &#8220;Garland&#8221; and the theme folder is named millions then the path you would find the <em>template.php</em> file is <em>site_root/themes/garland/template.php</em>. Once we have this open you will be able to see the default functions and overrides for the current theme, garland one of drupal 6&#8242;s default themes is a very good example for this.</p>
<h2>Code</h2>
<p>Once we the active <em>template.php</em> is open scroll down to the bottom of the page and prepare to paste in the function from <a title="Drupal theme_stylesheet_import function " href="http://api.drupal.org/api/function/theme_stylesheet_import/6">theme_stylesheet_import</a> from <a title="Drupal theme_stylesheet_import" href="http://api.drupal.org/api/function/theme_stylesheet_import/6" target="_blank">Drupal</a> into you file. Now you have the base in which to work off of, so the next step is to rename the function that you have just added to something drupal will be able to interpret.</p>
<p>At this point you will likely need to have a better understanding of templating systems, and the available templating systems in drupal and you can find this piece of good reading <a title="Drupal templating system" href="http://drupal.org/node/11774" target="_blank">here</a> . So to save you from the reading the current default in drupal is <a class="zem_slink" title="PHPTemplate" rel="wikipedia" href="http://en.wikipedia.org/wiki/PHPTemplate">PHPTemplate</a>. Now why does this matter? Well if we are going to override the themeable function we should prefix this with the current template engine name, in our case the function theme_stylesheet_import would be name phptemplate_stylesheet_import in out <em>template.php</em> file.</p>
<pre class="brush: plain; title: ; notranslate">function phptemplate_stylesheet_import($stylesheet, $media = 'all') {
if (strpos($stylesheet, 'misc/drupal.css') !== 0) {
$stylesheet = str_replace('misc/drupal.css', 'misc/mysite.css', $stylesheet);
}

}</pre>
<p>Now to be sure that this works it is best to clear the drupal cache, it has happened before where you make changes to a theme file but they are not readily available when you go back to the <a class="zem_slink" title="Web browser" rel="wikipedia" href="http://en.wikipedia.org/wiki/Web_browser">browser</a> and refresh. This is likely because you have <a class="zem_slink" title="Cache" rel="wikipedia" href="http://en.wikipedia.org/wiki/Cache">caching</a> turned on or you need to clear the cache. One way to do that is to uninstall and <a class="zem_slink" title="Installation (computer programs)" rel="wikipedia" href="http://en.wikipedia.org/wiki/Installation_%28computer_programs%29">reinstall</a> the theme. This is because each time that you install a theme in drupal it will go back and clear the cache and start to rebuild for the theme as if it was installed for the first time. To do this login to the admin and go to <em>admin/build/themes</em>, uncheck the theme and select another as default and save, when the page reloads, you can set check your old theme as default and there we go. Now when you go ahead and load your site you will see that the drupal.css file is no longer loaded.</p>
<h2>Conclusion</h2>
<p>Well that is great but what is this good for other than that. Well perhaps you have a site where you need to load different stylesheets for each section of your site for some reason or don&#8217;t want people to be able to detect you are on drupal. one way would be to modify the phptemplate_stylesheet_import function that we just wrote and replace the drupal.css with a file of our own like this:</p>
<pre class="brush: plain; title: ; notranslate">function phptemplate_stylesheet_import($stylesheet, $media = 'all') {
if (strpos($stylesheet, 'misc/drupal.css') !== 0) {
$stylesheet = str_replace('misc/drupal.css', 'sites/themes/divninja/ninja.css', $stylesheet);
}
if (strpos($stylesheet, 'misc/drupal.css') === 0) {
return theme_stylesheet_import($stylesheet, $media);
}
}</pre>
<h3>Further Reading</h3>
<ol>
<li><a title="Overriding themeable output in Drupal" href="http://drupal.org/node/341628" target="_blank">Overriding themable output</a></li>
<li><a title="Overriding themeable output in Drupal" href="http://drupal.org/node/341628" target="_blank"></a>Remember Always practice safe coding, <a title="Drupal.org neever hack the core" href="http://drupal.org/node/341628" target="_blank">never hack the core</a></li>
</ol>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 236px; width: 1px; height: 1px;"><code>theme_stylesheet_import</code></div>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.slideshare.net/ccharlton/web-content-management-systems-from-a-designers-perspective-drupal-technical-stuff">Web Content Management Systems From A Designer&#8217;s Perspective (Drupal Technical Stuff)</a> (slideshare.net)</li>
<li class="zemanta-article-ul-li"><a href="http://www.centernetworks.com/interview-drupal-founder-dries-buytaert">Interview With Drupal Founder Dries Buytaert</a> (centernetworks.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.freshnetworks.com/blog/2010/03/why-drupal-is-a-great-social-media-platform-in-laymans-terms/">Why Drupal is a great social media platform (in layman&#8217;s terms)</a> (freshnetworks.com)</li>
<li class="zemanta-article-ul-li"><a href="http://r.zemanta.com/?u=http%3A//www.infoworld.com/d/open-source/hosted-drupal-cms-planned-midyear-031%3Fsource%3Drss_infoworld_news&amp;a=14964315&amp;rid=ee2d59ef-0bb4-4074-9249-e114e63ec3f8&amp;e=23fb9d4b8562489a319121a1b61fc734">Hosted Drupal CMS planned for midyear</a> (infoworld.com)</li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: medium none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=ee2d59ef-0bb4-4074-9249-e114e63ec3f8" alt="" /><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://timani.net/2010/03/disable-the-drupal-css-from-loading-for-better-drupal-theme-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source PHP Project Management</title>
		<link>http://timani.net/2010/02/open-source-php-project-management-solutions/</link>
		<comments>http://timani.net/2010/02/open-source-php-project-management-solutions/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 21:58:01 +0000</pubDate>
		<dc:creator>timani</dc:creator>
				<category><![CDATA[Drupal + Open Atrium]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Application programming interface]]></category>
		<category><![CDATA[Basecamp]]></category>
		<category><![CDATA[Collabtive]]></category>
		<category><![CDATA[Content management system]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Open Atrium]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://timani.arkangel-inc.com/?p=33</guid>
		<description><![CDATA[When we were planning on setting up our project management solution we wanted to get something that would meet a number of criteria that we had. We needed the Project Management ( PM ) system to meet : Stability &#8211; &#8230; <a href="http://timani.net/2010/02/open-source-php-project-management-solutions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">When we were planning on setting up our <a title="Project management" rel="wikipedia" href="http://en.wikipedia.org/wiki/Project_management" target="_blank">project management</a> solution we wanted to get something that would meet a number of criteria that we had.</p>
<p style="text-align: left;"><span id="more-33"></span>We needed the Project Management ( PM ) system to meet :</p>
<ol>
<li><strong>Stability</strong> &#8211; A PM that has been thoroughly tested and well supported was our primary concern. It is fine for us the software did not directly integrate but we needed something that could do everything we needed to do, and at the same time be able to offer a solid product to our clients.</li>
<li><strong>Extendibility</strong> &#8211; The ability to add more functionality to the PM system. In the case that we needed to add functionality for whatever reason, we needed the software to have some sort of <a class="zem_slink" title="Application programming interface" rel="wikipedia" href="http://en.wikipedia.org/wiki/Application_programming_interface">API</a> that we could use to add anything that needed to add without having to get deep into the core, or even HACK!  <em>(Never hack the core)</em></li>
<li><strong>Event Scheduling</strong> &#8211; We needed some form of calendar or event scheduling for project management. It is important that both the client and us know what we have to do and when. There is nothing worse than hundreds of emails being exchanged, or lost, or dates mixed up or confused. The ability to manage all the relevant milestone dates in one place would make for a great PM system.</li>
<li><strong>Ticketing System</strong> &#8211; Managing the current code and the state of the project is an the KEY! This would be the last but by no means least requirement. As a result we need to make sure that when there is a problem  or issue the clients can make sure that it is addressed and in a timely manner.  A ticket system also means that we can manage and monitor progress as well as execute performance evaluations throughout the lifetime of the project.</li>
</ol>
<p style="text-align: left;">
<p style="text-align: left;">As a result we decided to go and take a look at what the available <a class="zem_slink" title="Open Source" rel="wikinvest" href="http://www.wikinvest.com/concept/Open_Source">open source</a> project management tools there were to evaluate, and in the end it came down to three choices.</p>
<p style="text-align: left;">
<p style="text-align: left;">
<h2 style="text-align: left;">1. Open Atrium</h2>
<p style="text-align: left;"><a href="http://timani.net/wp-content/uploads/2010/02/atrium.png"><img class="alignnone size-full wp-image-129" title="atrium" src="http://timani.net/wp-content/uploads/2010/02/atrium.png" alt="" width="601" height="114" /></a></p>
<p style="text-align: left;"><em>Homepage: <a title="Open Atrium" href="http://openatrium.com/" target="_blank">Open Atrium</a></em></p>
<p style="text-align: left;"><em>Demo:<a title="Community site built on open atrium" href="https://community.openatrium.com/" target="_blank"> Community Site based on Open Atrium</a></em></p>
<p style="text-align: left;"><em>Download: <a title="Official Download" href="http://openatrium.com/download" target="_blank">Official Download Page</a></em></p>
<p style="text-align: left;"><em>Twitter:<a title="Open Atrium On Twitter" href="http://www.twitter.com/open_atrium" target="_blank"> Open Atrium on Twitter</a></em></p>
<p style="text-align: left;">Open Atrium is an installation profile of one of our favorite <a title="Content management system" rel="wikipedia" href="http://en.wikipedia.org/wiki/Content_management_system" target="_blank">content management systems</a> <a title="Drupal CMS" rel="homepage" href="http://www.drupal.org" target="_blank">Drupal</a>. Now an installation profile is essentially an instance of Drupal that has been preconfigured with certain modules and settings for convenient and easy use in a number of fields, markets and environments.</p>
<p style="text-align: left;">Some of the features of interest that we evaluated:</p>
<ol>
<li><strong>Calender</strong> &#8211; The calendar functionality allows you the ability to create events that are pivotal to development, or management of client and internal projects. The ical functionality as well as the multi-day events were certainly a plus</li>
<li><strong>Dashboard</strong> &#8211; Out of all the project management tools that we tried i think without a doubt that Open Atrium had the best and easiest layout. Recent activities, as well as events, notes and notifications are all clearly visible to the user when they log in.</li>
<li><strong>Documents</strong> &#8211; The ability to share documents between team members is a definite plus, this combined with the ability to create revisions makes this a very good document sharing application. It also allows the ability to have a form of versioning, great for development and tracking the progress of projects.</li>
<li><strong>Shoutbox</strong> &#8211; This is a more progressive and nifty feature. If you have ever had to get a simple quick message to the team whenever they log in or navigate around, this is the perfect feature! It allows for simple chats and notifications to be passed members in the scope of a particular group.</li>
<li><strong>Case Tracker</strong> &#8211; This is the primary feature that we were looking for and the <a title="Issue tracking system" rel="wikipedia" href="http://en.wikipedia.org/wiki/Issue_tracking_system" target="_blank">ticketing system</a> in Open Atrium had a lot of features. One of the primary features that distinguishes this from the other hosted solutions such as <a title="Basecamp" rel="crunchbase" href="http://www.crunchbase.com/product/basecamp" target="_blank">Basecamp</a>, was the ability to create an unlimited number of projects, tickets, ticket priority and ticket status.</li>
</ol>
<h2>2. <span class="zem_slink">Collabtive</span></h2>
<p><a href="http://timani.net/wp-content/uploads/2010/02/collabtive.png"><img class="alignnone size-full wp-image-122" title="collabtive" src="http://timani.net/wp-content/uploads/2010/02/collabtive.png" alt="" width="600" height="122" /></a></p>
<p><em>Homepage: <a title="Collabtive Open Source project management" href="http://collabtive.o-dyn.de/" target="_blank">Collabtive</a></em></p>
<p><em>Demo:<a title="Collabtive Demo" href="http://collabtive.o-dyn.de/demo/" target="_blank"> Official Demo<br />
</a></em></p>
<p><em>Download: <a title="Collabtive Direct download" href="http://collabtive.o-dyn.de/downloadref.php">Official Download Page</a></em></p>
<p><em>Collabtive is an open source <a title="PHP" rel="homepage" href="http://www.php.net/" target="_blank">PHP</a> based project management platform </em>intended for small to medium-sized businesses and freelancers. I think when it comes to reporting features out of the box collabtive is fairly a winner.</p>
<p>Some of the features of Collabtive:</p>
<ol>
<li><strong>Calender</strong> &#8211; Much like Open Atrium, Collabtive had a pretty nice UI and the calendar is clearly visible when a user logs in. It also has ajax functionality on the calendar that makes scrolling through months and archives a breeze.</li>
<li><strong>Dashboard</strong> &#8211; Collabtive has a very interesting dashboard that has quite a few things going on. The ability to have a quick post feature where you can quickly create a project was good too. With a clever use of toggle elements you can also essentially manage an entire project from a single page: calendar, time, and activities, export to excel and pdf. However, these days we are shying away from apps that are heavy on the modals and JavaScript too, so despite all the pop it may not be what what we want but it can definitely work for a lot of others.</li>
<li><strong>Excel Export</strong> &#8211; The ability to export the files from activity logs and time-tracker reports was a pretty good feature, not one we may immediately use but a definite plus and useful.</li>
<li><strong><a title="VCard" rel="wikipedia" href="http://en.wikipedia.org/wiki/VCard" target="_blank">vCard</a> Export</strong> &#8211; The ability to export user profiles to a vCard &#8211; the file form for electronic business cards that are gaining in popularity as you can import and export your contacts into various applications.</li>
</ol>
<h2>3. Feng Office Community Edition <em>(Previously OpenGoo)</em></h2>
<p><em><a href="http://timani.net/wp-content/uploads/2010/02/feng1.png"><img class="alignnone size-full wp-image-137" title="feng" src="http://timani.net/wp-content/uploads/2010/02/feng1.png" alt="" width="606" height="124" /></a><br />
</em></p>
<p><em>Homepage: <a title="Feng Office Home page" href="http://www.fengoffice.com/" target="_blank">Feng Office<br />
</a></em></p>
<p><em>Demo:<a title="Feng Office Demo" href="http://demo.fengoffice.com/en/index.php" target="_blank"> Official Demo<br />
</a></em></p>
<p><em>Download: <a title="Collabtive Direct download" href="http://collabtive.o-dyn.de/downloadref.php">Official Download Page</a></em></p>
<p><em>Tour: <a title="Feng Office Tour" href="http://www.fengoffice.com/web/tour.php" target="_blank">Product Tour<br />
</a></em></p>
<p>In this case we were looking at the community edition of Feng. Feng is built on the popular ext.js framework and has an interface that easily resembles an Office suite but also has the project management and collaboration features. What really sets Feng apart from the rest was the ability to do your billing with your client accounts, a definite plus when you want to try and keep your management centralized.</p>
<p>Some nifty things about Feng:</p>
<ol>
<li><strong>Dashboard</strong> &#8211; Essentially the whole application is a dashboard and is a heavily-ajax based application. This is great, and sure it was a it is a great application bundle but there is one problem. Hitting the back button creates for strange or slightly out of the norm navigation within the application as you are taken to a separate page.</li>
<li><strong>Calendar</strong> &#8211; The calendar was well thought out here and provides some good integration with the contact system. Easily create event and manage events with the wide-screen dashboard area.</li>
<li><strong>Documentation</strong> &#8211; A very good documents and sharing platform, i think perhaps not quite what we would look for but you can definitely see the thought that went into the document sharing in Feng.</li>
</ol>
<h2>Conclusion</h2>
<p>I think that in the end you have to pick the project management system that fits your needs best. For us the ability to integrate billing functionality with either Drupal or with <a title="CiviCRM" href="http://civicrm.org/" target="_blank">CivicCRM</a> were too great to overlook. This along with an API that we would be able to easily access to grown and expand the functionality made Open Atrium a clear winner.</p>
<p>Of course the other platforms are stable and worth a try, but i think the only one that really was furthest from the top was the Feng Office platform. Often when you hit the back button it would take you completely out of the application and to the previous page. As a result it can be a bit frustrating and takes a bit of getting used to.</p>
<p>However, when you care considering your needs always consider scalability and growth. If you are going to to be rapidly expanding and growing then you may want to consider a slightly more robust enterprise level solution like <a title="SugarCRM " href="http://www.sugarcrm.com/" target="_blank">SugarCRM</a>, and <a title="Salesforce" href="http://www.salesforce.com/" target="_blank">Salesforce.com </a>with their open source offerings. These also offer commercial paid support as we all as a host of professional networks and resources to help you integrate the CRM into any existing platforms.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://timani.net/2010/02/open-source-php-project-management-solutions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Site Security and file permissions matter</title>
		<link>http://timani.net/2010/02/site-security-and-file-permissions-really-matter/</link>
		<comments>http://timani.net/2010/02/site-security-and-file-permissions-really-matter/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 23:16:26 +0000</pubDate>
		<dc:creator>timani</dc:creator>
				<category><![CDATA[Drupal + Open Atrium]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://timani.arkangel-inc.com/?p=51</guid>
		<description><![CDATA[The other day we were talking over a coffee about site security and was it really wise to trust plugins and without a second inspection, or a look at the code. Now i am sure that many of us have &#8230; <a href="http://timani.net/2010/02/site-security-and-file-permissions-really-matter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The other day we were talking over a coffee about site security and was it really wise to trust plugins and without a second inspection, or a look at the code.</p>
<p>Now i am sure that many of us have gone and installed a plugin or two without actually looking at the code, but does it really mean we are at risk? I think the undeniable answer is yes, and this is for the very reason of the widespread, and almost unrestricted release of themes and plugins for WordPress. The allure of &#8220;free&#8221; themes and plugins often leaves the casual blogger or website developer at risk for being exposed by these various sites that offer &#8220;free themes&#8221;.<span id="more-51"></span></p>
<h2>Background</h2>
<p>I think the even though it is slightly dated many of the points in the post remain valid:</p>
<p><em><a title="Do not download WordPress themes distributed by 3rd party sites" href="http://5thirtyone.com/archives/870" target="_blank">Do not download WordPress themes distributed by 3rd party sites</a></em> &#8211; <em>5thirtyone.com</em></p>
<p>Even though the article is dated 2007 it still contains very valid points. I have worked in theme development many years for WordPress and when themes do not need any sort of encryption or otherwise to be functional.</p>
<p>A lot of the times this is the method that those who are trying to get access to your private data may choose to go.</p>
<p>There are a number or reasons why this method is pretty prevelent</p>
<ol>
<li>The code is often an encrypted string of data so filters for spam and malware may not immediately be able to detect them.</li>
<li>The encoded strings are harder to trace than plain-text because a file-search or grep may not be able to parse the encoded script.</li>
<li>To the unknowing eye an eval() of an encrypted script may seem no more harmful than any other PHP snippet in the code.</li>
</ol>
<h2>Scenario</h2>
<p>This actually became an issue on a discussion on linkedIn where someone there was having a problem installing a theme. At first inspection he was getting this error:</p>
<blockquote><p>Parse error: syntax error, unexpected &#8216;{&#8216; in /www/webroot/foo/wp-content/themes/Wood3/functions.php on line 149</p></blockquote>
<p>Which is usually symptomatic of a couple of things:</p>
<ol>
<li>The theme author may have accidently added in an extra brace when the theme was released.</li>
<li>The user had taken to the code and maybe deleted a line or added in.</li>
</ol>
<p>Seeing as the theme was released i decided to go and download it and take a look and i opened the coded and perused to line 149 and found something slightly disturbing, here is a snippet.</p>
<pre class="brush: plain; title: ; notranslate">
eval(str_rot13('shapgvba purpx_sbbgre().....
</pre>
<p>﻿﻿﻿﻿I am not sure what it does in once evaluated and i shall not be trying to find out. I think it is good it broke before it executed because it could have done a number of malicious things, especially if it had been installed in production environment.</p>
<p>For example if you had an e-commerce site and you stored Credit card information on your server for some reason, it would be easy to grab any and all data.</p>
<h2>Conclusion</h2>
<p>I am sure there will be those that say this is true of any theme, but i usually look at the code of mine before installing. Perhaps it should be a more common practice, or for those who are not as well versed avoid less reputable sites for themes and plugins.</p>
<p>I think one of the easiest ways is to see what the various aspects of the themes are, such as links in the footer, or if you can take a look at the source code for anything that may seem suspicious.</p>
]]></content:encoded>
			<wfw:commentRss>http://timani.net/2010/02/site-security-and-file-permissions-really-matter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

