Seiten

Posts mit dem Label COMA werden angezeigt. Alle Posts anzeigen
Posts mit dem Label COMA werden angezeigt. Alle Posts anzeigen

Dienstag, 13. April 2010

PHP: File Upload

<?php
$message = "";

if(isset($_FILES["file_name"])) 
{
  $upload_dir = "/www/data/";
  $file_name  = $_FILES['file_name']['name'];
  $file_temp  = $_FILES['file_name']['tmp_name'];
  
  move_uploaded_file($file_temp,
                     $upload_dir.$file_name);

  $message = "

$file_name ($file_size Byte) nach $upload_dir hochgeladen!

"; } $html = <<< HTML <form action="{$_SERVER['PHP_SELF']}" enctype="multipart/form-data" method="post"> <input type="file" name="file_name" /> <input type="submit" value="Kopieren" /> </form> HTML; echo $html.$message; ?>

Freitag, 19. März 2010

Oracle: LDAP ID als Primärschlüssel

CALL drop_object('t_test');
CREATE TABLE t_test (test_id NUMBER, uid_text VARCHAR2(80));

CREATE OR REPLACE TRIGGER insert_lid
BEFORE INSERT ON t_test FOR EACH ROW

DECLARE
l_ldap_host  VARCHAR2(256) := 'hera.leipzig.ufz.de';
l_ldap_port  VARCHAR2(256) := '389';
l_ldap_base  VARCHAR2(256) := 'dc=ufz,dc=de';
l_retval     PLS_INTEGER; 
l_session    DBMS_LDAP.session;
l_attrs      DBMS_LDAP.string_collection;
l_message    DBMS_LDAP.message;
l_entry      DBMS_LDAP.message;
l_vals       DBMS_LDAP.string_collection;

BEGIN    
l_session := DBMS_LDAP.init
(
  hostname => l_ldap_host,
  portnum  => l_ldap_port
);

l_retval := DBMS_LDAP.simple_bind_s
(
  ld     => l_session,
  dn     => NULL,
  passwd => NULL
);
                                      
l_attrs(0) := 'uidNumber'; 
l_retval := DBMS_LDAP.search_s
(
  ld       => l_session, 
  base     => l_ldap_base, 
  scope    => DBMS_LDAP.SCOPE_SUBTREE,
  filter   => '(&
                 (nsrole=*roleself*)
                 (objectClass=ufzperson)
                 (uid=' || :new.uid_text || ')
               )',
  attrs    => l_attrs,
  attronly => 0,
  res      => l_message
);   

IF DBMS_LDAP.count_entries
(
  ld => l_session,
  msg => l_message
) = 1
THEN
  l_entry := DBMS_LDAP.first_entry
  (
    ld  => l_session,
    msg => l_message
  );
                                                                                 
  l_vals := DBMS_LDAP.get_values
  (
    ld        => l_session,
    ldapentry => l_entry,
    attr      => l_attrs(0)
  );
END IF;                                     
  
DBMS_OUTPUT.PUT_LINE
(
  l_attrs(0) || ' = ' || l_vals(0)
);
  
l_retval := DBMS_LDAP.unbind_s
(
  ld => l_session
);
  
:new.test_id := l_vals(0);

END;
/

Der Trigger könnte z.B. so ausgelöst werden:

INSERT INTO t_test (uid_text)
VALUES ('dutzend');

Dienstag, 9. März 2010

COMA: Linkicons und Glossarlinks setzen

Um z.B. in AJAX-Responses nachträglich die Glossarlinks und Linkicons zu setzen, kann man nachfolgende COMA-Funktion nutzen:
$html = "HTML mit Glossarbegriffen und Hyperlinks";
$root_pid = 28;
$html = linkicon_glossar_parser($html, $root_pid); 
Der Parameter $root_pid entscheidet über das Setzen der Glossarlinks (Knoten 1 JA, Knoten 9 NEIN ?).

Zu ersetzende Linkicons müssen in einem DIV mit der ID content stehen (nicht valide da ID dann doppelt)!

COMA: Makroparser aufrufen

Um z.B. Makros in AJAX-Responses zu parsen, kann man nachfolgende COMA-Funktion nutzen:
$html = "HTML mit einem Makro (§fgetpic_9908§)";
$html = ersetze_funktionstemplates
        (
          $conn, $sprache, $code, $html,
          $baum, $adm, $su, $pub
        );

Mittwoch, 3. März 2010

COMA: Cron-Job einrichten

