1
yared
Can be? Module Formulize
  • 2007/12/29 7:18

  • yared

  • Just popping in

  • Posts: 14

  • Since: 2003/2/13


Example:

in form Profile made in formulize

Age: 20

In another module:
Example:
in template:

<{$owner_uname}>:<{$Age}> years

Display:
Jerry : 20 years

Can be?
Why?

2
jegelstaff
Re: Can be? Module Formulize

Hello. This is an interesting post. If I understand what you are saying, then I think the answer to your question is this:

If you have a custom profile form, how can you use that information in other modules?

OK, imagine that your profile form is form number 3, we will use that in this example. You will need to use the actual number from your site. If your profile form is 5, use that number. If it is 1, use that number.

Also, imagine that the "age" question is number 12. Each question in a form has a unique number. You can find this number by editing the question and looking in the URL. The "ele_id" in the URL is the question number.

Last...you need to know the user ID number (uid). Each user has their own number, and you need to know the user you want to get information for.

You will need to work with the PHP code in your module. Once you are working with PHP code, you can do what you need.

In PHP, do this:

$uid $xoopsUser->getVar('uid'); // or you could get the $uid another way
$form 3// your profile form
$ageQuestion 12// the "age" question

// get this user's profile
$profile getData(""$form"uid/**/$uid");

// get this user's age
$age display($profile$ageQuestion);

print 
$xoopsUser->getVar('name') . ": $age years";


Does that answer your question at all?

You can get more information about Formulize here (including documentation about the PHP functions):

http://www.freeformsolutions.ca/formulize

--Julian
Technical Architect - Freeform Solutions
Formulize - custom registration forms, ad hoc forms and reports

3
yared
Re: Can be? Module Formulize
  • 2008/1/3 20:21

  • yared

  • Just popping in

  • Posts: 14

  • Since: 2003/2/13


Thanks for the help

Not running

$uid $xoopsUser->getVar('uid'); // or you could get the $uid another way 
$form 1// your profile form 
$ageQuestion 1// the "age" question 

// get this user's profile 
$profile getData(""$form"uid/**/$uid"); 

// get this user's age 
$age display($profile$ageQuestion); 

print 
$xoopsUser->getVar('name') . ": $age years";


my profile form is= 1
my question age is = 1

___>

Another question:

This is a particular issue, the code of yogurt adds user profile, if I want to add age and date of birth, I can do?

Example:

Date of birth: 10/10/1987
Age: 20 years

(Age is derived element Date of birth.)

include_once("../../mainfile.php");
$xoopsOption['template_main'] = 'yogurt_index.html';
include_once(
"../../header.php");
include_once(
"class/yogurt_controler.php");
if ( ! @ include_once 
XOOPS_ROOT_PATH."/language/".$GLOBALS['xoopsConfig']['language']."/user.php" ) {
            include_once 
XOOPS_ROOT_PATH."/language/english/user.php";
}


$controler = new YogurtControlerIndex($xoopsDB,$xoopsUser);

/**
 * Fecthing numbers of tribes friends videos pictures etc...
 */

$nbSections $controler->getNumbersSections();

/**
 * This variable define the beggining of the navigation must b
 * setted here so all calls to database will take this into account
 */
$start = (isset($_GET['start']))? $_GET['start'] : 0;


/**
 * Filter for new friend petition
 */
if ($controler->isOwner == 1){

    
$petition=0;
    
$criteria_uidpetition       = new criteria('petioned_uid',$controler->uidOwner);
    if (
$newpetition $controler->petitions_factory->getObjects($criteria_uidpetition)){
        
$nb_petitions                sizeof($newpetition);
        
$petitioner_handler         =& xoops_gethandler('member');
        
$petitioner                 =& $petitioner_handler->getUser($newpetition[0]->getVar('petitioner_uid'));
        
$petitioner_uid               $petitioner->getVar('uid');
        
$petitioner_uname             $petitioner->getVar('uname');
        
$petitioner_avatar            $petitioner->getVar('user_avatar');
        
$petition_id                 $newpetition[0]->getVar('friendpet_id');
        
$petition=1;
    }
}


/**
 * Criteria for mainvideo
 */
$criteria_uidvideo  = new criteria('uid_owner',$controler->uidOwner);
$criteria_mainvideo = new criteria('main_video',"1");
$criteria_video     = new criteriaCompo($criteria_mainvideo);
$criteria_video->add($criteria_uidvideo);

