Source for file Abstract_Model.php
Documentation is available at Abstract_Model.php
* LAIKA FRAMEWORK Release Notes:
* @filesource Abstract_Model.php
* @date 2012-05-18 21:47:09 -0400 (Fri, 18 May 2012)
* @author Leonard M. Witzel <witzel@post.harvard.edu>
* @copyright Copyright (c) 2012 Laika Soft <{@link http://oafbot.com}>
* Abstract Laika_Abstract_Model class.
* @todo May be a good idea to make $table and $model static or class constants
* to avoid excessive object construction in static funcions...
//-------------------------------------------------------------------
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// SETTER & GETTER METHODS
//-------------------------------------------------------------------
* @param string $property
public function dset($property,$value){
$this->$property =
$value;
* @param string $property
public function dget($property){
$this->$property =
$result[$property];
return $result[$property];
//-------------------------------------------------------------------
//-------------------------------------------------------------------
public static function load($id){
foreach ($model as $property =>
$value)
if($property !=
'instance' &&
$property !=
'model' &&
$property !=
'table' &&
$property !=
'accessibles')
$m->$property =
$result[$property];
public static function find($param,$value){
return $m::load($result['id']);
* map_to_string function.
* @param mixed $ignore_id
$columns =
$this::get_map();
foreach($columns as $key =>
$value)
foreach($full_map as $array =>
$column)
foreach($column as $key =>
$value)
public static function add(){
public static function delete($object){
public static function create(){}
public static function drop(){}
public static function update(){
foreach($map as $key =>
$value)
if(isset
($object->$value))
$properties[$value] =
$object->$value;
public static function count(){
public static function last(){
/* Are there conditions? */
foreach($args[1] as $key =>
$value):
($count>
0) ?
$conditions .=
" AND $key = '$value'":
$conditions =
"WHERE $key = '$value'";
/* Is the LIMIT set and is it more than 1? */
if( isset
($args[0]) &&
$args[0]>
1 ):
foreach($result as $key =>
$value)
$array[] =
self::from_array($value);
return self::collection($result);
/* If the LIMIT is set to 1 or if no arguments were set*/
return self::from_array($result);
public static function first(){
if(isset
($args[0]) &&
$args[0] >
1)
return self::from_array($result);
public static function offset(){
* find_with_offset function.
$conditions =
$model::prep_conditions($params);
* find_with_offset_order_by function.
$conditions =
$model::prep_conditions($params);
* prep_conditions function.
foreach($params as $k =>
$v):
($c>
0) ?
$cond .=
" AND $k = '$v'" :
$cond =
"$k = '$v'";
($num >
1) ?
$count =
self::count(func_get_arg(1)) :
$count =
self::count();
$total =
ceil($count/
$limit);
if( !isset
($_SESSION['pagination']) )
$_SESSION['pagination'] =
1;
elseif( $_SESSION['pagination'] >
$total )
$_SESSION['pagination'] =
$total;
if($_SESSION['pagination']>
1)
$offset =
($_SESSION['pagination']-
1) *
$limit;
/* If only the LIMIT is specified */
$results =
self::offset($offset,$limit);
/* If the LIMIT and conditions are specified */
$results =
self::find_with_offset(func_get_arg(1),$offset,$limit);
/* If the LIMIT, conditions and ORDER BY are specified */
$results =
self::offset($offset);
return self::collection($results);
$count =
self::count($params);
return ceil($count/
$limit);
* render_pagination function.
$current =
$_SESSION['pagination'];
$style =
"pagination_ellipsis";
$count =
self::count($params);
$total =
ceil($count/
$limit);
($current+
1 <=
$total) ?
($inc =
$current+
1) :
( $inc =
$current);
($current-
1 <
1) ?
($dec =
$current) :
( $dec =
$current-
1);
self::link_to('<', "/$controller",
array("class"=>
"pagination nav", "style"=>
"font-family:'WebFont'"), array('p'=>
$dec));
self::pagination_link_helper($page=
$i+
1,$current,$controller);
self::pagination_link_helper($page=
$i+
1,$current,$controller);
self::link_to('…', "/$controller", array('class'=>
$style), array('p'=>
$current+
2));
for($i=
$total-
2;$i<
$total;++
$i)
self::pagination_link_helper($page=
$i+
1,$current,$controller);
elseif($current >
$total-
5):
self::pagination_link_helper($page=
$i+
1,$current,$controller);
self::link_to('…', "/$controller", array('class'=>
$style), array('p'=>
$current-
2));
for($i=
$total-
5;$i<
$total;++
$i)
self::pagination_link_helper($page=
$i+
1,$current,$controller);
self::pagination_link_helper($page=
$i+
1,$current,$controller);
if($current >
3 &&
$current+
1 <
$total-
1){
self::link_to('…', "/$controller", array('class'=>
$style), array('p'=>
$current-
2));
for($i=
$current-
2;$i<
$current+
1;++
$i)
self::pagination_link_helper($page=
$i+
1,$current,$controller);
self::link_to('…', "/$controller", array('class'=>
$style), array('p'=>
$current+
2));
for($i=
$total-
2;$i<
$total;++
$i)
self::pagination_link_helper($page=
$i+
1,$current,$controller);
self::link_to('>',"/$controller",
array("class"=>
"pagination nav", "style"=>
"font-family:'WebFont'"), array('p'=>
$inc));
* render_ajax_pagination function.
* @param mixed $controller
$current =
$_SESSION['pagination'];
$style =
"pagination_ellipsis";
$total =
self::total_pages($limit,$params);
($current+
1 <=
$total) ?
($inc =
$current+
1) :
( $inc =
$current);
($current-
1 <
1) ?
($dec =
$current) :
( $dec =
$current-
1);
self::link_to('<', "javascript",
array('class'=>
'pagination nav',
'style'=>
"font-family:'WebFont'",
'onclick'=>
"ajax_pagination($dec,'$controller');"));
self::ajax_pagination_link_helper($text=
$i+
1, $current, $page=
$i+
1, $controller);
self::ajax_pagination_link_helper($text=
$i+
1, $current, $page=
$i+
1, $controller);
self::ajax_pagination_link_helper('…', $current, $page=
$current+
2, $controller);
for($i=
$total-
2;$i<
$total;++
$i)
self::ajax_pagination_link_helper($text=
$i+
1, $current, $page=
$i+
1, $controller);
elseif($current >
$total-
5):
self::ajax_pagination_link_helper($text=
$i+
1, $current, $page=
$i+
1, $controller);
self::ajax_pagination_link_helper('…', $current, $page=
$current-
2, $controller);
for($i=
$total-
5;$i<
$total;++
$i)
self::ajax_pagination_link_helper($text=
$i+
1, $current, $page=
$i+
1, $controller);
self::ajax_pagination_link_helper($text=
$i+
1, $current, $page=
$i+
1, $controller);
if($current >
3 &&
$current+
1 <
$total-
1){
self::ajax_pagination_link_helper('…', $current, $page=
$current-
2, $controller);
for($i=
$current-
2;$i<
$current+
1;++
$i)
self::ajax_pagination_link_helper($text=
$i+
1, $current, $page=
$i+
1, $controller);
self::ajax_pagination_link_helper('…', $current, $page=
$current+
2, $controller);
for($i=
$total-
2;$i<
$total;++
$i)
self::ajax_pagination_link_helper($text=
$i+
1, $current, $page=
$i+
1, $controller);
self::link_to('>',"javascript",
array("class"=>
"pagination nav", "style"=>
"font-family:'WebFont'", 'onclick'=>
"ajax_pagination($inc,'$controller');"));
/** @todo Should this be in a helper utility class? */
($text !=
$page) ?
$css =
'pagination_ellipsis' :
$css =
'pagination';
($page ==
$current) ?
$css =
'pagination selected' :
$css =
'pagination';
$attributes =
array('class'=>
$css, 'onclick'=>
"ajax_pagination($page,'$controller');");
self::link_to($text, "javascript", $attributes);
/** @todo Should this be in a helper utility class? */
($page ==
$current) ?
$css =
'pagination selected' :
$css =
'pagination';
self::link_to($page, "/$controller", array('class'=>
$css), array('p'=>
$page));
* Outputs a HTML link inside a anchor tag.
* View Superclass Laika::link_to method for usage.
foreach($array as $key =>
$value)
$accessibles =
$object->accessibles;
foreach($accessibles as $key =>
$value)
$response[$value] =
$object->$value;
//public static function populate(){}
* @param mixed $conditions
public function exists($conditions){
if(self::count($conditions))
Documentation generated on Sat, 19 May 2012 02:16:53 -0400 by phpDocumentor 1.4.4