Als erstes erstellt man das Makro, welches per Cron aufgerufen werden soll.
Danach sucht man sich in der Datenbank die Tabelle W_CJ.
In die Spalte CJ_FKT trägt man den Namen des Makros ein.
Der Eintrag in die Spalte CJ_EXE besteht aus 4 Ziffern, die ersten beiden geben die volle Stunde an, in der das Makro gestartet wird (00 - 23).
Die beiden letzten stehen für den Tag im Monat an dem man das Makro ausführen möchte (01 - 31), 00 steht dabei für täglich.
In der Spalte CJ_LAST_EXE wird das Datum gesetzt an dem der Job zum letzten Mal ausgeführt wurde.

Mittwoch, 20. Januar 2010

COMA: Angemeldeten User ermitteln

SELECT a.lid, b.login_name FROM web.wsess a, web.wlogin b WHERE sid = $sess_id AND a.lid = b.lid

COMA: Bild dynamisch erzeugen

Hier als Makro umgesetzt, welches so aufgerufen wird:
[§fcreatePic§]

function createPic()  {

  if(isset($_REQUEST['getpic']) &&
    Header("Content-type: image/jpeg");
    $width = "300";
    $height = "50";
    // neues Bild erzeugen
    $image = ImageCreateTrueColor($width, $height);
    // Farben definieren
    $col1 = ImageColorAllocate($image, 255, 255, 200);
    $col2 = ImageColorAllocate($image, 0, 0, 0);
    // Hintergrund mit Farbe füllen
    ImageFill($image, 0, 0, $col1);
    // Text dazu
    ImageString ($image, 5, 20, 20,
                 "Coded bei FIAE", $col2);
    // Grafik ausgeben
    ImageJPEG($image);
    // Speicher wieder frei geben
    ImageDestroy($image);
  }
  else  {
    return "<img src=\"{$_SERVER["REQUEST_URI"]}&getpic\">";
  }
}

Dienstag, 19. Januar 2010

COMA: Oracle-Blob als Image-Stream

Hier als Makro umgesetzt, welches z.B. so aufgerufen wird:
[§fpicStream_13404§]
Als Parameter wird die gewünschte Bild-ID übergeben.

function picStream($conn, $param)  {

  if(isset($_REQUEST['getpic']) &&
     is_numeric($param))  {

    $sql = "select pics_blob from web.wpics
            where pics_id=$param";
    $stmt = OCIparse($conn, $sql) ;
    OCIExecute($stmt,OCI_DEFAULT) ;
    $check = OCIFetchInto($stmt, $row, OCI_ASSOC);
    if($check == 1)
      echo $row["PICS_BLOB"]->load(); 
  }
  else  {
    return "<img src=\"{$_SERVER["REQUEST_URI"]}&getpic\">";
  }
}

Donnerstag, 14. Januar 2010

COMA: LDAP per PHP durchsuchen

function search_user_ldap($string)  {

  $filter =
  "(&
     // aktiviert, deaktiviert, alle
     (nsrole=*roleself*)
     (objectclass=ufzperson)
     // Attribut nach dem wir suchen (sn=Surname)
     (sn=".$string."*)
  )";
  // Attribute die geliefert werden sollen
  $attr = array("sn");
  // Menge der Suchergebnisse (0=unbegrenzt)
  $count = 0;
  // Ergebnisarray
  $search = array();
  
  if(cldap_Search("", &$search, $filter, $attr, $count))  {

    $search = cldap_DeleteCount($search, 1);

    foreach($search as $val)  {
      $ret[] = $val[$attr[0]][0];
    }
  }
  return $ret;
}

COMA: Oracle-Tabellen zwischen Instanzen kopieren

Mit den nachfolgenden SQL-Anweisungen lassen sich mit einem Tool wie dem SQLDeveloper, Tabellen zwischen zwei verschiedenen Oracle-Instanzen kopieren, gültige Verbindungen zu den Instanzen vorrausgesetzt. Ausgangspunkt im SQLDeveloper ist jeweils die Zielinstanz.

Beispiel 1: von SERVICE nach INTERNET

create table WEB.WTR_UFZ
as select * from WEB.WTR_UFZ@testsystem

Beispiel 2: von INTERNET nach SERVICE

create table WEB.WTR_UFZ
as select * from WEB.WTR_UFZ@internet

Freitag, 8. Januar 2010

COMA: AJAX-Response ohne Content

So könnte man z.B. in einem Makro einen Response auslösen.
if(isset($_GET['ajax']))  {
  echo utf8_encode("Hallo AJAX!");
  die();  // ohne die() wird der komplette Kontent 
}         // mit zurückgegeben