<?xml version="1.0"?><process>
  <name>Community</name>
  <isValid>y</isValid>
  <version>1.0</version>
  <isActive>y</isActive>
   <description>Manage a community.</description>
  <lastModif>18/09/2003 [04:46:24]</lastModif>
  <sharedCode><![CDATA[<?php

define("PROJECT_SF_ID","64258"); // the id for the project
define("SFLIST_CACHE",3); // in hours

function read_list_from_page($url,$regexp,$reload=false) {
  $agent = $_SERVER['HTTP_USER_AGENT'];
  $cachefile = "temp/sfusers.cache.".PROJECT_SF_ID;
  $cachelimit = time() - 60*60*SFLIST_CACHE;
  if (!is_file($cachefile)) $reload = true;

  $back = false;
  if ($reload or (filemtime($cachefile) < $cachelimit)) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt($ch, CURLOPT_REFERER, $url);

    $buffer = curl_exec ($ch);
    curl_close ($ch);
    preg_match_all($regexp,$buffer,$ret);
    if (is_array($ret[4])) {
      for ($i=0;$i<count($ret[4]);$i++) {
         $back["{$ret[4][$i]}"] = $ret[2][$i];
      }
      $cache = serialize($back);
      $fp = fopen($cachefile,"wb");
      fputs($fp,$cache);
      fclose($fp);
    } elseif (is_file($cachefile)) {
      $filecontent = file($cachefile);
      $back = unserialize($filecontent[0]);
    }
  } else {
    $filecontent = file($cachefile);
    $back = unserialize($filecontent[0]);
  }
  return $back;
}

function get_sf_members($reload=false) {
  $url = "http://sourceforge.net/project/memberlist.php?group_id=".PROJECT_SF_ID;
  $regexp = '/<td>(<b><[aA] href="[^"]*">)?(.+)(<\/[aA]><\/b>)?<\/td>\n\t\t<td align="middle"><[aA] href="\/users\/([-_a-zA-Z0-9]+)\//';
  return read_list_from_page($url,$regexp,$reload);
}

function is_sf_member($sfuser) {
	$agent = $_SERVER['HTTP_USER_AGENT'];
	$ref = "http://sourceforge.net/project/memberlist.php?group_id=$group_id";

	$ch = curl_init($ref);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_USERAGENT, $agent);
	curl_setopt($ch, CURLOPT_REFERER, $ref);

	$buffer = curl_exec ($ch);
	curl_close ($ch);
	if (strstr("/users/$sfuser/",$buffer)) {
		return true;
	} else {
		return false;
	}
}

function array_csort($marray, $column) {
  foreach ($marray as $key=>$row) {
    $sortarr[$key] = $row[$column];
  }
  array_multisort($sortarr, $marray);
  return $marray;
}

function set_profile($input) {
  global $userlib, $tikilib, $admin_group;
  $userlib->set_user_fields($input);
  if (isset($input['country']) and !empty($input['country'])) {
    $tikilib->set_user_preference($input['login'],'country',$input['country']);
  }
  if (isset($input['homepage']) and !empty($input['homepage'])) {
    $tikilib->set_user_preference($input['login'],'homepage',$input['homepage']);
  }
  if (isset($input['sflogin']) and !empty($input['sflogin'])) {
    $tikilib->set_user_preference($input['login'],'sflogin',$input['sflogin']);
  }
  if (isset($input['irclogin']) and !empty($input['irclogin'])) {
    $tikilib->set_user_preference($input['login'],'irclogin',$input['irclogin']);
  }
  if (isset($input['role']) and !empty($input['role'])) {
    $tikilib->set_user_preference($input['login'],'role',$input['role']);
  }
  if (isset($input['language']) and !empty($input['language'])) {
    $tikilib->set_user_preference($input['login'],'language',$input['language']);
  }
}