if ((
$nbSections['nbVideos']>0) && ($videos $controler->videos_factory->getObjects($criteria_video))){
$mainvideocode $videos[0]->getVar('youtube_code');
$mainvideodesc $videos[0]->getVar('video_desc');
}

/**
 * Friends 
 */    

$criteria_friends = new criteria('friend1_uid',$controler->uidOwner);
$friends $controler->friendships_factory->getFriends(9$criteria_friends);

$controler->visitors_factory->purgeVisits();
$evaluation $controler->friendships_factory->getMoyennes($controler->uidOwner);

/**
 * Tribes 
 */    

$criteria_tribes = new criteria('rel_user_uid',$controler->uidOwner);
$tribes $controler->reltribeusers_factory->getTribes(9$criteria_tribes);


/**
 * Visitors 
 */  

if ($controler->isAnonym==0){
    
    
/**
     * Buscando quem foram os Ășltimos X visitantes
     */
    
$visitor_now $controler->visitors_factory->create();
    
$visitor_now->setVar('uid_owner'$controler->uidOwner);
    
$visitor_now->setVar('uid_visitor',$xoopsUser->getVar('uid'));
    
$visitor_now->setVar('uname_visitor',$xoopsUser->getVar('uname'));
    
$controler->visitors_factory->insert($visitor_now);
    
$criteria_visitors = new criteria('uid_owner',  $controler->uidOwner);
    
//$criteria_visitors->setLimit(5);
    
$visitors_object_array $controler->visitors_factory->getObjects($criteria_visitors);

    
/**
     * Lets populate an array with the dati from visitors
     */  
    
$i 0;
    foreach (
$visitors_object_array as $visitor){
        
        
        
$indice                             $visitor->getVar("uid_visitor","s");
        
$visitors_array[$indice]        = $visitor->getVar("uname_visitor","s");
        
        
    
$i++;
    }
    
    
$xoopsTpl->assign('visitors'$visitors_array);
    
$xoopsTpl->assign('lang_visitors',_MD_YOGURT_VISITORS);

/*    $criteria_deletevisitors = new criteria('uid_owner',$uid);
    $criteria_deletevisitors->setStart(5);
    
    print_r($criteria_deletevisitors);
    $visitors_factory->deleteAll($criteria_deletevisitors, true);
*/
}

$avatar     $controler->owner->getVar('user_avatar');

$member_handler =& xoops_gethandler('member');
$thisUser =& $member_handler->getUser($controler->uidOwner);
$myts =& MyTextSanitizer::getInstance();



/**
 * Adding to the module js and css of the lightbox and new ones
 */
$xoTheme->addStylesheet(XOOPS_URL.'/modules/'.$xoopsModule->getVar('dirname').'/include/yogurt.css');
$xoTheme->addStylesheet(XOOPS_URL.'/modules/'.$xoopsModule->getVar('dirname').'/css/jquery.tabs.css');
// what browser they use if IE then add corrective script.
if(ereg("msie"strtolower($_SERVER['HTTP_USER_AGENT']))) {
$xoTheme->addStylesheet(XOOPS_URL.'/modules/'.$xoopsModule->getVar('dirname').'/css/jquery.tabs-ie.css');
}
//$xoTheme->addStylesheet(XOOPS_URL.'/modules/'.$xoopsModule->getVar('dirname').'/lightbox/css/lightbox.css');
//$xoTheme->addScript(XOOPS_URL.'/modules/'.$xoopsModule->getVar('dirname').'/lightbox/js/prototype.js');
//$xoTheme->addScript(XOOPS_URL.'/modules/'.$xoopsModule->getVar('dirname').'/lightbox/js/scriptaculous.js?load=effects'); 
//$xoTheme->addScript(XOOPS_URL.'/modules/'.$xoopsModule->getVar('dirname').'/lightbox/js/lightbox.js');
//
$xoTheme->addStylesheet(XOOPS_URL.'/modules/'.$xoopsModule->getVar('dirname').'/include/jquery.lightbox-0.3.css');

$xoTheme->addScript(XOOPS_URL.'/modules/'.$xoopsModule->getVar('dirname').'/include/jquery.js');
$xoTheme->addScript(XOOPS_URL.'/modules/'.$xoopsModule->getVar('dirname').'/include/jquery.lightbox-0.3.js');
$xoTheme->addScript(XOOPS_URL.'/modules/'.$xoopsModule->getVar('dirname').'/include/yogurt.js');

