Next: , Previous: , Up: Use cases   [Contents][Index]


6.6 Minimal Php inerface

A minimal CAKEPHP application is provided with the sources (/usr/share/mediatex/useCases/cake.tgz), showing how to use the MEDIATEX system as a storage layer.

Notice: Not tested for a while

mediatex-figures/useCase

There are only 4 interactions from the CAKE’s models and view:

cake/models/user.php

Add a user

function beforeSave() {
  $cmd = "/var/www/cake/ingest.sh user ".
    $this->data['User']['username']." ".
    $this->data['User']['passwd'];
  system($cmd, $retval);
  return ($retval == 0);
}
cake/models/node.php

Add a directory or a file

function beforeSave() {
  $father = $this->find('first', 
     array('conditions' => array('Node.id' => 
      $this->data['Node']['node_id'])));

  switch($this->data['Node']['type']) {
  case 1:
    $cmd = "/var/www/cake/ingest.sh dir ".
      $this->data['Node']['name']." ".
      $father['Node']['name'];
    break;

  case 2:
…
    $cmd = "/var/www/cake/ingest.sh file ".
      $this->data['Node']['username']." ".
      $this->data['Node']['name']." ".
      $father['Node']['name']." ".
      $path;
    break;
…
  }
  
  system($cmd, $retval);
  return ($retval == 0);
} 
cake/views/nodes/view.ctp

CAKE view points on the MEDIATEX URL.

…
echo $html->link($fils['name'], 
                 'https://HOSTNAME/~mdtx-cake/cgi/get.cgi'.
                 $fils['url']);
…

The cake/ingest.sh manage theses 3 ingestion’s actions

function addUser()
{
  CYPHER=$(printf "$LOGIN:$COLLECTION:$PASSWD" | md5sum | cut -d' ' -f1)
  LINE="$LOGIN:$COLLECTION:$CYPHER"
  echo $LINE >> $PWD_FILE
  sed $GRP_FILE -i -e "s/^\(.*\)$/\1 $LOGIN/"

  cat >>$CAT_FILE <<EOF
Human    "$LOGIN" ""
EOF
}

function addDir()
{
  cat >>$CAT_FILE <<EOF
top Category "$NAME": "$FATHER"
EOF
  mediatex upgrade coll $COLL
}

function addFile()
{
  HASH=$(md5sum $TEMP | cut -d' ' -f1)
  SIZE=$(ls -l $TEMP | awk '{print $5}')

  mediatex upload $TEMP to coll $COLL

  cat >>$CAT_FILE <<EOF
Document "$NAME": "$FATHER"
  with "uploader" = "$LOGIN" ""
  $HASH:$SIZE
EOF

  mediatex upgrade coll $COLL
}

To be fully operational, this implementation lakes a process to recover the database from MEDIATEX. This is the purpose of the following section.