I'm looking to freelance. I can improve your site, start building it for you or fix it. I can code in MVC, procedural or OOP depending on what you prefer or what your game is currently built using.
I have experience in PHP and Ruby, using databases such as MongoDB, MySQL, PostgreSQL and frameworks like Rails, Ramaze, CakePHP, CodeIgniter and Slim.
Pricing
$17.50/hr. I program by the hour in 'packages,' what this means is I will quote you on how long a project will take me and then that will be a fixed price. So if I think something will take two hours, I'll charge you $35.00 even if it takes me longer.
What Can I Do
I can code anything you need done in a reasonable amount of time. Any errors will be fixed regardless of when they're found and I will revise my coding up to three times to better suit your tastes if needed. I test all my coding heavily as well to ensure its quality and security. For an estimate of what your project would take me, don't hesitate to contact me.
Quotes
For an estimate of how long something will take, either post on here or private message me. If you request a quote and I find I'm unable to do it in the time quoted, I will still charge you for the quoted time.
Payment
I require 50% of the payment up front, once this half is paid, I will start coding, I will show you a demo and pieces of the source code and if you don't require any changes, I will then require the final 50% before sending you the source code. I take payments via Paypal or Google Wallet.
Examples
Please note these are only controllers, views and models are required for the examples to function. I will not publish any models or views even on request as I want to prevent stealing of my work.
Excerpt from a forum controller:
PHP Code:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Forum extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('forum_model', '', TRUE);
$this->template->set('body_id', 'interact');
}
public function index() {
$this->template->set('title', 'Forum Index');
$this->template->set('query', $this->forum_model->get_categories());
$this->template->render();
}
public function category($id, $page = 1) {
if (!$this->forum_model->category_exists($id)) {
$this->template->error('This category doesn\'t exist!');
} elseif (!$this->forum_model->user_can_see_category($id)) {
$this->template->error('You don\'t have the permission to see this category!');
} else {
$this->load->library('pagination');
$config['per_page'] = 15;
$query = $this->forum_model->get_category_topics_where(array('stickied' => FALSE), $id, $config['per_page'], $this->uri->segment(4), 'DESC');
$this->template->set('sticky_query', $this->forum_model->get_category_topics_where(array('stickied'=>1), $id, 10, 0));
$config['uri_segment'] = 4;
$config['base_url'] = base_url("forum/category/".$id."/");
$config['total_rows'] = $this->forum_model->count_category_topics($id);
$this->pagination->initialize($config);
$title = $this->forum_model->get_category($id)->row()->name;
$this->template->set('query', $query);
$this->template->set('title', $title);
$this->template->set('id', $id);
}
$this->template->render('forum/category');
}
public function topic($id, $page = 1) {
if (!$this->input->post()):
if (!$this->forum_model->topic_exists($id)) {
$this->template->error('This topic doesn\'t exist!');
} elseif ($this->forum_model->topic_hidden($id) || !$this->forum_model->user_can_see_category($this->forum_model->get_topic_category($id))) {
$this->template->error('You don\'t have the permission to see this topic!');
} else {
$this->load->library('pagination');
$query = $this->forum_model->get_topic_replies($id, 10, $this->uri->segment(4), 'ASC');
$query_topic = $this->forum_model->get_topic_where(array('id'=>$id));
$this->template->set('sticky_query', $this->forum_model->get_category_topics_where(array('stickied'=>1), $id, 10, 0));
$config['uri_segment'] = 4;
$config['base_url'] = base_url("forum/topic/".$id."/");
$config['total_rows'] = $this->forum_model->count_topic_posts($id);
$config['per_page'] = 10;
$this->pagination->initialize($config);
$title = $this->forum_model->get_topic_where(array('id' => $id))->row()->title;
$this->template->set('page', $page);
$this->template->set('query', $query);
$this->template->set('topic', $query_topic);
$this->template->set('title', $title);
$this->template->set('id', $id);
}
else:
$this->load->library('pagination');
$this->template->set('sticky_query', $this->forum_model->get_category_topics_where(array('stickied'=>1), $id, 10, 0));
$config['uri_segment'] = 4;
$config['base_url'] = base_url("forum/topic/".$id."/");
$config['total_rows'] = $this->forum_model->count_topic_posts($id);
$config['per_page'] = 10;
$this->pagination->initialize($config);
$query = $this->forum_model->get_topic_replies($id, 10, $this->uri->segment(4), 'ASC');
$query_topic = $this->forum_model->get_topic_where(array('id'=>$id));
$title = $this->forum_model->get_topic_where(array('id' => $id))->row()->title;
$this->template->set('page', $page);
$this->template->set('query', $query);
$this->template->set('topic', $query_topic);
$this->template->set('title', $title);
$this->template->set('id', $id);
$this->load->library('form_validation');
$config = array(
array(
'field' => 'content',
'label' => 'content',
'rules' => 'required|min_length[5]|max_length[1500]'
)
);
$this->form_validation->set_rules($config);
if ($this->form_validation->run() == FALSE) {
$this->template->set('view', 'forum/topic');
} else {
$this->forum_model->create_reply($this->forum_model->get_topic_category($id), $id, $this->user_model->id(), $this->input->post('content'), 0);
redirect(current_url());
}
endif;
$this->template->render('forum/topic');
}
Excerpt from a news controller:
PHP Code:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class News extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('news_model');
$this->template->set('title', 'News');
$this->load->library('pagination');
}
public function index($page = 1) {
$config['per_page'] = 5;
$entries = $this->news_model->get_latest_entries($config['per_page'], $page-1);
$this->template->set('entries', $entries);
$config['uri_segment'] = 3;
$config['base_url'] = base_url("news/index/".$this->uri->segment(4)."/");
$config['total_rows'] = $this->news_model->count_entries();
$this->pagination->initialize($config);
$this->template->render('news/index');
}
public function view($id = NULL) {
if (is_null($id)) {
$this->template->error('This is not a valid story!');
}
$this->load->library('form_validation');
if ($this->input->post()) {
$config = array(
array(
'field' => 'content',
'label' => 'content',
'rules' => 'required|min_length[5]|max_length[1500]'
)
);
$this->form_validation->set_rules($config);
if ($this->form_validation->run() == FALSE || $this->input->post('timestamp') != $this->session->userdata('timestamp')) {
goto show_form;
} else {
if ($this->news_model->get_comments_where($id, array('user_id' => $this->user_model->id(), 'content' => $this->input->post('content')))->num_rows()) {
redirect(current_url());
}
$this->news_model->create_comment($id, $this->user_model->id(), $this->input->post('content'));
$this->session->unset_userdata('timestamp');
redirect(current_url());
}
} else {
show_form:
$entry = $this->news_model->get_entry($id);
$this->template->set('entry', $entry->row());
$this->template->set('title', 'News — '.$entry->row()->title);
$this->template->set('comments', $this->news_model->get_comments($id));
$this->template->render();
}
}
}
Thanks!
Bookmarks