2005-02-03 17:42:20 +01:00
|
|
|
|
<?php
|
|
|
|
|
/**************************************************************************\
|
|
|
|
|
* eGroupWare - resources - Resource Management System *
|
|
|
|
|
* http://www.egroupware.org *
|
2005-03-02 09:50:39 +01:00
|
|
|
|
* Written by Cornelius Weiss <egw@von-und-zu-weiss.de> *
|
|
|
|
|
* and Lukas Weiss <wnz_gh05t@users.sourceforge.net> *
|
2005-02-03 17:42:20 +01:00
|
|
|
|
* ----------------------------------------------- *
|
|
|
|
|
* This program is free software; you can redistribute it and/or modify it *
|
|
|
|
|
* under the terms of the GNU General Public License as published by the *
|
|
|
|
|
* Free Software Foundation; either version 2 of the License, or (at your *
|
|
|
|
|
* option) any later version. *
|
|
|
|
|
\**************************************************************************/
|
|
|
|
|
|
2005-02-17 12:23:00 +01:00
|
|
|
|
/* $Id: */
|
|
|
|
|
|
2005-02-03 17:42:20 +01:00
|
|
|
|
class so_resources
|
|
|
|
|
{
|
|
|
|
|
function so_resources()
|
|
|
|
|
{
|
2005-06-10 22:40:57 +02:00
|
|
|
|
$this->db = clone($GLOBALS['egw']->db);
|
|
|
|
|
$this->db->set_app('resources');
|
2005-02-03 17:42:20 +01:00
|
|
|
|
$this->rs_table = 'egw_resources';
|
|
|
|
|
}
|
|
|
|
|
|
2005-06-10 22:40:57 +02:00
|
|
|
|
/**
|
|
|
|
|
* searches db for rows matching searchcriteria and categories
|
|
|
|
|
*
|
|
|
|
|
* Cornelius Wei<EFBFBD> <egw@von-und-zu-weiss.de>
|
|
|
|
|
* '*' is replaced with sql-wildcard '%'
|
|
|
|
|
* @param array $criteria array of key => value for search. (or'ed together)
|
|
|
|
|
* @param array $cats array of cat_id => cat_name to be searched
|
|
|
|
|
* @param &array $data reference of data array with cols to return in first row ( key => '')
|
|
|
|
|
* @param int $accessory_of find accessories of id, default -1 = show all exept accessories
|
|
|
|
|
* @param string $order_by fieldnames + {ASC|DESC} separated by colons ','
|
|
|
|
|
* @param int $offset row to start from, default 0
|
|
|
|
|
* @param int $num_rows number of rows to return (optional), default -1 = all, 0 will use $GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs']
|
|
|
|
|
*
|
|
|
|
|
* @return int number of matching rows
|
|
|
|
|
*/
|
2005-02-25 12:15:27 +01:00
|
|
|
|
function search($criteria,$cats,&$data,$accessory_of=-1,$order_by='',$offset=false,$num_rows=-1)
|
2005-02-03 17:42:20 +01:00
|
|
|
|
{
|
|
|
|
|
$select = implode(',',array_keys($data[0]));
|
|
|
|
|
foreach($criteria as $col => $value)
|
|
|
|
|
{
|
|
|
|
|
$where .= ($where ? " OR " : " ( " ). $col . ((strstr($value,'*') || strstr($value,'*')) ?
|
|
|
|
|
" LIKE '" . strtr(str_replace('_','\\_',addslashes($value)),'*?','%_') ."'":
|
|
|
|
|
"='" .$value."'");
|
|
|
|
|
}
|
|
|
|
|
$where .= " ) ";
|
|
|
|
|
foreach ((array)$cats as $cat_id => $cat_name)
|
|
|
|
|
{
|
2005-06-10 22:40:57 +02:00
|
|
|
|
$wherecats .= ($wherecats ? " OR " : " AND ( " ) .'cat_id' . "=".(int)$cat_id;
|
2005-02-03 17:42:20 +01:00
|
|
|
|
}
|
2005-02-12 18:32:38 +01:00
|
|
|
|
$wherecats .= $wherecats ? " ) " : "";
|
2005-02-25 12:15:27 +01:00
|
|
|
|
$whereacc = " AND (accessory_of ='".$accessory_of."')";
|
2005-02-03 17:42:20 +01:00
|
|
|
|
|
2005-02-25 12:15:27 +01:00
|
|
|
|
$this->db->query( 'SELECT '.$select." FROM ".$this->rs_table." WHERE ".$where.$wherecats.$whereacc.
|
2005-02-03 17:42:20 +01:00
|
|
|
|
($order_by != '' ? " ORDER BY $order_by" : ''),__LINE__,__FILE__);
|
|
|
|
|
|
|
|
|
|
$nr = $this->db->nf();
|
2005-05-07 14:28:45 +02:00
|
|
|
|
if($offset > 0 && $nr > $offset)
|
2005-02-03 17:42:20 +01:00
|
|
|
|
{
|
|
|
|
|
$this->db->seek($offset-1);
|
|
|
|
|
}
|
|
|
|
|
if($num_rows==0)
|
|
|
|
|
{
|
2005-06-10 22:40:57 +02:00
|
|
|
|
$num_rows = $GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'];
|
2005-02-03 17:42:20 +01:00
|
|
|
|
}
|
|
|
|
|
for ($n = 1; $this->db->next_record() && $n!=$num_rows+1; ++$n)
|
|
|
|
|
{
|
|
|
|
|
$data[$n] = $this->db->row();
|
|
|
|
|
}
|
2005-02-28 16:19:31 +01:00
|
|
|
|
unset($data[0]);
|
2005-02-03 17:42:20 +01:00
|
|
|
|
return $nr;
|
|
|
|
|
}
|
|
|
|
|
|
2005-06-10 22:40:57 +02:00
|
|
|
|
/**
|
|
|
|
|
* gets the value of $key from resource of $id
|
|
|
|
|
*
|
|
|
|
|
* Cornelius Wei<EFBFBD> <egw@von-und-zu-weiss.de>
|
|
|
|
|
* @param string $key key of value to get
|
|
|
|
|
* @param int $id resource id
|
|
|
|
|
* @return mixed value of key and resource, false if key or id not found.
|
|
|
|
|
*/
|
2005-02-03 17:42:20 +01:00
|
|
|
|
function get_value($key,$id)
|
|
|
|
|
{
|
2005-06-10 22:40:57 +02:00
|
|
|
|
if($this->db->select($this->rs_table,$key,array('id' => $id),__LINE__,__FILE__))
|
2005-02-03 17:42:20 +01:00
|
|
|
|
{
|
2005-06-10 22:40:57 +02:00
|
|
|
|
$value = $this->db->row(row);
|
2005-02-03 17:42:20 +01:00
|
|
|
|
return $value[$key];
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2005-02-17 16:27:43 +01:00
|
|
|
|
|
|
|
|
|
function delete($id)
|
2005-06-10 22:40:57 +02:00
|
|
|
|
{
|
|
|
|
|
$this->db->delete($this->rs_table,$id,__LINE__,__FILE__);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
2005-02-03 17:42:20 +01:00
|
|
|
|
|
2005-06-10 22:40:57 +02:00
|
|
|
|
/**
|
|
|
|
|
* reads a resource exept binary datas
|
|
|
|
|
*
|
|
|
|
|
* Cornelius Wei<EFBFBD> <egw@von-und-zu-weiss.de>
|
|
|
|
|
* @param int $id resource id
|
|
|
|
|
* @return array with key => value or false if not found
|
|
|
|
|
*/
|
2005-02-03 17:42:20 +01:00
|
|
|
|
function read($id)
|
|
|
|
|
{
|
2005-06-10 22:40:57 +02:00
|
|
|
|
if($this->db->select($this->rs_table,'*',array('id' => $id),__LINE__,__FILE__))
|
2005-02-03 17:42:20 +01:00
|
|
|
|
{
|
2005-06-10 22:40:57 +02:00
|
|
|
|
return $this->db->row(true);
|
2005-02-03 17:42:20 +01:00
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2005-02-12 16:49:38 +01:00
|
|
|
|
|
2005-06-10 22:40:57 +02:00
|
|
|
|
/**
|
|
|
|
|
* saves a resource including binary datas
|
|
|
|
|
*
|
|
|
|
|
* Cornelius Wei<EFBFBD> <egw@von-und-zu-weiss.de>
|
|
|
|
|
* @param array $resource key => value
|
|
|
|
|
* @return mixed id of resource if all right, false if fale
|
|
|
|
|
*/
|
2005-02-12 16:49:38 +01:00
|
|
|
|
function save($resource)
|
|
|
|
|
{
|
2005-06-10 22:40:57 +02:00
|
|
|
|
return $this->db->insert($this->rs_table,$resource,array('id' => $resource['id']),__LINE__,__FILE__) ? $this->db->get_last_insert_id($this->rs_table, 'id') : false;
|
2005-02-12 16:49:38 +01:00
|
|
|
|
}
|
|
|
|
|
|
2005-02-03 17:42:20 +01:00
|
|
|
|
}
|