//permissions
$xoopsTpl->assign('allow_friends',$controler->checkPrivilege('friends'));
$xoopsTpl->assign('allow_scraps',$controler->checkPrivilege('scraps'));
$xoopsTpl->assign('allow_tribes',$controler->checkPrivilege('tribes'));
$xoopsTpl->assign('allow_pictures',$controler->checkPrivilege('pictures'));
$xoopsTpl->assign('allow_videos',$controler->checkPrivilege('videos'));
$xoopsTpl->assign('allow_profile_contact',($controler->checkPrivilege('profile_contact'))?1:0);
$xoopsTpl->assign('allow_profile_general',($controler->checkPrivilege('profile_general'))?1:0);
$xoopsTpl->assign('allow_profile_stats',($controler->checkPrivilege('profile_stats'))?1:0);
$xoopsTpl->assign('lang_suspensionadmin',_MD_YOGURT_SUSPENSIONADMIN);
if (
$controler->isSuspended==0){
    
$xoopsTpl->assign('isSuspended',0);    
$xoopsTpl->assign('lang_suspend',_MD_YOGURT_SUSPENDUSER);
$xoopsTpl->assign('lang_timeinseconds',_MD_YOGURT_SUSPENDTIME);
} else {
    
$xoopsTpl->assign('lang_unsuspend',_MD_YOGURT_UNSUSPEND);
    
$xoopsTpl->assign('isSuspended',1);
$xoopsTpl->assign('lang_suspended',_MD_YOGURT_USERSUSPENDED);    
}
if (
$xoopsUser && $xoopsUser->isAdmin(1)){
$xoopsTpl->assign('isWebmaster',"1");
}else{
    
$xoopsTpl->assign('isWebmaster',"0");
}


/**
 * Assigning smarty variables
 */

//Owner data
$xoopsTpl->assign('uid_owner',$controler->uidOwner);
$xoopsTpl->assign('owner_uname',$controler->nameOwner);
$xoopsTpl->assign('isOwner',$controler->isOwner);
$xoopsTpl->assign('isanonym',$controler->isAnonym);
$xoopsTpl->assign('isfriend',$controler->isFriend);

//numbers
$xoopsTpl->assign('nb_tribes',$nbSections['nbTribes']);
$xoopsTpl->assign('nb_photos',$nbSections['nbPhotos']);
$xoopsTpl->assign('nb_videos',$nbSections['nbVideos']);
$xoopsTpl->assign('nb_scraps',$nbSections['nbScraps']);
$xoopsTpl->assign('nb_friends',$nbSections['nbFriends']);

//navbar
$xoopsTpl->assign('module_name',$xoopsModule->getVar('name'));
$xoopsTpl->assign('lang_mysection',_MD_YOGURT_MYPROFILE);
$xoopsTpl->assign('section_name',_MD_YOGURT_PROFILE);
$xoopsTpl->assign('lang_home',_MD_YOGURT_HOME);
$xoopsTpl->assign('lang_photos',_MD_YOGURT_PHOTOS);
$xoopsTpl->assign('lang_friends',_MD_YOGURT_FRIENDS);
$xoopsTpl->assign('lang_videos',_MD_YOGURT_VIDEOS);
$xoopsTpl->assign('lang_scrapbook',_MD_YOGURT_SCRAPBOOK);
$xoopsTpl->assign('lang_profile',_MD_YOGURT_PROFILE);
$xoopsTpl->assign('lang_tribes',_MD_YOGURT_TRIBES);
$xoopsTpl->assign('lang_configs',_MD_YOGURT_CONFIGSTITLE);

//xoopsToken
$xoopsTpl->assign('token',$GLOBALS['xoopsSecurity']->getTokenHTML());

//page atributes
$xoopsTpl->assign('xoops_pagetitle',  sprintf(_MD_YOGURT_PAGETITLE,$xoopsModule->getVar("name"), $controler->nameOwner));

$xoopsTpl->assign('path_yogurt_uploads',$xoopsModuleConfig['link_path_upload']);