function get_profile($us,$all=false) {
  global $userlib, $tikilib, $admin_group;
  $uin = $userlib->get_user_info($us);
  $uinfos["login"] = $uin["login"];
  $uinfos["email"] = $uin["email"];
  $uinfos["country"] = $tikilib->get_user_preference($us,'country');
  $uinfos["language"] = $tikilib->get_user_preference($us,'language');
  $uinfos["homepage"] = $tikilib->get_user_preference($us,'homePage');
  $uinfos["sflogin"] = $tikilib->get_user_preference($us,'sflogin');
  $uinfos["irclogin"] = $tikilib->get_user_preference($us,'irclogin');
  $uinfos["role"] = $tikilib->get_user_preference($us,'role');
  $uinfos["realname"] = $tikilib->get_user_preference($us,'realName');
  if (!$all and ($tikilib->get_user_preference($us,'email is public','n') != 'y')) {
    unset($uinfos["email"]);
  }
  if (!$all) {
    $uinfos["avatar"] = $tikilib->get_user_avatar($us,'right');
    $uinfos["lastLogin"] = $tikilib->get_short_datetime($uin["lastLogin"]);
    $uinfos["registrationDate"] = $tikilib->get_short_datetime($uin["registrationDate"]);
    $uinfos["groups"] = implode(', ',$uin["groups"]);
    if (in_array($admin_group,$uin['groups'])) {
      $uinfos["admin"] = true;
    } else {
      $uinfos["admin"] = false;
    }
    if ($tikilib->page_exists("UserPage$us")) {
      $uinfos["userpage"] = "UserPage$us";
    } else {
       $uinfos["userpage"] = "";
    }
  }
  return $uinfos;
}

$member_group = "Developers";
$admin_group = "Admins";
include_once('lib/categories/categlib.php');

