get relationships.ini fields

A place for users and developers of the Xataface to discuss and receive support.

get relationships.ini fields

Postby pdesbois » Mon Oct 05, 2009 1:35 pm

Hello,
I have a relationships.ini file as the following:
Code: Select all
[relation_test]
   action:label   = "Relation Test"
   table_main.NAMEREF   = "$NAME"
   table_main.SUBREF   = "$SUBREF"
   action:order   = 2
   section:visible   = 1


I need to make the following HTML link:
Code: Select all
<a href="http://database_path.index.php?-table=table_main&NAMEREF=name1&SUBREF=sub1>


How to get the table name ‘table_main’ and the 2 field names ‘NAMEREF’ and ‘SUBREF’ set by the relationships.ini ?

Thanks in advance for your help,
Patrice.
pdesbois
 
Posts: 9
Joined: Wed Apr 29, 2009 5:21 am
Location: france

Postby pdesbois » Tue Oct 06, 2009 8:19 am

Hello,
To solve my problem I use the code hereunder :
Code: Select all
function getRelationships($tablename, $relationname) {
   $rel_link = array();
   $table =& Dataface_Table::loadTable($tablename);
   $relationships = & $table->getRelationship($relationname);
   if (array_key_exists('getForeignKeyValues', $relationships->_cache) == FALSE) {
      return $rel_link;
   }
   
   $rel_tablenames = array_keys($relationships->_cache['getForeignKeyValues']);
   if (count($rel_tablenames) == 0) {
      return $rel_link;
   }
   
   $rel_link['table'] = $rel_tablenames[0];
   foreach ($relationships->_cache['getForeignKeyValues'][$rel_tablenames[0]] as $field => $val) {
      $this->rel_link['fields'][$field] = ereg_replace('\$', '', $val);
   }
   return $rel_link;
}


With this function I'm able to create the HTML link in my code :

Code: Select all
   ...
   $database_path = ereg_replace('(.*)htdocs', php_uname('n'), DATAFACE_SITE_PATH);
   $url = $record->getURL(array('-action'=>'edit'));
   
   $rel_link = getRelationships('table_main', 'relation_test');
   if (count($rel_link) > 0) {
      $html_str .= '<td '.$color.'>&nbsp;<a href="http://'.$database_path.'/index.php?-table='.$rel_link[table];
      foreach ($rel_link['fields'] as $rel_field => $map_field) {
         $html_str .= '&'.$rel_field.'='.$record->display($map_field);
      }
      $html_str .= '" class="unmarked_link">'.$val.'</td>';
   }
   else {
      $html_str .= '
            <td '.$color.'>&nbsp;<a href="'.$url.'" class="unmarked_link">'.$val.'</td>';
   }
   ...



This method is not elegant, but I did not find another way...

Regards,
Patrice.
pdesbois
 
Posts: 9
Joined: Wed Apr 29, 2009 5:21 am
Location: france


Return to Xataface Users

Who is online

Users browsing this forum: No registered users and 16 guests

cron
Powered by Dataface
© 2005-2007 Steve Hannah All rights reserved