//tribes
$xoopsTpl->assign('tribes',$tribes);
if (
$nbSections['nbTribes']<=0){
$xoopsTpl->assign('lang_notribesyet',_MD_YOGURT_NOTRIBESYET);
}
//evaluations
$xoopsTpl->assign('lang_fans',_MD_YOGURT_FANS);
$xoopsTpl->assign('nb_fans',$evaluation['sumfan']);
$xoopsTpl->assign('lang_trusty',_MD_YOGURT_TRUSTY);
$xoopsTpl->assign('trusty',$evaluation['mediatrust']);
$xoopsTpl->assign('trusty_rest',48-$evaluation['mediatrust']);
$xoopsTpl->assign('lang_sexy',_MD_YOGURT_SEXY);
$xoopsTpl->assign('sexy',$evaluation['mediahot']);
$xoopsTpl->assign('sexy_rest',48-$evaluation['mediahot']);
$xoopsTpl->assign('lang_cool',_MD_YOGURT_COOL);
$xoopsTpl->assign('cool',$evaluation['mediacool']);
$xoopsTpl->assign('cool_rest',48-$evaluation['mediacool']);

//petitions to become friend
if ($petition==1){
$xoopsTpl->assign('lang_youhavexpetitions',sprintf(_MD_YOGURT_YOUHAVEXPETITIONS,$nb_petitions));
$xoopsTpl->assign('petitioner_uid',$petitioner_uid);
$xoopsTpl->assign('petitioner_uname',$petitioner_uname);
$xoopsTpl->assign('petitioner_avatar',$petitioner_avatar);
$xoopsTpl->assign('petition',$petition);
$xoopsTpl->assign('petition_id',$petition_id);
$xoopsTpl->assign('lang_rejected',_MD_YOGURT_UNKNOWNREJECTING);
$xoopsTpl->assign('lang_accepted',_MD_YOGURT_UNKNOWNACCEPTING);
$xoopsTpl->assign('lang_acquaintance',_MD_YOGURT_AQUAITANCE);
$xoopsTpl->assign('lang_friend',_MD_YOGURT_FRIEND);
$xoopsTpl->assign('lang_bestfriend',_MD_YOGURT_BESTFRIEND);
$linkedpetioner '<a href="index.php?uid='.$petitioner_uid.'">'.$petitioner_uname.'</a>';
$xoopsTpl->assign('lang_askingfriend',sprintf(_MD_YOGURT_ASKINGFRIEND,$linkedpetioner));
}
$xoopsTpl->assign('lang_askusertobefriend',_MD_YOGURT_ASKBEFRIEND);


//Avatar and Main Video
$xoopsTpl->assign('avatar_url',$avatar);
$xoopsTpl->assign('lang_selectavatar',_MD_YOGURT_SELECTAVATAR);
$xoopsTpl->assign('lang_selectmainvideo',_MD_YOGURT_SELECTMAINVIDEO);
$xoopsTpl->assign('lang_noavatar',_MD_YOGURT_NOAVATARYET);
$xoopsTpl->assign('lang_nomainvideo',_MD_YOGURT_NOMAINVIDEOYET);

if (
$nbSections['nbVideos']>0){
$xoopsTpl->assign('mainvideocode',$mainvideocode);
$xoopsTpl->assign('mainvideodesc',$mainvideodesc);
$xoopsTpl->assign('width',$xoopsModuleConfig['width_maintube']);// Falta configurar o tamnho do main nas configs e alterar no template
$xoopsTpl->assign('height',$xoopsModuleConfig['height_maintube']);
}
//friends
$xoopsTpl->assign('friends',$friends);
$xoopsTpl->assign('lang_friendstitle',  sprintf(_MD_YOGURT_FRIENDSTITLE,$controler->nameOwner));

$xoopsTpl->assign('lang_nofriendsyet',_MD_YOGURT_NOFRIENDSYET);

//search
$xoopsTpl->assign('lang_usercontributions',_MD_YOGURT_USERCONTRIBUTIONS);

$xoopsTpl->assign('lang_detailsinfo',_MD_YOGURT_USERDETAILS);
$xoopsTpl->assign('lang_contactinfo',_MD_YOGURT_CONTACTINFO);
$xoopsTpl->assign('path_yogurt_uploads',$xoopsModuleConfig['link_path_upload']);
$xoopsTpl->assign('lang_max_nb_pict'sprintf(_MD_YOGURT_YOUCANHAVE,$xoopsModuleConfig['nb_pict']));
$xoopsTpl->assign('lang_delete',_MD_YOGURT_DELETE );
$xoopsTpl->assign('lang_editdesc',_MD_YOGURT_EDITDESC );

