[FX.php List] Re: FX.php_List Digest, Vol 33, Issue 15

Vision Computer Consulting info at visioncomputerconsulting.com
Mon Apr 16 23:03:02 MDT 2007


DC,

Very cool. Thank you.

Stephen

On Apr 16, 2007, at 9:53 PM, DC wrote:

> hi stephen,
>
> the CIFX class was sent in the email i posted last week along with  
> step by step instructions. there is currently no download location  
> - just follow the steps in the email - including copy/pasting code.
>
> let me know if you can't find the email i sent last week, i'll send  
> another directly to you.
>
> dan
>
>
> On Apr 16, 2007, at 10:15 PM, Vision Computer Consulting wrote:
>
>> I  am interested in CIFX. Where can I find it?
>>
>> Thanks.
>>
>> Stephen
>>
>> On Apr 13, 2007, at 12:49 PM, DC wrote:
>>
>>> cool. thanks for the note. i'll definitely post these  
>>> instructions around but i wanted to get a little more feedback to  
>>> refine the ideas.
>>>
>>> i see what you mean about the config file - i just thought it was  
>>> so nice to have that data tucked in the CI config directory. of  
>>> course, since the CIFX class can accept an array sent to its  
>>> constructor you could just pass that information in the new call  
>>> to CIFX like this:
>>>
>>> $config['dataServer']='127.0.0.1';
>>> $config['dataPort']='591';
>>> $config['dataType']='FMPro5/6'; // or FMPro7
>>> $config['dataURLType']='http';
>>> $this->load->library('CIFX', $config);
>>>
>>> so, if you have the call in a controller you can still use FX to  
>>> target any server you want.
>>>
>>> i'll be working through other CI-FX issues in the near future so  
>>> please send me your Filemaker/PHP frameworks resource link!
>>>
>>> dan
>>>
>>> John Lannon had written:
>>>> Hey Dan,
>>>> Thanks a lot for the post, it's an extremely useful  
>>>> contribution. I've been using CI with Filemaker and other  
>>>> backends for several projects in the past year and am glad to  
>>>> see that others are starting to adopt web application  
>>>> frameworks. I personally don't know how I used to build web apps  
>>>> without CI (or Rails or CakePHP, take your pick).
>>>> In any case, I definitely think you should submit your tutorial  
>>>> to the CI wiki and to other Filemaker forums as well. I spent a  
>>>> bit of time tooling with the FX class and using a new  
>>>> constructor for CI, but scrapped that idea (not OO enough, I  
>>>> guess).  Wrapping FX in the CIFX class makes sense and conforms  
>>>> to PHP's OO standards. I would definitely like to use your idea  
>>>> in future projects ...
>>>> The only thing I would add is that by passing the basic  
>>>> parameters to CIFX via the configuration file, one would tie  
>>>> oneself to a single data source. Although I would imagine that  
>>>> most users would only use one data source ( i.e., one Filemaker  
>>>> Server machine), I've been on a project or two in which multiple  
>>>> Filemaker sources are used. In this case, the static config file  
>>>> would be insufficient. I'd have to check the most recent CI  
>>>> docs, but I believe one can pass configuration arguments to  
>>>> their library directly (bypassing the default config file), but  
>>>> by doing so, the config file becomes inaccessible. So, I would  
>>>> add a note to your step 4 mentioning this.
>>>> I have been working on a web resource that provides information  
>>>> about integrating Filemaker with web development frameworks. If  
>>>> you're interested in helping out, please feel free to email me.
>>>> Thanks,
>>>> John Lannon
>>>> Anvil Automation
>>>> http://www.anvilautomation.com
>>>>     Message: 5
>>>>     Date: Fri, 13 Apr 2007 12:29:59 -0400
>>>>     From: DC <dan.cynosure at dbmscan.com  
>>>> <mailto:dan.cynosure at dbmscan.com>>
>>>>     Subject: [FX.php List] REDO-FX.php as a Library in CodeIgniter
>>>>             framework
>>>>     To: "FX.php Discussion List" < fx.php_list at mail.iviking.org
>>>>     <mailto:fx.php_list at mail.iviking.org>>
>>>>     Message-ID: < 461FB007.9010609 at dbmscan.com
>>>>     <mailto:461FB007.9010609 at dbmscan.com>>
>>>>     Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>>>>     Hi,
>>>>     OO-ps... I didn't follow OO practices when submitting my  
>>>> integration
>>>>     technique. I've redone steps 3, 4, and 5 so that you do not  
>>>> modify
>>>>     FX.php at all - you simply extend it using PHP's OO  
>>>> capability. The
>>>>     full
>>>>     instructions with (easier) redone steps follow.
>>>>     -------------------------------------------
>>>>     I put together what I think is the cleanest integration  
>>>> possible between
>>>>     FX.php and CodeIgniter (CI). It's pretty easy to do.
>>>>     If you are looking for a good way of expanding your PHP  
>>>> horizons,
>>>>     CodeIgniter is a good way to do it. If you haven't seen  
>>>> CodeIgniter,
>>>>     head over to http://codeigniter.com <http://codeigniter.com> to
>>>>     check it out. In short, it is a
>>>>     PHP Framework that helps you organize code and offers nice  
>>>> integrated
>>>>     libraries. It is also PHP4 and 5 friendly, highly object- 
>>>> oriented, and
>>>>     extendable.
>>>>     I've been testing out FX.php with CI and I like it a lot.
>>>>     Here's how I got my set up working:
>>>>     1) Download, install and configure CI per the very good  
>>>> instructions at
>>>>     the site. If you have problems, the CI forum is helpful. It  
>>>> should take
>>>>     less than an hour for an intermediate PHP person to get to  
>>>> hello world
>>>>     (welcome_message.php). Time: 1 hour.
>>>>     2) Once you've got CI running, put the latest copy of FX.php,
>>>>     FX_Error.php, and FX_constants.php in CI's application/ 
>>>> libraries/
>>>>     directory. Time: 5 minutes tops.
>>>>     ....THIS STEP CHANGED from previous message....
>>>>     3) Drop this class extension into the same directory with  
>>>> FX.php (CI's
>>>>     application/libraries/ directory).
>>>>     <?php if (!defined('BASEPATH')) exit('No direct script access
>>>>     allowed');
>>>>     / 
>>>> *------------------------------------------------------------------ 
>>>> */
>>>>     // DEC 20070413 wrapper for CI integration
>>>>     // needs to be able to init with params in an array
>>>>     // load these using config file FX.php
>>>>     / 
>>>> *------------------------------------------------------------------ 
>>>> */
>>>>     require('FX.php');
>>>>     class CIFX extends FX {
>>>>             function CIFX ($params)
>>>>             {
>>>>                     parent::FX(
>>>>                     $params['dataServer'],
>>>>                     $params['dataPort'],
>>>>                     $params['dataType'],
>>>>                     $params['dataURLType']
>>>>                     );
>>>>             }
>>>>     }
>>>>     ?>
>>>>     This class extension for FX.php lets CI load FX.php with an  
>>>> array as an
>>>>     argument. External libraries like FX.php need no direct  
>>>> modifications to
>>>>     integrate with CI properly - just extend them with a wrapper  
>>>> function
>>>>     that accepts arrays and passes them on.
>>>>     In summary, you need a new class called CIFX which will be  
>>>> the new
>>>>     constructor. It translates the array passed in by the CI  
>>>> class loader
>>>>     into the 4 parameters the normal FX.php constructor can  
>>>> understand.
>>>>     Time: Another 5 minutes, tops.
>>>>     ....THIS STEP CHANGED from previous message...
>>>>     4) Make a file called CIFX.php (the same name as the class  
>>>> so CI can
>>>>     load it automatically) and put it in CI's application/config/
>>>>     directory.
>>>>     It should contain the data that is normally found in  
>>>> server_data.php in
>>>>     the FX.php distribution but formatted like a PHP file like  
>>>> this:
>>>>     <?php  if (!defined('BASEPATH')) exit('No direct script access
>>>>     allowed');
>>>>     /*
>>>>      
>>>> |------------------------------------------------------------------ 
>>>> --------
>>>>     | FX FMP database access data
>>>>      
>>>> |------------------------------------------------------------------ 
>>>> --------
>>>>     */
>>>>     $config['dataServer']=' 127.0.0.1 <http://127.0.0.1>';
>>>>     $config['dataPort']='591';
>>>>     $config['dataType']='FMPro5/6'; // or FMPro7
>>>>     $config['dataURLType']='http';
>>>>     ?>
>>>>     CI will load this data and pass it to the new CIFX.php class  
>>>> constructor
>>>>     for you - it can do that because the names are the same.  
>>>> Time: 5 more
>>>>     minutes.
>>>>     ....THIS STEP CHANGED from previous message...
>>>>     5) Almost there... make a "controller" file called  
>>>> "search.php" and put
>>>>     it in the application/controllers/ directory with this PHP  
>>>> code (modify
>>>>     the database, layout and field data):
>>>>     <?php
>>>>     class Search extends Controller {
>>>>     function Search()
>>>>     {
>>>>             parent::Controller();
>>>>     }
>>>>     function id($id)
>>>>     {
>>>>             // CI knows where to find the
>>>>             // CIFX.php FX wrapper file at
>>>>             // CI path: application/libraries/CIFX.php
>>>>             // FMP WPE data (IP, port, server version,
>>>>             // and url scheme) is in custom config file at
>>>>             // CI path: application/config/CIFX.php
>>>>             $this->load->library('CIFX');
>>>>             // tell FX which DB, layout to use and
>>>>             // how many records to return
>>>>             $this->cifx->SetDBData('database.fp5', 'layout', 1);
>>>>             // build a find request, field name, data, comparison
>>>>             $this->cifx->AddDBParam ('id', $id, 'eq');
>>>>             // do find, return dataset, no flattening, meta object
>>>>             $res = $this->cifx->DoFXAction(FX_ACTION_FIND, TRUE,  
>>>> TRUE);
>>>>             echo '<pre>';
>>>>             print_r($res);
>>>>             echo '</pre>';
>>>>     }
>>>>     }
>>>>     ?>
>>>>     This AddDBParam example assumes you have a database with the  
>>>> fieldname
>>>>     'id' - you, of course, can change that to suit. I suggest  
>>>> just pointing
>>>>     the FX requests to a database you've already got set up and  
>>>> working.
>>>>     Time: If you use a database already set up, 5 minutes to  
>>>> modify this
>>>>     code and fire it up.
>>>>     6) Point your browser to:
>>>>     http://example.com/path_to_CI/index.php/search/id/1
>>>>     Note: if you followed the CI install instructions on how to  
>>>> use an
>>>>     .htaccess file to use mod_rewrite for nice urls, then you  
>>>> can drop the
>>>>     index.php and just use:
>>>>     http://example.com/path_to_CI/search/id/1
>>>>     ....THIS DESCRIPTION CHANGED from previous message...
>>>>     CI takes the URL segments and loads one as a controller file  
>>>> (search),
>>>>     calls one as a function (id), and passes the last one as a  
>>>> variable (1)
>>>>     for your id() controller function to use as a search  
>>>> parameter. Nice and
>>>>     sweet. It's a great way of organizing projects!
>>>>     Let me know if you have problems with this. I'd like to get  
>>>> a little
>>>>     feedback from the FX folks first and then post instructions  
>>>> at the CI
>>>>     forums.
>>>>     Did it take you an hour and 20 minutes? Let me know!
>>>>     dan
>>>> ------------------------------------------------------------------- 
>>>> -----
>>>> _______________________________________________
>>>> FX.php_List mailing list
>>>> FX.php_List at mail.iviking.org
>>>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>> _______________________________________________
>>> FX.php_List mailing list
>>> FX.php_List at mail.iviking.org
>>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>>
>>
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
>
> _______________________________________________
> FX.php_List mailing list
> FX.php_List at mail.iviking.org
> http://www.iviking.org/mailman/listinfo/fx.php_list
>



More information about the FX.php_List mailing list