Esempio n. 1
0
 public function create_character_defaults(Database $dbObj)
 {
     $result = 0;
     if (!is_null($this->characterId) && is_numeric($this->characterId) && $this->characterId > 0) {
         $allSaves = $this->get_all_saves($dbObj);
         foreach ($allSaves as $k => $v) {
             $createData = array('character_id' => $this->characterId, 'save_id' => $v['save_id']);
             $this->create($dbObj, $createData);
             $result++;
         }
     } else {
         throw new ErrorException(__METHOD__ . ": missing characterId (" . cs_global::debug_var_dump($this->characterId) . ")");
     }
     return $result;
 }
 public function texst_delete()
 {
     $x = new Ability();
     $x->characterId = $this->id;
     $x->create_defaults($this->dbObj);
     $allRecords = $x->get_all($this->dbObj, $this->id);
     $this->assertTrue(count($allRecords) > 0);
     $keys = array_keys($allRecords);
     $lastRec = count($allRecords);
     foreach ($allRecords as $ability => $data) {
         $this->assertEquals($lastRec, count($x->get_all($this->dbObj, $this->id)));
         $this->assertTrue(is_string($ability), "ID=(" . $ability . ")");
         $this->assertTrue(is_array($data));
         $this->assertTrue(count($data) > 0);
         $x->id = $data['character_ability_id'];
         $this->assertEquals(1, $x->delete($this->dbObj));
         $lastRec--;
     }
     $this->assertEquals(0, $lastRec);
     $allAbilities = $x->get_all($this->dbObj, $this->id);
     $this->assertEquals(0, count($allAbilities), cs_global::debug_print($allAbilities));
     $this->assertEquals(array(), $allAbilities);
 }
 public function test_get_record_by_id()
 {
     $types = array('mysql');
     $users = array('root');
     foreach ($types as $i => $type) {
         parent::internal_connect_db($type, $users[$i]);
         parent::reset_db(__DIR__ . '/../setup/testTable.' . $type . '.sql');
         $record = $this->x->get_record_by_id(1);
         $this->assertTrue(is_array($record));
         $this->assertTrue(count($record) > 0);
         $this->assertEquals(1, $record['test_id']);
         $this->assertEquals(1, $record['the_number']);
         $this->assertEquals('first', $record['description']);
         $this->assertEquals(true, $record['is_active']);
         $record = $this->x->get_record_by_id(5);
         $this->assertTrue(is_array($record));
         $this->assertEquals(5, $record['test_id']);
         $this->assertEquals(999, $record['the_number']);
         //now try to retrieve a record that does not exist.
         try {
             $badRecord = $this->x->get_record_by_id(666);
             $this->assertFalse(count($badRecord), "no exception thrown, and there is data in the returned record....???? " . cs_global::debug_print($badRecord));
         } catch (Exception $ex) {
             $this->assertTrue((bool) preg_match('~returned data did not contain ID~', $ex->getMessage()), "invalid or unexpected exception message: " . $ex->getMessage());
         }
         try {
             $this->x->get_record_by_id("poop");
         } catch (Exception $ex) {
             $this->assertTrue((bool) preg_match('~record ID must be numeric~', $ex->getMessage()), "unexpected exception message: " . $ex->getMessage());
         }
     }
 }
 public function get_logs_count($criteria, array $pagination = null)
 {
     //TODO: allow array for $criteria, so more complex operations can be done
     $_crit = "";
     if (!is_null($criteria) && is_string($criteria) && strlen($criteria) > 0) {
         $_crit = strtolower($criteria);
     }
     $_limit = "";
     $_offset = "";
     if (is_array($pagination)) {
         foreach ($pagination as $k => $v) {
             switch (strtolower($k)) {
                 case "order":
                     break;
                 case "limit":
                     if (is_numeric($v)) {
                         $_limit = " LIMIT " . $v;
                     } elseif (is_null($v)) {
                         $_limit = "";
                     } else {
                         throw new InvalidArgumentException(__METHOD__ . ": non-numeric argument for limit (" . $v . ")");
                     }
                     break;
                 case "offset":
                     if (is_numeric($v)) {
                         $_offset = " OFFSET " . $v;
                     } elseif (is_null($v)) {
                         $_offset = "";
                     } else {
                         throw new InvalidArgumentException(__METHOD__ . ": non-numeric argument for offset (" . $v . ")");
                     }
                     break;
                 default:
                     throw new InvalidArgumentException(__METHOD__ . ": invalid index '" . $k . "'");
             }
         }
     }
     //TODO: handle more complex scenarios, like time periods.
     $sql = "SELECT \n\t\t\tcount(1) AS count\n\t\t\tFROM " . self::logTable . " AS l \n\t\t\t\tINNER JOIN " . self::eventTable . " AS ev ON (l.event_id=ev.event_id) \n\t\t\t\tINNER JOIN " . self::classTable . " AS cl ON (cl.class_id=ev.class_id) \n\t\t\t\tINNER JOIN " . self::categoryTable . " AS ca ON (ca.category_id=ev.category_id)\n\t\t\t\tINNER JOIN " . self::userTable . " AS u ON (l.uid=u.uid)";
     $params = array();
     if (strlen($_crit)) {
         $sql .= " WHERE LOWER(l.details) LIKE :search::text\n\t\t\t\tOR LOWER(cl.class_name) LIKE :search::text\n\t\t\t\tOR LOWER(ca.category_name) LIKE :search::text\n\t\t\t\tOR LOWER(ev.description) LIKE :search::text\n\t\t\t\tOR LOWER(u.username) LIKE :search::text\n\t\t\t\tOR LOWER(u.email) LIKE :search::text";
         $params['search'] = "%" . $_crit . "%";
     }
     $sql .= $_limit . $_offset;
     try {
         $numrows = $this->db->run_query($sql, $params);
         $retval = -1;
         if ($numrows > 0) {
             $data = $this->db->get_single_record();
             $retval = $data['count'];
         }
     } catch (Exception $ex) {
         throw new ErrorException(__METHOD__ . ": failed to retrieve logs, details::: " . $ex->getMessage() . "\n\nSQL::: " . $sql . "\n\nPARAMS::: " . cs_global::debug_print($params));
     }
     return $retval;
 }