$xoopsTpl->assign('lang_visitors',_MD_YOGURT_VISITORS);



$xoopsTpl->assign('lang_editprofile',_MD_YOGURT_EDITPROFILE);

$xoopsTpl->assign('user_uname'$thisUser->getVar('uname'));
$xoopsTpl->assign('user_realname'$thisUser->getVar('name'));
$xoopsTpl->assign('lang_uname'_US_NICKNAME);
$xoopsTpl->assign('lang_website'_US_WEBSITE);
$xoopsTpl->assign('user_websiteurl''<a href="'.$thisUser->getVar('url''E').'" target="_blank">'.$thisUser->getVar('url').'</a>');
$xoopsTpl->assign('lang_email'_US_EMAIL);
$xoopsTpl->assign('lang_privmsg'_US_PM);
$xoopsTpl->assign('lang_icq'_US_ICQ);
$xoopsTpl->assign('user_icq'$thisUser->getVar('user_icq'));
$xoopsTpl->assign('lang_aim'_US_AIM);
$xoopsTpl->assign('user_aim'$thisUser->getVar('user_aim'));
$xoopsTpl->assign('lang_yim'_US_YIM);
$xoopsTpl->assign('user_yim'$thisUser->getVar('user_yim'));
$xoopsTpl->assign('lang_msnm'_US_MSNM);
$xoopsTpl->assign('user_msnm'$thisUser->getVar('user_msnm'));
$xoopsTpl->assign('lang_location'_US_LOCATION);
$xoopsTpl->assign('user_location'$thisUser->getVar('user_from'));
$xoopsTpl->assign('lang_occupation'_US_OCCUPATION);
$xoopsTpl->assign('user_occupation'$thisUser->getVar('user_occ'));
$xoopsTpl->assign('lang_interest'_US_INTEREST);
$xoopsTpl->assign('user_interest'$thisUser->getVar('user_intrest'));
$xoopsTpl->assign('lang_extrainfo'_US_EXTRAINFO);
$var $thisUser->getVar('bio''N');
$xoopsTpl->assign('user_extrainfo'$myts->makeTareaData4Show$var,0,1,1) );
$xoopsTpl->assign('lang_statistics'_US_STATISTICS);
$xoopsTpl->assign('lang_membersince'_US_MEMBERSINCE);
$var $thisUser->getVar('user_regdate');
$xoopsTpl->assign('user_joindate'formatTimestamp$var's' ) );
$xoopsTpl->assign('lang_rank'_US_RANK);
$xoopsTpl->assign('lang_posts'_US_POSTS);
$xoopsTpl->assign('lang_basicInfo'_US_BASICINFO);
$xoopsTpl->assign('lang_more'_US_MOREABOUT);
$xoopsTpl->assign('lang_myinfo'_US_MYINFO);
$xoopsTpl->assign('user_posts'$thisUser->getVar('posts'));
$xoopsTpl->assign('lang_lastlogin'_US_LASTLOGIN);
$date $thisUser->getVar("last_login");
if (!empty(
$date)) {
    
$xoopsTpl->assign('user_lastlogin'formatTimestamp($date,"m"));
}
$xoopsTpl->assign('lang_notregistered'_US_NOTREGISTERED);

$xoopsTpl->assign('lang_signature'_US_SIGNATURE);
$var $thisUser->getVar('user_sig''N');
$xoopsTpl->assign('user_signature'$myts->makeTareaData4Show$var01) );

if (
$thisUser->getVar('user_viewemail') == 1) {
    
$xoopsTpl->assign('user_email'$thisUser->getVar('email''E'));
}   
    

$xoopsTpl->assign('uname',$thisUser->getVar('uname'));
$xoopsTpl->assign('lang_realname'_US_REALNAME);
$xoopsTpl->assign('name',$thisUser->getVar('name'));


$gperm_handler = & xoops_gethandler'groupperm' );
$groups is_object($xoopsUser) ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS;
$module_handler =& xoops_gethandler('module');
$criteria = new CriteriaCompo(new Criteria('hassearch'1));
$criteria->add(new Criteria('isactive'1));
$mids array_keys($module_handler->getList($criteria));


