prepare('SELECT * FROM ext_dialtone LIMIT :limit OFFSET :offset'); // TODO: Implemente sorting // $query = $pdo->prepare('SELECT * FROM ext_dialtone ORDER BY :sort_field LIMIT :limit OFFSET :offset'); // $query->bindValue(':sort_field', $sort_field, PDO::PARAM_STR); // $query->bindValue(':sort_order', $sort_order, PDO::PARAM_STR); $query->bindParam(':limit' , $limit , PDO::PARAM_INT); $query->bindParam(':offset' , $offset , PDO::PARAM_INT); $query->execute(); if ($query->errorCode() != '00000') { $error = $query->errorInfo(); throw new Exception($error[2]); } $ret = $query->fetchAll(PDO::FETCH_ASSOC); return $ret; } static function retrive($pk_extension) { $pdo = database::pdo(); $extension = extensions::retrive($pk_extension); /* Get general information about this dialtone */ $query = $pdo->prepare("SELECT * FROM ext_dialtone WHERE pk_extension=:pk_extension LIMIT 1 "); $query->bindParam(':pk_extension', $pk_extension, PDO::PARAM_INT); $query->execute(); if ($query->errorCode() != '00000') { $error = $query->errorInfo(); throw new Exception($error[2]); } $ret = $query->fetch(PDO::FETCH_ASSOC); /* If we have no results at the last query, return a null array */ if (empty($ret)) { return null; } $ret = array_merge($extension, $ret); return $ret; } static function save($data) { $pdo = database::pdo(); /* set a flag if this is a newly created extension */ if ($data['pk_extension'] == "") { $create_new = true; } /* force type to dialtone */ $data['type'] = 'dialtone'; /* triger a save on the extensions tables */ $data['pk_extension'] = extensions::save($data); /* create a record in the ext_dialtone table if this is a newly created extension */ if ($create_new) { $query = $pdo->prepare("INSERT INTO ext_dialtone(pk_extension) VALUES(:pk_extension)"); $query->bindParam(':pk_extension', $data['pk_extension'], PDO::PARAM_INT); $query->execute(); if ($query->errorCode() != '00000') { $error = $query->errorInfo(); throw new Exception($error[2]); } } /* update the dialtone password */ $query = $pdo->prepare("UPDATE ext_dialtone SET password = :password WHERE pk_extension = :pk_extension"); $query->bindParam(':password' , $data['password'] , PDO::PARAM_STR); $query->bindParam(':pk_extension', $data['pk_extension'], PDO::PARAM_INT); $query->execute(); if ($query->errorCode() != '00000') { $error = $query->errorInfo(); throw new Exception($error[2]); } return $data['pk_extension']; } static function validate($data) { $errors = array(); /* validate first against the extensions table */ $errors = extensions::validate($data); /* if a password was supplied for this dialtone, check if is valid */ if(!empty($data['password'])){ if(! preg_match('/^[0-9]{3,10}$/', $data['password'])) { $errors['password']['invalid'] = true; } } return $errors; } static function generate() { $ret = extensions::generate(); return $ret; } static function delete($pk_extension) { $pdo = database::pdo(); /* Delete from the extensions table */ extensions::delete($pk_extension); /* Delete entry from the dialtone extensions table */ $query = $pdo->prepare("DELETE FROM ext_dialtone WHERE pk_extension = :pk_extension"); $query->bindParam(':pk_extension', $pk_extension, PDO::PARAM_INT); $query->execute(); if ($query->errorCode() != '00000') { $error = $query->errorInfo(); throw new Exception($error[2]); } } }