php8
[web.mtrack] / MTrackWeb / Gitlive.php
index e69de29..3db2ba2 100644 (file)
@@ -0,0 +1,85 @@
+<?php
+
+/**
+ * JSON api for gitlive desktop application
+ */
+require_once 'MTrackWeb.php';
+class MTrackWeb_Gitlive extends MTrackWeb
+{
+    function h401()
+    {
+        header('WWW-Authenticate: Basic realm="Gitlive"');
+        header('HTTP/1.0 401 Unauthorized');
+        echo 'Needs data!';
+        exit;
+    }
+    function getAuth()
+    {
+        if (!isset($_SERVER['PHP_AUTH_USER'])) {
+            $this->h401();
+        } 
+        $u = DB_DataObject::factory('core_person');
+        //$u->active = 1;
+        $u->whereAdd('LENGTH(passwd) > 1');
+        //$u->company_id = $this->company->id;
+         
+        $u->email = $_SERVER['PHP_AUTH_USER'];
+        if ($u->count() > 1 || !$u->find(true)) {
+            $this->h401();
+            
+        }
+        
+        //if (!$u->active) {
+        //    return $this->errmsg('disabled');
+        //}
+        
+        if ($u->checkPassword($_SERVER['PHP_AUTH_PW'])) {
+            $u->login();
+            $this->authUser = $u;
+            // we do not log automated???
+            return true;
+
+            //exit;
+        }    
+            
+            
+    }
+    
+    function get($pi) {
+        
+        $pi .= (strlen($pi) ? $this->bootLoader->ext : '');
+        $r = DB_DataObject::factory('mtrack_repos');
+        if (!$r->get('shortname', $pi)) {
+            $this->jerr("invalid repo");
+        }
+        // make sure it's a valid project..
+        if (!$this->projectPerm($r->project_id, 'MTrack.Issue', 'S')) {
+            $this->jerr("no perms");
+        }
+        //DB_DAtaObject::DebugLevel(1);
+        $t = DB_DataObject::Factory('mtrack_ticket');
+        $t->autoJoin();
+        $t->whereAdd("join_status_id.name IN ( 'open', 'new')");
+        $t->project_id = $r->project_id;
+        // only need id / name / status?
+        //$ar = $t->fetchAll('id', ');
+        $t->selectAdd();
+        $t->selectAdd('
+                mtrack_ticket.id as id ,
+                mtrack_ticket.summary as summary,
+                mtrack_ticket.description as description
+        ');
+        
+        $t->find();
+        $ret = array();
+        while ($t->fetch()) {
+            $ret[] = $t->toArray('%s', 0);
+        }
+         
+    //    print_R($ar);
+        $this->jok($ret);
+        $this->jok("WORKED!");
+        
+    }
+    
+}
\ No newline at end of file