Pman/Images.php
[Pman.Base] / Pman / Roo.php
index 03abbdf..7597356 100644 (file)
@@ -16,12 +16,12 @@ require_once 'Pman.php';
  * - postListExtra - add extra column data on the results (like new messages etc.)
  * -postListFilter($data, $authUser, $request) return $data - add extra data to an object
  * 
- * - toRooSingleArray() // single fetch, add data..
+ * - toRooSingleArray($authUser) // single fetch, add data..
  * - toRooArray($request) /// toArray if you need to return different data.. for a list fetch.
  * 
  * 
  * - beforeDelete() -- return false for fail and set DO->err;
- * - onUpdate($old, $request,$roo) - after update
+ * - onUpdate($old, $request,$roo) - after update // return value ignored
  * - onInsert($request,$roo) - after insert
  * - onUpload($roo)
  * - setFromRoo($ar) - values from post (deal with dates etc.) - return true|error string.
@@ -46,7 +46,7 @@ class Pman_Roo extends Pman
      * -- defaults to listing data. with args.
      * 
      * !colname=....                 => colname != ....
-     * colname[0]=... colname[1]=... => colname IN (.....)
+     * colname[0]=... colname[1]=... => colname IN (.....) ** only supports main table at present..
      * 
      * other opts:
      * _post      = simulate a post with debuggin on.
@@ -61,8 +61,8 @@ class Pman_Roo extends Pman
      * 
      * csvTitles  = return data as csv
      *
-     * sort        = sort column
-     * dir         = sort direction
+     * sort        = sort column (',' comma delimited)
+     * dir         = sort direction ?? in future comma delimited...
      * start       = limit start
      * limit       = limit number 
      * 
@@ -73,7 +73,7 @@ class Pman_Roo extends Pman
     function get($tab)
     {
          //  $this->jerr("Not authenticated", array('authFailure' => true));
-         //DB_DataObject::debuglevel(1);
+        // DB_DataObject::debuglevel(1);
         
         // debugging...
         if (!empty($_GET['_post'])) {
@@ -272,7 +272,7 @@ class Pman_Roo extends Pman
     function applySort($x)
     {
         
-        Db_DataObject::debugLevel(1);
+       // Db_DataObject::debugLevel(1);
         $sort = empty($_REQUEST['sort']) ? '' : $_REQUEST['sort'];
         $dir = (empty($_REQUEST['dir']) || strtoupper($_REQUEST['dir']) == 'ASC' ? 'ASC' : 'DESC');
         
@@ -324,6 +324,7 @@ class Pman_Roo extends Pman
         if (!empty($_REQUEST['_get'])) {
             return $this->get($tab);
         }
+      
         $_columns = !empty($_REQUEST['_columns']) ? explode(',', $_REQUEST['_columns']) : false;
         
         $tab = str_replace('/', '',$tab); // basic protection??
@@ -336,6 +337,14 @@ class Pman_Roo extends Pman
         if (empty($keys) ) {
             $this->jerr('no key');
         }
+        
+          // delete should be here...
+        if (isset($_REQUEST['_delete'])) {
+            // do we really delete stuff!?!?!?
+            return $this->delete($x,$_REQUEST);
+        } 
+         
+        
         $old = false;
         
         if (!empty($_REQUEST['_ids'])) {
@@ -360,6 +369,11 @@ class Pman_Roo extends Pman
             }
             $this->jok($this->update($x, $_REQUEST));
         } else {
+            
+            if (empty($_POST)) {
+                $this->jerr("No data recieved for inserting");
+            }
+            
             $this->jok($this->insert($x, $_REQUEST));
             
         }
@@ -436,14 +450,17 @@ class Pman_Roo extends Pman
         }
         
         $r = DB_DataObject::factory($x->tableName());
-        $r->id = $x->id;
+          $pk = $x->keys();
+        // let's assume it has a key!!!
+        $pk = $pk[0];
+        $r->$pk = $x->$pk;
         $this->loadMap($r, $_columns);
         $r->limit(1);
         $r->find(true);
         
         $rooar = method_exists($r, 'toRooArray');
         //print_r(var_dump($rooar)); exit;
-        return $rooar  ? $r->toRooArray() : $r->toArray();
+        return $rooar  ? $r->toRooArray($_REQUEST) : $r->toArray();
     }
     
     
@@ -500,20 +517,25 @@ class Pman_Roo extends Pman
         }
         
         $r = DB_DataObject::factory($x->tableName());
-        $r->id = $x->id;
+        $pk = $x->keys();
+        // let's assume it has a key!!!
+        $pk = $pk[0];
+        $r->$pk = $x->$pk;
         $this->loadMap($r, $_columns);
         $r->limit(1);
         $r->find(true);
         $rooar = method_exists($r, 'toRooArray');
         //print_r(var_dump($rooar)); exit;
-        return $rooar  ? $r->toRooArray() : $r->toArray();
+        return $rooar  ? $r->toRooArray($_REQUEST) : $r->toArray();
     }
     
     function delete($x, $req)
     {
         // do we really delete stuff!?!?!?
-       
-       
+        if (empty($req['_delete'])) {
+            $this->jerr("Delete Requested with no value");
+            
+        }
         // build a list of tables to queriy for dependant data..
         $map = $x->links();
         
@@ -533,7 +555,7 @@ class Pman_Roo extends Pman
         // collect tables
         
        // echo '<PRE>';print_r($affects);exit;
-        //DB_Dataobject::debugLevel(1);
+       //DB_Dataobject::debugLevel(1);
        
         
         $clean = create_function('$v', 'return (int)$v;');
@@ -541,9 +563,14 @@ class Pman_Roo extends Pman
         $bits = array_map($clean, explode(',', $req['_delete']));
         
        // print_r($bits);exit;
+         $pk = $x->keys();
+        // let's assume it has a key!!!
+        $pk = $pk[0];
         
-        $x->whereAdd('id IN ('. implode(',', $bits) .')');
-        $x->find();
+        $x->whereAdd($pk .'  IN ('. implode(',', $bits) .')');
+        if (!$x->find()) {
+            $this->jerr("Nothing found to delete");
+        }
         $errs = array();
         while ($x->fetch()) {
             $xx = clone($x);
@@ -552,9 +579,12 @@ class Pman_Roo extends Pman
             foreach($affects as $k=> $true) {
                 $ka = explode('.', $k);
                 $chk = DB_DataObject::factory($ka[0]);
-                $chk->{$ka[1]} =  $xx->id;
+                if (!is_a($chk,'DB_DataObject')) {
+                    $this->jerr('Unable to load referenced table, check the links config: ' .$ka[0]);
+                }
+                $chk->{$ka[1]} =  $xx->$pk;
                 if ($chk->count()) {
-                    $this->jerr('Delete Dependant records first');
+                    $this->jerr('Delete Dependant records first ('. $ka[0]. ':' . $ka[1] .'='.$xx->$pk.')');
                 }
             }
             
@@ -781,7 +811,7 @@ class Pman_Roo extends Pman
                     
                 }
                 if (count($ar)) {
-                    $x->whereAddIn($key,$ar, $quote ? 'string' : 'int');
+                    $x->whereAddIn($x->tableName(). '.'.$key,$ar, $quote ? 'string' : 'int');
                 }
                 
                 continue;