Ejemplo n.º 1
0
 /**
  * Returns an array of DB Object Subclasses.
  * @param array $colValPairs
  * @return array
  */
 public static function find($class, $colValPairs)
 {
     if (is_subclass_of($class, __CLASS__)) {
         $validPairs = array();
         foreach ($colValPairs as $col => $val) {
             if (isset($class::$_sanitizeFunctions[$col])) {
                 $val = call_user_func($class::$_sanitizeFunctions[$col], $val);
                 if ($class::$_validateFunctions[$col] === true || call_user_func($class::$_validateFunctions[$col], $val)) {
                     $validPairs[$col] = $val;
                 }
             }
         }
         if (!empty($validPairs)) {
             $wherePairs = DB::getColValPairs($validPairs, ' AND ');
             $sql = "SELECT " . DB::toColumnList($class::$uniqueKeys) . " FROM `" . $class::TABLE . "` WHERE {$wherePairs}";
             return array_map(function ($row) use($class) {
                 return DB_Object::getSubclassInstance($row, $class);
             }, DB::query($sql)->fetchAllAssoc());
         }
     }
     return array();
 }