Pārlūkot izejas kodu

Now looks more like Moodle

ahwelp 6 gadi atpakaļ
vecāks
revīzija
e48d5a8992
1 mainītis faili ar 176 papildinājumiem un 3 dzēšanām
  1. 176 3
      src/ORM/DBInstance.php

+ 176 - 3
src/ORM/DBInstance.php

@@ -13,10 +13,20 @@ class DBInstance {
     		$sql = str_replace("  ", " ", $sql);
 		}
 		$sql = str_replace("{", $con->prefix, $sql);
-		$sql = str_replace("}", "", $sql);        
+		$sql = str_replace("}", "", $sql);
+
         return  $sql;
     }
-    
+
+    /**
+     * Execute
+     *
+     * This method will execute a SQL on the database
+     *
+     * @param String $sql The SQL to be executed
+     * @param Array $data Pass the info to be replaced on the query_prepare
+     * @param String $instance Select the connection to execute
+     */
     public static function execute($sql, $data = null, $instance = 'default') {
         $sql = self::addPrefix($sql, $instance);
         if ($data) {
@@ -32,8 +42,20 @@ class DBInstance {
         return $con->lastInsertId();
     }
 
-    public static function query($sql, $data = null, $instance = 'default') {
+    /**
+     * Query
+     *
+     * This method will execute a SQL and return a pointer to the resultset
+     *
+     * @param String $sql The SQL to be executed
+     * @param Array $data Pass the info to be replaced on the query_prepare
+     * @param String $instance Select the connection to execute
+     *
+     * @return pointer A pointer for a foreach loop
+     */
+    public static function query($sql, $data = null, $instance = 'default') {        
         $sql = self::addPrefix($sql, $instance);
+        
         if ($data) {
             return self::queryPrepare($sql, $data, $instance);
         } else {
@@ -42,6 +64,17 @@ class DBInstance {
         }
     }
 
+    /**
+     * queryOne
+     *
+     * This method will execute a SQL and return the first featches register
+     *
+     * @param String $sql The SQL to be executed
+     * @param Array $data Pass the info to be replaced on the query_prepare
+     * @param String $instance Select the connection to execute
+     *
+     * @return stdClass A object with the record info
+     */
     public static function queryOne($sql, $data = null, $instance = 'default') {
         $sql = self::addPrefix($sql, $instance);
         if ($data) {
@@ -52,6 +85,146 @@ class DBInstance {
         }
     }
 
+    /**
+     * getRecord
+     *
+     * This method will execute get a register from a table
+     *
+     * @param String $table The table to be searched
+     * @param Array $data Pass the info to be replaced on the query_prepare
+     * @param Array $select Info to be put on the SELECT part of the query
+     * @param String $instance Select the connection to execute
+     *
+     * @return stdClass A object with the record info
+     */
+    public static function getRecord($table, $data = null, $select = Array('*'), $instance = 'default'){
+        $select = implode(', ', $select);
+
+        $conditions = "";
+        $params = Array();
+
+        foreach ($data as $key => $cond){
+            if(is_array( $cond ) ){
+                if(is_array($cond[1])){
+                    $inner_conditions = "$key $cond[0] (";
+                    foreach ($cond[1] as $in_key => $c){
+                        $inner_conditions .= ":".$key."_".$in_key.", ";
+                        $params[$key."_".$in_key] = $c;
+                    }
+                    $conditions .= rtrim($inner_conditions, ', ') . ") AND ";
+                }else{
+                    $conditions .= "$key $cond[0] :$key AND ";
+                    $params[$key] = $cond[1];
+                }
+
+            }else{
+                $conditions .= "$key = :$key AND ";
+                $params[$key] = $cond;
+            }
+        }
+
+        $conditions = rtrim($conditions, 'AND ');
+        $sql = "SELECT $select FROM {".$table."} WHERE $conditions";
+
+        return self::queryOne($sql , $params, $instance)[0];
+
+    }
+
+    /**
+     * getRecordSql
+     *
+     * This method will get a record from the database using SQL
+     *
+     * @param String $sql The SQL to be executed
+     * @param Array $data Pass the info to be replaced on the query_prepare
+     * @param String $instance Select the connection to execute
+     *
+     * @return stdClass A object with the record info
+     */
+    public static function getRecordSql($sql, $data = null, $instance = 'default'){
+        $sql = self::addPrefix($sql, $instance);        
+        
+        if ($data) {
+            $pointer = self::queryPrepare($sql, $data, $instance);
+        } else {
+            $con = Connections::getConnection($instance);
+            return $con->query($sql, \PDO::FETCH_OBJ)->fetch();
+        }
+    }
+
+    /**
+     * getRecords
+     *
+     * This method will get records from the database
+     *
+     * @param String $table The table to be searched
+     * @param Array $data Pass the info to be replaced on the query_prepare
+     * @param Array $select Info to be put on the SELECT part of the query
+     * @param String $instance Select the connection to execute
+     *
+     * @return stdClass A object with the record info
+     */
+    public static function getRecords($table, $data = null, $select = Array('*'), $instance = 'default'){
+        $select = implode(', ', $select);
+
+        $conditions = "";
+        $params = Array();
+
+        foreach ($data as $key => $cond){
+            if(is_array( $cond ) ){
+                if(is_array($cond[1])){
+                    $inner_conditions = "$key $cond[0] (";
+                    foreach ($cond[1] as $in_key => $c){
+                        $inner_conditions .= ":".$key."_".$in_key.", ";
+                        $params[$key."_".$in_key] = $c;
+                    }
+                    $conditions .= rtrim($inner_conditions, ', ') . ") AND ";
+                }else{
+                    $conditions .= "$key $cond[0] :$key AND ";
+                    $params[$key] = $cond[1];
+                }
+
+            }else{
+                $conditions .= "$key = :$key AND ";
+                $params[$key] = $cond;
+            }
+        }
+
+        $conditions = rtrim($conditions, 'AND ');
+        $sql = "SELECT $select FROM {".$table."} WHERE $conditions";
+
+        return self::query($sql , $params, $instance);
+    }
+
+    /**
+     * getRecordsSql
+     *
+     * This method will get records from the database
+     *
+     * @param String $sql The SQL to be executed
+     * @param Array $data Pass the info to be replaced on the query_prepare
+     * @param String $instance Select the connection to execute
+     *
+     * @return Array Array with objects representing the database data
+     */
+    public static function getRecordsSql($sql, $data = null, $instance = 'default'){
+        $sql = self::addPrefix($sql, $instance);
+
+        $pointer = Array();
+        if ($data) {
+            $pointer = self::queryPrepare($sql, $data, $instance);
+        } else {
+            $con = Connections::getConnection($instance);
+            $pointer = $con->query($sql, \PDO::FETCH_OBJ);
+        }
+        $elements = Array();
+        foreach ($pointer as $point){
+            $key = array_keys((array)$point)[0];
+            $elements[ ((array)$point)[$key] ] = $point;
+        }
+        return $elements;
+    }    
+
     public static function queryPrepare($sql, $data = Array(), $instance = 'default') {
         $sql = self::addPrefix($sql, $instance);
         $con = Connections::getConnection($instance);