/**
  * @param string $sql
  * @param array $params
  * @param int $page
  * @param int $numPerPage
  * @return array|bool
  */
 public static function findBySql($sql, $params = array(), $page = 0, $numPerPage = 0)
 {
     $params = static::formatBindParams($params);
     list($start, $count) = self::$db->getOffsetsFromPage($page, $numPerPage);
     $results = self::$db->getArray($sql, $params, $start, $count);
     $paging = self::$db->getPaging($page, $numPerPage);
     $objects = array();
     if (!empty($results)) {
         foreach ($results as $result) {
             $objects[] = static::hydrate($result);
         }
     }
     return $page !== 0 && $numPerPage !== 0 ? array($objects, $paging) : $objects;
 }