//userranl
$userrank $thisUser->rank();
if (
$userrank['image']) {
    
$xoopsTpl->assign('user_rankimage''<img src="'.XOOPS_UPLOAD_URL.'/'.$userrank['image'].'" alt="" />');
}
$xoopsTpl->assign('user_ranktitle'$userrank['title']);

foreach (
$mids as $mid) {
  if ( 
$gperm_handler->checkRight('module_read'$mid$groups)) {
    
$module =& $module_handler->get($mid);
    
$user_uid =$thisUser->getVar('uid');
    
$results $module->search(''''50$user_uid);
    
$count count($results);
    if (
is_array($results) && $count 0) {
        for (
$i 0$i $count$i++) {
            if (isset(
$results[$i]['image']) && $results[$i]['image'] != '') {
                
$results[$i]['image'] = 'modules/'.$module->getVar('dirname').'/'.$results[$i]['image'];
            } else {
                
$results[$i]['image'] = 'images/icons/posticon2.gif';
            }
            
            if (!
preg_match("/^http[s]*:///i"$results[$i]['link'])) {
                
$results[$i]['link'] = "modules/".$module->getVar('dirname')."/".$results[$i]['link'];
            }

            
$results[$i]['title'] = $myts->makeTboxData4Show($results[$i]['title']);
            
$results[$i]['time'] = $results[$i]['time'] ? formatTimestamp($results[$i]['time']) : '';
        }
        if (
$count == 5) {
            
$showall_link '<a href="search.php?action=showallbyuser&amp;mid='.$mid.'&amp;uid='.$thisUser->getVar('uid').'">'._US_SHOWALL.'</a>';
        } else {
            
$showall_link '';
        }
        
$xoopsTpl->append('modules', array('name' => $module->getVar('name'), 'results' => $results'showall_link' => $showall_link));
    }
    unset(
$module);
  }
}

/**
 * Closing the page
 */ 
include("../../footer.php");


Example module yogurt:
http://www.marcellobrandao.eti.br/modules/yogurt/

4
jegelstaff
Re: Can be? Module Formulize

Sorry for the delay. Code stuff always requires more thought. So I tend to put it off.

Quote:

Not running

$uid $xoopsUser->getVar('uid'); // or you could get the $uid another way 
$form 1// your profile form 
$ageQuestion 1// the "age" question 

// get this user's profile 
$profile getData(""$form"uid/**/$uid"); 

// get this user's age 
$age display($profile$ageQuestion); 

print 
$xoopsUser->getVar('name') . ": $age years";


Yes, I think I left out something important. You need to include the following file:

include XOOPS_ROOT_PATH "/modules/formulize/include/extract.php";


You might need other files too from time to time. You should look for the function names in the modules/formulize folder and include the files that have the functions you are using.

Quote:

Another question:

This is a particular issue, the code of yogurt adds user profile, if I want to add age and date of birth, I can do?


I'm not sure what you're asking. You could use PHP code like the code above. If you put that code in your file, then you could assign $age to the smarty template.

Is that what you are asking?

--Julian
Technical Architect - Freeform Solutions
Formulize - custom registration forms, ad hoc forms and reports

5
yared
Re: Can be? Module Formulize
  • 2008/1/14 22:05

  • yared

  • Just popping in

  • Posts: 14

  • Since: 2003/2/13


Thank you for your answers.
Use the code:
Quote:
include XOOPS_ROOT_PATH . "/modules/formulize/include/extract.php";

not work for me.
Something I am doing wrong.

(Probe the code as an example and if operated Using_Formulize-Pageworks_to_Make_Custom_Applications.pdf)

Quote:
I'm not sure what you're asking. You could use PHP code like the code above. If you put that code in your file, then you could assign $age to the smarty template.

Is that what you are asking?


yes.

thanks

6
jegelstaff
Re: Can be? Module Formulize

I am not sure what you are doing wrong. Maybe nothing, maybe it is a configuration problem.

It would help if you can paste in the exact code you are using, and say the name of the path and file with the code.

--Julian
Technical Architect - Freeform Solutions
Formulize - custom registration forms, ad hoc forms and reports

Login

Who's Online

201 user(s) are online (131 user(s) are browsing Support Forums)


Members: 0


Guests: 201


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Mar 31
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Latest GitHub Commits