?>
  ]]></sharedCode>
  <activities>
    <activity>
      <name>Desactivation</name>
      <type>end</type>
      <description>Removal of the user from the community.</description>
      <lastModif>18/09/2003 [08:21:40]</lastModif>
      <isInteractive>n</isInteractive>
      <isAutoRouted>y</isAutoRouted>
      <roles>
      </roles>
      <code><![CDATA[<?php
?>      ]]></code>    </activity>
    <activity>
      <name>Checked</name>
      <type>join</type>
      <description/>
      <lastModif>18/09/2003 [04:46:24]</lastModif>
      <isInteractive>n</isInteractive>
      <isAutoRouted>y</isAutoRouted>
      <roles>
      </roles>
      <code><![CDATA[<?php
?>      ]]></code>    </activity>
    <activity>
      <name>TWchecks</name>
      <type>activity</type>
      <description>Checks the tikiwiki.org accounts properties</description>
      <lastModif>18/09/2003 [04:46:24]</lastModif>
      <isInteractive>n</isInteractive>
      <isAutoRouted>y</isAutoRouted>
      <roles>
      </roles>
      <code><![CDATA[<?php
?>      ]]></code>    </activity>
    <activity>
      <name>SFchecks</name>
      <type>activity</type>
      <description>Checks the SF account properties.</description>
      <lastModif>18/09/2003 [04:46:24]</lastModif>
      <isInteractive>n</isInteractive>
      <isAutoRouted>y</isAutoRouted>
      <roles>
      </roles>
      <code><![CDATA[<?php
$instance->set('sf_ok', check_sfuser($instance->get('sfuser')));
$tikilib->set_user_preference($instance->get('user'), 'sflogin', $instance->get('sfuser'));
?>      ]]></code>    </activity>
    <activity>
      <name>Approval</name>
      <type>split</type>
      <description>human decision for the validation of the request.</description>
      <lastModif>18/09/2003 [04:46:24]</lastModif>
      <isInteractive>y</isInteractive>
      <isAutoRouted>y</isAutoRouted>
      <roles>
        <role>admin</role>
      </roles>
      <code><![CDATA[<?php
if (isset($_POST['approve'])) {
  $instance->complete();
}
?>      ]]></code>      <template><![CDATA[{*Smarty template*}
<form method="post">
<input type="submit" name="approve" value="approve">
</form>      ]]></template>    </activity>
    <activity>
      <name>Activation</name>
      <type>start</type>
      <description>Introducing someone in the community.</description>
      <lastModif>18/09/2003 [08:20:19]</lastModif>
      <isInteractive>y</isInteractive>
      <isAutoRouted>y</isAutoRouted>
      <roles>
        <role>admin</role>
      </roles>
      <code><![CDATA[<?php
if (isset($_POST['twuser']) and isset($_POST['sfuser'])) {
  $instance->set('twuser',$_POST['twuser']);
  $instance->set('sfuser',$_POST['sfuser']);
  if (isset($_POST['ircuser'])) {
    $instance->set('ircuser',$_POST['ircuser']);
  }
  $instance->complete();
}
?>      ]]></code>      <template><![CDATA[{*Smarty template*}
<h1>{tr}Subscribe to the community{/tr}</h1>
<div class="simplebox">

{if !$user}

{tr}You must be registered to subscribe in the Community.{/tr}
{else}

<form method="post">
<div>{tr}Provide the tw.o username for the candidate{/tr} :</div>
<div><input type="text" name="twuser" value="{$user}"></div>
<div>{tr}Provide a sourceforge username. If you don't have one, create an account at{/tr} <a href="http://sf.net">http://sf.net</a></div>
<div><input type="text" name="sfuser" value=""></div>
<div>Also indicate your irc registered nickname if you have one (if you have not, you should).</div>
<div><input type="text" name="ircuser" value=""></div>
<input type="submit" name="action" value="{tr}Activate{/tr}">
</form>
{/if}

</div>      ]]></template>    </activity>
    <activity>
      <name>Contributions</name>
      <type>activity</type>
      <description/>
      <lastModif>18/09/2003 [04:46:24]</lastModif>
      <isInteractive>y</isInteractive>
      <isAutoRouted>y</isAutoRouted>
      <roles>
        <role>admin</role>
      </roles>
      <code><![CDATA[<?php
if (isset($_POST['unsub'])) {
  $instance->complete();
}
?>      ]]></code>      <template><![CDATA[{*Smarty template*}
<form method="post">
<div>do stuff ..</div>
<input type="submit name="unsub" name="unsubscribe">
</form>      ]]></template>    </activity>
    <activity>
      <name>UserList</name>
      <type>standalone</type>
      <description>State of the community, by its members list.</description>
      <lastModif>22/09/2003 [02:57:14]</lastModif>
      <isInteractive>y</isInteractive>
      <isAutoRouted>n</isAutoRouted>
      <roles>
        <role>non member</role>
        <role>admin</role>
        <role>member</role>
      </roles>
      <code><![CDATA[<?php
if (($tiki_p_admin_workflow == 'y') and (isset($_POST['attribute']))) {
  $tikilib->set_user_preference($_POST['attribute_tw_login'],'sflogin',$_POST['attribute_sf_login']);
}
if (($tiki_p_admin_workflow == 'y') and (isset($_GET['reload']))) {
  $reload = true;
} else {
  $reload = false;
}
# requires $admin_group and $member_group to be defined
$sflist = get_sf_members($reload);
$sflistoff = array();
$sfusers = array();
$nosfusers = array();
$userslist = $userlib->get_group_users($member_group);
foreach ($userslist as $us) {
  $userinfos["$us"] = get_profile($us);
  if (isset($sflist["{$userinfos["$us"]['sflogin']}"])) {
    $sfusers["$us"] = $userinfos["$us"];
    $sfmatch["{$userinfos["$us"]['sflogin']}"] = 1;
    $cat_type = "Developer";
    $cat_objid = "$us";
    if ($categlib->is_categorized($cat_type,$cat_objid)) {
      $cats = $categlib->get_object_categories($cat_type,$cat_objid);
      $sfusers["$us"]['categs'] = $tikilib->get_categorypath($cats);
    } else {
     $sfusers["$us"]['categs'] = false;
   }
  } else {
    $nosfusers["$us"] = $userinfos["$us"];
  }
}
if (is_array($sflist)) {
foreach ($sflist as $sfl=>$sfn) {
  if (!isset($sfmatch["$sfl"])) {
     $sflistoff["$sfl"] = $sfn;
  }
}
}
# echo"<pre>";print_r($userinfos);echo"</pre>";
if (isset($_GET['orderby'])) {
  $sfusers = array_csort($sfusers, $_GET['orderby']);
} else {
  ksort($sfusers);
}
$smarty->assign('totalnum', count($userinfos));
$smarty->assign('totalsf', count($sflist));
$smarty->assign('sfgroupid',PROJECT_SF_ID);
$smarty->assign('sflist',$sflistoff);
$smarty->assign('sfusers',$sfusers);
$smarty->assign('nosfusers',$nosfusers);
$smarty->assign('userinfos',$userinfos);
$smarty->assign('activityId',$_GET['activityId']);
?>
      ]]></code>      <template><![CDATA[{*Smarty template*}
<h1>List of members of the Community</h1>
<div class="cbox">
<div class="cbox-title"><b>Developers !</b></div>
<div class="cbox-data">If you are not on that list and are member of the tikiwiki community, please contact an admin to be added. Operation is manual for now, working on its automatisation ..</div>
<div class="cbox-data"><b>Members of the community</b> 
on <a href="/whois">tikiwiki.org</a> <b>{$totalnum}</b>, 
on <a href="http://sourceforge.net/project/memberlist.php?group_id={$sfgroupid}">sourceforge.net</a> <b>{$totalsf}</b>
{if $tiki_p_admin_workflow eq 'y'}
(<a href="{$smarty.server.PHP_SELF}?activityId={$activityId}&amp;reload=1">reload cache</a>)
{/if}
</div>
</div>
<div class="cbox">
Order by :
<a href="{$smarty.server.PHP_SELF}?activityId={$activityId}">Login</a> . 
<a href="{$smarty.server.PHP_SELF}?activityId={$activityId}&amp;orderby=realname">Name</a> . 
<a href="{$smarty.server.PHP_SELF}?activityId={$activityId}&amp;orderby=country">Country</a> . 
<a href="{$smarty.server.PHP_SELF}?activityId={$activityId}&amp;orderby=admin">Admin</a> . 
<a href="{$smarty.server.PHP_SELF}?activityId={$activityId}&amp;orderby=registrationDate"> Registration Date</a> . 
<a href="{$smarty.server.PHP_SELF}?activityId={$activityId}&amp;orderby=lastLogin">Last Login</a>
</div>

{foreach key=us item=infos from=$sfusers}
<div class="cbox">
<div class="cbox-title">SourceForge account : <a href="http://sf.net/users/{$infos.sflogin}" class="menulink">{$infos.sflogin}</a></div>
<div class="cbox-data">
{if $infos.country}<img src="img/flags/{$infos.country}.gif" border="1" alt="{$infos.country}" align="right" hspace="3" style="float:right;margin:3px;" vspace="3">{/if}
{if $infos.avatar}{$infos.avatar}{/if}
<a href="/messu-compose.php?to={$us}"><img src="img/icons/icon_ultima.gif" align="baseline" alt="send message" border="0" /></a>
<a href="/tiki-user_information.php?view_user={$us}"><b>{$us}</b></a>
{if $tiki_p_admin_workflow == 'y' or $us eq $user}
<i class="menulink">[ <a href="/tiki-g-run_activity.php?activityId=34&amp;userfocus={$us|escape:"url"}" class="menulink">{tr}Modify{/tr}</a> ]</i>
{/if}
{if $infos.admin}<b>*** Admin ***</b>{/if}
<br />

{if $infos.categs}<span style="float:right;">{$infos.categs}</span>{/if}
{if $infos.role}<b><i>{$infos.role}</i></b><br />{/if}
{if $infos.realname}<i class="linkmenu">Name</i> {$infos.realname}<br />{/if}
{if $infos.language}<i class="linkmenu">Language</i> {$infos.language}<br />{/if}
{if $infos.userpage}<i class="linkmenu">Userpage</i> <a href="/{$infos.userpage}">{$infos.userpage}</a><br />{/if}
{if $infos.irclogin}<i class="linkmenu">IRC login</i> {$infos.irclogin}<br />{/if}
{if $infos.homepage}<i class="linkmenu">homepage</i> <a href="{$infos.homepage}">{$infos.homepage}</a><br />{/if}
{if $infos.publicemail and $infos.email}<i class="linkmenu">Email</i> {$infos.email|replace:"@":" at "}<br />{/if}
{if $infos.registrationDate}<i class="linkmenu">Registered</i> {$infos.registrationDate}<br />{/if}
{if $infos.lastLogin}<i class="linkmenu">Last Login</i> {$infos.lastLogin}<br />{/if}

</div></div>

{/foreach}

<form method="post">
<div class="cbox">
{if count($sflist)}
<div class="cbox-title">Users without SF logins detected
{if $tiki_p_admin_workflow eq 'y'}
<select name="attribute_sf_login">
{foreach key=slk item=sli from=$sflist}
<option value="{$slk}">{$slk} ({$sli})</option>
{/foreach}
</select>
<input type="submit" name="attribute" value="Link to the selected user">
{/if}
{else}
SF is down for any reason
{/if}
</div>
<div class="cbox-data">

{foreach key=us item=infos from=$nosfusers}
<div class="cbox">
<div class="cbox-data">
{if $tiki_p_admin_workflow eq 'y'}<input type="radio" name="attribute_tw_login" value="{$us}">{/if}
{if $infos.country}<img src="img/flags/{$infos.country}.gif" border="1" alt="{$infos.country}" align="right" hspace="3" style="float:right;margin:3px;" vspace="3">{/if}
{if $infos.avatar}{$infos.avatar}{/if}
<a href="/messu-compose.php?to={$us}"><img src="img/icons/icon_ultima.gif" align="baseline" alt="send message" border="0" /></a>
<a href="/tiki-user_information.php?view_user={$us}"><b>{$us}</b></a>
{if $tiki_p_admin_workflow eq 'y' or $us eq $user}
<i class="menulink">[ <a href="/tiki-g-run_activity.php?activityId=34&amp;userfocus={$us|escape:"url"}" class="menulink">{tr}Modify{/tr}</a> ]</i>
{/if}
{if $infos.admin}<b>*** Admin ***</b>{/if}
<br />

{if $infos.role}<b><i>{$infos.role}</i></b><br />{/if}
{if $infos.realname}<i class="linkmenu">Name</i> {$infos.realname}<br />{/if}
{if $infos.language}<i class="linkmenu">Language</i> {$infos.language}<br />{/if}
{if $infos.userpage}<i class="linkmenu">Userpage</i> <a href="/{$infos.userpage}">{$infos.userpage}</a><br />{/if}
{if $infos.irclogin}<i class="linkmenu">IRC login</i> {$infos.irclogin}<br />{/if}
{if $infos.homepage}<i class="linkmenu">homepage</i> <a href="{$infos.homepage}">{$infos.homepage}</a><br />{/if}
{if $infos.publicemail and $infos.email}<i class="linkmenu">Email</i> {$infos.email|replace:"@":" at "}<br />{/if}
{if $infos.registrationDate}<i class="linkmenu">Registered</i> {$infos.registrationDate}<br />{/if}
{if $infos.lastLogin}<i class="linkmenu">Last Login</i> {$infos.lastLogin}<br />{/if}

</div></div>
{/foreach}
</div></div>
</form>

{if count($sflist)}
<div class="cbox">
<div class="cbox-title"><b>Devels from SF without tw account</b></div>
<div class="cbox-data">
{foreach key=login item=name from=$sflist}
<div class="cbox">
<div class="cbox-data">
<a href="http://sf.net/users/{$login}">{$login}</a> ({$name})
<a href="/tiki-adminusers.php?find={$login}">find on tw.o</a>
</div></div>
{/foreach}
</div></div>
{/if}      ]]></template>    </activity>
    <activity>
      <name>Profile</name>
      <type>standalone</type>
      <description/>
      <lastModif>18/09/2003 [10:38:18]</lastModif>
      <isInteractive>y</isInteractive>
      <isAutoRouted>n</isAutoRouted>
      <roles>
        <role>admin</role>
        <role>member</role>
      </roles>
      <code><![CDATA[<?php
$userslist = $userlib->get_group_users($member_group);
$userfocus = '';
$userinfos = array();
$smarty->assign('mod','');

if (isset($_GET['mod']) and !isset($_POST['userfocus'])) {
  $_POST['userfocus'] = $_GET['mod'];
}
if ((isset($_POST['userfocus'])) and (($user == $_POST['userfocus']) or ($tiki_p_admin_workflow == 'y'))) {
  $userfocus = $_POST['userfocus'];
  $cat_type = "Developer";
  $cat_objid = "$userfocus";
  $cat_desc = "Developer";
  $cat_name = $userfocus;
  $cat_href = "tiki-user_information.php?view_user=".urlencode($userfocus);
  if (isset($_POST['action']) and $_POST['action'] == 'mod') {
    if ($tiki_p_admin_workflow == 'y' or ($_POST['userfocus'] == $user)) {
      $cat_href = "tiki-user_information.php?view_user=".urlencode($userfocus); 
      include_once("categorize.php");
      set_profile($_POST['uinput']);
      $_GET['userfocus'] = $_POST['userfocus'];
      unset($_GET['mod']);
    } else {
      $smarty->assign('msg', tra("You dont have permission to modify that user"));
      $smarty->display("styles/$style_base/error.tpl");
      die();
    }
  }
}

if (isset($_GET['mod'])) {
  $smarty->assign('mod',$_GET['mod']);
  $userfocus = $_GET['mod'];
  $userinfos = get_profile($userfocus,1);
} elseif (isset($_GET['userfocus'])) {
  $userfocus = $_GET['userfocus'];
  $cat_type = "Developer";
  $cat_objid = "$userfocus";
  $userinfos = get_profile($userfocus);
  if ($categlib->is_categorized($cat_type,$cat_objid)) {
    $cats = $categlib->get_object_categories($cat_type,$cat_objid);
    $smarty->assign('is_categorized','y');
    $smarty->assign('display_catpath',$tikilib->get_categorypath($cats));
    $smarty->assign('categorypath','y');
  } else {
    $smarty->assign('is_categorized','n');
  }
} else {
   $cat_type = "developer";
  $cat_objid = "";
}

$sfok = false;

include_once("categorize_list.php");

$smarty->assign('sfok',$sfok);
$smarty->assign('userfocus',$userfocus);
$smarty->assign('userslist',$userslist);
$smarty->assign('userinfos',$userinfos);
$smarty->assign('activityId',$_GET['activityId']);
?>
      ]]></code>      <template><![CDATA[{*Smarty template*}
<form method="get">
<input type="hidden" name="activityId" value="{$activityId}">
<div class="cbox">
<div class="cbox-title">search member</div>
<div class="cbox-data">
<select name="userfocus" onchange="form.this.submit();">
{section name=u loop=$userslist}
<option value="{$userslist[u]}"{if $userslist[u] eq $userfocus} selected="selected"{/if}>{$userslist[u]}</option>
{/section}
</select>
<input type="submit" name="submit" value="Display information">
</div>
</div>
</form>

{if $userfocus}
<div class="cbox">
<div class="cbox-title">Iinformation about {$userfocus}</div>
<div class="cbox-data">
{if $mod and ($user eq $userfocus or $tiki_p_admin_workflow == 'y')}<form method="post">{/if}
<table border="0">
{foreach key=uk item=ui from=$userinfos}
<tr><td style="border-top: 1px solid #666666;"><i class="linkitem">{$uk}</i></td>
<td style="border-top: 1px solid #666666;">
{if $mod and ($user eq $userfocus or $tiki_p_admin_workflow == 'y')}
<input type="text" name="uinput[{$uk}]" value="{$ui}" size="42">
{else}
{$ui}
{/if}
</td></tr>
{/foreach}

{if $mod and ($user eq $userfocus or $tiki_p_admin_workflow == 'y')}
{include file=categorize.tpl}
{else}
<tr><td colspan="2" style="border-top: 1px solid #666666;">{$display_catpath}</td></tr>
{/if}

{if $user eq $userfocus or $tiki_p_admin_workflow == 'y'}
{if $mod}
<tr><td colspan="2" style="border-top: 1px solid #666666;">
<input type="hidden" name="action" value="mod">
<input type="submit" name="act" value="Save">
</form>
</td></tr>
{else}
<tr><td colspan="2" style="border-top: 1px solid #666666;"><a href="{$smarty.env.PHP_SELF}?activityId={$activityId}&amp;mod={$userfocus|escape:"url"}">Modify</a></td></tr>
{/if}
{/if}
</table>
</div>
</div>
{/if}      ]]></template>    </activity>
  </activities>
  <transitions>
     <transition>
       <from>Checked</from>
       <to>Contributions</to>
     </transition>
     <transition>
       <from>TWchecks</from>
       <to>Checked</to>
     </transition>
     <transition>
       <from>SFchecks</from>
       <to>Checked</to>
     </transition>
     <transition>
       <from>Approval</from>
       <to>SFchecks</to>
     </transition>
     <transition>
       <from>Approval</from>
       <to>TWchecks</to>
     </transition>
     <transition>
       <from>Activation</from>
       <to>Approval</to>
     </transition>
     <transition>
       <from>Contributions</from>
       <to>Desactivation</to>
     </transition>
  </transitions>
</process>