Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 1997

Přidáno uživatelem David Raška před více než 11 roky(ů)

- dokonceni predchoziho commitu

Zobrazit rozdíly:

freenetis/branches/1.1/application/controllers/favourites.php
<?php
defined('SYSPATH') or die('No direct script access.');
/*
* This file is part of open source system FreenetIS
* and it is released under GPLv3 licence.
*
* More info about licence can be found:
* http://www.gnu.org/licenses/gpl-3.0.html
*
* More info about project can be found:
* http://www.freenetis.org/
*
*/
/**
* Allows user to manage his favourite pages
*
* @package Controller
*/
class Favourites_Controller extends Controller
{
/**
* Function adds, edits or removes users faouvrite page
*/
public function toggle()
{
// get page title and address
$title = @$_GET['title'];
$page = @$_GET['page'];
// stop if not set
if (!$title || !$page)
{
Controller::warning(PARAMETER);
}
// create model
$favourite = new Favourite_Model();
// create new form
$form = new Forge();
$form->set_attr('class', 'form nopopup');
$input = $form->input('name')
->value(substr(htmlspecialchars_decode($title), 0, 50))
->rules('required|length[1,50]');
$checkbox = $form->checkbox('default')
->label(__('Default page') . help::hint('default_page'));
// edit or delete
if ($favourite->is_users_favourite($this->user_id, $page))
{
$form->checkbox('remove')
->label('Remove from favourites');
$fav = $favourite->get_favourite_page($this->user_id, $page);
$input->value($fav->title);
$checkbox->checked($fav->default_page);
$form->submit('Edit favourites');
$title = __('Edit favourites');
}
else // add to favourites
{
$form->submit('Add to favourites');
$title = __('Add to favourites');
}
// validate form
if ($form->validate())
{
$form_data = $form->as_array();
$default = !empty($form_data['default']);
$title = $form_data['name'];
$remove = !empty($form_data['remove']);
// remove or edit
if ($favourite->is_users_favourite($this->user_id, $page))
{
if ($remove) // remove from favourites
{
if ($favourite->remove_page_from_favourites($this->user_id, $page))
{
status::success('Page has been removed from favourites.');
}
else
{
status::warning('Page has not been removed from favourites.');
}
}
else // edit favourites
{
if ($favourite->edit_favourites($this->user_id, $page, $title, $default))
{
status::success('Favourite page has been saved.');
}
else
{
status::warning('Favourite page has not been saved.');
}
}
}
else // add to favourites
{
if ($favourite->add_page_to_favourite($this->user_id, $page, $title, $default))
{
status::success('Page has been added to favourites.');
}
else
{
status::warning('Page has not been added to favourites.');
}
}
url::redirect($page);
}
// show form
$view = new View('main');
$view->title = $title;
$view->content = new View('form');
$view->content->headline = $title;
$view->content->form = $form;
$view->render(TRUE);
}
}
freenetis/branches/1.1/application/models/favourite.php
<?php defined('SYSPATH') or die('No direct script access.');
/*
* This file is part of open source system FreenetIS
* and it is release under GPLv3 licence.
*
* More info about licence can be found:
* http://www.gnu.org/licenses/gpl-3.0.html
*
* More info about project can be found:
* http://www.freenetis.org/
*
*/
/**
* Pivot table for connecting users and theirs contacts, also containts
* whitelisted column for defining whitelist of contact in notification.
*
* @package Model
*/
class Favourite_Model extends Model
{
/**
* Checks if user have given page in his favourites
*
* @param int $user_id
* @param string $page
* @return bool TRUE if page is favourite
*/
public function is_users_favourite($user_id, $page)
{
$result = $this->db->query("
SELECT page
FROM users_favourites
WHERE user_id = ? AND
page = ?
", $user_id, $page);
return ($result && $result->count() == 1);
}
/**
* Insert page to users favourites
*
* @param int $user_id User ID
* @param string $title Favourite page title
* @param string $page Page address
* @param int $default Is default page
* @return boolean TRUE if insert was successfull
*/
public function add_page_to_favourite($user_id, $page, $title, $default)
{
// remove default tag from other favourites
if ($default)
{
$this->remove_user_default_page($user_id);
}
$result = $this->db->query("
INSERT INTO users_favourites (user_id , title, page , default_page)
VALUES ( ? , ? , ? , ? )
", $user_id, $title, $page, $default);
return $result != NULL;
}
/**
* Removes page from users favourites
*
* @param int $user_id User ID
* @param string $page Page address
* @return ORM object
*/
public function remove_page_from_favourites($user_id, $page)
{
$result = $this->db->query("
DELETE FROM users_favourites
WHERE user_id = ? AND
page = ?
", $user_id, $page);
return $result;
}
/**
* Returns all favourites of given user
*
* @param int $user_id User ID
* @return ORM object
*/
public function get_users_favourites($user_id)
{
return $this->db->query("
SELECT * FROM users_favourites
WHERE user_id = ?
ORDER BY title ASC
", $user_id);
}
/**
* Updates user favourite page details
*
* @param int $user_id User ID
* @param string $page Page address
* @param string $title Favourite page title
* @param boolean $default Is default page
* @return boolean
*/
public function edit_favourites($user_id, $page, $title, $default)
{
// remove default tag from other favourites
if ($default)
{
$this->remove_user_default_page($user_id);
}
// update data
$result = $this->db->query("
UPDATE users_favourites
SET title=?,
default_page=?
WHERE user_id = ? AND
page = ?
", $title, $default, $user_id, $page);
return $result != NULL;
}
/**
* Removes default page tag from users favourites
*
* @param int $user_id User Id
* @return ORM object
*/
public function remove_user_default_page($user_id)
{
return $this->db->query("
UPDATE users_favourites
SET default_page=0
WHERE user_id = ?
", $user_id);
}
/**
* Get favourite page details
*
* @param int $user_id User Id
* @param string $page Page URL
* @return ORM object
*/
public function get_favourite_page($user_id, $page)
{
$result = $this->db->query("
SELECT *
FROM users_favourites
WHERE user_id = ? AND
page = ?
", $user_id, $page);
if ($result && $result->count() == 1)
{
return $result->current();
}
return null;
}
/**
* Get users default page
*
* @param int $user_id User Id
* @return ORM object
*/
public function get_user_default_page($user_id)
{
$result = $this->db->query("
SELECT *
FROM users_favourites
WHERE user_id = ? AND
default_page = 1
", $user_id);
if ($result && $result->count() == 1)
{
return $result->current();
}
return null;
}
}
freenetis/branches/1.1/db_upgrades/upgrade_1.1.0~alpha37.php
<?php defined('SYSPATH') or die('No direct script access.');
/*
* This file is part of open source system FreenetIS
* and it is released under GPLv3 licence.
*
* More info about licence can be found:
* http://www.gnu.org/licenses/gpl-3.0.html
*
* More info about project can be found:
* http://www.freenetis.org/
*
*/
/**
* This upgrade is not equal to any of previous upgrades
*
* @author David Raska <jeffraska@gmail.com>
*/
$upgrade_equal_to['1.1.0~alpha37'] = array();
/**
* Adds table for user favourites pages
*
* @author David Raska
*/
$upgrade_sql['1.1.0~alpha37'] = array
(
"CREATE TABLE `users_favourites` (
`user_id` INT(30) NOT NULL,
`title` VARCHAR(50) NOT NULL,
`page` VARCHAR(255) NOT NULL,
`default_page` TINYINT(1) DEFAULT NULL,
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB CHARSET = utf8 COLLATE = utf8_czech_ci;"
);

Také k dispozici: Unified diff